@poetic-ai/poetic 1.42.1-bootstrap.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (781) hide show
  1. package/.github/SECURITY.md +47 -0
  2. package/.nvmrc +1 -0
  3. package/.poetic/README.md +37 -0
  4. package/.poetic/providers/catalog.json +12051 -0
  5. package/.poetic/providers/pricing.json +1272 -0
  6. package/.poetic/providers/registry.json +3369 -0
  7. package/CHANGELOG.md +552 -0
  8. package/CODE_OF_CONDUCT.md +40 -0
  9. package/CONTRIBUTING.md +23 -0
  10. package/INSTALL.md +454 -0
  11. package/LICENSE +21 -0
  12. package/README.md +474 -0
  13. package/dist/BasicOptimizationCompetitionRunner-5H5TBYO4.js +153 -0
  14. package/dist/ExecutionTracker-UVONC4C6.js +16 -0
  15. package/dist/OptimizationConfig-7DFY2TST.js +17 -0
  16. package/dist/OptimizationEngine-MXTSOSST.js +1597 -0
  17. package/dist/PromptStore-U6ZD3ZMQ.js +18 -0
  18. package/dist/actions-M3AESHFF.js +322 -0
  19. package/dist/agent-ingest-HO77TH26.js +53 -0
  20. package/dist/aggregator-DNCBINFO.js +12 -0
  21. package/dist/ai-judge-LDWHURKK.js +156 -0
  22. package/dist/allowlist-grounding-RO6HKUFI.js +16 -0
  23. package/dist/allowlist-utils-23V7TJ3G.js +28 -0
  24. package/dist/anchored-turn-service-GFYU6GCQ.js +489 -0
  25. package/dist/api-transport-FS3CQRMN.js +1087 -0
  26. package/dist/apply-completion-mode-JBT2CTQO.js +89 -0
  27. package/dist/artifact-migrator-23L45ISD.js +267 -0
  28. package/dist/ask-UYVZY7JH.js +135 -0
  29. package/dist/auth-CSQP5RHJ.js +67 -0
  30. package/dist/auth-E6XUNZ5M.js +68 -0
  31. package/dist/auth-KQLJPZ2E.js +134 -0
  32. package/dist/auth-OC4E6633.js +71 -0
  33. package/dist/auth-R3NQ2ZF5.js +78 -0
  34. package/dist/auth-S4CTX4GQ.js +44 -0
  35. package/dist/auth-YLH3S7EY.js +69 -0
  36. package/dist/auth-liveness-TDDEZY3T.js +46 -0
  37. package/dist/auto-optimizer-HA3T23SF.js +80 -0
  38. package/dist/autoloop-cleanup-JOGKTLWA.js +109 -0
  39. package/dist/autoloop-evidence-gates-ACB5YW5G.js +36 -0
  40. package/dist/autoloop-gate-policy-XZA5EQFN.js +175 -0
  41. package/dist/autoloop-helpers-EFJLBQUP.js +22 -0
  42. package/dist/autoloop-ledger-W7QO62PX.js +96 -0
  43. package/dist/autoloop-ledger-subscriber-Z5RW5EIE.js +162 -0
  44. package/dist/autoloop-run-defaults-FERGRZGP.js +19 -0
  45. package/dist/autoloop-run-lock-CT2NWSV3.js +197 -0
  46. package/dist/autoloop-success-OPR74YEX.js +85 -0
  47. package/dist/autoloop-termination-summary-RN75F422.js +58 -0
  48. package/dist/autoloop-trajectory-K5I45UBR.js +282 -0
  49. package/dist/autoloop-wall-clock-T7ZVIQOC.js +12 -0
  50. package/dist/autonomous-loop-controller-4QJMOIIN.js +4120 -0
  51. package/dist/backend-P3DAYRP7.js +29 -0
  52. package/dist/background-executor-CBN552V4.js +257 -0
  53. package/dist/backlog-execution-intent-U4XYPTV6.js +15 -0
  54. package/dist/backup-active-store-5WXG6SXT.js +17 -0
  55. package/dist/backup-telemetry-db-XGLXAA3N.js +254 -0
  56. package/dist/basic-competition-master-WXZHUT42.js +344 -0
  57. package/dist/branch-archive-manager-RP6FP3ZC.js +254 -0
  58. package/dist/branch-cleanup-manager-RSHAI7YR.js +20 -0
  59. package/dist/build-gate-YFASRB5Z.js +71 -0
  60. package/dist/change-summary-WY7J5TOX.js +33 -0
  61. package/dist/chunk-25QL3M3L.js +899 -0
  62. package/dist/chunk-2ABC6SEC.js +2626 -0
  63. package/dist/chunk-2AICM4P3.js +1763 -0
  64. package/dist/chunk-2AQUWJPW.js +225 -0
  65. package/dist/chunk-2DY5KNVM.js +276 -0
  66. package/dist/chunk-2QJ3H3L7.js +42 -0
  67. package/dist/chunk-2UH6VQRZ.js +328 -0
  68. package/dist/chunk-2VSQMRCB.js +18 -0
  69. package/dist/chunk-2XQXYBM2.js +130 -0
  70. package/dist/chunk-2YFUIER7.js +426 -0
  71. package/dist/chunk-2YXZCZTX.js +1160 -0
  72. package/dist/chunk-32VLDFRT.js +797 -0
  73. package/dist/chunk-34CNP2HB.js +148 -0
  74. package/dist/chunk-35P3W3JX.js +456 -0
  75. package/dist/chunk-36PEBZAF.js +18 -0
  76. package/dist/chunk-3733QTI7.js +6818 -0
  77. package/dist/chunk-3A5PDH5L.js +12513 -0
  78. package/dist/chunk-3AOKYKA7.js +22 -0
  79. package/dist/chunk-3BCUNHKF.js +475 -0
  80. package/dist/chunk-3C26DPFK.js +566 -0
  81. package/dist/chunk-3FLXLLB7.js +26 -0
  82. package/dist/chunk-3FOZ2VHV.js +100 -0
  83. package/dist/chunk-3G6FZCRF.js +106 -0
  84. package/dist/chunk-3JWNRJSB.js +736 -0
  85. package/dist/chunk-3LUMR3D3.js +156 -0
  86. package/dist/chunk-3M57DADF.js +44 -0
  87. package/dist/chunk-3S62LLWJ.js +543 -0
  88. package/dist/chunk-3VABAKT2.js +1784 -0
  89. package/dist/chunk-44N5WZZH.js +45 -0
  90. package/dist/chunk-45FPSA3B.js +125 -0
  91. package/dist/chunk-4BIPZBT7.js +791 -0
  92. package/dist/chunk-4BJ3O4RQ.js +929 -0
  93. package/dist/chunk-4BTDUT2S.js +42 -0
  94. package/dist/chunk-4CSS7WVI.js +143 -0
  95. package/dist/chunk-4CUY7AFY.js +247 -0
  96. package/dist/chunk-4HN6DF7V.js +1027 -0
  97. package/dist/chunk-4HXKHDNH.js +1064 -0
  98. package/dist/chunk-4KKI477Q.js +44 -0
  99. package/dist/chunk-4NA7FSTV.js +595 -0
  100. package/dist/chunk-4NXPXE62.js +84 -0
  101. package/dist/chunk-4SALLK63.js +9831 -0
  102. package/dist/chunk-4SHKPCGK.js +110 -0
  103. package/dist/chunk-4VJITV4P.js +445 -0
  104. package/dist/chunk-4W2NRXQL.js +1205 -0
  105. package/dist/chunk-4XICK3HN.js +784 -0
  106. package/dist/chunk-55EJVV3C.js +385 -0
  107. package/dist/chunk-5DLKYTQX.js +4003 -0
  108. package/dist/chunk-5EERLVZB.js +139 -0
  109. package/dist/chunk-5HDP7XZG.js +91 -0
  110. package/dist/chunk-5LAMRH4X.js +969 -0
  111. package/dist/chunk-5REDMNLZ.js +310 -0
  112. package/dist/chunk-5UCJARII.js +1984 -0
  113. package/dist/chunk-5WCQRDRB.js +588 -0
  114. package/dist/chunk-5WRLK5KW.js +700 -0
  115. package/dist/chunk-66AGFTBQ.js +131 -0
  116. package/dist/chunk-66CIO2SV.js +48 -0
  117. package/dist/chunk-6BM72ZMG.js +31 -0
  118. package/dist/chunk-6BTFXYRO.js +276 -0
  119. package/dist/chunk-6EDAJH2I.js +68 -0
  120. package/dist/chunk-6EQKFDBH.js +457 -0
  121. package/dist/chunk-6KMJKHIQ.js +2193 -0
  122. package/dist/chunk-6MFRHTRI.js +115 -0
  123. package/dist/chunk-6QMUKUHH.js +632 -0
  124. package/dist/chunk-6TZJRKNW.js +321 -0
  125. package/dist/chunk-6V7HGQFZ.js +20 -0
  126. package/dist/chunk-6Y5TWI7H.js +146 -0
  127. package/dist/chunk-6Y5U7UFY.js +91 -0
  128. package/dist/chunk-6ZLAK3XG.js +14 -0
  129. package/dist/chunk-72XCRQED.js +34 -0
  130. package/dist/chunk-72YTZMAM.js +589 -0
  131. package/dist/chunk-73NCTWKL.js +188 -0
  132. package/dist/chunk-77I6G4CO.js +1 -0
  133. package/dist/chunk-7D7QT3BE.js +688 -0
  134. package/dist/chunk-7DNSNKJV.js +78 -0
  135. package/dist/chunk-7FMJVYBS.js +307 -0
  136. package/dist/chunk-7GDRQBQC.js +419 -0
  137. package/dist/chunk-7IL4A2PP.js +948 -0
  138. package/dist/chunk-7NPSXSHO.js +975 -0
  139. package/dist/chunk-7PS6INZP.js +302 -0
  140. package/dist/chunk-7QCZSLBH.js +1 -0
  141. package/dist/chunk-7R2WLDOS.js +62 -0
  142. package/dist/chunk-7XV3QXLT.js +878 -0
  143. package/dist/chunk-A2WKSVX7.js +43 -0
  144. package/dist/chunk-A3YGID55.js +133 -0
  145. package/dist/chunk-A5MRWHMI.js +1604 -0
  146. package/dist/chunk-A722DEVA.js +14 -0
  147. package/dist/chunk-AG2Z2SUZ.js +554 -0
  148. package/dist/chunk-AHWAZ2MU.js +137 -0
  149. package/dist/chunk-AIAQ3HS3.js +119 -0
  150. package/dist/chunk-ALAB3PBR.js +2206 -0
  151. package/dist/chunk-APPNGGN7.js +365 -0
  152. package/dist/chunk-APV6MK5E.js +137 -0
  153. package/dist/chunk-AQNPGRWS.js +395 -0
  154. package/dist/chunk-ASEP3M2W.js +968 -0
  155. package/dist/chunk-AT4TNPWW.js +2931 -0
  156. package/dist/chunk-ATVKCSGT.js +250 -0
  157. package/dist/chunk-AX6GWE7V.js +47 -0
  158. package/dist/chunk-AZQILSNQ.js +1376 -0
  159. package/dist/chunk-B76KHLX6.js +13 -0
  160. package/dist/chunk-BAV2HJXS.js +194 -0
  161. package/dist/chunk-BBHRN366.js +89 -0
  162. package/dist/chunk-BCZAENOH.js +448 -0
  163. package/dist/chunk-BIGSACCY.js +19527 -0
  164. package/dist/chunk-BPYMCIVD.js +9243 -0
  165. package/dist/chunk-BSE4R6XD.js +322 -0
  166. package/dist/chunk-BVPWRDCO.js +2321 -0
  167. package/dist/chunk-BXI4NXL3.js +507 -0
  168. package/dist/chunk-C3L6YQ7P.js +147 -0
  169. package/dist/chunk-C57KJOUQ.js +121 -0
  170. package/dist/chunk-CCV7BPSY.js +118 -0
  171. package/dist/chunk-CD7ISXA4.js +826 -0
  172. package/dist/chunk-CE5OZBYY.js +21 -0
  173. package/dist/chunk-CFBIG37O.js +154 -0
  174. package/dist/chunk-CHQV73H5.js +408 -0
  175. package/dist/chunk-CJC6GZ46.js +457 -0
  176. package/dist/chunk-CJHRFSNY.js +924 -0
  177. package/dist/chunk-CKP2Q3TP.js +1905 -0
  178. package/dist/chunk-CLKSETWE.js +10 -0
  179. package/dist/chunk-CQM3A35X.js +844 -0
  180. package/dist/chunk-CSLAS5GW.js +4007 -0
  181. package/dist/chunk-CTLUBNCW.js +622 -0
  182. package/dist/chunk-CVMVZWG4.js +3544 -0
  183. package/dist/chunk-CYB6QDCT.js +263 -0
  184. package/dist/chunk-D5EP5D2W.js +26 -0
  185. package/dist/chunk-DC4ZYMXJ.js +115 -0
  186. package/dist/chunk-DCAVAABI.js +348 -0
  187. package/dist/chunk-DCYF7EKG.js +26 -0
  188. package/dist/chunk-DF5SLDE4.js +966 -0
  189. package/dist/chunk-DN7UMLF7.js +5678 -0
  190. package/dist/chunk-DSFM56OA.js +1203 -0
  191. package/dist/chunk-DTY4APYV.js +218 -0
  192. package/dist/chunk-E3NTPHEO.js +194 -0
  193. package/dist/chunk-E74LUIID.js +302 -0
  194. package/dist/chunk-EJ42BNGY.js +2904 -0
  195. package/dist/chunk-EJ4ZAWLV.js +305 -0
  196. package/dist/chunk-EJGCZGUF.js +1483 -0
  197. package/dist/chunk-EK2U3YEG.js +486 -0
  198. package/dist/chunk-ELMFYNV7.js +109 -0
  199. package/dist/chunk-ENRGKNR5.js +25 -0
  200. package/dist/chunk-EQGIDAUF.js +62 -0
  201. package/dist/chunk-EX3OM35G.js +20414 -0
  202. package/dist/chunk-F5JO7HAS.js +94 -0
  203. package/dist/chunk-F7ER6ANO.js +174 -0
  204. package/dist/chunk-FATUVIIN.js +374 -0
  205. package/dist/chunk-FC23CTXV.js +322 -0
  206. package/dist/chunk-FCNAS3W2.js +1033 -0
  207. package/dist/chunk-FD4ERYEG.js +22 -0
  208. package/dist/chunk-FDVZLG6Z.js +3104 -0
  209. package/dist/chunk-FEPIFY7D.js +511 -0
  210. package/dist/chunk-FEQ4HXL7.js +412 -0
  211. package/dist/chunk-FFH5HHJU.js +5351 -0
  212. package/dist/chunk-FH7WOJAE.js +79 -0
  213. package/dist/chunk-FKAUPHMR.js +96 -0
  214. package/dist/chunk-FRG57FPM.js +240 -0
  215. package/dist/chunk-FUVP64ER.js +31 -0
  216. package/dist/chunk-G2PTLLEL.js +284 -0
  217. package/dist/chunk-G35UYQ6Z.js +69 -0
  218. package/dist/chunk-G36W2T2S.js +1143 -0
  219. package/dist/chunk-G4THLFV3.js +148 -0
  220. package/dist/chunk-GAFJEYLK.js +29 -0
  221. package/dist/chunk-GCCAPO3S.js +118 -0
  222. package/dist/chunk-GG6KJYW6.js +85 -0
  223. package/dist/chunk-GHHFDU2U.js +55 -0
  224. package/dist/chunk-GHTZSQB7.js +57 -0
  225. package/dist/chunk-GJTWJNLV.js +1374 -0
  226. package/dist/chunk-GKN3HMN4.js +2809 -0
  227. package/dist/chunk-GNH3QGTL.js +1342 -0
  228. package/dist/chunk-GOAQ2I7Y.js +7000 -0
  229. package/dist/chunk-GSGD5E4C.js +30 -0
  230. package/dist/chunk-GXWAJQOJ.js +5011 -0
  231. package/dist/chunk-H2AYQIHW.js +224 -0
  232. package/dist/chunk-H6G7QRMQ.js +35 -0
  233. package/dist/chunk-H7JAGHZT.js +59 -0
  234. package/dist/chunk-HAC6EHZZ.js +79 -0
  235. package/dist/chunk-HE2KH6EQ.js +161 -0
  236. package/dist/chunk-HIHENQDX.js +66 -0
  237. package/dist/chunk-HIO33P3G.js +19 -0
  238. package/dist/chunk-HK4AQZSR.js +438 -0
  239. package/dist/chunk-HMVQIPH3.js +547 -0
  240. package/dist/chunk-HOYBYAOA.js +257 -0
  241. package/dist/chunk-HQLGXODD.js +123 -0
  242. package/dist/chunk-HQXYYUNY.js +1231 -0
  243. package/dist/chunk-HY3ESWCA.js +708 -0
  244. package/dist/chunk-I46EG2XQ.js +65 -0
  245. package/dist/chunk-I4NPDSCB.js +279 -0
  246. package/dist/chunk-I5WRT7ZR.js +514 -0
  247. package/dist/chunk-I6BL3PDH.js +1024 -0
  248. package/dist/chunk-IATQ7NBI.js +679 -0
  249. package/dist/chunk-IC7I6YIJ.js +301 -0
  250. package/dist/chunk-IDCSOZVN.js +78 -0
  251. package/dist/chunk-IEXU4RR6.js +5742 -0
  252. package/dist/chunk-IFCBYECK.js +112 -0
  253. package/dist/chunk-IFZCPEY2.js +66 -0
  254. package/dist/chunk-IKFP2KUR.js +48 -0
  255. package/dist/chunk-IP7BYVUV.js +338 -0
  256. package/dist/chunk-IRJ2I6KH.js +166 -0
  257. package/dist/chunk-IUXNGKA6.js +152 -0
  258. package/dist/chunk-IZYIQQ7X.js +53 -0
  259. package/dist/chunk-IZZK3H6I.js +2175 -0
  260. package/dist/chunk-J3J4P7RW.js +353 -0
  261. package/dist/chunk-J62KPGII.js +464 -0
  262. package/dist/chunk-J6P3FWWW.js +130 -0
  263. package/dist/chunk-JD6SIZED.js +712 -0
  264. package/dist/chunk-JEV6UI7H.js +537 -0
  265. package/dist/chunk-JKBHJQMT.js +434 -0
  266. package/dist/chunk-JLS65NUQ.js +14 -0
  267. package/dist/chunk-JOSYEJKY.js +141 -0
  268. package/dist/chunk-JPKSXKNB.js +94 -0
  269. package/dist/chunk-JQD5VYKR.js +483 -0
  270. package/dist/chunk-JSOWEFEQ.js +351 -0
  271. package/dist/chunk-JSWMRQYG.js +28 -0
  272. package/dist/chunk-K4XK7SGB.js +6783 -0
  273. package/dist/chunk-K54Y7MLK.js +160 -0
  274. package/dist/chunk-KAT4RXUT.js +521 -0
  275. package/dist/chunk-KDMKKIRK.js +103 -0
  276. package/dist/chunk-KM3F7SYE.js +702 -0
  277. package/dist/chunk-KNDYMVWN.js +102 -0
  278. package/dist/chunk-KNT72VR6.js +132 -0
  279. package/dist/chunk-KQEBSK3T.js +274 -0
  280. package/dist/chunk-KT6VHSPF.js +84 -0
  281. package/dist/chunk-KTMW65UX.js +14 -0
  282. package/dist/chunk-L4427KOE.js +26 -0
  283. package/dist/chunk-L6OM4A22.js +189 -0
  284. package/dist/chunk-L7E6XCRA.js +1042 -0
  285. package/dist/chunk-L7JZLXQL.js +173 -0
  286. package/dist/chunk-LAMKBTXX.js +40 -0
  287. package/dist/chunk-LDCF2MKN.js +132 -0
  288. package/dist/chunk-LEIIWPWQ.js +78 -0
  289. package/dist/chunk-LFTQVYBB.js +31 -0
  290. package/dist/chunk-LGHII5ET.js +23 -0
  291. package/dist/chunk-LH34OGSB.js +265 -0
  292. package/dist/chunk-LO3X5NLS.js +326 -0
  293. package/dist/chunk-LPITVM7M.js +339 -0
  294. package/dist/chunk-LR5IJIGV.js +810 -0
  295. package/dist/chunk-LUVKFFWR.js +315 -0
  296. package/dist/chunk-LWCBNGH6.js +35 -0
  297. package/dist/chunk-LWTN3WRV.js +260 -0
  298. package/dist/chunk-LZBBXYWF.js +1004 -0
  299. package/dist/chunk-M34PS4NE.js +2213 -0
  300. package/dist/chunk-M3HQYKQX.js +308 -0
  301. package/dist/chunk-MCPQNJMK.js +482 -0
  302. package/dist/chunk-MF5HP6XV.js +221 -0
  303. package/dist/chunk-MFADRRTR.js +112 -0
  304. package/dist/chunk-MN6PL4AN.js +120 -0
  305. package/dist/chunk-MQ4WA34C.js +206 -0
  306. package/dist/chunk-MTVZITQ2.js +185 -0
  307. package/dist/chunk-MWHF5V7U.js +223 -0
  308. package/dist/chunk-MWHLBPNU.js +211 -0
  309. package/dist/chunk-MWK5UZQ3.js +1068 -0
  310. package/dist/chunk-MYLH2S4G.js +64 -0
  311. package/dist/chunk-MZ5WYKNA.js +28 -0
  312. package/dist/chunk-N5DX4JAK.js +12 -0
  313. package/dist/chunk-NEDCMN7E.js +415 -0
  314. package/dist/chunk-NEQUQHOX.js +223 -0
  315. package/dist/chunk-NGK6PEOG.js +25 -0
  316. package/dist/chunk-NM6PMYY4.js +768 -0
  317. package/dist/chunk-NOZGR2QO.js +2373 -0
  318. package/dist/chunk-NP2V3L7K.js +226 -0
  319. package/dist/chunk-NPZJMUZ4.js +194 -0
  320. package/dist/chunk-NRLY536M.js +260 -0
  321. package/dist/chunk-NS33V3IM.js +51 -0
  322. package/dist/chunk-NWOYOA6H.js +378 -0
  323. package/dist/chunk-NWRUSEXG.js +322 -0
  324. package/dist/chunk-O6V4PNLO.js +63 -0
  325. package/dist/chunk-OGMSYL6J.js +227 -0
  326. package/dist/chunk-OIS7J26S.js +319 -0
  327. package/dist/chunk-OKBTRSZI.js +205 -0
  328. package/dist/chunk-OMX5VL43.js +79 -0
  329. package/dist/chunk-ON3G73BU.js +264 -0
  330. package/dist/chunk-OPYFYTWQ.js +220 -0
  331. package/dist/chunk-OQ6K46CK.js +1734 -0
  332. package/dist/chunk-OSDYVKHW.js +2440 -0
  333. package/dist/chunk-OUM5S64R.js +3429 -0
  334. package/dist/chunk-OWB7JXUS.js +751 -0
  335. package/dist/chunk-OYZYO7TV.js +47 -0
  336. package/dist/chunk-P47VN5F4.js +282 -0
  337. package/dist/chunk-P6VQROCO.js +594 -0
  338. package/dist/chunk-P7CQGPLS.js +30 -0
  339. package/dist/chunk-PA6BCSOX.js +2872 -0
  340. package/dist/chunk-PGSPX4SU.js +15 -0
  341. package/dist/chunk-PIKLF7BM.js +432 -0
  342. package/dist/chunk-PJWJ3SAV.js +22 -0
  343. package/dist/chunk-PKIFMV72.js +100 -0
  344. package/dist/chunk-PTH5E5XO.js +195 -0
  345. package/dist/chunk-PYITM4N2.js +79 -0
  346. package/dist/chunk-PZ5AY32C.js +10 -0
  347. package/dist/chunk-Q3RO7N35.js +45 -0
  348. package/dist/chunk-Q3WIC6GQ.js +2670 -0
  349. package/dist/chunk-QGJDMEOV.js +34 -0
  350. package/dist/chunk-QJYIHVXT.js +100 -0
  351. package/dist/chunk-QNOB37UH.js +58 -0
  352. package/dist/chunk-QOCOVLUH.js +462 -0
  353. package/dist/chunk-QTCJ5CC5.js +172 -0
  354. package/dist/chunk-QU6JQJMH.js +3063 -0
  355. package/dist/chunk-QVFV5IP2.js +232 -0
  356. package/dist/chunk-QVZMFDYG.js +29 -0
  357. package/dist/chunk-R2ZYWNW3.js +1581 -0
  358. package/dist/chunk-R4UWBC35.js +200 -0
  359. package/dist/chunk-R6W23LKN.js +254 -0
  360. package/dist/chunk-RAK5HOIJ.js +459 -0
  361. package/dist/chunk-RDFRCT64.js +168 -0
  362. package/dist/chunk-RE5VZDFQ.js +58 -0
  363. package/dist/chunk-RGROYC2G.js +638 -0
  364. package/dist/chunk-RGWHUI5E.js +68 -0
  365. package/dist/chunk-RHVG6UNL.js +205 -0
  366. package/dist/chunk-RI4EX2QE.js +18 -0
  367. package/dist/chunk-RIKFAWZF.js +71 -0
  368. package/dist/chunk-RJAAKDRX.js +17 -0
  369. package/dist/chunk-RSXSD4MH.js +1016 -0
  370. package/dist/chunk-RW7RVSDV.js +79 -0
  371. package/dist/chunk-RWREC3KJ.js +517 -0
  372. package/dist/chunk-RZY7RKM5.js +500 -0
  373. package/dist/chunk-S2MNWFAG.js +52 -0
  374. package/dist/chunk-S2VQCZO4.js +22 -0
  375. package/dist/chunk-S54MKU6V.js +117 -0
  376. package/dist/chunk-S77XPALC.js +239 -0
  377. package/dist/chunk-SCW4ZF6R.js +150 -0
  378. package/dist/chunk-SKHGYQ7W.js +405 -0
  379. package/dist/chunk-SNLBO4BF.js +247 -0
  380. package/dist/chunk-SP3LFU6B.js +60 -0
  381. package/dist/chunk-SQZRPY23.js +5181 -0
  382. package/dist/chunk-SSB5UQHA.js +4128 -0
  383. package/dist/chunk-STJOHHSF.js +605 -0
  384. package/dist/chunk-STV6LYYE.js +45 -0
  385. package/dist/chunk-SUN4OFTW.js +740 -0
  386. package/dist/chunk-SURZ2WFE.js +326 -0
  387. package/dist/chunk-SUZ7UYZH.js +1972 -0
  388. package/dist/chunk-SZ7DL357.js +1047 -0
  389. package/dist/chunk-T2SZELJL.js +624 -0
  390. package/dist/chunk-T6VPI2XP.js +10338 -0
  391. package/dist/chunk-TAJPCXSB.js +13 -0
  392. package/dist/chunk-TAOOYK3P.js +358 -0
  393. package/dist/chunk-TDSEX5CF.js +24 -0
  394. package/dist/chunk-TFTGP7Z7.js +174 -0
  395. package/dist/chunk-TGON4N4O.js +197 -0
  396. package/dist/chunk-TIBZPAD2.js +9924 -0
  397. package/dist/chunk-TK644IOG.js +1813 -0
  398. package/dist/chunk-TRSVUPCX.js +25 -0
  399. package/dist/chunk-TSPQONRT.js +4533 -0
  400. package/dist/chunk-TSXGRLPR.js +107 -0
  401. package/dist/chunk-TWYLVAS2.js +152 -0
  402. package/dist/chunk-U2S3YEX3.js +224 -0
  403. package/dist/chunk-U32HWI76.js +437 -0
  404. package/dist/chunk-U45RTRGY.js +818 -0
  405. package/dist/chunk-U62VCQGR.js +49 -0
  406. package/dist/chunk-UDMS5AD3.js +307 -0
  407. package/dist/chunk-UGX7GI37.js +94 -0
  408. package/dist/chunk-UH3JJSHK.js +1 -0
  409. package/dist/chunk-UHRBTZYY.js +208 -0
  410. package/dist/chunk-UHT2KRG5.js +193 -0
  411. package/dist/chunk-UI2F6DJ5.js +118 -0
  412. package/dist/chunk-UKMAFG7A.js +189 -0
  413. package/dist/chunk-UUH2RVKS.js +585 -0
  414. package/dist/chunk-UVBBFDFQ.js +270 -0
  415. package/dist/chunk-UXZF3B7T.js +75 -0
  416. package/dist/chunk-V6YLL5WA.js +3746 -0
  417. package/dist/chunk-V72RMBM4.js +48 -0
  418. package/dist/chunk-VBNCKCCI.js +16 -0
  419. package/dist/chunk-VCAUV5XQ.js +3679 -0
  420. package/dist/chunk-VDSH7O4Y.js +152 -0
  421. package/dist/chunk-VNSYKC25.js +24 -0
  422. package/dist/chunk-VTLNJQ44.js +133 -0
  423. package/dist/chunk-VV6HOXRC.js +302 -0
  424. package/dist/chunk-VVGEPBPS.js +218 -0
  425. package/dist/chunk-VXF4Q3FW.js +20 -0
  426. package/dist/chunk-W3ZGW3C5.js +331 -0
  427. package/dist/chunk-W4OMESPG.js +271 -0
  428. package/dist/chunk-WDUORIHF.js +877 -0
  429. package/dist/chunk-WDVTY4U6.js +148 -0
  430. package/dist/chunk-WGXYDLMX.js +4386 -0
  431. package/dist/chunk-WMPU2UOV.js +82 -0
  432. package/dist/chunk-WOEVVPDP.js +1125 -0
  433. package/dist/chunk-WTLMSPBQ.js +256 -0
  434. package/dist/chunk-X43NMU4Z.js +1124 -0
  435. package/dist/chunk-X5NTI5U5.js +368 -0
  436. package/dist/chunk-X6UIEADS.js +949 -0
  437. package/dist/chunk-XAONGNST.js +57 -0
  438. package/dist/chunk-XB5YLCLB.js +13 -0
  439. package/dist/chunk-XGYF2QMZ.js +351 -0
  440. package/dist/chunk-XHEKQENB.js +255 -0
  441. package/dist/chunk-XPHKYHO4.js +878 -0
  442. package/dist/chunk-XQD2B6BB.js +507 -0
  443. package/dist/chunk-XT2ZQVTC.js +558 -0
  444. package/dist/chunk-XUSRFFA7.js +1859 -0
  445. package/dist/chunk-XUXVDPSZ.js +50 -0
  446. package/dist/chunk-XV7NZL4B.js +57 -0
  447. package/dist/chunk-XXCGJGSQ.js +121 -0
  448. package/dist/chunk-XYGDZCB5.js +659 -0
  449. package/dist/chunk-XZAMZUX5.js +992 -0
  450. package/dist/chunk-XZE4XARH.js +563 -0
  451. package/dist/chunk-Y34DUC4A.js +1356 -0
  452. package/dist/chunk-Y3J4JMTU.js +61 -0
  453. package/dist/chunk-Y4RC2YFX.js +1270 -0
  454. package/dist/chunk-Y55LZN5U.js +52 -0
  455. package/dist/chunk-Y5677NDO.js +183 -0
  456. package/dist/chunk-YESZJFK6.js +220 -0
  457. package/dist/chunk-YGXKOBQQ.js +292 -0
  458. package/dist/chunk-YMX76IOS.js +31 -0
  459. package/dist/chunk-YOTXESEH.js +257 -0
  460. package/dist/chunk-YQAAKTVH.js +712 -0
  461. package/dist/chunk-YVORHQ2S.js +579 -0
  462. package/dist/chunk-YWNAHW24.js +1552 -0
  463. package/dist/chunk-Z476RATD.js +1689 -0
  464. package/dist/chunk-ZDTGECTN.js +235 -0
  465. package/dist/chunk-ZDTMICNY.js +316 -0
  466. package/dist/chunk-ZIPWI2LY.js +151 -0
  467. package/dist/chunk-ZIVYXF7A.js +2344 -0
  468. package/dist/chunk-ZX65UI5W.js +78 -0
  469. package/dist/chunk-ZYG7GGKO.js +218 -0
  470. package/dist/chunk-ZZZUL4OF.js +38 -0
  471. package/dist/cli-utils-HUOTBRM3.js +40 -0
  472. package/dist/cli-validation-WLXWLUJL.js +111 -0
  473. package/dist/commit-utils-3QV2P6RA.js +202 -0
  474. package/dist/compete-config-resolver-SNH3TT2Q.js +76 -0
  475. package/dist/compete-request-XWNPOARL.js +364 -0
  476. package/dist/compete-results-PAP67LDR.js +208 -0
  477. package/dist/competition-outcome-tracker-GOZXNAQU.js +38 -0
  478. package/dist/config-HWHUNA72.js +166 -0
  479. package/dist/config-audit-EL3GHXS7.js +360 -0
  480. package/dist/config-explain-TNILDEVJ.js +12 -0
  481. package/dist/config-loader-VPFPFO4B.js +38 -0
  482. package/dist/config-manager-L3VRNTSG.js +67 -0
  483. package/dist/config-validator-SIIQEOFQ.js +72 -0
  484. package/dist/cost-7CX37DU3.js +53 -0
  485. package/dist/coverage-orchestrator-MNKHD6YC.js +772 -0
  486. package/dist/coverage-scanner-YVD62MLH.js +12 -0
  487. package/dist/createCompetitionRunner-LJG6ZQSO.js +46 -0
  488. package/dist/data-migration-state-VJK64DLT.js +31 -0
  489. package/dist/db-migrator-XSEIOGWY.js +34 -0
  490. package/dist/discovery-JGYGDD25.js +25 -0
  491. package/dist/doctor-CGBCD7IQ.js +186 -0
  492. package/dist/domain-analyzer-DL6BDR2N.js +29 -0
  493. package/dist/ensure-initialized-4BY73HLE.js +52 -0
  494. package/dist/entry.js +940 -0
  495. package/dist/environment-IGVH5X53.js +81 -0
  496. package/dist/error-parser-core-PPZ36A4S.js +50 -0
  497. package/dist/escalation-ladder-NWY5BJ57.js +130 -0
  498. package/dist/evaluation-context-KMWDSDYD.js +35 -0
  499. package/dist/evidence-plan-resolver-YIVH76PU.js +85 -0
  500. package/dist/execution-data-writer-OHAQ7G5H.js +53 -0
  501. package/dist/execution-policy-applier-ZHD3DCF3.js +31 -0
  502. package/dist/execution-preflight-Z4Y64V3I.js +209 -0
  503. package/dist/execution-roles-KBH2MC3M.js +66 -0
  504. package/dist/exit-code-error-Z4SW2DVK.js +14 -0
  505. package/dist/external-temp-cleanup-N2RZH4QP.js +311 -0
  506. package/dist/factory-IYBMCZG7.js +149 -0
  507. package/dist/file-utils-XIVR2ZMA.js +47 -0
  508. package/dist/flywheel-autoloop-executor-R3KD2G4D.js +249 -0
  509. package/dist/flywheel-competition-executor-XCFGVJSK.js +259 -0
  510. package/dist/flywheel-executor-LTSIZN2L.js +369 -0
  511. package/dist/flywheel-git-isolation-CZ5YVVZY.js +48 -0
  512. package/dist/flywheel-manifest-5UC4VBMA.js +108 -0
  513. package/dist/flywheel-model-defaults-7CVKP53V.js +27 -0
  514. package/dist/flywheel-preflight-6E33DJDK.js +104 -0
  515. package/dist/flywheel-resume-7HELH7QS.js +23 -0
  516. package/dist/flywheel-safety-7U7DPOAP.js +28 -0
  517. package/dist/flywheel-scope-decision-ZHKF6ZIN.js +11 -0
  518. package/dist/get-telemetry-logger-AZ46EPRP.js +73 -0
  519. package/dist/git-worktree-IY6V6DUO.js +18 -0
  520. package/dist/github-pr-manager-4XUO2YTM.js +211 -0
  521. package/dist/guidance-profile-config-E7XJL2VP.js +117 -0
  522. package/dist/guidance-profile-renderer-QK2YMAAP.js +21 -0
  523. package/dist/index-query-4JEUKA44.js +31 -0
  524. package/dist/index.js +108644 -0
  525. package/dist/instructions-CM6THDV7.js +64 -0
  526. package/dist/invoke-provider-auth-V5TC5UDS.js +223 -0
  527. package/dist/judge-scoring.json +80 -0
  528. package/dist/judge-test.js +555 -0
  529. package/dist/lab-mode-OTWVHN63.js +39 -0
  530. package/dist/lab-utils-VA6VXNOV.js +23 -0
  531. package/dist/linux-host-class-UY4KVLFD.js +29 -0
  532. package/dist/llm-judge-executor-34YPIRJ7.js +133 -0
  533. package/dist/local-executor-LJJSCWZX.js +223 -0
  534. package/dist/logger-6PRYM56M.js +72 -0
  535. package/dist/loop-spec-XTLQAVZ7.js +191 -0
  536. package/dist/manager-2HJG5CLT.js +25 -0
  537. package/dist/matrix-prompt-builder-LHDTJ4TY.js +497 -0
  538. package/dist/matrix-result-parser-7W35EUOV.js +15 -0
  539. package/dist/metadata-HQ43NDEK.js +22 -0
  540. package/dist/model-invocations-db-QBO4Y7WZ.js +38 -0
  541. package/dist/monitor-MCI3F4PX.js +72 -0
  542. package/dist/next-HQKDXIIR.js +90 -0
  543. package/dist/next-JC3V2UCS.js +69 -0
  544. package/dist/optimization-config-resolver-QPSFLCJU.js +75 -0
  545. package/dist/package-3YCWIQQ5.js +10 -0
  546. package/dist/parallel-orchestrator-NL7YJJU2.js +297 -0
  547. package/dist/parallel-worker.js +279 -0
  548. package/dist/parse-git-status-PIAF3OTP.js +10 -0
  549. package/dist/path-security-ETTH6TZL.js +39 -0
  550. package/dist/pattern-bank-UNJR5ADV.js +15 -0
  551. package/dist/plan-backlog-list-fast-DZK24LSZ.js +270 -0
  552. package/dist/plan-backlog-show-fast-63GBBH6Q.js +406 -0
  553. package/dist/plan-sprint-list-fast-TJ6ZUF5E.js +162 -0
  554. package/dist/plan-sprint-status-fast-YWE5X3NG.js +208 -0
  555. package/dist/plan-task-status-fast-K22BTTBW.js +349 -0
  556. package/dist/plan-to-flywheel-VFGCPINA.js +456 -0
  557. package/dist/planning-backlog-Y6TIJYWU.js +319 -0
  558. package/dist/poetic-root-V5DNXEAE.js +17 -0
  559. package/dist/preflight-OPANWMME.js +12 -0
  560. package/dist/process-registry-PDZJPTAS.js +27 -0
  561. package/dist/process-scanner-C22SYXYD.js +22 -0
  562. package/dist/processes-KMQUD7HY.js +29 -0
  563. package/dist/processes-json-fast-IBDXZ6WW.js +135 -0
  564. package/dist/profile-2XP3FWH2.js +149 -0
  565. package/dist/prompts-EPAAAMMF.js +168 -0
  566. package/dist/protected-branches-RNTEX7ET.js +57 -0
  567. package/dist/provider-aware-resource-manager-QBTZJMNP.js +18 -0
  568. package/dist/provider-matrix-KWTYA5QV.js +154 -0
  569. package/dist/provider-matrix-renderer-MZDWKKID.js +139 -0
  570. package/dist/provider-output-forwarding-DERID3TP.js +30 -0
  571. package/dist/provider-registry-J5NRBJKI.js +128 -0
  572. package/dist/provider-temp-cleanup-KYGLF6YU.js +14 -0
  573. package/dist/prune-engine-Q6E2DXBN.js +451 -0
  574. package/dist/quality-gate-33SHK43X.js +70 -0
  575. package/dist/quickstart-E32SODTA.js +62 -0
  576. package/dist/readiness-REWW7OSV.js +96 -0
  577. package/dist/registry-N6L36RE2.js +153 -0
  578. package/dist/repair-helpers-TTV5FEF4.js +117 -0
  579. package/dist/repo-root-2IGD4H7X.js +22 -0
  580. package/dist/resolution-engine-LXQYDSKS.js +127 -0
  581. package/dist/resolve-provider-cli-O2P6XZBZ.js +35 -0
  582. package/dist/restore-telemetry-db-BQL6DTQF.js +360 -0
  583. package/dist/result-streamer-WEHW476R.js +19 -0
  584. package/dist/routing-events-DHPUZDDF.js +27 -0
  585. package/dist/routing-history-store-UWCEXAP3.js +46 -0
  586. package/dist/routing-planner-VGQU35QM.js +160 -0
  587. package/dist/run-poetic-tui-ZZXFDOQ4.js +13517 -0
  588. package/dist/run-simulation.js +376 -0
  589. package/dist/runner-2YPKOJ6A.js +1092 -0
  590. package/dist/runner-HEJJ65AJ.js +1571 -0
  591. package/dist/safety-OCC4KJJR.js +64 -0
  592. package/dist/safety-stanza-BSVE6OJU.js +60 -0
  593. package/dist/sandbox-3AG2WJLM.js +94 -0
  594. package/dist/sandbox-5JOFBS75.js +81 -0
  595. package/dist/schema-extensions.sql +234 -0
  596. package/dist/security-2KI5XNDG.js +17 -0
  597. package/dist/setup-bb-plugin-QAQWZCV5.js +738 -0
  598. package/dist/setup-claude-code-P7BTTSPO.js +317 -0
  599. package/dist/setup-temp-cleanup-GASCWZ2I.js +20 -0
  600. package/dist/shared-utils-D6U6UREP.js +37 -0
  601. package/dist/simple-artifact-goal-OTXNGZY6.js +25 -0
  602. package/dist/sprint-QGXLN3SO.js +338 -0
  603. package/dist/sprint-bridge-FNKQCJGL.js +68 -0
  604. package/dist/sprint-execution-service-4ELKNJDS.js +311 -0
  605. package/dist/sprint-manager-7TNCXCIX.js +91 -0
  606. package/dist/sqlite-wrapper-UDWCTNLJ.js +17 -0
  607. package/dist/stale-cleanup-orchestrator-H5XKGZP2.js +62 -0
  608. package/dist/storage-access-F6ALDN4S.js +22 -0
  609. package/dist/synthesis-TGQUVAW3.js +185 -0
  610. package/dist/task-classifier-DZIRBSS2.js +494 -0
  611. package/dist/task-list-fast-PJ2EXVZE.js +147 -0
  612. package/dist/task-manager-5742GMJK.js +93 -0
  613. package/dist/task-splitter-6MBXSWF6.js +79 -0
  614. package/dist/task-type-detector-OLVOMXZO.js +21 -0
  615. package/dist/task-type-resolver-4HG6TXFV.js +42 -0
  616. package/dist/telemetry-JX7EMNOZ.js +131 -0
  617. package/dist/telemetry-health-tracker-DMSSGBZ2.js +11 -0
  618. package/dist/telemetry-path-resolver-7ICSG276.js +28 -0
  619. package/dist/telemetry-reliability-2MLJ4J6B.js +125 -0
  620. package/dist/token-estimator-PDU345YE.js +37 -0
  621. package/dist/transports-3UEO6C5Y.js +255 -0
  622. package/dist/unified-cost-tracker-F3W5NMPG.js +35 -0
  623. package/dist/unified-state-cleanup-LJPF2BOW.js +276 -0
  624. package/dist/universal-cost-calculator-BAJV35GA.js +42 -0
  625. package/dist/user-agents-GHUGCSKN.js +22 -0
  626. package/dist/variant-delivery-state-XCOYVCM4.js +33 -0
  627. package/dist/variant-state-cleanup-QIEKRULB.js +280 -0
  628. package/dist/variant-success-PJXWE3ZV.js +12 -0
  629. package/dist/variant-worker-HPTUA37Z.js +4196 -0
  630. package/dist/variant-worker.js +24 -0
  631. package/dist/variants-2HDYZOCG.js +233 -0
  632. package/dist/verification-toolchains-VVKT3GBF.js +28 -0
  633. package/dist/verify-commands-5F6CJV4B.js +37 -0
  634. package/dist/warning-EGQGUUIO.js +12 -0
  635. package/dist/work-edge-RWEDWJZF.js +49 -0
  636. package/dist/work-item-writer-WHAVZXAY.js +19 -0
  637. package/dist/worker-AGWHD4D2.js +1435 -0
  638. package/dist/worker.js +19 -0
  639. package/dist/worktree-metrics-3DFUYVYE.js +26 -0
  640. package/dist/writeback-VZKHYHSN.js +44 -0
  641. package/docs/CLI_REFERENCE.md +7040 -0
  642. package/docs/PROVIDER_SETUP.md +1570 -0
  643. package/docs/README.md +96 -0
  644. package/docs/TROUBLESHOOTING.md +2232 -0
  645. package/docs/getting-started/QUICK_START.md +294 -0
  646. package/docs/getting-started/README.md +188 -0
  647. package/docs/getting-started/SETUP.md +52 -0
  648. package/docs/reference/AGENT_CONTEXT.md +38 -0
  649. package/docs/reference/PROVIDER_RELEASE_TIERS.md +34 -0
  650. package/docs/reference/README.md +381 -0
  651. package/docs/reference/SECURITY.md +262 -0
  652. package/integrations/bb-plugin-poetic/README.md +362 -0
  653. package/integrations/bb-plugin-poetic/app.css +341 -0
  654. package/integrations/bb-plugin-poetic/app.tsx +5059 -0
  655. package/integrations/bb-plugin-poetic/package.json +45 -0
  656. package/integrations/bb-plugin-poetic/server.ts +444 -0
  657. package/integrations/bb-plugin-poetic/src/adapter.ts +3312 -0
  658. package/integrations/bb-plugin-poetic/src/backlog-authoring-model.ts +150 -0
  659. package/integrations/bb-plugin-poetic/src/backlog-authoring-schema.ts +355 -0
  660. package/integrations/bb-plugin-poetic/src/backlog-authoring-service.ts +419 -0
  661. package/integrations/bb-plugin-poetic/src/backlog-authoring-view.ts +1026 -0
  662. package/integrations/bb-plugin-poetic/src/competition-defaults-schema.ts +122 -0
  663. package/integrations/bb-plugin-poetic/src/competition-defaults-service.ts +105 -0
  664. package/integrations/bb-plugin-poetic/src/competition-defaults-view.ts +138 -0
  665. package/integrations/bb-plugin-poetic/src/contract.ts +615 -0
  666. package/integrations/bb-plugin-poetic/src/finalize-model.ts +205 -0
  667. package/integrations/bb-plugin-poetic/src/finalize-schema.ts +158 -0
  668. package/integrations/bb-plugin-poetic/src/finalize-service.ts +382 -0
  669. package/integrations/bb-plugin-poetic/src/finalize-view.ts +159 -0
  670. package/integrations/bb-plugin-poetic/src/judge-operations-readback.ts +303 -0
  671. package/integrations/bb-plugin-poetic/src/judge-operations-schema.ts +33 -0
  672. package/integrations/bb-plugin-poetic/src/judge-operations-view.ts +459 -0
  673. package/integrations/bb-plugin-poetic/src/model.ts +1302 -0
  674. package/integrations/bb-plugin-poetic/src/monitor-service.ts +233 -0
  675. package/integrations/bb-plugin-poetic/src/panel-read-ux.ts +97 -0
  676. package/integrations/bb-plugin-poetic/src/patch-preview-schema.ts +166 -0
  677. package/integrations/bb-plugin-poetic/src/patch-preview-service.ts +480 -0
  678. package/integrations/bb-plugin-poetic/src/patch-preview-view.ts +109 -0
  679. package/integrations/bb-plugin-poetic/src/planning-readback.ts +204 -0
  680. package/integrations/bb-plugin-poetic/src/planning-service.ts +594 -0
  681. package/integrations/bb-plugin-poetic/src/planning-workspace-schema.ts +95 -0
  682. package/integrations/bb-plugin-poetic/src/planning-workspace.ts +323 -0
  683. package/integrations/bb-plugin-poetic/src/poll-handoff.ts +136 -0
  684. package/integrations/bb-plugin-poetic/src/project-target-server.ts +21 -0
  685. package/integrations/bb-plugin-poetic/src/project-target.ts +45 -0
  686. package/integrations/bb-plugin-poetic/src/reference-index.ts +192 -0
  687. package/integrations/bb-plugin-poetic/src/repository-schema.ts +30 -0
  688. package/integrations/bb-plugin-poetic/src/result-explorer-view.ts +597 -0
  689. package/integrations/bb-plugin-poetic/src/result-readback-model.ts +163 -0
  690. package/integrations/bb-plugin-poetic/src/result-readback-schema.ts +319 -0
  691. package/integrations/bb-plugin-poetic/src/result-readback-service.ts +333 -0
  692. package/integrations/bb-plugin-poetic/src/run-page-view.ts +177 -0
  693. package/integrations/bb-plugin-poetic/src/setup-config-schema.ts +291 -0
  694. package/integrations/bb-plugin-poetic/src/setup-config-service.ts +590 -0
  695. package/integrations/bb-plugin-poetic/src/setup-config-view.ts +413 -0
  696. package/integrations/bb-plugin-poetic/src/sprint-close-model.ts +150 -0
  697. package/integrations/bb-plugin-poetic/src/sprint-close-schema.ts +136 -0
  698. package/integrations/bb-plugin-poetic/src/sprint-close-service.ts +341 -0
  699. package/integrations/bb-plugin-poetic/src/sprint-close-view.ts +116 -0
  700. package/integrations/bb-plugin-poetic/src/sprint-composition-model.ts +714 -0
  701. package/integrations/bb-plugin-poetic/src/sprint-composition-readback.ts +231 -0
  702. package/integrations/bb-plugin-poetic/src/sprint-composition-schema.ts +601 -0
  703. package/integrations/bb-plugin-poetic/src/sprint-composition-service.ts +775 -0
  704. package/integrations/bb-plugin-poetic/src/sprint-composition-view.ts +1221 -0
  705. package/integrations/bb-plugin-poetic/src/task-authoring-model.ts +567 -0
  706. package/integrations/bb-plugin-poetic/src/task-authoring-schema.ts +635 -0
  707. package/integrations/bb-plugin-poetic/src/task-authoring-service.ts +842 -0
  708. package/integrations/bb-plugin-poetic/src/task-authoring-view.ts +1227 -0
  709. package/integrations/bb-plugin-poetic/src/task-detail-readback.ts +56 -0
  710. package/integrations/bb-plugin-poetic/src/task-detail-schema.ts +144 -0
  711. package/integrations/bb-plugin-poetic/src/task-navigation.ts +446 -0
  712. package/integrations/bb-plugin-poetic/src/workbench-route.ts +74 -0
  713. package/integrations/bb-plugin-poetic/tests/host-contract.test.ts +773 -0
  714. package/integrations/bb-plugin-poetic/tsconfig.json +18 -0
  715. package/integrations/bb-plugin-poetic/types/PROVENANCE.json +52 -0
  716. package/integrations/bb-plugin-poetic/types/bb-plugin-sdk-app.d.ts +1444 -0
  717. package/integrations/bb-plugin-poetic/types/bb-plugin-sdk.d.ts +13030 -0
  718. package/integrations/bb-plugin-poetic/vitest.host.config.ts +71 -0
  719. package/package.json +331 -0
  720. package/schemas/README.md +80 -0
  721. package/schemas/config-v1.schema.json +136 -0
  722. package/schemas/execution-config.schema.json +47 -0
  723. package/schemas/judge-scoring.schema.json +370 -0
  724. package/schemas/poetic.config.schema.json +2214 -0
  725. package/schemas/provider-config.schema.json +203 -0
  726. package/schemas/telemetry-config.schema.json +79 -0
  727. package/schemas/user-preferences.schema.json +141 -0
  728. package/scripts/assert-node-runtime.mjs +140 -0
  729. package/scripts/preflight-native.mjs +49 -0
  730. package/scripts/preinstall-node-check.mjs +78 -0
  731. package/scripts/setup-git-hooks.mjs +24 -0
  732. package/scripts/sync.sh +2722 -0
  733. package/scripts/write-node-launcher.sh +108 -0
  734. package/src/resources/gemini/slash-packs/default/plan.toml +15 -0
  735. package/src/resources/gemini/slash-packs/default/summary.toml +16 -0
  736. package/src/resources/gemini/slash-packs/default/tests.toml +16 -0
  737. package/templates/.poetic/README.md +37 -0
  738. package/templates/.poetic/agents/README.md +296 -0
  739. package/templates/.poetic/agents/api-documenter.md +147 -0
  740. package/templates/.poetic/agents/backend-architect.md +31 -0
  741. package/templates/.poetic/agents/code-reviewer.md +157 -0
  742. package/templates/.poetic/agents/data-scientist.md +179 -0
  743. package/templates/.poetic/agents/database-optimizer.md +145 -0
  744. package/templates/.poetic/agents/debugger.md +31 -0
  745. package/templates/.poetic/agents/deployment-engineer.md +164 -0
  746. package/templates/.poetic/agents/devops-troubleshooter.md +139 -0
  747. package/templates/.poetic/agents/frontend-developer.md +150 -0
  748. package/templates/.poetic/agents/javascript-pro.md +36 -0
  749. package/templates/.poetic/agents/performance-engineer.md +151 -0
  750. package/templates/.poetic/agents/python-pro.md +137 -0
  751. package/templates/.poetic/agents/test-automator.md +147 -0
  752. package/templates/.poetic/agents/typescript-pro.md +34 -0
  753. package/templates/.poetic/config/poetic.config.jsonc +69 -0
  754. package/templates/.poetic/config/project-context.template.json +6 -0
  755. package/templates/.poetic/config/task-type-aliases.presets/kanban.yaml +14 -0
  756. package/templates/.poetic/config/task-type-aliases.presets/scrum.yaml +17 -0
  757. package/templates/.poetic/config/task-type-aliases.presets/xp.yaml +12 -0
  758. package/templates/.poetic/config/task-type-aliases.yaml +28 -0
  759. package/templates/.poetic/gitignore.template +55 -0
  760. package/templates/.poetic/task-types/analysis.yaml +40 -0
  761. package/templates/.poetic/task-types/architecture.yaml +38 -0
  762. package/templates/.poetic/task-types/doc.yaml +35 -0
  763. package/templates/.poetic/task-types/feature.yaml +23 -0
  764. package/templates/.poetic/task-types/general.yaml +6 -0
  765. package/templates/.poetic/task-types/security.yaml +39 -0
  766. package/templates/AGENTS.template.md +99 -0
  767. package/templates/CLAUDE.template.md +1 -0
  768. package/templates/GEMINI.template.md +1 -0
  769. package/templates/builtin-workflows/code-review.yaml +73 -0
  770. package/templates/builtin-workflows/compete-streak.yaml +78 -0
  771. package/templates/builtin-workflows/hello-verify.yaml +10 -0
  772. package/templates/builtin-workflows/judge-regression.yaml +114 -0
  773. package/templates/builtin-workflows/skills/code-review/SKILL.md +60 -0
  774. package/templates/builtin-workflows/skills/hello-verify/SKILL.md +6 -0
  775. package/templates/guard-kit/GUARD_SETUP.md.template +255 -0
  776. package/templates/guard-kit/check.mjs.template +777 -0
  777. package/templates/guard-kit/config.json.template +6 -0
  778. package/templates/guard-kit/poetic-guard.yml.template +189 -0
  779. package/templates/profiles/README.md +56 -0
  780. package/templates/profiles/frontier-claude.json +27 -0
  781. package/templates/profiles/frontier-codex.json +26 -0
@@ -0,0 +1,638 @@
1
+ import {
2
+ isTelemetryPersistenceEnabled
3
+ } from "./chunk-H6G7QRMQ.js";
4
+ import {
5
+ TelemetryPathResolver
6
+ } from "./chunk-ZDTGECTN.js";
7
+ import {
8
+ redactPersistedTelemetryValue
9
+ } from "./chunk-6Y5U7UFY.js";
10
+ import {
11
+ getRuntimeEnv
12
+ } from "./chunk-ENRGKNR5.js";
13
+ import {
14
+ ProviderRegistry
15
+ } from "./chunk-AT4TNPWW.js";
16
+ import {
17
+ resolvePoeticRoot
18
+ } from "./chunk-LEIIWPWQ.js";
19
+ import {
20
+ POETIC_ROUTING_HISTORY_DB,
21
+ POETIC_TELEMETRY_DIR,
22
+ readEnv
23
+ } from "./chunk-5DLKYTQX.js";
24
+
25
+ // src/telemetry/routing-history-store.ts
26
+ import { existsSync, mkdirSync } from "fs";
27
+ import { dirname, join } from "path";
28
+ import Database from "better-sqlite3";
29
+ var SAFE_SQL_IDENTIFIER = /^[A-Za-z_][A-Za-z0-9_]*$/u;
30
+ var SAFE_COLUMN_DEFINITION = /^(TEXT|INTEGER|REAL|BLOB|NUMERIC)$/iu;
31
+ function validateSqlIdentifier(value, label) {
32
+ if (!SAFE_SQL_IDENTIFIER.test(value)) {
33
+ throw new Error(`Invalid SQL ${label}: ${value}`);
34
+ }
35
+ return value;
36
+ }
37
+ function validateColumnDefinition(value) {
38
+ if (!SAFE_COLUMN_DEFINITION.test(value)) {
39
+ throw new Error(`Invalid SQL column definition: ${value}`);
40
+ }
41
+ return value;
42
+ }
43
+ function resolveOutcomeQuality(qualityScore, qualityProvenance) {
44
+ if (qualityProvenance === "absent") {
45
+ return { qualityScore: void 0, qualityProvenance: "absent" };
46
+ }
47
+ if (qualityProvenance === "unknown") {
48
+ return typeof qualityScore === "number" && Number.isFinite(qualityScore) ? { qualityScore, qualityProvenance: "unknown" } : { qualityScore: void 0, qualityProvenance: "absent" };
49
+ }
50
+ if (typeof qualityScore === "number" && Number.isFinite(qualityScore)) {
51
+ return { qualityScore, qualityProvenance: "judged" };
52
+ }
53
+ return { qualityScore: void 0, qualityProvenance: "absent" };
54
+ }
55
+ var RoutingHistoryStore = class {
56
+ db = null;
57
+ dbPath;
58
+ isMemory;
59
+ constructor(dbPath = ":memory:") {
60
+ this.dbPath = dbPath;
61
+ this.isMemory = dbPath === ":memory:";
62
+ this.initialize();
63
+ }
64
+ /**
65
+ * Initialize database and schema
66
+ */
67
+ initialize() {
68
+ if (!isTelemetryPersistenceEnabled()) {
69
+ this.db = null;
70
+ return;
71
+ }
72
+ try {
73
+ if (!this.isMemory) {
74
+ const dir = dirname(this.dbPath);
75
+ if (!existsSync(dir)) {
76
+ mkdirSync(dir, { recursive: true });
77
+ }
78
+ }
79
+ this.db = new Database(this.dbPath);
80
+ if (this.db) {
81
+ this.db.pragma("journal_mode = WAL");
82
+ this.db.pragma("foreign_keys = ON");
83
+ }
84
+ this.createSchema();
85
+ } catch (error) {
86
+ console.warn(
87
+ "[RoutingHistoryStore] Failed to initialize SQLite, falling back to no-op mode:",
88
+ error
89
+ );
90
+ this.db = null;
91
+ }
92
+ }
93
+ /**
94
+ * Create database schema
95
+ */
96
+ createSchema() {
97
+ if (!this.db) return;
98
+ this.db.exec(`
99
+ CREATE TABLE IF NOT EXISTS routing_events (
100
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
101
+ type TEXT NOT NULL,
102
+ timestamp INTEGER NOT NULL,
103
+ provider TEXT,
104
+ model TEXT,
105
+ domain TEXT,
106
+ payload TEXT NOT NULL,
107
+ created_at TEXT DEFAULT CURRENT_TIMESTAMP
108
+ );
109
+
110
+ CREATE TABLE IF NOT EXISTS routing_outcomes (
111
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
112
+ routing_id TEXT NOT NULL,
113
+ provider TEXT NOT NULL,
114
+ model TEXT,
115
+ domain TEXT,
116
+ success INTEGER NOT NULL,
117
+ quality_score REAL,
118
+ quality_provenance TEXT,
119
+ quality_source TEXT,
120
+ duration_ms REAL,
121
+ token_cost REAL,
122
+ timestamp INTEGER NOT NULL,
123
+ created_at TEXT DEFAULT CURRENT_TIMESTAMP
124
+ );
125
+ `);
126
+ this.ensureColumnExists("routing_events", "model", "TEXT");
127
+ this.ensureColumnExists("routing_outcomes", "model", "TEXT");
128
+ this.ensureColumnExists("routing_outcomes", "quality_provenance", "TEXT");
129
+ this.ensureColumnExists("routing_outcomes", "quality_source", "TEXT");
130
+ this.db.exec(`
131
+ UPDATE routing_outcomes
132
+ SET quality_provenance = CASE
133
+ WHEN quality_score IS NULL THEN 'absent'
134
+ ELSE 'unknown'
135
+ END
136
+ WHERE quality_provenance IS NULL;
137
+ `);
138
+ this.db.exec(`
139
+ CREATE INDEX IF NOT EXISTS idx_outcomes_routing_id ON routing_outcomes(routing_id);
140
+ CREATE INDEX IF NOT EXISTS idx_outcomes_provider_model ON routing_outcomes(provider, model);
141
+ CREATE INDEX IF NOT EXISTS idx_outcomes_provider ON routing_outcomes(provider);
142
+ CREATE INDEX IF NOT EXISTS idx_outcomes_domain ON routing_outcomes(domain);
143
+ CREATE INDEX IF NOT EXISTS idx_outcomes_timestamp ON routing_outcomes(timestamp);
144
+ CREATE INDEX IF NOT EXISTS idx_events_provider_model ON routing_events(provider, model);
145
+ CREATE INDEX IF NOT EXISTS idx_events_type ON routing_events(type);
146
+ CREATE INDEX IF NOT EXISTS idx_events_timestamp ON routing_events(timestamp);
147
+ `);
148
+ }
149
+ ensureColumnExists(tableName, columnName, columnDef) {
150
+ if (!this.db) return;
151
+ const safeTableName = validateSqlIdentifier(tableName, "table name");
152
+ const safeColumnName = validateSqlIdentifier(columnName, "column name");
153
+ const safeColumnDef = validateColumnDefinition(columnDef);
154
+ try {
155
+ const rows = this.db.prepare(`PRAGMA table_info(${safeTableName})`).all();
156
+ const hasColumn = rows.some((row) => row.name === safeColumnName);
157
+ if (!hasColumn) {
158
+ this.db.exec(`ALTER TABLE ${safeTableName} ADD COLUMN ${safeColumnName} ${safeColumnDef}`);
159
+ }
160
+ } catch (error) {
161
+ console.warn(
162
+ `[RoutingHistoryStore] Failed to ensure column ${tableName}.${columnName}:`,
163
+ error
164
+ );
165
+ }
166
+ }
167
+ /**
168
+ * Persist a routing telemetry event
169
+ */
170
+ persistEvent(event) {
171
+ if (!this.db) return;
172
+ try {
173
+ const stmt = this.db.prepare(`
174
+ INSERT INTO routing_events (type, timestamp, provider, model, domain, payload)
175
+ VALUES (?, ?, ?, ?, ?, ?)
176
+ `);
177
+ const timestamp = new Date(event.timestamp).getTime();
178
+ const provider = "provider" in event ? event.provider : null;
179
+ const model = "model" in event && typeof event.model === "string" ? event.model : null;
180
+ const domain = "domain" in event ? event.domain : null;
181
+ const payload = JSON.stringify(redactPersistedTelemetryValue(event));
182
+ stmt.run(event.type, timestamp, provider, model, domain, payload);
183
+ } catch (error) {
184
+ console.warn("[RoutingHistoryStore] Failed to persist event:", error);
185
+ }
186
+ }
187
+ /**
188
+ * Record a routing outcome (success/failure with quality score).
189
+ * Quality is normalized via resolveOutcomeQuality so non-finite values and
190
+ * explicit `qualityProvenance: 'absent'` never become judged quality samples;
191
+ * operational success is independent.
192
+ */
193
+ recordOutcome(outcome) {
194
+ if (!this.db) return;
195
+ try {
196
+ const { qualityScore, qualityProvenance } = resolveOutcomeQuality(
197
+ outcome.qualityScore,
198
+ outcome.qualityProvenance
199
+ );
200
+ const existing = this.db.prepare("SELECT id FROM routing_outcomes WHERE routing_id = ? ORDER BY id DESC LIMIT 1").get(outcome.routingId);
201
+ const values = [
202
+ outcome.provider,
203
+ outcome.model ?? null,
204
+ outcome.domain,
205
+ outcome.success ? 1 : 0,
206
+ qualityScore ?? null,
207
+ qualityProvenance,
208
+ outcome.qualitySource ?? null,
209
+ outcome.duration ?? null,
210
+ outcome.tokenCost ?? null,
211
+ outcome.timestamp
212
+ ];
213
+ if (existing) {
214
+ this.db.prepare(`
215
+ UPDATE routing_outcomes
216
+ SET provider = ?, model = ?, domain = ?, success = ?, quality_score = ?,
217
+ quality_provenance = ?, quality_source = ?, duration_ms = ?, token_cost = ?,
218
+ timestamp = ?
219
+ WHERE id = ?
220
+ `).run(...values, existing.id);
221
+ } else {
222
+ this.db.prepare(`
223
+ INSERT INTO routing_outcomes (
224
+ routing_id, provider, model, domain, success, quality_score,
225
+ quality_provenance, quality_source, duration_ms, token_cost, timestamp
226
+ )
227
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
228
+ `).run(outcome.routingId, ...values);
229
+ }
230
+ } catch (error) {
231
+ console.warn("[RoutingHistoryStore] Failed to record outcome:", error);
232
+ }
233
+ }
234
+ /**
235
+ * Get provider success rate (0-1) for a domain within a time window
236
+ */
237
+ getProviderSuccessRate(providerId, domain, windowDays = 30, model) {
238
+ if (!this.db) return 0.5;
239
+ try {
240
+ const cutoffTime = Date.now() - windowDays * 24 * 60 * 60 * 1e3;
241
+ let query = `
242
+ SELECT AVG(success) as success_rate
243
+ FROM routing_outcomes
244
+ WHERE provider = ? AND timestamp >= ?
245
+ AND id = (SELECT MAX(latest.id) FROM routing_outcomes latest WHERE latest.routing_id = routing_outcomes.routing_id)
246
+ `;
247
+ const params = [providerId, cutoffTime];
248
+ if (model) {
249
+ query += " AND model = ?";
250
+ params.push(model);
251
+ }
252
+ if (domain) {
253
+ query += " AND domain = ?";
254
+ params.push(domain);
255
+ }
256
+ const result = this.db.prepare(query).get(...params);
257
+ return result?.success_rate ?? 0.5;
258
+ } catch (error) {
259
+ console.warn("[RoutingHistoryStore] Failed to get success rate:", error);
260
+ return 0.5;
261
+ }
262
+ }
263
+ /**
264
+ * Get provider average quality score (0-100) for a domain within a time window.
265
+ * Returns null when no judged quality samples exist — never a synthetic default
266
+ * (e.g. 50) that would pretend quality was observed.
267
+ */
268
+ getProviderAverageScore(providerId, domain, windowDays = 30, model) {
269
+ if (!this.db) return null;
270
+ try {
271
+ const cutoffTime = Date.now() - windowDays * 24 * 60 * 60 * 1e3;
272
+ let query = `
273
+ SELECT AVG(quality_score) as avg_score
274
+ FROM routing_outcomes
275
+ WHERE provider = ? AND timestamp >= ?
276
+ AND quality_provenance = 'judged' AND quality_score IS NOT NULL
277
+ AND id = (SELECT MAX(latest.id) FROM routing_outcomes latest WHERE latest.routing_id = routing_outcomes.routing_id)
278
+ `;
279
+ const params = [providerId, cutoffTime];
280
+ if (model) {
281
+ query += " AND model = ?";
282
+ params.push(model);
283
+ }
284
+ if (domain) {
285
+ query += " AND domain = ?";
286
+ params.push(domain);
287
+ }
288
+ const result = this.db.prepare(query).get(...params);
289
+ const avg = result?.avg_score;
290
+ return typeof avg === "number" && Number.isFinite(avg) ? avg : null;
291
+ } catch (error) {
292
+ console.warn("[RoutingHistoryStore] Failed to get average score:", error);
293
+ return null;
294
+ }
295
+ }
296
+ /**
297
+ * Get operational sample size for a provider/domain combination
298
+ * (all outcomes, with or without judged quality).
299
+ */
300
+ getSampleSize(providerId, domain, windowDays = 30, model) {
301
+ if (!this.db) return 0;
302
+ try {
303
+ const cutoffTime = Date.now() - windowDays * 24 * 60 * 60 * 1e3;
304
+ let query = `
305
+ SELECT COUNT(*) as count
306
+ FROM routing_outcomes
307
+ WHERE provider = ? AND timestamp >= ?
308
+ AND id = (SELECT MAX(latest.id) FROM routing_outcomes latest WHERE latest.routing_id = routing_outcomes.routing_id)
309
+ `;
310
+ const params = [providerId, cutoffTime];
311
+ if (model) {
312
+ query += " AND model = ?";
313
+ params.push(model);
314
+ }
315
+ if (domain) {
316
+ query += " AND domain = ?";
317
+ params.push(domain);
318
+ }
319
+ const result = this.db.prepare(query).get(...params);
320
+ return result?.count ?? 0;
321
+ } catch (error) {
322
+ console.warn("[RoutingHistoryStore] Failed to get sample size:", error);
323
+ return 0;
324
+ }
325
+ }
326
+ /**
327
+ * Get quality-sample size: only outcomes with a real judged quality_score.
328
+ * Missing quality must not inflate quality confidence, averages, or rankings.
329
+ */
330
+ getQualitySampleSize(providerId, domain, windowDays = 30, model) {
331
+ if (!this.db) return 0;
332
+ try {
333
+ const cutoffTime = Date.now() - windowDays * 24 * 60 * 60 * 1e3;
334
+ let query = `
335
+ SELECT COUNT(*) as count
336
+ FROM routing_outcomes
337
+ WHERE provider = ? AND timestamp >= ?
338
+ AND quality_provenance = 'judged' AND quality_score IS NOT NULL
339
+ AND id = (SELECT MAX(latest.id) FROM routing_outcomes latest WHERE latest.routing_id = routing_outcomes.routing_id)
340
+ `;
341
+ const params = [providerId, cutoffTime];
342
+ if (model) {
343
+ query += " AND model = ?";
344
+ params.push(model);
345
+ }
346
+ if (domain) {
347
+ query += " AND domain = ?";
348
+ params.push(domain);
349
+ }
350
+ const result = this.db.prepare(query).get(...params);
351
+ return result?.count ?? 0;
352
+ } catch (error) {
353
+ console.warn("[RoutingHistoryStore] Failed to get quality sample size:", error);
354
+ return 0;
355
+ }
356
+ }
357
+ /**
358
+ * Get domain provider rankings sorted by performance
359
+ */
360
+ getDomainProviderRankings(domain, windowDays = 30) {
361
+ if (!this.db) return [];
362
+ try {
363
+ const cutoffTime = Date.now() - windowDays * 24 * 60 * 60 * 1e3;
364
+ const query = `
365
+ SELECT
366
+ provider,
367
+ AVG(quality_score) as score,
368
+ COUNT(*) as count
369
+ FROM routing_outcomes
370
+ WHERE domain = ? AND timestamp >= ?
371
+ AND quality_provenance = 'judged' AND quality_score IS NOT NULL
372
+ AND id = (SELECT MAX(latest.id) FROM routing_outcomes latest WHERE latest.routing_id = routing_outcomes.routing_id)
373
+ GROUP BY provider
374
+ ORDER BY score DESC
375
+ `;
376
+ const results = this.db.prepare(query).all(domain, cutoffTime);
377
+ return results;
378
+ } catch (error) {
379
+ console.warn("[RoutingHistoryStore] Failed to get provider rankings:", error);
380
+ return [];
381
+ }
382
+ }
383
+ /**
384
+ * Prune old records (older than N days)
385
+ * Returns number of records deleted
386
+ */
387
+ pruneOlderThan(days) {
388
+ if (!this.db) return 0;
389
+ try {
390
+ const cutoffTime = Date.now() - days * 24 * 60 * 60 * 1e3;
391
+ const eventsDeleted = this.db.prepare("DELETE FROM routing_events WHERE timestamp < ?").run(cutoffTime);
392
+ const outcomesDeleted = this.db.prepare("DELETE FROM routing_outcomes WHERE timestamp < ?").run(cutoffTime);
393
+ return (eventsDeleted.changes ?? 0) + (outcomesDeleted.changes ?? 0);
394
+ } catch (error) {
395
+ console.warn("[RoutingHistoryStore] Failed to prune old records:", error);
396
+ return 0;
397
+ }
398
+ }
399
+ /**
400
+ * Get store statistics
401
+ */
402
+ getStats() {
403
+ if (!this.db) {
404
+ return {
405
+ totalEvents: 0,
406
+ oldestEvent: null,
407
+ providers: []
408
+ };
409
+ }
410
+ try {
411
+ const totalEvents = this.db.prepare("SELECT COUNT(*) as count FROM routing_events").get().count;
412
+ const oldestEventResult = this.db.prepare("SELECT MIN(timestamp) as oldest FROM routing_events").get();
413
+ const oldestEvent = oldestEventResult.oldest ? new Date(oldestEventResult.oldest) : null;
414
+ const providerResults = this.db.prepare(`
415
+ SELECT DISTINCT provider
416
+ FROM routing_outcomes
417
+ WHERE id = (
418
+ SELECT MAX(latest.id)
419
+ FROM routing_outcomes latest
420
+ WHERE latest.routing_id = routing_outcomes.routing_id
421
+ )
422
+ `).all();
423
+ const providers = providerResults.map((r) => r.provider);
424
+ return {
425
+ totalEvents,
426
+ oldestEvent,
427
+ providers
428
+ };
429
+ } catch (error) {
430
+ console.warn("[RoutingHistoryStore] Failed to get stats:", error);
431
+ return {
432
+ totalEvents: 0,
433
+ oldestEvent: null,
434
+ providers: []
435
+ };
436
+ }
437
+ }
438
+ /**
439
+ * Close database connection
440
+ */
441
+ close() {
442
+ if (this.db) {
443
+ try {
444
+ this.db.close();
445
+ } catch (error) {
446
+ console.warn("[RoutingHistoryStore] Failed to close database:", error);
447
+ }
448
+ this.db = null;
449
+ }
450
+ }
451
+ };
452
+ var SqliteRoutingTelemetryCollector = class {
453
+ constructor(store) {
454
+ this.store = store;
455
+ }
456
+ store;
457
+ async emitEvent(event) {
458
+ this.store.persistEvent(event);
459
+ }
460
+ /**
461
+ * @internal Not yet implemented. Returns zeroed defaults rather than querying
462
+ * the SQLite store; no public CLI surface should present its result as real
463
+ * routing statistics.
464
+ */
465
+ async getRoutingStats(_startTime, _endTime) {
466
+ return {
467
+ totalRoutings: 0,
468
+ averageAnalysisTime: 0,
469
+ averageRoutingTime: 0,
470
+ providerUsageCounts: buildZeroedProviderMap(),
471
+ successRate: null,
472
+ cacheHitRate: null
473
+ };
474
+ }
475
+ /**
476
+ * @internal Not yet implemented. Returns zeroed per-provider defaults rather
477
+ * than querying the SQLite store; no public CLI surface should present its
478
+ * result as real provider-performance analytics.
479
+ */
480
+ async getProviderPerformance(_startTime, _endTime) {
481
+ const emptyMetrics = {
482
+ assignments: 0,
483
+ averageConfidence: 0,
484
+ successRate: null,
485
+ averageRoutingTime: 0,
486
+ domainDistribution: {}
487
+ };
488
+ const result = {};
489
+ for (const providerId of resolveRegistryProviderIds()) {
490
+ result[providerId] = { ...emptyMetrics };
491
+ }
492
+ return result;
493
+ }
494
+ };
495
+ function resolveRegistryProviderIds() {
496
+ try {
497
+ return ProviderRegistry.getAllProviderIds();
498
+ } catch {
499
+ return [];
500
+ }
501
+ }
502
+ function buildZeroedProviderMap() {
503
+ const map = {};
504
+ for (const providerId of resolveRegistryProviderIds()) {
505
+ map[providerId] = 0;
506
+ }
507
+ return map;
508
+ }
509
+ var globalRoutingHistoryStores = /* @__PURE__ */ new Map();
510
+ function getGlobalRoutingHistoryStore() {
511
+ const configuredPath = readEnv(POETIC_ROUTING_HISTORY_DB).value;
512
+ const dbPath = configuredPath ? configuredPath : (() => {
513
+ const poeticDir = getRuntimeEnv(POETIC_TELEMETRY_DIR.name) ?? join(resolvePoeticRoot(process.cwd()), ".poetic");
514
+ const resolver = TelemetryPathResolver.getInstance();
515
+ return join(resolver.resolveDbDir(poeticDir), "routing-history.db");
516
+ })();
517
+ const existing = globalRoutingHistoryStores.get(dbPath);
518
+ if (existing) {
519
+ return existing;
520
+ }
521
+ const store = new RoutingHistoryStore(dbPath);
522
+ globalRoutingHistoryStores.set(dbPath, store);
523
+ return store;
524
+ }
525
+ var ROUTING_SAMPLE_FLOOR = 2;
526
+ var ROUTING_FULL_CONFIDENCE_SAMPLES = 20;
527
+ function computeHistoricalAdjustment(providerId, domain, store, windowDays = 30, model) {
528
+ if (model) {
529
+ return computeHistoricalAdjustmentWithModelFallback(
530
+ providerId,
531
+ domain,
532
+ store,
533
+ windowDays,
534
+ model
535
+ );
536
+ }
537
+ return computeAdjustmentFromSamples(providerId, domain, store, windowDays, void 0);
538
+ }
539
+ function computeAdjustmentFromSamples(providerId, domain, store, windowDays, model) {
540
+ const sampleSize = store.getSampleSize(providerId, domain, windowDays, model);
541
+ const qualitySampleSize = store.getQualitySampleSize(providerId, domain, windowDays, model);
542
+ if (sampleSize < ROUTING_SAMPLE_FLOOR) {
543
+ return {
544
+ adjustment: 0,
545
+ confidence: 0,
546
+ sampleSize,
547
+ reason: "insufficient data"
548
+ };
549
+ }
550
+ const successRate = store.getProviderSuccessRate(providerId, domain, windowDays, model);
551
+ const qualityScore = store.getProviderAverageScore(providerId, domain, windowDays, model);
552
+ const hasQualitySamples = qualityScore != null && qualitySampleSize > 0;
553
+ const successConfidence = Math.min(1, sampleSize / ROUTING_FULL_CONFIDENCE_SAMPLES);
554
+ const qualityConfidence = hasQualitySamples ? Math.min(1, qualitySampleSize / ROUTING_FULL_CONFIDENCE_SAMPLES) : 0;
555
+ const confidence = hasQualitySamples ? successConfidence * 0.7 + qualityConfidence * 0.3 : successConfidence;
556
+ const successAdjustment = (successRate - 0.5) * 30;
557
+ const qualityAdjustment = hasQualitySamples ? (qualityScore - 50) / 50 * 15 : 0;
558
+ const scaledAdjustment = hasQualitySamples ? successAdjustment * 0.7 * successConfidence + qualityAdjustment * 0.3 * qualityConfidence : successAdjustment * successConfidence;
559
+ const adjustment = Math.max(-15, Math.min(15, scaledAdjustment));
560
+ const reasons = [];
561
+ if (successRate < 0.4) {
562
+ reasons.push("low success rate");
563
+ } else if (successRate > 0.6) {
564
+ reasons.push("high success rate");
565
+ }
566
+ if (hasQualitySamples) {
567
+ if (qualityScore < 40) {
568
+ reasons.push("low quality");
569
+ } else if (qualityScore > 60) {
570
+ reasons.push("high quality");
571
+ }
572
+ }
573
+ if (sampleSize < ROUTING_FULL_CONFIDENCE_SAMPLES) {
574
+ reasons.push("limited samples");
575
+ }
576
+ const reason = reasons.length > 0 ? reasons.join(", ") : hasQualitySamples ? `success=${(successRate * 100).toFixed(0)}%, quality=${qualityScore.toFixed(0)}` : `success=${(successRate * 100).toFixed(0)}% (no quality samples)`;
577
+ return { adjustment, confidence, sampleSize, reason };
578
+ }
579
+ function computeHistoricalAdjustmentWithModelFallback(providerId, domain, store, windowDays, model) {
580
+ const modelCount = store.getSampleSize(providerId, domain, windowDays, model);
581
+ const providerCount = store.getSampleSize(providerId, domain, windowDays, void 0);
582
+ const modelAboveFloor = modelCount >= ROUTING_SAMPLE_FLOOR;
583
+ const providerAboveFloor = providerCount >= ROUTING_SAMPLE_FLOOR;
584
+ if (!modelAboveFloor && !providerAboveFloor) {
585
+ return {
586
+ adjustment: 0,
587
+ confidence: 0,
588
+ sampleSize: modelCount,
589
+ reason: "insufficient data"
590
+ };
591
+ }
592
+ if (modelAboveFloor && !providerAboveFloor) {
593
+ return computeAdjustmentFromSamples(providerId, domain, store, windowDays, model);
594
+ }
595
+ if (!modelAboveFloor && providerAboveFloor) {
596
+ const base = computeAdjustmentFromSamples(providerId, domain, store, windowDays, void 0);
597
+ return {
598
+ ...base,
599
+ sampleSize: modelCount,
600
+ reason: `${base.reason} (provider fallback, n=${providerCount})`
601
+ };
602
+ }
603
+ const modelResult = computeAdjustmentFromSamples(providerId, domain, store, windowDays, model);
604
+ const providerResult = computeAdjustmentFromSamples(
605
+ providerId,
606
+ domain,
607
+ store,
608
+ windowDays,
609
+ void 0
610
+ );
611
+ const modelWeight = Math.min(0.8, modelCount / providerCount);
612
+ const providerWeight = 1 - modelWeight;
613
+ const blendedAdjustment = Math.max(
614
+ -15,
615
+ Math.min(15, modelResult.adjustment * modelWeight + providerResult.adjustment * providerWeight)
616
+ );
617
+ const blendedConfidence = Math.min(
618
+ 1,
619
+ modelResult.confidence * modelWeight + providerResult.confidence * providerWeight
620
+ );
621
+ return {
622
+ adjustment: blendedAdjustment,
623
+ confidence: blendedConfidence,
624
+ sampleSize: modelCount,
625
+ reason: `${modelResult.reason} (model+provider blend, mw=${modelWeight.toFixed(2)})`
626
+ };
627
+ }
628
+
629
+ export {
630
+ resolveOutcomeQuality,
631
+ RoutingHistoryStore,
632
+ SqliteRoutingTelemetryCollector,
633
+ getGlobalRoutingHistoryStore,
634
+ ROUTING_SAMPLE_FLOOR,
635
+ ROUTING_FULL_CONFIDENCE_SAMPLES,
636
+ computeHistoricalAdjustment
637
+ };
638
+ //# sourceMappingURL=chunk-RGROYC2G.js.map
@@ -0,0 +1,68 @@
1
+ import {
2
+ getProjectDataDir,
3
+ getStableRepoIdentity
4
+ } from "./chunk-UUH2RVKS.js";
5
+
6
+ // src/core/config/project-runtime-paths.ts
7
+ import fs from "fs";
8
+ import path from "path";
9
+ function repoRootFromPoeticDir(poeticDir) {
10
+ const resolved = path.resolve(poeticDir);
11
+ return path.basename(resolved) === ".poetic" ? path.dirname(resolved) : resolved;
12
+ }
13
+ function getRepoDataMigrationMarkerPath(poeticDir) {
14
+ return path.join(repoRootFromPoeticDir(poeticDir), ".poetic", "state", "data-migration.json");
15
+ }
16
+ function getSharedDataMigrationMarkerPath(poeticDir) {
17
+ const repoRoot = repoRootFromPoeticDir(poeticDir);
18
+ return path.join(getProjectDataDir(repoRoot), "state", "data-migration.json");
19
+ }
20
+ function readMarker(markerPath) {
21
+ try {
22
+ const parsed = JSON.parse(
23
+ fs.readFileSync(markerPath, "utf8")
24
+ );
25
+ if (parsed.version === 1 && typeof parsed.migratedAt === "string" && typeof parsed.repoRoot === "string" && typeof parsed.projectId === "string" && typeof parsed.globalTelemetryDir === "string" && typeof parsed.projectDataDir === "string") {
26
+ return parsed;
27
+ }
28
+ } catch {
29
+ }
30
+ return null;
31
+ }
32
+ function isSameDirectory(left, right) {
33
+ const resolvedLeft = path.resolve(left);
34
+ const resolvedRight = path.resolve(right);
35
+ if (resolvedLeft === resolvedRight) return true;
36
+ try {
37
+ return fs.realpathSync(resolvedLeft) === fs.realpathSync(resolvedRight);
38
+ } catch {
39
+ return false;
40
+ }
41
+ }
42
+ function readProjectDataMigrationMarker(poeticDir) {
43
+ const repoRoot = repoRootFromPoeticDir(poeticDir);
44
+ const expectedProjectId = getStableRepoIdentity(repoRoot);
45
+ const expectedProjectDataDir = path.resolve(getProjectDataDir(repoRoot));
46
+ const shared = readMarker(getSharedDataMigrationMarkerPath(poeticDir));
47
+ if (shared?.projectId === expectedProjectId && isSameDirectory(shared.projectDataDir, expectedProjectDataDir)) {
48
+ return shared;
49
+ }
50
+ const local = readMarker(getRepoDataMigrationMarkerPath(poeticDir));
51
+ if (local?.projectId === expectedProjectId && isSameDirectory(local.projectDataDir, expectedProjectDataDir)) {
52
+ return local;
53
+ }
54
+ return null;
55
+ }
56
+ function resolveProjectRuntimeDir(poeticDir, category) {
57
+ const marker = readProjectDataMigrationMarker(poeticDir);
58
+ if (marker) return path.join(marker.projectDataDir, category);
59
+ return path.join(repoRootFromPoeticDir(poeticDir), ".poetic", category);
60
+ }
61
+
62
+ export {
63
+ getRepoDataMigrationMarkerPath,
64
+ getSharedDataMigrationMarkerPath,
65
+ readProjectDataMigrationMarker,
66
+ resolveProjectRuntimeDir
67
+ };
68
+ //# sourceMappingURL=chunk-RGWHUI5E.js.map