@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,844 @@
1
+ import {
2
+ atomicWriteJson
3
+ } from "./chunk-A3YGID55.js";
4
+ import {
5
+ findProjectRoot
6
+ } from "./chunk-L6OM4A22.js";
7
+ import {
8
+ hasExplicitPoeticRoot,
9
+ resolvePoeticRepoStartDir,
10
+ resolveRepoRootOverride
11
+ } from "./chunk-L7JZLXQL.js";
12
+
13
+ // src/automation/flywheel-manifest.ts
14
+ import { AsyncLocalStorage } from "async_hooks";
15
+ import { existsSync } from "fs";
16
+ import * as fs from "fs/promises";
17
+ import * as os from "os";
18
+ import * as path from "path";
19
+ import { fileURLToPath } from "url";
20
+ import { execa, execaSync } from "execa";
21
+ import lockfile from "proper-lockfile";
22
+ var CURRENT_MANIFEST_SCHEMA_VERSION = 1;
23
+ var manifestLocks = /* @__PURE__ */ new Map();
24
+ var manifestLockOwners = /* @__PURE__ */ new Map();
25
+ var manifestLockContext = new AsyncLocalStorage();
26
+ var MANIFEST_LOCK_DISABLE_ENV = "POETIC_FLYWHEEL_MANIFEST_FILE_LOCK_DISABLE";
27
+ var __filename = fileURLToPath(import.meta.url);
28
+ var __dirname = path.dirname(__filename);
29
+ function isFileLockDisabled() {
30
+ const raw = process.env[MANIFEST_LOCK_DISABLE_ENV]?.trim().toLowerCase() ?? "";
31
+ return raw === "1" || raw === "true" || raw === "yes" || raw === "on";
32
+ }
33
+ function findPackageRoot(startDir) {
34
+ let current = startDir;
35
+ for (let i = 0; i < 12; i++) {
36
+ const pkgJsonPath = path.join(current, "package.json");
37
+ const templatesDir = path.join(current, "templates", ".poetic");
38
+ if (existsSync(pkgJsonPath) && existsSync(templatesDir)) {
39
+ return current;
40
+ }
41
+ const parent = path.dirname(current);
42
+ if (parent === current) break;
43
+ current = parent;
44
+ }
45
+ return path.resolve(startDir, "..");
46
+ }
47
+ var PACKAGE_ROOT = findPackageRoot(__dirname);
48
+ function getManifestLockFilePath(workflowId) {
49
+ return path.join(getArtifactDir(workflowId), "manifest.lock");
50
+ }
51
+ async function acquireManifestFileLock(workflowId) {
52
+ if (isFileLockDisabled()) {
53
+ return async () => {
54
+ };
55
+ }
56
+ const lockTarget = getManifestLockFilePath(workflowId);
57
+ await fs.mkdir(path.dirname(lockTarget), { recursive: true });
58
+ try {
59
+ const handle = await fs.open(lockTarget, "a");
60
+ await handle.close();
61
+ } catch {
62
+ }
63
+ return lockfile.lock(lockTarget, {
64
+ stale: 3e4,
65
+ realpath: false,
66
+ retries: { retries: 200, minTimeout: 25, maxTimeout: 250, factor: 1.5 }
67
+ });
68
+ }
69
+ function withManifestLock(workflowId, fn) {
70
+ const currentOwners = manifestLockContext.getStore();
71
+ const currentOwner = currentOwners?.get(workflowId);
72
+ if (currentOwner && manifestLockOwners.get(workflowId) === currentOwner) {
73
+ return fn();
74
+ }
75
+ const previous = (manifestLocks.get(workflowId) ?? Promise.resolve()).catch(() => {
76
+ });
77
+ let releaseLock;
78
+ const nextLock = new Promise((resolve2) => {
79
+ releaseLock = resolve2;
80
+ });
81
+ const lockTail = previous.then(() => nextLock);
82
+ manifestLocks.set(workflowId, lockTail);
83
+ return previous.then(async () => {
84
+ const owner = /* @__PURE__ */ Symbol(`manifest-lock:${workflowId}`);
85
+ const nextOwners = new Map(currentOwners ?? []);
86
+ nextOwners.set(workflowId, owner);
87
+ manifestLockOwners.set(workflowId, owner);
88
+ let releaseFileLock;
89
+ try {
90
+ releaseFileLock = await acquireManifestFileLock(workflowId);
91
+ return await manifestLockContext.run(nextOwners, fn);
92
+ } finally {
93
+ if (releaseFileLock) {
94
+ try {
95
+ await releaseFileLock();
96
+ } catch {
97
+ }
98
+ }
99
+ if (manifestLockOwners.get(workflowId) === owner) {
100
+ manifestLockOwners.delete(workflowId);
101
+ }
102
+ releaseLock?.();
103
+ if (manifestLocks.get(workflowId) === lockTail) {
104
+ manifestLocks.delete(workflowId);
105
+ }
106
+ }
107
+ });
108
+ }
109
+ var WORKTREE_RECORD_RECOVERY_REASON = {
110
+ PATH_ALREADY_ABSENT: "recovery_reconcile:worktree_path_already_absent",
111
+ PATH_INVALID_DURING_STATUS_PROBE: "recovery_reconcile:worktree_path_invalid_during_status_probe"
112
+ };
113
+ var WORKTREE_RECORD_CLEANUP_REASON = {
114
+ PATH_STILL_PRESENT_AFTER_SUCCESSFUL_CLEANUP: "cleanup_state:path_still_present_after_successful_cleanup"
115
+ };
116
+ function hasRecoverableCompletedSubStageProof(snapshot) {
117
+ if (snapshot.integrationStatus !== "cherry_picked") {
118
+ return true;
119
+ }
120
+ const hasCommit = (snapshot.integratedCommitShas ?? []).some((sha) => sha.trim().length > 0);
121
+ return hasCommit || snapshot.integrationProof === "no_commits";
122
+ }
123
+ var FLYWHEEL_MANIFEST_STATUSES = [
124
+ "pending",
125
+ "applied",
126
+ "staged",
127
+ "failed"
128
+ ];
129
+ var FLYWHEEL_STATUS_ALIASES = {
130
+ // `merged` is historical UX wording for an applied run.
131
+ merged: "applied"
132
+ };
133
+ var FLYWHEEL_STATUS_FILTER_INPUTS = [
134
+ ...FLYWHEEL_MANIFEST_STATUSES,
135
+ ...Object.keys(FLYWHEEL_STATUS_ALIASES)
136
+ ];
137
+ function normalizeFlywheelStatusFilter(input) {
138
+ if (FLYWHEEL_MANIFEST_STATUSES.includes(input)) {
139
+ return input;
140
+ }
141
+ return FLYWHEEL_STATUS_ALIASES[input] ?? null;
142
+ }
143
+ var WORKFLOW_HEARTBEAT_STALE_AFTER_MS = 12e4;
144
+ var MANIFEST_WORKTREE_RECONCILE_ENV = "POETIC_FLYWHEEL_MANIFEST_WORKTREE_RECONCILE";
145
+ function isManifestWorktreeReconcileEnabled() {
146
+ const raw = process.env[MANIFEST_WORKTREE_RECONCILE_ENV]?.trim().toLowerCase() ?? "";
147
+ if (raw === "0" || raw === "false" || raw === "off" || raw === "no") {
148
+ return false;
149
+ }
150
+ return true;
151
+ }
152
+ function deriveWorktreeOwnershipMetadata(workflowId, owner) {
153
+ const ownerId = owner.trim() || "unknown";
154
+ if (ownerId === "integration") {
155
+ return { workflowId, kind: "integration", ownerId };
156
+ }
157
+ if (ownerId === "verify-baseline" || ownerId === "baseline") {
158
+ return { workflowId, kind: "baseline", ownerId };
159
+ }
160
+ if (ownerId.startsWith("stage-") || ownerId.includes("/") || ownerId.includes("-")) {
161
+ return { workflowId, kind: "stage", ownerId };
162
+ }
163
+ return { workflowId, kind: "other", ownerId };
164
+ }
165
+ function ensureWorktreeOwnershipMetadata(workflowId, record) {
166
+ if (record.ownership) {
167
+ return false;
168
+ }
169
+ record.ownership = deriveWorktreeOwnershipMetadata(workflowId, record.owner);
170
+ return true;
171
+ }
172
+ function resolveWorktreeAbsolutePath(worktreePath) {
173
+ const trimmed = worktreePath.trim();
174
+ if (!trimmed) {
175
+ return "";
176
+ }
177
+ return path.isAbsolute(trimmed) ? trimmed : path.resolve(getProjectRoot(), trimmed);
178
+ }
179
+ async function isWorktreeDirectoryPresent(absPath) {
180
+ if (!absPath) {
181
+ return false;
182
+ }
183
+ try {
184
+ const st = await fs.stat(absPath);
185
+ return st.isDirectory();
186
+ } catch {
187
+ return false;
188
+ }
189
+ }
190
+ async function reconcileManifestWorktreesWithDisk(manifest) {
191
+ if (!isManifestWorktreeReconcileEnabled()) {
192
+ return false;
193
+ }
194
+ const records = manifest.worktreeRecords;
195
+ if (!records?.length) {
196
+ return false;
197
+ }
198
+ const now = (/* @__PURE__ */ new Date()).toISOString();
199
+ let changed = false;
200
+ for (const record of records) {
201
+ changed = ensureWorktreeOwnershipMetadata(manifest.workflowId, record) || changed;
202
+ const abs = resolveWorktreeAbsolutePath(record.worktreePath);
203
+ const present = await isWorktreeDirectoryPresent(abs);
204
+ const cleanedPathStillPresentIsExpected = record.status === "cleaned" && present && record.retentionReason === WORKTREE_RECORD_CLEANUP_REASON.PATH_STILL_PRESENT_AFTER_SUCCESSFUL_CLEANUP;
205
+ if (cleanedPathStillPresentIsExpected) {
206
+ continue;
207
+ }
208
+ if (record.status === "cleaned" && present) {
209
+ record.status = "cleanup_failed";
210
+ record.retentionReason = "manifest_reconcile:cleaned_status_but_worktree_path_still_exists";
211
+ record.updatedAt = now;
212
+ changed = true;
213
+ continue;
214
+ }
215
+ if ((record.status === "pending" || record.status === "retained") && !present) {
216
+ record.status = "cleanup_failed";
217
+ record.retentionReason = "manifest_reconcile:expected_worktree_path_missing";
218
+ record.updatedAt = now;
219
+ changed = true;
220
+ }
221
+ }
222
+ return changed;
223
+ }
224
+ function getConfiguredWorkflowHeartbeatStaleAfterMs(overrideMs) {
225
+ if (typeof overrideMs === "number" && Number.isFinite(overrideMs) && overrideMs > 0) {
226
+ return overrideMs;
227
+ }
228
+ const rawEnv = process.env.POETIC_FLYWHEEL_WORKFLOW_HEARTBEAT_STALE_AFTER_MS ?? "";
229
+ const parsedEnv = Number.parseInt(rawEnv, 10);
230
+ if (Number.isFinite(parsedEnv) && parsedEnv > 0) {
231
+ return parsedEnv;
232
+ }
233
+ return WORKFLOW_HEARTBEAT_STALE_AFTER_MS;
234
+ }
235
+ function getWorkflowLastActivityMs(manifest) {
236
+ const pendingRecords = (manifest.worktreeRecords ?? []).filter(
237
+ (record) => record.status === "pending"
238
+ );
239
+ const values = [
240
+ manifest.lastHeartbeatAt,
241
+ manifest.executedAt,
242
+ ...pendingRecords.map((record) => record.updatedAt)
243
+ ];
244
+ let lastActivityMs;
245
+ for (const raw of values) {
246
+ const parsed = Date.parse(raw ?? "");
247
+ if (!Number.isFinite(parsed)) {
248
+ continue;
249
+ }
250
+ if (lastActivityMs === void 0) {
251
+ lastActivityMs = parsed;
252
+ } else if (parsed > lastActivityMs) {
253
+ lastActivityMs = parsed;
254
+ }
255
+ }
256
+ return lastActivityMs;
257
+ }
258
+ function isWorkflowHeartbeatStale(options) {
259
+ const { manifest, now = Date.now(), runningHeartbeatStaleAfterMs } = options;
260
+ const lastActivityMs = getWorkflowLastActivityMs(manifest);
261
+ if (lastActivityMs === void 0) {
262
+ return void 0;
263
+ }
264
+ const thresholdMs = getConfiguredWorkflowHeartbeatStaleAfterMs(runningHeartbeatStaleAfterMs);
265
+ return now - lastActivityMs > thresholdMs;
266
+ }
267
+ function getManifestStatus(manifest) {
268
+ if (manifest.applyError) {
269
+ return "failed";
270
+ }
271
+ if (manifest.appliedAt) {
272
+ return "applied";
273
+ }
274
+ if (manifest.stagedAt) {
275
+ return "staged";
276
+ }
277
+ return "pending";
278
+ }
279
+ function getWorkflowExecutionStatus(options) {
280
+ const {
281
+ manifest,
282
+ workflowResult,
283
+ branchExists = false,
284
+ now = Date.now(),
285
+ runningHeartbeatStaleAfterMs,
286
+ syncWorktreePathPresent
287
+ } = options;
288
+ const manifestStatus = getManifestStatus(manifest);
289
+ const rawPendingRecords = (manifest.worktreeRecords ?? []).filter(
290
+ (record) => record.status === "pending"
291
+ );
292
+ const pendingPathDrift = typeof syncWorktreePathPresent === "function" ? rawPendingRecords.some(
293
+ (record) => !syncWorktreePathPresent(resolveWorktreeAbsolutePath(record.worktreePath))
294
+ ) : false;
295
+ const pendingRecords = typeof syncWorktreePathPresent === "function" ? rawPendingRecords.filter(
296
+ (record) => syncWorktreePathPresent(resolveWorktreeAbsolutePath(record.worktreePath))
297
+ ) : rawPendingRecords;
298
+ let heartbeatStale;
299
+ let isInRecoveryWindow = false;
300
+ if (manifestStatus === "pending" && pendingRecords.length > 0) {
301
+ heartbeatStale = isWorkflowHeartbeatStale({
302
+ manifest,
303
+ now,
304
+ runningHeartbeatStaleAfterMs
305
+ });
306
+ const activityStaleOrUnknown = heartbeatStale !== false;
307
+ isInRecoveryWindow = activityStaleOrUnknown;
308
+ }
309
+ if (workflowResult && typeof workflowResult === "object" && "success" in workflowResult && typeof workflowResult.success === "boolean") {
310
+ const success = workflowResult.success;
311
+ if (success && (isInRecoveryWindow || pendingPathDrift)) {
312
+ return "unknown";
313
+ }
314
+ return success ? "succeeded" : "failed";
315
+ }
316
+ if (manifestStatus !== "pending") {
317
+ return "unknown";
318
+ }
319
+ if (!branchExists) {
320
+ return "unknown";
321
+ }
322
+ if (pendingRecords.length === 0) {
323
+ return "unknown";
324
+ }
325
+ if (heartbeatStale === void 0) {
326
+ return "unknown";
327
+ }
328
+ return heartbeatStale ? "unknown" : "running";
329
+ }
330
+ function hasPendingWorktreePathAbsentOnDisk(manifest, existsSyncFn = existsSync) {
331
+ for (const record of manifest.worktreeRecords ?? []) {
332
+ if (record.status !== "pending") {
333
+ continue;
334
+ }
335
+ const abs = resolveWorktreeAbsolutePath(record.worktreePath);
336
+ if (!abs) {
337
+ continue;
338
+ }
339
+ if (!existsSyncFn(abs)) {
340
+ return true;
341
+ }
342
+ }
343
+ return false;
344
+ }
345
+ function getProjectRoot() {
346
+ if (hasExplicitPoeticRoot()) {
347
+ const override = resolveRepoRootOverride();
348
+ if (override) {
349
+ return override;
350
+ }
351
+ }
352
+ const cwd = resolvePoeticRepoStartDir(process.cwd());
353
+ const worktreeMarker = `${path.sep}.poetic${path.sep}tmp${path.sep}worktrees${path.sep}`;
354
+ const markerIndex = cwd.indexOf(worktreeMarker);
355
+ if (markerIndex > 0) return cwd.slice(0, markerIndex);
356
+ try {
357
+ const result = execaSync("git", ["rev-parse", "--path-format=absolute", "--show-toplevel"], {
358
+ cwd,
359
+ timeout: 1500,
360
+ stdio: "pipe"
361
+ });
362
+ const topLevel = result.stdout?.trim();
363
+ if (topLevel) {
364
+ return path.resolve(cwd, topLevel);
365
+ }
366
+ } catch {
367
+ }
368
+ const projectRoot = findProjectRoot(cwd);
369
+ if (projectRoot) {
370
+ return projectRoot;
371
+ }
372
+ try {
373
+ const result = execaSync("git", ["rev-parse", "--git-common-dir"], {
374
+ cwd,
375
+ timeout: 1500,
376
+ stdio: "pipe"
377
+ });
378
+ const commonDirRaw = result.stdout?.trim();
379
+ if (commonDirRaw) {
380
+ const commonDir = path.isAbsolute(commonDirRaw) ? commonDirRaw : path.resolve(cwd, commonDirRaw);
381
+ if (path.basename(commonDir) === ".git") {
382
+ return path.dirname(commonDir);
383
+ }
384
+ }
385
+ } catch {
386
+ }
387
+ return cwd;
388
+ }
389
+ var WORKFLOW_ID_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._:-]*$/;
390
+ function assertSafeWorkflowId(workflowId) {
391
+ if (typeof workflowId !== "string" || workflowId.length === 0 || workflowId.length > 256) {
392
+ throw new Error("Invalid workflow ID");
393
+ }
394
+ if (!WORKFLOW_ID_PATTERN.test(workflowId)) {
395
+ throw new Error("Invalid workflow ID");
396
+ }
397
+ }
398
+ function getArtifactDirForRoot(projectRoot, workflowId) {
399
+ assertSafeWorkflowId(workflowId);
400
+ const baseDir = path.resolve(projectRoot, ".poetic", "tmp", "flywheel");
401
+ const resolved = path.resolve(baseDir, workflowId);
402
+ const rel = path.relative(baseDir, resolved);
403
+ if (rel === "" || rel.startsWith("..") || path.isAbsolute(rel)) {
404
+ throw new Error("Invalid workflow ID");
405
+ }
406
+ return resolved;
407
+ }
408
+ function getArtifactDir(workflowId) {
409
+ return getArtifactDirForRoot(getProjectRoot(), workflowId);
410
+ }
411
+ function getManifestPath(workflowId) {
412
+ return path.join(getArtifactDir(workflowId), "manifest.json");
413
+ }
414
+ function getWorkflowYamlPath(workflowId) {
415
+ return path.join(getArtifactDir(workflowId), "workflow.yaml");
416
+ }
417
+ function getResultPath(workflowId) {
418
+ return path.join(getArtifactDir(workflowId), "result.json");
419
+ }
420
+ function getPartialResultPath(workflowId) {
421
+ return path.join(getArtifactDir(workflowId), "result.partial.json");
422
+ }
423
+ function getResultPathForRoot(projectRoot, workflowId) {
424
+ return path.join(getArtifactDirForRoot(projectRoot, workflowId), "result.json");
425
+ }
426
+ async function readManifestFromDisk(workflowId) {
427
+ const manifestPath = getManifestPath(workflowId);
428
+ try {
429
+ const content = await fs.readFile(manifestPath, "utf-8");
430
+ return normalizeManifestSchema(JSON.parse(content), workflowId);
431
+ } catch (error) {
432
+ if (error.code === "ENOENT") {
433
+ throw new Error(`Manifest not found for workflow: ${workflowId}`);
434
+ }
435
+ throw error;
436
+ }
437
+ }
438
+ function normalizeManifestSchema(manifest, workflowId = manifest.workflowId) {
439
+ const schemaVersion = manifest.schemaVersion;
440
+ if (schemaVersion === void 0) {
441
+ return {
442
+ ...manifest,
443
+ schemaVersion: CURRENT_MANIFEST_SCHEMA_VERSION
444
+ };
445
+ }
446
+ if (schemaVersion !== CURRENT_MANIFEST_SCHEMA_VERSION) {
447
+ throw new Error(
448
+ `Unsupported manifest schema version ${String(schemaVersion)} for workflow ${workflowId}; supported version: ${CURRENT_MANIFEST_SCHEMA_VERSION}`
449
+ );
450
+ }
451
+ return manifest;
452
+ }
453
+ function getTriagePath(workflowId) {
454
+ return path.join(getArtifactDir(workflowId), "triage.json");
455
+ }
456
+ async function getPoeticVersion() {
457
+ try {
458
+ const packagePath = path.join(PACKAGE_ROOT, "package.json");
459
+ const packageJson = JSON.parse(await fs.readFile(packagePath, "utf-8"));
460
+ return packageJson.version || "unknown";
461
+ } catch {
462
+ return "unknown";
463
+ }
464
+ }
465
+ async function getPoeticCommit() {
466
+ try {
467
+ const { stdout } = await execa("git", ["rev-parse", "HEAD"], {
468
+ cwd: PACKAGE_ROOT,
469
+ timeout: 5e3
470
+ });
471
+ return stdout.trim();
472
+ } catch {
473
+ return "unknown";
474
+ }
475
+ }
476
+ async function getGitUsername() {
477
+ try {
478
+ const { stdout } = await execa("git", ["config", "user.name"], {
479
+ timeout: 5e3
480
+ });
481
+ const name = stdout.trim();
482
+ if (name) {
483
+ return name;
484
+ }
485
+ } catch {
486
+ }
487
+ try {
488
+ return os.userInfo().username || "unknown";
489
+ } catch {
490
+ return "unknown";
491
+ }
492
+ }
493
+ async function createManifest(options) {
494
+ const [poeticVersion, poeticCommit, executedBy] = await Promise.all([
495
+ getPoeticVersion(),
496
+ getPoeticCommit(),
497
+ getGitUsername()
498
+ ]);
499
+ const executedAt = (/* @__PURE__ */ new Date()).toISOString();
500
+ let generatedYamlPath = options.generatedYamlPath;
501
+ if (generatedYamlPath) {
502
+ const projectRoot = getProjectRoot();
503
+ generatedYamlPath = path.isAbsolute(generatedYamlPath) ? path.relative(projectRoot, generatedYamlPath) : generatedYamlPath;
504
+ generatedYamlPath = generatedYamlPath.replaceAll("\\", "/");
505
+ }
506
+ return {
507
+ schemaVersion: CURRENT_MANIFEST_SCHEMA_VERSION,
508
+ workflowId: options.workflowId,
509
+ sourceType: options.sourceType,
510
+ sprintId: options.sprintId,
511
+ integrationBranch: options.integrationBranch,
512
+ baseSha: options.baseSha,
513
+ generatedYamlPath,
514
+ stageIds: options.stageIds?.map((id) => id.trim()).filter(Boolean),
515
+ executedAt,
516
+ lastHeartbeatAt: executedAt,
517
+ executedBy,
518
+ executedFrom: process.cwd(),
519
+ originalCommand: options.originalCommand || process.argv.slice(2),
520
+ planArtifactPath: options.planArtifactPath,
521
+ verificationPolicy: options.verificationPolicy ?? "findings",
522
+ poeticVersion,
523
+ poeticCommit
524
+ };
525
+ }
526
+ async function saveManifest(manifest) {
527
+ const manifestPath = getManifestPath(manifest.workflowId);
528
+ const artifactDir = path.dirname(manifestPath);
529
+ await fs.mkdir(artifactDir, { recursive: true });
530
+ await atomicWriteJson(manifestPath, normalizeManifestSchema(manifest));
531
+ }
532
+ async function loadManifest(workflowId) {
533
+ return readManifestFromDisk(workflowId);
534
+ }
535
+ async function updateManifest(workflowId, updater) {
536
+ return withManifestLock(workflowId, async () => {
537
+ const manifest = await readManifestFromDisk(workflowId);
538
+ await updater(manifest);
539
+ if (manifest.workflowId !== workflowId) {
540
+ throw new Error(
541
+ `Manifest workflow ID cannot change during locked update: expected ${workflowId}, received ${manifest.workflowId}`
542
+ );
543
+ }
544
+ await saveManifest(manifest);
545
+ return manifest;
546
+ });
547
+ }
548
+ async function reconcileAndSaveManifest(workflowId) {
549
+ return withManifestLock(workflowId, async () => {
550
+ const manifest = await readManifestFromDisk(workflowId);
551
+ const changed = await reconcileManifestWorktreesWithDisk(manifest);
552
+ if (changed) {
553
+ await saveManifest(manifest);
554
+ }
555
+ return manifest;
556
+ });
557
+ }
558
+ async function updateManifestApplyStatus(workflowId, status) {
559
+ return withManifestLock(workflowId, async () => {
560
+ const manifest = await loadManifest(workflowId);
561
+ if (status.appliedAt) {
562
+ manifest.appliedAt = status.appliedAt;
563
+ delete manifest.applyError;
564
+ }
565
+ if (status.appliedBy) {
566
+ manifest.appliedBy = status.appliedBy;
567
+ }
568
+ if (status.stagedAt) {
569
+ manifest.stagedAt = status.stagedAt;
570
+ }
571
+ if (status.verifiedTreeFingerprint !== void 0) {
572
+ manifest.verifiedTreeFingerprint = status.verifiedTreeFingerprint;
573
+ }
574
+ if (status.appliedCommitSha !== void 0) {
575
+ manifest.appliedCommitSha = status.appliedCommitSha;
576
+ }
577
+ if (status.postApplyError) {
578
+ manifest.postApplyError = status.postApplyError;
579
+ }
580
+ if (status.prUrl !== void 0) {
581
+ manifest.prUrl = status.prUrl;
582
+ }
583
+ if (status.prNumber !== void 0) {
584
+ manifest.prNumber = status.prNumber;
585
+ }
586
+ if (status.prHeadSha !== void 0) {
587
+ manifest.prHeadSha = status.prHeadSha;
588
+ }
589
+ if (status.sourceBranch !== void 0) {
590
+ manifest.sourceBranch = status.sourceBranch;
591
+ }
592
+ if (status.sourceBranchRole !== void 0) {
593
+ manifest.sourceBranchRole = status.sourceBranchRole;
594
+ }
595
+ if (status.applyTargetBranch !== void 0) {
596
+ manifest.applyTargetBranch = status.applyTargetBranch;
597
+ }
598
+ if (status.applyTargetBranchRole !== void 0) {
599
+ manifest.applyTargetBranchRole = status.applyTargetBranchRole;
600
+ }
601
+ if (status.branchRoleAction !== void 0) {
602
+ manifest.branchRoleAction = status.branchRoleAction;
603
+ }
604
+ if (status.branchRoleOverride !== void 0) {
605
+ manifest.branchRoleOverride = status.branchRoleOverride;
606
+ }
607
+ if (status.branchRoleRefused !== void 0) {
608
+ manifest.branchRoleRefused = status.branchRoleRefused;
609
+ }
610
+ if (status.applyError) {
611
+ manifest.applyError = status.applyError;
612
+ delete manifest.appliedAt;
613
+ delete manifest.appliedBy;
614
+ delete manifest.appliedCommitSha;
615
+ } else if (status.applyError === null) {
616
+ delete manifest.applyError;
617
+ }
618
+ await saveManifest(manifest);
619
+ });
620
+ }
621
+ async function updateManifestHeartbeat(workflowId, heartbeatAt = (/* @__PURE__ */ new Date()).toISOString()) {
622
+ return withManifestLock(workflowId, async () => {
623
+ const manifest = await loadManifest(workflowId);
624
+ manifest.lastHeartbeatAt = heartbeatAt;
625
+ await saveManifest(manifest);
626
+ });
627
+ }
628
+ function getManifestStageProgress(manifest, stageId) {
629
+ return manifest.stageProgress?.[stageId];
630
+ }
631
+ async function recordManifestCompletedSubStage(workflowId, stageId, snapshot) {
632
+ return withManifestLock(workflowId, async () => {
633
+ const manifest = await loadManifest(workflowId);
634
+ const now = (/* @__PURE__ */ new Date()).toISOString();
635
+ const existingStageProgress = manifest.stageProgress?.[stageId];
636
+ const completedSubStages = [...existingStageProgress?.completedSubStages ?? []];
637
+ const existingIndex = completedSubStages.findIndex((entry) => entry.id === snapshot.id);
638
+ const existingSnapshot = existingIndex >= 0 ? completedSubStages[existingIndex] : void 0;
639
+ const nextSnapshot = {
640
+ ...snapshot,
641
+ commitBranch: snapshot.commitBranch ?? existingSnapshot?.commitBranch,
642
+ integrationProof: snapshot.integrationProof ?? existingSnapshot?.integrationProof,
643
+ updatedAt: now
644
+ };
645
+ if (existingIndex >= 0) {
646
+ completedSubStages[existingIndex] = nextSnapshot;
647
+ } else {
648
+ completedSubStages.push(nextSnapshot);
649
+ }
650
+ manifest.stageProgress = {
651
+ ...manifest.stageProgress ?? {},
652
+ [stageId]: {
653
+ ...existingStageProgress,
654
+ completedSubStages,
655
+ updatedAt: now
656
+ }
657
+ };
658
+ await saveManifest(manifest);
659
+ });
660
+ }
661
+ async function recordManifestCompletedStage(workflowId, stageResult) {
662
+ return withManifestLock(workflowId, async () => {
663
+ const manifest = await loadManifest(workflowId);
664
+ const now = (/* @__PURE__ */ new Date()).toISOString();
665
+ const existingStageProgress = manifest.stageProgress?.[stageResult.stageId];
666
+ manifest.stageProgress = {
667
+ ...manifest.stageProgress ?? {},
668
+ [stageResult.stageId]: {
669
+ completedSubStages: existingStageProgress?.completedSubStages ?? [],
670
+ stageResult,
671
+ updatedAt: now
672
+ }
673
+ };
674
+ await saveManifest(manifest);
675
+ });
676
+ }
677
+ async function appendManifestRelatedTaskIds(workflowId, taskIds) {
678
+ const filtered = (taskIds ?? []).map((t) => t.trim()).filter(Boolean);
679
+ if (filtered.length === 0) return;
680
+ return withManifestLock(workflowId, async () => {
681
+ const manifest = await loadManifest(workflowId);
682
+ const existing = new Set(manifest.relatedTaskIds ?? []);
683
+ for (const id of filtered) existing.add(id);
684
+ manifest.relatedTaskIds = Array.from(existing);
685
+ await saveManifest(manifest);
686
+ });
687
+ }
688
+ async function listManifests() {
689
+ const flywheelDir = path.join(getProjectRoot(), ".poetic", "tmp", "flywheel");
690
+ try {
691
+ const entries = await fs.readdir(flywheelDir, { withFileTypes: true });
692
+ const manifests = [];
693
+ for (const entry of entries) {
694
+ if (entry.isDirectory()) {
695
+ const workflowId = entry.name;
696
+ try {
697
+ const manifest = await loadManifest(workflowId);
698
+ manifests.push(manifest);
699
+ } catch {
700
+ }
701
+ }
702
+ }
703
+ manifests.sort((a, b) => {
704
+ return new Date(b.executedAt).getTime() - new Date(a.executedAt).getTime();
705
+ });
706
+ return manifests;
707
+ } catch (error) {
708
+ if (error.code === "ENOENT") {
709
+ return [];
710
+ }
711
+ throw error;
712
+ }
713
+ }
714
+ async function registerWorktreeRecord(workflowId, record) {
715
+ return withManifestLock(workflowId, async () => {
716
+ const manifest = await loadManifest(workflowId);
717
+ const records = manifest.worktreeRecords ?? [];
718
+ const existingIdx = records.findIndex((r) => r.worktreePath === record.worktreePath);
719
+ const now = (/* @__PURE__ */ new Date()).toISOString();
720
+ const prev = existingIdx >= 0 ? records[existingIdx] : void 0;
721
+ if (prev) {
722
+ records[existingIdx] = {
723
+ ...record,
724
+ ownership: record.ownership ?? prev.ownership ?? deriveWorktreeOwnershipMetadata(workflowId, record.owner),
725
+ status: "pending",
726
+ createdAt: prev.createdAt,
727
+ updatedAt: now
728
+ };
729
+ } else {
730
+ records.push({
731
+ ...record,
732
+ ownership: record.ownership ?? deriveWorktreeOwnershipMetadata(workflowId, record.owner),
733
+ status: "pending",
734
+ createdAt: now,
735
+ updatedAt: now
736
+ });
737
+ }
738
+ manifest.worktreeRecords = records;
739
+ await saveManifest(manifest);
740
+ });
741
+ }
742
+ async function updateWorktreeRecordStatus(workflowId, worktreePath, status, retentionReason) {
743
+ return withManifestLock(workflowId, async () => {
744
+ const manifest = await loadManifest(workflowId);
745
+ const records = manifest.worktreeRecords ?? [];
746
+ const record = records.find((r) => r.worktreePath === worktreePath);
747
+ if (record) {
748
+ ensureWorktreeOwnershipMetadata(manifest.workflowId, record);
749
+ record.status = status;
750
+ record.updatedAt = (/* @__PURE__ */ new Date()).toISOString();
751
+ if (retentionReason !== void 0) {
752
+ if (retentionReason === null) {
753
+ delete record.retentionReason;
754
+ } else {
755
+ record.retentionReason = retentionReason;
756
+ }
757
+ }
758
+ manifest.worktreeRecords = records;
759
+ await saveManifest(manifest);
760
+ }
761
+ });
762
+ }
763
+ function getTrackedCleanupTargets(manifest) {
764
+ const trackedBranches = Array.from(
765
+ new Set((manifest.worktreeRecords ?? []).map((record) => record.branch.trim()).filter(Boolean))
766
+ );
767
+ const trackedWorktrees = Array.from(
768
+ new Set(
769
+ (manifest.worktreeRecords ?? []).map((record) => record.worktreePath.trim()).filter(Boolean)
770
+ )
771
+ );
772
+ return { trackedBranches, trackedWorktrees };
773
+ }
774
+ function getWorktreeRecordsByStatus(manifest, status) {
775
+ return (manifest.worktreeRecords ?? []).filter((r) => r.status === status);
776
+ }
777
+ async function saveTriage(triage) {
778
+ const triagePath = getTriagePath(triage.workflowId);
779
+ const artifactDir = path.dirname(triagePath);
780
+ await fs.mkdir(artifactDir, { recursive: true });
781
+ await atomicWriteJson(triagePath, triage);
782
+ }
783
+ async function loadTriage(workflowId) {
784
+ const triagePath = getTriagePath(workflowId);
785
+ try {
786
+ const content = await fs.readFile(triagePath, "utf-8");
787
+ return JSON.parse(content);
788
+ } catch (error) {
789
+ if (error.code === "ENOENT") {
790
+ return null;
791
+ }
792
+ throw error;
793
+ }
794
+ }
795
+
796
+ export {
797
+ withManifestLock,
798
+ WORKTREE_RECORD_RECOVERY_REASON,
799
+ WORKTREE_RECORD_CLEANUP_REASON,
800
+ hasRecoverableCompletedSubStageProof,
801
+ FLYWHEEL_MANIFEST_STATUSES,
802
+ FLYWHEEL_STATUS_ALIASES,
803
+ FLYWHEEL_STATUS_FILTER_INPUTS,
804
+ normalizeFlywheelStatusFilter,
805
+ WORKFLOW_HEARTBEAT_STALE_AFTER_MS,
806
+ MANIFEST_WORKTREE_RECONCILE_ENV,
807
+ isManifestWorktreeReconcileEnabled,
808
+ deriveWorktreeOwnershipMetadata,
809
+ reconcileManifestWorktreesWithDisk,
810
+ getConfiguredWorkflowHeartbeatStaleAfterMs,
811
+ getWorkflowLastActivityMs,
812
+ isWorkflowHeartbeatStale,
813
+ getManifestStatus,
814
+ getWorkflowExecutionStatus,
815
+ hasPendingWorktreePathAbsentOnDisk,
816
+ getProjectRoot,
817
+ getArtifactDirForRoot,
818
+ getArtifactDir,
819
+ getManifestPath,
820
+ getWorkflowYamlPath,
821
+ getResultPath,
822
+ getPartialResultPath,
823
+ getResultPathForRoot,
824
+ getTriagePath,
825
+ createManifest,
826
+ saveManifest,
827
+ loadManifest,
828
+ updateManifest,
829
+ reconcileAndSaveManifest,
830
+ updateManifestApplyStatus,
831
+ updateManifestHeartbeat,
832
+ getManifestStageProgress,
833
+ recordManifestCompletedSubStage,
834
+ recordManifestCompletedStage,
835
+ appendManifestRelatedTaskIds,
836
+ listManifests,
837
+ registerWorktreeRecord,
838
+ updateWorktreeRecordStatus,
839
+ getTrackedCleanupTargets,
840
+ getWorktreeRecordsByStatus,
841
+ saveTriage,
842
+ loadTriage
843
+ };
844
+ //# sourceMappingURL=chunk-CQM3A35X.js.map