@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,810 @@
1
+ import {
2
+ ExecutionTracker,
3
+ ensurePromptExecutionViews,
4
+ ensurePromptExecutionsCompositeForeignKey
5
+ } from "./chunk-U45RTRGY.js";
6
+ import {
7
+ performActivation
8
+ } from "./chunk-6BM72ZMG.js";
9
+ import {
10
+ parseJsonWithContext
11
+ } from "./chunk-QVZMFDYG.js";
12
+ import {
13
+ resolvePoeticDirFromContext
14
+ } from "./chunk-UI2F6DJ5.js";
15
+
16
+ // src/core/storage/PromptStore.ts
17
+ import crypto from "crypto";
18
+ import fs from "fs";
19
+ import path from "path";
20
+ import { fileURLToPath } from "url";
21
+ import Database from "better-sqlite3";
22
+ var __filename = fileURLToPath(import.meta.url);
23
+ var __dirname = path.dirname(__filename);
24
+ var PromptVersionStore = class {
25
+ poeticDir;
26
+ dbPath;
27
+ db;
28
+ executionTracker;
29
+ ownsDb;
30
+ // Live schema flags. The canonical writer (src/prompts/store.ts) uses a
31
+ // hash-and-file schema with no inline content / version_number columns.
32
+ // Older databases created by this class used inline-content columns.
33
+ // We detect which shape the DB is in and adapt reads/writes accordingly.
34
+ hasInlineContent = false;
35
+ hasVersionNumberColumn = false;
36
+ hasOptimizationMetadataColumn = false;
37
+ activeContentDir;
38
+ archivedContentDir;
39
+ // Safety thresholds
40
+ MIN_EXECUTIONS = 3;
41
+ MIN_SUCCESS_RATE = 0.5;
42
+ MAX_QUALITY_REGRESSION = 10;
43
+ // percent
44
+ MAX_COST_MULTIPLIER = 2;
45
+ constructor(options = {}) {
46
+ this.poeticDir = resolvePoeticDirFromContext(options.poeticDir);
47
+ const dbDir = path.join(this.poeticDir, "prompts", "db");
48
+ this.activeContentDir = path.join(this.poeticDir, "prompts", "active");
49
+ this.archivedContentDir = path.join(this.poeticDir, "prompts", "archived");
50
+ if (options.db) {
51
+ this.db = options.db;
52
+ this.dbPath = this.db.name;
53
+ this.ownsDb = false;
54
+ } else {
55
+ if (!fs.existsSync(dbDir)) {
56
+ fs.mkdirSync(dbDir, { recursive: true });
57
+ }
58
+ this.dbPath = path.join(dbDir, "prompts.db");
59
+ this.db = new Database(this.dbPath);
60
+ this.ownsDb = true;
61
+ }
62
+ this.executionTracker = new ExecutionTracker({
63
+ poeticDir: this.poeticDir,
64
+ autoApplySchema: false,
65
+ // We'll apply schema ourselves
66
+ db: this.db
67
+ // Share the database connection
68
+ });
69
+ if (options.autoApplySchema !== false) {
70
+ this.applySchema();
71
+ }
72
+ this.detectSchemaShape();
73
+ }
74
+ /**
75
+ * Detect whether the prompt_versions table has inline content or hash-and-file shape.
76
+ * The canonical writer is src/prompts/store.ts (hash-and-file). This class historically
77
+ * created the inline-content shape; new installs must read whatever's actually on disk.
78
+ */
79
+ detectSchemaShape() {
80
+ try {
81
+ const cols = this.db.prepare("PRAGMA table_info(prompt_versions)").all();
82
+ const names = new Set(cols.map((c) => c.name));
83
+ this.hasInlineContent = names.has("content");
84
+ this.hasVersionNumberColumn = names.has("version_number");
85
+ this.hasOptimizationMetadataColumn = names.has("optimization_metadata");
86
+ } catch {
87
+ this.hasInlineContent = false;
88
+ this.hasVersionNumberColumn = false;
89
+ this.hasOptimizationMetadataColumn = false;
90
+ }
91
+ }
92
+ /**
93
+ * Hydrate version content from disk when the DB schema doesn't carry it inline.
94
+ * Mirrors src/prompts/store.ts:getVersionContentPath naming: <promptId>-<versionId>.txt.
95
+ * Returns empty string if the side file is missing - callers must validate.
96
+ */
97
+ hydrateContentFromFile(promptId, versionId) {
98
+ const candidates = [
99
+ path.join(this.activeContentDir, `${promptId}-${versionId}.txt`),
100
+ path.join(this.archivedContentDir, `${promptId}-${versionId}.txt`)
101
+ ];
102
+ for (const p of candidates) {
103
+ if (fs.existsSync(p)) {
104
+ try {
105
+ return fs.readFileSync(p, "utf8");
106
+ } catch {
107
+ return "";
108
+ }
109
+ }
110
+ }
111
+ return "";
112
+ }
113
+ /**
114
+ * Apply schema.
115
+ *
116
+ * This class previously created divergent prompts/prompt_versions tables (inline content,
117
+ * `version_number INTEGER NOT NULL`) that did not match the canonical writer
118
+ * src/prompts/store.ts (hash-and-file). On databases the canonical writer touched first,
119
+ * the IF NOT EXISTS made the divergent CREATE a silent no-op and `rowToVersion` then read
120
+ * a column that wasn't there.
121
+ *
122
+ * Now we declare the canonical hash-and-file shape so fresh databases match the canonical
123
+ * writer's expectations, and the legacy inline-content shape is read transparently when
124
+ * detected via PRAGMA in detectSchemaShape.
125
+ *
126
+ * The execution-tracking tables are owned exclusively here via schema-extensions.sql.
127
+ */
128
+ applySchema() {
129
+ this.db.pragma("foreign_keys = ON");
130
+ this.db.exec(`
131
+ CREATE TABLE IF NOT EXISTS prompts (
132
+ id TEXT PRIMARY KEY,
133
+ name TEXT NOT NULL,
134
+ description TEXT NOT NULL DEFAULT '',
135
+ category TEXT NOT NULL DEFAULT 'adhoc',
136
+ status TEXT NOT NULL DEFAULT 'active',
137
+ variant TEXT,
138
+ tags TEXT NOT NULL DEFAULT '[]',
139
+ auto_opt_in INTEGER DEFAULT 0,
140
+ current_version TEXT NOT NULL,
141
+ active_version_id TEXT,
142
+ created_at TEXT NOT NULL,
143
+ updated_at TEXT NOT NULL,
144
+ archived_at TEXT,
145
+ usage_count INTEGER DEFAULT 0,
146
+ last_used_at TEXT,
147
+ UNIQUE(name, category)
148
+ );
149
+
150
+ CREATE INDEX IF NOT EXISTS idx_prompts_name ON prompts(name);
151
+ CREATE INDEX IF NOT EXISTS idx_prompts_category ON prompts(category);
152
+ CREATE INDEX IF NOT EXISTS idx_prompts_active_version ON prompts(active_version_id);
153
+
154
+ CREATE TABLE IF NOT EXISTS prompt_versions (
155
+ id TEXT NOT NULL,
156
+ prompt_id TEXT NOT NULL,
157
+ content_hash TEXT NOT NULL,
158
+ changelog TEXT,
159
+ author TEXT,
160
+ is_active INTEGER DEFAULT 0,
161
+ is_generated INTEGER DEFAULT 0,
162
+ generation_model TEXT,
163
+ generation_prompt TEXT,
164
+ created_at TEXT NOT NULL,
165
+ activated_at TEXT,
166
+ deactivated_at TEXT,
167
+ parent_version_id TEXT,
168
+ mutation_type TEXT,
169
+ optimization_metadata TEXT,
170
+ generated_by TEXT,
171
+ activated_by TEXT,
172
+ performance_score REAL,
173
+ PRIMARY KEY (prompt_id, id),
174
+ FOREIGN KEY (prompt_id) REFERENCES prompts(id) ON DELETE CASCADE
175
+ );
176
+
177
+ CREATE INDEX IF NOT EXISTS idx_versions_prompt ON prompt_versions(prompt_id);
178
+ CREATE INDEX IF NOT EXISTS idx_versions_active ON prompt_versions(prompt_id, is_active);
179
+ `);
180
+ this.ensureActivationColumns();
181
+ const schemaPath = path.join(__dirname, "schema-extensions.sql");
182
+ if (fs.existsSync(schemaPath)) {
183
+ const schema = fs.readFileSync(schemaPath, "utf8");
184
+ this.db.exec(schema);
185
+ ensurePromptExecutionsCompositeForeignKey(this.db);
186
+ ensurePromptExecutionViews(this.db);
187
+ } else {
188
+ ensurePromptExecutionsCompositeForeignKey(this.db);
189
+ ensurePromptExecutionViews(this.db);
190
+ }
191
+ }
192
+ ensureActivationColumns() {
193
+ const promptColumns = this.db.prepare("PRAGMA table_info(prompts)").all();
194
+ const promptColumnNames = new Set(promptColumns.map((col) => col.name));
195
+ if (!promptColumnNames.has("active_version_id")) {
196
+ this.db.exec("ALTER TABLE prompts ADD COLUMN active_version_id TEXT");
197
+ }
198
+ if (!promptColumnNames.has("current_version")) {
199
+ this.db.exec("ALTER TABLE prompts ADD COLUMN current_version TEXT");
200
+ this.db.exec(
201
+ "UPDATE prompts SET current_version = active_version_id WHERE current_version IS NULL"
202
+ );
203
+ }
204
+ if (!promptColumnNames.has("tags")) {
205
+ this.db.exec("ALTER TABLE prompts ADD COLUMN tags TEXT NOT NULL DEFAULT '[]'");
206
+ }
207
+ if (!promptColumnNames.has("archived_at")) {
208
+ this.db.exec("ALTER TABLE prompts ADD COLUMN archived_at TEXT");
209
+ }
210
+ if (!promptColumnNames.has("usage_count")) {
211
+ this.db.exec("ALTER TABLE prompts ADD COLUMN usage_count INTEGER DEFAULT 0");
212
+ }
213
+ if (!promptColumnNames.has("last_used_at")) {
214
+ this.db.exec("ALTER TABLE prompts ADD COLUMN last_used_at TEXT");
215
+ }
216
+ const versionColumns = this.db.prepare("PRAGMA table_info(prompt_versions)").all();
217
+ const versionColumnNames = new Set(versionColumns.map((col) => col.name));
218
+ if (!versionColumnNames.has("activated_at")) {
219
+ this.db.exec("ALTER TABLE prompt_versions ADD COLUMN activated_at TEXT");
220
+ }
221
+ if (!versionColumnNames.has("deactivated_at")) {
222
+ this.db.exec("ALTER TABLE prompt_versions ADD COLUMN deactivated_at TEXT");
223
+ }
224
+ if (!versionColumnNames.has("optimization_metadata")) {
225
+ this.db.exec("ALTER TABLE prompt_versions ADD COLUMN optimization_metadata TEXT");
226
+ }
227
+ if (versionColumnNames.has("content_hash")) {
228
+ this.db.exec("CREATE INDEX IF NOT EXISTS idx_versions_hash ON prompt_versions(content_hash)");
229
+ }
230
+ }
231
+ // ============================================================================
232
+ // CRUD Operations
233
+ // ============================================================================
234
+ /**
235
+ * Create a new prompt with initial version
236
+ */
237
+ async createPrompt(input) {
238
+ const MAX_NAME_LENGTH = 255;
239
+ const MAX_DESCRIPTION_LENGTH = 1e3;
240
+ const MAX_CONTENT_SIZE = 10 * 1024 * 1024;
241
+ if (!input.name || input.name.trim().length === 0) {
242
+ throw new Error("Prompt name cannot be empty");
243
+ }
244
+ if (input.name.length > MAX_NAME_LENGTH) {
245
+ throw new Error(`Prompt name too long (max ${MAX_NAME_LENGTH} characters)`);
246
+ }
247
+ if (input.description && input.description.length > MAX_DESCRIPTION_LENGTH) {
248
+ throw new Error(`Description too long (max ${MAX_DESCRIPTION_LENGTH} characters)`);
249
+ }
250
+ if (input.initialContent.length > MAX_CONTENT_SIZE) {
251
+ throw new Error(
252
+ `Content too large (max ${MAX_CONTENT_SIZE / 1024 / 1024}MB, got ${(input.initialContent.length / 1024 / 1024).toFixed(2)}MB)`
253
+ );
254
+ }
255
+ const promptId = this.generateId("prompt");
256
+ const versionId = this.generateId("version");
257
+ const now = (/* @__PURE__ */ new Date()).toISOString();
258
+ const contentHash = crypto.createHash("sha256").update(input.initialContent).digest("hex");
259
+ if (!this.hasInlineContent) {
260
+ this.writeSideFile(promptId, versionId, input.initialContent);
261
+ }
262
+ try {
263
+ this.db.transaction(() => {
264
+ if (this.hasInlineContent) {
265
+ this.db.prepare(
266
+ `INSERT INTO prompts (id, name, description, category, active_version_id, created_at, updated_at)
267
+ VALUES (?, ?, ?, ?, ?, ?, ?)`
268
+ ).run(
269
+ promptId,
270
+ input.name,
271
+ input.description || null,
272
+ input.category || null,
273
+ versionId,
274
+ now,
275
+ now
276
+ );
277
+ this.db.prepare(
278
+ `INSERT INTO prompt_versions (id, prompt_id, version_number, content, created_by, is_active, created_at)
279
+ VALUES (?, ?, 1, ?, ?, 1, ?)`
280
+ ).run(versionId, promptId, input.initialContent, input.createdBy || "user", now);
281
+ } else {
282
+ this.db.prepare(
283
+ `INSERT INTO prompts
284
+ (id, name, description, category, status, tags, current_version, active_version_id,
285
+ created_at, updated_at)
286
+ VALUES (?, ?, ?, ?, 'active', '[]', ?, ?, ?, ?)`
287
+ ).run(
288
+ promptId,
289
+ input.name,
290
+ input.description || "",
291
+ input.category || "adhoc",
292
+ versionId,
293
+ versionId,
294
+ now,
295
+ now
296
+ );
297
+ this.db.prepare(
298
+ `INSERT INTO prompt_versions
299
+ (id, prompt_id, content_hash, author, generated_by, is_active, created_at, activated_at)
300
+ VALUES (?, ?, ?, ?, ?, 1, ?, ?)`
301
+ ).run(
302
+ versionId,
303
+ promptId,
304
+ contentHash,
305
+ input.createdBy || "user",
306
+ input.createdBy || "user",
307
+ now,
308
+ now
309
+ );
310
+ }
311
+ })();
312
+ } catch (err) {
313
+ if (!this.hasInlineContent) {
314
+ this.removeSideFile(promptId, versionId);
315
+ }
316
+ const message = err instanceof Error ? err.message : String(err);
317
+ if (message.includes("UNIQUE constraint failed: prompts.name") || message.includes("UNIQUE constraint failed: prompts.name, prompts.category")) {
318
+ throw new Error(`Prompt "${input.name}" already exists`);
319
+ }
320
+ throw err;
321
+ }
322
+ const prompt = await this.getPromptById(promptId);
323
+ const version = await this.getVersion(versionId);
324
+ return { prompt, version };
325
+ }
326
+ writeSideFile(promptId, versionId, content) {
327
+ if (!fs.existsSync(this.activeContentDir)) {
328
+ fs.mkdirSync(this.activeContentDir, { recursive: true });
329
+ }
330
+ const target = path.join(this.activeContentDir, `${promptId}-${versionId}.txt`);
331
+ fs.writeFileSync(target, content, "utf8");
332
+ }
333
+ removeSideFile(promptId, versionId) {
334
+ for (const directory of [this.activeContentDir, this.archivedContentDir]) {
335
+ try {
336
+ const target = path.join(directory, `${promptId}-${versionId}.txt`);
337
+ if (fs.existsSync(target)) fs.unlinkSync(target);
338
+ } catch {
339
+ }
340
+ }
341
+ }
342
+ /**
343
+ * Get prompt by name
344
+ */
345
+ async getPrompt(name) {
346
+ const stmt = this.db.prepare("SELECT * FROM prompts WHERE name = ?");
347
+ const row = stmt.get(name);
348
+ if (!row) {
349
+ return null;
350
+ }
351
+ return this.rowToPrompt(row);
352
+ }
353
+ /**
354
+ * Get or create an adhoc prompt (e.g. `adhoc-<hash>`) with a real prompt + active version row.
355
+ *
356
+ * This is used to ensure ExecutionTracker can record prompt executions without FK violations
357
+ * when `poetic compete` is run without `--prompt`/`--save-as`.
358
+ */
359
+ async getOrCreateAdhoc(adhocId, opts) {
360
+ const existing = await this.getPrompt(adhocId);
361
+ if (existing) {
362
+ const active = await this.getActiveVersion(existing.id);
363
+ if (active) {
364
+ return { promptId: existing.id, versionId: active.id };
365
+ }
366
+ const newVersion = await this.createVersion({
367
+ promptId: existing.id,
368
+ content: opts.content,
369
+ createdBy: "user"
370
+ });
371
+ await this.activateVersion(existing.id, newVersion.id, { skipSafetyChecks: true });
372
+ return { promptId: existing.id, versionId: newVersion.id };
373
+ }
374
+ try {
375
+ const { prompt, version } = await this.createPrompt({
376
+ name: adhocId,
377
+ initialContent: opts.content,
378
+ category: opts.category || "adhoc",
379
+ description: "Adhoc prompt from compete execution",
380
+ createdBy: "user"
381
+ });
382
+ return { promptId: prompt.id, versionId: version.id };
383
+ } catch (err) {
384
+ const message = err instanceof Error ? err.message : String(err);
385
+ if (!message.includes("already exists")) {
386
+ throw err;
387
+ }
388
+ const winner = await this.getPrompt(adhocId);
389
+ if (!winner) {
390
+ throw err;
391
+ }
392
+ const active = await this.getActiveVersion(winner.id);
393
+ if (!active) {
394
+ throw new Error(`Adhoc prompt ${adhocId} exists but has no active version`);
395
+ }
396
+ return { promptId: winner.id, versionId: active.id };
397
+ }
398
+ }
399
+ /**
400
+ * Get prompt by ID
401
+ */
402
+ async getPromptById(id) {
403
+ const stmt = this.db.prepare("SELECT * FROM prompts WHERE id = ?");
404
+ const row = stmt.get(id);
405
+ if (!row) {
406
+ return null;
407
+ }
408
+ return this.rowToPrompt(row);
409
+ }
410
+ /**
411
+ * List all prompts with optional filters
412
+ */
413
+ async listPrompts(filters) {
414
+ let query = "SELECT * FROM prompts";
415
+ const params = [];
416
+ if (filters?.category) {
417
+ query += " WHERE category = ?";
418
+ params.push(filters.category);
419
+ }
420
+ query += " ORDER BY updated_at DESC";
421
+ const stmt = this.db.prepare(query);
422
+ const rows = stmt.all(...params);
423
+ return rows.map((row) => this.rowToPrompt(row));
424
+ }
425
+ /**
426
+ * Delete prompt and all versions
427
+ */
428
+ async deletePrompt(id) {
429
+ const versions = this.hasInlineContent ? [] : this.db.prepare("SELECT id FROM prompt_versions WHERE prompt_id = ?").all(id);
430
+ const stmt = this.db.prepare("DELETE FROM prompts WHERE id = ?");
431
+ const result = stmt.run(id);
432
+ if (result.changes === 0) {
433
+ throw new Error(`Prompt ${id} not found`);
434
+ }
435
+ for (const version of versions) {
436
+ this.removeSideFile(id, version.id);
437
+ }
438
+ }
439
+ // ============================================================================
440
+ // Version Management
441
+ // ============================================================================
442
+ /**
443
+ * Create a new version of a prompt
444
+ */
445
+ async createVersion(input) {
446
+ const MAX_CONTENT_SIZE = 10 * 1024 * 1024;
447
+ if (input.content.length > MAX_CONTENT_SIZE) {
448
+ throw new Error(
449
+ `Content too large (max ${MAX_CONTENT_SIZE / 1024 / 1024}MB, got ${(input.content.length / 1024 / 1024).toFixed(2)}MB)`
450
+ );
451
+ }
452
+ const versionId = this.generateId("version");
453
+ const now = (/* @__PURE__ */ new Date()).toISOString();
454
+ const contentHash = crypto.createHash("sha256").update(input.content).digest("hex");
455
+ if (input.parentVersionId) {
456
+ const parentRow = this.db.prepare("SELECT prompt_id FROM prompt_versions WHERE id = ?").get(input.parentVersionId);
457
+ if (parentRow && parentRow.prompt_id !== input.promptId) {
458
+ throw new Error(`parentVersionId "${input.parentVersionId}" belongs to a different prompt`);
459
+ }
460
+ }
461
+ if (!this.hasInlineContent) {
462
+ this.writeSideFile(input.promptId, versionId, input.content);
463
+ }
464
+ try {
465
+ if (this.hasInlineContent) {
466
+ const maxRow = this.db.prepare(
467
+ "SELECT MAX(version_number) as max_version FROM prompt_versions WHERE prompt_id = ?"
468
+ ).get(input.promptId);
469
+ const versionNumber = (maxRow?.max_version ?? 0) + 1;
470
+ this.db.prepare(
471
+ `INSERT INTO prompt_versions (
472
+ id, prompt_id, version_number, content, created_by, parent_version_id,
473
+ optimization_metadata, is_active, created_at
474
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, 0, ?)`
475
+ ).run(
476
+ versionId,
477
+ input.promptId,
478
+ versionNumber,
479
+ input.content,
480
+ input.createdBy,
481
+ input.parentVersionId || null,
482
+ input.optimizationMetadata ? JSON.stringify(input.optimizationMetadata) : null,
483
+ now
484
+ );
485
+ } else {
486
+ if (this.hasOptimizationMetadataColumn) {
487
+ this.db.prepare(
488
+ `INSERT INTO prompt_versions (
489
+ id, prompt_id, content_hash, author, generated_by, parent_version_id,
490
+ optimization_metadata, is_active, created_at
491
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, 0, ?)`
492
+ ).run(
493
+ versionId,
494
+ input.promptId,
495
+ contentHash,
496
+ input.createdBy,
497
+ input.createdBy,
498
+ input.parentVersionId || null,
499
+ input.optimizationMetadata ? JSON.stringify(input.optimizationMetadata) : null,
500
+ now
501
+ );
502
+ } else {
503
+ this.db.prepare(
504
+ `INSERT INTO prompt_versions (
505
+ id, prompt_id, content_hash, author, generated_by, parent_version_id,
506
+ is_active, created_at
507
+ ) VALUES (?, ?, ?, ?, ?, ?, 0, ?)`
508
+ ).run(
509
+ versionId,
510
+ input.promptId,
511
+ contentHash,
512
+ input.createdBy,
513
+ input.createdBy,
514
+ input.parentVersionId || null,
515
+ now
516
+ );
517
+ }
518
+ }
519
+ } catch (err) {
520
+ if (!this.hasInlineContent) this.removeSideFile(input.promptId, versionId);
521
+ throw err;
522
+ }
523
+ return await this.getVersion(versionId);
524
+ }
525
+ /**
526
+ * Get version by ID
527
+ */
528
+ async getVersion(versionId) {
529
+ const stmt = this.db.prepare("SELECT rowid AS rowid, * FROM prompt_versions WHERE id = ?");
530
+ const row = stmt.get(versionId);
531
+ if (!row) {
532
+ return null;
533
+ }
534
+ return this.rowToVersion(row);
535
+ }
536
+ /**
537
+ * Get all versions for a prompt, ordered newest-first.
538
+ *
539
+ * Uses version_number when available (legacy inline schema), otherwise falls back to SQLite
540
+ * insertion order, which matches the order rowToVersion uses to synthesize numbers.
541
+ */
542
+ async getVersionHistory(promptId) {
543
+ const orderClause = this.hasVersionNumberColumn ? "ORDER BY version_number DESC" : "ORDER BY rowid DESC";
544
+ const stmt = this.db.prepare(
545
+ `SELECT rowid AS rowid, * FROM prompt_versions WHERE prompt_id = ? ${orderClause}`
546
+ );
547
+ const rows = stmt.all(promptId);
548
+ if (this.hasVersionNumberColumn) {
549
+ return rows.map((row) => this.rowToVersion(row));
550
+ }
551
+ const versionNumbers = new Map(
552
+ [...rows].sort((left, right) => {
553
+ const leftRowId = left.rowid ?? 0;
554
+ const rightRowId = right.rowid ?? 0;
555
+ return leftRowId - rightRowId;
556
+ }).map((row, index) => [row.id, index + 1])
557
+ );
558
+ return [...rows].map((row) => this.rowToVersion(row, versionNumbers.get(row.id))).sort((left, right) => right.versionNumber - left.versionNumber);
559
+ }
560
+ /**
561
+ * Resolve a durable version ID or a legacy numeric display selector.
562
+ *
563
+ * String IDs are the stable public identity. Numeric selectors (`2`/`v2`) remain a
564
+ * compatibility convenience and are deliberately resolved only within the prompt.
565
+ */
566
+ async resolveVersionSelector(promptId, selector) {
567
+ const normalized = String(selector).trim();
568
+ if (!normalized) return null;
569
+ const scopedRow = this.db.prepare("SELECT rowid AS rowid, * FROM prompt_versions WHERE prompt_id = ? AND id = ?").get(promptId, normalized);
570
+ if (scopedRow) {
571
+ return this.rowToVersion(scopedRow);
572
+ }
573
+ const numericMatch = /^v?([1-9]\d*)$/.exec(normalized);
574
+ if (!numericMatch) return null;
575
+ const versionNumber = Number.parseInt(numericMatch[1], 10);
576
+ const versions = await this.getVersionHistory(promptId);
577
+ return versions.find((version) => version.versionNumber === versionNumber) ?? null;
578
+ }
579
+ /**
580
+ * Get version lineage (parent chain)
581
+ */
582
+ async getVersionLineage(versionId) {
583
+ const lineage = [];
584
+ let currentId = versionId;
585
+ while (currentId) {
586
+ const version = await this.getVersion(currentId);
587
+ if (!version) break;
588
+ lineage.push(version);
589
+ currentId = version.parentVersionId;
590
+ }
591
+ return lineage;
592
+ }
593
+ /**
594
+ * Get active version for a prompt
595
+ */
596
+ async getActiveVersion(promptId) {
597
+ const stmt = this.db.prepare(
598
+ "SELECT rowid AS rowid, * FROM prompt_versions WHERE prompt_id = ? AND is_active = 1"
599
+ );
600
+ const row = stmt.get(promptId);
601
+ if (!row) {
602
+ return null;
603
+ }
604
+ return this.rowToVersion(row);
605
+ }
606
+ /**
607
+ * Get the version that immediately precedes the active one in creation order.
608
+ *
609
+ * Walks getVersionHistory (newest-first) instead of looking up a specific version_number,
610
+ * which the canonical hash-and-file schema does not store.
611
+ */
612
+ async getPreviousVersion(promptId) {
613
+ const active = await this.getActiveVersion(promptId);
614
+ if (!active) {
615
+ return null;
616
+ }
617
+ if (active.parentVersionId) {
618
+ const parent = await this.getVersion(active.parentVersionId);
619
+ if (parent) {
620
+ return parent;
621
+ }
622
+ }
623
+ const history = await this.getVersionHistory(promptId);
624
+ const activeIndex = history.findIndex((v) => v.isActive);
625
+ if (activeIndex < 0 || activeIndex >= history.length - 1) {
626
+ return null;
627
+ }
628
+ return history[activeIndex + 1] ?? null;
629
+ }
630
+ // ============================================================================
631
+ // Activation & Safety
632
+ // ============================================================================
633
+ /**
634
+ * Activate a version with safety checks
635
+ */
636
+ async activateVersion(promptId, versionId, options) {
637
+ this.db.transaction(() => {
638
+ const versionStmt = this.db.prepare("SELECT * FROM prompt_versions WHERE id = ?");
639
+ const versionRow = versionStmt.get(versionId);
640
+ if (!versionRow) {
641
+ throw new Error(`Version ${versionId} not found`);
642
+ }
643
+ if (versionRow.prompt_id !== promptId) {
644
+ throw new Error(`Version ${versionId} does not belong to prompt ${promptId}`);
645
+ }
646
+ if (!options?.skipSafetyChecks) {
647
+ const candidateMetrics = this.executionTracker.getMetrics(promptId, versionId);
648
+ if (!candidateMetrics || candidateMetrics.completedExecutions < this.MIN_EXECUTIONS) {
649
+ const execCount = candidateMetrics?.completedExecutions || 0;
650
+ throw new Error(
651
+ `Activation blocked: Need at least ${this.MIN_EXECUTIONS} executions (have ${execCount})`
652
+ );
653
+ }
654
+ if (candidateMetrics.avgSuccessRate < this.MIN_SUCCESS_RATE) {
655
+ throw new Error(
656
+ `Activation blocked: Success rate ${(candidateMetrics.avgSuccessRate * 100).toFixed(1)}% below threshold ${(this.MIN_SUCCESS_RATE * 100).toFixed(0)}%`
657
+ );
658
+ }
659
+ const promptStmt = this.db.prepare("SELECT active_version_id FROM prompts WHERE id = ?");
660
+ const promptRow = promptStmt.get(promptId);
661
+ if (promptRow?.active_version_id) {
662
+ const currentMetrics = this.executionTracker.getMetrics(
663
+ promptId,
664
+ promptRow.active_version_id
665
+ );
666
+ if (currentMetrics) {
667
+ const qualityDelta = candidateMetrics.avgCompleteness - currentMetrics.avgCompleteness;
668
+ if (qualityDelta < -this.MAX_QUALITY_REGRESSION) {
669
+ throw new Error(
670
+ `Activation blocked: Quality regression ${qualityDelta.toFixed(1)}% drop in completeness`
671
+ );
672
+ }
673
+ if (currentMetrics.totalCostStatus === "complete" && candidateMetrics.totalCostStatus === "complete" && currentMetrics.totalCost !== void 0 && candidateMetrics.totalCost !== void 0) {
674
+ const currentAvgCost = currentMetrics.totalCost / Math.max(1, currentMetrics.completedExecutions);
675
+ const candidateAvgCost = candidateMetrics.totalCost / Math.max(1, candidateMetrics.completedExecutions);
676
+ if (currentAvgCost > 0) {
677
+ const costMultiplier = candidateAvgCost / currentAvgCost;
678
+ if (costMultiplier > this.MAX_COST_MULTIPLIER) {
679
+ throw new Error(
680
+ `Activation blocked: Cost increase ${costMultiplier.toFixed(1)}x exceeds ${this.MAX_COST_MULTIPLIER}x threshold`
681
+ );
682
+ }
683
+ }
684
+ }
685
+ }
686
+ }
687
+ }
688
+ performActivation(this.db, { promptId, versionId });
689
+ })();
690
+ }
691
+ /**
692
+ * Rollback to a specific version
693
+ */
694
+ async rollbackToVersion(promptId, targetVersionId) {
695
+ await this.activateVersion(promptId, targetVersionId, { skipSafetyChecks: true });
696
+ }
697
+ // ============================================================================
698
+ // Metrics Integration
699
+ // ============================================================================
700
+ /**
701
+ * Record execution for a prompt version
702
+ * (Delegates to ExecutionTracker)
703
+ */
704
+ async recordExecution(input) {
705
+ return this.executionTracker.startExecution(input);
706
+ }
707
+ /**
708
+ * Get execution metrics for a prompt version
709
+ * (Delegates to ExecutionTracker)
710
+ */
711
+ getExecutionMetrics(promptId, versionId) {
712
+ return this.executionTracker.getMetrics(promptId, versionId);
713
+ }
714
+ /**
715
+ * Get all executions for a prompt version
716
+ */
717
+ getExecutions(promptId, versionId) {
718
+ return this.executionTracker.getExecutions(promptId, versionId);
719
+ }
720
+ // ============================================================================
721
+ // Lifecycle
722
+ // ============================================================================
723
+ /**
724
+ * Close database connection (only if owned)
725
+ */
726
+ close() {
727
+ this.executionTracker.close();
728
+ if (this.ownsDb) {
729
+ this.db.close();
730
+ }
731
+ }
732
+ /**
733
+ * Get database path (for testing)
734
+ */
735
+ getDatabasePath() {
736
+ return this.dbPath;
737
+ }
738
+ // ============================================================================
739
+ // Private Helpers
740
+ // ============================================================================
741
+ generateId(prefix) {
742
+ return `${prefix}-${Date.now()}-${crypto.randomBytes(4).toString("hex")}`;
743
+ }
744
+ rowToPrompt(row) {
745
+ return {
746
+ id: row.id,
747
+ name: row.name,
748
+ description: row.description || void 0,
749
+ category: row.category || void 0,
750
+ activeVersionId: row.active_version_id || void 0,
751
+ createdAt: row.created_at,
752
+ updatedAt: row.updated_at
753
+ };
754
+ }
755
+ rowToVersion(row, versionNumberOverride) {
756
+ const createdByRaw = row.created_by ?? row.generated_by ?? row.author ?? "user";
757
+ const createdBy = createdByRaw === "auto-optimizer" || createdByRaw === "variant-generator" ? createdByRaw : "user";
758
+ let content = row.content;
759
+ if (content === void 0 || content === null) {
760
+ content = this.hydrateContentFromFile(row.prompt_id, row.id);
761
+ }
762
+ let versionNumber = versionNumberOverride ?? row.version_number;
763
+ if (typeof versionNumber !== "number") {
764
+ versionNumber = this.computeVersionNumber(row.prompt_id, row.id);
765
+ }
766
+ return {
767
+ id: row.id,
768
+ promptId: row.prompt_id,
769
+ versionNumber,
770
+ content,
771
+ createdBy,
772
+ parentVersionId: row.parent_version_id || void 0,
773
+ optimizationMetadata: row.optimization_metadata ? parseJsonWithContext(
774
+ row.optimization_metadata,
775
+ "PromptVersionStore.optimizationMetadata"
776
+ ) : void 0,
777
+ isActive: row.is_active === 1,
778
+ createdAt: row.created_at
779
+ };
780
+ }
781
+ /**
782
+ * Compute a 1-based version number by ordering all versions of a prompt by insertion order.
783
+ * Used as a fallback when the live schema has no version_number column.
784
+ */
785
+ computeVersionNumber(promptId, versionId) {
786
+ try {
787
+ const rows = this.db.prepare("SELECT id FROM prompt_versions WHERE prompt_id = ? ORDER BY rowid ASC").all(promptId);
788
+ const idx = rows.findIndex((r) => r.id === versionId);
789
+ return idx >= 0 ? idx + 1 : 1;
790
+ } catch {
791
+ return 1;
792
+ }
793
+ }
794
+ /**
795
+ * Resolve a prompt by either its id or its name. Prefers id (exact PK match), falls back to name.
796
+ *
797
+ * The CLI's prompt list output exposes `id`, but compete --prompt previously only resolved by
798
+ * name. This unifies both paths so users can pass either identifier.
799
+ */
800
+ async getPromptByIdOrName(idOrName) {
801
+ const byId = await this.getPromptById(idOrName);
802
+ if (byId) return byId;
803
+ return this.getPrompt(idOrName);
804
+ }
805
+ };
806
+
807
+ export {
808
+ PromptVersionStore
809
+ };
810
+ //# sourceMappingURL=chunk-LR5IJIGV.js.map