@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,1033 @@
1
+ import {
2
+ globalScope
3
+ } from "./chunk-GAFJEYLK.js";
4
+ import {
5
+ canonicalizeVariantIdentifier
6
+ } from "./chunk-YWNAHW24.js";
7
+ import {
8
+ parseJsonWithContext
9
+ } from "./chunk-QVZMFDYG.js";
10
+ import {
11
+ emitWarning
12
+ } from "./chunk-EJGCZGUF.js";
13
+
14
+ // src/telemetry/unified-telemetry.ts
15
+ import { createReadStream } from "fs";
16
+ import { createInterface } from "readline/promises";
17
+
18
+ // src/telemetry/cost-dimensions.ts
19
+ var COST_TOLERANCE_ABSOLUTE = 1e-4;
20
+ var COST_TOLERANCE_RELATIVE = 1e-3;
21
+ function validateCostDimensions(cost) {
22
+ const errors = [];
23
+ if (!cost.provider || typeof cost.provider !== "string") {
24
+ errors.push("provider must be a non-empty string");
25
+ }
26
+ if (!cost.model || typeof cost.model !== "string") {
27
+ errors.push("model must be a non-empty string");
28
+ }
29
+ if (!cost.currency || typeof cost.currency !== "string") {
30
+ errors.push("currency must be a non-empty string");
31
+ }
32
+ if (typeof cost.inputTokens !== "number" || cost.inputTokens < 0) {
33
+ errors.push("inputTokens must be a non-negative number");
34
+ }
35
+ if (typeof cost.outputTokens !== "number" || cost.outputTokens < 0) {
36
+ errors.push("outputTokens must be a non-negative number");
37
+ }
38
+ if (typeof cost.totalCost !== "number" || cost.totalCost < 0) {
39
+ errors.push("totalCost must be a non-negative number");
40
+ }
41
+ if (typeof cost.timestamp !== "number" || cost.timestamp <= 0) {
42
+ errors.push("timestamp must be a positive number");
43
+ }
44
+ if (cost.cacheReadTokens !== void 0) {
45
+ if (typeof cost.cacheReadTokens !== "number" || cost.cacheReadTokens < 0) {
46
+ errors.push("cacheReadTokens must be a non-negative number");
47
+ }
48
+ }
49
+ if (cost.cacheWriteTokens !== void 0) {
50
+ if (typeof cost.cacheWriteTokens !== "number" || cost.cacheWriteTokens < 0) {
51
+ errors.push("cacheWriteTokens must be a non-negative number");
52
+ }
53
+ }
54
+ if (cost.cacheCost !== void 0) {
55
+ if (typeof cost.cacheCost !== "number" || cost.cacheCost < 0) {
56
+ errors.push("cacheCost must be a non-negative number");
57
+ }
58
+ }
59
+ if (cost.toolCosts !== void 0) {
60
+ if (typeof cost.toolCosts !== "number" || cost.toolCosts < 0) {
61
+ errors.push("toolCosts must be a non-negative number");
62
+ }
63
+ }
64
+ if (cost.infrastructureCost !== void 0) {
65
+ if (typeof cost.infrastructureCost !== "number" || cost.infrastructureCost < 0) {
66
+ errors.push("infrastructureCost must be a non-negative number");
67
+ }
68
+ }
69
+ if (cost.costBreakdown) {
70
+ const breakdown = cost.costBreakdown;
71
+ const breakdownComponents = [
72
+ ["inputCost", breakdown.inputCost],
73
+ ["outputCost", breakdown.outputCost],
74
+ ["cacheCost", breakdown.cacheCost],
75
+ ["toolCosts", breakdown.toolCosts],
76
+ ["infrastructureCost", breakdown.infrastructureCost]
77
+ ];
78
+ for (const [name, value] of breakdownComponents) {
79
+ if (value !== void 0 && (typeof value !== "number" || value < 0)) {
80
+ errors.push(`costBreakdown.${name} must be a non-negative number`);
81
+ }
82
+ }
83
+ const calculatedTotal = breakdown.inputCost + breakdown.outputCost + (breakdown.cacheCost || 0) + (breakdown.toolCosts || 0) + (breakdown.infrastructureCost || 0);
84
+ if (Number.isFinite(calculatedTotal) && Number.isFinite(cost.totalCost)) {
85
+ const difference = Math.abs(calculatedTotal - cost.totalCost);
86
+ const magnitude = Math.max(1, Math.abs(calculatedTotal), Math.abs(cost.totalCost));
87
+ const tolerance = Math.max(COST_TOLERANCE_ABSOLUTE, magnitude * COST_TOLERANCE_RELATIVE);
88
+ if (difference > tolerance) {
89
+ errors.push(
90
+ `costBreakdown sum (${calculatedTotal.toFixed(4)}) does not match totalCost (${cost.totalCost.toFixed(4)})`
91
+ );
92
+ }
93
+ }
94
+ }
95
+ return {
96
+ valid: errors.length === 0,
97
+ errors
98
+ };
99
+ }
100
+
101
+ // src/telemetry/variant-normalization.ts
102
+ function normalizeVariant(variant) {
103
+ if (typeof variant !== "string") {
104
+ return "unknown";
105
+ }
106
+ const trimmed = variant.trim();
107
+ return trimmed || "unknown";
108
+ }
109
+ function normalizeVariantForEventId(variant) {
110
+ const normalized = normalizeVariant(variant);
111
+ return normalized.replace(/[^A-Za-z0-9_-]+/g, "-").replace(/-+/g, "-");
112
+ }
113
+
114
+ // src/telemetry/unified-telemetry.ts
115
+ var ENV_NEW = "POETIC_UNIFIED_TELEMETRY";
116
+ var ENV_LEGACY = "ENABLE_UNIFIED_TELEMETRY";
117
+ var UNIFIED_TELEMETRY_FLAG = ENV_NEW;
118
+ var legacyWarningEmitted = false;
119
+ function buildModelInvocationEventId(taskId, variant, provider, model) {
120
+ const normalizedVariant = normalizeVariant(variant);
121
+ const canonicalVariant = canonicalizeVariantIdentifier({
122
+ variant: normalizedVariant,
123
+ provider,
124
+ model,
125
+ strategy: normalizedVariant.includes(":") ? void 0 : normalizedVariant,
126
+ executionMode: "local"
127
+ });
128
+ return `${taskId}-${normalizeVariantForEventId(canonicalVariant)}`;
129
+ }
130
+ function readUnifiedTelemetryFlag() {
131
+ const newVal = process.env[ENV_NEW];
132
+ const legacyVal = process.env[ENV_LEGACY];
133
+ if (newVal === void 0 && legacyVal !== void 0 && !legacyWarningEmitted) {
134
+ console.warn(`Warning: ${ENV_LEGACY} is deprecated; use ${ENV_NEW}.`);
135
+ legacyWarningEmitted = true;
136
+ }
137
+ return newVal ?? legacyVal;
138
+ }
139
+ var UnifiedTelemetryLogger = class _UnifiedTelemetryLogger {
140
+ telemetry;
141
+ costTracker;
142
+ telemetryDb;
143
+ // SQLite database connection (optional)
144
+ /** Track total dual-write operations for metrics */
145
+ dualWriteCount = 0;
146
+ /** Track dual-write errors for monitoring */
147
+ dualWriteErrors = 0;
148
+ /** Cache feature flag value (check once per instance) */
149
+ unifiedMode;
150
+ options;
151
+ /**
152
+ * Create a unified telemetry logger
153
+ *
154
+ * @param telemetry - Telemetry logger instance
155
+ * @param costTracker - Cost tracking instance
156
+ * @param telemetryDb - Optional SQLite database connection for data retrieval
157
+ */
158
+ constructor(telemetry, costTracker, telemetryDb, options = {}) {
159
+ this.telemetry = telemetry;
160
+ this.costTracker = costTracker;
161
+ this.telemetryDb = telemetryDb;
162
+ this.options = options;
163
+ this.unifiedMode = this.getFeatureFlag();
164
+ this.logInitialization();
165
+ }
166
+ /**
167
+ * Validates and converts a string to VariantLifecycleEvent
168
+ * @throws {Error} If event string is not a valid VariantLifecycleEvent
169
+ */
170
+ validateEventType(event) {
171
+ const validEvents = [
172
+ "started",
173
+ "first_commit",
174
+ "completed",
175
+ "failed",
176
+ "evaluated"
177
+ ];
178
+ if (!validEvents.includes(event)) {
179
+ throw new Error(
180
+ `Invalid variant event type: "${event}". Must be one of: ${validEvents.join(", ")}`
181
+ );
182
+ }
183
+ return event;
184
+ }
185
+ static formatUtcLogDate(date) {
186
+ const year = date.getUTCFullYear();
187
+ const month = String(date.getUTCMonth() + 1).padStart(2, "0");
188
+ const day = String(date.getUTCDate()).padStart(2, "0");
189
+ return {
190
+ yearMonth: `${year}-${month}`,
191
+ day: `${year}-${month}-${day}`
192
+ };
193
+ }
194
+ /**
195
+ * Log a model invocation with cost data
196
+ *
197
+ * Core method for logging AI model invocations with associated cost information.
198
+ * Uses dual-write mode when unified telemetry is enabled.
199
+ *
200
+ * @param event - Event data with cost dimensions
201
+ * @returns Promise that resolves when logging is complete
202
+ *
203
+ * @throws {Error} If cost validation fails or logging errors occur
204
+ */
205
+ async logModelInvocation(event) {
206
+ if (event.cost) {
207
+ const validation = validateCostDimensions(event.cost);
208
+ if (!validation.valid) {
209
+ throw new Error(`Invalid cost dimensions: ${validation.errors.join(", ")}`);
210
+ }
211
+ }
212
+ const normalizedEvent = this.normalizeModelInvocationEvent(event);
213
+ if (this.unifiedMode) {
214
+ return this.dualWrite(normalizedEvent);
215
+ }
216
+ return this.legacyWrite(normalizedEvent);
217
+ }
218
+ /**
219
+ * Log a variant execution event with optional cost data
220
+ *
221
+ * Simplified method for logging variant-specific events. Cost data
222
+ * is optional and can be attached later.
223
+ *
224
+ * @param taskId - Task identifier
225
+ * @param variant - Variant name
226
+ * @param event - Event type
227
+ * @param data - Event data (may include cost)
228
+ */
229
+ async logVariantEvent(taskId, variant, event, data) {
230
+ const eventData = {
231
+ taskId,
232
+ variant: normalizeVariant(variant),
233
+ event,
234
+ provider: data?.provider || "unknown",
235
+ model: "unknown",
236
+ cost: data?.cost,
237
+ metadata: data
238
+ };
239
+ return this.logModelInvocation(eventData);
240
+ }
241
+ /**
242
+ * Validate consistency between telemetry and cost tracker
243
+ *
244
+ * Compares cost data between the two systems to ensure dual-write
245
+ * is working correctly. Should show 100% match when properly configured.
246
+ *
247
+ * @param options - Validation options
248
+ * @param options.startDate - Start of date range (ISO string)
249
+ * @param options.endDate - End of date range (ISO string)
250
+ * @param options.sampleSize - Maximum events to check (default: 1000)
251
+ * @returns Consistency report with match statistics
252
+ */
253
+ async validateConsistency(options) {
254
+ const sampleSize = options.sampleSize || 1e3;
255
+ await this.telemetry.flushAsync();
256
+ const telemetryEvents = await this.getTelemetryEventsWithCost(
257
+ options.startDate,
258
+ options.endDate,
259
+ sampleSize
260
+ );
261
+ const costTrackerEvents = await this.getCostTrackerEvents(
262
+ options.startDate,
263
+ options.endDate,
264
+ sampleSize
265
+ );
266
+ return this.compareEvents(telemetryEvents, costTrackerEvents);
267
+ }
268
+ /**
269
+ * Get dual-write statistics
270
+ *
271
+ * Returns metrics about dual-write operations for monitoring and debugging.
272
+ *
273
+ * @returns Statistics object
274
+ */
275
+ getDualWriteStats() {
276
+ const successRate = this.dualWriteCount > 0 ? 1 - this.dualWriteErrors / this.dualWriteCount : 1;
277
+ return {
278
+ enabled: this.unifiedMode,
279
+ totalWrites: this.dualWriteCount,
280
+ errors: this.dualWriteErrors,
281
+ successRate
282
+ };
283
+ }
284
+ /**
285
+ * Update feature flag at runtime (for testing)
286
+ *
287
+ * @param enabled - Whether to enable unified mode
288
+ */
289
+ setUnifiedMode(enabled) {
290
+ this.unifiedMode = enabled;
291
+ this.logModeChange();
292
+ }
293
+ // ============================================================================
294
+ // PRIVATE METHODS
295
+ // ============================================================================
296
+ normalizeModelInvocationEvent(event) {
297
+ return {
298
+ ...event,
299
+ variant: normalizeVariant(event.variant)
300
+ };
301
+ }
302
+ /**
303
+ * Dual-write to both telemetry and cost tracker
304
+ */
305
+ async dualWrite(event) {
306
+ this.dualWriteCount++;
307
+ const telemetryPromise = Promise.resolve().then(
308
+ () => this.telemetry.logVariantEvent(
309
+ event.taskId,
310
+ event.variant,
311
+ this.validateEventType(event.event),
312
+ {
313
+ provider: event.provider,
314
+ model: event.model,
315
+ strategy: event.variant,
316
+ executionMode: "local",
317
+ cost: event.cost,
318
+ cloudMetadata: {
319
+ costEstimate: event.cost?.totalCost,
320
+ ...event.metadata?.cloudMetadata
321
+ },
322
+ ...event.metadata
323
+ }
324
+ )
325
+ );
326
+ const costPromise = event.cost ? this.writeToCostTrackerWithRetry(event) : Promise.resolve();
327
+ const [telemetryResult, costResult] = await Promise.allSettled([telemetryPromise, costPromise]);
328
+ const telemetryOk = telemetryResult.status === "fulfilled";
329
+ const costTrackerOk = costResult.status === "fulfilled";
330
+ if (!telemetryOk) {
331
+ this.dualWriteErrors++;
332
+ this.logError("telemetry_write_failed", telemetryResult.reason);
333
+ }
334
+ if (!costTrackerOk && event.cost) {
335
+ this.dualWriteErrors++;
336
+ this.logError("cost_tracker_write_failed", costResult.reason);
337
+ }
338
+ if (!telemetryOk || !costTrackerOk && event.cost) {
339
+ try {
340
+ this.costTracker.logCostEvent("unified_telemetry_partial_failure", {
341
+ telemetryOk,
342
+ costTrackerOk,
343
+ event: event.event,
344
+ taskId: event.taskId,
345
+ timestamp: Date.now()
346
+ });
347
+ } catch (error) {
348
+ this.logError("partial_failure_logging_failed", error);
349
+ }
350
+ }
351
+ if (!telemetryOk && !costTrackerOk && event.cost) {
352
+ throw new Error(`Dual-write failed: telemetry=${telemetryOk}, costTracker=${costTrackerOk}`);
353
+ }
354
+ return { telemetry: telemetryOk, costTracker: event.cost ? costTrackerOk : false };
355
+ }
356
+ async writeToCostTrackerWithRetry(event) {
357
+ try {
358
+ await this.writeToCostTracker(event);
359
+ } catch (error) {
360
+ await new Promise((resolve) => setTimeout(resolve, 50));
361
+ await this.writeToCostTracker(event);
362
+ this.logError("cost_tracker_write_recovered_after_retry", error);
363
+ }
364
+ }
365
+ /**
366
+ * Legacy separate write mode
367
+ */
368
+ async legacyWrite(event) {
369
+ await this.telemetry.logVariantEvent(
370
+ event.taskId,
371
+ event.variant,
372
+ this.validateEventType(event.event),
373
+ {
374
+ provider: event.provider,
375
+ ...event.metadata
376
+ }
377
+ );
378
+ if (event.cost) {
379
+ await this.writeToCostTracker(event);
380
+ }
381
+ return { telemetry: true, costTracker: Boolean(event.cost) };
382
+ }
383
+ /**
384
+ * Write cost data to cost tracker
385
+ */
386
+ async writeToCostTracker(event) {
387
+ if (!event.cost) {
388
+ return;
389
+ }
390
+ this.costTracker.logCostEvent("model_invocation", {
391
+ taskId: event.taskId,
392
+ variant: event.variant,
393
+ provider: event.provider,
394
+ model: event.model,
395
+ inputTokens: event.cost.inputTokens ?? 0,
396
+ outputTokens: event.cost.outputTokens ?? 0,
397
+ totalCost: event.cost.totalCost,
398
+ currency: event.cost.currency,
399
+ timestamp: event.cost.timestamp,
400
+ cacheReadTokens: event.cost.cacheReadTokens ?? 0,
401
+ cacheWriteTokens: event.cost.cacheWriteTokens ?? 0,
402
+ cacheCost: event.cost.cacheCost ?? 0,
403
+ toolCosts: event.cost.toolCosts ?? 0,
404
+ infrastructureCost: event.cost.infrastructureCost ?? 0
405
+ });
406
+ }
407
+ /**
408
+ * Get telemetry events with cost data
409
+ *
410
+ * Queries the telemetry database (variant_executions) for events that have cost
411
+ * data embedded in their metadata. Cost is extracted from JSON-serialized cost
412
+ * dimensions in variant execution records.
413
+ *
414
+ * @param startDate - ISO date string for range start
415
+ * @param endDate - ISO date string for range end
416
+ * @param limit - Maximum number of events to return
417
+ * @returns Array of events with extracted cost data
418
+ */
419
+ async getTelemetryEventsWithCost(startDate, endDate, limit) {
420
+ if (!this.telemetryDb) {
421
+ return [];
422
+ }
423
+ try {
424
+ const startTimestamp = new Date(startDate).getTime();
425
+ const endTimestamp = new Date(endDate).getTime();
426
+ const startIso = new Date(startDate).toISOString();
427
+ const endIso = new Date(endDate).toISOString();
428
+ const scope = globalScope();
429
+ const query = `
430
+ SELECT
431
+ id,
432
+ task_id,
433
+ variant,
434
+ cloud_metadata,
435
+ created_at
436
+ FROM variant_executions
437
+ WHERE ${scope.where}
438
+ AND (
439
+ (typeof(created_at) = 'integer' AND created_at >= ? AND created_at <= ?)
440
+ OR (typeof(created_at) = 'text' AND created_at >= ? AND created_at <= ?)
441
+ )
442
+ AND cloud_metadata IS NOT NULL
443
+ ORDER BY created_at DESC
444
+ LIMIT ?
445
+ `;
446
+ const rows = this.telemetryDb.prepare(query).all(...scope.params, startTimestamp, endTimestamp, startIso, endIso, limit);
447
+ const events = [];
448
+ for (const row of rows) {
449
+ try {
450
+ const metadata = parseJsonWithContext(
451
+ row.cloud_metadata,
452
+ `[Unified Telemetry] cloud metadata for task ${row.task_id}`
453
+ );
454
+ if (typeof metadata.costEstimate === "number") {
455
+ events.push({
456
+ eventId: buildModelInvocationEventId(row.task_id, row.variant),
457
+ taskId: row.task_id,
458
+ cost: metadata.costEstimate
459
+ });
460
+ }
461
+ } catch (error) {
462
+ this.logError("metadata_parse_failed", error);
463
+ emitWarning(
464
+ "WS-003",
465
+ {
466
+ taskId: row.task_id,
467
+ subsystem: "telemetry",
468
+ variant: row.variant,
469
+ executionPhase: "validation"
470
+ },
471
+ {
472
+ severity: "WARN" /* WARN */,
473
+ metadata: {
474
+ operation: "metadata_parse",
475
+ error: error instanceof Error ? error.message : String(error),
476
+ eventId: `${row.task_id}-${row.variant}`
477
+ }
478
+ }
479
+ );
480
+ }
481
+ }
482
+ return events;
483
+ } catch (error) {
484
+ this.logError("telemetry_query_failed", error);
485
+ return [];
486
+ }
487
+ }
488
+ /**
489
+ * Get cost tracker events
490
+ *
491
+ * Reads cost events from the JSONL log files written by TelemetryCost.
492
+ * Scans log files within the date range and extracts model_invocation events
493
+ * with cost data.
494
+ *
495
+ * @param startDate - ISO date string for range start
496
+ * @param endDate - ISO date string for range end
497
+ * @param limit - Maximum number of events to return
498
+ * @returns Array of cost events from JSONL logs
499
+ */
500
+ async getCostTrackerEvents(startDate, endDate, limit) {
501
+ try {
502
+ const events = [];
503
+ const startDate_ = new Date(startDate);
504
+ const endDate_ = new Date(endDate);
505
+ const fs = await import("fs/promises");
506
+ const path = await import("path");
507
+ const logsDir = this.telemetry.getLogsDir();
508
+ try {
509
+ await fs.access(logsDir);
510
+ } catch {
511
+ return [];
512
+ }
513
+ const datesToScan = [];
514
+ const currentDate = new Date(startDate_);
515
+ while (currentDate <= endDate_) {
516
+ const { yearMonth, day } = _UnifiedTelemetryLogger.formatUtcLogDate(currentDate);
517
+ datesToScan.push(`${yearMonth}/${day}.jsonl`);
518
+ currentDate.setUTCDate(currentDate.getUTCDate() + 1);
519
+ }
520
+ for (const relPath of datesToScan) {
521
+ if (events.length >= limit) break;
522
+ const logPath = path.join(logsDir, relPath);
523
+ try {
524
+ const lineReader = createInterface({
525
+ input: createReadStream(logPath, { encoding: "utf8" }),
526
+ crlfDelay: Infinity
527
+ });
528
+ try {
529
+ for await (const line of lineReader) {
530
+ if (events.length >= limit) break;
531
+ if (!line.trim()) continue;
532
+ try {
533
+ const entry = parseJsonWithContext(
534
+ line,
535
+ `[Unified Telemetry] log entry from ${logPath}`
536
+ );
537
+ const totalCost = typeof entry.totalCost === "number" ? entry.totalCost : Number(entry.totalCost);
538
+ if (entry.event === "model_invocation" && entry.taskId && Number.isFinite(totalCost)) {
539
+ const taskId = typeof entry.taskId === "string" ? entry.taskId : String(entry.taskId);
540
+ const eventId = buildModelInvocationEventId(
541
+ taskId,
542
+ typeof entry.variant === "string" ? entry.variant : null,
543
+ typeof entry.provider === "string" ? entry.provider : void 0,
544
+ typeof entry.model === "string" ? entry.model : void 0
545
+ );
546
+ events.push({
547
+ eventId,
548
+ taskId,
549
+ cost: totalCost
550
+ });
551
+ }
552
+ } catch (error) {
553
+ this.logError("jsonl_line_parse_failed", error);
554
+ emitWarning(
555
+ "WS-003",
556
+ {
557
+ taskId: "unknown",
558
+ subsystem: "telemetry",
559
+ executionPhase: "validation"
560
+ },
561
+ {
562
+ severity: "WARN" /* WARN */,
563
+ metadata: {
564
+ operation: "jsonl_parse_line",
565
+ error: error instanceof Error ? error.message : String(error),
566
+ file: relPath,
567
+ linePreview: line.substring(0, 100)
568
+ }
569
+ }
570
+ );
571
+ }
572
+ }
573
+ } finally {
574
+ lineReader.close();
575
+ }
576
+ } catch (error) {
577
+ this.logError("jsonl_file_read_failed", error);
578
+ emitWarning(
579
+ "WS-003",
580
+ {
581
+ taskId: "unknown",
582
+ subsystem: "telemetry",
583
+ executionPhase: "validation"
584
+ },
585
+ {
586
+ severity: "WARN" /* WARN */,
587
+ metadata: {
588
+ operation: "jsonl_file_read",
589
+ error: error instanceof Error ? error.message : String(error),
590
+ file: relPath
591
+ }
592
+ }
593
+ );
594
+ }
595
+ }
596
+ return events;
597
+ } catch (error) {
598
+ this.logError("cost_tracker_query_failed", error);
599
+ return [];
600
+ }
601
+ }
602
+ /**
603
+ * Compare events from both systems
604
+ */
605
+ compareEvents(telemetryEvents, costTrackerEvents) {
606
+ const groupCosts = (events) => {
607
+ const grouped = /* @__PURE__ */ new Map();
608
+ for (const event of events) {
609
+ const bucket = grouped.get(event.eventId) ?? [];
610
+ bucket.push(event.cost);
611
+ grouped.set(event.eventId, bucket);
612
+ }
613
+ return grouped;
614
+ };
615
+ const telemetryMap = groupCosts(telemetryEvents);
616
+ const costTrackerMap = groupCosts(costTrackerEvents);
617
+ const discrepancyDetails = [];
618
+ let matchingEvents = 0;
619
+ for (const [eventId, telemetryCosts] of telemetryMap) {
620
+ const costTrackerCosts = costTrackerMap.get(eventId) ?? [];
621
+ const comparisons = Math.max(telemetryCosts.length, costTrackerCosts.length);
622
+ for (let index = 0; index < comparisons; index += 1) {
623
+ const telemetryCost = telemetryCosts[index];
624
+ const costTrackerCost = costTrackerCosts[index];
625
+ if (telemetryCost === void 0) {
626
+ discrepancyDetails.push({
627
+ eventId,
628
+ telemetryCost: 0,
629
+ costTrackerCost: costTrackerCost ?? 0,
630
+ difference: costTrackerCost ?? 0
631
+ });
632
+ } else if (costTrackerCost === void 0) {
633
+ discrepancyDetails.push({
634
+ eventId,
635
+ telemetryCost,
636
+ costTrackerCost: 0,
637
+ difference: telemetryCost
638
+ });
639
+ } else if (Math.abs(telemetryCost - costTrackerCost) > 1e-4) {
640
+ discrepancyDetails.push({
641
+ eventId,
642
+ telemetryCost,
643
+ costTrackerCost,
644
+ difference: Math.abs(telemetryCost - costTrackerCost)
645
+ });
646
+ } else {
647
+ matchingEvents++;
648
+ }
649
+ }
650
+ }
651
+ for (const [eventId, costTrackerCosts] of costTrackerMap) {
652
+ if (telemetryMap.has(eventId)) {
653
+ continue;
654
+ }
655
+ for (const costTrackerCost of costTrackerCosts) {
656
+ discrepancyDetails.push({
657
+ eventId,
658
+ telemetryCost: 0,
659
+ costTrackerCost,
660
+ difference: costTrackerCost
661
+ });
662
+ }
663
+ }
664
+ const totalEvents = Math.max(telemetryEvents.length, costTrackerEvents.length);
665
+ const matchPercentage = totalEvents > 0 ? matchingEvents / totalEvents * 100 : 100;
666
+ return {
667
+ totalEvents,
668
+ matchingEvents,
669
+ discrepancies: discrepancyDetails.length,
670
+ matchPercentage,
671
+ discrepancyDetails,
672
+ timestamp: Date.now()
673
+ };
674
+ }
675
+ /**
676
+ * Get feature flag value using the centralized env reader.
677
+ */
678
+ getFeatureFlag() {
679
+ const value = readUnifiedTelemetryFlag();
680
+ if (value === void 0) {
681
+ return this.options.defaultUnifiedMode ?? false;
682
+ }
683
+ switch (value.trim().toLowerCase()) {
684
+ case "1":
685
+ case "true":
686
+ case "yes":
687
+ case "on":
688
+ return true;
689
+ default:
690
+ return false;
691
+ }
692
+ }
693
+ /**
694
+ * Log initialization
695
+ */
696
+ logInitialization() {
697
+ this.costTracker.logCostEvent("unified_telemetry_initialized", {
698
+ mode: this.unifiedMode ? "dual-write" : "legacy",
699
+ flag: UNIFIED_TELEMETRY_FLAG,
700
+ timestamp: Date.now()
701
+ });
702
+ }
703
+ /**
704
+ * Log mode change
705
+ */
706
+ logModeChange() {
707
+ this.costTracker.logCostEvent("unified_telemetry_mode_changed", {
708
+ mode: this.unifiedMode ? "dual-write" : "legacy",
709
+ timestamp: Date.now()
710
+ });
711
+ }
712
+ /**
713
+ * Log error
714
+ */
715
+ logError(errorType, error) {
716
+ this.costTracker.logCostEvent("unified_telemetry_error", {
717
+ errorType,
718
+ error: error instanceof Error ? error.message : String(error),
719
+ timestamp: Date.now()
720
+ });
721
+ }
722
+ /**
723
+ * Reconcile inconsistencies between telemetry and cost tracker.
724
+ *
725
+ */
726
+ async reconcileInconsistencies(options) {
727
+ const report = await this.validateConsistency(options);
728
+ if (report.matchPercentage < 95) {
729
+ this.costTracker.logCostEvent("unified_telemetry_consistency_alert", {
730
+ matchPercentage: report.matchPercentage,
731
+ discrepancies: report.discrepancies,
732
+ threshold: 95,
733
+ timestamp: Date.now()
734
+ });
735
+ }
736
+ const fixed = 0;
737
+ const errors = 0;
738
+ if (options.autoFix) {
739
+ }
740
+ return {
741
+ inconsistencies: report.discrepancies,
742
+ fixed,
743
+ errors
744
+ };
745
+ }
746
+ };
747
+ function createUnifiedTelemetryLogger(telemetry, costTracker, telemetryDb, options) {
748
+ return new UnifiedTelemetryLogger(telemetry, costTracker, telemetryDb, options);
749
+ }
750
+
751
+ // src/telemetry/unified-cost-tracker.ts
752
+ var COST_BUCKET_MS = 60 * 60 * 1e3;
753
+ var UNIFIED_COST_METRIC_SOURCE_SAMPLES = /* @__PURE__ */ Symbol(
754
+ "poetic.unifiedCostMetricSourceSamples"
755
+ );
756
+ var UnifiedCostTracker = class {
757
+ config;
758
+ costCalculator;
759
+ telemetry;
760
+ unifiedLogger;
761
+ sessionStart = Date.now();
762
+ samples = [];
763
+ pricingReady = false;
764
+ droppedSamplesCost = 0;
765
+ droppedCostBuckets = /* @__PURE__ */ new Map();
766
+ constructor(costCalculator, telemetry, config) {
767
+ this.costCalculator = costCalculator;
768
+ this.telemetry = telemetry;
769
+ this.config = {
770
+ enabled: config?.enabled ?? true,
771
+ budgetThresholds: {
772
+ warning: 10,
773
+ critical: 50,
774
+ daily: 100,
775
+ monthly: 1e3,
776
+ ...config?.budgetThresholds
777
+ },
778
+ ...config?.optimization !== void 0 ? { optimization: config.optimization } : {},
779
+ ...config?.updateIntervalMs !== void 0 ? { updateIntervalMs: config.updateIntervalMs } : {}
780
+ };
781
+ this.unifiedLogger = (() => {
782
+ try {
783
+ return createUnifiedTelemetryLogger(telemetry, telemetry.costModule, void 0, {
784
+ defaultUnifiedMode: true
785
+ });
786
+ } catch {
787
+ return null;
788
+ }
789
+ })();
790
+ this.ensurePricingLoaded();
791
+ }
792
+ ensurePricingLoaded() {
793
+ if (this.pricingReady) return;
794
+ try {
795
+ this.costCalculator.ensurePricingLoadedSync();
796
+ this.pricingReady = true;
797
+ } catch (error) {
798
+ this.telemetry.logCostEvent("pricing_load_error", {
799
+ error: error instanceof Error ? error.message : String(error)
800
+ });
801
+ }
802
+ }
803
+ trackCost(provider, model, usage, executionId, taskId, competitionId, variantId) {
804
+ this.ensurePricingLoaded();
805
+ if (!this.pricingReady) {
806
+ throw new Error("Pricing data not loaded. Call loadPricingData() first.");
807
+ }
808
+ const breakdown = this.costCalculator.calculateCost(provider, model, usage);
809
+ if (!this.config.enabled) {
810
+ return breakdown;
811
+ }
812
+ if (breakdown.pricingStatus === "unavailable" || breakdown.totalCostAmount.status !== "available") {
813
+ this.telemetry.logCostEvent("cost_pricing_unavailable", {
814
+ provider,
815
+ model,
816
+ executionId,
817
+ taskId,
818
+ competitionId,
819
+ variantId,
820
+ originalModelId: breakdown.originalModelId,
821
+ canonicalModelId: breakdown.canonicalModelId,
822
+ pricingSource: breakdown.pricingSource,
823
+ pricingConfidence: breakdown.pricingConfidence,
824
+ pricingError: breakdown.pricingError ?? (breakdown.totalCostAmount.status !== "available" ? breakdown.totalCostAmount.detail : void 0),
825
+ costStatus: breakdown.totalCostAmount.status
826
+ });
827
+ return breakdown;
828
+ }
829
+ const availableTotal = breakdown.totalCostAmount.amount;
830
+ const timestamp = Date.now();
831
+ this.samples.push({
832
+ timestamp,
833
+ provider,
834
+ model,
835
+ totalCost: availableTotal,
836
+ ...executionId ? { executionId } : {}
837
+ });
838
+ if (this.samples.length > 200) {
839
+ const dropped = this.samples.splice(0, this.samples.length - 200);
840
+ this.droppedSamplesCost += dropped.reduce((s, x) => s + x.totalCost, 0);
841
+ for (const sample of dropped) {
842
+ const bucket = Math.floor(sample.timestamp / COST_BUCKET_MS) * COST_BUCKET_MS;
843
+ this.droppedCostBuckets.set(
844
+ bucket,
845
+ (this.droppedCostBuckets.get(bucket) ?? 0) + sample.totalCost
846
+ );
847
+ }
848
+ }
849
+ this.telemetry.logCostEvent("cost_tracked", {
850
+ provider,
851
+ model,
852
+ totalCost: availableTotal,
853
+ executionId,
854
+ taskId,
855
+ competitionId,
856
+ variantId,
857
+ billingMode: breakdown.billingMode,
858
+ billingSource: breakdown.billingSource,
859
+ originalModelId: breakdown.originalModelId,
860
+ canonicalModelId: breakdown.canonicalModelId,
861
+ pricingSource: breakdown.pricingSource,
862
+ pricingConfidence: breakdown.pricingConfidence,
863
+ pricingStatus: breakdown.pricingStatus ?? "ok",
864
+ pricingVersion: breakdown.pricingVersion
865
+ });
866
+ if (this.unifiedLogger) {
867
+ void this.unifiedLogger.logModelInvocation({
868
+ taskId: taskId || executionId || competitionId || "unknown",
869
+ provider,
870
+ model,
871
+ variant: variantId,
872
+ event: "completed",
873
+ cost: {
874
+ provider,
875
+ model,
876
+ inputTokens: usage.inputTokens ?? 0,
877
+ outputTokens: usage.outputTokens ?? 0,
878
+ cacheReadTokens: usage.cacheReadTokens ?? 0,
879
+ cacheWriteTokens: usage.cacheWriteTokens ?? 0,
880
+ totalCost: availableTotal,
881
+ currency: breakdown.currency,
882
+ timestamp,
883
+ billingMode: breakdown.billingMode === "metered" ? "metered" : "subscription",
884
+ pricingVersion: breakdown.pricingVersion,
885
+ costBreakdown: {
886
+ inputCost: breakdown.inputCost,
887
+ outputCost: breakdown.outputCost,
888
+ cacheCost: breakdown.cacheCost,
889
+ toolCosts: breakdown.toolCosts,
890
+ infrastructureCost: breakdown.infrastructureCost
891
+ }
892
+ }
893
+ }).catch((error) => {
894
+ const message = error instanceof Error ? error.message : String(error);
895
+ console.warn(
896
+ `[UnifiedCostTracker] Failed to mirror cost event to unified telemetry: ${message}`
897
+ );
898
+ });
899
+ }
900
+ return breakdown;
901
+ }
902
+ getCurrentMetrics() {
903
+ const now = Date.now();
904
+ const dayWindow = now - 24 * 60 * 60 * 1e3;
905
+ const monthWindow = now - 30 * 24 * 60 * 60 * 1e3;
906
+ this.pruneDroppedCostBuckets(monthWindow);
907
+ const sessionCost = this.droppedSamplesCost + this.samples.reduce((sum, item) => sum + item.totalCost, 0);
908
+ const dailyCost = this.getDroppedCostSince(dayWindow) + this.samples.filter((item) => item.timestamp >= dayWindow).reduce((sum, item) => sum + item.totalCost, 0);
909
+ const monthlyCost = this.getDroppedCostSince(monthWindow) + this.samples.filter((item) => item.timestamp >= monthWindow).reduce((sum, item) => sum + item.totalCost, 0);
910
+ const minutesElapsed = Math.max((now - this.sessionStart) / 6e4, 1 / 60);
911
+ const costPerMinute = sessionCost / minutesElapsed;
912
+ const byProviderModel = /* @__PURE__ */ new Map();
913
+ for (const sample of this.samples) {
914
+ const key = `${sample.provider}::${sample.model}`;
915
+ const current = byProviderModel.get(key);
916
+ if (current) {
917
+ current.total += sample.totalCost;
918
+ } else {
919
+ byProviderModel.set(key, {
920
+ provider: sample.provider,
921
+ model: sample.model,
922
+ total: sample.totalCost
923
+ });
924
+ }
925
+ }
926
+ let top = {
927
+ provider: "none",
928
+ model: "none",
929
+ total: 0
930
+ };
931
+ for (const entry of byProviderModel.values()) {
932
+ if (entry.total > top.total) {
933
+ top = entry;
934
+ }
935
+ }
936
+ const activeAlerts = [];
937
+ if (dailyCost >= this.config.budgetThresholds.critical) {
938
+ activeAlerts.push({
939
+ id: "daily-critical",
940
+ type: "budget_critical",
941
+ severity: "critical",
942
+ message: `Daily cost exceeded critical threshold (${this.config.budgetThresholds.critical.toFixed(2)} USD)`,
943
+ currentCost: dailyCost,
944
+ threshold: this.config.budgetThresholds.critical,
945
+ timestamp: now,
946
+ metadata: { period: "daily" }
947
+ });
948
+ } else if (dailyCost >= this.config.budgetThresholds.warning) {
949
+ activeAlerts.push({
950
+ id: "daily-warning",
951
+ type: "budget_warning",
952
+ severity: "high",
953
+ message: `Daily cost exceeded warning threshold (${this.config.budgetThresholds.warning.toFixed(2)} USD)`,
954
+ currentCost: dailyCost,
955
+ threshold: this.config.budgetThresholds.warning,
956
+ timestamp: now,
957
+ metadata: { period: "daily" }
958
+ });
959
+ }
960
+ if (monthlyCost >= this.config.budgetThresholds.monthly) {
961
+ activeAlerts.push({
962
+ id: "monthly-critical",
963
+ type: "budget_critical",
964
+ severity: "critical",
965
+ message: `Monthly cost exceeded threshold (${this.config.budgetThresholds.monthly.toFixed(2)} USD)`,
966
+ currentCost: monthlyCost,
967
+ threshold: this.config.budgetThresholds.monthly,
968
+ timestamp: now,
969
+ metadata: { period: "monthly" }
970
+ });
971
+ }
972
+ const trend = this.samples.slice(-10).map((item) => item.totalCost);
973
+ const metrics = {
974
+ sessionCost,
975
+ dailyCost,
976
+ monthlyCost,
977
+ costPerMinute,
978
+ topCostProvider: {
979
+ provider: top.provider,
980
+ model: top.model,
981
+ cost: top.total,
982
+ percentage: sessionCost > 0 ? top.total / sessionCost * 100 : 0
983
+ },
984
+ costTrend: trend,
985
+ activeAlerts,
986
+ availableOptimizations: []
987
+ };
988
+ Object.defineProperty(metrics, UNIFIED_COST_METRIC_SOURCE_SAMPLES, {
989
+ value: this.samples.slice(),
990
+ enumerable: false,
991
+ configurable: false,
992
+ writable: false
993
+ });
994
+ return metrics;
995
+ }
996
+ getDroppedCostSince(cutoffMs) {
997
+ let total = 0;
998
+ for (const [bucket, cost] of this.droppedCostBuckets.entries()) {
999
+ if (bucket + COST_BUCKET_MS > cutoffMs) {
1000
+ total += cost;
1001
+ }
1002
+ }
1003
+ return total;
1004
+ }
1005
+ pruneDroppedCostBuckets(cutoffMs) {
1006
+ for (const bucket of this.droppedCostBuckets.keys()) {
1007
+ if (bucket + COST_BUCKET_MS <= cutoffMs) {
1008
+ this.droppedCostBuckets.delete(bucket);
1009
+ }
1010
+ }
1011
+ }
1012
+ };
1013
+ var globalCostTracker = null;
1014
+ function getUnifiedCostTracker(costCalculator, logger, config) {
1015
+ if (!globalCostTracker) {
1016
+ if (!costCalculator || !logger) {
1017
+ throw new Error(
1018
+ "UnifiedCostTracker not initialized. Provide costCalculator and logger on first call."
1019
+ );
1020
+ }
1021
+ globalCostTracker = new UnifiedCostTracker(costCalculator, logger, config);
1022
+ }
1023
+ return globalCostTracker;
1024
+ }
1025
+
1026
+ export {
1027
+ normalizeVariant,
1028
+ normalizeVariantForEventId,
1029
+ UNIFIED_COST_METRIC_SOURCE_SAMPLES,
1030
+ UnifiedCostTracker,
1031
+ getUnifiedCostTracker
1032
+ };
1033
+ //# sourceMappingURL=chunk-FCNAS3W2.js.map