@theokit/sdk 4.38.0 → 4.39.1

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 (378) hide show
  1. package/CHANGELOG.md +285 -0
  2. package/dist/a2a/index.cjs +3 -3
  3. package/dist/a2a/index.js +1 -1
  4. package/dist/a2a/subagent.d.cts +1 -0
  5. package/dist/a2a/subagent.d.ts +1 -0
  6. package/dist/agent-6ULDAQT7.js +46 -0
  7. package/dist/{agent-3H3UKD6U.js.map → agent-6ULDAQT7.js.map} +1 -1
  8. package/dist/{agent-U3lBX-5t.d.cts → agent-D7bRK9Kg.d.cts} +70 -5
  9. package/dist/agent-PVUKI3BB.cjs +55 -0
  10. package/dist/{agent-2GZC4W2A.cjs.map → agent-PVUKI3BB.cjs.map} +1 -1
  11. package/dist/{agent-C3AEtM-W.d.ts → agent-ZCZa7YQv.d.ts} +70 -5
  12. package/dist/agent-session-store-N4TVKHBU.cjs +23 -0
  13. package/dist/agent-session-store-N4TVKHBU.cjs.map +1 -0
  14. package/dist/agent-session-store-RHMHP5DG.js +6 -0
  15. package/dist/agent-session-store-RHMHP5DG.js.map +1 -0
  16. package/dist/agent.d.ts +37 -1
  17. package/dist/auth/index.cjs +15 -15
  18. package/dist/auth/index.js +4 -4
  19. package/dist/{batch-LXSALQC3.js → batch-6KQM3EBA.js} +12 -12
  20. package/dist/batch-6KQM3EBA.js.map +1 -0
  21. package/dist/{batch-NZGN6SFV.cjs → batch-X6JKGDPK.cjs} +26 -26
  22. package/dist/batch-X6JKGDPK.cjs.map +1 -0
  23. package/dist/chunk-2RW7K6FN.cjs +34 -0
  24. package/dist/chunk-2RW7K6FN.cjs.map +1 -0
  25. package/dist/chunk-3I4B3OIX.js +105 -0
  26. package/dist/chunk-3I4B3OIX.js.map +1 -0
  27. package/dist/{chunk-KWXC6ERT.js → chunk-42IFCKQZ.js} +5 -5
  28. package/dist/{chunk-KWXC6ERT.js.map → chunk-42IFCKQZ.js.map} +1 -1
  29. package/dist/{chunk-4APWS2YF.js → chunk-4F7JQZOX.js} +9 -36
  30. package/dist/chunk-4F7JQZOX.js.map +1 -0
  31. package/dist/{chunk-VYD6BGKK.js → chunk-4JSZYSGW.js} +3 -3
  32. package/dist/{chunk-VYD6BGKK.js.map → chunk-4JSZYSGW.js.map} +1 -1
  33. package/dist/{chunk-A6GXYF2Q.js → chunk-65ONFZWM.js} +7 -6
  34. package/dist/chunk-65ONFZWM.js.map +1 -0
  35. package/dist/{chunk-SGTMDQ4O.js → chunk-6EEYRFJC.js} +5 -5
  36. package/dist/{chunk-SGTMDQ4O.js.map → chunk-6EEYRFJC.js.map} +1 -1
  37. package/dist/{chunk-M4OGSS66.cjs → chunk-6LGQECT7.cjs} +11 -11
  38. package/dist/{chunk-M4OGSS66.cjs.map → chunk-6LGQECT7.cjs.map} +1 -1
  39. package/dist/{chunk-KTXOHCAE.cjs → chunk-6NEHIHFU.cjs} +4 -4
  40. package/dist/{chunk-KTXOHCAE.cjs.map → chunk-6NEHIHFU.cjs.map} +1 -1
  41. package/dist/chunk-6YNYA7GD.cjs +103 -0
  42. package/dist/chunk-6YNYA7GD.cjs.map +1 -0
  43. package/dist/{chunk-2R6NBT5F.cjs → chunk-74D7KSBP.cjs} +11 -11
  44. package/dist/{chunk-2R6NBT5F.cjs.map → chunk-74D7KSBP.cjs.map} +1 -1
  45. package/dist/{chunk-6OIO4FYX.cjs → chunk-75DSEWTJ.cjs} +7 -7
  46. package/dist/{chunk-6OIO4FYX.cjs.map → chunk-75DSEWTJ.cjs.map} +1 -1
  47. package/dist/{chunk-3XRXORBS.cjs → chunk-7OLG7VI4.cjs} +4 -4
  48. package/dist/{chunk-3XRXORBS.cjs.map → chunk-7OLG7VI4.cjs.map} +1 -1
  49. package/dist/chunk-7U2HAAWB.cjs +199 -0
  50. package/dist/chunk-7U2HAAWB.cjs.map +1 -0
  51. package/dist/{chunk-QJQ2MAZF.cjs → chunk-7YBJZS5P.cjs} +8 -8
  52. package/dist/{chunk-QJQ2MAZF.cjs.map → chunk-7YBJZS5P.cjs.map} +1 -1
  53. package/dist/{chunk-A4XXV2C6.js → chunk-7YSRCQDE.js} +5 -72
  54. package/dist/chunk-7YSRCQDE.js.map +1 -0
  55. package/dist/{chunk-ZFZYPLQI.js → chunk-AECV3G5Z.js} +4 -4
  56. package/dist/{chunk-ZFZYPLQI.js.map → chunk-AECV3G5Z.js.map} +1 -1
  57. package/dist/{chunk-QFWQLXCL.js → chunk-AR5MQZ3J.js} +3 -3
  58. package/dist/{chunk-QFWQLXCL.js.map → chunk-AR5MQZ3J.js.map} +1 -1
  59. package/dist/{chunk-G2F67XUR.cjs → chunk-B4YA6BRS.cjs} +13 -14
  60. package/dist/chunk-B4YA6BRS.cjs.map +1 -0
  61. package/dist/{chunk-BE3W4HYV.cjs → chunk-BCQ3E2ZG.cjs} +12 -3
  62. package/dist/chunk-BCQ3E2ZG.cjs.map +1 -0
  63. package/dist/{chunk-XJ5TMOGA.js → chunk-BQDUEG4C.js} +3 -3
  64. package/dist/{chunk-XJ5TMOGA.js.map → chunk-BQDUEG4C.js.map} +1 -1
  65. package/dist/{chunk-OFWU6UKF.cjs → chunk-C7OP3FAK.cjs} +47 -11
  66. package/dist/chunk-C7OP3FAK.cjs.map +1 -0
  67. package/dist/{chunk-UZBA6YYP.cjs → chunk-CAFV7WPQ.cjs} +540 -534
  68. package/dist/chunk-CAFV7WPQ.cjs.map +1 -0
  69. package/dist/{chunk-BUGVDCI5.cjs → chunk-CEIHCKTO.cjs} +4 -4
  70. package/dist/chunk-CEIHCKTO.cjs.map +1 -0
  71. package/dist/{chunk-3BSP7LSG.cjs → chunk-CN6UX5EV.cjs} +28 -56
  72. package/dist/chunk-CN6UX5EV.cjs.map +1 -0
  73. package/dist/{chunk-5BVBNE2F.js → chunk-D7IULBF2.js} +3 -3
  74. package/dist/{chunk-5BVBNE2F.js.map → chunk-D7IULBF2.js.map} +1 -1
  75. package/dist/{chunk-G7X2Y7Y2.cjs → chunk-DAXEQELR.cjs} +186 -236
  76. package/dist/chunk-DAXEQELR.cjs.map +1 -0
  77. package/dist/{chunk-YVI4YPUP.cjs → chunk-DGLLVCNB.cjs} +4 -4
  78. package/dist/{chunk-YVI4YPUP.cjs.map → chunk-DGLLVCNB.cjs.map} +1 -1
  79. package/dist/{chunk-JI34KBNC.js → chunk-DKFGUOWL.js} +3 -3
  80. package/dist/{chunk-JI34KBNC.js.map → chunk-DKFGUOWL.js.map} +1 -1
  81. package/dist/{chunk-ZET34IZE.cjs → chunk-DMTZ3FII.cjs} +5 -5
  82. package/dist/{chunk-ZET34IZE.cjs.map → chunk-DMTZ3FII.cjs.map} +1 -1
  83. package/dist/{chunk-6XZBKFQ7.js → chunk-DU7DE543.js} +3 -3
  84. package/dist/{chunk-6XZBKFQ7.js.map → chunk-DU7DE543.js.map} +1 -1
  85. package/dist/{chunk-VVMLMKYZ.cjs → chunk-DWY25VLP.cjs} +9 -9
  86. package/dist/{chunk-VVMLMKYZ.cjs.map → chunk-DWY25VLP.cjs.map} +1 -1
  87. package/dist/{chunk-R4AMI7KD.cjs → chunk-E4IUN3JB.cjs} +15 -15
  88. package/dist/{chunk-R4AMI7KD.cjs.map → chunk-E4IUN3JB.cjs.map} +1 -1
  89. package/dist/{chunk-TKDWD3MU.cjs → chunk-ECHGWE47.cjs} +4 -4
  90. package/dist/{chunk-TKDWD3MU.cjs.map → chunk-ECHGWE47.cjs.map} +1 -1
  91. package/dist/{chunk-KL7E244K.cjs → chunk-ECW2MLEW.cjs} +4 -4
  92. package/dist/{chunk-KL7E244K.cjs.map → chunk-ECW2MLEW.cjs.map} +1 -1
  93. package/dist/{chunk-EDI7DBWO.js → chunk-ET6PHZRX.js} +3 -3
  94. package/dist/{chunk-EDI7DBWO.js.map → chunk-ET6PHZRX.js.map} +1 -1
  95. package/dist/{chunk-HLK35TD7.cjs → chunk-FOZC5H7V.cjs} +24 -24
  96. package/dist/{chunk-HLK35TD7.cjs.map → chunk-FOZC5H7V.cjs.map} +1 -1
  97. package/dist/{chunk-SRIF7HMN.cjs → chunk-FWBSDQZ7.cjs} +5 -5
  98. package/dist/{chunk-SRIF7HMN.cjs.map → chunk-FWBSDQZ7.cjs.map} +1 -1
  99. package/dist/{chunk-XKBJT7WI.cjs → chunk-G2Q3ZC6C.cjs} +4 -4
  100. package/dist/{chunk-XKBJT7WI.cjs.map → chunk-G2Q3ZC6C.cjs.map} +1 -1
  101. package/dist/{chunk-4MWBKBS4.cjs → chunk-G4XUXSRN.cjs} +12 -12
  102. package/dist/{chunk-4MWBKBS4.cjs.map → chunk-G4XUXSRN.cjs.map} +1 -1
  103. package/dist/{chunk-EE24WJJR.js → chunk-GTVJIGAH.js} +5 -5
  104. package/dist/{chunk-EE24WJJR.js.map → chunk-GTVJIGAH.js.map} +1 -1
  105. package/dist/{chunk-VUDH4D2M.js → chunk-H3BOKK42.js} +282 -276
  106. package/dist/chunk-H3BOKK42.js.map +1 -0
  107. package/dist/{chunk-BT6DFWZB.cjs → chunk-HIQFVHC6.cjs} +9 -9
  108. package/dist/{chunk-BT6DFWZB.cjs.map → chunk-HIQFVHC6.cjs.map} +1 -1
  109. package/dist/{chunk-HI6G3SNY.js → chunk-HSPVMV6T.js} +76 -125
  110. package/dist/chunk-HSPVMV6T.js.map +1 -0
  111. package/dist/{chunk-UWEALKAN.js → chunk-HWNVAUK4.js} +3 -3
  112. package/dist/{chunk-UWEALKAN.js.map → chunk-HWNVAUK4.js.map} +1 -1
  113. package/dist/{chunk-3VKTDQMX.cjs → chunk-I53ZQHU6.cjs} +4 -4
  114. package/dist/{chunk-3VKTDQMX.cjs.map → chunk-I53ZQHU6.cjs.map} +1 -1
  115. package/dist/{chunk-A3MHE2MQ.cjs → chunk-IHFNRNTJ.cjs} +8 -8
  116. package/dist/{chunk-A3MHE2MQ.cjs.map → chunk-IHFNRNTJ.cjs.map} +1 -1
  117. package/dist/{chunk-KCZW75PI.js → chunk-IVSD7L22.js} +12 -4
  118. package/dist/chunk-IVSD7L22.js.map +1 -0
  119. package/dist/{chunk-JCXIDFRI.js → chunk-J3UK2GMN.js} +3 -3
  120. package/dist/{chunk-JCXIDFRI.js.map → chunk-J3UK2GMN.js.map} +1 -1
  121. package/dist/{chunk-IBDE4R5L.cjs → chunk-J6T5LWJ4.cjs} +10 -9
  122. package/dist/chunk-J6T5LWJ4.cjs.map +1 -0
  123. package/dist/{chunk-AOZYORH7.js → chunk-JRLXEYR4.js} +21 -5
  124. package/dist/chunk-JRLXEYR4.js.map +1 -0
  125. package/dist/{chunk-EUB7YLU2.js → chunk-JZUPMTJY.js} +3 -3
  126. package/dist/{chunk-EUB7YLU2.js.map → chunk-JZUPMTJY.js.map} +1 -1
  127. package/dist/{chunk-ZK3BJ4XQ.js → chunk-KE6XKRLQ.js} +3 -3
  128. package/dist/{chunk-ZK3BJ4XQ.js.map → chunk-KE6XKRLQ.js.map} +1 -1
  129. package/dist/{chunk-4NVV3GRU.js → chunk-KGRIHEDT.js} +5 -5
  130. package/dist/{chunk-4NVV3GRU.js.map → chunk-KGRIHEDT.js.map} +1 -1
  131. package/dist/{chunk-LGCEYEU2.js → chunk-KX7JV5KM.js} +3 -3
  132. package/dist/{chunk-LGCEYEU2.js.map → chunk-KX7JV5KM.js.map} +1 -1
  133. package/dist/{chunk-2K7PRHDB.cjs → chunk-LALG2K33.cjs} +8 -8
  134. package/dist/{chunk-2K7PRHDB.cjs.map → chunk-LALG2K33.cjs.map} +1 -1
  135. package/dist/{chunk-4WIJSKFA.js → chunk-LGILIGV3.js} +3 -3
  136. package/dist/{chunk-4WIJSKFA.js.map → chunk-LGILIGV3.js.map} +1 -1
  137. package/dist/{chunk-7QDTZJRV.js → chunk-LJX2SQV2.js} +6 -6
  138. package/dist/{chunk-7QDTZJRV.js.map → chunk-LJX2SQV2.js.map} +1 -1
  139. package/dist/{chunk-ACHGT3D2.js → chunk-MC5EINBV.js} +44 -8
  140. package/dist/chunk-MC5EINBV.js.map +1 -0
  141. package/dist/{chunk-M6UUTNDT.js → chunk-ML5A5DOJ.js} +4 -4
  142. package/dist/{chunk-M6UUTNDT.js.map → chunk-ML5A5DOJ.js.map} +1 -1
  143. package/dist/{chunk-3MUIYMUG.cjs → chunk-N475ETD6.cjs} +17 -17
  144. package/dist/{chunk-3MUIYMUG.cjs.map → chunk-N475ETD6.cjs.map} +1 -1
  145. package/dist/chunk-OXNYIMZZ.js +31 -0
  146. package/dist/chunk-OXNYIMZZ.js.map +1 -0
  147. package/dist/{chunk-YCHC45BY.js → chunk-PI4RO4GR.js} +3 -3
  148. package/dist/{chunk-YCHC45BY.js.map → chunk-PI4RO4GR.js.map} +1 -1
  149. package/dist/chunk-QKE556YD.js +197 -0
  150. package/dist/chunk-QKE556YD.js.map +1 -0
  151. package/dist/{chunk-FV3YEMQ7.js → chunk-RP5HQVLD.js} +13 -14
  152. package/dist/chunk-RP5HQVLD.js.map +1 -0
  153. package/dist/chunk-SCFW5MJZ.js +100 -0
  154. package/dist/chunk-SCFW5MJZ.js.map +1 -0
  155. package/dist/{chunk-ZYOHF37V.js → chunk-SG5ZWT6C.js} +3 -3
  156. package/dist/{chunk-ZYOHF37V.js.map → chunk-SG5ZWT6C.js.map} +1 -1
  157. package/dist/{chunk-ED7ANP6W.cjs → chunk-TIMPJL5V.cjs} +4 -4
  158. package/dist/{chunk-ED7ANP6W.cjs.map → chunk-TIMPJL5V.cjs.map} +1 -1
  159. package/dist/{chunk-3XKVRLR2.js → chunk-TOTP24P6.js} +4 -4
  160. package/dist/{chunk-3XKVRLR2.js.map → chunk-TOTP24P6.js.map} +1 -1
  161. package/dist/{chunk-PG3QQLWS.cjs → chunk-USZTVNUQ.cjs} +5 -5
  162. package/dist/{chunk-PG3QQLWS.cjs.map → chunk-USZTVNUQ.cjs.map} +1 -1
  163. package/dist/{chunk-XS7SKY2F.js → chunk-V2RBCCN5.js} +3 -3
  164. package/dist/chunk-V2RBCCN5.js.map +1 -0
  165. package/dist/{chunk-D3SJLXYZ.cjs → chunk-VJYSQXN6.cjs} +10 -10
  166. package/dist/{chunk-D3SJLXYZ.cjs.map → chunk-VJYSQXN6.cjs.map} +1 -1
  167. package/dist/{chunk-6ZGD7R27.cjs → chunk-VWI3CDEW.cjs} +8 -75
  168. package/dist/chunk-VWI3CDEW.cjs.map +1 -0
  169. package/dist/{chunk-MXRBNJ6D.cjs → chunk-W4WKVOOQ.cjs} +11 -11
  170. package/dist/{chunk-MXRBNJ6D.cjs.map → chunk-W4WKVOOQ.cjs.map} +1 -1
  171. package/dist/chunk-XYOHKCYG.cjs +109 -0
  172. package/dist/chunk-XYOHKCYG.cjs.map +1 -0
  173. package/dist/{chunk-UD2T7ISG.js → chunk-YP67XZES.js} +4 -4
  174. package/dist/{chunk-UD2T7ISG.js.map → chunk-YP67XZES.js.map} +1 -1
  175. package/dist/{chunk-HHUDNTZC.js → chunk-YRXY2A5L.js} +4 -4
  176. package/dist/{chunk-HHUDNTZC.js.map → chunk-YRXY2A5L.js.map} +1 -1
  177. package/dist/{chunk-6OKPJZMX.cjs → chunk-Z2CUEBXV.cjs} +25 -9
  178. package/dist/chunk-Z2CUEBXV.cjs.map +1 -0
  179. package/dist/compact-session-GKA7GFVT.js +18 -0
  180. package/dist/{compact-session-RR3ILTES.js.map → compact-session-GKA7GFVT.js.map} +1 -1
  181. package/dist/compact-session-XMP6OGY3.cjs +55 -0
  182. package/dist/{compact-session-YOWJJPPB.cjs.map → compact-session-XMP6OGY3.cjs.map} +1 -1
  183. package/dist/compaction.cjs +16 -16
  184. package/dist/compaction.js +3 -3
  185. package/dist/concurrency.cjs +6 -6
  186. package/dist/concurrency.js +4 -4
  187. package/dist/context-2FZSC6VQ.cjs +22 -0
  188. package/dist/{context-Q6ISOCN2.cjs.map → context-2FZSC6VQ.cjs.map} +1 -1
  189. package/dist/context-ATJJAFOS.js +5 -0
  190. package/dist/{context-ZDBBPIHY.js.map → context-ATJJAFOS.js.map} +1 -1
  191. package/dist/{cron-ChQ6zcW2.d.ts → cron-Bx7tzm5R.d.ts} +54 -2
  192. package/dist/{cron-BdXOZco9.d.cts → cron-D-DVjGQe.d.cts} +54 -2
  193. package/dist/cron.cjs +33 -29
  194. package/dist/cron.d.cts +3 -3
  195. package/dist/cron.d.ts +3 -3
  196. package/dist/cron.js +32 -28
  197. package/dist/{errors-BUVjJGJA.d.cts → errors-DMY-gLSK.d.cts} +1 -1
  198. package/dist/{errors-CZIUKLHt.d.ts → errors-DjBQ4Tn8.d.ts} +1 -1
  199. package/dist/errors.cjs +21 -21
  200. package/dist/errors.d.cts +2 -2
  201. package/dist/errors.d.ts +2 -2
  202. package/dist/errors.js +2 -2
  203. package/dist/eval.cjs +41 -36
  204. package/dist/eval.cjs.map +1 -1
  205. package/dist/eval.js +37 -32
  206. package/dist/eval.js.map +1 -1
  207. package/dist/{executor-DPCBSI35.cjs → executor-BMRICN46.cjs} +26 -25
  208. package/dist/executor-BMRICN46.cjs.map +1 -0
  209. package/dist/{executor-ASDDIM2X.js → executor-T65PPOPT.js} +10 -9
  210. package/dist/executor-T65PPOPT.js.map +1 -0
  211. package/dist/filesystem/index.cjs +7 -7
  212. package/dist/filesystem/index.js +3 -3
  213. package/dist/fs-session-store-J5MCFFUM.cjs +19 -0
  214. package/dist/{fs-session-store-T5ZLQX42.cjs.map → fs-session-store-J5MCFFUM.cjs.map} +1 -1
  215. package/dist/fs-session-store-O6FNHECD.js +10 -0
  216. package/dist/{fs-session-store-K5QUPNJZ.js.map → fs-session-store-O6FNHECD.js.map} +1 -1
  217. package/dist/generate-object-UF6WIZLF.cjs +20 -0
  218. package/dist/{generate-object-F56VIZ6U.cjs.map → generate-object-UF6WIZLF.cjs.map} +1 -1
  219. package/dist/generate-object-XDCBYVK3.js +7 -0
  220. package/dist/{generate-object-LPSO6GVW.js.map → generate-object-XDCBYVK3.js.map} +1 -1
  221. package/dist/index-manager-N7RQYUKT.cjs +20 -0
  222. package/dist/{index-manager-DBJ55ZSO.cjs.map → index-manager-N7RQYUKT.cjs.map} +1 -1
  223. package/dist/index-manager-ZVZUHPP7.js +11 -0
  224. package/dist/{index-manager-F2H2RCZU.js.map → index-manager-ZVZUHPP7.js.map} +1 -1
  225. package/dist/index.cjs +138 -132
  226. package/dist/index.cjs.map +1 -1
  227. package/dist/index.d.cts +167 -9
  228. package/dist/index.d.ts +167 -9
  229. package/dist/index.js +47 -44
  230. package/dist/index.js.map +1 -1
  231. package/dist/{inject-session-RKNLUE72.js → inject-session-7P4CZGDT.js} +7 -6
  232. package/dist/inject-session-7P4CZGDT.js.map +1 -0
  233. package/dist/{inject-session-25EC74WV.cjs → inject-session-CC4KBYF6.cjs} +9 -8
  234. package/dist/inject-session-CC4KBYF6.cjs.map +1 -0
  235. package/dist/internal/agent-loop/loop-thinking-steps.d.ts +28 -0
  236. package/dist/internal/agent-loop/message-builders.d.ts +12 -3
  237. package/dist/internal/diagnostics.d.ts +24 -11
  238. package/dist/internal/llm/anthropic-shared.d.ts +4 -4
  239. package/dist/internal/llm/types.d.ts +49 -9
  240. package/dist/internal/local-agent/mcp-pool.d.ts +7 -3
  241. package/dist/internal/memory/adapters/azure-openai-embedding.d.cts +2 -0
  242. package/dist/internal/memory/adapters/catalog.d.cts +1 -0
  243. package/dist/internal/memory/adapters/cohere-embedding.d.cts +2 -0
  244. package/dist/internal/memory/adapters/deepinfra-embedding.d.cts +2 -0
  245. package/dist/internal/memory/adapters/gemini-embedding.d.cts +2 -0
  246. package/dist/internal/memory/adapters/index.cjs +28 -0
  247. package/dist/internal/memory/adapters/index.cjs.map +1 -0
  248. package/dist/internal/memory/adapters/index.d.cts +16 -0
  249. package/dist/internal/memory/adapters/index.d.ts +16 -0
  250. package/dist/internal/memory/adapters/index.js +11 -0
  251. package/dist/internal/memory/adapters/index.js.map +1 -0
  252. package/dist/internal/memory/adapters/jina-embedding.d.cts +2 -0
  253. package/dist/internal/memory/adapters/mistral-embedding.d.cts +2 -0
  254. package/dist/internal/memory/adapters/ollama-embedding.d.cts +34 -0
  255. package/dist/internal/memory/adapters/openai-compatible.d.cts +51 -0
  256. package/dist/internal/memory/adapters/openai-compatible.d.ts +28 -0
  257. package/dist/internal/memory/adapters/openai-embedding.d.cts +2 -0
  258. package/dist/internal/memory/adapters/openrouter-embedding.d.cts +2 -0
  259. package/dist/internal/memory/adapters/voyage-embedding.d.cts +2 -0
  260. package/dist/internal/memory/dreaming/diary.d.ts +4 -0
  261. package/dist/internal/memory/dreaming/phases.d.ts +15 -0
  262. package/dist/internal/memory/dreaming/run.d.ts +10 -0
  263. package/dist/internal/memory/migrate-sqlite-to-lance.d.ts +15 -0
  264. package/dist/internal/memory/sdk-memory-peer-loader.d.ts +21 -0
  265. package/dist/internal/persistence/index.cjs +25 -25
  266. package/dist/internal/persistence/index.js +6 -6
  267. package/dist/internal/persistence/session-transcript.d.cts +6 -0
  268. package/dist/internal/persistence/session-transcript.d.ts +6 -0
  269. package/dist/internal/runtime/concurrency/subagent-credentials.d.ts +35 -0
  270. package/dist/internal/security/index.cjs +13 -13
  271. package/dist/internal/security/index.js +3 -3
  272. package/dist/internal/session/agent-session-store.d.ts +1 -0
  273. package/dist/internal/session/session-types.d.ts +6 -1
  274. package/dist/judge-call-NA2G6ZMJ.js +5 -0
  275. package/dist/{judge-call-3S3T6O2Z.js.map → judge-call-NA2G6ZMJ.js.map} +1 -1
  276. package/dist/judge-call-U2D33JOW.cjs +22 -0
  277. package/dist/{judge-call-XIQJ5GIE.cjs.map → judge-call-U2D33JOW.cjs.map} +1 -1
  278. package/dist/models.cjs +20 -20
  279. package/dist/models.js +5 -5
  280. package/dist/path-safety.cjs +10 -10
  281. package/dist/path-safety.js +3 -3
  282. package/dist/persistence.cjs +35 -35
  283. package/dist/persistence.js +7 -7
  284. package/dist/project.cjs +5 -5
  285. package/dist/project.js +3 -3
  286. package/dist/registry-CAS6Y5ZY.js +9 -0
  287. package/dist/{registry-KMI5RA22.js.map → registry-CAS6Y5ZY.js.map} +1 -1
  288. package/dist/registry-JSDI4WKA.cjs +46 -0
  289. package/dist/{registry-BA3SLAN7.cjs.map → registry-JSDI4WKA.cjs.map} +1 -1
  290. package/dist/retry.cjs +4 -4
  291. package/dist/retry.js +3 -3
  292. package/dist/{run-vJHg2eGw.d.cts → run-i2-fUohR.d.cts} +16 -0
  293. package/dist/{run-vJHg2eGw.d.ts → run-i2-fUohR.d.ts} +16 -0
  294. package/dist/sandbox/index.cjs +6 -6
  295. package/dist/sandbox/index.js +2 -2
  296. package/dist/server/errors-envelope.cjs +14 -14
  297. package/dist/server/errors-envelope.d.cts +3 -3
  298. package/dist/server/errors-envelope.d.ts +3 -3
  299. package/dist/server/errors-envelope.js +3 -3
  300. package/dist/session-transcript-3B52DKTG.js +5 -0
  301. package/dist/{session-transcript-MMPWCESR.js.map → session-transcript-3B52DKTG.js.map} +1 -1
  302. package/dist/session-transcript-H7NUFXXM.cjs +50 -0
  303. package/dist/{session-transcript-DFGX6WNL.cjs.map → session-transcript-H7NUFXXM.cjs.map} +1 -1
  304. package/dist/skills.cjs +7 -7
  305. package/dist/skills.js +5 -5
  306. package/dist/stream-object-4FDU76YW.cjs +20 -0
  307. package/dist/{stream-object-YPXZ4F5P.cjs.map → stream-object-4FDU76YW.cjs.map} +1 -1
  308. package/dist/stream-object-HWDEEQN4.js +7 -0
  309. package/dist/{stream-object-AFERZU63.js.map → stream-object-HWDEEQN4.js.map} +1 -1
  310. package/dist/subagents-loader-A4W6C3QP.cjs +15 -0
  311. package/dist/subagents-loader-A4W6C3QP.cjs.map +1 -0
  312. package/dist/subagents-loader-X33KH2SZ.js +6 -0
  313. package/dist/subagents-loader-X33KH2SZ.js.map +1 -0
  314. package/dist/subagents-loader.cjs +6 -6
  315. package/dist/subagents-loader.d.cts +2 -2
  316. package/dist/subagents-loader.d.ts +2 -2
  317. package/dist/subagents-loader.js +4 -4
  318. package/dist/subscription/index.cjs +3 -3
  319. package/dist/subscription/index.js +2 -2
  320. package/dist/task-store.cjs +7 -7
  321. package/dist/task-store.js +4 -4
  322. package/dist/types/agent.d.ts +68 -3
  323. package/dist/types/conversation.d.ts +7 -0
  324. package/dist/types/messages.d.ts +9 -0
  325. package/dist/types/session-message.d.ts +59 -0
  326. package/dist/types/workflow.d.ts +36 -0
  327. package/dist/workflow.cjs +27 -27
  328. package/dist/workflow.d.cts +17 -1
  329. package/dist/workflow.d.ts +17 -1
  330. package/dist/workflow.js +6 -6
  331. package/docs/harness-capability-map.md +22 -0
  332. package/package.json +11 -1
  333. package/dist/agent-2GZC4W2A.cjs +0 -51
  334. package/dist/agent-3H3UKD6U.js +0 -42
  335. package/dist/batch-LXSALQC3.js.map +0 -1
  336. package/dist/batch-NZGN6SFV.cjs.map +0 -1
  337. package/dist/chunk-3BSP7LSG.cjs.map +0 -1
  338. package/dist/chunk-4APWS2YF.js.map +0 -1
  339. package/dist/chunk-6OKPJZMX.cjs.map +0 -1
  340. package/dist/chunk-6ZGD7R27.cjs.map +0 -1
  341. package/dist/chunk-A4XXV2C6.js.map +0 -1
  342. package/dist/chunk-A6GXYF2Q.js.map +0 -1
  343. package/dist/chunk-ACHGT3D2.js.map +0 -1
  344. package/dist/chunk-AOZYORH7.js.map +0 -1
  345. package/dist/chunk-BE3W4HYV.cjs.map +0 -1
  346. package/dist/chunk-BUGVDCI5.cjs.map +0 -1
  347. package/dist/chunk-FV3YEMQ7.js.map +0 -1
  348. package/dist/chunk-G2F67XUR.cjs.map +0 -1
  349. package/dist/chunk-G7X2Y7Y2.cjs.map +0 -1
  350. package/dist/chunk-HI6G3SNY.js.map +0 -1
  351. package/dist/chunk-IBDE4R5L.cjs.map +0 -1
  352. package/dist/chunk-KCZW75PI.js.map +0 -1
  353. package/dist/chunk-OFWU6UKF.cjs.map +0 -1
  354. package/dist/chunk-UZBA6YYP.cjs.map +0 -1
  355. package/dist/chunk-VUDH4D2M.js.map +0 -1
  356. package/dist/chunk-XS7SKY2F.js.map +0 -1
  357. package/dist/compact-session-RR3ILTES.js +0 -17
  358. package/dist/compact-session-YOWJJPPB.cjs +0 -54
  359. package/dist/context-Q6ISOCN2.cjs +0 -22
  360. package/dist/context-ZDBBPIHY.js +0 -5
  361. package/dist/executor-ASDDIM2X.js.map +0 -1
  362. package/dist/executor-DPCBSI35.cjs.map +0 -1
  363. package/dist/fs-session-store-K5QUPNJZ.js +0 -10
  364. package/dist/fs-session-store-T5ZLQX42.cjs +0 -19
  365. package/dist/generate-object-F56VIZ6U.cjs +0 -20
  366. package/dist/generate-object-LPSO6GVW.js +0 -7
  367. package/dist/index-manager-DBJ55ZSO.cjs +0 -19
  368. package/dist/index-manager-F2H2RCZU.js +0 -10
  369. package/dist/inject-session-25EC74WV.cjs.map +0 -1
  370. package/dist/inject-session-RKNLUE72.js.map +0 -1
  371. package/dist/judge-call-3S3T6O2Z.js +0 -5
  372. package/dist/judge-call-XIQJ5GIE.cjs +0 -22
  373. package/dist/registry-BA3SLAN7.cjs +0 -46
  374. package/dist/registry-KMI5RA22.js +0 -9
  375. package/dist/session-transcript-DFGX6WNL.cjs +0 -50
  376. package/dist/session-transcript-MMPWCESR.js +0 -5
  377. package/dist/stream-object-AFERZU63.js +0 -7
  378. package/dist/stream-object-YPXZ4F5P.cjs +0 -20
@@ -1,13 +1,14 @@
1
1
  'use strict';
2
2
 
3
- var chunkKL7E244K_cjs = require('./chunk-KL7E244K.cjs');
3
+ var chunkECW2MLEW_cjs = require('./chunk-ECW2MLEW.cjs');
4
4
  var chunkBURYFNOM_cjs = require('./chunk-BURYFNOM.cjs');
5
+ var chunk6YNYA7GD_cjs = require('./chunk-6YNYA7GD.cjs');
5
6
  var chunk6JSIEDKL_cjs = require('./chunk-6JSIEDKL.cjs');
6
- var chunk6OKPJZMX_cjs = require('./chunk-6OKPJZMX.cjs');
7
- var chunkIBDE4R5L_cjs = require('./chunk-IBDE4R5L.cjs');
8
- var chunk4MWBKBS4_cjs = require('./chunk-4MWBKBS4.cjs');
9
- var chunkA3MHE2MQ_cjs = require('./chunk-A3MHE2MQ.cjs');
10
- var chunkBE3W4HYV_cjs = require('./chunk-BE3W4HYV.cjs');
7
+ var chunkZ2CUEBXV_cjs = require('./chunk-Z2CUEBXV.cjs');
8
+ var chunkJ6T5LWJ4_cjs = require('./chunk-J6T5LWJ4.cjs');
9
+ var chunkG4XUXSRN_cjs = require('./chunk-G4XUXSRN.cjs');
10
+ var chunkIHFNRNTJ_cjs = require('./chunk-IHFNRNTJ.cjs');
11
+ var chunkBCQ3E2ZG_cjs = require('./chunk-BCQ3E2ZG.cjs');
11
12
  var fs = require('fs');
12
13
  var promises = require('fs/promises');
13
14
  var os = require('os');
@@ -16,7 +17,7 @@ var url = require('url');
16
17
  var module$1 = require('module');
17
18
 
18
19
  var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
19
- var discoveryState = chunk4MWBKBS4_cjs.globalSingleton("theokit-sdk.providers.discovered", () => ({
20
+ var discoveryState = chunkG4XUXSRN_cjs.globalSingleton("theokit-sdk.providers.discovered", () => ({
20
21
  done: false
21
22
  }));
22
23
  function pluginsRoot() {
@@ -38,19 +39,19 @@ function loadTrustedNames() {
38
39
  else discarded += 1;
39
40
  }
40
41
  if (discarded > 0) {
41
- chunkBE3W4HYV_cjs.diag(
42
+ chunkBCQ3E2ZG_cjs.diag(
42
43
  `[theokit-sdk] WARN: ${path} contains ${discarded} non-string entr${discarded === 1 ? "y" : "ies"} \u2014 discarded (entries must be plugin-name strings)
43
44
  `
44
45
  );
45
46
  }
46
47
  } else {
47
- chunkBE3W4HYV_cjs.diag(
48
+ chunkBCQ3E2ZG_cjs.diag(
48
49
  `[theokit-sdk] WARN: ${path} is not a JSON array \u2014 trusting NO provider plugins (fail-closed)
49
50
  `
50
51
  );
51
52
  }
52
53
  } catch {
53
- chunkBE3W4HYV_cjs.diag(
54
+ chunkBCQ3E2ZG_cjs.diag(
54
55
  `[theokit-sdk] WARN: ${path} is not valid JSON \u2014 trusting NO provider plugins (fail-closed)
55
56
  `
56
57
  );
@@ -76,7 +77,7 @@ async function discoverProviderPlugins() {
76
77
  const trusted = loadTrustedNames();
77
78
  for (const entry of entries) {
78
79
  if (!trusted.has(entry)) {
79
- chunkBE3W4HYV_cjs.diag(
80
+ chunkBCQ3E2ZG_cjs.diag(
80
81
  `[theokit-sdk] WARN: provider plugin "${entry}" is present but NOT trusted \u2014 skipped. To trust it, add "${entry}" to ${trustFilePath()} (JSON array of names) or THEOKIT_TRUSTED_PROVIDERS (comma-separated), then restart the process.
81
82
  `
82
83
  );
@@ -95,56 +96,25 @@ async function loadOne(dir, entryName) {
95
96
  if (plugin !== null && typeof plugin === "object" && plugin.kind === "model-provider") {
96
97
  const profile = plugin.profile;
97
98
  if (profile !== void 0 && typeof profile === "object") {
98
- chunk4MWBKBS4_cjs.registerProvider(profile);
99
+ chunkG4XUXSRN_cjs.registerProvider(profile);
99
100
  }
100
101
  }
101
102
  return;
102
103
  } catch (err) {
103
104
  const msg = err instanceof Error ? err.message : String(err);
104
- chunkBE3W4HYV_cjs.diag(`[theokit-sdk] failed to load provider plugin "${entryName}": ${msg}
105
+ chunkBCQ3E2ZG_cjs.diag(`[theokit-sdk] failed to load provider plugin "${entryName}": ${msg}
105
106
  `);
106
107
  return;
107
108
  }
108
109
  }
109
110
  }
110
111
 
111
- // src/internal/error-mappers/shared.ts
112
- var RAW_MAX_BYTES = 2048;
113
- function parseRetryAfter(headers) {
114
- if (headers === void 0) return void 0;
115
- const raw = headers.get("retry-after");
116
- if (raw === null) return void 0;
117
- const n = Number(raw);
118
- if (Number.isFinite(n) && n >= 0) return Math.ceil(n);
119
- const dateMs = Date.parse(raw);
120
- if (Number.isFinite(dateMs)) return Math.max(0, Math.ceil((dateMs - Date.now()) / 1e3));
121
- return void 0;
122
- }
123
- function truncateRaw(body) {
124
- if (body === null || body === void 0) return void 0;
125
- const s = typeof body === "string" ? body : JSON.stringify(body);
126
- const truncated = s.length <= RAW_MAX_BYTES ? s : `${s.slice(0, RAW_MAX_BYTES)}\u2026`;
127
- return chunkBE3W4HYV_cjs.redactSecrets(truncated);
128
- }
129
- function buildErrorMetadata(args) {
130
- const retryAfter = parseRetryAfter(args.headers);
131
- const raw = truncateRaw(args.body);
132
- return {
133
- provider: args.provider,
134
- endpoint: args.endpoint,
135
- code: args.code,
136
- statusCode: args.status,
137
- ...retryAfter !== void 0 ? { retryAfter } : {},
138
- ...raw !== void 0 ? { raw } : {}
139
- };
140
- }
141
-
142
112
  // src/internal/error-mappers/anthropic.ts
143
113
  function mapAnthropicError(args) {
144
114
  const { status, body, headers, endpoint } = args;
145
115
  const code = mapAnthropicStatusToCode(status, body);
146
116
  const message = formatMessage(status, code);
147
- const metadata = buildErrorMetadata({
117
+ const metadata = chunk6YNYA7GD_cjs.buildErrorMetadata({
148
118
  provider: "anthropic",
149
119
  endpoint,
150
120
  code,
@@ -153,24 +123,24 @@ function mapAnthropicError(args) {
153
123
  body
154
124
  });
155
125
  if (status === 401 || status === 403) {
156
- return new chunkA3MHE2MQ_cjs.AuthenticationError(message, { code: "anthropic_auth_failed", metadata });
126
+ return new chunkIHFNRNTJ_cjs.AuthenticationError(message, { code: "anthropic_auth_failed", metadata });
157
127
  }
158
128
  if (status === 429) {
159
- return new chunkA3MHE2MQ_cjs.RateLimitError(message, { code: "anthropic_rate_limit", metadata });
129
+ return new chunkIHFNRNTJ_cjs.RateLimitError(message, { code: "anthropic_rate_limit", metadata });
160
130
  }
161
131
  if (status === 400) {
162
- return new chunkA3MHE2MQ_cjs.ConfigurationError(message, {
132
+ return new chunkIHFNRNTJ_cjs.ConfigurationError(message, {
163
133
  code: `anthropic_${code}`,
164
134
  metadata
165
135
  });
166
136
  }
167
137
  if (status === 408) {
168
- return new chunkA3MHE2MQ_cjs.NetworkError(message, { code: "anthropic_timeout", metadata });
138
+ return new chunkIHFNRNTJ_cjs.NetworkError(message, { code: "anthropic_timeout", metadata });
169
139
  }
170
140
  if (status >= 500 && status < 600) {
171
- return new chunkA3MHE2MQ_cjs.NetworkError(message, { code: "anthropic_server_error", metadata });
141
+ return new chunkIHFNRNTJ_cjs.NetworkError(message, { code: "anthropic_server_error", metadata });
172
142
  }
173
- return new chunkA3MHE2MQ_cjs.UnknownAgentError(message, { code: "anthropic_unknown", metadata });
143
+ return new chunkIHFNRNTJ_cjs.UnknownAgentError(message, { code: "anthropic_unknown", metadata });
174
144
  }
175
145
  function mapAnthropicStatusToCode(status, body) {
176
146
  if (status === 401 || status === 403) return "auth_failed";
@@ -230,6 +200,7 @@ function makeLlmFinish(state) {
230
200
  if (state.cacheReadTokens !== void 0) finish.cacheReadTokens = state.cacheReadTokens;
231
201
  if (state.cacheWriteTokens !== void 0) finish.cacheWriteTokens = state.cacheWriteTokens;
232
202
  if (state.reasoningTokens !== void 0) finish.reasoningTokens = state.reasoningTokens;
203
+ if (state.thinking !== void 0) finish.thinking = state.thinking;
233
204
  return finish;
234
205
  }
235
206
 
@@ -240,7 +211,7 @@ function toBlockToolResultContent(content) {
240
211
  function toStringToolResultContent(content, providerName) {
241
212
  if (typeof content === "string") return content;
242
213
  if (content.some((block) => block.type === "image")) {
243
- throw new chunkA3MHE2MQ_cjs.ConfigurationError(
214
+ throw new chunkIHFNRNTJ_cjs.ConfigurationError(
244
215
  `provider "${providerName}" does not support image content in tool results`
245
216
  );
246
217
  }
@@ -284,25 +255,28 @@ function mapAnthropicStopReason(reason) {
284
255
  return "end_turn";
285
256
  }
286
257
  }
258
+ function thinkingToWireBlock(part) {
259
+ return part.signature === void 0 ? void 0 : { type: "thinking", thinking: part.text, signature: part.signature };
260
+ }
261
+ function partToWireBlock(part) {
262
+ if (part.type === "text") return { type: "text", text: part.text };
263
+ if (part.type === "tool_use") {
264
+ return { type: "tool_use", id: part.id, name: part.name, input: part.input };
265
+ }
266
+ if (part.type === "image") return { type: "image", source: part.source };
267
+ if (part.type === "thinking") return thinkingToWireBlock(part);
268
+ return {
269
+ type: "tool_result",
270
+ tool_use_id: part.toolUseId,
271
+ // SE7 — this wire is block-capable: strings pass through, structured
272
+ // text/image blocks are forwarded natively.
273
+ content: toBlockToolResultContent(part.content),
274
+ ...part.isError === true ? { is_error: true } : {}
275
+ };
276
+ }
287
277
  function toAnthropicWireMessage(message) {
288
278
  const role = message.role === "system" ? "user" : message.role;
289
- const content = message.content.map((part) => {
290
- if (part.type === "text") return { type: "text", text: part.text };
291
- if (part.type === "tool_use") {
292
- return { type: "tool_use", id: part.id, name: part.name, input: part.input };
293
- }
294
- if (part.type === "image") {
295
- return { type: "image", source: part.source };
296
- }
297
- return {
298
- type: "tool_result",
299
- tool_use_id: part.toolUseId,
300
- // SE7 — this wire is block-capable: strings pass through, structured
301
- // text/image blocks are forwarded natively.
302
- content: toBlockToolResultContent(part.content),
303
- ...part.isError === true ? { is_error: true } : {}
304
- };
305
- });
279
+ const content = message.content.map(partToWireBlock).filter((b) => b !== void 0);
306
280
  return { role, content };
307
281
  }
308
282
  function postAnthropicRequest(args) {
@@ -346,11 +320,21 @@ async function parseHttpErrorBody(response) {
346
320
  return text;
347
321
  }
348
322
  }
323
+ function thinkingBudgetTokens(effort) {
324
+ if (effort === "low" || effort === "minimal") return 1024;
325
+ if (effort === "high" || effort === "max") return 16384;
326
+ return 4096;
327
+ }
349
328
  function buildAnthropicCommonBody(request) {
350
329
  const body = {
351
330
  max_tokens: request.maxTokens ?? 4096,
352
331
  messages: request.messages.map(toAnthropicWireMessage)
353
332
  };
333
+ if (request.reasoning?.effort !== void 0) {
334
+ const budget = thinkingBudgetTokens(request.reasoning.effort);
335
+ body.thinking = { type: "enabled", budget_tokens: budget };
336
+ if (body.max_tokens <= budget) body.max_tokens = budget + 4096;
337
+ }
354
338
  const wireSystem = encodeAnthropicSystem(request.system);
355
339
  if (wireSystem !== void 0) body.system = wireSystem;
356
340
  if (request.temperature !== void 0) body.temperature = request.temperature;
@@ -406,7 +390,7 @@ function readWithIdleTimeout(reader, idleTimeoutMs) {
406
390
  (resolve, reject) => {
407
391
  const timer = setTimeout(() => {
408
392
  reject(
409
- new chunkA3MHE2MQ_cjs.NetworkError(`SSE stream idle for ${idleTimeoutMs}ms \u2014 upstream stalled`, {
393
+ new chunkIHFNRNTJ_cjs.NetworkError(`SSE stream idle for ${idleTimeoutMs}ms \u2014 upstream stalled`, {
410
394
  code: "stream_idle_timeout"
411
395
  })
412
396
  );
@@ -483,9 +467,9 @@ function ehAbort(err) {
483
467
  }
484
468
  function wrapTransportError(err, ctx) {
485
469
  if (ehAbort(err)) return err;
486
- if (err instanceof chunkA3MHE2MQ_cjs.NetworkError) return err;
470
+ if (err instanceof chunkIHFNRNTJ_cjs.NetworkError) return err;
487
471
  const detalhe = err instanceof Error ? err.message : String(err);
488
- return new chunkA3MHE2MQ_cjs.NetworkError(`${ctx.providerId} transport failure on ${ctx.endpoint}: ${detalhe}`, {
472
+ return new chunkIHFNRNTJ_cjs.NetworkError(`${ctx.providerId} transport failure on ${ctx.endpoint}: ${detalhe}`, {
489
473
  code: "transport_failure",
490
474
  cause: err
491
475
  });
@@ -549,7 +533,7 @@ var AnthropicClient = class {
549
533
  for (const event of events) yield event;
550
534
  }
551
535
  if (!accumulator.finishReasonSeen) {
552
- throw new chunkA3MHE2MQ_cjs.NetworkError("Anthropic SSE stream truncated (no stop_reason)", {
536
+ throw new chunkIHFNRNTJ_cjs.NetworkError("Anthropic SSE stream truncated (no stop_reason)", {
553
537
  code: "stream_truncated"
554
538
  });
555
539
  }
@@ -571,9 +555,17 @@ var AnthropicStreamAccumulator = class {
571
555
  cacheWriteTokens;
572
556
  toolCalls = /* @__PURE__ */ new Map();
573
557
  toolBuffers = /* @__PURE__ */ new Map();
558
+ /**
559
+ * theokit#122 — the turn's thinking block. Text accumulates across `thinking_delta`s; the
560
+ * signature arrives once, on a `signature_delta` for the same block. Undefined until the model
561
+ * actually opens a thinking block, so a non-thinking turn reports nothing.
562
+ */
563
+ thinking;
574
564
  consume(event) {
575
565
  if (event.type === "content_block_start") {
576
- this.handleToolStart(event);
566
+ const block = event.content_block;
567
+ if (block.type === "thinking") this.handleThinkingStart(event);
568
+ else this.handleToolStart(event);
577
569
  return [];
578
570
  }
579
571
  if (event.type === "content_block_delta") {
@@ -594,12 +586,31 @@ var AnthropicStreamAccumulator = class {
594
586
  });
595
587
  this.toolBuffers.set(start.index, "");
596
588
  }
589
+ handleThinkingStart(start) {
590
+ this.thinking = {
591
+ text: start.content_block.thinking ?? "",
592
+ ...start.content_block.signature !== void 0 ? { signature: start.content_block.signature } : {}
593
+ };
594
+ }
597
595
  handleContentDelta(delta) {
598
596
  if (delta.delta.type === "text_delta") {
599
597
  const text = delta.delta.text;
600
598
  this.text += text;
601
599
  return [{ type: "text_delta", text }];
602
600
  }
601
+ if (delta.delta.type === "thinking_delta") {
602
+ const text = delta.delta.thinking;
603
+ this.thinking = {
604
+ ...this.thinking ?? { text: "" },
605
+ text: (this.thinking?.text ?? "") + text
606
+ };
607
+ return [{ type: "reasoning_delta", text }];
608
+ }
609
+ if (delta.delta.type === "signature_delta") {
610
+ const signature = delta.delta.signature;
611
+ this.thinking = { text: this.thinking?.text ?? "", signature };
612
+ return [{ type: "reasoning_delta", text: "", signature }];
613
+ }
603
614
  const idx = delta.index;
604
615
  const existing = this.toolBuffers.get(idx) ?? "";
605
616
  this.toolBuffers.set(idx, existing + delta.delta.partial_json);
@@ -645,7 +656,9 @@ var AnthropicStreamAccumulator = class {
645
656
  // T3.8 — surface Anthropic native cache-token counters when the
646
657
  // request used `cache_control: {type:"ephemeral"}` on system blocks.
647
658
  cacheReadTokens: this.cacheReadTokens,
648
- cacheWriteTokens: this.cacheWriteTokens
659
+ cacheWriteTokens: this.cacheWriteTokens,
660
+ // theokit#122 — carry the thinking block + its signature so the turn can be replayed.
661
+ ...this.thinking !== void 0 ? { thinking: { type: "thinking", ...this.thinking } } : {}
649
662
  });
650
663
  }
651
664
  };
@@ -673,7 +686,7 @@ function classifyBedrockError(args, awsType, message) {
673
686
  return "unknown";
674
687
  }
675
688
  function buildBedrockMetadata(args, code) {
676
- return buildErrorMetadata({
689
+ return chunk6YNYA7GD_cjs.buildErrorMetadata({
677
690
  provider: "bedrock",
678
691
  endpoint: args.endpoint,
679
692
  code,
@@ -690,19 +703,19 @@ function mapBedrockError(args) {
690
703
  const metadata = buildBedrockMetadata(args, code);
691
704
  switch (code) {
692
705
  case "rate_limit":
693
- return new chunkA3MHE2MQ_cjs.RateLimitError(`Bedrock throttled: ${message}`, { metadata });
706
+ return new chunkIHFNRNTJ_cjs.RateLimitError(`Bedrock throttled: ${message}`, { metadata });
694
707
  case "auth_failed":
695
- return new chunkA3MHE2MQ_cjs.AuthenticationError(`Bedrock auth: ${message}`, { metadata });
708
+ return new chunkIHFNRNTJ_cjs.AuthenticationError(`Bedrock auth: ${message}`, { metadata });
696
709
  case "invalid_request": {
697
710
  const friendly = message.includes("use case details") ? `Bedrock account setup required: ${message} (AWS Console \u2192 Bedrock \u2192 Model access \u2192 Anthropic \u2192 Submit use case form, then retry in 15 min.)` : `Bedrock validation: ${message}`;
698
- return new chunkA3MHE2MQ_cjs.ConfigurationError(friendly, { metadata });
711
+ return new chunkIHFNRNTJ_cjs.ConfigurationError(friendly, { metadata });
699
712
  }
700
713
  case "timeout":
701
- return new chunkA3MHE2MQ_cjs.NetworkError(`Bedrock timeout: ${message}`, { metadata });
714
+ return new chunkIHFNRNTJ_cjs.NetworkError(`Bedrock timeout: ${message}`, { metadata });
702
715
  case "server_error":
703
- return new chunkA3MHE2MQ_cjs.NetworkError(`Bedrock server error: ${message}`, { metadata });
716
+ return new chunkIHFNRNTJ_cjs.NetworkError(`Bedrock server error: ${message}`, { metadata });
704
717
  default:
705
- return new chunkA3MHE2MQ_cjs.UnknownAgentError(`Bedrock unknown: ${message}`, { metadata });
718
+ return new chunkIHFNRNTJ_cjs.UnknownAgentError(`Bedrock unknown: ${message}`, { metadata });
706
719
  }
707
720
  }
708
721
  function parseBody(body) {
@@ -726,7 +739,7 @@ async function resolveBedrockToken(region) {
726
739
  return cachedToken.value;
727
740
  }
728
741
  try {
729
- const r = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-G7X2Y7Y2.cjs', document.baseURI).href)));
742
+ const r = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-DAXEQELR.cjs', document.baseURI).href)));
730
743
  const gen = r("@aws/bedrock-token-generator");
731
744
  if (typeof gen.getToken !== "function") return void 0;
732
745
  const providers = r("@aws-sdk/credential-providers");
@@ -754,16 +767,16 @@ var BedrockAnthropicClient = class {
754
767
  if (fromOpts !== void 0 && fromOpts.length > 0) return fromOpts;
755
768
  const fromEnv = await resolveBedrockToken(region);
756
769
  if (fromEnv !== void 0 && fromEnv.length > 0) return fromEnv;
757
- throw new chunkA3MHE2MQ_cjs.ConfigurationError(
770
+ throw new chunkIHFNRNTJ_cjs.ConfigurationError(
758
771
  "Bedrock requires AWS_BEARER_TOKEN_BEDROCK env var, or install `@aws/bedrock-token-generator` for auto-refresh, or pass apiKey explicitly.",
759
772
  { code: "auth_failed" }
760
773
  );
761
774
  }
762
775
  async *stream(request, signal) {
763
- const region = chunk4MWBKBS4_cjs.inferRegionFromModelId(request.model) ?? process.env.AWS_REGION ?? "us-east-1";
776
+ const region = chunkG4XUXSRN_cjs.inferRegionFromModelId(request.model) ?? process.env.AWS_REGION ?? "us-east-1";
764
777
  const token = await this.resolveTokenOrThrow(region);
765
- const bareModel = chunk4MWBKBS4_cjs.stripBedrockPrefix(request.model);
766
- const baseUrl = this.options.baseUrl ?? chunk4MWBKBS4_cjs.resolveBedrockBaseUrl(request.model);
778
+ const bareModel = chunkG4XUXSRN_cjs.stripBedrockPrefix(request.model);
779
+ const baseUrl = this.options.baseUrl ?? chunkG4XUXSRN_cjs.resolveBedrockBaseUrl(request.model);
767
780
  const endpoint = `/model/${encodeURIComponent(bareModel)}/invoke`;
768
781
  const url = `${baseUrl}${endpoint}`;
769
782
  const response = await postAnthropicRequest({
@@ -789,69 +802,6 @@ function buildBedrockBody(request) {
789
802
  };
790
803
  }
791
804
 
792
- // src/internal/error-mappers/openai-compatible.ts
793
- function mapOpenAICompatibleError(args) {
794
- const { providerId, status, body, headers, endpoint } = args;
795
- const code = mapOpenAiStatusToCode(status, body);
796
- const message = formatMessage2(providerId, status, code);
797
- const metadata = buildErrorMetadata({
798
- provider: providerId,
799
- endpoint,
800
- code,
801
- status,
802
- headers,
803
- body
804
- });
805
- if (status === 401 || status === 403) {
806
- return new chunkA3MHE2MQ_cjs.AuthenticationError(message, { code: `${providerId}_auth_failed`, metadata });
807
- }
808
- if (status === 429) {
809
- return new chunkA3MHE2MQ_cjs.RateLimitError(message, { code: `${providerId}_rate_limit`, metadata });
810
- }
811
- if (status === 400) {
812
- return new chunkA3MHE2MQ_cjs.ConfigurationError(message, { code: `${providerId}_${code}`, metadata });
813
- }
814
- if (status === 408) {
815
- return new chunkA3MHE2MQ_cjs.NetworkError(message, { code: `${providerId}_timeout`, metadata });
816
- }
817
- if (status >= 500 && status < 600) {
818
- return new chunkA3MHE2MQ_cjs.NetworkError(message, { code: `${providerId}_server_error`, metadata });
819
- }
820
- return new chunkA3MHE2MQ_cjs.UnknownAgentError(message, { code: `${providerId}_unknown`, metadata });
821
- }
822
- function extractOpenAiErrorCode(body) {
823
- if (body === null || typeof body !== "object") return void 0;
824
- const err = body.error;
825
- if (err === void 0 || err === null) return void 0;
826
- if (typeof err.code === "string") return err.code;
827
- if (typeof err.type === "string") return err.type;
828
- return void 0;
829
- }
830
- function mapOpenAiStatusToCode(status, body) {
831
- const rawCode = extractOpenAiErrorCode(body)?.toLowerCase() ?? "";
832
- if (rawCode.includes("context_length") || rawCode.includes("context_window") || rawCode.includes("too_many_tokens") || rawCode.includes("max_tokens")) {
833
- return "context_too_long";
834
- }
835
- if (rawCode.includes("content_filter") || rawCode.includes("content_policy") || rawCode.includes("safety")) {
836
- return "content_filtered";
837
- }
838
- if (rawCode.includes("model_not_found") || rawCode.includes("model_unavailable") || rawCode.includes("invalid_model")) {
839
- return "model_unavailable";
840
- }
841
- if (status === 402 || rawCode.includes("insufficient_quota") || rawCode.includes("quota_exceeded")) {
842
- return "quota_exceeded";
843
- }
844
- if (status === 401 || status === 403) return "auth_failed";
845
- if (status === 429) return "rate_limit";
846
- if (status === 408) return "timeout";
847
- if (status === 400) return "invalid_request";
848
- if (status >= 500 && status < 600) return "server_error";
849
- return "unknown";
850
- }
851
- function formatMessage2(providerId, status, code) {
852
- return `${providerId} API error: ${code} (HTTP ${status})`;
853
- }
854
-
855
805
  // src/internal/llm/fault-injection.ts
856
806
  var ENV_GATE_KEY = "NODE_ENV";
857
807
  var ENV_GATE_VALUE = "test";
@@ -881,7 +831,7 @@ var FaultInjectingLlmClient = class {
881
831
  return yield* this.inner.stream(request, signal);
882
832
  }
883
833
  if (parsed.status >= 400) {
884
- throw mapOpenAICompatibleError({
834
+ throw chunk6YNYA7GD_cjs.mapOpenAICompatibleError({
885
835
  providerId: this.name,
886
836
  status: parsed.status,
887
837
  body: parsed.body,
@@ -891,7 +841,6 @@ var FaultInjectingLlmClient = class {
891
841
  }
892
842
  const text = extractText(parsed.body);
893
843
  yield { type: "text_delta", text };
894
- yield { type: "stop", reason: "end_turn" };
895
844
  return {
896
845
  stopReason: "end_turn",
897
846
  text,
@@ -929,7 +878,7 @@ function parseOverrideOrWarnOnce() {
929
878
  function warnInvalidJsonOnce(_raw) {
930
879
  if (warnedInvalidJson) return;
931
880
  warnedInvalidJson = true;
932
- chunkBE3W4HYV_cjs.diag(
881
+ chunkBCQ3E2ZG_cjs.diag(
933
882
  `[theokit-sdk] ${ENV_OVERRIDE_KEY} is set but value is not valid JSON of shape \`{"status": number, "body": object | string}\`. Falling back to real LLM call. This warning is shown once per process.
934
883
  `
935
884
  );
@@ -957,7 +906,7 @@ function mapOllamaTransportError(args) {
957
906
  if (args.providerId !== "ollama") return void 0;
958
907
  const causeCode = extractCauseCode(args.cause);
959
908
  if (causeCode !== "ECONNREFUSED" && causeCode !== "ENOTFOUND") return void 0;
960
- const metadata = buildErrorMetadata({
909
+ const metadata = chunk6YNYA7GD_cjs.buildErrorMetadata({
961
910
  provider: "ollama",
962
911
  endpoint: args.endpoint,
963
912
  code: "network",
@@ -965,7 +914,7 @@ function mapOllamaTransportError(args) {
965
914
  headers: void 0,
966
915
  body: { cause: causeCode }
967
916
  });
968
- return new chunkA3MHE2MQ_cjs.ConfigurationError(
917
+ return new chunkIHFNRNTJ_cjs.ConfigurationError(
969
918
  "Ollama is not reachable. Run `ollama serve` to start the local runtime, or set OLLAMA_HOST to point at a remote Ollama server.",
970
919
  { code: "ollama_unreachable", metadata }
971
920
  );
@@ -975,7 +924,7 @@ function mapOllamaHttpError(args) {
975
924
  const errString = extractErrorString(args.body).toLowerCase();
976
925
  if (args.status === 404 && errString.includes("not found") && errString.includes("pull")) {
977
926
  const modelHint = extractModelName(errString);
978
- const metadata = buildErrorMetadata({
927
+ const metadata = chunk6YNYA7GD_cjs.buildErrorMetadata({
979
928
  provider: "ollama",
980
929
  endpoint: args.endpoint,
981
930
  code: "model_unavailable",
@@ -984,13 +933,13 @@ function mapOllamaHttpError(args) {
984
933
  body: args.body
985
934
  });
986
935
  const pullCmd = modelHint !== void 0 ? `ollama pull ${modelHint}` : "ollama pull <model>";
987
- return new chunkA3MHE2MQ_cjs.ConfigurationError(
936
+ return new chunkIHFNRNTJ_cjs.ConfigurationError(
988
937
  `Ollama model is not pulled. Run \`${pullCmd}\` to download it first.`,
989
938
  { code: "ollama_model_not_pulled", metadata }
990
939
  );
991
940
  }
992
941
  if (args.status === 503 && errString.includes("model is loading")) {
993
- const metadata = buildErrorMetadata({
942
+ const metadata = chunk6YNYA7GD_cjs.buildErrorMetadata({
994
943
  provider: "ollama",
995
944
  endpoint: args.endpoint,
996
945
  code: "server_error",
@@ -998,7 +947,7 @@ function mapOllamaHttpError(args) {
998
947
  headers: args.headers,
999
948
  body: args.body
1000
949
  });
1001
- return new chunkA3MHE2MQ_cjs.NetworkError(
950
+ return new chunkIHFNRNTJ_cjs.NetworkError(
1002
951
  "Ollama model is loading. Retry in a few seconds \u2014 Ollama is warming up the model into memory.",
1003
952
  { code: "ollama_model_loading", metadata }
1004
953
  );
@@ -1219,7 +1168,7 @@ function toOllamaMessages(message) {
1219
1168
  }
1220
1169
  if (message.role === "user") {
1221
1170
  if (message.content.some((p) => p.type === "image")) {
1222
- throw new chunkA3MHE2MQ_cjs.ConfigurationError(
1171
+ throw new chunkIHFNRNTJ_cjs.ConfigurationError(
1223
1172
  "image input is not supported on the ollama-native provider; use an OpenAI/OpenRouter model for multimodal turns",
1224
1173
  { code: "ollama_image_unsupported" }
1225
1174
  );
@@ -1348,7 +1297,7 @@ async function safeFetch(fetchFn, url, init) {
1348
1297
  try {
1349
1298
  return await fetchFn(url, init);
1350
1299
  } catch (cause) {
1351
- throw new chunkA3MHE2MQ_cjs.NetworkError("HTTP request failed", { code: "network_error", cause });
1300
+ throw new chunkIHFNRNTJ_cjs.NetworkError("HTTP request failed", { code: "network_error", cause });
1352
1301
  }
1353
1302
  }
1354
1303
  async function safeParseJsonResponse(response) {
@@ -1375,7 +1324,7 @@ function mapHttpStatusToError(status, body) {
1375
1324
  cause: body
1376
1325
  };
1377
1326
  if (envelope.code === "integration_not_connected") {
1378
- return new chunkA3MHE2MQ_cjs.IntegrationNotConnectedError(message, {
1327
+ return new chunkIHFNRNTJ_cjs.IntegrationNotConnectedError(message, {
1379
1328
  provider: envelope.provider ?? "unknown",
1380
1329
  helpUrl: envelope.helpUrl ?? "",
1381
1330
  code: envelope.code,
@@ -1383,18 +1332,18 @@ function mapHttpStatusToError(status, body) {
1383
1332
  });
1384
1333
  }
1385
1334
  if (status === 401 || status === 403) {
1386
- return new chunkA3MHE2MQ_cjs.AuthenticationError(message, errorOptions);
1335
+ return new chunkIHFNRNTJ_cjs.AuthenticationError(message, errorOptions);
1387
1336
  }
1388
1337
  if (status === 429) {
1389
- return new chunkA3MHE2MQ_cjs.RateLimitError(message, errorOptions);
1338
+ return new chunkIHFNRNTJ_cjs.RateLimitError(message, errorOptions);
1390
1339
  }
1391
1340
  if (status >= 400 && status < 500) {
1392
- return new chunkA3MHE2MQ_cjs.ConfigurationError(message, errorOptions);
1341
+ return new chunkIHFNRNTJ_cjs.ConfigurationError(message, errorOptions);
1393
1342
  }
1394
1343
  if (status >= 500) {
1395
- return new chunkA3MHE2MQ_cjs.NetworkError(message, errorOptions);
1344
+ return new chunkIHFNRNTJ_cjs.NetworkError(message, errorOptions);
1396
1345
  }
1397
- return new chunkA3MHE2MQ_cjs.UnknownAgentError(message, errorOptions);
1346
+ return new chunkIHFNRNTJ_cjs.UnknownAgentError(message, errorOptions);
1398
1347
  }
1399
1348
  function extractErrorEnvelope(body) {
1400
1349
  if (!body || typeof body !== "object") return {};
@@ -1648,7 +1597,7 @@ var OpenAIClient = class {
1648
1597
  endpoint: "/v1/chat/completions"
1649
1598
  });
1650
1599
  if (ollamaMapped !== void 0) throw ollamaMapped;
1651
- throw mapOpenAICompatibleError({
1600
+ throw chunk6YNYA7GD_cjs.mapOpenAICompatibleError({
1652
1601
  providerId,
1653
1602
  status: response.status,
1654
1603
  body,
@@ -1677,7 +1626,7 @@ var OpenAIClient = class {
1677
1626
  }
1678
1627
  if (chunk.error !== void 0 && chunk.error !== null) {
1679
1628
  const status = typeof chunk.error.code === "number" ? chunk.error.code : 502;
1680
- throw mapOpenAICompatibleError({
1629
+ throw chunk6YNYA7GD_cjs.mapOpenAICompatibleError({
1681
1630
  providerId,
1682
1631
  status,
1683
1632
  body: chunk,
@@ -1689,7 +1638,7 @@ var OpenAIClient = class {
1689
1638
  for (const event of events) yield event;
1690
1639
  }
1691
1640
  if (!sawDone && !accumulator.finishReasonSeen) {
1692
- throw new chunkA3MHE2MQ_cjs.NetworkError("SSE stream truncated (no finish_reason / [DONE])", {
1641
+ throw new chunkIHFNRNTJ_cjs.NetworkError("SSE stream truncated (no finish_reason / [DONE])", {
1693
1642
  code: "stream_truncated"
1694
1643
  });
1695
1644
  }
@@ -1821,13 +1770,13 @@ var OpenAIStreamAccumulator = class {
1821
1770
  toolCalls.push(...recovered.toolCalls);
1822
1771
  text = recovered.residualText;
1823
1772
  stopReason = "tool_use";
1824
- chunkBE3W4HYV_cjs.diag(
1773
+ chunkBCQ3E2ZG_cjs.diag(
1825
1774
  `[theokit-sdk] recovered ${recovered.toolCalls.length} leaked tool call(s) from assistant content (provider="${this.providerName}", names=${recovered.toolCalls.map((c) => c.name).join(",")})
1826
1775
  `
1827
1776
  );
1828
1777
  }
1829
1778
  if (recovered.droppedNames.length > 0) {
1830
- chunkBE3W4HYV_cjs.diag(
1779
+ chunkBCQ3E2ZG_cjs.diag(
1831
1780
  `[theokit-sdk] dropped ${recovered.droppedNames.length} leaked block(s) whose name is not a tool in the request (provider="${this.providerName}", names=${recovered.droppedNames.join(",")})
1832
1781
  `
1833
1782
  );
@@ -1949,10 +1898,10 @@ async function tryFirstEvent(client, request, signal, logFallback = false) {
1949
1898
  const firstResult = await generator.next();
1950
1899
  return { kind: "ok", generator, firstResult };
1951
1900
  } catch (cause) {
1952
- if (cause instanceof chunkA3MHE2MQ_cjs.NetworkError || cause instanceof chunkA3MHE2MQ_cjs.RateLimitError || cause instanceof chunkA3MHE2MQ_cjs.AuthenticationError) {
1901
+ if (cause instanceof chunkIHFNRNTJ_cjs.NetworkError || cause instanceof chunkIHFNRNTJ_cjs.RateLimitError || cause instanceof chunkIHFNRNTJ_cjs.AuthenticationError) {
1953
1902
  if (logFallback) {
1954
1903
  const errCode = cause.metadata?.code ?? cause.code ?? "unknown";
1955
- chunkBE3W4HYV_cjs.diag(`[theokit-sdk] provider ${client.name} failed (${errCode}): falling back
1904
+ chunkBCQ3E2ZG_cjs.diag(`[theokit-sdk] provider ${client.name} failed (${errCode}): falling back
1956
1905
  `);
1957
1906
  }
1958
1907
  return { kind: "handshake_error", error: cause };
@@ -1994,7 +1943,7 @@ var PoolAwareLlmClient = class {
1994
1943
  // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: stream() must serialize pool-select → build client → first-event probe → classify → retry/rotate/propagate. Extracting helpers fragments the linear narrative; the comments above each branch keep it readable.
1995
1944
  async *stream(request, signal) {
1996
1945
  if (this.breaker.shouldSkip(this.pool.provider)) {
1997
- throw new chunkA3MHE2MQ_cjs.NetworkError(`${this.pool.provider} circuit open \u2014 failing fast`, {
1946
+ throw new chunkIHFNRNTJ_cjs.NetworkError(`${this.pool.provider} circuit open \u2014 failing fast`, {
1998
1947
  code: "circuit_open"
1999
1948
  });
2000
1949
  }
@@ -2013,7 +1962,7 @@ var PoolAwareLlmClient = class {
2013
1962
  }
2014
1963
  if (entry === null) {
2015
1964
  this.breaker.recordTimeout(this.pool.provider);
2016
- throw new chunkA3MHE2MQ_cjs.CredentialPoolExhaustedError(
1965
+ throw new chunkIHFNRNTJ_cjs.CredentialPoolExhaustedError(
2017
1966
  `All ${this.pool.provider} credentials exhausted; next retry available at ${this.nextRetryHint() ?? "unknown"}`,
2018
1967
  { provider: this.pool.provider, nextRetryAt: this.nextRetryHint() }
2019
1968
  );
@@ -2027,13 +1976,13 @@ var PoolAwareLlmClient = class {
2027
1976
  }
2028
1977
  const decision = classifyAndDecide(attempt.error, hasRetried429);
2029
1978
  if (decision === "retry") {
2030
- const backoffMs = chunkKL7E244K_cjs.computeBackoffMs({
1979
+ const backoffMs = chunkECW2MLEW_cjs.computeBackoffMs({
2031
1980
  attempt: 0,
2032
1981
  ...this.backoffBaseMs !== void 0 ? { baseMs: this.backoffBaseMs } : {},
2033
1982
  ...this.rng !== void 0 ? { rng: this.rng } : {}
2034
1983
  });
2035
1984
  this.onRateLimit?.({ attempt: 1, retryAfterMs: backoffMs });
2036
- await chunkKL7E244K_cjs.sleepWithAbort(backoffMs, signal);
1985
+ await chunkECW2MLEW_cjs.sleepWithAbort(backoffMs, signal);
2037
1986
  hasRetried429 = true;
2038
1987
  continue;
2039
1988
  }
@@ -2045,7 +1994,7 @@ var PoolAwareLlmClient = class {
2045
1994
  ...parseRetryAfterMs(attempt.error) !== void 0 ? { resetAtMs: parseRetryAfterMs(attempt.error) } : {}
2046
1995
  });
2047
1996
  } catch (persistErr) {
2048
- chunkBE3W4HYV_cjs.diag(
1997
+ chunkBCQ3E2ZG_cjs.diag(
2049
1998
  `[theokit-sdk] credential-pool: persist failed during rotate; continuing in-memory: ${persistErr instanceof Error ? persistErr.message : String(persistErr)}
2050
1999
  `
2051
2000
  );
@@ -2067,8 +2016,8 @@ var PoolAwareLlmClient = class {
2067
2016
  }
2068
2017
  };
2069
2018
  function classifyAndDecide(error, hasRetried429) {
2070
- if (error instanceof chunkA3MHE2MQ_cjs.NetworkError) return "propagate";
2071
- if (error instanceof chunkA3MHE2MQ_cjs.AuthenticationError) return "rotate";
2019
+ if (error instanceof chunkIHFNRNTJ_cjs.NetworkError) return "propagate";
2020
+ if (error instanceof chunkIHFNRNTJ_cjs.AuthenticationError) return "rotate";
2072
2021
  const status = error.metadata?.statusCode ?? 429;
2073
2022
  if (status === 402) return "rotate";
2074
2023
  return hasRetried429 ? "rotate" : "retry";
@@ -2081,8 +2030,8 @@ function parseRetryAfterMs(error) {
2081
2030
  return void 0;
2082
2031
  }
2083
2032
  function inferStatusCode(error) {
2084
- if (error instanceof chunkA3MHE2MQ_cjs.AuthenticationError) return 401;
2085
- if (error instanceof chunkA3MHE2MQ_cjs.RateLimitError) return 429;
2033
+ if (error instanceof chunkIHFNRNTJ_cjs.AuthenticationError) return 401;
2034
+ if (error instanceof chunkIHFNRNTJ_cjs.RateLimitError) return 429;
2086
2035
  return 0;
2087
2036
  }
2088
2037
  function abortError(signal) {
@@ -2190,7 +2139,7 @@ var ResponsesApiClient = class {
2190
2139
  body = JSON.parse(text2);
2191
2140
  } catch {
2192
2141
  }
2193
- throw mapOpenAICompatibleError({
2142
+ throw chunk6YNYA7GD_cjs.mapOpenAICompatibleError({
2194
2143
  providerId,
2195
2144
  status: response.status,
2196
2145
  body,
@@ -2250,7 +2199,6 @@ var ResponsesApiClient = class {
2250
2199
  };
2251
2200
  toolCalls.push(call);
2252
2201
  delete pending[id];
2253
- yield { type: "tool_use", id: call.id, name: call.name, input: call.input };
2254
2202
  } else if (t === "response.completed" || t === "response.incomplete") {
2255
2203
  const usage = event.response?.usage;
2256
2204
  if (usage !== void 0) {
@@ -2262,7 +2210,7 @@ var ResponsesApiClient = class {
2262
2210
  } else if (t === "response.failed" || t === "error") {
2263
2211
  const msg = event.response?.error?.message ?? event.message ?? "responses stream failed";
2264
2212
  yield { type: "error", message: msg };
2265
- throw mapOpenAICompatibleError({
2213
+ throw chunk6YNYA7GD_cjs.mapOpenAICompatibleError({
2266
2214
  providerId,
2267
2215
  status: 502,
2268
2216
  body: { error: { message: msg } },
@@ -2273,7 +2221,6 @@ var ResponsesApiClient = class {
2273
2221
  }
2274
2222
  }
2275
2223
  if (toolCalls.length > 0 && stopReason === "end_turn") stopReason = "tool_use";
2276
- yield { type: "stop", reason: stopReason };
2277
2224
  return makeLlmFinish({
2278
2225
  stopReason,
2279
2226
  text,
@@ -2294,14 +2241,14 @@ function abortError2(signal) {
2294
2241
  // src/internal/llm/retrying-client.ts
2295
2242
  var MAX_ATTEMPTS = 3;
2296
2243
  function isRetriableError(err) {
2297
- if (!chunkA3MHE2MQ_cjs.isTransientError(err)) return false;
2298
- if (err instanceof chunkA3MHE2MQ_cjs.CredentialPoolExhaustedError) return false;
2299
- if (err instanceof chunkA3MHE2MQ_cjs.TheokitAgentError && err.code === "circuit_open") return false;
2300
- if (err instanceof chunkA3MHE2MQ_cjs.RateLimitError && err.metadata?.statusCode === 402) return false;
2244
+ if (!chunkIHFNRNTJ_cjs.isTransientError(err)) return false;
2245
+ if (err instanceof chunkIHFNRNTJ_cjs.CredentialPoolExhaustedError) return false;
2246
+ if (err instanceof chunkIHFNRNTJ_cjs.TheokitAgentError && err.code === "circuit_open") return false;
2247
+ if (err instanceof chunkIHFNRNTJ_cjs.RateLimitError && err.metadata?.statusCode === 402) return false;
2301
2248
  return true;
2302
2249
  }
2303
2250
  function retryAfterHintMs(err) {
2304
- if (!(err instanceof chunkA3MHE2MQ_cjs.RateLimitError)) return void 0;
2251
+ if (!(err instanceof chunkIHFNRNTJ_cjs.RateLimitError)) return void 0;
2305
2252
  const seconds = err.metadata?.retryAfter;
2306
2253
  return typeof seconds === "number" && seconds > 0 ? seconds * 1e3 : void 0;
2307
2254
  }
@@ -2347,12 +2294,16 @@ var RetryingLlmClient = class {
2347
2294
  */
2348
2295
  async #waitBackoff(err, attempt, signal) {
2349
2296
  const hint = retryAfterHintMs(err);
2350
- const ms = chunkKL7E244K_cjs.computeBackoffMs({
2297
+ const ms = chunkECW2MLEW_cjs.computeBackoffMs({
2351
2298
  attempt,
2352
2299
  ...hint !== void 0 ? { retryAfterMs: hint } : {},
2353
2300
  ...this.#rng !== void 0 ? { rng: this.#rng } : {}
2354
2301
  });
2355
- await chunkKL7E244K_cjs.sleepWithAbort(ms, signal);
2302
+ const cause = err instanceof Error ? err.name : typeof err;
2303
+ chunkBCQ3E2ZG_cjs.diag(
2304
+ `retry ${attempt + 1}/${MAX_ATTEMPTS} em ${String(ms)}ms \u2014 ${cause}` + (hint !== void 0 ? ` (Retry-After: ${String(hint)}ms)` : "")
2305
+ );
2306
+ await chunkECW2MLEW_cjs.sleepWithAbort(ms, signal);
2356
2307
  }
2357
2308
  async *stream(request, signal) {
2358
2309
  let lastError;
@@ -2390,7 +2341,7 @@ function classifyVertexError(args, errStatus) {
2390
2341
  return "unknown";
2391
2342
  }
2392
2343
  function vertexMetadata(args, code) {
2393
- return buildErrorMetadata({
2344
+ return chunk6YNYA7GD_cjs.buildErrorMetadata({
2394
2345
  provider: "vertex",
2395
2346
  endpoint: args.endpoint,
2396
2347
  code,
@@ -2400,23 +2351,23 @@ function vertexMetadata(args, code) {
2400
2351
  });
2401
2352
  }
2402
2353
  var VERTEX_ERROR_BUILDERS = {
2403
- rate_limit: (args, msg) => new chunkA3MHE2MQ_cjs.RateLimitError(`Vertex quota exhausted: ${msg}`, {
2354
+ rate_limit: (args, msg) => new chunkIHFNRNTJ_cjs.RateLimitError(`Vertex quota exhausted: ${msg}`, {
2404
2355
  metadata: vertexMetadata(args, "rate_limit")
2405
2356
  }),
2406
- auth_unauthenticated: (args, msg) => new chunkA3MHE2MQ_cjs.AuthenticationError(`Vertex unauthenticated: ${msg}`, {
2357
+ auth_unauthenticated: (args, msg) => new chunkIHFNRNTJ_cjs.AuthenticationError(`Vertex unauthenticated: ${msg}`, {
2407
2358
  metadata: vertexMetadata(args, "auth_failed")
2408
2359
  }),
2409
- auth_permission: (args, msg) => new chunkA3MHE2MQ_cjs.AuthenticationError(`Vertex permission denied: ${msg}`, {
2360
+ auth_permission: (args, msg) => new chunkIHFNRNTJ_cjs.AuthenticationError(`Vertex permission denied: ${msg}`, {
2410
2361
  metadata: vertexMetadata(args, "auth_failed")
2411
2362
  }),
2412
- invalid_request: (args, msg) => new chunkA3MHE2MQ_cjs.ConfigurationError(`Vertex validation: ${msg}`, {
2363
+ invalid_request: (args, msg) => new chunkIHFNRNTJ_cjs.ConfigurationError(`Vertex validation: ${msg}`, {
2413
2364
  metadata: vertexMetadata(args, "invalid_request")
2414
2365
  }),
2415
- timeout: (args, msg) => new chunkA3MHE2MQ_cjs.NetworkError(`Vertex timeout: ${msg}`, { metadata: vertexMetadata(args, "timeout") }),
2416
- server_error: (args, msg) => new chunkA3MHE2MQ_cjs.NetworkError(`Vertex server error: ${msg}`, {
2366
+ timeout: (args, msg) => new chunkIHFNRNTJ_cjs.NetworkError(`Vertex timeout: ${msg}`, { metadata: vertexMetadata(args, "timeout") }),
2367
+ server_error: (args, msg) => new chunkIHFNRNTJ_cjs.NetworkError(`Vertex server error: ${msg}`, {
2417
2368
  metadata: vertexMetadata(args, "server_error")
2418
2369
  }),
2419
- unknown: (args, msg) => new chunkA3MHE2MQ_cjs.UnknownAgentError(`Vertex unknown: ${msg}`, { metadata: vertexMetadata(args, "unknown") })
2370
+ unknown: (args, msg) => new chunkIHFNRNTJ_cjs.UnknownAgentError(`Vertex unknown: ${msg}`, { metadata: vertexMetadata(args, "unknown") })
2420
2371
  };
2421
2372
  function mapVertexError(args) {
2422
2373
  const parsed = parseBody2(args.body);
@@ -2452,12 +2403,12 @@ async function resolveVertexAccessToken() {
2452
2403
  async function getAuthClientOrThrow() {
2453
2404
  let mod;
2454
2405
  try {
2455
- const r = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-G7X2Y7Y2.cjs', document.baseURI).href)));
2406
+ const r = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-DAXEQELR.cjs', document.baseURI).href)));
2456
2407
  mod = r("google-auth-library");
2457
2408
  } catch (err) {
2458
2409
  const isModuleMissing = err instanceof Error && (err.message.includes("Cannot find module") || err.code === "MODULE_NOT_FOUND");
2459
2410
  if (isModuleMissing) {
2460
- throw new chunkA3MHE2MQ_cjs.ConfigurationError(
2411
+ throw new chunkIHFNRNTJ_cjs.ConfigurationError(
2461
2412
  "Vertex provider requires `google-auth-library`. Install: `pnpm add google-auth-library`.",
2462
2413
  { code: "auth_failed", cause: err }
2463
2414
  );
@@ -2468,7 +2419,7 @@ async function getAuthClientOrThrow() {
2468
2419
  const auth = new mod.GoogleAuth({ scopes: [SCOPE_CLOUD_PLATFORM] });
2469
2420
  return await auth.getClient();
2470
2421
  } catch (err) {
2471
- chunkBE3W4HYV_cjs.diag(
2422
+ chunkBCQ3E2ZG_cjs.diag(
2472
2423
  `[theokit-sdk] Vertex ADC initialization failed: ${err instanceof Error ? err.message : String(err)}
2473
2424
  `
2474
2425
  );
@@ -2494,7 +2445,7 @@ var VertexAnthropicClient = class {
2494
2445
  resolveProjectOrThrow() {
2495
2446
  const projectId = this.options.projectId ?? resolveVertexProjectId();
2496
2447
  if (projectId !== void 0) return projectId;
2497
- throw new chunkA3MHE2MQ_cjs.ConfigurationError(
2448
+ throw new chunkIHFNRNTJ_cjs.ConfigurationError(
2498
2449
  "Vertex requires a project id. Set GOOGLE_CLOUD_PROJECT env var or run `gcloud config set project <id>`.",
2499
2450
  { code: "auth_failed" }
2500
2451
  );
@@ -2504,7 +2455,7 @@ var VertexAnthropicClient = class {
2504
2455
  if (fromOpts !== void 0 && fromOpts.length > 0) return fromOpts;
2505
2456
  const fromAdc = await resolveVertexAccessToken();
2506
2457
  if (fromAdc !== void 0 && fromAdc.length > 0) return fromAdc;
2507
- throw new chunkA3MHE2MQ_cjs.ConfigurationError(
2458
+ throw new chunkIHFNRNTJ_cjs.ConfigurationError(
2508
2459
  "Vertex could not resolve an access token. Run `gcloud auth application-default login` or set GOOGLE_APPLICATION_CREDENTIALS to a service-account JSON path.",
2509
2460
  { code: "auth_failed" }
2510
2461
  );
@@ -2513,8 +2464,8 @@ var VertexAnthropicClient = class {
2513
2464
  const projectId = this.resolveProjectOrThrow();
2514
2465
  const location = this.options.location ?? resolveVertexLocation();
2515
2466
  const accessToken = await this.resolveTokenOrThrow();
2516
- const baseUrl = chunk4MWBKBS4_cjs.resolveVertexBaseUrl({ projectId, location, modelDialect: "anthropic" });
2517
- const bareModel = chunk4MWBKBS4_cjs.stripVertexPrefix(request.model);
2467
+ const baseUrl = chunkG4XUXSRN_cjs.resolveVertexBaseUrl({ projectId, location, modelDialect: "anthropic" });
2468
+ const bareModel = chunkG4XUXSRN_cjs.stripVertexPrefix(request.model);
2518
2469
  const endpoint = `/models/${encodeURIComponent(bareModel)}:rawPredict`;
2519
2470
  const url = `${baseUrl}${endpoint}`;
2520
2471
  const response = await postAnthropicRequest({
@@ -2550,7 +2501,7 @@ var VertexGeminiClient = class {
2550
2501
  async *stream(request, signal) {
2551
2502
  const projectId = this.options.projectId ?? resolveVertexProjectId();
2552
2503
  if (projectId === void 0) {
2553
- throw new chunkA3MHE2MQ_cjs.ConfigurationError(
2504
+ throw new chunkIHFNRNTJ_cjs.ConfigurationError(
2554
2505
  "Vertex requires a project id. Set GOOGLE_CLOUD_PROJECT env var or run `gcloud config set project <id>`.",
2555
2506
  { code: "auth_failed" }
2556
2507
  );
@@ -2558,12 +2509,12 @@ var VertexGeminiClient = class {
2558
2509
  const location = this.options.location ?? resolveVertexLocation();
2559
2510
  const accessToken = this.options.apiKey !== void 0 && this.options.apiKey.length > 0 ? this.options.apiKey : await resolveVertexAccessToken();
2560
2511
  if (accessToken === void 0 || accessToken.length === 0) {
2561
- throw new chunkA3MHE2MQ_cjs.ConfigurationError(
2512
+ throw new chunkIHFNRNTJ_cjs.ConfigurationError(
2562
2513
  "Vertex could not resolve an access token. Run `gcloud auth application-default login` or set GOOGLE_APPLICATION_CREDENTIALS to a service-account JSON path.",
2563
2514
  { code: "auth_failed" }
2564
2515
  );
2565
2516
  }
2566
- const baseUrl = chunk4MWBKBS4_cjs.resolveVertexBaseUrl({ projectId, location, modelDialect: "gemini" });
2517
+ const baseUrl = chunkG4XUXSRN_cjs.resolveVertexBaseUrl({ projectId, location, modelDialect: "gemini" });
2567
2518
  const url = `${baseUrl}/chat/completions`;
2568
2519
  const innerFetch = this.options.fetch ?? fetch;
2569
2520
  const rewriteFetch = (input, init) => {
@@ -2589,7 +2540,7 @@ var VertexRouterClient = class {
2589
2540
  options;
2590
2541
  name = "vertex";
2591
2542
  async *stream(request, signal) {
2592
- const dialect = chunk4MWBKBS4_cjs.inferModelDialect(request.model);
2543
+ const dialect = chunkG4XUXSRN_cjs.inferModelDialect(request.model);
2593
2544
  if (dialect === "anthropic") {
2594
2545
  const inner2 = new VertexAnthropicClient(this.options);
2595
2546
  return yield* inner2.stream(request, signal);
@@ -2601,7 +2552,7 @@ var VertexRouterClient = class {
2601
2552
 
2602
2553
  // src/internal/llm/router.ts
2603
2554
  function resolveProviderChain(options) {
2604
- chunk4MWBKBS4_cjs.registerBuiltins();
2555
+ chunkG4XUXSRN_cjs.registerBuiltins();
2605
2556
  return buildChain(options);
2606
2557
  }
2607
2558
  function buildChain(options) {
@@ -2618,7 +2569,7 @@ function buildChain(options) {
2618
2569
  addClient(options.primary);
2619
2570
  for (const fallback of options.fallback ?? []) addClient(fallback);
2620
2571
  if (clients.length === 0) {
2621
- throw new chunkA3MHE2MQ_cjs.ConfigurationError(
2572
+ throw new chunkIHFNRNTJ_cjs.ConfigurationError(
2622
2573
  `No provider client could be resolved (primary=${options.primary}). Set ANTHROPIC_API_KEY or OPENAI_API_KEY / OPENROUTER_API_KEY.`,
2623
2574
  { code: "provider_unresolved" }
2624
2575
  );
@@ -2626,11 +2577,11 @@ function buildChain(options) {
2626
2577
  return clients;
2627
2578
  }
2628
2579
  function buildClient(name, routerOptions) {
2629
- const baseProfile = chunk4MWBKBS4_cjs.getProviderProfile(name);
2580
+ const baseProfile = chunkG4XUXSRN_cjs.getProviderProfile(name);
2630
2581
  if (baseProfile === void 0) return void 0;
2631
2582
  const profile = routerOptions.extractToolCallsFromContent === true && baseProfile.extractToolCallsFromContent !== true ? { ...baseProfile, extractToolCallsFromContent: true } : baseProfile;
2632
2583
  const resilience = routerOptions.onRateLimit !== void 0 ? { onRateLimit: routerOptions.onRateLimit } : {};
2633
- const ambient = chunkKL7E244K_cjs.currentCredentialPool(name);
2584
+ const ambient = chunkECW2MLEW_cjs.currentCredentialPool(name);
2634
2585
  if (ambient !== void 0) {
2635
2586
  return new RetryingLlmClient(
2636
2587
  new PoolAwareLlmClient(
@@ -2660,9 +2611,9 @@ function buildPoolOrSingle(args) {
2660
2611
  if (poolKeys !== void 0 && poolKeys.length >= 2) {
2661
2612
  const strategy = routerOptions.credentialPoolStrategy?.[name] ?? "fill_first";
2662
2613
  const entries = poolKeys.map(
2663
- (accessToken, priority) => chunkKL7E244K_cjs.newPooledCredential({ provider: name, accessToken, priority, source: "manual" })
2614
+ (accessToken, priority) => chunkECW2MLEW_cjs.newPooledCredential({ provider: name, accessToken, priority, source: "manual" })
2664
2615
  );
2665
- const pool = new chunkKL7E244K_cjs.CredentialPool(name, entries, strategy);
2616
+ const pool = new chunkECW2MLEW_cjs.CredentialPool(name, entries, strategy);
2666
2617
  const resilience = routerOptions.onRateLimit !== void 0 ? { onRateLimit: routerOptions.onRateLimit } : {};
2667
2618
  return new RetryingLlmClient(
2668
2619
  new PoolAwareLlmClient(
@@ -2697,7 +2648,7 @@ var warnedNoAuthApiKeys = /* @__PURE__ */ new Set();
2697
2648
  function warnNoAuthApiKeysIgnoredOnce(provider) {
2698
2649
  if (warnedNoAuthApiKeys.has(provider)) return;
2699
2650
  warnedNoAuthApiKeys.add(provider);
2700
- chunkBE3W4HYV_cjs.diag(
2651
+ chunkBCQ3E2ZG_cjs.diag(
2701
2652
  `[theokit-sdk] provider "${provider}" has authType: "none" \u2014 apiKeys ignored (no auth required for local runtime).
2702
2653
  `
2703
2654
  );
@@ -2723,10 +2674,10 @@ function warnUnknownProvidersInApiKeys(apiKeys) {
2723
2674
  if (apiKeys === void 0) return;
2724
2675
  for (const name of Object.keys(apiKeys)) {
2725
2676
  if (warnedProviders.has(name)) continue;
2726
- const profile = chunk4MWBKBS4_cjs.getProviderProfile(name);
2677
+ const profile = chunkG4XUXSRN_cjs.getProviderProfile(name);
2727
2678
  if (profile === void 0) {
2728
2679
  warnedProviders.add(name);
2729
- chunkBE3W4HYV_cjs.diag(
2680
+ chunkBCQ3E2ZG_cjs.diag(
2730
2681
  `[theokit-sdk] credential-pool: unknown provider "${name}" in apiKeys (no profile registered)
2731
2682
  `
2732
2683
  );
@@ -2758,7 +2709,7 @@ function selectTransport(profile, apiKey) {
2758
2709
  if (apiKey !== "__oauth_lazy_token__") return;
2759
2710
  const auth = t.headers?.authorization ?? t.headers?.Authorization;
2760
2711
  if (t.fetch === void 0 && auth === void 0) {
2761
- throw new chunkA3MHE2MQ_cjs.ConfigurationError(
2712
+ throw new chunkIHFNRNTJ_cjs.ConfigurationError(
2762
2713
  `provider "${profile.name}" uses OAuth (authType: ${profile.authType}) but no credential was resolved. Register a ProviderProfile.transform whose fetch (or headers.authorization) supplies the bearer \u2014 typically via resolveCredential() from "@theokit/sdk/auth".`
2763
2714
  );
2764
2715
  }
@@ -2809,7 +2760,7 @@ function selectTransport(profile, apiKey) {
2809
2760
  providerName: profile.name
2810
2761
  });
2811
2762
  }
2812
- throw new chunkA3MHE2MQ_cjs.ConfigurationError(
2763
+ throw new chunkIHFNRNTJ_cjs.ConfigurationError(
2813
2764
  `Provider "${profile.name}" requires apiMode "${profile.apiMode}" but no transport is registered. Install a third-party transport plugin (@theokit-transport-${profile.apiMode}) or use a provider with apiMode "chat_completions" or "anthropic_messages".`,
2814
2765
  { code: "transport_unavailable" }
2815
2766
  );
@@ -2824,7 +2775,7 @@ function inferProviderFromApiKey(apiKey) {
2824
2775
  { provider: "openai", prefix: "sk-" }
2825
2776
  ];
2826
2777
  for (const { provider, prefix } of byPrefix) {
2827
- if (apiKey.startsWith(prefix) && chunk4MWBKBS4_cjs.getProviderProfile(provider) !== void 0) {
2778
+ if (apiKey.startsWith(prefix) && chunkG4XUXSRN_cjs.getProviderProfile(provider) !== void 0) {
2828
2779
  return provider;
2829
2780
  }
2830
2781
  }
@@ -2963,7 +2914,7 @@ function plainText(content) {
2963
2914
  }
2964
2915
  async function compactSessionTranscript(opts) {
2965
2916
  const prior = await opts.store.readRecords(opts.loc.agentId);
2966
- const history = chunk6OKPJZMX_cjs.reconstructMessages(prior);
2917
+ const history = chunkZ2CUEBXV_cjs.reconstructMessages(prior);
2967
2918
  const compressible = [];
2968
2919
  for (const m of history) {
2969
2920
  const text = plainText(m.content);
@@ -2971,14 +2922,14 @@ async function compactSessionTranscript(opts) {
2971
2922
  compressible.push({ role: m.role, content: text });
2972
2923
  }
2973
2924
  }
2974
- const preTokens = chunkIBDE4R5L_cjs.estimateTokens(compressible.map((m) => m.content).join("\n"));
2925
+ const preTokens = chunkJ6T5LWJ4_cjs.estimateTokens(compressible.map((m) => m.content).join("\n"));
2975
2926
  const summaryBody = await opts.summarize(compressible);
2976
2927
  const preserved = [];
2977
2928
  let budget = 0;
2978
2929
  for (let i = compressible.length - 1; i >= 0; i--) {
2979
2930
  const m = compressible[i];
2980
2931
  if (m === void 0 || m.role !== "user" || isCompactSummary(m.content)) continue;
2981
- const cost = chunkIBDE4R5L_cjs.estimateTokens(m.content);
2932
+ const cost = chunkJ6T5LWJ4_cjs.estimateTokens(m.content);
2982
2933
  if (budget + cost > COMPACT_USER_MESSAGE_MAX_TOKENS) {
2983
2934
  const remaining = COMPACT_USER_MESSAGE_MAX_TOKENS - budget;
2984
2935
  if (remaining > 50) {
@@ -2992,7 +2943,7 @@ async function compactSessionTranscript(opts) {
2992
2943
  }
2993
2944
  const summary = `${COMPACT_SUMMARY_MARKER}
2994
2945
  ${summaryBody}`;
2995
- const transcript = chunk6OKPJZMX_cjs.SessionTranscript.fromRecords(prior, {
2946
+ const transcript = chunkZ2CUEBXV_cjs.SessionTranscript.fromRecords(prior, {
2996
2947
  cwd: opts.loc.cwd,
2997
2948
  sessionId: opts.sessionId,
2998
2949
  model: opts.loc.model ?? "unknown"
@@ -3003,7 +2954,7 @@ ${summaryBody}`;
3003
2954
  const delta = transcript.records().slice(prior.length);
3004
2955
  await opts.store.appendRecords(opts.loc.agentId, delta);
3005
2956
  chunkBURYFNOM_cjs.invalidateSessionCache(opts.loc.cwd, opts.loc.agentId);
3006
- const postTokens = chunkIBDE4R5L_cjs.estimateTokens([...preserved, summary].join("\n"));
2957
+ const postTokens = chunkJ6T5LWJ4_cjs.estimateTokens([...preserved, summary].join("\n"));
3007
2958
  return { preTokens, postTokens };
3008
2959
  }
3009
2960
  function resolveSummarizerRoute(opts) {
@@ -3012,9 +2963,9 @@ function resolveSummarizerRoute(opts) {
3012
2963
  }
3013
2964
  function buildDefaultSummarizer(opts) {
3014
2965
  return async (messages) => {
3015
- chunk4MWBKBS4_cjs.registerBuiltins();
2966
+ chunkG4XUXSRN_cjs.registerBuiltins();
3016
2967
  const modelPrefix = opts.agentModel.includes("/") ? opts.agentModel.slice(0, opts.agentModel.indexOf("/")) : void 0;
3017
- const prefixProfile = modelPrefix !== void 0 ? chunk4MWBKBS4_cjs.getProviderProfile(modelPrefix) : void 0;
2968
+ const prefixProfile = modelPrefix !== void 0 ? chunkG4XUXSRN_cjs.getProviderProfile(modelPrefix) : void 0;
3018
2969
  const prefixUsable = prefixProfile !== void 0 && (prefixProfile.authType !== "api_key" || prefixProfile.envVars.some((v) => (process.env[v] ?? "").length > 0));
3019
2970
  const route = resolveSummarizerRoute({
3020
2971
  keyProvider: inferProviderFromApiKey(opts.apiKey),
@@ -3085,7 +3036,7 @@ async function autoCompactIfNeeded(opts) {
3085
3036
  return true;
3086
3037
  } catch (cause) {
3087
3038
  const msg = cause instanceof Error ? cause.message : String(cause);
3088
- chunkBE3W4HYV_cjs.diag(`[theokit-sdk] auto-compaction failed (left transcript untouched): ${msg}
3039
+ chunkBCQ3E2ZG_cjs.diag(`[theokit-sdk] auto-compaction failed (left transcript untouched): ${msg}
3089
3040
  `);
3090
3041
  return false;
3091
3042
  }
@@ -3106,7 +3057,6 @@ exports.isCompactSummary = isCompactSummary;
3106
3057
  exports.isFixtureApiKey = isFixtureApiKey;
3107
3058
  exports.mapOllamaHttpError = mapOllamaHttpError;
3108
3059
  exports.mapOllamaTransportError = mapOllamaTransportError;
3109
- exports.mapOpenAICompatibleError = mapOpenAICompatibleError;
3110
3060
  exports.parseSseStream = parseSseStream;
3111
3061
  exports.readErrorResponseBody = readErrorResponseBody;
3112
3062
  exports.relayStream = relayStream;
@@ -3117,5 +3067,5 @@ exports.shouldAutoCompact = shouldAutoCompact;
3117
3067
  exports.shouldUseFixtureMode = shouldUseFixtureMode;
3118
3068
  exports.shouldUseRealLocalRuntime = shouldUseRealLocalRuntime;
3119
3069
  exports.tryFirstEvent = tryFirstEvent;
3120
- //# sourceMappingURL=chunk-G7X2Y7Y2.cjs.map
3121
- //# sourceMappingURL=chunk-G7X2Y7Y2.cjs.map
3070
+ //# sourceMappingURL=chunk-DAXEQELR.cjs.map
3071
+ //# sourceMappingURL=chunk-DAXEQELR.cjs.map