@poetic-ai/poetic 1.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (782) hide show
  1. package/.github/SECURITY.md +47 -0
  2. package/.nvmrc +1 -0
  3. package/.poetic/README.md +37 -0
  4. package/.poetic/providers/catalog.json +12051 -0
  5. package/.poetic/providers/pricing.json +1272 -0
  6. package/.poetic/providers/registry.json +3369 -0
  7. package/CHANGELOG.md +552 -0
  8. package/CODE_OF_CONDUCT.md +40 -0
  9. package/CONTRIBUTING.md +23 -0
  10. package/INSTALL.md +454 -0
  11. package/LICENSE +21 -0
  12. package/README.md +474 -0
  13. package/dist/BasicOptimizationCompetitionRunner-5H5TBYO4.js +153 -0
  14. package/dist/ExecutionTracker-UVONC4C6.js +16 -0
  15. package/dist/OptimizationConfig-7DFY2TST.js +17 -0
  16. package/dist/OptimizationEngine-JIMGP3LY.js +1597 -0
  17. package/dist/PromptStore-U6ZD3ZMQ.js +18 -0
  18. package/dist/actions-LUJPINLJ.js +322 -0
  19. package/dist/agent-ingest-3DJUJ7FU.js +53 -0
  20. package/dist/aggregator-DNCBINFO.js +12 -0
  21. package/dist/ai-judge-5QT5QJVU.js +156 -0
  22. package/dist/allowlist-grounding-RO6HKUFI.js +16 -0
  23. package/dist/allowlist-utils-23V7TJ3G.js +28 -0
  24. package/dist/anchored-turn-service-JULUCUIK.js +489 -0
  25. package/dist/api-transport-4TYTNLTJ.js +1087 -0
  26. package/dist/apply-completion-mode-AW2MOS3R.js +89 -0
  27. package/dist/artifact-migrator-23L45ISD.js +267 -0
  28. package/dist/ask-HWVV6QFR.js +135 -0
  29. package/dist/auth-5KEDKAPP.js +67 -0
  30. package/dist/auth-7TT3JINV.js +78 -0
  31. package/dist/auth-E6XUNZ5M.js +68 -0
  32. package/dist/auth-H3XDZE22.js +134 -0
  33. package/dist/auth-OC4E6633.js +71 -0
  34. package/dist/auth-S4CTX4GQ.js +44 -0
  35. package/dist/auth-YLH3S7EY.js +69 -0
  36. package/dist/auth-liveness-TDDEZY3T.js +46 -0
  37. package/dist/auto-optimizer-VPRWOWGU.js +80 -0
  38. package/dist/autoloop-cleanup-JOGKTLWA.js +109 -0
  39. package/dist/autoloop-evidence-gates-PCDALGVJ.js +38 -0
  40. package/dist/autoloop-gate-policy-Z7FVJVXV.js +175 -0
  41. package/dist/autoloop-helpers-2KTK43GL.js +22 -0
  42. package/dist/autoloop-ledger-W7QO62PX.js +96 -0
  43. package/dist/autoloop-ledger-subscriber-Z5RW5EIE.js +162 -0
  44. package/dist/autoloop-run-defaults-FERGRZGP.js +19 -0
  45. package/dist/autoloop-run-lock-CT2NWSV3.js +197 -0
  46. package/dist/autoloop-success-J2VKKBXQ.js +85 -0
  47. package/dist/autoloop-termination-summary-RN75F422.js +58 -0
  48. package/dist/autoloop-trajectory-XFIEXP5Z.js +282 -0
  49. package/dist/autoloop-wall-clock-T7ZVIQOC.js +12 -0
  50. package/dist/autonomous-loop-controller-PW4XVFGQ.js +4120 -0
  51. package/dist/backend-P3DAYRP7.js +29 -0
  52. package/dist/background-executor-CBN552V4.js +257 -0
  53. package/dist/backlog-execution-intent-U4XYPTV6.js +15 -0
  54. package/dist/backup-active-store-5WXG6SXT.js +17 -0
  55. package/dist/backup-telemetry-db-XGLXAA3N.js +254 -0
  56. package/dist/basic-competition-master-VCSBJVRN.js +344 -0
  57. package/dist/branch-archive-manager-RP6FP3ZC.js +254 -0
  58. package/dist/branch-cleanup-manager-RSHAI7YR.js +20 -0
  59. package/dist/build-gate-YHGRB4QB.js +71 -0
  60. package/dist/change-summary-WY7J5TOX.js +33 -0
  61. package/dist/chunk-23A26CSN.js +123 -0
  62. package/dist/chunk-27UTJD3M.js +265 -0
  63. package/dist/chunk-2A5CILN3.js +310 -0
  64. package/dist/chunk-2AQUWJPW.js +225 -0
  65. package/dist/chunk-2BZ53J6J.js +2344 -0
  66. package/dist/chunk-2DY5KNVM.js +276 -0
  67. package/dist/chunk-2EIA4RBE.js +659 -0
  68. package/dist/chunk-2IUXIGQD.js +1064 -0
  69. package/dist/chunk-2N42MS2Z.js +2193 -0
  70. package/dist/chunk-2QJ3H3L7.js +42 -0
  71. package/dist/chunk-2QLYTVYX.js +791 -0
  72. package/dist/chunk-2VSQMRCB.js +18 -0
  73. package/dist/chunk-2XQXYBM2.js +130 -0
  74. package/dist/chunk-2YFUIER7.js +426 -0
  75. package/dist/chunk-34CNP2HB.js +148 -0
  76. package/dist/chunk-35P3W3JX.js +456 -0
  77. package/dist/chunk-36PEBZAF.js +18 -0
  78. package/dist/chunk-3AOKYKA7.js +22 -0
  79. package/dist/chunk-3BCUNHKF.js +475 -0
  80. package/dist/chunk-3FLXLLB7.js +26 -0
  81. package/dist/chunk-3FOZ2VHV.js +100 -0
  82. package/dist/chunk-3G6FZCRF.js +106 -0
  83. package/dist/chunk-3M57DADF.js +44 -0
  84. package/dist/chunk-3S62LLWJ.js +543 -0
  85. package/dist/chunk-3ZPQLGV7.js +2904 -0
  86. package/dist/chunk-44N5WZZH.js +45 -0
  87. package/dist/chunk-45FPSA3B.js +125 -0
  88. package/dist/chunk-4BJ3O4RQ.js +929 -0
  89. package/dist/chunk-4BOP7T6L.js +2321 -0
  90. package/dist/chunk-4BTDUT2S.js +42 -0
  91. package/dist/chunk-4CSS7WVI.js +143 -0
  92. package/dist/chunk-4CUY7AFY.js +247 -0
  93. package/dist/chunk-4GSN5O5J.js +62 -0
  94. package/dist/chunk-4HN6DF7V.js +1027 -0
  95. package/dist/chunk-4IAPOG5V.js +415 -0
  96. package/dist/chunk-4IYIZQWV.js +48 -0
  97. package/dist/chunk-4NXPXE62.js +84 -0
  98. package/dist/chunk-4RCCF5BR.js +712 -0
  99. package/dist/chunk-4V7NAQ4R.js +19527 -0
  100. package/dist/chunk-4VJITV4P.js +445 -0
  101. package/dist/chunk-4YX7J6QL.js +1859 -0
  102. package/dist/chunk-527OBWQB.js +338 -0
  103. package/dist/chunk-5D4A7E3D.js +448 -0
  104. package/dist/chunk-5DLKYTQX.js +4003 -0
  105. package/dist/chunk-5EERLVZB.js +139 -0
  106. package/dist/chunk-5H72XE4H.js +256 -0
  107. package/dist/chunk-5HDP7XZG.js +91 -0
  108. package/dist/chunk-5LAMRH4X.js +969 -0
  109. package/dist/chunk-5LTN43AS.js +1972 -0
  110. package/dist/chunk-5RBHQYDB.js +2206 -0
  111. package/dist/chunk-5WCQRDRB.js +588 -0
  112. package/dist/chunk-5WRLK5KW.js +700 -0
  113. package/dist/chunk-5ZCXC23G.js +595 -0
  114. package/dist/chunk-6BM72ZMG.js +31 -0
  115. package/dist/chunk-6EDAJH2I.js +68 -0
  116. package/dist/chunk-6EQKFDBH.js +457 -0
  117. package/dist/chunk-6MFRHTRI.js +115 -0
  118. package/dist/chunk-6TZJRKNW.js +321 -0
  119. package/dist/chunk-6V7HGQFZ.js +20 -0
  120. package/dist/chunk-6VWVO2TU.js +3746 -0
  121. package/dist/chunk-6Y5TWI7H.js +146 -0
  122. package/dist/chunk-6Y5U7UFY.js +91 -0
  123. package/dist/chunk-6ZLAK3XG.js +14 -0
  124. package/dist/chunk-72XCRQED.js +34 -0
  125. package/dist/chunk-72YTZMAM.js +589 -0
  126. package/dist/chunk-73BBJOKA.js +263 -0
  127. package/dist/chunk-73NCTWKL.js +188 -0
  128. package/dist/chunk-77I6G4CO.js +1 -0
  129. package/dist/chunk-7DHRDWFS.js +3104 -0
  130. package/dist/chunk-7DNSNKJV.js +78 -0
  131. package/dist/chunk-7FMJVYBS.js +307 -0
  132. package/dist/chunk-7GDRQBQC.js +419 -0
  133. package/dist/chunk-7GPCEFUV.js +270 -0
  134. package/dist/chunk-7IL4A2PP.js +948 -0
  135. package/dist/chunk-7MMLMXO6.js +3679 -0
  136. package/dist/chunk-7QCZSLBH.js +1 -0
  137. package/dist/chunk-7R2WLDOS.js +62 -0
  138. package/dist/chunk-7T7RUJI7.js +949 -0
  139. package/dist/chunk-A2WKSVX7.js +43 -0
  140. package/dist/chunk-A3YGID55.js +133 -0
  141. package/dist/chunk-A722DEVA.js +14 -0
  142. package/dist/chunk-ACDIT7OP.js +1376 -0
  143. package/dist/chunk-ACKIPAOJ.js +302 -0
  144. package/dist/chunk-APPNGGN7.js +365 -0
  145. package/dist/chunk-APV6MK5E.js +137 -0
  146. package/dist/chunk-ASEP3M2W.js +968 -0
  147. package/dist/chunk-AT4TNPWW.js +2931 -0
  148. package/dist/chunk-ATVKCSGT.js +250 -0
  149. package/dist/chunk-AURFMVCD.js +899 -0
  150. package/dist/chunk-AX6GWE7V.js +47 -0
  151. package/dist/chunk-AY5EWJPF.js +385 -0
  152. package/dist/chunk-BAV2HJXS.js +194 -0
  153. package/dist/chunk-BBHRN366.js +89 -0
  154. package/dist/chunk-BBPSTTPA.js +1004 -0
  155. package/dist/chunk-BDATUDDJ.js +992 -0
  156. package/dist/chunk-BKE5PG5L.js +20414 -0
  157. package/dist/chunk-BLPHWMDK.js +797 -0
  158. package/dist/chunk-BSE4R6XD.js +322 -0
  159. package/dist/chunk-BXGMAU4A.js +396 -0
  160. package/dist/chunk-BXI4NXL3.js +507 -0
  161. package/dist/chunk-BZU2O43F.js +1125 -0
  162. package/dist/chunk-C3L6YQ7P.js +147 -0
  163. package/dist/chunk-C57KJOUQ.js +121 -0
  164. package/dist/chunk-CCV7BPSY.js +118 -0
  165. package/dist/chunk-CD7ISXA4.js +826 -0
  166. package/dist/chunk-CE5OZBYY.js +21 -0
  167. package/dist/chunk-CFBIG37O.js +154 -0
  168. package/dist/chunk-CJC6GZ46.js +457 -0
  169. package/dist/chunk-CKCDGXIV.js +408 -0
  170. package/dist/chunk-CKNX3TTP.js +10338 -0
  171. package/dist/chunk-CLKSETWE.js +10 -0
  172. package/dist/chunk-CP7H3HSP.js +1552 -0
  173. package/dist/chunk-CPLEWXNZ.js +66 -0
  174. package/dist/chunk-CQM3A35X.js +844 -0
  175. package/dist/chunk-CS6P76D3.js +103 -0
  176. package/dist/chunk-CTLUBNCW.js +622 -0
  177. package/dist/chunk-CUSRN6RJ.js +632 -0
  178. package/dist/chunk-D5EP5D2W.js +26 -0
  179. package/dist/chunk-D5RYINO7.js +412 -0
  180. package/dist/chunk-DBFS4HMH.js +751 -0
  181. package/dist/chunk-DC4ZYMXJ.js +115 -0
  182. package/dist/chunk-DCBZP442.js +9243 -0
  183. package/dist/chunk-DCYF7EKG.js +26 -0
  184. package/dist/chunk-DDMAFNUK.js +5351 -0
  185. package/dist/chunk-DF5SLDE4.js +966 -0
  186. package/dist/chunk-DJFW7SMX.js +348 -0
  187. package/dist/chunk-DQFLLBJW.js +121 -0
  188. package/dist/chunk-DSFM56OA.js +1203 -0
  189. package/dist/chunk-DTY4APYV.js +218 -0
  190. package/dist/chunk-DXH5JBRS.js +437 -0
  191. package/dist/chunk-E3NTPHEO.js +194 -0
  192. package/dist/chunk-E74LUIID.js +302 -0
  193. package/dist/chunk-EI57M5BI.js +194 -0
  194. package/dist/chunk-EJ4ZAWLV.js +305 -0
  195. package/dist/chunk-EJGCZGUF.js +1483 -0
  196. package/dist/chunk-EK2U3YEG.js +486 -0
  197. package/dist/chunk-ELMFYNV7.js +109 -0
  198. package/dist/chunk-ENRGKNR5.js +25 -0
  199. package/dist/chunk-ETYDXCK7.js +679 -0
  200. package/dist/chunk-EYRH3W74.js +239 -0
  201. package/dist/chunk-F23DIWNN.js +1024 -0
  202. package/dist/chunk-F5JO7HAS.js +94 -0
  203. package/dist/chunk-F7ER6ANO.js +174 -0
  204. package/dist/chunk-FATUVIIN.js +374 -0
  205. package/dist/chunk-FC23CTXV.js +322 -0
  206. package/dist/chunk-FD4ERYEG.js +22 -0
  207. package/dist/chunk-FH7WOJAE.js +79 -0
  208. package/dist/chunk-FHOWVDF5.js +1342 -0
  209. package/dist/chunk-FKAUPHMR.js +96 -0
  210. package/dist/chunk-FONNFJXA.js +137 -0
  211. package/dist/chunk-FQ7FSZRW.js +75 -0
  212. package/dist/chunk-FRG57FPM.js +240 -0
  213. package/dist/chunk-FUVP64ER.js +31 -0
  214. package/dist/chunk-FYOILAN5.js +6818 -0
  215. package/dist/chunk-G35UYQ6Z.js +69 -0
  216. package/dist/chunk-G36W2T2S.js +1143 -0
  217. package/dist/chunk-G3L2L5XZ.js +49 -0
  218. package/dist/chunk-G4THLFV3.js +148 -0
  219. package/dist/chunk-GAFJEYLK.js +29 -0
  220. package/dist/chunk-GFGYB2ZU.js +1689 -0
  221. package/dist/chunk-GG6KJYW6.js +85 -0
  222. package/dist/chunk-GHHFDU2U.js +55 -0
  223. package/dist/chunk-GHTZSQB7.js +57 -0
  224. package/dist/chunk-GK37ILCX.js +1231 -0
  225. package/dist/chunk-GKN3HMN4.js +2809 -0
  226. package/dist/chunk-GNVDBVJP.js +156 -0
  227. package/dist/chunk-GPEL3FBM.js +924 -0
  228. package/dist/chunk-GPSNGPZS.js +1604 -0
  229. package/dist/chunk-GSGD5E4C.js +30 -0
  230. package/dist/chunk-GSUQJJXQ.js +331 -0
  231. package/dist/chunk-GSV226X6.js +110 -0
  232. package/dist/chunk-H2AYQIHW.js +224 -0
  233. package/dist/chunk-H66DXFS5.js +1374 -0
  234. package/dist/chunk-H6G7QRMQ.js +35 -0
  235. package/dist/chunk-H7JAGHZT.js +59 -0
  236. package/dist/chunk-H7ZEFECA.js +316 -0
  237. package/dist/chunk-HAC6EHZZ.js +79 -0
  238. package/dist/chunk-HIO33P3G.js +19 -0
  239. package/dist/chunk-HMVQIPH3.js +547 -0
  240. package/dist/chunk-HOYBYAOA.js +257 -0
  241. package/dist/chunk-HX5P3CSP.js +1784 -0
  242. package/dist/chunk-I46EG2XQ.js +65 -0
  243. package/dist/chunk-I4NPDSCB.js +279 -0
  244. package/dist/chunk-I5WRT7ZR.js +514 -0
  245. package/dist/chunk-IC7I6YIJ.js +301 -0
  246. package/dist/chunk-IDCSOZVN.js +78 -0
  247. package/dist/chunk-IFCBYECK.js +112 -0
  248. package/dist/chunk-IFZCPEY2.js +66 -0
  249. package/dist/chunk-IKFP2KUR.js +48 -0
  250. package/dist/chunk-IRFBN336.js +878 -0
  251. package/dist/chunk-IUXNGKA6.js +152 -0
  252. package/dist/chunk-IV2RVAN7.js +1356 -0
  253. package/dist/chunk-IZYIQQ7X.js +53 -0
  254. package/dist/chunk-J3UUR7DE.js +210 -0
  255. package/dist/chunk-J54VUAY2.js +566 -0
  256. package/dist/chunk-J62KPGII.js +464 -0
  257. package/dist/chunk-J6P3FWWW.js +130 -0
  258. package/dist/chunk-JKBHJQMT.js +434 -0
  259. package/dist/chunk-JLS65NUQ.js +14 -0
  260. package/dist/chunk-JOSYEJKY.js +141 -0
  261. package/dist/chunk-JPKSXKNB.js +94 -0
  262. package/dist/chunk-JQNJB2BB.js +2440 -0
  263. package/dist/chunk-JRVNSWSQ.js +2626 -0
  264. package/dist/chunk-JSWMRQYG.js +28 -0
  265. package/dist/chunk-JZKNBBIB.js +152 -0
  266. package/dist/chunk-K54Y7MLK.js +160 -0
  267. package/dist/chunk-K65546RE.js +183 -0
  268. package/dist/chunk-KM3F7SYE.js +702 -0
  269. package/dist/chunk-KNDYMVWN.js +102 -0
  270. package/dist/chunk-KNT72VR6.js +132 -0
  271. package/dist/chunk-KP6YILMU.js +482 -0
  272. package/dist/chunk-KQEBSK3T.js +274 -0
  273. package/dist/chunk-KT6VHSPF.js +84 -0
  274. package/dist/chunk-KTMW65UX.js +14 -0
  275. package/dist/chunk-KZ5CJVBP.js +1813 -0
  276. package/dist/chunk-L4427KOE.js +26 -0
  277. package/dist/chunk-L6OM4A22.js +189 -0
  278. package/dist/chunk-L7E6XCRA.js +1042 -0
  279. package/dist/chunk-L7JZLXQL.js +173 -0
  280. package/dist/chunk-LAMKBTXX.js +40 -0
  281. package/dist/chunk-LDCF2MKN.js +132 -0
  282. package/dist/chunk-LEIIWPWQ.js +78 -0
  283. package/dist/chunk-LFTQVYBB.js +31 -0
  284. package/dist/chunk-LG3PDRTR.js +2872 -0
  285. package/dist/chunk-LGHII5ET.js +23 -0
  286. package/dist/chunk-LH5QY22X.js +1205 -0
  287. package/dist/chunk-LIVJ6266.js +438 -0
  288. package/dist/chunk-LKRAR3IH.js +276 -0
  289. package/dist/chunk-LO23NABI.js +3063 -0
  290. package/dist/chunk-LO3X5NLS.js +326 -0
  291. package/dist/chunk-LPITVM7M.js +339 -0
  292. package/dist/chunk-LR5IJIGV.js +810 -0
  293. package/dist/chunk-LRGMHROI.js +79 -0
  294. package/dist/chunk-LUVKFFWR.js +315 -0
  295. package/dist/chunk-LWCBNGH6.js +35 -0
  296. package/dist/chunk-LWTN3WRV.js +260 -0
  297. package/dist/chunk-M3HQYKQX.js +308 -0
  298. package/dist/chunk-M6GVSPEH.js +1016 -0
  299. package/dist/chunk-MF5HP6XV.js +221 -0
  300. package/dist/chunk-MHLCBZJB.js +328 -0
  301. package/dist/chunk-MN6PL4AN.js +120 -0
  302. package/dist/chunk-MOEY65Z6.js +5678 -0
  303. package/dist/chunk-MQ4WA34C.js +206 -0
  304. package/dist/chunk-MWHF5V7U.js +223 -0
  305. package/dist/chunk-MWHLBPNU.js +211 -0
  306. package/dist/chunk-MWK5UZQ3.js +1068 -0
  307. package/dist/chunk-MYLH2S4G.js +64 -0
  308. package/dist/chunk-MZ5WYKNA.js +28 -0
  309. package/dist/chunk-N4VTRA7K.js +131 -0
  310. package/dist/chunk-N5DX4JAK.js +12 -0
  311. package/dist/chunk-N65O4XTH.js +5011 -0
  312. package/dist/chunk-NEQUQHOX.js +223 -0
  313. package/dist/chunk-NGK6PEOG.js +25 -0
  314. package/dist/chunk-NJVD4PWE.js +1033 -0
  315. package/dist/chunk-NM6PMYY4.js +768 -0
  316. package/dist/chunk-NN4PJDHP.js +708 -0
  317. package/dist/chunk-NP2V3L7K.js +226 -0
  318. package/dist/chunk-NRLY536M.js +260 -0
  319. package/dist/chunk-NRNE225N.js +1270 -0
  320. package/dist/chunk-NS2K2GTP.js +605 -0
  321. package/dist/chunk-NS33V3IM.js +51 -0
  322. package/dist/chunk-NSHASMZZ.js +71 -0
  323. package/dist/chunk-NWOYOA6H.js +378 -0
  324. package/dist/chunk-NWRUSEXG.js +322 -0
  325. package/dist/chunk-NZGDAWIP.js +1905 -0
  326. package/dist/chunk-O47UOKU3.js +395 -0
  327. package/dist/chunk-O4G2W3ST.js +9831 -0
  328. package/dist/chunk-O6V4PNLO.js +63 -0
  329. package/dist/chunk-OA4GPILI.js +624 -0
  330. package/dist/chunk-OGMSYL6J.js +227 -0
  331. package/dist/chunk-OIS7J26S.js +319 -0
  332. package/dist/chunk-OMX5VL43.js +79 -0
  333. package/dist/chunk-ON3G73BU.js +264 -0
  334. package/dist/chunk-OPYFYTWQ.js +220 -0
  335. package/dist/chunk-OQ6K46CK.js +1734 -0
  336. package/dist/chunk-OYZYO7TV.js +47 -0
  337. package/dist/chunk-OZ4REHIN.js +4386 -0
  338. package/dist/chunk-P47VN5F4.js +282 -0
  339. package/dist/chunk-P5I4X7A7.js +353 -0
  340. package/dist/chunk-P6VQROCO.js +594 -0
  341. package/dist/chunk-P7CQGPLS.js +30 -0
  342. package/dist/chunk-PCAGC5MR.js +1763 -0
  343. package/dist/chunk-PFTQBXS6.js +5181 -0
  344. package/dist/chunk-PGSPX4SU.js +15 -0
  345. package/dist/chunk-PIKLF7BM.js +432 -0
  346. package/dist/chunk-PJWJ3SAV.js +22 -0
  347. package/dist/chunk-PKIFMV72.js +100 -0
  348. package/dist/chunk-PL37JDNA.js +189 -0
  349. package/dist/chunk-PTH5E5XO.js +195 -0
  350. package/dist/chunk-PW6AXLQC.js +4128 -0
  351. package/dist/chunk-PYITM4N2.js +79 -0
  352. package/dist/chunk-PZ5AY32C.js +10 -0
  353. package/dist/chunk-Q3RO7N35.js +45 -0
  354. package/dist/chunk-Q3WIC6GQ.js +2670 -0
  355. package/dist/chunk-Q5XIXSHX.js +271 -0
  356. package/dist/chunk-QGJDMEOV.js +34 -0
  357. package/dist/chunk-QNOB37UH.js +58 -0
  358. package/dist/chunk-QOCOVLUH.js +462 -0
  359. package/dist/chunk-QTCJ5CC5.js +172 -0
  360. package/dist/chunk-QVFV5IP2.js +232 -0
  361. package/dist/chunk-QVZMFDYG.js +29 -0
  362. package/dist/chunk-R35PEUKH.js +511 -0
  363. package/dist/chunk-R4UWBC35.js +200 -0
  364. package/dist/chunk-R6MLCREW.js +44 -0
  365. package/dist/chunk-R6W23LKN.js +254 -0
  366. package/dist/chunk-R7XDDX2A.js +4007 -0
  367. package/dist/chunk-RDFRCT64.js +168 -0
  368. package/dist/chunk-RE5VZDFQ.js +58 -0
  369. package/dist/chunk-RGROYC2G.js +638 -0
  370. package/dist/chunk-RGWHUI5E.js +68 -0
  371. package/dist/chunk-RHVG6UNL.js +205 -0
  372. package/dist/chunk-RI4EX2QE.js +18 -0
  373. package/dist/chunk-RJAAKDRX.js +17 -0
  374. package/dist/chunk-ROMHOSMQ.js +185 -0
  375. package/dist/chunk-RWREC3KJ.js +517 -0
  376. package/dist/chunk-RYNETRDJ.js +118 -0
  377. package/dist/chunk-RZY7RKM5.js +500 -0
  378. package/dist/chunk-S2MNWFAG.js +52 -0
  379. package/dist/chunk-S2VQCZO4.js +22 -0
  380. package/dist/chunk-S54MKU6V.js +117 -0
  381. package/dist/chunk-S5OIDFRM.js +302 -0
  382. package/dist/chunk-SCW4ZF6R.js +150 -0
  383. package/dist/chunk-SLS2N4PH.js +2213 -0
  384. package/dist/chunk-SNLBO4BF.js +247 -0
  385. package/dist/chunk-SP3LFU6B.js +60 -0
  386. package/dist/chunk-SQQTDDQA.js +537 -0
  387. package/dist/chunk-STV6LYYE.js +45 -0
  388. package/dist/chunk-SURZ2WFE.js +326 -0
  389. package/dist/chunk-SZ7DL357.js +1047 -0
  390. package/dist/chunk-T5E4NQCM.js +5742 -0
  391. package/dist/chunk-TAJPCXSB.js +13 -0
  392. package/dist/chunk-TAOOYK3P.js +358 -0
  393. package/dist/chunk-TDSEX5CF.js +24 -0
  394. package/dist/chunk-TFTGP7Z7.js +174 -0
  395. package/dist/chunk-TGON4N4O.js +197 -0
  396. package/dist/chunk-TGQZHDY2.js +2373 -0
  397. package/dist/chunk-TJJZ2OKV.js +6783 -0
  398. package/dist/chunk-TRSVUPCX.js +25 -0
  399. package/dist/chunk-TSXGRLPR.js +107 -0
  400. package/dist/chunk-U2S3YEX3.js +224 -0
  401. package/dist/chunk-U45RTRGY.js +818 -0
  402. package/dist/chunk-U6C3VVWS.js +13 -0
  403. package/dist/chunk-UDMS5AD3.js +307 -0
  404. package/dist/chunk-UGX7GI37.js +94 -0
  405. package/dist/chunk-UH3JJSHK.js +1 -0
  406. package/dist/chunk-UHRBTZYY.js +208 -0
  407. package/dist/chunk-UHT2KRG5.js +193 -0
  408. package/dist/chunk-UI2F6DJ5.js +118 -0
  409. package/dist/chunk-UMAKSB4Z.js +284 -0
  410. package/dist/chunk-UR2IBGIM.js +521 -0
  411. package/dist/chunk-UUH2RVKS.js +585 -0
  412. package/dist/chunk-UVJ4PJDK.js +4533 -0
  413. package/dist/chunk-V53UG2OT.js +9924 -0
  414. package/dist/chunk-V72RMBM4.js +48 -0
  415. package/dist/chunk-VBNCKCCI.js +16 -0
  416. package/dist/chunk-VNSYKC25.js +24 -0
  417. package/dist/chunk-VPHVFK4A.js +1984 -0
  418. package/dist/chunk-VTLNJQ44.js +133 -0
  419. package/dist/chunk-VTW7HP3R.js +100 -0
  420. package/dist/chunk-VVGEPBPS.js +218 -0
  421. package/dist/chunk-VVLLL7I4.js +166 -0
  422. package/dist/chunk-VX3UMWB7.js +483 -0
  423. package/dist/chunk-VXF4Q3FW.js +20 -0
  424. package/dist/chunk-W3JMT2YY.js +712 -0
  425. package/dist/chunk-WDUORIHF.js +877 -0
  426. package/dist/chunk-WDVTY4U6.js +148 -0
  427. package/dist/chunk-WIFZCHEG.js +12566 -0
  428. package/dist/chunk-WIRN3F75.js +736 -0
  429. package/dist/chunk-WMPU2UOV.js +82 -0
  430. package/dist/chunk-WTOKKE2V.js +784 -0
  431. package/dist/chunk-WX5IRLF6.js +740 -0
  432. package/dist/chunk-WZ6U3O7I.js +1581 -0
  433. package/dist/chunk-XAONGNST.js +57 -0
  434. package/dist/chunk-XB5YLCLB.js +13 -0
  435. package/dist/chunk-XEP5NQ5Y.js +688 -0
  436. package/dist/chunk-XGYF2QMZ.js +351 -0
  437. package/dist/chunk-XHEKQENB.js +255 -0
  438. package/dist/chunk-XNO4FM6X.js +1124 -0
  439. package/dist/chunk-XPHKYHO4.js +878 -0
  440. package/dist/chunk-XPK2I4NC.js +405 -0
  441. package/dist/chunk-XPU2XADL.js +2175 -0
  442. package/dist/chunk-XQD2B6BB.js +507 -0
  443. package/dist/chunk-XT2ZQVTC.js +558 -0
  444. package/dist/chunk-XTXJGGUV.js +351 -0
  445. package/dist/chunk-XUXVDPSZ.js +50 -0
  446. package/dist/chunk-XV7NZL4B.js +57 -0
  447. package/dist/chunk-XZE4XARH.js +563 -0
  448. package/dist/chunk-XZYR5EDO.js +152 -0
  449. package/dist/chunk-Y3J4JMTU.js +61 -0
  450. package/dist/chunk-Y55LZN5U.js +52 -0
  451. package/dist/chunk-Y5VN7DMP.js +112 -0
  452. package/dist/chunk-Y67VAHN4.js +459 -0
  453. package/dist/chunk-YAXSKEUH.js +3544 -0
  454. package/dist/chunk-YB3JD4E6.js +975 -0
  455. package/dist/chunk-YESZJFK6.js +220 -0
  456. package/dist/chunk-YGXKOBQQ.js +292 -0
  457. package/dist/chunk-YMX76IOS.js +31 -0
  458. package/dist/chunk-YOTXESEH.js +257 -0
  459. package/dist/chunk-YTYIEZQY.js +119 -0
  460. package/dist/chunk-YVORHQ2S.js +579 -0
  461. package/dist/chunk-Z2CUQDAR.js +3429 -0
  462. package/dist/chunk-Z2KYOFHS.js +7000 -0
  463. package/dist/chunk-Z6PC7QX6.js +161 -0
  464. package/dist/chunk-ZDTGECTN.js +235 -0
  465. package/dist/chunk-ZIPWI2LY.js +151 -0
  466. package/dist/chunk-ZSKKMTQJ.js +554 -0
  467. package/dist/chunk-ZTT5IVPY.js +1160 -0
  468. package/dist/chunk-ZX65UI5W.js +78 -0
  469. package/dist/chunk-ZYG7GGKO.js +218 -0
  470. package/dist/chunk-ZZZUL4OF.js +38 -0
  471. package/dist/cli-utils-IXL26KJT.js +40 -0
  472. package/dist/cli-validation-WLXWLUJL.js +111 -0
  473. package/dist/commit-utils-P7CRJF5N.js +202 -0
  474. package/dist/compete-config-resolver-R5ULXMYH.js +76 -0
  475. package/dist/compete-request-62JESVET.js +364 -0
  476. package/dist/compete-results-QEPG6FZX.js +208 -0
  477. package/dist/competition-outcome-tracker-R32OOZ43.js +38 -0
  478. package/dist/config-JCOKXOQT.js +166 -0
  479. package/dist/config-audit-EL3GHXS7.js +360 -0
  480. package/dist/config-explain-TNILDEVJ.js +12 -0
  481. package/dist/config-loader-VPFPFO4B.js +38 -0
  482. package/dist/config-manager-7T4E2BQO.js +67 -0
  483. package/dist/config-validator-KKOHOW7O.js +72 -0
  484. package/dist/cost-YC42XUF3.js +53 -0
  485. package/dist/coverage-orchestrator-CISNKJC2.js +772 -0
  486. package/dist/coverage-scanner-YVD62MLH.js +12 -0
  487. package/dist/createCompetitionRunner-LJG6ZQSO.js +46 -0
  488. package/dist/data-migration-state-VJK64DLT.js +31 -0
  489. package/dist/db-migrator-XSEIOGWY.js +34 -0
  490. package/dist/discovery-JGYGDD25.js +25 -0
  491. package/dist/doctor-GJOYE7AE.js +186 -0
  492. package/dist/domain-analyzer-AWF3RP6E.js +29 -0
  493. package/dist/ensure-initialized-744DIZEZ.js +52 -0
  494. package/dist/entry.js +940 -0
  495. package/dist/environment-YS45U5ZI.js +81 -0
  496. package/dist/error-parser-core-PPZ36A4S.js +50 -0
  497. package/dist/escalation-ladder-MKTCEGSA.js +130 -0
  498. package/dist/evaluation-context-KV4GZNN7.js +35 -0
  499. package/dist/evidence-plan-resolver-GBSYSAPX.js +85 -0
  500. package/dist/execution-data-writer-3ODTBDLH.js +53 -0
  501. package/dist/execution-policy-applier-ZHD3DCF3.js +31 -0
  502. package/dist/execution-preflight-Z4Y64V3I.js +209 -0
  503. package/dist/execution-roles-R3DPPMD3.js +66 -0
  504. package/dist/exit-code-error-Z4SW2DVK.js +14 -0
  505. package/dist/external-temp-cleanup-N2RZH4QP.js +311 -0
  506. package/dist/factory-XBN7DFIM.js +149 -0
  507. package/dist/file-utils-XIVR2ZMA.js +47 -0
  508. package/dist/flywheel-autoloop-executor-UILGOFFK.js +249 -0
  509. package/dist/flywheel-competition-executor-JOBEXTRB.js +259 -0
  510. package/dist/flywheel-executor-6JFLA6J5.js +369 -0
  511. package/dist/flywheel-git-isolation-UC5NIEVU.js +48 -0
  512. package/dist/flywheel-manifest-5UC4VBMA.js +108 -0
  513. package/dist/flywheel-model-defaults-7CVKP53V.js +27 -0
  514. package/dist/flywheel-preflight-XEY5SHM6.js +104 -0
  515. package/dist/flywheel-resume-7HELH7QS.js +23 -0
  516. package/dist/flywheel-safety-7U7DPOAP.js +28 -0
  517. package/dist/flywheel-scope-decision-ZHKF6ZIN.js +11 -0
  518. package/dist/get-telemetry-logger-DPVWWIYY.js +73 -0
  519. package/dist/git-worktree-IY6V6DUO.js +18 -0
  520. package/dist/github-pr-manager-4LXEKJTA.js +211 -0
  521. package/dist/guidance-profile-config-E7XJL2VP.js +117 -0
  522. package/dist/guidance-profile-renderer-QK2YMAAP.js +21 -0
  523. package/dist/index-query-4JEUKA44.js +31 -0
  524. package/dist/index.js +108661 -0
  525. package/dist/instructions-6BURLQJC.js +64 -0
  526. package/dist/invoke-provider-auth-GRUYP44M.js +223 -0
  527. package/dist/judge-scoring.json +80 -0
  528. package/dist/judge-test.js +555 -0
  529. package/dist/lab-mode-OTWVHN63.js +39 -0
  530. package/dist/lab-utils-BJRFLGK4.js +23 -0
  531. package/dist/linux-host-class-UY4KVLFD.js +29 -0
  532. package/dist/llm-judge-executor-F7Z3HO77.js +133 -0
  533. package/dist/local-executor-CEHWE2PL.js +223 -0
  534. package/dist/logger-33TR6EE5.js +72 -0
  535. package/dist/loop-spec-XTLQAVZ7.js +191 -0
  536. package/dist/manager-2HJG5CLT.js +25 -0
  537. package/dist/matrix-prompt-builder-6UDN5X3F.js +497 -0
  538. package/dist/matrix-result-parser-7W35EUOV.js +15 -0
  539. package/dist/metadata-HQ43NDEK.js +22 -0
  540. package/dist/model-invocations-db-QBO4Y7WZ.js +38 -0
  541. package/dist/monitor-XGYBG2DW.js +72 -0
  542. package/dist/next-PB5ZXZKB.js +90 -0
  543. package/dist/next-ZBDK725T.js +69 -0
  544. package/dist/optimization-config-resolver-O6WKR47U.js +75 -0
  545. package/dist/package-3YCWIQQ5.js +10 -0
  546. package/dist/parallel-orchestrator-NL7YJJU2.js +297 -0
  547. package/dist/parallel-worker.js +279 -0
  548. package/dist/parse-git-status-PIAF3OTP.js +10 -0
  549. package/dist/path-security-ETTH6TZL.js +39 -0
  550. package/dist/pattern-bank-UNJR5ADV.js +15 -0
  551. package/dist/plan-backlog-list-fast-VAGYBV3J.js +270 -0
  552. package/dist/plan-backlog-show-fast-SG2CZPW3.js +406 -0
  553. package/dist/plan-sprint-list-fast-LURAX47V.js +162 -0
  554. package/dist/plan-sprint-status-fast-FJAODCHD.js +208 -0
  555. package/dist/plan-task-status-fast-HNYBMQI4.js +349 -0
  556. package/dist/plan-to-flywheel-Z4U3GWPN.js +456 -0
  557. package/dist/planning-backlog-3CQ5QQBQ.js +319 -0
  558. package/dist/poetic-root-V5DNXEAE.js +17 -0
  559. package/dist/preflight-OPANWMME.js +12 -0
  560. package/dist/process-registry-PDZJPTAS.js +27 -0
  561. package/dist/process-scanner-C22SYXYD.js +22 -0
  562. package/dist/processes-KMQUD7HY.js +29 -0
  563. package/dist/processes-json-fast-IBDXZ6WW.js +135 -0
  564. package/dist/profile-SE5EVXAP.js +149 -0
  565. package/dist/prompts-WZZPGWBX.js +168 -0
  566. package/dist/protected-branches-RNTEX7ET.js +57 -0
  567. package/dist/provider-aware-resource-manager-QBTZJMNP.js +18 -0
  568. package/dist/provider-matrix-N5X57V3Y.js +154 -0
  569. package/dist/provider-matrix-renderer-MZDWKKID.js +139 -0
  570. package/dist/provider-output-forwarding-DERID3TP.js +30 -0
  571. package/dist/provider-registry-J5NRBJKI.js +128 -0
  572. package/dist/provider-temp-cleanup-KYGLF6YU.js +14 -0
  573. package/dist/prune-engine-Q6E2DXBN.js +451 -0
  574. package/dist/quality-gate-YRHMQAEI.js +70 -0
  575. package/dist/quickstart-FIRLKGJI.js +62 -0
  576. package/dist/readiness-VZTMSG6J.js +96 -0
  577. package/dist/registry-YODFY77A.js +153 -0
  578. package/dist/repair-helpers-TTV5FEF4.js +117 -0
  579. package/dist/repo-root-2IGD4H7X.js +22 -0
  580. package/dist/resolution-engine-D6TX6FRG.js +127 -0
  581. package/dist/resolve-provider-cli-O2P6XZBZ.js +35 -0
  582. package/dist/restore-telemetry-db-BQL6DTQF.js +360 -0
  583. package/dist/result-streamer-WEHW476R.js +19 -0
  584. package/dist/routing-events-DHPUZDDF.js +27 -0
  585. package/dist/routing-history-store-UWCEXAP3.js +46 -0
  586. package/dist/routing-planner-F5WQEUOM.js +160 -0
  587. package/dist/run-poetic-tui-J6LWRJUP.js +13517 -0
  588. package/dist/run-simulation.js +376 -0
  589. package/dist/runner-CS2TNGHA.js +1092 -0
  590. package/dist/runner-HHH7ZN2Z.js +1571 -0
  591. package/dist/safety-OCC4KJJR.js +64 -0
  592. package/dist/safety-stanza-7SV3HGG3.js +60 -0
  593. package/dist/sandbox-32QXJEMV.js +81 -0
  594. package/dist/sandbox-RSO7VP6V.js +94 -0
  595. package/dist/schema-extensions.sql +234 -0
  596. package/dist/security-2KI5XNDG.js +17 -0
  597. package/dist/setup-bb-plugin-QAQWZCV5.js +738 -0
  598. package/dist/setup-claude-code-P7BTTSPO.js +317 -0
  599. package/dist/setup-temp-cleanup-GASCWZ2I.js +20 -0
  600. package/dist/shared-utils-D6U6UREP.js +37 -0
  601. package/dist/simple-artifact-goal-OTXNGZY6.js +25 -0
  602. package/dist/sprint-UIXPYOXQ.js +338 -0
  603. package/dist/sprint-bridge-4BHMSC3M.js +68 -0
  604. package/dist/sprint-execution-service-2B7WHL5L.js +311 -0
  605. package/dist/sprint-manager-IDQUDNQI.js +91 -0
  606. package/dist/sqlite-wrapper-UDWCTNLJ.js +17 -0
  607. package/dist/stale-cleanup-orchestrator-XWXV7KCZ.js +62 -0
  608. package/dist/storage-access-F6ALDN4S.js +22 -0
  609. package/dist/synthesis-XD6EDVHF.js +185 -0
  610. package/dist/task-classifier-LNLXSHOM.js +494 -0
  611. package/dist/task-list-fast-PTMA4LUC.js +147 -0
  612. package/dist/task-manager-XAT7GOWB.js +93 -0
  613. package/dist/task-splitter-U7DJ7W6A.js +79 -0
  614. package/dist/task-type-detector-OLVOMXZO.js +21 -0
  615. package/dist/task-type-resolver-KKNQYSB4.js +42 -0
  616. package/dist/telemetry-5HWBBXLX.js +131 -0
  617. package/dist/telemetry-health-tracker-DMSSGBZ2.js +11 -0
  618. package/dist/telemetry-path-resolver-7ICSG276.js +28 -0
  619. package/dist/telemetry-reliability-XUOZNZZ6.js +125 -0
  620. package/dist/token-estimator-MEQUL3EJ.js +37 -0
  621. package/dist/transports-KNSSV2V4.js +255 -0
  622. package/dist/unified-cost-tracker-4TFRBVPR.js +35 -0
  623. package/dist/unified-state-cleanup-LJPF2BOW.js +276 -0
  624. package/dist/universal-cost-calculator-BAJV35GA.js +42 -0
  625. package/dist/user-agents-GHUGCSKN.js +22 -0
  626. package/dist/variant-delivery-state-KLRNG6XA.js +33 -0
  627. package/dist/variant-state-cleanup-MZGGLQAJ.js +280 -0
  628. package/dist/variant-success-PJXWE3ZV.js +12 -0
  629. package/dist/variant-worker-KUWKBLAH.js +4196 -0
  630. package/dist/variant-worker.js +24 -0
  631. package/dist/variants-JE2FSAQS.js +233 -0
  632. package/dist/verification-toolchains-V24UHW6Q.js +28 -0
  633. package/dist/verify-commands-H3DTCSGI.js +37 -0
  634. package/dist/warning-EGQGUUIO.js +12 -0
  635. package/dist/work-edge-RWEDWJZF.js +49 -0
  636. package/dist/work-item-writer-WHAVZXAY.js +19 -0
  637. package/dist/worker-7SA2VS2Y.js +1435 -0
  638. package/dist/worker.js +19 -0
  639. package/dist/worktree-metrics-3DFUYVYE.js +26 -0
  640. package/dist/writeback-VZKHYHSN.js +44 -0
  641. package/docs/CLI_REFERENCE.md +7042 -0
  642. package/docs/PROVIDER_SETUP.md +1570 -0
  643. package/docs/README.md +96 -0
  644. package/docs/TROUBLESHOOTING.md +2232 -0
  645. package/docs/getting-started/QUICK_START.md +294 -0
  646. package/docs/getting-started/README.md +188 -0
  647. package/docs/getting-started/SETUP.md +52 -0
  648. package/docs/reference/AGENT_CONTEXT.md +38 -0
  649. package/docs/reference/PROVIDER_RELEASE_TIERS.md +34 -0
  650. package/docs/reference/README.md +381 -0
  651. package/docs/reference/SECURITY.md +262 -0
  652. package/integrations/bb-plugin-poetic/README.md +362 -0
  653. package/integrations/bb-plugin-poetic/app.css +341 -0
  654. package/integrations/bb-plugin-poetic/app.tsx +5059 -0
  655. package/integrations/bb-plugin-poetic/package.json +45 -0
  656. package/integrations/bb-plugin-poetic/server.ts +444 -0
  657. package/integrations/bb-plugin-poetic/src/adapter.ts +3312 -0
  658. package/integrations/bb-plugin-poetic/src/backlog-authoring-model.ts +150 -0
  659. package/integrations/bb-plugin-poetic/src/backlog-authoring-schema.ts +355 -0
  660. package/integrations/bb-plugin-poetic/src/backlog-authoring-service.ts +419 -0
  661. package/integrations/bb-plugin-poetic/src/backlog-authoring-view.ts +1026 -0
  662. package/integrations/bb-plugin-poetic/src/competition-defaults-schema.ts +122 -0
  663. package/integrations/bb-plugin-poetic/src/competition-defaults-service.ts +105 -0
  664. package/integrations/bb-plugin-poetic/src/competition-defaults-view.ts +138 -0
  665. package/integrations/bb-plugin-poetic/src/contract.ts +615 -0
  666. package/integrations/bb-plugin-poetic/src/finalize-model.ts +205 -0
  667. package/integrations/bb-plugin-poetic/src/finalize-schema.ts +158 -0
  668. package/integrations/bb-plugin-poetic/src/finalize-service.ts +382 -0
  669. package/integrations/bb-plugin-poetic/src/finalize-view.ts +159 -0
  670. package/integrations/bb-plugin-poetic/src/judge-operations-readback.ts +303 -0
  671. package/integrations/bb-plugin-poetic/src/judge-operations-schema.ts +33 -0
  672. package/integrations/bb-plugin-poetic/src/judge-operations-view.ts +459 -0
  673. package/integrations/bb-plugin-poetic/src/model.ts +1302 -0
  674. package/integrations/bb-plugin-poetic/src/monitor-service.ts +233 -0
  675. package/integrations/bb-plugin-poetic/src/panel-read-ux.ts +97 -0
  676. package/integrations/bb-plugin-poetic/src/patch-preview-schema.ts +166 -0
  677. package/integrations/bb-plugin-poetic/src/patch-preview-service.ts +480 -0
  678. package/integrations/bb-plugin-poetic/src/patch-preview-view.ts +109 -0
  679. package/integrations/bb-plugin-poetic/src/planning-readback.ts +204 -0
  680. package/integrations/bb-plugin-poetic/src/planning-service.ts +594 -0
  681. package/integrations/bb-plugin-poetic/src/planning-workspace-schema.ts +95 -0
  682. package/integrations/bb-plugin-poetic/src/planning-workspace.ts +323 -0
  683. package/integrations/bb-plugin-poetic/src/poll-handoff.ts +136 -0
  684. package/integrations/bb-plugin-poetic/src/project-target-server.ts +21 -0
  685. package/integrations/bb-plugin-poetic/src/project-target.ts +45 -0
  686. package/integrations/bb-plugin-poetic/src/reference-index.ts +192 -0
  687. package/integrations/bb-plugin-poetic/src/repository-schema.ts +30 -0
  688. package/integrations/bb-plugin-poetic/src/result-explorer-view.ts +597 -0
  689. package/integrations/bb-plugin-poetic/src/result-readback-model.ts +163 -0
  690. package/integrations/bb-plugin-poetic/src/result-readback-schema.ts +319 -0
  691. package/integrations/bb-plugin-poetic/src/result-readback-service.ts +333 -0
  692. package/integrations/bb-plugin-poetic/src/run-page-view.ts +177 -0
  693. package/integrations/bb-plugin-poetic/src/setup-config-schema.ts +291 -0
  694. package/integrations/bb-plugin-poetic/src/setup-config-service.ts +590 -0
  695. package/integrations/bb-plugin-poetic/src/setup-config-view.ts +413 -0
  696. package/integrations/bb-plugin-poetic/src/sprint-close-model.ts +150 -0
  697. package/integrations/bb-plugin-poetic/src/sprint-close-schema.ts +136 -0
  698. package/integrations/bb-plugin-poetic/src/sprint-close-service.ts +341 -0
  699. package/integrations/bb-plugin-poetic/src/sprint-close-view.ts +116 -0
  700. package/integrations/bb-plugin-poetic/src/sprint-composition-model.ts +714 -0
  701. package/integrations/bb-plugin-poetic/src/sprint-composition-readback.ts +231 -0
  702. package/integrations/bb-plugin-poetic/src/sprint-composition-schema.ts +601 -0
  703. package/integrations/bb-plugin-poetic/src/sprint-composition-service.ts +775 -0
  704. package/integrations/bb-plugin-poetic/src/sprint-composition-view.ts +1221 -0
  705. package/integrations/bb-plugin-poetic/src/task-authoring-model.ts +567 -0
  706. package/integrations/bb-plugin-poetic/src/task-authoring-schema.ts +635 -0
  707. package/integrations/bb-plugin-poetic/src/task-authoring-service.ts +842 -0
  708. package/integrations/bb-plugin-poetic/src/task-authoring-view.ts +1227 -0
  709. package/integrations/bb-plugin-poetic/src/task-detail-readback.ts +56 -0
  710. package/integrations/bb-plugin-poetic/src/task-detail-schema.ts +144 -0
  711. package/integrations/bb-plugin-poetic/src/task-navigation.ts +446 -0
  712. package/integrations/bb-plugin-poetic/src/workbench-route.ts +74 -0
  713. package/integrations/bb-plugin-poetic/tests/host-contract.test.ts +773 -0
  714. package/integrations/bb-plugin-poetic/tsconfig.json +18 -0
  715. package/integrations/bb-plugin-poetic/types/PROVENANCE.json +52 -0
  716. package/integrations/bb-plugin-poetic/types/bb-plugin-sdk-app.d.ts +1444 -0
  717. package/integrations/bb-plugin-poetic/types/bb-plugin-sdk.d.ts +13030 -0
  718. package/integrations/bb-plugin-poetic/vitest.host.config.ts +71 -0
  719. package/npm-shrinkwrap.json +4950 -0
  720. package/package.json +331 -0
  721. package/schemas/README.md +80 -0
  722. package/schemas/config-v1.schema.json +136 -0
  723. package/schemas/execution-config.schema.json +47 -0
  724. package/schemas/judge-scoring.schema.json +370 -0
  725. package/schemas/poetic.config.schema.json +2214 -0
  726. package/schemas/provider-config.schema.json +203 -0
  727. package/schemas/telemetry-config.schema.json +79 -0
  728. package/schemas/user-preferences.schema.json +141 -0
  729. package/scripts/assert-node-runtime.mjs +140 -0
  730. package/scripts/preflight-native.mjs +49 -0
  731. package/scripts/preinstall-node-check.mjs +78 -0
  732. package/scripts/setup-git-hooks.mjs +24 -0
  733. package/scripts/sync.sh +2722 -0
  734. package/scripts/write-node-launcher.sh +108 -0
  735. package/src/resources/gemini/slash-packs/default/plan.toml +15 -0
  736. package/src/resources/gemini/slash-packs/default/summary.toml +16 -0
  737. package/src/resources/gemini/slash-packs/default/tests.toml +16 -0
  738. package/templates/.poetic/README.md +37 -0
  739. package/templates/.poetic/agents/README.md +296 -0
  740. package/templates/.poetic/agents/api-documenter.md +147 -0
  741. package/templates/.poetic/agents/backend-architect.md +31 -0
  742. package/templates/.poetic/agents/code-reviewer.md +157 -0
  743. package/templates/.poetic/agents/data-scientist.md +179 -0
  744. package/templates/.poetic/agents/database-optimizer.md +145 -0
  745. package/templates/.poetic/agents/debugger.md +31 -0
  746. package/templates/.poetic/agents/deployment-engineer.md +164 -0
  747. package/templates/.poetic/agents/devops-troubleshooter.md +139 -0
  748. package/templates/.poetic/agents/frontend-developer.md +150 -0
  749. package/templates/.poetic/agents/javascript-pro.md +36 -0
  750. package/templates/.poetic/agents/performance-engineer.md +151 -0
  751. package/templates/.poetic/agents/python-pro.md +137 -0
  752. package/templates/.poetic/agents/test-automator.md +147 -0
  753. package/templates/.poetic/agents/typescript-pro.md +34 -0
  754. package/templates/.poetic/config/poetic.config.jsonc +69 -0
  755. package/templates/.poetic/config/project-context.template.json +6 -0
  756. package/templates/.poetic/config/task-type-aliases.presets/kanban.yaml +14 -0
  757. package/templates/.poetic/config/task-type-aliases.presets/scrum.yaml +17 -0
  758. package/templates/.poetic/config/task-type-aliases.presets/xp.yaml +12 -0
  759. package/templates/.poetic/config/task-type-aliases.yaml +28 -0
  760. package/templates/.poetic/gitignore.template +55 -0
  761. package/templates/.poetic/task-types/analysis.yaml +40 -0
  762. package/templates/.poetic/task-types/architecture.yaml +38 -0
  763. package/templates/.poetic/task-types/doc.yaml +35 -0
  764. package/templates/.poetic/task-types/feature.yaml +23 -0
  765. package/templates/.poetic/task-types/general.yaml +6 -0
  766. package/templates/.poetic/task-types/security.yaml +39 -0
  767. package/templates/AGENTS.template.md +99 -0
  768. package/templates/CLAUDE.template.md +1 -0
  769. package/templates/GEMINI.template.md +1 -0
  770. package/templates/builtin-workflows/code-review.yaml +73 -0
  771. package/templates/builtin-workflows/compete-streak.yaml +78 -0
  772. package/templates/builtin-workflows/hello-verify.yaml +10 -0
  773. package/templates/builtin-workflows/judge-regression.yaml +114 -0
  774. package/templates/builtin-workflows/skills/code-review/SKILL.md +60 -0
  775. package/templates/builtin-workflows/skills/hello-verify/SKILL.md +6 -0
  776. package/templates/guard-kit/GUARD_SETUP.md.template +255 -0
  777. package/templates/guard-kit/check.mjs.template +777 -0
  778. package/templates/guard-kit/config.json.template +6 -0
  779. package/templates/guard-kit/poetic-guard.yml.template +189 -0
  780. package/templates/profiles/README.md +56 -0
  781. package/templates/profiles/frontier-claude.json +27 -0
  782. package/templates/profiles/frontier-codex.json +26 -0
@@ -0,0 +1,1087 @@
1
+ import {
2
+ TransportExecutionError
3
+ } from "./chunk-DCYF7EKG.js";
4
+ import {
5
+ UniversalCostCalculator,
6
+ resolveAvailableTotalCostUsd
7
+ } from "./chunk-ASEP3M2W.js";
8
+ import {
9
+ shouldExcludeFile
10
+ } from "./chunk-NS33V3IM.js";
11
+ import "./chunk-H2AYQIHW.js";
12
+ import {
13
+ buildChildProcessEnv
14
+ } from "./chunk-ZYG7GGKO.js";
15
+ import {
16
+ TelemetryLogger
17
+ } from "./chunk-CKNX3TTP.js";
18
+ import "./chunk-FYOILAN5.js";
19
+ import "./chunk-J62KPGII.js";
20
+ import "./chunk-XAONGNST.js";
21
+ import "./chunk-GAFJEYLK.js";
22
+ import "./chunk-H6G7QRMQ.js";
23
+ import "./chunk-J6P3FWWW.js";
24
+ import "./chunk-CP7H3HSP.js";
25
+ import "./chunk-ETYDXCK7.js";
26
+ import "./chunk-BSE4R6XD.js";
27
+ import "./chunk-UR2IBGIM.js";
28
+ import "./chunk-JSWMRQYG.js";
29
+ import "./chunk-XGYF2QMZ.js";
30
+ import "./chunk-72YTZMAM.js";
31
+ import "./chunk-S2VQCZO4.js";
32
+ import "./chunk-WMPU2UOV.js";
33
+ import "./chunk-VX3UMWB7.js";
34
+ import "./chunk-XT2ZQVTC.js";
35
+ import "./chunk-YGXKOBQQ.js";
36
+ import "./chunk-V72RMBM4.js";
37
+ import "./chunk-ZDTGECTN.js";
38
+ import "./chunk-G36W2T2S.js";
39
+ import "./chunk-GKN3HMN4.js";
40
+ import "./chunk-QVZMFDYG.js";
41
+ import "./chunk-S54MKU6V.js";
42
+ import "./chunk-3S62LLWJ.js";
43
+ import "./chunk-45FPSA3B.js";
44
+ import "./chunk-YMX76IOS.js";
45
+ import "./chunk-6Y5U7UFY.js";
46
+ import "./chunk-XV7NZL4B.js";
47
+ import "./chunk-CD7ISXA4.js";
48
+ import "./chunk-QGJDMEOV.js";
49
+ import {
50
+ isSandboxAuthorityEnvVar
51
+ } from "./chunk-6TZJRKNW.js";
52
+ import {
53
+ wrapWithSandbox
54
+ } from "./chunk-PCAGC5MR.js";
55
+ import "./chunk-5WCQRDRB.js";
56
+ import "./chunk-5WRLK5KW.js";
57
+ import "./chunk-C57KJOUQ.js";
58
+ import "./chunk-DF5SLDE4.js";
59
+ import "./chunk-TGON4N4O.js";
60
+ import "./chunk-I5WRT7ZR.js";
61
+ import "./chunk-A3YGID55.js";
62
+ import "./chunk-5EERLVZB.js";
63
+ import "./chunk-XQD2B6BB.js";
64
+ import "./chunk-34CNP2HB.js";
65
+ import "./chunk-KNDYMVWN.js";
66
+ import "./chunk-RWREC3KJ.js";
67
+ import "./chunk-LAMKBTXX.js";
68
+ import "./chunk-FD4ERYEG.js";
69
+ import "./chunk-KTMW65UX.js";
70
+ import "./chunk-FHOWVDF5.js";
71
+ import "./chunk-UDMS5AD3.js";
72
+ import "./chunk-MWHLBPNU.js";
73
+ import "./chunk-JLS65NUQ.js";
74
+ import "./chunk-TRSVUPCX.js";
75
+ import "./chunk-FKAUPHMR.js";
76
+ import "./chunk-TSXGRLPR.js";
77
+ import "./chunk-LUVKFFWR.js";
78
+ import "./chunk-ENRGKNR5.js";
79
+ import "./chunk-XB5YLCLB.js";
80
+ import "./chunk-QOCOVLUH.js";
81
+ import "./chunk-2VSQMRCB.js";
82
+ import {
83
+ modelSupportsAdaptiveThinking,
84
+ modelSupportsManualThinkingBudget,
85
+ resolveReasoningEffort
86
+ } from "./chunk-ON3G73BU.js";
87
+ import "./chunk-3G6FZCRF.js";
88
+ import "./chunk-N5DX4JAK.js";
89
+ import "./chunk-2QLYTVYX.js";
90
+ import "./chunk-7GDRQBQC.js";
91
+ import "./chunk-PGSPX4SU.js";
92
+ import {
93
+ ProviderRegistry
94
+ } from "./chunk-AT4TNPWW.js";
95
+ import "./chunk-GSGD5E4C.js";
96
+ import "./chunk-UI2F6DJ5.js";
97
+ import "./chunk-4BTDUT2S.js";
98
+ import "./chunk-L6OM4A22.js";
99
+ import "./chunk-G4THLFV3.js";
100
+ import "./chunk-RGWHUI5E.js";
101
+ import "./chunk-UUH2RVKS.js";
102
+ import "./chunk-LEIIWPWQ.js";
103
+ import "./chunk-L7JZLXQL.js";
104
+ import "./chunk-IZYIQQ7X.js";
105
+ import "./chunk-JPKSXKNB.js";
106
+ import "./chunk-TAJPCXSB.js";
107
+ import "./chunk-XZE4XARH.js";
108
+ import "./chunk-EJGCZGUF.js";
109
+ import "./chunk-LPITVM7M.js";
110
+ import "./chunk-5DLKYTQX.js";
111
+ import "./chunk-PZ5AY32C.js";
112
+
113
+ // src/core/providers/shared/transports/api-tool-executor.ts
114
+ import { constants as fsConstants } from "fs";
115
+ import { lstat, mkdir, open, readFile, realpath, stat } from "fs/promises";
116
+ import path from "path";
117
+ import { execa } from "execa";
118
+ var DEFAULT_MAX_READ_SIZE = 1 * 1024 * 1024;
119
+ var DEFAULT_MAX_WRITE_SIZE = 10 * 1024 * 1024;
120
+ var DEFAULT_MAX_BASH_OUTPUT = 100 * 1024;
121
+ var API_TOOL_BLOCKED_ENV_KEYS = [
122
+ "ANTHROPIC_API_KEY",
123
+ "CLAUDE_CODE_OAUTH_TOKEN",
124
+ "GEMINI_API_KEY",
125
+ "GOOGLE_API_KEY",
126
+ "GOOGLE_APPLICATION_CREDENTIALS",
127
+ "GROK_CODE_XAI_API_KEY",
128
+ "XAI_API_KEY",
129
+ "OPENAI_API_KEY",
130
+ "OPENROUTER_API_KEY",
131
+ "OPENROUTER_KEY",
132
+ "BLACKBOX_API_KEY",
133
+ "AWS_SECRET_ACCESS_KEY",
134
+ "AWS_SESSION_TOKEN",
135
+ "AWS_ACCESS_KEY_ID",
136
+ "GITHUB_TOKEN",
137
+ "GH_TOKEN",
138
+ "SSH_AUTH_SOCK",
139
+ "GIT_SSH",
140
+ "GIT_SSH_COMMAND"
141
+ ];
142
+ function requireStringInput(input, key) {
143
+ const value = input[key];
144
+ if (typeof value !== "string" || value.length === 0) {
145
+ throw new Error(`Tool input "${key}" must be a non-empty string`);
146
+ }
147
+ return value;
148
+ }
149
+ function optionalStringInput(input, key) {
150
+ const value = input[key];
151
+ if (value === void 0 || value === null) {
152
+ return void 0;
153
+ }
154
+ if (typeof value !== "string" || value.length === 0) {
155
+ throw new Error(`Tool input "${key}" must be a non-empty string when provided`);
156
+ }
157
+ return value;
158
+ }
159
+ function buildApiToolEnv() {
160
+ const env = buildChildProcessEnv({ blockedKeys: API_TOOL_BLOCKED_ENV_KEYS });
161
+ for (const key of Object.keys(env)) {
162
+ if (isSandboxAuthorityEnvVar(key)) {
163
+ delete env[key];
164
+ }
165
+ }
166
+ return env;
167
+ }
168
+ var ApiToolExecutor = class {
169
+ workingDir;
170
+ perToolTimeoutMs;
171
+ maxReadFileSizeBytes;
172
+ maxWriteFileSizeBytes;
173
+ maxBashOutputBytes;
174
+ /** Tracks all files modified during this executor's lifetime. */
175
+ _filesModified = /* @__PURE__ */ new Set();
176
+ /** Resolved workingDir (resolves symlinks at construction time). */
177
+ resolvedWorkingDir;
178
+ constructor(workingDir, options) {
179
+ this.workingDir = workingDir;
180
+ this.perToolTimeoutMs = options.perToolTimeoutMs;
181
+ this.maxReadFileSizeBytes = options.maxReadFileSizeBytes ?? DEFAULT_MAX_READ_SIZE;
182
+ this.maxWriteFileSizeBytes = options.maxWriteFileSizeBytes ?? DEFAULT_MAX_WRITE_SIZE;
183
+ this.maxBashOutputBytes = options.maxBashOutputBytes ?? DEFAULT_MAX_BASH_OUTPUT;
184
+ }
185
+ /** Returns list of all files modified during execution. */
186
+ get filesModified() {
187
+ return Array.from(this._filesModified);
188
+ }
189
+ /**
190
+ * Execute a tool call by name.
191
+ *
192
+ * @throws Error for unknown tool names.
193
+ */
194
+ async executeTool(name, input, abortSignal) {
195
+ try {
196
+ if (abortSignal?.aborted) {
197
+ return { output: "", error: "Tool execution aborted" };
198
+ }
199
+ switch (name) {
200
+ case "read_file":
201
+ return this.readFile(requireStringInput(input, "path"));
202
+ case "write_file":
203
+ return this.writeFile(
204
+ requireStringInput(input, "path"),
205
+ requireStringInput(input, "content")
206
+ );
207
+ case "edit_file":
208
+ return this.editFile(
209
+ requireStringInput(input, "path"),
210
+ requireStringInput(input, "old_text"),
211
+ requireStringInput(input, "new_text")
212
+ );
213
+ case "bash":
214
+ return this.bash(requireStringInput(input, "command"), abortSignal);
215
+ case "list_files":
216
+ return this.listFiles(requireStringInput(input, "pattern"), abortSignal);
217
+ case "search_files":
218
+ return this.searchFiles(
219
+ requireStringInput(input, "pattern"),
220
+ optionalStringInput(input, "path"),
221
+ abortSignal
222
+ );
223
+ default:
224
+ return { output: "", error: `Unknown tool: ${name}` };
225
+ }
226
+ } catch (err) {
227
+ return { output: "", error: `Invalid tool input: ${err.message}` };
228
+ }
229
+ }
230
+ // Path Security
231
+ /**
232
+ * Resolves a relative path to an absolute path within workingDir.
233
+ * Validates that the resolved real path is within the jail.
234
+ *
235
+ * @throws Error if path escapes the working directory.
236
+ */
237
+ /**
238
+ * Gets the real (symlink-resolved) working directory. Cached after first call.
239
+ */
240
+ async getResolvedWorkingDir() {
241
+ if (!this.resolvedWorkingDir) {
242
+ this.resolvedWorkingDir = await realpath(this.workingDir);
243
+ }
244
+ return this.resolvedWorkingDir;
245
+ }
246
+ async resolveAndValidatePath(inputPath) {
247
+ const resolvedWd = await this.getResolvedWorkingDir();
248
+ const resolved = path.resolve(resolvedWd, inputPath);
249
+ if (!resolved.startsWith(resolvedWd + path.sep) && resolved !== resolvedWd) {
250
+ throw new Error(`Path '${inputPath}' escapes working directory`);
251
+ }
252
+ try {
253
+ const real = await realpath(resolved);
254
+ if (!real.startsWith(resolvedWd + path.sep) && real !== resolvedWd) {
255
+ throw new Error(`Path '${inputPath}' resolves outside working directory via symlink`);
256
+ }
257
+ return real;
258
+ } catch (err) {
259
+ if (err.code === "ENOENT") {
260
+ await this.rejectDanglingFinalSymlink(resolved, inputPath);
261
+ await this.validateNearestExistingParent(resolved, resolvedWd, inputPath);
262
+ return resolved;
263
+ }
264
+ throw err;
265
+ }
266
+ }
267
+ async rejectDanglingFinalSymlink(resolvedPath, inputPath) {
268
+ try {
269
+ const stats = await lstat(resolvedPath);
270
+ if (stats.isSymbolicLink()) {
271
+ throw new Error(`Path '${inputPath}' resolves outside working directory via symlink`);
272
+ }
273
+ } catch (err) {
274
+ if (err.code === "ENOENT") {
275
+ return;
276
+ }
277
+ throw err;
278
+ }
279
+ }
280
+ async validateNearestExistingParent(resolvedPath, resolvedWd, inputPath) {
281
+ let parent = path.dirname(resolvedPath);
282
+ while (parent.startsWith(resolvedWd + path.sep) && parent !== resolvedWd) {
283
+ try {
284
+ const realParent2 = await realpath(parent);
285
+ if (!realParent2.startsWith(resolvedWd + path.sep) && realParent2 !== resolvedWd) {
286
+ throw new Error(`Path '${inputPath}' resolves outside working directory via symlink`);
287
+ }
288
+ return;
289
+ } catch (err) {
290
+ if (err.code === "ENOENT") {
291
+ parent = path.dirname(parent);
292
+ continue;
293
+ }
294
+ throw err;
295
+ }
296
+ }
297
+ const realParent = await realpath(resolvedWd);
298
+ if (realParent !== resolvedWd) {
299
+ throw new Error("Working directory changed during path validation");
300
+ }
301
+ }
302
+ /**
303
+ * Returns a repo-relative path for tracking.
304
+ */
305
+ relativePath(absolutePath) {
306
+ const base = this.resolvedWorkingDir ?? this.workingDir;
307
+ return path.relative(base, absolutePath);
308
+ }
309
+ async assertWritePathAllowed(inputPath) {
310
+ const base = await this.getResolvedWorkingDir();
311
+ const resolved = path.resolve(base, inputPath);
312
+ const normalized = path.relative(base, resolved).replace(/\\/g, "/").toLowerCase();
313
+ if (normalized.startsWith("..") || path.isAbsolute(normalized)) {
314
+ throw new Error(`Path '${inputPath}' escapes working directory`);
315
+ }
316
+ const segments = normalized.split("/").filter(Boolean);
317
+ if (segments.includes(".git") || shouldExcludeFile(normalized)) {
318
+ throw new Error(`Path '${inputPath}' is an excluded repository authority path`);
319
+ }
320
+ }
321
+ async writeFileNoFollow(targetPath, content) {
322
+ const noFollow = fsConstants.O_NOFOLLOW ?? 0;
323
+ const flags = fsConstants.O_WRONLY | fsConstants.O_CREAT | fsConstants.O_TRUNC | noFollow;
324
+ const handle = await open(targetPath, flags);
325
+ try {
326
+ await handle.writeFile(content, "utf8");
327
+ } finally {
328
+ await handle.close();
329
+ }
330
+ }
331
+ // Tool Implementations
332
+ async readFile(filePath) {
333
+ try {
334
+ const resolved = await this.resolveAndValidatePath(filePath);
335
+ const stats = await stat(resolved);
336
+ if (stats.size > this.maxReadFileSizeBytes) {
337
+ return {
338
+ output: "",
339
+ error: `File too large: ${stats.size} bytes (limit: ${this.maxReadFileSizeBytes} bytes)`
340
+ };
341
+ }
342
+ const content = await readFile(resolved, "utf-8");
343
+ return { output: content };
344
+ } catch (err) {
345
+ return { output: "", error: `read_file error: ${err.message}` };
346
+ }
347
+ }
348
+ async writeFile(filePath, content) {
349
+ try {
350
+ await this.assertWritePathAllowed(filePath);
351
+ if (Buffer.byteLength(content, "utf-8") > this.maxWriteFileSizeBytes) {
352
+ return {
353
+ output: "",
354
+ error: `Content too large (limit: ${this.maxWriteFileSizeBytes} bytes)`
355
+ };
356
+ }
357
+ const resolved = await this.resolveAndValidatePath(filePath);
358
+ await this.assertWritePathAllowed(resolved);
359
+ await mkdir(path.dirname(resolved), { recursive: true });
360
+ await this.writeFileNoFollow(resolved, content);
361
+ const rel = this.relativePath(resolved);
362
+ this._filesModified.add(rel);
363
+ return { output: `Wrote ${rel}`, filesModified: [rel] };
364
+ } catch (err) {
365
+ return { output: "", error: `write_file error: ${err.message}` };
366
+ }
367
+ }
368
+ async editFile(filePath, oldText, newText) {
369
+ try {
370
+ await this.assertWritePathAllowed(filePath);
371
+ const resolved = await this.resolveAndValidatePath(filePath);
372
+ await this.assertWritePathAllowed(resolved);
373
+ const content = await readFile(resolved, "utf-8");
374
+ const index = content.indexOf(oldText);
375
+ if (index === -1) {
376
+ return { output: "", error: `old_text not found in ${filePath}` };
377
+ }
378
+ const secondIndex = content.indexOf(oldText, index + 1);
379
+ if (secondIndex !== -1) {
380
+ return {
381
+ output: "",
382
+ error: `old_text matches multiple locations in ${filePath}. Provide more context.`
383
+ };
384
+ }
385
+ const updated = content.slice(0, index) + newText + content.slice(index + oldText.length);
386
+ await this.writeFileNoFollow(resolved, updated);
387
+ const rel = this.relativePath(resolved);
388
+ this._filesModified.add(rel);
389
+ return { output: `Edited ${rel}`, filesModified: [rel] };
390
+ } catch (err) {
391
+ return { output: "", error: `edit_file error: ${err.message}` };
392
+ }
393
+ }
394
+ async bash(command, abortSignal) {
395
+ try {
396
+ const sandboxed = wrapWithSandbox({
397
+ workingDir: this.workingDir,
398
+ command: "bash",
399
+ args: ["-c", command],
400
+ providerName: "api-transport",
401
+ extraWritePaths: ["/tmp"],
402
+ // Runs a model-supplied shell command with write access, so it must not
403
+ // proceed without an accepted boundary. The sibling listFiles/grep tools
404
+ // are read-only and deliberately do not opt in.
405
+ requiresBoundaryForWrites: true
406
+ });
407
+ const result = await execa(sandboxed.command, sandboxed.args, {
408
+ cwd: this.workingDir,
409
+ timeout: this.perToolTimeoutMs,
410
+ reject: false,
411
+ env: buildApiToolEnv(),
412
+ extendEnv: false,
413
+ cancelSignal: abortSignal
414
+ });
415
+ let stdout = result.stdout ?? "";
416
+ let stderr = result.stderr ?? "";
417
+ if (Buffer.byteLength(stdout, "utf-8") > this.maxBashOutputBytes) {
418
+ stdout = `${stdout.slice(0, this.maxBashOutputBytes)}
419
+ [truncated]`;
420
+ }
421
+ if (Buffer.byteLength(stderr, "utf-8") > this.maxBashOutputBytes) {
422
+ stderr = `${stderr.slice(0, this.maxBashOutputBytes)}
423
+ [truncated]`;
424
+ }
425
+ if (result.exitCode !== 0) {
426
+ return {
427
+ output: stdout,
428
+ error: `Exit code ${result.exitCode}: ${stderr}`
429
+ };
430
+ }
431
+ return { output: stdout || "(no output)" };
432
+ } catch (err) {
433
+ return { output: "", error: `bash error: ${err.message}` };
434
+ }
435
+ }
436
+ async listFiles(pattern, abortSignal) {
437
+ try {
438
+ const sandboxed = wrapWithSandbox({
439
+ workingDir: this.workingDir,
440
+ command: "find",
441
+ args: [
442
+ ".",
443
+ "-name",
444
+ pattern,
445
+ "-not",
446
+ "-path",
447
+ "*/node_modules/*",
448
+ "-not",
449
+ "-path",
450
+ "*/.git/*",
451
+ "-type",
452
+ "f"
453
+ ],
454
+ providerName: "api-transport",
455
+ readOnlyWorkingDir: true
456
+ });
457
+ const result = await execa(sandboxed.command, sandboxed.args, {
458
+ cwd: this.workingDir,
459
+ timeout: this.perToolTimeoutMs,
460
+ reject: false,
461
+ env: buildApiToolEnv(),
462
+ extendEnv: false,
463
+ cancelSignal: abortSignal
464
+ });
465
+ const stdout = result.stdout ?? "";
466
+ if (!stdout.trim()) {
467
+ return { output: "No files found." };
468
+ }
469
+ const matches = stdout.split("\n").filter(Boolean).map((f) => f.replace(/^\.\//, ""));
470
+ const capped = matches.slice(0, 500);
471
+ const output = capped.join("\n");
472
+ if (matches.length > 500) {
473
+ return { output: `${output}
474
+ ... and ${matches.length - 500} more` };
475
+ }
476
+ return { output };
477
+ } catch (err) {
478
+ return { output: "", error: `list_files error: ${err.message}` };
479
+ }
480
+ }
481
+ async searchFiles(pattern, searchPath, abortSignal) {
482
+ try {
483
+ const searchDir = searchPath ? await this.resolveAndValidatePath(searchPath) : await this.getResolvedWorkingDir();
484
+ const sandboxed = wrapWithSandbox({
485
+ workingDir: this.workingDir,
486
+ command: "grep",
487
+ args: ["-rn", "-l", "-e", pattern, "--", searchDir],
488
+ providerName: "api-transport",
489
+ readOnlyWorkingDir: true
490
+ });
491
+ const result = await execa(sandboxed.command, sandboxed.args, {
492
+ cwd: this.workingDir,
493
+ timeout: this.perToolTimeoutMs,
494
+ reject: false,
495
+ env: buildApiToolEnv(),
496
+ extendEnv: false,
497
+ cancelSignal: abortSignal
498
+ });
499
+ const stdout = result.stdout ?? "";
500
+ if (!stdout.trim()) {
501
+ return { output: "No matches found." };
502
+ }
503
+ const lines = stdout.split("\n").filter(Boolean).map((line) => path.relative(this.resolvedWorkingDir ?? this.workingDir, line)).slice(0, 200);
504
+ return { output: lines.join("\n") };
505
+ } catch (err) {
506
+ return { output: "", error: `search_files error: ${err.message}` };
507
+ }
508
+ }
509
+ };
510
+
511
+ // src/core/providers/shared/transports/api-transport.ts
512
+ var CODING_TOOLS = [
513
+ {
514
+ name: "read_file",
515
+ description: "Read the contents of a file at the given path",
516
+ input_schema: {
517
+ type: "object",
518
+ properties: {
519
+ path: { type: "string", description: "Relative path from working directory" }
520
+ },
521
+ required: ["path"]
522
+ }
523
+ },
524
+ {
525
+ name: "write_file",
526
+ description: "Write content to a file, creating it if needed",
527
+ input_schema: {
528
+ type: "object",
529
+ properties: {
530
+ path: { type: "string", description: "Relative path from working directory" },
531
+ content: { type: "string", description: "Full file content to write" }
532
+ },
533
+ required: ["path", "content"]
534
+ }
535
+ },
536
+ {
537
+ name: "edit_file",
538
+ description: "Replace exact text in a file (old_text must match uniquely)",
539
+ input_schema: {
540
+ type: "object",
541
+ properties: {
542
+ path: { type: "string", description: "Relative path" },
543
+ old_text: { type: "string", description: "Exact text to find" },
544
+ new_text: { type: "string", description: "Replacement text" }
545
+ },
546
+ required: ["path", "old_text", "new_text"]
547
+ }
548
+ },
549
+ {
550
+ name: "bash",
551
+ description: "Run a bash command in the working directory",
552
+ input_schema: {
553
+ type: "object",
554
+ properties: {
555
+ command: { type: "string", description: "Bash command to execute" }
556
+ },
557
+ required: ["command"]
558
+ }
559
+ },
560
+ {
561
+ name: "list_files",
562
+ description: "List files matching a glob pattern",
563
+ input_schema: {
564
+ type: "object",
565
+ properties: {
566
+ pattern: { type: "string", description: 'Glob pattern (e.g., "src/**/*.ts")' }
567
+ },
568
+ required: ["pattern"]
569
+ }
570
+ },
571
+ {
572
+ name: "search_files",
573
+ description: "Search file contents with a regex pattern",
574
+ input_schema: {
575
+ type: "object",
576
+ properties: {
577
+ pattern: { type: "string", description: "Regex pattern to search for" },
578
+ path: { type: "string", description: "Directory to search in (optional)" }
579
+ },
580
+ required: ["pattern"]
581
+ }
582
+ }
583
+ ];
584
+ var CODING_TOOL_NAMES = CODING_TOOLS.map((t) => t.name);
585
+ var READ_ONLY_CODING_TOOL_NAMES = /* @__PURE__ */ new Set(["read_file", "list_files", "search_files"]);
586
+ function resolveRequestCodingTools(request) {
587
+ let tools = request.tools !== void 0 ? request.tools : CODING_TOOLS;
588
+ if (request.allowedTools !== void 0) {
589
+ const allow = new Set(request.allowedTools);
590
+ tools = tools.filter((tool) => allow.has(tool.name));
591
+ }
592
+ if (request.disallowedTools !== void 0 && request.disallowedTools.length > 0) {
593
+ const deny = new Set(request.disallowedTools);
594
+ tools = tools.filter((tool) => !deny.has(tool.name));
595
+ }
596
+ if (request.readOnlyWorkingDir === true) {
597
+ tools = tools.filter((tool) => READ_ONLY_CODING_TOOL_NAMES.has(tool.name));
598
+ }
599
+ return tools;
600
+ }
601
+ function buildStructuredOutputToolName(request) {
602
+ const normalized = request.name.replace(/[^A-Za-z0-9_-]/g, "_").replace(/^_+|_+$/g, "").slice(0, 59);
603
+ return `emit_${normalized || "structured_output"}`;
604
+ }
605
+ function buildStructuredOutputTool(request) {
606
+ return {
607
+ name: buildStructuredOutputToolName(request),
608
+ description: request.description ?? `Emit ${request.name} as schema-constrained JSON.`,
609
+ input_schema: request.schema
610
+ };
611
+ }
612
+ async function loadAnthropicSdk() {
613
+ try {
614
+ const module = await import("@anthropic-ai/sdk");
615
+ return module.default;
616
+ } catch (error) {
617
+ const details = error instanceof Error ? error.message : String(error);
618
+ throw new TransportExecutionError(
619
+ `Anthropic SDK is required for API transport but is not available. Install dependencies (npm ci). Details: ${details}`,
620
+ "api",
621
+ { retryable: false, reason: "missing_runtime_dependency" }
622
+ );
623
+ }
624
+ }
625
+ function isAnthropicApiError(err) {
626
+ return typeof err === "object" && err !== null && typeof err.status === "number" && (err.name === "APIError" || typeof err.error?.type === "string");
627
+ }
628
+ var ApiTransport = class _ApiTransport {
629
+ type = "api";
630
+ static costCalculator = null;
631
+ async execute(request) {
632
+ const meta = request.transportMeta;
633
+ const apiConfig = meta?.apiConfig;
634
+ if (!apiConfig?.base_url || !apiConfig?.api_key_env_var) {
635
+ throw new TransportExecutionError(
636
+ "ApiTransport requires transportMeta.apiConfig with base_url and api_key_env_var",
637
+ "api",
638
+ { retryable: false, reason: "missing_api_config" }
639
+ );
640
+ }
641
+ const apiKey = request.env?.[apiConfig.api_key_env_var] ?? process.env[apiConfig.api_key_env_var];
642
+ if (!apiKey) {
643
+ throw new TransportExecutionError(
644
+ `API key not found in environment variable '${apiConfig.api_key_env_var}'`,
645
+ "api",
646
+ { retryable: false, reason: "missing_api_key" }
647
+ );
648
+ }
649
+ const baseURL = apiConfig.base_url.replace(/\/+$/, "").replace(/\/v1(?:\/messages)?$/, "");
650
+ if (!request.model) {
651
+ throw new TransportExecutionError(
652
+ "ApiTransport requires request.model to be set (no hardcoded fallback)",
653
+ "api",
654
+ { retryable: false, reason: "missing_model" }
655
+ );
656
+ }
657
+ const AnthropicSdk = await loadAnthropicSdk();
658
+ const client = new AnthropicSdk({
659
+ apiKey,
660
+ baseURL,
661
+ defaultHeaders: apiConfig.headers
662
+ });
663
+ const maxIterations = apiConfig.max_tool_iterations ?? 50;
664
+ const perToolTimeoutMs = apiConfig.per_tool_timeout_ms ?? 3e4;
665
+ const overallTimeoutMs = normalizeOverallTimeoutMs(request.timeout);
666
+ const startTime = Date.now();
667
+ const executor = new ApiToolExecutor(request.workingDir, {
668
+ perToolTimeoutMs
669
+ });
670
+ const structuredOutputTool = request.structuredOutput ? buildStructuredOutputTool(request.structuredOutput) : void 0;
671
+ const codingTools = resolveRequestCodingTools(request);
672
+ const tools = structuredOutputTool ? [structuredOutputTool] : codingTools;
673
+ const executableToolNames = new Set(tools.map((tool) => tool.name));
674
+ const messages = [{ role: "user", content: request.prompt }];
675
+ const textParts = [];
676
+ const allToolInvocations = [];
677
+ let totalInputTokens = 0;
678
+ let totalOutputTokens = 0;
679
+ let totalCacheReadTokens = 0;
680
+ let totalCacheCreationTokens = 0;
681
+ let iteration = 0;
682
+ try {
683
+ while (iteration < maxIterations) {
684
+ if (request.abortSignal?.aborted) {
685
+ return this.buildResult(
686
+ textParts,
687
+ allToolInvocations,
688
+ executor,
689
+ "aborted",
690
+ {
691
+ inputTokens: totalInputTokens,
692
+ outputTokens: totalOutputTokens,
693
+ cacheReadTokens: totalCacheReadTokens,
694
+ cacheCreationTokens: totalCacheCreationTokens
695
+ },
696
+ request.model
697
+ );
698
+ }
699
+ if (overallTimeoutMs && Date.now() - startTime > overallTimeoutMs) {
700
+ return this.buildResult(
701
+ textParts,
702
+ allToolInvocations,
703
+ executor,
704
+ "timeout",
705
+ {
706
+ inputTokens: totalInputTokens,
707
+ outputTokens: totalOutputTokens,
708
+ cacheReadTokens: totalCacheReadTokens,
709
+ cacheCreationTokens: totalCacheCreationTokens
710
+ },
711
+ request.model
712
+ );
713
+ }
714
+ const elapsed = Date.now() - startTime;
715
+ const remainingMs = overallTimeoutMs ? overallTimeoutMs - elapsed : void 0;
716
+ const response = await this.callApi(client, {
717
+ model: request.model,
718
+ system: request.systemPrompt,
719
+ messages,
720
+ tools,
721
+ maxTokens: apiConfig.max_tokens ?? 16384,
722
+ reasoningEffort: request.generationSettings?.reasoningEffort,
723
+ thinkingBudget: request.generationSettings?.thinkingBudget,
724
+ toolChoice: structuredOutputTool ? { type: "tool", name: structuredOutputTool.name } : void 0,
725
+ stream: apiConfig.stream ?? true,
726
+ onData: request.onData,
727
+ abortSignal: request.abortSignal,
728
+ timeoutMs: remainingMs
729
+ });
730
+ totalInputTokens += response.usage.input_tokens;
731
+ totalOutputTokens += response.usage.output_tokens;
732
+ const cacheTokens = response.usage.cache_read_input_tokens;
733
+ if (typeof cacheTokens === "number" && Number.isFinite(cacheTokens)) {
734
+ totalCacheReadTokens += cacheTokens;
735
+ }
736
+ const cacheCreationTokens = response.usage.cache_creation_input_tokens;
737
+ if (typeof cacheCreationTokens === "number" && Number.isFinite(cacheCreationTokens)) {
738
+ totalCacheCreationTokens += cacheCreationTokens;
739
+ }
740
+ const toolUseBlocks = [];
741
+ for (const block of response.content) {
742
+ if (block.type === "text") {
743
+ if (!structuredOutputTool) {
744
+ textParts.push(block.text);
745
+ request.onData?.(block.text);
746
+ }
747
+ } else if (block.type === "tool_use") {
748
+ toolUseBlocks.push(block);
749
+ }
750
+ }
751
+ if (structuredOutputTool) {
752
+ const structuredBlock = toolUseBlocks.find(
753
+ (block) => block.name === structuredOutputTool.name
754
+ );
755
+ if (!structuredBlock) {
756
+ return {
757
+ ...this.buildResult(
758
+ [],
759
+ allToolInvocations,
760
+ executor,
761
+ "error",
762
+ {
763
+ inputTokens: totalInputTokens,
764
+ outputTokens: totalOutputTokens,
765
+ cacheReadTokens: totalCacheReadTokens,
766
+ cacheCreationTokens: totalCacheCreationTokens
767
+ },
768
+ request.model
769
+ ),
770
+ stderr: `Structured output tool ${structuredOutputTool.name} was not returned`,
771
+ errorCode: "structured_output_missing"
772
+ };
773
+ }
774
+ const output = JSON.stringify(structuredBlock.input);
775
+ request.onData?.(output);
776
+ const structuredInvocations = [
777
+ {
778
+ name: structuredBlock.name,
779
+ input: structuredBlock.input,
780
+ output,
781
+ durationMs: 0
782
+ }
783
+ ];
784
+ return this.buildResult(
785
+ [output],
786
+ structuredInvocations,
787
+ executor,
788
+ "success",
789
+ {
790
+ inputTokens: totalInputTokens,
791
+ outputTokens: totalOutputTokens,
792
+ cacheReadTokens: totalCacheReadTokens,
793
+ cacheCreationTokens: totalCacheCreationTokens
794
+ },
795
+ request.model
796
+ );
797
+ }
798
+ if (toolUseBlocks.length === 0) {
799
+ const status = response.stop_reason === "max_tokens" ? "error" : "success";
800
+ const result = this.buildResult(
801
+ textParts,
802
+ allToolInvocations,
803
+ executor,
804
+ status,
805
+ {
806
+ inputTokens: totalInputTokens,
807
+ outputTokens: totalOutputTokens,
808
+ cacheReadTokens: totalCacheReadTokens,
809
+ cacheCreationTokens: totalCacheCreationTokens
810
+ },
811
+ request.model
812
+ );
813
+ if (response.stop_reason === "max_tokens") {
814
+ return {
815
+ ...result,
816
+ stderr: "Claude API response stopped at max_tokens before completion",
817
+ errorCode: "output_truncated"
818
+ };
819
+ }
820
+ return this.buildResult(
821
+ textParts,
822
+ allToolInvocations,
823
+ executor,
824
+ "success",
825
+ {
826
+ inputTokens: totalInputTokens,
827
+ outputTokens: totalOutputTokens,
828
+ cacheReadTokens: totalCacheReadTokens,
829
+ cacheCreationTokens: totalCacheCreationTokens
830
+ },
831
+ request.model
832
+ );
833
+ }
834
+ const toolResults = [];
835
+ for (const toolUse of toolUseBlocks) {
836
+ if (request.abortSignal?.aborted) {
837
+ return this.buildResult(
838
+ textParts,
839
+ allToolInvocations,
840
+ executor,
841
+ "aborted",
842
+ {
843
+ inputTokens: totalInputTokens,
844
+ outputTokens: totalOutputTokens,
845
+ cacheReadTokens: totalCacheReadTokens,
846
+ cacheCreationTokens: totalCacheCreationTokens
847
+ },
848
+ request.model
849
+ );
850
+ }
851
+ const toolStart = Date.now();
852
+ const toolResult = executableToolNames.has(toolUse.name) ? await executor.executeTool(
853
+ toolUse.name,
854
+ toolUse.input,
855
+ request.abortSignal
856
+ ) : {
857
+ output: "",
858
+ error: `Tool "${toolUse.name}" is not available for this request`
859
+ };
860
+ const toolDuration = Date.now() - toolStart;
861
+ allToolInvocations.push({
862
+ name: toolUse.name,
863
+ input: toolUse.input,
864
+ output: toolResult.output,
865
+ durationMs: toolDuration,
866
+ error: toolResult.error
867
+ });
868
+ toolResults.push({
869
+ type: "tool_result",
870
+ tool_use_id: toolUse.id,
871
+ content: toolResult.error ? `Error: ${toolResult.error}` : toolResult.output,
872
+ is_error: !!toolResult.error
873
+ });
874
+ }
875
+ messages.push({ role: "assistant", content: response.content });
876
+ messages.push({ role: "user", content: toolResults });
877
+ iteration++;
878
+ }
879
+ textParts.push(`
880
+ [Transport: max tool iterations (${maxIterations}) reached]`);
881
+ return this.buildResult(
882
+ textParts,
883
+ allToolInvocations,
884
+ executor,
885
+ "error",
886
+ {
887
+ inputTokens: totalInputTokens,
888
+ outputTokens: totalOutputTokens,
889
+ cacheReadTokens: totalCacheReadTokens,
890
+ cacheCreationTokens: totalCacheCreationTokens
891
+ },
892
+ request.model
893
+ );
894
+ } catch (err) {
895
+ return this.handleApiError(
896
+ err,
897
+ textParts,
898
+ allToolInvocations,
899
+ executor,
900
+ {
901
+ inputTokens: totalInputTokens,
902
+ outputTokens: totalOutputTokens,
903
+ cacheReadTokens: totalCacheReadTokens,
904
+ cacheCreationTokens: totalCacheCreationTokens
905
+ },
906
+ AnthropicSdk,
907
+ request.model
908
+ );
909
+ }
910
+ }
911
+ /**
912
+ * Makes a single API call, optionally streaming.
913
+ */
914
+ async callApi(client, params) {
915
+ const requestParams = {
916
+ model: params.model,
917
+ max_tokens: params.maxTokens,
918
+ messages: params.messages,
919
+ tools: params.tools
920
+ };
921
+ if (params.toolChoice) {
922
+ requestParams.tool_choice = params.toolChoice;
923
+ }
924
+ if (params.system) {
925
+ requestParams.system = params.system;
926
+ }
927
+ const requestParamsWithThinking = requestParams;
928
+ if (!params.toolChoice) {
929
+ const supportsAdaptiveThinking = modelSupportsAdaptiveThinking("claude", params.model);
930
+ const supportsManualThinkingBudget = modelSupportsManualThinkingBudget(
931
+ "claude",
932
+ params.model
933
+ );
934
+ const requestedEffort = params.reasoningEffort ?? (supportsAdaptiveThinking ? "high" : void 0);
935
+ if (requestedEffort) {
936
+ const effortResolution = resolveReasoningEffort(
937
+ "claude",
938
+ requestedEffort,
939
+ false,
940
+ params.model
941
+ );
942
+ requestParamsWithThinking.output_config = {
943
+ effort: effortResolution.nativeParam ?? effortResolution.resolvedLevel
944
+ };
945
+ }
946
+ if (supportsAdaptiveThinking) {
947
+ requestParamsWithThinking.thinking = { type: "adaptive" };
948
+ } else if (supportsManualThinkingBudget && typeof params.thinkingBudget === "number" && Number.isFinite(params.thinkingBudget) && params.thinkingBudget > 0) {
949
+ requestParamsWithThinking.thinking = {
950
+ type: "enabled",
951
+ budget_tokens: Math.floor(params.thinkingBudget)
952
+ };
953
+ }
954
+ }
955
+ const response = await client.messages.create(requestParams, {
956
+ signal: params.abortSignal,
957
+ timeout: params.timeoutMs
958
+ });
959
+ return response;
960
+ }
961
+ /**
962
+ * Builds a TransportResult from accumulated data.
963
+ */
964
+ buildResult(textParts, toolInvocations, executor, status, usage, model) {
965
+ const totalCostUsd = model ? this.calculateCostUsd(model, usage) : void 0;
966
+ return {
967
+ stdout: textParts.join("\n"),
968
+ stderr: "",
969
+ status,
970
+ tokenUsage: {
971
+ inputTokens: usage.inputTokens,
972
+ outputTokens: usage.outputTokens,
973
+ cachedInputTokens: usage.cacheReadTokens || void 0,
974
+ cacheCreationInputTokens: usage.cacheCreationTokens || void 0
975
+ },
976
+ totalCostUsd,
977
+ toolInvocations,
978
+ filesModified: executor.filesModified
979
+ };
980
+ }
981
+ /**
982
+ * Maps API errors to TransportResult.
983
+ */
984
+ handleApiError(err, textParts, toolInvocations, executor, usage, anthropicSdk, model) {
985
+ const errorMessage = err instanceof Error ? err.message : String(err);
986
+ let status = "error";
987
+ let errorCode;
988
+ let retryable = false;
989
+ const runtimeApiErrorCtor = anthropicSdk?.APIError;
990
+ const isSdkApiError = runtimeApiErrorCtor ? err instanceof runtimeApiErrorCtor : false;
991
+ if (isSdkApiError || isAnthropicApiError(err)) {
992
+ const statusCode = Number(err.status);
993
+ const typedErrorCode = typeof err.error?.type === "string" ? err.error?.type : void 0;
994
+ errorCode = typedErrorCode ?? (Number.isFinite(statusCode) ? `http_${statusCode}` : void 0);
995
+ if (statusCode === 529 || errorCode === "overloaded_error") {
996
+ errorCode = "overloaded_error";
997
+ } else if (statusCode === 429) {
998
+ errorCode = "rate_limit_error";
999
+ }
1000
+ if (Number.isFinite(statusCode)) {
1001
+ retryable = statusCode === 408 || statusCode === 425 || statusCode === 429 || statusCode >= 500 && statusCode <= 599;
1002
+ }
1003
+ }
1004
+ if (err instanceof Error && (err.name === "AbortError" || err.message.includes("aborted"))) {
1005
+ status = "aborted";
1006
+ retryable = false;
1007
+ } else if (err instanceof Error && (err.name === "APIConnectionTimeoutError" || err.name === "TimeoutError" || err.message.toLowerCase().includes("request timed out"))) {
1008
+ status = "timeout";
1009
+ errorCode = errorCode ?? "timeout";
1010
+ retryable = true;
1011
+ } else if (status === "error" && !retryable && err instanceof Error && (err.name === "APIConnectionError" || /econnreset|econnrefused|enotfound|eai_again|socket hang up|fetch failed|network error/i.test(
1012
+ err.message
1013
+ ))) {
1014
+ retryable = true;
1015
+ }
1016
+ return {
1017
+ stdout: textParts.join("\n"),
1018
+ stderr: errorMessage,
1019
+ status,
1020
+ errorCode,
1021
+ retryable,
1022
+ tokenUsage: {
1023
+ inputTokens: usage.inputTokens,
1024
+ outputTokens: usage.outputTokens,
1025
+ cachedInputTokens: usage.cacheReadTokens || void 0,
1026
+ cacheCreationInputTokens: usage.cacheCreationTokens || void 0
1027
+ },
1028
+ totalCostUsd: model ? this.calculateCostUsd(model, usage) : void 0,
1029
+ toolInvocations,
1030
+ filesModified: executor.filesModified
1031
+ };
1032
+ }
1033
+ getCostCalculator() {
1034
+ if (!_ApiTransport.costCalculator) {
1035
+ _ApiTransport.costCalculator = new UniversalCostCalculator(TelemetryLogger.getInstance());
1036
+ _ApiTransport.costCalculator.ensurePricingLoadedSync();
1037
+ }
1038
+ return _ApiTransport.costCalculator;
1039
+ }
1040
+ calculateCostUsd(model, usage) {
1041
+ try {
1042
+ const amount = resolveAvailableTotalCostUsd(
1043
+ this.getCostCalculator().calculateCost("claude", this.resolveCostModelId(model), {
1044
+ inputTokens: usage.inputTokens,
1045
+ outputTokens: usage.outputTokens,
1046
+ cacheReadTokens: usage.cacheReadTokens || void 0,
1047
+ cacheWriteTokens: usage.cacheCreationTokens || void 0,
1048
+ tools: []
1049
+ })
1050
+ );
1051
+ return amount === null ? void 0 : amount;
1052
+ } catch {
1053
+ return void 0;
1054
+ }
1055
+ }
1056
+ resolveCostModelId(model) {
1057
+ try {
1058
+ const available = ProviderRegistry.getProviderConfig("claude").models.available;
1059
+ const trimmed = model.trim();
1060
+ const matched = available.find(
1061
+ (entry) => entry.id === trimmed || entry.full_name === trimmed || entry.routing_id === trimmed || entry.canonical_id === trimmed
1062
+ );
1063
+ return matched?.id ?? trimmed;
1064
+ } catch {
1065
+ return model;
1066
+ }
1067
+ }
1068
+ };
1069
+ function normalizeOverallTimeoutMs(timeout) {
1070
+ if (timeout === void 0) {
1071
+ return void 0;
1072
+ }
1073
+ if (!Number.isFinite(timeout) || timeout <= 0) {
1074
+ throw new TransportExecutionError(
1075
+ `ApiTransport requires a positive finite timeout, received ${String(timeout)}`,
1076
+ "api",
1077
+ { retryable: false, reason: "invalid_timeout" }
1078
+ );
1079
+ }
1080
+ return timeout;
1081
+ }
1082
+ export {
1083
+ ApiTransport,
1084
+ CODING_TOOL_NAMES,
1085
+ resolveRequestCodingTools
1086
+ };
1087
+ //# sourceMappingURL=api-transport-4TYTNLTJ.js.map