@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,227 @@
1
+ import {
2
+ classifyRepoPath
3
+ } from "./chunk-H2AYQIHW.js";
4
+
5
+ // src/core/loop/simple-artifact-goal.ts
6
+ import * as fs from "fs/promises";
7
+ import * as path from "path";
8
+ var SIMPLE_ARTIFACT_GOAL_BOUNDARY = /\s+(?:(?:and|then)\s+)?(?:stop when|stop as soon as|stop after|do not modify|do not edit|do not change|only modify|no other files)\b[\s\S]*$/i;
9
+ var SIMPLE_ARTIFACT_GOAL_BOUNDARY_LOOKAHEAD = String.raw`(?=(?:\s+(?:and|then))?\s*\b(?:stop when|stop as soon as|stop after|do not modify|do not edit|do not change|only modify|no other files)\b|$)`;
10
+ var SIMPLE_ARTIFACT_INSTRUCTION_BOUNDARY = /\.\s+(?:Use\s+(?:normal\s+)?(?:text[- ]?file\s+)?formatting(?:;\s*a\s+final\s+newline\s+is\s+acceptable)?|A\s+final\s+newline\s+is\s+acceptable)\b[\s\S]*$/i;
11
+ var SIMPLE_ARTIFACT_SAFE_EXTENSIONS = /* @__PURE__ */ new Set([
12
+ ".csv",
13
+ ".json",
14
+ ".log",
15
+ ".md",
16
+ ".txt",
17
+ ".tsv",
18
+ ".yaml",
19
+ ".yml"
20
+ ]);
21
+ var SIMPLE_ARTIFACT_CODE_ROOTS = /* @__PURE__ */ new Set([
22
+ "src",
23
+ "test",
24
+ "tests",
25
+ "__tests__",
26
+ "scripts",
27
+ "bin",
28
+ "lib",
29
+ "packages"
30
+ ]);
31
+ function normalizeSimpleArtifactPath(filePath) {
32
+ return filePath.replace(/\\/g, "/").replace(/^\.\//, "");
33
+ }
34
+ function classifyArtifactPath(filePath) {
35
+ const targetPath = normalizeSimpleArtifactPath(filePath);
36
+ if (targetPath.length === 0 || path.isAbsolute(targetPath) || targetPath.includes("\0") || targetPath.split("/").includes("..")) {
37
+ return null;
38
+ }
39
+ const pathParts = targetPath.split("/").filter(Boolean);
40
+ return {
41
+ topLevel: pathParts[0] ?? "",
42
+ extension: path.extname(targetPath).toLowerCase(),
43
+ artifactNamedPath: pathParts.some((part) => /artifacts?/i.test(part))
44
+ };
45
+ }
46
+ function isSafeArtifactRelativePath(filePath) {
47
+ const parts = classifyArtifactPath(filePath);
48
+ if (parts === null) return false;
49
+ return !SIMPLE_ARTIFACT_CODE_ROOTS.has(parts.topLevel) && (parts.artifactNamedPath || SIMPLE_ARTIFACT_SAFE_EXTENSIONS.has(parts.extension));
50
+ }
51
+ function isNonCodeArtifactDiffPath(filePath) {
52
+ const parts = classifyArtifactPath(filePath);
53
+ if (parts === null) return false;
54
+ return !SIMPLE_ARTIFACT_CODE_ROOTS.has(parts.topLevel) && SIMPLE_ARTIFACT_SAFE_EXTENSIONS.has(parts.extension);
55
+ }
56
+ var SIMPLE_ARTIFACT_QUOTE_PAIRS = [
57
+ ["```", "```"],
58
+ ["`", "`"],
59
+ ['"', '"'],
60
+ ["'", "'"]
61
+ ];
62
+ function unwrapQuotedExactContent(value) {
63
+ for (const [open, close] of SIMPLE_ARTIFACT_QUOTE_PAIRS) {
64
+ if (value.startsWith(open) && value.endsWith(close) && value.length >= open.length + close.length) {
65
+ return {
66
+ value: value.slice(open.length, value.length - close.length),
67
+ wasQuoted: true
68
+ };
69
+ }
70
+ }
71
+ return { value, wasQuoted: false };
72
+ }
73
+ function trimQuotedExactContent(raw, options) {
74
+ let value = raw.replace(SIMPLE_ARTIFACT_GOAL_BOUNDARY, "").trim();
75
+ const quoted = unwrapQuotedExactContent(value);
76
+ const wasQuoted = quoted.wasQuoted;
77
+ value = quoted.value;
78
+ if (!wasQuoted) {
79
+ value = value.replace(SIMPLE_ARTIFACT_INSTRUCTION_BOUNDARY, "").trim();
80
+ }
81
+ if (options?.stripSentenceTerminatorBeforeBoundary === true && !wasQuoted && /[.!?]$/.test(value)) {
82
+ value = value.slice(0, -1).trimEnd();
83
+ }
84
+ if (!wasQuoted && /[.!?]$/.test(value) && !/\s/u.test(value.slice(0, -1))) {
85
+ value = value.slice(0, -1).trimEnd();
86
+ }
87
+ return value;
88
+ }
89
+ function hasSimpleArtifactGoalBoundary(prompt) {
90
+ return /\b(?:stop when|stop as soon as|stop after|do not modify|do not edit|do not change|only modify|no other files)\b/i.test(
91
+ prompt
92
+ );
93
+ }
94
+ function buildSimpleArtifactGoalFromMatch(match, options) {
95
+ const targetPath = normalizeSimpleArtifactPath(
96
+ options?.stripTrailingPathTerminator === true ? (match[1] ?? "").replace(/[.!?]$/, "") : match[1] ?? ""
97
+ );
98
+ if (!isNonCodeArtifactDiffPath(targetPath)) {
99
+ return void 0;
100
+ }
101
+ const separator = match[2] ?? "";
102
+ const expectedContent = trimQuotedExactContent(match[3] ?? "", {
103
+ stripSentenceTerminatorBeforeBoundary: options?.stripTrailingSentenceTerminator === true || !separator.includes(":")
104
+ });
105
+ if (expectedContent.length === 0) return void 0;
106
+ return { path: targetPath, expectedContent };
107
+ }
108
+ function parseCreateSimpleArtifactGoal(prompt) {
109
+ if (!/\b(?:create(?:\s+or\s+update)?|ensure|set|write|add)\b/i.test(prompt)) return void 0;
110
+ if (!/\b(?:(?:contains?|containing|with)\s+exactly)\b/i.test(prompt)) return void 0;
111
+ if (!hasSimpleArtifactGoalBoundary(prompt)) return void 0;
112
+ const repoRelative = parseRepoRelativePathSimpleArtifactGoal(prompt);
113
+ if (repoRelative) return repoRelative;
114
+ const matches = Array.from(
115
+ prompt.matchAll(
116
+ new RegExp(
117
+ String.raw`\b(?:create(?:\s+or\s+update)?|ensure|set|write|add)\s+(?:the\s+)?(?:file\s+)?[` + `\`'"]?([^\`'"\\s:]+)[\`'"]?` + String.raw`\s+(?:contains?\s+exactly|containing\s+exactly|with\s+exactly(?:\s+one\s+line)?)(\s*:|\s+)([\s\S]*?)` + SIMPLE_ARTIFACT_GOAL_BOUNDARY_LOOKAHEAD,
118
+ "gi"
119
+ )
120
+ )
121
+ );
122
+ const match = matches.at(-1);
123
+ if (!match) return void 0;
124
+ const stripTrailingSentenceTerminator = /\bwith\s+exactly\s+one\s+line\b/i.test(match[0] ?? "");
125
+ return buildSimpleArtifactGoalFromMatch(match, {
126
+ stripTrailingSentenceTerminator
127
+ });
128
+ }
129
+ function parseRepoRelativePathSimpleArtifactGoal(prompt) {
130
+ const matches = Array.from(
131
+ prompt.matchAll(
132
+ new RegExp(
133
+ String.raw`\b(?:create(?:\s+or\s+update)?|ensure|set|write|add)\s+(?:a\s+|the\s+)?file\s+at\s+the\s+repo-relative\s+path\s+[` + `\`'"]?([^\`'"\\s:]+)[\`'"]?` + String.raw`[\s\S]*?\b(?:must|should)?\s*contains?\s+exactly(\s*:|\s+)([\s\S]*?)` + SIMPLE_ARTIFACT_GOAL_BOUNDARY_LOOKAHEAD,
134
+ "gi"
135
+ )
136
+ )
137
+ );
138
+ const match = matches.at(-1);
139
+ if (!match) return void 0;
140
+ return buildSimpleArtifactGoalFromMatch(match, { stripTrailingPathTerminator: true });
141
+ }
142
+ function parseEditSimpleArtifactGoal(prompt) {
143
+ if (!/\bEdit only\b/i.test(prompt)) return void 0;
144
+ if (!/\bso it contains exactly\b/i.test(prompt)) return void 0;
145
+ if (!hasSimpleArtifactGoalBoundary(prompt)) return void 0;
146
+ const matches = Array.from(
147
+ prompt.matchAll(
148
+ new RegExp(
149
+ String.raw`\bEdit only\s+(?:the\s+)?(?:file\s+)?[` + `\`'"]?([^\`'"\\s:]+)[\`'"]?` + String.raw`\s+so it contains exactly(\s+)([\s\S]*?)` + SIMPLE_ARTIFACT_GOAL_BOUNDARY_LOOKAHEAD,
150
+ "gi"
151
+ )
152
+ )
153
+ );
154
+ const match = matches.at(-1);
155
+ if (!match) return void 0;
156
+ return buildSimpleArtifactGoalFromMatch(match);
157
+ }
158
+ function parseSimpleArtifactGoal(prompt) {
159
+ return parseCreateSimpleArtifactGoal(prompt) ?? parseEditSimpleArtifactGoal(prompt);
160
+ }
161
+ async function applyExactArtifactGoalSuccessGate(input) {
162
+ if (!input.success) {
163
+ return { success: false };
164
+ }
165
+ const goal = parseSimpleArtifactGoal(input.prompt);
166
+ if (!goal) {
167
+ return { success: true };
168
+ }
169
+ const satisfied = await isSimpleArtifactGoalSatisfied(input.worktreePath, goal);
170
+ if (satisfied) {
171
+ return { success: true, goal };
172
+ }
173
+ return {
174
+ success: false,
175
+ goal,
176
+ failureReason: `Exact artifact content mismatch for ${goal.path}`
177
+ };
178
+ }
179
+ function isValidationArtifactPath(filePath) {
180
+ const normalized = normalizeSimpleArtifactPath(filePath);
181
+ return normalized.startsWith("dogfood-validation-artifacts/") || normalized.startsWith(".poetic/validation/");
182
+ }
183
+ function artifactContentMatchesExpected(actualContent, expectedContent, filePath) {
184
+ if (actualContent === expectedContent) {
185
+ return true;
186
+ }
187
+ const extension = path.extname(normalizeSimpleArtifactPath(filePath)).toLowerCase();
188
+ if ((isValidationArtifactPath(filePath) || SIMPLE_ARTIFACT_SAFE_EXTENSIONS.has(extension)) && actualContent === `${expectedContent}
189
+ `) {
190
+ return true;
191
+ }
192
+ return false;
193
+ }
194
+ async function isSimpleArtifactGoalSatisfied(workspaceRoot, goal) {
195
+ try {
196
+ const actualContent = await fs.readFile(path.join(workspaceRoot, goal.path), "utf8");
197
+ return artifactContentMatchesExpected(actualContent, goal.expectedContent, goal.path);
198
+ } catch {
199
+ return false;
200
+ }
201
+ }
202
+ function getUnexpectedSimpleArtifactTaskChanges(goal, changedFiles) {
203
+ return changedFiles.map(normalizeSimpleArtifactPath).filter((file) => classifyRepoPath(file) !== "runtime-artifact").filter((file) => file !== goal.path);
204
+ }
205
+ async function isSimpleArtifactGoalSatisfiedForChanges(workspaceRoot, goal, changedFiles) {
206
+ const normalizedChangedFiles = changedFiles.map(normalizeSimpleArtifactPath);
207
+ if (!normalizedChangedFiles.includes(goal.path)) {
208
+ return false;
209
+ }
210
+ if (getUnexpectedSimpleArtifactTaskChanges(goal, normalizedChangedFiles).length > 0) {
211
+ return false;
212
+ }
213
+ return isSimpleArtifactGoalSatisfied(workspaceRoot, goal);
214
+ }
215
+
216
+ export {
217
+ normalizeSimpleArtifactPath,
218
+ isSafeArtifactRelativePath,
219
+ isNonCodeArtifactDiffPath,
220
+ parseSimpleArtifactGoal,
221
+ applyExactArtifactGoalSuccessGate,
222
+ artifactContentMatchesExpected,
223
+ isSimpleArtifactGoalSatisfied,
224
+ getUnexpectedSimpleArtifactTaskChanges,
225
+ isSimpleArtifactGoalSatisfiedForChanges
226
+ };
227
+ //# sourceMappingURL=chunk-OGMSYL6J.js.map
@@ -0,0 +1,319 @@
1
+ import {
2
+ assertContainedPath
3
+ } from "./chunk-WMPU2UOV.js";
4
+
5
+ // src/planning/file-utils.ts
6
+ import { randomUUID } from "crypto";
7
+ import * as fs from "fs/promises";
8
+ import * as path from "path";
9
+ import * as yaml from "js-yaml";
10
+ var CONVENTION_FILES = /* @__PURE__ */ new Set(["AGENTS.md", "CLAUDE.md", "GEMINI.md", "README.md"]);
11
+ var VALID_KINDS = /* @__PURE__ */ new Set([
12
+ "task",
13
+ "sprint",
14
+ "backlog",
15
+ "tech-debt",
16
+ "parking-lot",
17
+ "finding",
18
+ "issue",
19
+ "suppression"
20
+ ]);
21
+ var VALID_PRIORITIES = /* @__PURE__ */ new Set(["P0", "P1", "P2", "P3"]);
22
+ var WORK_EDGE_TYPES = ["depends_on", "supersedes"];
23
+ var WORK_ITEM_KINDS = [
24
+ "task",
25
+ "sprint",
26
+ "backlog",
27
+ "tech-debt",
28
+ "parking-lot",
29
+ "finding",
30
+ "issue",
31
+ "suppression"
32
+ ];
33
+ var RAW_RELATIONSHIPS = [
34
+ "blocks",
35
+ "blocked-by",
36
+ "supersedes",
37
+ "superseded_by"
38
+ ];
39
+ function isRawRelationship(value) {
40
+ return RAW_RELATIONSHIPS.includes(value);
41
+ }
42
+ var NEUTRAL_RELATIONSHIPS = ["related"];
43
+ function isNeutralRelationship(value) {
44
+ return NEUTRAL_RELATIONSHIPS.includes(value);
45
+ }
46
+ function isWorkEdgeType(value) {
47
+ return typeof value === "string" && WORK_EDGE_TYPES.includes(value);
48
+ }
49
+ function isWorkItemKind(value) {
50
+ return typeof value === "string" && WORK_ITEM_KINDS.includes(value);
51
+ }
52
+ function isNonEmptyString(value) {
53
+ return typeof value === "string" && value.length > 0;
54
+ }
55
+ function assertSafePlanningFileId(id, label) {
56
+ if (typeof id !== "string") {
57
+ throw new Error(`${label} must be a non-empty string`);
58
+ }
59
+ if (id.includes("\0")) {
60
+ throw new Error(`${label} must not contain a NUL byte`);
61
+ }
62
+ const trimmed = id.trim();
63
+ if (!trimmed) {
64
+ throw new Error(`${label} must not be empty`);
65
+ }
66
+ if (path.isAbsolute(trimmed)) {
67
+ throw new Error(`${label} must not be an absolute path`);
68
+ }
69
+ if (trimmed === "." || trimmed === "..") {
70
+ throw new Error(`${label} must not be "." or ".."`);
71
+ }
72
+ if (trimmed.includes("/") || trimmed.includes("\\") || path.basename(trimmed) !== trimmed) {
73
+ throw new Error(`${label} must be a single path segment`);
74
+ }
75
+ return trimmed;
76
+ }
77
+ function resolvePlanningItemPath(bucketDir, id, options = {}) {
78
+ const label = options.label ?? "id";
79
+ const safeId = assertSafePlanningFileId(id, label);
80
+ const extra = (options.extraSegments ?? []).map(
81
+ (segment, index) => assertSafePlanningFileId(segment, `${label} path segment ${index + 1}`)
82
+ );
83
+ const relativeFile = path.join(...extra, `${safeId}.md`);
84
+ assertContainedPath(bucketDir, relativeFile, label);
85
+ return path.join(bucketDir, relativeFile);
86
+ }
87
+ function isPersistedWorkEdge(value) {
88
+ if (typeof value !== "object" || value === null) {
89
+ return false;
90
+ }
91
+ const candidate = value;
92
+ return isNonEmptyString(candidate.from) && isNonEmptyString(candidate.to) && isWorkEdgeType(candidate.type) && isWorkItemKind(candidate.fromKind) && isWorkItemKind(candidate.toKind) && isNonEmptyString(candidate.declaredOn) && typeof candidate.declaredBy === "string" && isRawRelationship(candidate.declaredBy) && isNonEmptyString(candidate.declaredTarget);
93
+ }
94
+ function normalizeMarkdownContent(content) {
95
+ return content.replace(/\r\n/g, "\n");
96
+ }
97
+ function isRecord(value) {
98
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
99
+ }
100
+ function validateBaseFrontMatter(value, source) {
101
+ if (!isRecord(value)) {
102
+ throw new Error(`Invalid YAML front matter in ${source}: expected an object`);
103
+ }
104
+ const hasBaseShape = "kind" in value || "title" in value || "id" in value && "kind" in value;
105
+ if (!hasBaseShape) {
106
+ return value;
107
+ }
108
+ if (typeof value.id !== "string" || value.id.trim().length === 0) {
109
+ throw new Error(`Invalid YAML front matter in ${source}: id must be a non-empty string`);
110
+ }
111
+ if (typeof value.title !== "string" || value.title.trim().length === 0) {
112
+ throw new Error(`Invalid YAML front matter in ${source}: title must be a non-empty string`);
113
+ }
114
+ if (typeof value.kind !== "string" || !VALID_KINDS.has(value.kind)) {
115
+ throw new Error(`Invalid YAML front matter in ${source}: kind must be a known planning kind`);
116
+ }
117
+ if ("priority" in value && value.priority !== null && value.priority !== void 0) {
118
+ if (typeof value.priority !== "string" || !VALID_PRIORITIES.has(value.priority)) {
119
+ throw new Error(`Invalid YAML front matter in ${source}: priority must be P0, P1, P2, or P3`);
120
+ }
121
+ }
122
+ return value;
123
+ }
124
+ async function atomicWriteFile(filePath, content) {
125
+ const dirPath = path.dirname(filePath);
126
+ await ensureDirectoryExists(dirPath);
127
+ const tempPath = path.join(
128
+ dirPath,
129
+ `.${path.basename(filePath)}.${process.pid}.${Date.now()}.${randomUUID()}.tmp`
130
+ );
131
+ const handle = await fs.open(tempPath, "w");
132
+ try {
133
+ await handle.writeFile(content, "utf-8");
134
+ await handle.sync();
135
+ } finally {
136
+ await handle.close();
137
+ }
138
+ try {
139
+ await fs.rename(tempPath, filePath);
140
+ } catch (error) {
141
+ await fs.rm(tempPath, { force: true }).catch(() => void 0);
142
+ throw error;
143
+ }
144
+ }
145
+ async function readMarkdownFile(filePath) {
146
+ const content = normalizeMarkdownContent(await fs.readFile(filePath, "utf-8"));
147
+ const frontMatterRegex = /^---\n([\s\S]*?)\n---\n([\s\S]*)$/;
148
+ const match = content.match(frontMatterRegex);
149
+ if (!match) {
150
+ throw new Error(`No YAML front matter found in ${filePath}`);
151
+ }
152
+ const [, yamlContent, body] = match;
153
+ const frontMatter = validateBaseFrontMatter(
154
+ yaml.load(yamlContent ?? "", { schema: yaml.JSON_SCHEMA }),
155
+ filePath
156
+ );
157
+ const trimmedBody = (body ?? "").trim();
158
+ return {
159
+ frontMatter,
160
+ body: trimmedBody,
161
+ content: trimmedBody
162
+ // Alias for body for backward compatibility
163
+ };
164
+ }
165
+ async function parseMarkdownFile(filePath) {
166
+ const content = normalizeMarkdownContent(await fs.readFile(filePath, "utf-8"));
167
+ const match = content.match(/^---\n([\s\S]+?)\n---\n([\s\S]*)$/);
168
+ if (!match) {
169
+ throw new Error(`Invalid markdown format in ${filePath}: Missing YAML front matter`);
170
+ }
171
+ const yamlContent = match[1];
172
+ const body = match[2] || "";
173
+ const parsed = validateBaseFrontMatter(
174
+ yaml.load(yamlContent ?? "", { schema: yaml.JSON_SCHEMA }),
175
+ filePath
176
+ );
177
+ return { yaml: parsed, body };
178
+ }
179
+ async function writeMarkdownFile(filePath, frontMatter, body) {
180
+ const yamlContent = yaml.dump(frontMatter, {
181
+ indent: 2,
182
+ lineWidth: -1,
183
+ // Disable line wrapping
184
+ noRefs: true
185
+ // Don't use anchors/aliases
186
+ });
187
+ const content = `---
188
+ ${yamlContent}---
189
+
190
+ ${body.trim()}
191
+ `;
192
+ await atomicWriteFile(filePath, content);
193
+ }
194
+ function extractYAML(yamlString) {
195
+ try {
196
+ return validateBaseFrontMatter(
197
+ yaml.load(yamlString, { schema: yaml.JSON_SCHEMA }),
198
+ "YAML input"
199
+ );
200
+ } catch (error) {
201
+ throw new Error(`Invalid YAML: ${error instanceof Error ? error.message : String(error)}`);
202
+ }
203
+ }
204
+ function serializeYAML(obj) {
205
+ return yaml.dump(obj, {
206
+ indent: 2,
207
+ lineWidth: -1,
208
+ noRefs: true
209
+ });
210
+ }
211
+ async function ensureDirectoryExists(dirPath) {
212
+ try {
213
+ await fs.access(dirPath);
214
+ } catch {
215
+ await fs.mkdir(dirPath, { recursive: true });
216
+ }
217
+ }
218
+ async function getSequentialId(directory, prefix) {
219
+ try {
220
+ await fs.access(directory);
221
+ } catch {
222
+ return `${prefix}-001`;
223
+ }
224
+ const files = await fs.readdir(directory);
225
+ const pattern = new RegExp(`^${prefix}-(\\d+)(?:-|\\.|$)`);
226
+ let maxNum = 0;
227
+ for (const file of files) {
228
+ const match = file.match(pattern);
229
+ if (match?.[1]) {
230
+ const num = Number.parseInt(match[1], 10);
231
+ if (num > maxNum) {
232
+ maxNum = num;
233
+ }
234
+ }
235
+ }
236
+ const nextNum = maxNum + 1;
237
+ return `${prefix}-${String(nextNum).padStart(3, "0")}`;
238
+ }
239
+ async function listMarkdownFiles(directory) {
240
+ try {
241
+ const files = await fs.readdir(directory);
242
+ return files.filter((f) => f.endsWith(".md") && !CONVENTION_FILES.has(f)).sort((a, b) => a.localeCompare(b)).map((f) => path.join(directory, f));
243
+ } catch {
244
+ return [];
245
+ }
246
+ }
247
+ async function listMarkdownFilesRecursive(directory) {
248
+ const results = [];
249
+ let entries;
250
+ try {
251
+ entries = await fs.readdir(directory, { withFileTypes: true });
252
+ } catch {
253
+ return [];
254
+ }
255
+ entries.sort((a, b) => a.name.localeCompare(b.name));
256
+ for (const entry of entries) {
257
+ const fullPath = path.join(directory, entry.name);
258
+ if (entry.isDirectory()) {
259
+ results.push(...await listMarkdownFilesRecursive(fullPath));
260
+ } else if (entry.isFile() && entry.name.endsWith(".md") && !CONVENTION_FILES.has(entry.name)) {
261
+ results.push(fullPath);
262
+ }
263
+ }
264
+ return results;
265
+ }
266
+ async function listMarkdownFilesRecursiveStrict(directory) {
267
+ const results = [];
268
+ let entries;
269
+ try {
270
+ entries = await fs.readdir(directory, { withFileTypes: true });
271
+ } catch (error) {
272
+ if (error.code === "ENOENT") {
273
+ return [];
274
+ }
275
+ throw error;
276
+ }
277
+ entries.sort((a, b) => a.name.localeCompare(b.name));
278
+ for (const entry of entries) {
279
+ const fullPath = path.join(directory, entry.name);
280
+ if (entry.isDirectory()) {
281
+ results.push(...await listMarkdownFilesRecursiveStrict(fullPath));
282
+ } else if (entry.isFile() && entry.name.endsWith(".md") && !CONVENTION_FILES.has(entry.name)) {
283
+ results.push(fullPath);
284
+ }
285
+ }
286
+ return results;
287
+ }
288
+ async function fileExists(filePath) {
289
+ try {
290
+ await fs.access(filePath);
291
+ return true;
292
+ } catch {
293
+ return false;
294
+ }
295
+ }
296
+
297
+ export {
298
+ WORK_EDGE_TYPES,
299
+ WORK_ITEM_KINDS,
300
+ RAW_RELATIONSHIPS,
301
+ isRawRelationship,
302
+ isNeutralRelationship,
303
+ assertSafePlanningFileId,
304
+ resolvePlanningItemPath,
305
+ isPersistedWorkEdge,
306
+ atomicWriteFile,
307
+ readMarkdownFile,
308
+ parseMarkdownFile,
309
+ writeMarkdownFile,
310
+ extractYAML,
311
+ serializeYAML,
312
+ ensureDirectoryExists,
313
+ getSequentialId,
314
+ listMarkdownFiles,
315
+ listMarkdownFilesRecursive,
316
+ listMarkdownFilesRecursiveStrict,
317
+ fileExists
318
+ };
319
+ //# sourceMappingURL=chunk-OIS7J26S.js.map
@@ -0,0 +1,79 @@
1
+ // src/utils/git-lock-recovery.ts
2
+ import { rm, stat } from "fs/promises";
3
+ import path from "path";
4
+ import { execa } from "execa";
5
+ var DEFAULT_STALE_LOCK_AGE_MS = 3e4;
6
+ async function hasAnyActiveGitProcess() {
7
+ const result = await execa("ps", ["-axo", "pid=,command="], {
8
+ stdio: "pipe",
9
+ reject: false
10
+ });
11
+ if (result.exitCode !== 0) {
12
+ return true;
13
+ }
14
+ return result.stdout.split("\n").map((line) => line.trim()).some((line) => {
15
+ if (!line) return false;
16
+ const [pidText, ...commandParts] = line.split(/\s+/);
17
+ if (!pidText) return false;
18
+ const pid = Number.parseInt(pidText, 10);
19
+ if (!Number.isFinite(pid) || pid === process.pid) {
20
+ return false;
21
+ }
22
+ const command = commandParts.join(" ");
23
+ return /\bgit(\s|$)/.test(command);
24
+ });
25
+ }
26
+ async function resolveGitDir(cwd) {
27
+ const result = await execa("git", ["rev-parse", "--path-format=absolute", "--git-dir"], {
28
+ cwd,
29
+ stdio: "pipe",
30
+ reject: false
31
+ });
32
+ if (result.exitCode !== 0) {
33
+ return null;
34
+ }
35
+ const gitDir = result.stdout.trim();
36
+ return gitDir.length > 0 ? gitDir : null;
37
+ }
38
+ async function cleanupStaleGitIndexLock(cwd, options = {}) {
39
+ const staleAfterMs = options.staleAfterMs ?? DEFAULT_STALE_LOCK_AGE_MS;
40
+ const gitDir = await resolveGitDir(cwd);
41
+ if (!gitDir) {
42
+ return false;
43
+ }
44
+ const lockPath = path.join(gitDir, "index.lock");
45
+ let lockStats;
46
+ try {
47
+ lockStats = await stat(lockPath);
48
+ } catch {
49
+ return false;
50
+ }
51
+ if (Date.now() - lockStats.mtimeMs < staleAfterMs) {
52
+ return false;
53
+ }
54
+ if (await hasAnyActiveGitProcess()) {
55
+ return false;
56
+ }
57
+ let latestLockStats;
58
+ try {
59
+ latestLockStats = await stat(lockPath);
60
+ } catch {
61
+ return false;
62
+ }
63
+ if (latestLockStats.mtimeMs !== lockStats.mtimeMs || Date.now() - latestLockStats.mtimeMs < staleAfterMs) {
64
+ return false;
65
+ }
66
+ await rm(lockPath, { force: true }).catch(() => {
67
+ });
68
+ try {
69
+ await stat(lockPath);
70
+ return false;
71
+ } catch {
72
+ return true;
73
+ }
74
+ }
75
+
76
+ export {
77
+ cleanupStaleGitIndexLock
78
+ };
79
+ //# sourceMappingURL=chunk-OMX5VL43.js.map