@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,221 @@
1
+ // src/cli/commands/package.ts
2
+ import fs from "fs/promises";
3
+ import os from "os";
4
+ import path from "path";
5
+ import { fileURLToPath } from "url";
6
+ import { Command } from "commander";
7
+ var REQUIRED_RUNTIME_PATHS = [
8
+ "dist",
9
+ "templates",
10
+ "package.json",
11
+ "package-lock.json",
12
+ "schemas",
13
+ ".poetic/providers",
14
+ ".poetic/providers/catalog.json",
15
+ "scripts/preinstall-node-check.mjs",
16
+ "scripts/assert-node-runtime.mjs",
17
+ "scripts/preflight-native.mjs",
18
+ "scripts/write-node-launcher.sh",
19
+ "scripts/setup-git-hooks.mjs",
20
+ "scripts/sync.sh",
21
+ "src/resources",
22
+ ".nvmrc"
23
+ ];
24
+ var OPTIONAL_RUNTIME_PATHS = [
25
+ "README.md",
26
+ "INSTALL.md",
27
+ "LICENSE",
28
+ "CHANGELOG.md",
29
+ "CONTRIBUTING.md",
30
+ "CODE_OF_CONDUCT.md",
31
+ // Optional BB visual experience package used by `poetic provider setup --bb`.
32
+ "integrations/bb-plugin-poetic"
33
+ ];
34
+ async function pathExists(targetPath) {
35
+ try {
36
+ await fs.access(targetPath);
37
+ return true;
38
+ } catch {
39
+ return false;
40
+ }
41
+ }
42
+ function isSameOrAncestorPath(candidateAncestor, targetPath) {
43
+ const relative = path.relative(candidateAncestor, targetPath);
44
+ return relative === "" || !relative.startsWith("..") && !path.isAbsolute(relative);
45
+ }
46
+ function isBroadOutputPath(outputRoot) {
47
+ const parsed = path.parse(outputRoot);
48
+ if (outputRoot === parsed.root) return true;
49
+ const home = os.homedir();
50
+ return Boolean(home) && outputRoot === path.resolve(home);
51
+ }
52
+ async function isExistingLocalDistPackage(outputRoot) {
53
+ const manifest = await readJsonFile(
54
+ path.join(outputRoot, "poetic-package.json")
55
+ );
56
+ const isPoeticBundle = manifest?.name === "@poetic-ai/poetic" || manifest?.name === "@poetic/cli";
57
+ return isPoeticBundle && manifest?.env?.POETIC_PACKAGE_ROOT === outputRoot;
58
+ }
59
+ async function validateOutputRootForWrite(input) {
60
+ const { outputRoot, sourceRoot, force } = input;
61
+ if (isBroadOutputPath(outputRoot)) {
62
+ throw new Error(`Refusing to use broad package output path: ${outputRoot}`);
63
+ }
64
+ if (isSameOrAncestorPath(outputRoot, sourceRoot)) {
65
+ throw new Error(
66
+ `Refusing to use package output path that is the Poetic source root or one of its ancestors: ${outputRoot}`
67
+ );
68
+ }
69
+ if (force && await pathExists(outputRoot) && !await isExistingLocalDistPackage(outputRoot)) {
70
+ throw new Error(
71
+ `Refusing to replace non-Poetic local-dist directory: ${outputRoot}. Choose an empty/new output path or remove it manually after inspection.`
72
+ );
73
+ }
74
+ }
75
+ async function readJsonFile(targetPath) {
76
+ try {
77
+ return JSON.parse(await fs.readFile(targetPath, "utf8"));
78
+ } catch {
79
+ return null;
80
+ }
81
+ }
82
+ async function findPackageRoot(startFile) {
83
+ let current = path.dirname(startFile);
84
+ while (true) {
85
+ const packageJsonPath = path.join(current, "package.json");
86
+ const packageJson = await readJsonFile(packageJsonPath);
87
+ if (packageJson?.name === "@poetic-ai/poetic") {
88
+ return current;
89
+ }
90
+ const parent = path.dirname(current);
91
+ if (parent === current) {
92
+ throw new Error("Unable to resolve Poetic package root");
93
+ }
94
+ current = parent;
95
+ }
96
+ }
97
+ async function copyRequiredPath(sourceRoot, outputRoot, relativePath) {
98
+ const source = path.join(sourceRoot, relativePath);
99
+ const destination = path.join(outputRoot, relativePath);
100
+ if (!await pathExists(source)) {
101
+ throw new Error(`Required runtime path is missing: ${relativePath}`);
102
+ }
103
+ await fs.mkdir(path.dirname(destination), { recursive: true });
104
+ await fs.cp(source, destination, {
105
+ recursive: true,
106
+ force: true,
107
+ errorOnExist: false,
108
+ preserveTimestamps: true,
109
+ verbatimSymlinks: true
110
+ });
111
+ }
112
+ async function copyOptionalPath(sourceRoot, outputRoot, relativePath) {
113
+ const source = path.join(sourceRoot, relativePath);
114
+ if (!await pathExists(source)) return;
115
+ await copyRequiredPath(sourceRoot, outputRoot, relativePath);
116
+ }
117
+ function formatTextReport(manifest) {
118
+ const dependencyLine = manifest.dependencyMode.type === "copied-node-modules" ? `Dependencies: copied to ${manifest.dependencyMode.path}` : `Dependencies: install with \`${manifest.dependencyMode.command}\``;
119
+ return [
120
+ `Package root: ${manifest.packageRoot}`,
121
+ `Entry: ${manifest.entry}`,
122
+ `Set: POETIC_PACKAGE_ROOT=${manifest.packageRoot}`,
123
+ dependencyLine,
124
+ `Manifest: ${path.join(manifest.packageRoot, "poetic-package.json")}`
125
+ ].join("\n");
126
+ }
127
+ async function createLocalDistPackage(options, deps = {}) {
128
+ const outputRoot = path.resolve(options.output);
129
+ const moduleUrl = deps.moduleUrl ?? import.meta.url;
130
+ const sourceRoot = await findPackageRoot(fileURLToPath(moduleUrl));
131
+ await validateOutputRootForWrite({
132
+ outputRoot,
133
+ sourceRoot,
134
+ force: options.force
135
+ });
136
+ if (await pathExists(outputRoot) && !options.force) {
137
+ throw new Error(`Output already exists: ${outputRoot}. Re-run with --force to replace it.`);
138
+ }
139
+ if (options.force) {
140
+ await fs.rm(outputRoot, { recursive: true, force: true });
141
+ }
142
+ await fs.mkdir(outputRoot, { recursive: true });
143
+ for (const relativePath of REQUIRED_RUNTIME_PATHS) {
144
+ await copyRequiredPath(sourceRoot, outputRoot, relativePath);
145
+ }
146
+ for (const relativePath of OPTIONAL_RUNTIME_PATHS) {
147
+ await copyOptionalPath(sourceRoot, outputRoot, relativePath);
148
+ }
149
+ const packageJson = await readJsonFile(path.join(sourceRoot, "package.json")) ?? {};
150
+ const buildMeta = await readJsonFile(
151
+ path.join(sourceRoot, "dist/.poetic-build-meta.json")
152
+ );
153
+ const shouldCopyNodeModules = options.copyNodeModules !== false;
154
+ const sourceNodeModules = path.join(sourceRoot, "node_modules");
155
+ const outputNodeModules = path.join(outputRoot, "node_modules");
156
+ let dependencyMode;
157
+ if (shouldCopyNodeModules && await pathExists(sourceNodeModules)) {
158
+ await fs.cp(sourceNodeModules, outputNodeModules, {
159
+ recursive: true,
160
+ force: true,
161
+ errorOnExist: false,
162
+ preserveTimestamps: true,
163
+ verbatimSymlinks: true
164
+ });
165
+ dependencyMode = { type: "copied-node-modules", path: outputNodeModules };
166
+ } else {
167
+ dependencyMode = {
168
+ type: "install-required",
169
+ command: "npm install --omit=dev"
170
+ };
171
+ }
172
+ const manifest = {
173
+ name: packageJson.name ?? "@poetic-ai/poetic",
174
+ version: packageJson.version ?? "unknown",
175
+ packageRoot: outputRoot,
176
+ entry: path.join(outputRoot, "dist/entry.js"),
177
+ createdAt: (deps.now ?? (() => /* @__PURE__ */ new Date()))().toISOString(),
178
+ sourcePackageRoot: sourceRoot,
179
+ sourceGitHead: buildMeta?.gitHead ?? null,
180
+ dependencyMode,
181
+ env: {
182
+ POETIC_PACKAGE_ROOT: outputRoot
183
+ }
184
+ };
185
+ await fs.writeFile(
186
+ path.join(outputRoot, "poetic-package.json"),
187
+ `${JSON.stringify(manifest, null, 2)}
188
+ `,
189
+ "utf8"
190
+ );
191
+ await fs.writeFile(
192
+ path.join(outputRoot, "POETIC_PACKAGE_ROOT.env"),
193
+ `POETIC_PACKAGE_ROOT=${outputRoot}
194
+ `,
195
+ "utf8"
196
+ );
197
+ return manifest;
198
+ }
199
+ function createPackageCommand() {
200
+ const command = new Command("package").description("Create local Poetic runtime packages");
201
+ command.command("local-dist").description("Create a frozen runnable local dist bundle for dogfood and release checks").requiredOption("--output <dir>", "Output directory for the local dist bundle").option("--force", "Replace output directory if it already exists").option("--json", "Print package metadata as JSON").option(
202
+ "--no-copy-node-modules",
203
+ "Do not copy node_modules; write install instructions instead"
204
+ ).action(async (options) => {
205
+ const manifest = await createLocalDistPackage(options);
206
+ if (options.json) {
207
+ process.stdout.write(`${JSON.stringify(manifest, null, 2)}
208
+ `);
209
+ } else {
210
+ process.stdout.write(`${formatTextReport(manifest)}
211
+ `);
212
+ }
213
+ });
214
+ return command;
215
+ }
216
+
217
+ export {
218
+ createLocalDistPackage,
219
+ createPackageCommand
220
+ };
221
+ //# sourceMappingURL=chunk-MF5HP6XV.js.map
@@ -0,0 +1,112 @@
1
+ import {
2
+ buildProjectVerificationGuidance
3
+ } from "./chunk-MCPQNJMK.js";
4
+ import {
5
+ detectProjectCapabilities,
6
+ hasProjectLanguage
7
+ } from "./chunk-GNH3QGTL.js";
8
+
9
+ // src/core/project/execution-scope.ts
10
+ import { existsSync, readFileSync, realpathSync } from "fs";
11
+ import path from "path";
12
+ var POETIC_PACKAGE_NAME = "@poetic-ai/poetic";
13
+ var POETIC_SELF_VERIFICATION_COMMANDS = [
14
+ { kind: "format", command: "npm run format:check", scope: "full" },
15
+ { kind: "lint", command: "npm run lint", scope: "touched" },
16
+ { kind: "typecheck", command: "npm run typecheck", scope: "full" },
17
+ { kind: "test", command: "npm run test:smoke", scope: "targeted" },
18
+ { kind: "build", command: "npm run build", scope: "full" }
19
+ ];
20
+ function normalizeRoot(root) {
21
+ const resolved = path.resolve(root);
22
+ try {
23
+ return realpathSync(resolved);
24
+ } catch {
25
+ return resolved;
26
+ }
27
+ }
28
+ function readPackageName(root) {
29
+ const packageJsonPath = path.join(root, "package.json");
30
+ if (!existsSync(packageJsonPath)) return null;
31
+ try {
32
+ const parsed = JSON.parse(readFileSync(packageJsonPath, "utf8"));
33
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) return null;
34
+ const name = parsed.name;
35
+ return typeof name === "string" ? name : null;
36
+ } catch {
37
+ return null;
38
+ }
39
+ }
40
+ function isNodeLikeProject(capabilities) {
41
+ const projectCapabilities = capabilities;
42
+ return hasProjectLanguage(projectCapabilities, "node") || hasProjectLanguage(projectCapabilities, "typescript") || hasProjectLanguage(projectCapabilities, "javascript");
43
+ }
44
+ function passVerification(value, reason) {
45
+ return reason ? { status: "pass", value, reason } : { status: "pass", value };
46
+ }
47
+ function failVerification(reason, error) {
48
+ return error ? { status: "fail", reason, error } : { status: "fail", reason };
49
+ }
50
+ function unavailableVerification(reason) {
51
+ return { status: "unavailable", reason };
52
+ }
53
+ function assertPoeticSelfExecutionScope(options) {
54
+ const packageRoot = normalizeRoot(options.root);
55
+ const packageName = readPackageName(packageRoot);
56
+ if (packageName !== POETIC_PACKAGE_NAME) {
57
+ throw new Error(
58
+ `Expected Poetic self scope at package root ${packageRoot} to be ${POETIC_PACKAGE_NAME}; found ${packageName ?? "no package identity"}`
59
+ );
60
+ }
61
+ return {
62
+ kind: "poetic-self",
63
+ root: packageRoot,
64
+ packageName: POETIC_PACKAGE_NAME,
65
+ packageRoot,
66
+ verificationCommands: POETIC_SELF_VERIFICATION_COMMANDS.map((command) => ({ ...command }))
67
+ };
68
+ }
69
+ function resolvePoeticSelfExecutionScope(options) {
70
+ try {
71
+ return passVerification(assertPoeticSelfExecutionScope(options));
72
+ } catch (error) {
73
+ return failVerification(
74
+ error instanceof Error ? error.message : String(error),
75
+ error instanceof Error ? error : void 0
76
+ );
77
+ }
78
+ }
79
+ function buildTargetWorktreeExecutionScope(options) {
80
+ if (options.confirmedRoot !== true) {
81
+ return unavailableVerification(
82
+ "target-worktree verification requires an explicitly confirmed target root"
83
+ );
84
+ }
85
+ try {
86
+ const root = normalizeRoot(options.root);
87
+ const guidance = buildProjectVerificationGuidance(root, options.changedFiles ?? []);
88
+ return passVerification({
89
+ kind: "target-worktree",
90
+ root,
91
+ confirmedRoot: true,
92
+ capabilities: guidance.capabilities,
93
+ guidance
94
+ });
95
+ } catch (error) {
96
+ return failVerification(
97
+ `target-worktree verification scope could not be built: ${error instanceof Error ? error.message : String(error)}`,
98
+ error instanceof Error ? error : void 0
99
+ );
100
+ }
101
+ }
102
+ function detectTargetWorktreeCapabilities(root) {
103
+ return detectProjectCapabilities(root);
104
+ }
105
+
106
+ export {
107
+ isNodeLikeProject,
108
+ resolvePoeticSelfExecutionScope,
109
+ buildTargetWorktreeExecutionScope,
110
+ detectTargetWorktreeCapabilities
111
+ };
112
+ //# sourceMappingURL=chunk-MFADRRTR.js.map
@@ -0,0 +1,120 @@
1
+ // src/core/git/parse-git-status.ts
2
+ function parseGitStatus(output) {
3
+ return output.split("\n").filter((line) => line.trim().length > 0).map((line) => {
4
+ const indexStatus = line[0] ?? " ";
5
+ const worktreeStatus = line[1] ?? " ";
6
+ const pathPart = line.length > 3 ? line.slice(3) : "";
7
+ const { path, originalPath } = parsePathPart(pathPart);
8
+ return {
9
+ indexStatus,
10
+ worktreeStatus,
11
+ path,
12
+ originalPath,
13
+ raw: line
14
+ };
15
+ }).filter((entry) => entry.path.length > 0);
16
+ }
17
+ function parseGitStatusPaths(output, options = {}) {
18
+ const paths = /* @__PURE__ */ new Set();
19
+ for (const entry of parseGitStatus(output)) {
20
+ paths.add(entry.path);
21
+ if (options.includeOriginalPaths && entry.originalPath) {
22
+ paths.add(entry.originalPath);
23
+ }
24
+ }
25
+ return Array.from(paths);
26
+ }
27
+ function parsePathPart(pathPart) {
28
+ const trimmed = pathPart.trim();
29
+ if (!trimmed) {
30
+ return { path: "" };
31
+ }
32
+ const renameParts = splitRenamePath(trimmed);
33
+ if (renameParts) {
34
+ const originalPath = decodePorcelainPath(renameParts.originalPath);
35
+ const newPath = decodePorcelainPath(renameParts.newPath);
36
+ return { path: newPath, originalPath };
37
+ }
38
+ return { path: decodePorcelainPath(trimmed) };
39
+ }
40
+ function splitRenamePath(input) {
41
+ let inQuotes = false;
42
+ let escaped = false;
43
+ for (let index = 0; index < input.length; index++) {
44
+ const char = input[index];
45
+ if (escaped) {
46
+ escaped = false;
47
+ continue;
48
+ }
49
+ if (char === "\\") {
50
+ escaped = true;
51
+ continue;
52
+ }
53
+ if (char === '"') {
54
+ inQuotes = !inQuotes;
55
+ continue;
56
+ }
57
+ if (!inQuotes && input.startsWith(" -> ", index)) {
58
+ return {
59
+ originalPath: input.slice(0, index),
60
+ newPath: input.slice(index + 4)
61
+ };
62
+ }
63
+ }
64
+ return null;
65
+ }
66
+ function decodePorcelainPath(input) {
67
+ const trimmed = input.trim();
68
+ if (!(trimmed.startsWith('"') && trimmed.endsWith('"'))) {
69
+ return trimmed;
70
+ }
71
+ const body = trimmed.slice(1, -1);
72
+ const bytes = [];
73
+ for (let index = 0; index < body.length; index++) {
74
+ const char = body.charAt(index);
75
+ if (char !== "\\") {
76
+ bytes.push(char.codePointAt(0) ?? 0);
77
+ continue;
78
+ }
79
+ const next = body[index + 1];
80
+ if (!next) {
81
+ bytes.push("\\".codePointAt(0) ?? 92);
82
+ continue;
83
+ }
84
+ if (/[0-7]/.test(next)) {
85
+ const octal = body.slice(index + 1, index + 4);
86
+ const match = octal.match(/^[0-7]{1,3}/);
87
+ if (match) {
88
+ bytes.push(Number.parseInt(match[0], 8));
89
+ index += match[0].length;
90
+ continue;
91
+ }
92
+ }
93
+ index += 1;
94
+ switch (next) {
95
+ case '"':
96
+ case "\\":
97
+ bytes.push(next.codePointAt(0) ?? 0);
98
+ break;
99
+ case "t":
100
+ bytes.push(9);
101
+ break;
102
+ case "n":
103
+ bytes.push(10);
104
+ break;
105
+ case "r":
106
+ bytes.push(13);
107
+ break;
108
+ default:
109
+ bytes.push(next.codePointAt(0) ?? 0);
110
+ break;
111
+ }
112
+ }
113
+ return Buffer.from(bytes).toString("utf8");
114
+ }
115
+
116
+ export {
117
+ parseGitStatus,
118
+ parseGitStatusPaths
119
+ };
120
+ //# sourceMappingURL=chunk-MN6PL4AN.js.map
@@ -0,0 +1,206 @@
1
+ import {
2
+ evaluateStaleReclaim
3
+ } from "./chunk-P7CQGPLS.js";
4
+ import {
5
+ signalCoordinator
6
+ } from "./chunk-72YTZMAM.js";
7
+
8
+ // src/planning/ingest-lock.ts
9
+ import { randomUUID } from "crypto";
10
+ import * as fs from "fs/promises";
11
+ import * as os from "os";
12
+ import * as path from "path";
13
+ var DEFAULTS = {
14
+ timeoutMs: 6e4,
15
+ staleThresholdMs: 3e5,
16
+ initialRetryMs: 50,
17
+ maxRetryMs: 2e3,
18
+ backoffFactor: 2
19
+ };
20
+ var CROSS_HOST_STALE_MULTIPLIER = 3;
21
+ function sleep(ms) {
22
+ return new Promise((resolve) => setTimeout(resolve, ms));
23
+ }
24
+ function getHostIdentity() {
25
+ const envHostname = process.env.HOSTNAME?.trim();
26
+ return envHostname || os.hostname() || "unknown";
27
+ }
28
+ async function readLockPayload(lockFile) {
29
+ const read = await readLockPayloadWithRaw(lockFile);
30
+ return read?.payload ?? null;
31
+ }
32
+ async function readLockPayloadWithRaw(lockFile) {
33
+ try {
34
+ const content = await fs.readFile(lockFile, "utf-8");
35
+ let payload = null;
36
+ try {
37
+ payload = JSON.parse(content);
38
+ } catch {
39
+ payload = null;
40
+ }
41
+ return { payload, rawContent: content };
42
+ } catch {
43
+ return null;
44
+ }
45
+ }
46
+ function isProcessAlive(pid) {
47
+ try {
48
+ process.kill(pid, 0);
49
+ return true;
50
+ } catch (error) {
51
+ if (error.code === "EPERM") {
52
+ return true;
53
+ }
54
+ return false;
55
+ }
56
+ }
57
+ async function isLockStaleAndAbandoned(lockFile, staleThresholdMs) {
58
+ try {
59
+ const stat2 = await fs.stat(lockFile);
60
+ const ageMs = Date.now() - stat2.mtimeMs;
61
+ const read = await readLockPayloadWithRaw(lockFile);
62
+ if (!read) {
63
+ return null;
64
+ }
65
+ const payload = read.payload;
66
+ let holder = null;
67
+ if (payload && typeof payload.pid === "number") {
68
+ const currentHostname = getHostIdentity();
69
+ const hasUnknownHost = payload.hostname === "unknown" || currentHostname === "unknown";
70
+ const sameHost = !hasUnknownHost && payload.hostname === currentHostname;
71
+ holder = { sameHost, pidAlive: sameHost ? isProcessAlive(payload.pid) : false };
72
+ }
73
+ const decision = evaluateStaleReclaim(
74
+ { ageMs, holder },
75
+ {
76
+ staleMs: staleThresholdMs,
77
+ corruptPayload: "reclaim",
78
+ foreignHost: { kind: "after-multiplier", multiplier: CROSS_HOST_STALE_MULTIPLIER },
79
+ // Preserve the original strict-greater-than age boundary (age <= stale
80
+ // holds; reclaim only strictly past stale / past 3x for foreign hosts).
81
+ ageBoundary: "gt"
82
+ }
83
+ );
84
+ return decision === "reclaim" ? { dev: stat2.dev, ino: stat2.ino, rawContent: read.rawContent } : null;
85
+ } catch {
86
+ return null;
87
+ }
88
+ }
89
+ async function releaseOwnLock(lockFile, snapshot) {
90
+ try {
91
+ if (!await lockSnapshotStillMatches(lockFile, snapshot)) {
92
+ return;
93
+ }
94
+ try {
95
+ await fs.unlink(lockFile);
96
+ } catch (error) {
97
+ if (error.code !== "ENOENT") {
98
+ }
99
+ }
100
+ } finally {
101
+ await snapshot.fileHandle?.close().catch(() => {
102
+ });
103
+ }
104
+ }
105
+ async function lockSnapshotStillMatches(lockFile, snapshot) {
106
+ try {
107
+ const [openFileStat, stat2, rawContent] = await Promise.all([
108
+ snapshot.fileHandle?.stat(),
109
+ fs.stat(lockFile),
110
+ fs.readFile(lockFile, "utf-8")
111
+ ]);
112
+ const acquiredDev = openFileStat?.dev ?? snapshot.dev;
113
+ const acquiredIno = openFileStat?.ino ?? snapshot.ino;
114
+ return stat2.dev === acquiredDev && stat2.ino === acquiredIno && rawContent === snapshot.rawContent;
115
+ } catch {
116
+ return false;
117
+ }
118
+ }
119
+ async function forceRelease(lockFile, snapshot) {
120
+ if (!await lockSnapshotStillMatches(lockFile, snapshot)) {
121
+ return;
122
+ }
123
+ try {
124
+ await fs.unlink(lockFile);
125
+ } catch (error) {
126
+ if (error.code !== "ENOENT") {
127
+ throw error;
128
+ }
129
+ }
130
+ }
131
+ async function withIngestLock(planningRoot, fn, options) {
132
+ const timeoutMs = options?.timeoutMs ?? DEFAULTS.timeoutMs;
133
+ const staleThresholdMs = options?.staleThresholdMs ?? DEFAULTS.staleThresholdMs;
134
+ const initialRetryMs = options?.initialRetryMs ?? DEFAULTS.initialRetryMs;
135
+ const maxRetryMs = options?.maxRetryMs ?? DEFAULTS.maxRetryMs;
136
+ const backoffFactor = options?.backoffFactor ?? DEFAULTS.backoffFactor;
137
+ const operation = options?.operation ?? "ingest";
138
+ const lockDir = options?.lockDir ?? path.join(planningRoot, ".poetic", "planning", "locks");
139
+ const lockFile = path.join(lockDir, "ingest.lock");
140
+ await fs.mkdir(lockDir, { recursive: true });
141
+ const startTime = Date.now();
142
+ let retryMs = initialRetryMs;
143
+ while (Date.now() - startTime < timeoutMs) {
144
+ const staleSnapshot = await isLockStaleAndAbandoned(lockFile, staleThresholdMs);
145
+ if (staleSnapshot) {
146
+ await forceRelease(lockFile, staleSnapshot);
147
+ }
148
+ try {
149
+ const ownerId = randomUUID();
150
+ const payload = {
151
+ pid: process.pid,
152
+ hostname: getHostIdentity(),
153
+ createdAt: (/* @__PURE__ */ new Date()).toISOString(),
154
+ operation,
155
+ ownerId
156
+ };
157
+ const rawContent = JSON.stringify(payload, null, 2);
158
+ const fileHandle = await fs.open(lockFile, "wx");
159
+ let lockSnapshot;
160
+ try {
161
+ await fileHandle.writeFile(rawContent, "utf-8");
162
+ const lockStat = await fileHandle.stat();
163
+ lockSnapshot = { dev: lockStat.dev, ino: lockStat.ino, rawContent, fileHandle };
164
+ } catch (writeError) {
165
+ await fileHandle.close().catch(() => {
166
+ });
167
+ await fs.unlink(lockFile).catch(() => {
168
+ });
169
+ throw writeError;
170
+ }
171
+ const cleanupName = `planning-ingest-lock:${process.pid}:${operation}`;
172
+ const release = async () => {
173
+ try {
174
+ await releaseOwnLock(lockFile, lockSnapshot);
175
+ } finally {
176
+ signalCoordinator.unregister(cleanupName);
177
+ }
178
+ };
179
+ signalCoordinator.register(cleanupName, release, {
180
+ priority: "critical",
181
+ phase: "artifact-cleanup"
182
+ });
183
+ try {
184
+ return await fn();
185
+ } finally {
186
+ await release();
187
+ }
188
+ } catch (error) {
189
+ if (error.code === "EEXIST") {
190
+ await sleep(retryMs);
191
+ retryMs = Math.min(retryMs * backoffFactor, maxRetryMs);
192
+ continue;
193
+ }
194
+ throw error;
195
+ }
196
+ }
197
+ const lockInfo = await readLockPayload(lockFile);
198
+ throw new Error(
199
+ `Ingest lock acquisition timed out after ${timeoutMs}ms. Lock held by PID ${lockInfo?.pid ?? "unknown"} since ${lockInfo?.createdAt ?? "unknown"} (operation: ${lockInfo?.operation ?? "unknown"})`
200
+ );
201
+ }
202
+
203
+ export {
204
+ withIngestLock
205
+ };
206
+ //# sourceMappingURL=chunk-MQ4WA34C.js.map