@theokit/sdk 0.0.0-compat-580-20260905204608

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 (1141) hide show
  1. package/CHANGELOG.md +7923 -0
  2. package/LICENSE +201 -0
  3. package/README.md +114 -0
  4. package/dist/a2a/agent-mailbox.d.cts +54 -0
  5. package/dist/a2a/agent-mailbox.d.ts +54 -0
  6. package/dist/a2a/index.cjs +138 -0
  7. package/dist/a2a/index.cjs.map +1 -0
  8. package/dist/a2a/index.d.cts +10 -0
  9. package/dist/a2a/index.d.ts +10 -0
  10. package/dist/a2a/index.js +125 -0
  11. package/dist/a2a/index.js.map +1 -0
  12. package/dist/a2a/message-bus.d.cts +118 -0
  13. package/dist/a2a/message-bus.d.ts +118 -0
  14. package/dist/a2a/subagent.d.cts +231 -0
  15. package/dist/a2a/subagent.d.ts +231 -0
  16. package/dist/a2a/types.d.cts +45 -0
  17. package/dist/a2a/types.d.ts +45 -0
  18. package/dist/agent-ARLOD4JX.cjs +67 -0
  19. package/dist/agent-ARLOD4JX.cjs.map +1 -0
  20. package/dist/agent-C3KO5LKm.d.cts +1871 -0
  21. package/dist/agent-CvmTR9uf.d.ts +1871 -0
  22. package/dist/agent-N6WJ54ML.js +58 -0
  23. package/dist/agent-N6WJ54ML.js.map +1 -0
  24. package/dist/agent-builder.d.ts +72 -0
  25. package/dist/agent-factory-registry-UU46BUMU.cjs +16 -0
  26. package/dist/agent-factory-registry-UU46BUMU.cjs.map +1 -0
  27. package/dist/agent-factory-registry-ZVTABLEY.js +3 -0
  28. package/dist/agent-factory-registry-ZVTABLEY.js.map +1 -0
  29. package/dist/agent-factory.d.ts +24 -0
  30. package/dist/agent-generate.d.ts +12 -0
  31. package/dist/agent-session-store-AFML3AXC.js +6 -0
  32. package/dist/agent-session-store-AFML3AXC.js.map +1 -0
  33. package/dist/agent-session-store-MTSIY3MH.cjs +23 -0
  34. package/dist/agent-session-store-MTSIY3MH.cjs.map +1 -0
  35. package/dist/agent.d.ts +276 -0
  36. package/dist/auth/index.cjs +306 -0
  37. package/dist/auth/index.cjs.map +1 -0
  38. package/dist/auth/index.d.cts +34 -0
  39. package/dist/auth/index.d.ts +34 -0
  40. package/dist/auth/index.js +247 -0
  41. package/dist/auth/index.js.map +1 -0
  42. package/dist/batch-I6T6MXZO.cjs +263 -0
  43. package/dist/batch-I6T6MXZO.cjs.map +1 -0
  44. package/dist/batch-US4F6WPK.js +260 -0
  45. package/dist/batch-US4F6WPK.js.map +1 -0
  46. package/dist/chunk-24MGQDK3.js +31 -0
  47. package/dist/chunk-24MGQDK3.js.map +1 -0
  48. package/dist/chunk-24SYBZPL.cjs +121 -0
  49. package/dist/chunk-24SYBZPL.cjs.map +1 -0
  50. package/dist/chunk-2HPNT6HH.cjs +3373 -0
  51. package/dist/chunk-2HPNT6HH.cjs.map +1 -0
  52. package/dist/chunk-2SFBB54R.js +23 -0
  53. package/dist/chunk-2SFBB54R.js.map +1 -0
  54. package/dist/chunk-2WXHA33T.js +105 -0
  55. package/dist/chunk-2WXHA33T.js.map +1 -0
  56. package/dist/chunk-2XC6KDJM.js +22 -0
  57. package/dist/chunk-2XC6KDJM.js.map +1 -0
  58. package/dist/chunk-2XRAWOZZ.js +172 -0
  59. package/dist/chunk-2XRAWOZZ.js.map +1 -0
  60. package/dist/chunk-2ZPEDVLM.cjs +59 -0
  61. package/dist/chunk-2ZPEDVLM.cjs.map +1 -0
  62. package/dist/chunk-3EE6LVWT.cjs +29 -0
  63. package/dist/chunk-3EE6LVWT.cjs.map +1 -0
  64. package/dist/chunk-3JHIFQ4I.js +102 -0
  65. package/dist/chunk-3JHIFQ4I.js.map +1 -0
  66. package/dist/chunk-44I6UYVH.js +133 -0
  67. package/dist/chunk-44I6UYVH.js.map +1 -0
  68. package/dist/chunk-47TF32NQ.js +79 -0
  69. package/dist/chunk-47TF32NQ.js.map +1 -0
  70. package/dist/chunk-4A3SKJ53.cjs +297 -0
  71. package/dist/chunk-4A3SKJ53.cjs.map +1 -0
  72. package/dist/chunk-4HS6FFGL.cjs +433 -0
  73. package/dist/chunk-4HS6FFGL.cjs.map +1 -0
  74. package/dist/chunk-4MMWFSCD.js +25 -0
  75. package/dist/chunk-4MMWFSCD.js.map +1 -0
  76. package/dist/chunk-4NLCWGH7.cjs +177 -0
  77. package/dist/chunk-4NLCWGH7.cjs.map +1 -0
  78. package/dist/chunk-55GB6JYQ.js +208 -0
  79. package/dist/chunk-55GB6JYQ.js.map +1 -0
  80. package/dist/chunk-5WKQDIGO.js +136 -0
  81. package/dist/chunk-5WKQDIGO.js.map +1 -0
  82. package/dist/chunk-67SBTGMA.cjs +457 -0
  83. package/dist/chunk-67SBTGMA.cjs.map +1 -0
  84. package/dist/chunk-6LHQPOMI.cjs +193 -0
  85. package/dist/chunk-6LHQPOMI.cjs.map +1 -0
  86. package/dist/chunk-6M2OIS4Y.js +158 -0
  87. package/dist/chunk-6M2OIS4Y.js.map +1 -0
  88. package/dist/chunk-6PWOWXMC.js +121 -0
  89. package/dist/chunk-6PWOWXMC.js.map +1 -0
  90. package/dist/chunk-6X6ID4MO.js +20 -0
  91. package/dist/chunk-6X6ID4MO.js.map +1 -0
  92. package/dist/chunk-7A6535RA.cjs +231 -0
  93. package/dist/chunk-7A6535RA.cjs.map +1 -0
  94. package/dist/chunk-7FDKWDA2.cjs +135 -0
  95. package/dist/chunk-7FDKWDA2.cjs.map +1 -0
  96. package/dist/chunk-7I5Z3UBJ.js +10 -0
  97. package/dist/chunk-7I5Z3UBJ.js.map +1 -0
  98. package/dist/chunk-7JJ3A6AT.cjs +88 -0
  99. package/dist/chunk-7JJ3A6AT.cjs.map +1 -0
  100. package/dist/chunk-7SZAV6QG.js +593 -0
  101. package/dist/chunk-7SZAV6QG.js.map +1 -0
  102. package/dist/chunk-A4RAL2ER.cjs +51 -0
  103. package/dist/chunk-A4RAL2ER.cjs.map +1 -0
  104. package/dist/chunk-AA27GEYS.cjs +12 -0
  105. package/dist/chunk-AA27GEYS.cjs.map +1 -0
  106. package/dist/chunk-AAEZSPTC.js +133 -0
  107. package/dist/chunk-AAEZSPTC.js.map +1 -0
  108. package/dist/chunk-AGACYRJ2.js +11 -0
  109. package/dist/chunk-AGACYRJ2.js.map +1 -0
  110. package/dist/chunk-ALUN2B4W.js +356 -0
  111. package/dist/chunk-ALUN2B4W.js.map +1 -0
  112. package/dist/chunk-ANMJJD6D.cjs +18 -0
  113. package/dist/chunk-ANMJJD6D.cjs.map +1 -0
  114. package/dist/chunk-ATT276RD.cjs +173 -0
  115. package/dist/chunk-ATT276RD.cjs.map +1 -0
  116. package/dist/chunk-AW6F6HZR.js +166 -0
  117. package/dist/chunk-AW6F6HZR.js.map +1 -0
  118. package/dist/chunk-AWINL3ZC.js +109 -0
  119. package/dist/chunk-AWINL3ZC.js.map +1 -0
  120. package/dist/chunk-BJUJT5ED.cjs +186 -0
  121. package/dist/chunk-BJUJT5ED.cjs.map +1 -0
  122. package/dist/chunk-BUUUWQMB.cjs +34 -0
  123. package/dist/chunk-BUUUWQMB.cjs.map +1 -0
  124. package/dist/chunk-BV2MWEMV.cjs +26 -0
  125. package/dist/chunk-BV2MWEMV.cjs.map +1 -0
  126. package/dist/chunk-CFE6QF2Q.js +221 -0
  127. package/dist/chunk-CFE6QF2Q.js.map +1 -0
  128. package/dist/chunk-CZJ6Q7CW.js +183 -0
  129. package/dist/chunk-CZJ6Q7CW.js.map +1 -0
  130. package/dist/chunk-D3CCY3A2.cjs +10995 -0
  131. package/dist/chunk-D3CCY3A2.cjs.map +1 -0
  132. package/dist/chunk-D6POWE7E.cjs +210 -0
  133. package/dist/chunk-D6POWE7E.cjs.map +1 -0
  134. package/dist/chunk-DMRT67Y6.js +100 -0
  135. package/dist/chunk-DMRT67Y6.js.map +1 -0
  136. package/dist/chunk-DQZU7JK6.cjs +125 -0
  137. package/dist/chunk-DQZU7JK6.cjs.map +1 -0
  138. package/dist/chunk-EFMFILPG.js +77 -0
  139. package/dist/chunk-EFMFILPG.js.map +1 -0
  140. package/dist/chunk-EH6XD3FY.js +222 -0
  141. package/dist/chunk-EH6XD3FY.js.map +1 -0
  142. package/dist/chunk-EIQFAOFD.js +229 -0
  143. package/dist/chunk-EIQFAOFD.js.map +1 -0
  144. package/dist/chunk-EPSICJLZ.js +79 -0
  145. package/dist/chunk-EPSICJLZ.js.map +1 -0
  146. package/dist/chunk-EXTRW7GW.cjs +155 -0
  147. package/dist/chunk-EXTRW7GW.cjs.map +1 -0
  148. package/dist/chunk-FD2UT76F.js +3 -0
  149. package/dist/chunk-FD2UT76F.js.map +1 -0
  150. package/dist/chunk-FJWQP6EE.js +122 -0
  151. package/dist/chunk-FJWQP6EE.js.map +1 -0
  152. package/dist/chunk-FRITRLZQ.cjs +24 -0
  153. package/dist/chunk-FRITRLZQ.cjs.map +1 -0
  154. package/dist/chunk-FUSDYC2B.cjs +280 -0
  155. package/dist/chunk-FUSDYC2B.cjs.map +1 -0
  156. package/dist/chunk-G7BLGBRN.js +43 -0
  157. package/dist/chunk-G7BLGBRN.js.map +1 -0
  158. package/dist/chunk-GBCVPKHE.js +282 -0
  159. package/dist/chunk-GBCVPKHE.js.map +1 -0
  160. package/dist/chunk-GHX4P3V2.cjs +34 -0
  161. package/dist/chunk-GHX4P3V2.cjs.map +1 -0
  162. package/dist/chunk-GZV6AVRL.cjs +282 -0
  163. package/dist/chunk-GZV6AVRL.cjs.map +1 -0
  164. package/dist/chunk-H73MEMQB.js +31 -0
  165. package/dist/chunk-H73MEMQB.js.map +1 -0
  166. package/dist/chunk-HCT4HPCL.cjs +235 -0
  167. package/dist/chunk-HCT4HPCL.cjs.map +1 -0
  168. package/dist/chunk-HFEJE7AC.js +424 -0
  169. package/dist/chunk-HFEJE7AC.js.map +1 -0
  170. package/dist/chunk-HKCKOAIO.js +57 -0
  171. package/dist/chunk-HKCKOAIO.js.map +1 -0
  172. package/dist/chunk-HUFSABUZ.cjs +48 -0
  173. package/dist/chunk-HUFSABUZ.cjs.map +1 -0
  174. package/dist/chunk-HW7SEELD.cjs +46 -0
  175. package/dist/chunk-HW7SEELD.cjs.map +1 -0
  176. package/dist/chunk-HY66GLM6.js +13 -0
  177. package/dist/chunk-HY66GLM6.js.map +1 -0
  178. package/dist/chunk-I2PWY7VM.cjs +27 -0
  179. package/dist/chunk-I2PWY7VM.cjs.map +1 -0
  180. package/dist/chunk-IJ7M6GOG.cjs +28 -0
  181. package/dist/chunk-IJ7M6GOG.cjs.map +1 -0
  182. package/dist/chunk-IU5N5224.cjs +288 -0
  183. package/dist/chunk-IU5N5224.cjs.map +1 -0
  184. package/dist/chunk-IUMAQURF.js +130 -0
  185. package/dist/chunk-IUMAQURF.js.map +1 -0
  186. package/dist/chunk-J7J7J2GN.cjs +377 -0
  187. package/dist/chunk-J7J7J2GN.cjs.map +1 -0
  188. package/dist/chunk-JLRLCBJ4.cjs +108 -0
  189. package/dist/chunk-JLRLCBJ4.cjs.map +1 -0
  190. package/dist/chunk-JMDDYA22.js +171 -0
  191. package/dist/chunk-JMDDYA22.js.map +1 -0
  192. package/dist/chunk-JNAA4G4H.js +43 -0
  193. package/dist/chunk-JNAA4G4H.js.map +1 -0
  194. package/dist/chunk-JOFVLOFY.js +268 -0
  195. package/dist/chunk-JOFVLOFY.js.map +1 -0
  196. package/dist/chunk-K2BQQ445.js +30 -0
  197. package/dist/chunk-K2BQQ445.js.map +1 -0
  198. package/dist/chunk-K2VMFZQ5.js +487 -0
  199. package/dist/chunk-K2VMFZQ5.js.map +1 -0
  200. package/dist/chunk-K3NH62DG.js +3343 -0
  201. package/dist/chunk-K3NH62DG.js.map +1 -0
  202. package/dist/chunk-KGANQYP7.cjs +172 -0
  203. package/dist/chunk-KGANQYP7.cjs.map +1 -0
  204. package/dist/chunk-KRD3GQAA.cjs +71 -0
  205. package/dist/chunk-KRD3GQAA.cjs.map +1 -0
  206. package/dist/chunk-KTTHHYEW.cjs +45 -0
  207. package/dist/chunk-KTTHHYEW.cjs.map +1 -0
  208. package/dist/chunk-KVNWIAO4.js +68 -0
  209. package/dist/chunk-KVNWIAO4.js.map +1 -0
  210. package/dist/chunk-KVSAY6NZ.cjs +497 -0
  211. package/dist/chunk-KVSAY6NZ.cjs.map +1 -0
  212. package/dist/chunk-LOHMT36V.cjs +178 -0
  213. package/dist/chunk-LOHMT36V.cjs.map +1 -0
  214. package/dist/chunk-LX7SEXOQ.js +152 -0
  215. package/dist/chunk-LX7SEXOQ.js.map +1 -0
  216. package/dist/chunk-MUUQ2WFJ.cjs +4 -0
  217. package/dist/chunk-MUUQ2WFJ.cjs.map +1 -0
  218. package/dist/chunk-N6OOOYFZ.js +281 -0
  219. package/dist/chunk-N6OOOYFZ.js.map +1 -0
  220. package/dist/chunk-NAF4L3T6.js +22 -0
  221. package/dist/chunk-NAF4L3T6.js.map +1 -0
  222. package/dist/chunk-NINIJCHU.cjs +23 -0
  223. package/dist/chunk-NINIJCHU.cjs.map +1 -0
  224. package/dist/chunk-NJWYQWDL.js +43 -0
  225. package/dist/chunk-NJWYQWDL.js.map +1 -0
  226. package/dist/chunk-NQTD6QOW.cjs +226 -0
  227. package/dist/chunk-NQTD6QOW.cjs.map +1 -0
  228. package/dist/chunk-NQTNSHSB.cjs +843 -0
  229. package/dist/chunk-NQTNSHSB.cjs.map +1 -0
  230. package/dist/chunk-NVXXWAU7.cjs +13 -0
  231. package/dist/chunk-NVXXWAU7.cjs.map +1 -0
  232. package/dist/chunk-NYQ3IS7K.cjs +130 -0
  233. package/dist/chunk-NYQ3IS7K.cjs.map +1 -0
  234. package/dist/chunk-O6USDERH.js +165 -0
  235. package/dist/chunk-O6USDERH.js.map +1 -0
  236. package/dist/chunk-OBA6YK2R.cjs +8 -0
  237. package/dist/chunk-OBA6YK2R.cjs.map +1 -0
  238. package/dist/chunk-OQRGVTQF.js +169 -0
  239. package/dist/chunk-OQRGVTQF.js.map +1 -0
  240. package/dist/chunk-OR6XIWLB.js +19 -0
  241. package/dist/chunk-OR6XIWLB.js.map +1 -0
  242. package/dist/chunk-OYD3U3LY.js +10981 -0
  243. package/dist/chunk-OYD3U3LY.js.map +1 -0
  244. package/dist/chunk-PRZ3BES7.cjs +79 -0
  245. package/dist/chunk-PRZ3BES7.cjs.map +1 -0
  246. package/dist/chunk-PY2RQOA7.js +6 -0
  247. package/dist/chunk-PY2RQOA7.js.map +1 -0
  248. package/dist/chunk-Q5EWJPRY.js +18 -0
  249. package/dist/chunk-Q5EWJPRY.js.map +1 -0
  250. package/dist/chunk-QATRS7JD.cjs +158 -0
  251. package/dist/chunk-QATRS7JD.cjs.map +1 -0
  252. package/dist/chunk-QC55H6RJ.cjs +601 -0
  253. package/dist/chunk-QC55H6RJ.cjs.map +1 -0
  254. package/dist/chunk-QDM3OHUT.cjs +134 -0
  255. package/dist/chunk-QDM3OHUT.cjs.map +1 -0
  256. package/dist/chunk-QKLOP4VC.cjs +90 -0
  257. package/dist/chunk-QKLOP4VC.cjs.map +1 -0
  258. package/dist/chunk-QOGNZMHD.cjs +34 -0
  259. package/dist/chunk-QOGNZMHD.cjs.map +1 -0
  260. package/dist/chunk-QWD3CZWE.cjs +108 -0
  261. package/dist/chunk-QWD3CZWE.cjs.map +1 -0
  262. package/dist/chunk-QWD4RDZ3.cjs +136 -0
  263. package/dist/chunk-QWD4RDZ3.cjs.map +1 -0
  264. package/dist/chunk-QYLZQ43D.cjs +172 -0
  265. package/dist/chunk-QYLZQ43D.cjs.map +1 -0
  266. package/dist/chunk-R7WIIPUR.js +27 -0
  267. package/dist/chunk-R7WIIPUR.js.map +1 -0
  268. package/dist/chunk-RQMCOFAI.cjs +85 -0
  269. package/dist/chunk-RQMCOFAI.cjs.map +1 -0
  270. package/dist/chunk-SA6K24NB.cjs +25 -0
  271. package/dist/chunk-SA6K24NB.cjs.map +1 -0
  272. package/dist/chunk-SADXXGWU.js +809 -0
  273. package/dist/chunk-SADXXGWU.js.map +1 -0
  274. package/dist/chunk-SAGRF4IB.js +25 -0
  275. package/dist/chunk-SAGRF4IB.js.map +1 -0
  276. package/dist/chunk-SVQIW5RJ.js +81 -0
  277. package/dist/chunk-SVQIW5RJ.js.map +1 -0
  278. package/dist/chunk-TA3K7SBK.js +180 -0
  279. package/dist/chunk-TA3K7SBK.js.map +1 -0
  280. package/dist/chunk-TFG5IBZS.cjs +139 -0
  281. package/dist/chunk-TFG5IBZS.cjs.map +1 -0
  282. package/dist/chunk-TMKTSYDS.cjs +21 -0
  283. package/dist/chunk-TMKTSYDS.cjs.map +1 -0
  284. package/dist/chunk-UADQJBHR.cjs +172 -0
  285. package/dist/chunk-UADQJBHR.cjs.map +1 -0
  286. package/dist/chunk-UBR5PWD7.js +275 -0
  287. package/dist/chunk-UBR5PWD7.js.map +1 -0
  288. package/dist/chunk-UKMBRMGT.js +22 -0
  289. package/dist/chunk-UKMBRMGT.js.map +1 -0
  290. package/dist/chunk-V22DZIXO.js +147 -0
  291. package/dist/chunk-V22DZIXO.js.map +1 -0
  292. package/dist/chunk-VE6DFSKU.js +107 -0
  293. package/dist/chunk-VE6DFSKU.js.map +1 -0
  294. package/dist/chunk-VPK6PHIE.cjs +211 -0
  295. package/dist/chunk-VPK6PHIE.cjs.map +1 -0
  296. package/dist/chunk-VTYY7XL5.cjs +15 -0
  297. package/dist/chunk-VTYY7XL5.cjs.map +1 -0
  298. package/dist/chunk-VWUXIVEI.js +583 -0
  299. package/dist/chunk-VWUXIVEI.js.map +1 -0
  300. package/dist/chunk-WE22OXQA.js +48 -0
  301. package/dist/chunk-WE22OXQA.js.map +1 -0
  302. package/dist/chunk-WMWEI3NS.js +120 -0
  303. package/dist/chunk-WMWEI3NS.js.map +1 -0
  304. package/dist/chunk-WS5ULCL4.js +204 -0
  305. package/dist/chunk-WS5ULCL4.js.map +1 -0
  306. package/dist/chunk-XB4GI5RZ.js +115 -0
  307. package/dist/chunk-XB4GI5RZ.js.map +1 -0
  308. package/dist/chunk-XU6MLSC6.js +455 -0
  309. package/dist/chunk-XU6MLSC6.js.map +1 -0
  310. package/dist/chunk-XYFGKVZ7.js +15 -0
  311. package/dist/chunk-XYFGKVZ7.js.map +1 -0
  312. package/dist/chunk-Y2KYR2ED.cjs +118 -0
  313. package/dist/chunk-Y2KYR2ED.cjs.map +1 -0
  314. package/dist/chunk-YIFFF23U.cjs +109 -0
  315. package/dist/chunk-YIFFF23U.cjs.map +1 -0
  316. package/dist/chunk-YJNYDJ2T.cjs +27 -0
  317. package/dist/chunk-YJNYDJ2T.cjs.map +1 -0
  318. package/dist/chunk-YSTXFWQE.cjs +127 -0
  319. package/dist/chunk-YSTXFWQE.cjs.map +1 -0
  320. package/dist/chunk-Z2JFX372.cjs +595 -0
  321. package/dist/chunk-Z2JFX372.cjs.map +1 -0
  322. package/dist/chunk-Z3NTRKIC.cjs +111 -0
  323. package/dist/chunk-Z3NTRKIC.cjs.map +1 -0
  324. package/dist/chunk-ZF2LDKQQ.cjs +20 -0
  325. package/dist/chunk-ZF2LDKQQ.cjs.map +1 -0
  326. package/dist/client/index.cjs +73 -0
  327. package/dist/client/index.cjs.map +1 -0
  328. package/dist/client/index.d.cts +12 -0
  329. package/dist/client/index.d.ts +12 -0
  330. package/dist/client/index.js +71 -0
  331. package/dist/client/index.js.map +1 -0
  332. package/dist/client/theokit-client.d.cts +60 -0
  333. package/dist/client/theokit-client.d.ts +60 -0
  334. package/dist/client/types.d.cts +51 -0
  335. package/dist/client/types.d.ts +51 -0
  336. package/dist/compact-session-BHTPCIHA.cjs +61 -0
  337. package/dist/compact-session-BHTPCIHA.cjs.map +1 -0
  338. package/dist/compact-session-W4WLJTHA.js +24 -0
  339. package/dist/compact-session-W4WLJTHA.js.map +1 -0
  340. package/dist/compaction.cjs +66 -0
  341. package/dist/compaction.cjs.map +1 -0
  342. package/dist/compaction.d.cts +240 -0
  343. package/dist/compaction.d.ts +240 -0
  344. package/dist/compaction.js +5 -0
  345. package/dist/compaction.js.map +1 -0
  346. package/dist/concurrency.cjs +23 -0
  347. package/dist/concurrency.cjs.map +1 -0
  348. package/dist/concurrency.d.cts +22 -0
  349. package/dist/concurrency.d.ts +22 -0
  350. package/dist/concurrency.js +17 -0
  351. package/dist/concurrency.js.map +1 -0
  352. package/dist/context/index.cjs +37 -0
  353. package/dist/context/index.cjs.map +1 -0
  354. package/dist/context/index.d.cts +78 -0
  355. package/dist/context/index.d.ts +78 -0
  356. package/dist/context/index.js +20 -0
  357. package/dist/context/index.js.map +1 -0
  358. package/dist/context-4QOEWRDF.cjs +23 -0
  359. package/dist/context-4QOEWRDF.cjs.map +1 -0
  360. package/dist/context-Z3CFTT3H.js +6 -0
  361. package/dist/context-Z3CFTT3H.js.map +1 -0
  362. package/dist/create-skill.d.ts +40 -0
  363. package/dist/cron-C3PhZED0.d.cts +246 -0
  364. package/dist/cron-crfMMdAw.d.ts +246 -0
  365. package/dist/cron.cjs +68 -0
  366. package/dist/cron.cjs.map +1 -0
  367. package/dist/cron.d.cts +7 -0
  368. package/dist/cron.d.ts +7 -0
  369. package/dist/cron.js +59 -0
  370. package/dist/cron.js.map +1 -0
  371. package/dist/define-tool.d.ts +86 -0
  372. package/dist/errors-CLOAyuiv.d.ts +569 -0
  373. package/dist/errors-DrDEgyz1.d.cts +569 -0
  374. package/dist/errors-base-B5g01neU.d.cts +75 -0
  375. package/dist/errors-base-B5g01neU.d.ts +75 -0
  376. package/dist/errors-base.d.ts +73 -0
  377. package/dist/errors.cjs +89 -0
  378. package/dist/errors.cjs.map +1 -0
  379. package/dist/errors.d.cts +4 -0
  380. package/dist/errors.d.ts +4 -0
  381. package/dist/errors.js +4 -0
  382. package/dist/errors.js.map +1 -0
  383. package/dist/eval.cjs +1056 -0
  384. package/dist/eval.cjs.map +1 -0
  385. package/dist/eval.d.cts +77 -0
  386. package/dist/eval.d.ts +77 -0
  387. package/dist/eval.js +1042 -0
  388. package/dist/eval.js.map +1 -0
  389. package/dist/event-bus.d.ts +42 -0
  390. package/dist/executor-XQAOQOHD.cjs +993 -0
  391. package/dist/executor-XQAOQOHD.cjs.map +1 -0
  392. package/dist/executor-ZNDQDX6Q.js +989 -0
  393. package/dist/executor-ZNDQDX6Q.js.map +1 -0
  394. package/dist/filesystem/index.cjs +204 -0
  395. package/dist/filesystem/index.cjs.map +1 -0
  396. package/dist/filesystem/index.d.cts +12 -0
  397. package/dist/filesystem/index.d.ts +12 -0
  398. package/dist/filesystem/index.js +195 -0
  399. package/dist/filesystem/index.js.map +1 -0
  400. package/dist/filesystem/local-filesystem.d.cts +54 -0
  401. package/dist/filesystem/local-filesystem.d.ts +54 -0
  402. package/dist/filesystem/types.d.cts +136 -0
  403. package/dist/filesystem/types.d.ts +136 -0
  404. package/dist/fork-agent-S2EPIML7.js +61 -0
  405. package/dist/fork-agent-S2EPIML7.js.map +1 -0
  406. package/dist/fork-agent-WAEQI2DL.cjs +64 -0
  407. package/dist/fork-agent-WAEQI2DL.cjs.map +1 -0
  408. package/dist/fs-session-store-77JU46UZ.js +10 -0
  409. package/dist/fs-session-store-77JU46UZ.js.map +1 -0
  410. package/dist/fs-session-store-E4U3P56L.cjs +19 -0
  411. package/dist/fs-session-store-E4U3P56L.cjs.map +1 -0
  412. package/dist/generate-object-BXV7BZRP.js +7 -0
  413. package/dist/generate-object-BXV7BZRP.js.map +1 -0
  414. package/dist/generate-object-YBI2TDJ3.cjs +20 -0
  415. package/dist/generate-object-YBI2TDJ3.cjs.map +1 -0
  416. package/dist/generate-object.d.ts +111 -0
  417. package/dist/index-manager-3UNPYH34.cjs +26 -0
  418. package/dist/index-manager-3UNPYH34.cjs.map +1 -0
  419. package/dist/index-manager-W7FDMGEG.js +17 -0
  420. package/dist/index-manager-W7FDMGEG.js.map +1 -0
  421. package/dist/index.cjs +2487 -0
  422. package/dist/index.cjs.map +1 -0
  423. package/dist/index.d.cts +4166 -0
  424. package/dist/index.d.ts +4166 -0
  425. package/dist/index.js +2289 -0
  426. package/dist/index.js.map +1 -0
  427. package/dist/inject-session-SUM6TDJF.js +27 -0
  428. package/dist/inject-session-SUM6TDJF.js.map +1 -0
  429. package/dist/inject-session-W6A46J3E.cjs +29 -0
  430. package/dist/inject-session-W6A46J3E.cjs.map +1 -0
  431. package/dist/interactive/index.cjs +35 -0
  432. package/dist/interactive/index.cjs.map +1 -0
  433. package/dist/interactive/index.d.cts +12 -0
  434. package/dist/interactive/index.d.ts +12 -0
  435. package/dist/interactive/index.js +30 -0
  436. package/dist/interactive/index.js.map +1 -0
  437. package/dist/interactive/types.d.cts +95 -0
  438. package/dist/interactive/types.d.ts +95 -0
  439. package/dist/internal/agent/batch.d.ts +11 -0
  440. package/dist/internal/agent/helpers.d.ts +1 -0
  441. package/dist/internal/agent-loop/budget-gate.d.ts +1 -0
  442. package/dist/internal/agent-loop/doom-loop-tracker.d.ts +22 -0
  443. package/dist/internal/agent-loop/live-events.d.ts +46 -0
  444. package/dist/internal/agent-loop/loop-context-init.d.ts +2 -0
  445. package/dist/internal/agent-loop/loop-finalize.d.ts +25 -0
  446. package/dist/internal/agent-loop/loop-llm-stream.d.ts +1 -0
  447. package/dist/internal/agent-loop/loop-thinking-steps.d.ts +28 -0
  448. package/dist/internal/agent-loop/loop.d.ts +7 -0
  449. package/dist/internal/agent-loop/message-builders.d.ts +21 -0
  450. package/dist/internal/agent-loop/replay-messages.d.ts +41 -0
  451. package/dist/internal/agent-loop/tool-dispatch.d.ts +27 -0
  452. package/dist/internal/agent-loop/tool-executors.d.ts +1 -0
  453. package/dist/internal/agent-loop/tool-result-guard.d.ts +20 -0
  454. package/dist/internal/agent-loop/tool-timeout.d.ts +23 -0
  455. package/dist/internal/agent-loop/types.d.ts +43 -0
  456. package/dist/internal/agent-loop/usage-and-cost.d.ts +25 -0
  457. package/dist/internal/auth/api-key-prefix.d.ts +23 -0
  458. package/dist/internal/auth/api-key-validator.d.ts +46 -0
  459. package/dist/internal/auth/credential-availability.d.ts +61 -0
  460. package/dist/internal/auth/credential-store.d.ts +77 -0
  461. package/dist/internal/auth/oauth-device.d.ts +54 -0
  462. package/dist/internal/auth/oauth-engine.d.ts +21 -0
  463. package/dist/internal/auth/resolve-credential.d.ts +56 -0
  464. package/dist/internal/auth/types.d.ts +175 -0
  465. package/dist/internal/base-url.d.ts +14 -0
  466. package/dist/internal/budget/compute-cost.d.ts +28 -0
  467. package/dist/internal/budget/pricing-registry.d.ts +36 -0
  468. package/dist/internal/budget/tracker/budget-tracker.d.ts +11 -0
  469. package/dist/internal/budget/tracker/budget.d.ts +34 -0
  470. package/dist/internal/budget/usage-accumulator.d.ts +46 -0
  471. package/dist/internal/cloud-agent/cloud-agent.d.ts +1 -0
  472. package/dist/internal/cloud-agent/cloud-config-serializer.d.ts +3 -0
  473. package/dist/internal/cloud-agent/cloud-run.d.ts +1 -0
  474. package/dist/internal/cloud-agent/cloud-tool-parity.d.ts +1 -0
  475. package/dist/internal/cloud-agent/index.d.ts +7 -0
  476. package/dist/internal/cloud-agent/real-cloud-run.d.ts +2 -0
  477. package/dist/internal/cloud-agent/types.d.ts +56 -0
  478. package/dist/internal/concurrency/abort-utils.d.ts +21 -0
  479. package/dist/internal/concurrency/async-local-storage.d.ts +20 -0
  480. package/dist/internal/concurrency/async-semaphore.d.ts +24 -0
  481. package/dist/internal/concurrency/delegation-depth.d.ts +27 -0
  482. package/dist/internal/concurrency/map-with-concurrency.d.ts +28 -0
  483. package/dist/internal/concurrency/subagent-credentials.d.ts +112 -0
  484. package/dist/internal/diagnostics.d.ts +69 -0
  485. package/dist/internal/emit-run-event.d.ts +16 -0
  486. package/dist/internal/env.d.ts +1 -0
  487. package/dist/internal/error-mappers/anthropic.d.ts +30 -0
  488. package/dist/internal/error-mappers/bedrock.d.ts +16 -0
  489. package/dist/internal/error-mappers/default-retriable.d.ts +1 -0
  490. package/dist/internal/error-mappers/ollama.d.ts +41 -0
  491. package/dist/internal/error-mappers/openai-compatible.d.ts +25 -0
  492. package/dist/internal/error-mappers/shared.d.ts +23 -0
  493. package/dist/internal/error-mappers/vertex.d.ts +15 -0
  494. package/dist/internal/eval/aggregate.d.ts +9 -0
  495. package/dist/internal/eval/assert.d.ts +27 -0
  496. package/dist/internal/eval/code-runner.d.ts +28 -0
  497. package/dist/internal/eval/dataset-iter.d.ts +9 -0
  498. package/dist/internal/eval/runner.d.ts +9 -0
  499. package/dist/internal/eval/single-flight.d.ts +17 -0
  500. package/dist/internal/eval/telemetry.d.ts +23 -0
  501. package/dist/internal/eval/trials.d.ts +19 -0
  502. package/dist/internal/global-singleton.d.ts +16 -0
  503. package/dist/internal/http.d.ts +1 -0
  504. package/dist/internal/ids.d.ts +1 -0
  505. package/dist/internal/judge/judge-call.d.ts +48 -0
  506. package/dist/internal/judge/parse-verdict.d.ts +11 -0
  507. package/dist/internal/llm/abort-error.d.ts +1 -0
  508. package/dist/internal/llm/anthropic-shared.d.ts +100 -0
  509. package/dist/internal/llm/anthropic.d.ts +9 -0
  510. package/dist/internal/llm/bedrock-anthropic.d.ts +36 -0
  511. package/dist/internal/llm/bedrock-token-cache.d.ts +18 -0
  512. package/dist/internal/llm/credential-pool-context.d.ts +11 -0
  513. package/dist/internal/llm/credential-pool-types.d.ts +22 -0
  514. package/dist/internal/llm/credential-pool.d.ts +18 -0
  515. package/dist/internal/llm/fallback-client.d.ts +1 -0
  516. package/dist/internal/llm/fault-injection.d.ts +50 -0
  517. package/dist/internal/llm/finish.d.ts +1 -0
  518. package/dist/internal/llm/hermes-tool-extract.d.ts +11 -0
  519. package/dist/internal/llm/model-capabilities.d.ts +40 -0
  520. package/dist/internal/llm/model-identifier.d.ts +58 -0
  521. package/dist/internal/llm/model-option.d.ts +38 -0
  522. package/dist/internal/llm/ollama-native.d.ts +27 -0
  523. package/dist/internal/llm/openai-messages.d.ts +2 -0
  524. package/dist/internal/llm/openai.d.ts +146 -0
  525. package/dist/internal/llm/pool-aware-client.d.ts +16 -0
  526. package/dist/internal/llm/prompt-cache-key.d.ts +1 -0
  527. package/dist/internal/llm/responses.d.ts +97 -0
  528. package/dist/internal/llm/retry.d.ts +22 -0
  529. package/dist/internal/llm/retrying-client.d.ts +53 -0
  530. package/dist/internal/llm/router.d.ts +40 -0
  531. package/dist/internal/llm/sse.d.ts +21 -0
  532. package/dist/internal/llm/stream-relay.d.ts +17 -0
  533. package/dist/internal/llm/tool-result-content.d.ts +40 -0
  534. package/dist/internal/llm/transport-error.d.ts +9 -0
  535. package/dist/internal/llm/types.d.ts +226 -0
  536. package/dist/internal/llm/vertex-anthropic.d.ts +40 -0
  537. package/dist/internal/llm/vertex-auth.d.ts +30 -0
  538. package/dist/internal/llm/vertex-gemini.d.ts +28 -0
  539. package/dist/internal/llm/vertex-router.d.ts +21 -0
  540. package/dist/internal/local-agent/index.d.ts +6 -0
  541. package/dist/internal/local-agent/local-agent-bootstrap.d.ts +37 -0
  542. package/dist/internal/local-agent/local-agent-capabilities.d.ts +38 -0
  543. package/dist/internal/local-agent/local-agent-dispatch.d.ts +57 -0
  544. package/dist/internal/local-agent/local-agent-invalidate.d.ts +1 -0
  545. package/dist/internal/local-agent/local-agent-lifecycle.d.ts +13 -0
  546. package/dist/internal/local-agent/local-agent-memory-direct.d.ts +12 -0
  547. package/dist/internal/local-agent/local-agent-memory-hooks.d.ts +41 -0
  548. package/dist/internal/local-agent/local-agent-memory-provider.d.ts +57 -0
  549. package/dist/internal/local-agent/local-agent-memory.d.ts +1 -0
  550. package/dist/internal/local-agent/local-agent-personality-extensions.d.ts +43 -0
  551. package/dist/internal/local-agent/local-agent-runtime-extensions.d.ts +13 -0
  552. package/dist/internal/local-agent/local-agent-send.d.ts +42 -0
  553. package/dist/internal/local-agent/local-agent-task-wrap.d.ts +11 -0
  554. package/dist/internal/local-agent/local-agent.d.ts +1 -0
  555. package/dist/internal/local-agent/local-option-keys.d.ts +2 -0
  556. package/dist/internal/local-agent/local-run.d.ts +1 -0
  557. package/dist/internal/local-agent/mcp-pool.d.ts +43 -0
  558. package/dist/internal/local-agent/real-local-run-mcp.d.ts +26 -0
  559. package/dist/internal/local-agent/real-local-run-options.d.ts +26 -0
  560. package/dist/internal/local-agent/real-local-run-provider.d.ts +13 -0
  561. package/dist/internal/local-agent/real-local-run-tools.d.ts +55 -0
  562. package/dist/internal/local-agent/real-local-run.d.ts +4 -0
  563. package/dist/internal/mcp/client.d.ts +16 -0
  564. package/dist/internal/mcp/handshake-timeout.d.ts +53 -0
  565. package/dist/internal/mcp/oauth.d.ts +19 -0
  566. package/dist/internal/mcp/token-storage.d.ts +52 -0
  567. package/dist/internal/memory/active-memory-cache.d.ts +10 -0
  568. package/dist/internal/memory/active-memory-types.d.ts +8 -0
  569. package/dist/internal/memory/active-memory.d.ts +56 -0
  570. package/dist/internal/memory/adapters/azure-openai-embedding.d.cts +2 -0
  571. package/dist/internal/memory/adapters/azure-openai-embedding.d.ts +2 -0
  572. package/dist/internal/memory/adapters/catalog.d.cts +1 -0
  573. package/dist/internal/memory/adapters/catalog.d.ts +1 -0
  574. package/dist/internal/memory/adapters/cohere-embedding.d.cts +2 -0
  575. package/dist/internal/memory/adapters/cohere-embedding.d.ts +2 -0
  576. package/dist/internal/memory/adapters/deepinfra-embedding.d.cts +2 -0
  577. package/dist/internal/memory/adapters/deepinfra-embedding.d.ts +2 -0
  578. package/dist/internal/memory/adapters/gemini-embedding.d.cts +2 -0
  579. package/dist/internal/memory/adapters/gemini-embedding.d.ts +2 -0
  580. package/dist/internal/memory/adapters/index.cjs +30 -0
  581. package/dist/internal/memory/adapters/index.cjs.map +1 -0
  582. package/dist/internal/memory/adapters/index.d.cts +18 -0
  583. package/dist/internal/memory/adapters/index.d.ts +18 -0
  584. package/dist/internal/memory/adapters/index.js +13 -0
  585. package/dist/internal/memory/adapters/index.js.map +1 -0
  586. package/dist/internal/memory/adapters/jina-embedding.d.cts +2 -0
  587. package/dist/internal/memory/adapters/jina-embedding.d.ts +2 -0
  588. package/dist/internal/memory/adapters/mistral-embedding.d.cts +2 -0
  589. package/dist/internal/memory/adapters/mistral-embedding.d.ts +2 -0
  590. package/dist/internal/memory/adapters/ollama-embedding.d.cts +34 -0
  591. package/dist/internal/memory/adapters/ollama-embedding.d.ts +34 -0
  592. package/dist/internal/memory/adapters/openai-compatible.d.cts +96 -0
  593. package/dist/internal/memory/adapters/openai-compatible.d.ts +96 -0
  594. package/dist/internal/memory/adapters/openai-embedding.d.cts +12 -0
  595. package/dist/internal/memory/adapters/openai-embedding.d.ts +12 -0
  596. package/dist/internal/memory/adapters/openrouter-embedding.d.cts +2 -0
  597. package/dist/internal/memory/adapters/openrouter-embedding.d.ts +2 -0
  598. package/dist/internal/memory/adapters/voyage-embedding.d.cts +2 -0
  599. package/dist/internal/memory/adapters/voyage-embedding.d.ts +2 -0
  600. package/dist/internal/memory/corpus-sync.d.ts +23 -0
  601. package/dist/internal/memory/dreaming/diary.d.ts +41 -0
  602. package/dist/internal/memory/dreaming/phases.d.ts +35 -0
  603. package/dist/internal/memory/dreaming/run.d.ts +10 -0
  604. package/dist/internal/memory/embedding-adapter.d.ts +42 -0
  605. package/dist/internal/memory/embedding-cache.d.ts +42 -0
  606. package/dist/internal/memory/escape-like-pattern.d.ts +22 -0
  607. package/dist/internal/memory/index-db.d.ts +67 -0
  608. package/dist/internal/memory/index-manager-contract.d.ts +48 -0
  609. package/dist/internal/memory/index-manager-dispatch.d.ts +23 -0
  610. package/dist/internal/memory/index-manager-helpers.d.ts +20 -0
  611. package/dist/internal/memory/index-manager.d.ts +44 -0
  612. package/dist/internal/memory/index-repository.d.ts +58 -0
  613. package/dist/internal/memory/index-schema.d.ts +21 -0
  614. package/dist/internal/memory/lance-index.d.ts +46 -0
  615. package/dist/internal/memory/lance-memory-adapter.d.ts +45 -0
  616. package/dist/internal/memory/memory-index.d.ts +67 -0
  617. package/dist/internal/memory/migrate-sqlite-to-lance.d.ts +58 -0
  618. package/dist/internal/memory/migration.d.ts +9 -0
  619. package/dist/internal/memory/sdk-memory-peer-loader.d.ts +74 -0
  620. package/dist/internal/memory/sqlite-vec-loader.d.ts +1 -0
  621. package/dist/internal/memory/storage/chunk-markdown.d.cts +2 -0
  622. package/dist/internal/memory/storage/chunk-markdown.d.ts +2 -0
  623. package/dist/internal/memory/storage/index.cjs +141 -0
  624. package/dist/internal/memory/storage/index.cjs.map +1 -0
  625. package/dist/internal/memory/storage/index.d.cts +28 -0
  626. package/dist/internal/memory/storage/index.d.ts +28 -0
  627. package/dist/internal/memory/storage/index.js +16 -0
  628. package/dist/internal/memory/storage/index.js.map +1 -0
  629. package/dist/internal/memory/storage/list-markdown.d.cts +1 -0
  630. package/dist/internal/memory/storage/list-markdown.d.ts +1 -0
  631. package/dist/internal/memory/storage/markdown-store.d.cts +48 -0
  632. package/dist/internal/memory/storage/markdown-store.d.ts +48 -0
  633. package/dist/internal/memory/storage/memory-file.d.cts +90 -0
  634. package/dist/internal/memory/storage/memory-file.d.ts +90 -0
  635. package/dist/internal/memory/storage/memory-root.d.cts +119 -0
  636. package/dist/internal/memory/storage/memory-root.d.ts +119 -0
  637. package/dist/internal/memory/storage/reader.d.cts +8 -0
  638. package/dist/internal/memory/storage/reader.d.ts +8 -0
  639. package/dist/internal/memory/storage/session-loader.d.cts +35 -0
  640. package/dist/internal/memory/storage/session-loader.d.ts +35 -0
  641. package/dist/internal/memory/storage/session-summary-writer.d.cts +50 -0
  642. package/dist/internal/memory/storage/session-summary-writer.d.ts +50 -0
  643. package/dist/internal/memory/storage/threat-scan.d.cts +62 -0
  644. package/dist/internal/memory/storage/threat-scan.d.ts +62 -0
  645. package/dist/internal/memory/storage/transcript-store.d.cts +38 -0
  646. package/dist/internal/memory/storage/transcript-store.d.ts +38 -0
  647. package/dist/internal/memory/storage/wiki-loader.d.cts +27 -0
  648. package/dist/internal/memory/storage/wiki-loader.d.ts +27 -0
  649. package/dist/internal/memory/tools.d.ts +21 -0
  650. package/dist/internal/memory/types.d.ts +78 -0
  651. package/dist/internal/memory/vec-index.d.ts +28 -0
  652. package/dist/internal/persistence/atomic-write.d.cts +107 -0
  653. package/dist/internal/persistence/atomic-write.d.ts +107 -0
  654. package/dist/internal/persistence/cwd-mutex.d.cts +35 -0
  655. package/dist/internal/persistence/cwd-mutex.d.ts +35 -0
  656. package/dist/internal/persistence/exclusive-create.d.cts +53 -0
  657. package/dist/internal/persistence/exclusive-create.d.ts +53 -0
  658. package/dist/internal/persistence/file-lock.d.cts +54 -0
  659. package/dist/internal/persistence/file-lock.d.ts +54 -0
  660. package/dist/internal/persistence/fs-session-store.d.cts +68 -0
  661. package/dist/internal/persistence/fs-session-store.d.ts +68 -0
  662. package/dist/internal/persistence/fts5-sanitize.d.cts +44 -0
  663. package/dist/internal/persistence/fts5-sanitize.d.ts +44 -0
  664. package/dist/internal/persistence/index.cjs +127 -0
  665. package/dist/internal/persistence/index.cjs.map +1 -0
  666. package/dist/internal/persistence/index.d.cts +33 -0
  667. package/dist/internal/persistence/index.d.ts +33 -0
  668. package/dist/internal/persistence/index.js +40 -0
  669. package/dist/internal/persistence/index.js.map +1 -0
  670. package/dist/internal/persistence/jsonl.d.cts +43 -0
  671. package/dist/internal/persistence/jsonl.d.ts +43 -0
  672. package/dist/internal/persistence/markdown-config-loader.d.cts +35 -0
  673. package/dist/internal/persistence/markdown-config-loader.d.ts +35 -0
  674. package/dist/internal/persistence/pagination.d.cts +21 -0
  675. package/dist/internal/persistence/pagination.d.ts +21 -0
  676. package/dist/internal/persistence/paths.d.cts +137 -0
  677. package/dist/internal/persistence/paths.d.ts +137 -0
  678. package/dist/internal/persistence/persistence-schema.d.cts +29 -0
  679. package/dist/internal/persistence/persistence-schema.d.ts +29 -0
  680. package/dist/internal/persistence/schema-version.d.cts +227 -0
  681. package/dist/internal/persistence/schema-version.d.ts +227 -0
  682. package/dist/internal/persistence/session-artifacts.d.cts +27 -0
  683. package/dist/internal/persistence/session-artifacts.d.ts +27 -0
  684. package/dist/internal/persistence/session-dir.d.cts +1 -0
  685. package/dist/internal/persistence/session-dir.d.ts +1 -0
  686. package/dist/internal/persistence/session-transcript.d.cts +128 -0
  687. package/dist/internal/persistence/session-transcript.d.ts +128 -0
  688. package/dist/internal/persistence/session-writer.d.cts +104 -0
  689. package/dist/internal/persistence/session-writer.d.ts +104 -0
  690. package/dist/internal/persistence/sqlite-cas.d.cts +61 -0
  691. package/dist/internal/persistence/sqlite-cas.d.ts +61 -0
  692. package/dist/internal/persistence/sqlite-open.d.cts +61 -0
  693. package/dist/internal/persistence/sqlite-open.d.ts +61 -0
  694. package/dist/internal/persistence/sqlite-wal.d.cts +54 -0
  695. package/dist/internal/persistence/sqlite-wal.d.ts +54 -0
  696. package/dist/internal/persistence/transcript-ops.d.cts +99 -0
  697. package/dist/internal/persistence/transcript-ops.d.ts +99 -0
  698. package/dist/internal/personality/context.d.ts +17 -0
  699. package/dist/internal/personality/registry.d.ts +17 -0
  700. package/dist/internal/personality/store.d.ts +27 -0
  701. package/dist/internal/personality/switch.d.ts +36 -0
  702. package/dist/internal/personality/types.d.ts +18 -0
  703. package/dist/internal/plugins/context.d.cts +21 -0
  704. package/dist/internal/plugins/context.d.ts +21 -0
  705. package/dist/internal/plugins/enabled-names.d.cts +1 -0
  706. package/dist/internal/plugins/enabled-names.d.ts +1 -0
  707. package/dist/internal/plugins/index.d.cts +9 -0
  708. package/dist/internal/plugins/index.d.ts +9 -0
  709. package/dist/internal/plugins/lifecycle.d.cts +15 -0
  710. package/dist/internal/plugins/lifecycle.d.ts +15 -0
  711. package/dist/internal/plugins/manager.d.cts +57 -0
  712. package/dist/internal/plugins/manager.d.ts +57 -0
  713. package/dist/internal/plugins/plugin-guards.d.cts +13 -0
  714. package/dist/internal/plugins/plugin-guards.d.ts +13 -0
  715. package/dist/internal/plugins/types.d.cts +26 -0
  716. package/dist/internal/plugins/types.d.ts +26 -0
  717. package/dist/internal/providers/builtin/anthropic.d.ts +2 -0
  718. package/dist/internal/providers/builtin/bedrock.d.ts +25 -0
  719. package/dist/internal/providers/builtin/cerebras.d.ts +5 -0
  720. package/dist/internal/providers/builtin/cohere.d.ts +8 -0
  721. package/dist/internal/providers/builtin/deepinfra.d.ts +2 -0
  722. package/dist/internal/providers/builtin/gemini.d.ts +10 -0
  723. package/dist/internal/providers/builtin/google.d.ts +6 -0
  724. package/dist/internal/providers/builtin/groq.d.ts +2 -0
  725. package/dist/internal/providers/builtin/index.d.ts +20 -0
  726. package/dist/internal/providers/builtin/llamacpp.d.ts +1 -0
  727. package/dist/internal/providers/builtin/lmstudio.d.ts +1 -0
  728. package/dist/internal/providers/builtin/mistral.d.ts +2 -0
  729. package/dist/internal/providers/builtin/ollama.d.ts +17 -0
  730. package/dist/internal/providers/builtin/openai-chatgpt.d.ts +14 -0
  731. package/dist/internal/providers/builtin/openai-compatible.d.ts +1 -0
  732. package/dist/internal/providers/builtin/openai.d.ts +2 -0
  733. package/dist/internal/providers/builtin/openrouter.d.ts +2 -0
  734. package/dist/internal/providers/builtin/perplexity.d.ts +5 -0
  735. package/dist/internal/providers/builtin/together.d.ts +2 -0
  736. package/dist/internal/providers/builtin/vertex.d.ts +27 -0
  737. package/dist/internal/providers/builtin/xai.d.ts +2 -0
  738. package/dist/internal/providers/catalog-loader.d.ts +55 -0
  739. package/dist/internal/providers/catalog-schema.d.ts +202 -0
  740. package/dist/internal/providers/catalog-source-models-dev.d.ts +80 -0
  741. package/dist/internal/providers/discovery.d.ts +14 -0
  742. package/dist/internal/providers/index.d.ts +8 -0
  743. package/dist/internal/providers/register-plugin-providers.d.ts +22 -0
  744. package/dist/internal/providers/registry.d.ts +13 -0
  745. package/dist/internal/providers/types.d.ts +11 -0
  746. package/dist/internal/retry/circuit-breaker.d.ts +26 -0
  747. package/dist/internal/retry/with-retry.d.ts +40 -0
  748. package/dist/internal/runtime/compat/compat-config-file.d.ts +31 -0
  749. package/dist/internal/runtime/compat/foreign-config-sources.d.ts +139 -0
  750. package/dist/internal/runtime/compression/compression-attempt.d.ts +24 -0
  751. package/dist/internal/runtime/compression/compression-config.d.ts +33 -0
  752. package/dist/internal/runtime/compression/compression-decision.d.ts +10 -0
  753. package/dist/internal/runtime/compression/compression-helpers.d.ts +18 -0
  754. package/dist/internal/runtime/compression/compression-model-registry.d.ts +41 -0
  755. package/dist/internal/runtime/compression/compression-summarizer.d.ts +34 -0
  756. package/dist/internal/runtime/config/default-model.d.ts +1 -0
  757. package/dist/internal/runtime/config/providers-manager.d.ts +1 -0
  758. package/dist/internal/runtime/config/workspace-dir.d.ts +9 -0
  759. package/dist/internal/runtime/context/context-aggregator.d.ts +26 -0
  760. package/dist/internal/runtime/context/context-discovery-runner.d.ts +80 -0
  761. package/dist/internal/runtime/context/context-discovery.d.ts +79 -0
  762. package/dist/internal/runtime/context/context-frontmatter.d.ts +16 -0
  763. package/dist/internal/runtime/context/context-glob.d.ts +1 -0
  764. package/dist/internal/runtime/context/context-import-resolver.d.ts +41 -0
  765. package/dist/internal/runtime/context/context-loaders.d.ts +42 -0
  766. package/dist/internal/runtime/context/context-manager.d.ts +28 -0
  767. package/dist/internal/runtime/context/context-mdc-parser.d.ts +25 -0
  768. package/dist/internal/runtime/context/context-rules-frontmatter.d.ts +99 -0
  769. package/dist/internal/runtime/context/context-yaml-lite.d.ts +26 -0
  770. package/dist/internal/runtime/context/project-instructions.d.ts +66 -0
  771. package/dist/internal/runtime/context/yaml-frontmatter.d.ts +20 -0
  772. package/dist/internal/runtime/fixtures/fixture-events.d.ts +12 -0
  773. package/dist/internal/runtime/fixtures/fixture-mode.d.ts +24 -0
  774. package/dist/internal/runtime/fixtures/fixture-responder.d.ts +1 -0
  775. package/dist/internal/runtime/fixtures/fixture-run-base.d.ts +96 -0
  776. package/dist/internal/runtime/fixtures/fixture-scripts.d.ts +21 -0
  777. package/dist/internal/runtime/fixtures/types.d.ts +1 -0
  778. package/dist/internal/runtime/hooks/hooks-executor.d.ts +49 -0
  779. package/dist/internal/runtime/hooks/hooks-source.d.ts +35 -0
  780. package/dist/internal/runtime/lifecycle/context-budget-event.d.ts +25 -0
  781. package/dist/internal/runtime/lifecycle/env-policy.d.ts +29 -0
  782. package/dist/internal/runtime/lifecycle/fork-agent.d.ts +15 -0
  783. package/dist/internal/runtime/lifecycle/goal-marker.d.ts +13 -0
  784. package/dist/internal/runtime/lifecycle/post-run-lifecycle.d.ts +16 -0
  785. package/dist/internal/runtime/lifecycle/run-to-completion.d.ts +22 -0
  786. package/dist/internal/runtime/lifecycle/run-until.d.ts +21 -0
  787. package/dist/internal/runtime/lifecycle/spawn-collect.d.ts +8 -0
  788. package/dist/internal/runtime/lifecycle/stream-to-completion.d.ts +31 -0
  789. package/dist/internal/runtime/lifecycle/wrap-completion-check-run.d.ts +30 -0
  790. package/dist/internal/runtime/memory-glue/memory-provider.d.ts +11 -0
  791. package/dist/internal/runtime/memory-glue/memory-store.d.ts +4 -0
  792. package/dist/internal/runtime/memory-glue/select-facts.d.ts +63 -0
  793. package/dist/internal/runtime/model-selection.d.ts +14 -0
  794. package/dist/internal/runtime/plugin-loader/plugin-bundles.d.ts +22 -0
  795. package/dist/internal/runtime/plugin-loader/plugin-frontmatter.d.ts +17 -0
  796. package/dist/internal/runtime/plugin-loader/plugins-manager.d.ts +1 -0
  797. package/dist/internal/runtime/processors/run-processors.d.ts +10 -0
  798. package/dist/internal/runtime/processors/tripwire-run.d.ts +16 -0
  799. package/dist/internal/runtime/processors/wrap-output-run.d.ts +18 -0
  800. package/dist/internal/runtime/registry/agent-factory-registry.d.ts +19 -0
  801. package/dist/internal/runtime/registry/agent-registry-contract.d.ts +31 -0
  802. package/dist/internal/runtime/registry/agent-registry-store.d.ts +75 -0
  803. package/dist/internal/runtime/registry/agent-registry.d.ts +6 -0
  804. package/dist/internal/runtime/registry/live-agent-registry.d.ts +132 -0
  805. package/dist/internal/runtime/registry/run-registry.d.ts +4 -0
  806. package/dist/internal/runtime/skills/discover-skills.d.ts +103 -0
  807. package/dist/internal/runtime/skills/skill-frontmatter.d.ts +6 -0
  808. package/dist/internal/runtime/skills/skills-block.d.ts +18 -0
  809. package/dist/internal/runtime/skills/skills-manager.d.ts +1 -0
  810. package/dist/internal/runtime/skills/subagent-tool-scope.d.ts +25 -0
  811. package/dist/internal/runtime/skills/subagents-loader.d.ts +1 -0
  812. package/dist/internal/runtime/system-prompt/escape.d.ts +1 -0
  813. package/dist/internal/runtime/system-prompt/local-assembly.d.ts +2 -0
  814. package/dist/internal/runtime/system-prompt/native-reasoning.d.ts +25 -0
  815. package/dist/internal/runtime/system-prompt/pipeline.d.ts +1 -0
  816. package/dist/internal/runtime/system-prompt/safe-call.d.ts +1 -0
  817. package/dist/internal/runtime/system-prompt/sources/active-memory-provider.d.ts +1 -0
  818. package/dist/internal/runtime/system-prompt/sources/base-provider.d.ts +1 -0
  819. package/dist/internal/runtime/system-prompt/sources/context-provider.d.ts +1 -0
  820. package/dist/internal/runtime/system-prompt/sources/memory-provider.d.ts +6 -0
  821. package/dist/internal/runtime/system-prompt/sources/reasoning-provider.d.ts +1 -0
  822. package/dist/internal/runtime/system-prompt/sources/skills-provider.d.ts +1 -0
  823. package/dist/internal/runtime/system-prompt/system-prompt.d.ts +1 -0
  824. package/dist/internal/runtime/system-prompt/types.d.ts +5 -0
  825. package/dist/internal/runtime/tools/shell-tool.d.ts +7 -0
  826. package/dist/internal/runtime/validation/validate-agent-options.d.ts +1 -0
  827. package/dist/internal/runtime/validation/validate-response.d.ts +18 -0
  828. package/dist/internal/scorers/levenshtein.d.ts +11 -0
  829. package/dist/internal/scorers/llm-judge.d.ts +41 -0
  830. package/dist/internal/security/index.cjs +52 -0
  831. package/dist/internal/security/index.cjs.map +1 -0
  832. package/dist/internal/security/index.d.cts +19 -0
  833. package/dist/internal/security/index.d.ts +19 -0
  834. package/dist/internal/security/index.js +7 -0
  835. package/dist/internal/security/index.js.map +1 -0
  836. package/dist/internal/security/path-containment.d.cts +24 -0
  837. package/dist/internal/security/path-containment.d.ts +24 -0
  838. package/dist/internal/security/path-guard.d.cts +166 -0
  839. package/dist/internal/security/path-guard.d.ts +166 -0
  840. package/dist/internal/security/redact.d.cts +74 -0
  841. package/dist/internal/security/redact.d.ts +74 -0
  842. package/dist/internal/security/test-reset.d.cts +10 -0
  843. package/dist/internal/security/test-reset.d.ts +10 -0
  844. package/dist/internal/session/agent-session-store.d.ts +65 -0
  845. package/dist/internal/session/agent-session.d.ts +48 -0
  846. package/dist/internal/session/compact-session.d.ts +97 -0
  847. package/dist/internal/session/index.d.ts +7 -0
  848. package/dist/internal/session/inject-session.d.ts +15 -0
  849. package/dist/internal/session/session-cache.d.ts +31 -0
  850. package/dist/internal/session/types.d.ts +46 -0
  851. package/dist/internal/structured-output-helpers.d.ts +54 -0
  852. package/dist/internal/task/registry.d.ts +60 -0
  853. package/dist/internal/task/ring-buffer.d.ts +10 -0
  854. package/dist/internal/task/store.d.ts +145 -0
  855. package/dist/internal/task/subscribe.d.ts +15 -0
  856. package/dist/internal/task/task-id.d.ts +22 -0
  857. package/dist/internal/task/task-run-event-bridge.d.ts +10 -0
  858. package/dist/internal/task/telemetry.d.ts +27 -0
  859. package/dist/internal/telemetry/adapter-registry.d.ts +12 -0
  860. package/dist/internal/telemetry/adapters/arize.d.ts +2 -0
  861. package/dist/internal/telemetry/adapters/braintrust.d.ts +7 -0
  862. package/dist/internal/telemetry/adapters/datadog.d.ts +2 -0
  863. package/dist/internal/telemetry/adapters/langfuse.d.ts +2 -0
  864. package/dist/internal/telemetry/adapters/langsmith.d.ts +7 -0
  865. package/dist/internal/telemetry/adapters/posthog.d.ts +2 -0
  866. package/dist/internal/telemetry/adapters/sentry.d.ts +2 -0
  867. package/dist/internal/telemetry/safe-require.d.ts +1 -0
  868. package/dist/internal/telemetry/span-names.d.ts +10 -0
  869. package/dist/internal/telemetry/tracer-loader.d.ts +20 -0
  870. package/dist/internal/telemetry/tracer.d.ts +57 -0
  871. package/dist/internal/tool-dispatch/repair-middleware.d.ts +34 -0
  872. package/dist/internal/tool-dispatch/strip-think.d.ts +22 -0
  873. package/dist/internal/tool-registry/personality-filter.d.ts +37 -0
  874. package/dist/internal/workflow/ctx.d.ts +24 -0
  875. package/dist/internal/workflow/error-shape.d.ts +7 -0
  876. package/dist/internal/workflow/event-stream.d.ts +13 -0
  877. package/dist/internal/workflow/evented-executor.d.ts +42 -0
  878. package/dist/internal/workflow/executor-helpers.d.ts +30 -0
  879. package/dist/internal/workflow/executor.d.ts +16 -0
  880. package/dist/internal/workflow/retry-policy.d.ts +14 -0
  881. package/dist/internal/workflow/run-id.d.ts +9 -0
  882. package/dist/internal/workflow/scheduler.d.ts +23 -0
  883. package/dist/internal/workflow/single-flight.d.ts +18 -0
  884. package/dist/internal/workflow/snapshot-store.d.ts +23 -0
  885. package/dist/internal/workflow/step-agent.d.ts +12 -0
  886. package/dist/internal/workflow/step-branch.d.ts +10 -0
  887. package/dist/internal/workflow/step-dowhile.d.ts +8 -0
  888. package/dist/internal/workflow/step-execution.d.ts +25 -0
  889. package/dist/internal/workflow/step-fn.d.ts +10 -0
  890. package/dist/internal/workflow/step-foreach.d.ts +11 -0
  891. package/dist/internal/workflow/step-parallel.d.ts +17 -0
  892. package/dist/internal/workflow/step-sleep.d.ts +7 -0
  893. package/dist/internal/workflow/telemetry.d.ts +21 -0
  894. package/dist/internal/zod-to-json-schema.d.ts +11 -0
  895. package/dist/job-queue.d.ts +68 -0
  896. package/dist/judge-call-46M2E5FA.cjs +22 -0
  897. package/dist/judge-call-46M2E5FA.cjs.map +1 -0
  898. package/dist/judge-call-FGUNNWEI.js +5 -0
  899. package/dist/judge-call-FGUNNWEI.js.map +1 -0
  900. package/dist/mcp-auth.cjs +314 -0
  901. package/dist/mcp-auth.cjs.map +1 -0
  902. package/dist/mcp-auth.d.cts +19 -0
  903. package/dist/mcp-auth.d.ts +19 -0
  904. package/dist/mcp-auth.js +307 -0
  905. package/dist/mcp-auth.js.map +1 -0
  906. package/dist/messages.cjs +24 -0
  907. package/dist/messages.cjs.map +1 -0
  908. package/dist/messages.d.cts +33 -0
  909. package/dist/messages.d.ts +33 -0
  910. package/dist/messages.js +20 -0
  911. package/dist/messages.js.map +1 -0
  912. package/dist/models.cjs +295 -0
  913. package/dist/models.cjs.map +1 -0
  914. package/dist/models.d.cts +18 -0
  915. package/dist/models.d.ts +18 -0
  916. package/dist/models.js +286 -0
  917. package/dist/models.js.map +1 -0
  918. package/dist/oauth-transaction-store-5RIR6D5C.js +5 -0
  919. package/dist/oauth-transaction-store-5RIR6D5C.js.map +1 -0
  920. package/dist/oauth-transaction-store-SXIE57OD.cjs +38 -0
  921. package/dist/oauth-transaction-store-SXIE57OD.cjs.map +1 -0
  922. package/dist/path-safety.cjs +39 -0
  923. package/dist/path-safety.cjs.map +1 -0
  924. package/dist/path-safety.d.cts +16 -0
  925. package/dist/path-safety.d.ts +16 -0
  926. package/dist/path-safety.js +6 -0
  927. package/dist/path-safety.js.map +1 -0
  928. package/dist/permission-engine.d.ts +134 -0
  929. package/dist/persistence.cjs +197 -0
  930. package/dist/persistence.cjs.map +1 -0
  931. package/dist/persistence.d.cts +40 -0
  932. package/dist/persistence.d.ts +40 -0
  933. package/dist/persistence.js +100 -0
  934. package/dist/persistence.js.map +1 -0
  935. package/dist/project.cjs +45 -0
  936. package/dist/project.cjs.map +1 -0
  937. package/dist/project.d.cts +14 -0
  938. package/dist/project.d.ts +14 -0
  939. package/dist/project.js +42 -0
  940. package/dist/project.js.map +1 -0
  941. package/dist/provider-catalog.json +1295 -0
  942. package/dist/providers.cjs +23 -0
  943. package/dist/providers.cjs.map +1 -0
  944. package/dist/providers.d.cts +31 -0
  945. package/dist/providers.d.ts +31 -0
  946. package/dist/providers.js +10 -0
  947. package/dist/providers.js.map +1 -0
  948. package/dist/registry-BZQFYRTL.cjs +46 -0
  949. package/dist/registry-BZQFYRTL.cjs.map +1 -0
  950. package/dist/registry-DMWCJKRF.js +9 -0
  951. package/dist/registry-DMWCJKRF.js.map +1 -0
  952. package/dist/retry.cjs +14 -0
  953. package/dist/retry.cjs.map +1 -0
  954. package/dist/retry.d.cts +35 -0
  955. package/dist/retry.d.ts +35 -0
  956. package/dist/retry.js +5 -0
  957. package/dist/retry.js.map +1 -0
  958. package/dist/run-CTAdRU3U.d.cts +1813 -0
  959. package/dist/run-CTAdRU3U.d.ts +1813 -0
  960. package/dist/run-to-completion-DRO77625.js +3 -0
  961. package/dist/run-to-completion-DRO77625.js.map +1 -0
  962. package/dist/run-to-completion-X4OWM673.cjs +48 -0
  963. package/dist/run-to-completion-X4OWM673.cjs.map +1 -0
  964. package/dist/run-until-6D6TQ4JN.js +146 -0
  965. package/dist/run-until-6D6TQ4JN.js.map +1 -0
  966. package/dist/run-until-DG2KXWB2.cjs +149 -0
  967. package/dist/run-until-DG2KXWB2.cjs.map +1 -0
  968. package/dist/sandbox/bwrap.d.cts +112 -0
  969. package/dist/sandbox/bwrap.d.ts +112 -0
  970. package/dist/sandbox/index.cjs +495 -0
  971. package/dist/sandbox/index.cjs.map +1 -0
  972. package/dist/sandbox/index.d.cts +13 -0
  973. package/dist/sandbox/index.d.ts +13 -0
  974. package/dist/sandbox/index.js +451 -0
  975. package/dist/sandbox/index.js.map +1 -0
  976. package/dist/sandbox/linux-sandbox.d.cts +218 -0
  977. package/dist/sandbox/linux-sandbox.d.ts +218 -0
  978. package/dist/sandbox/local-sandbox.d.cts +66 -0
  979. package/dist/sandbox/local-sandbox.d.ts +66 -0
  980. package/dist/sandbox/provision.d.cts +60 -0
  981. package/dist/sandbox/provision.d.ts +60 -0
  982. package/dist/sandbox/seccomp.d.cts +16 -0
  983. package/dist/sandbox/seccomp.d.ts +16 -0
  984. package/dist/sandbox/shell-escape.d.cts +8 -0
  985. package/dist/sandbox/shell-escape.d.ts +8 -0
  986. package/dist/sandbox/types.d.cts +143 -0
  987. package/dist/sandbox/types.d.ts +143 -0
  988. package/dist/sanitize/coerce.d.cts +1 -0
  989. package/dist/sanitize/coerce.d.ts +1 -0
  990. package/dist/sanitize/index.cjs +12 -0
  991. package/dist/sanitize/index.cjs.map +1 -0
  992. package/dist/sanitize/index.d.cts +9 -0
  993. package/dist/sanitize/index.d.ts +9 -0
  994. package/dist/sanitize/index.js +3 -0
  995. package/dist/sanitize/index.js.map +1 -0
  996. package/dist/sanitize/sanitize-tool-input.d.cts +11 -0
  997. package/dist/sanitize/sanitize-tool-input.d.ts +11 -0
  998. package/dist/sanitize/types.d.cts +52 -0
  999. package/dist/sanitize/types.d.ts +52 -0
  1000. package/dist/scorers.d.ts +181 -0
  1001. package/dist/sdk-agent-BOiKqOgL.d.cts +940 -0
  1002. package/dist/sdk-agent-D4a_BR_6.d.ts +940 -0
  1003. package/dist/server/auth/errors.d.cts +54 -0
  1004. package/dist/server/auth/errors.d.ts +54 -0
  1005. package/dist/server/auth/index.cjs +210 -0
  1006. package/dist/server/auth/index.cjs.map +1 -0
  1007. package/dist/server/auth/index.d.cts +244 -0
  1008. package/dist/server/auth/index.d.ts +244 -0
  1009. package/dist/server/auth/index.js +189 -0
  1010. package/dist/server/auth/index.js.map +1 -0
  1011. package/dist/server/auth/oauth-transaction-store.d.cts +52 -0
  1012. package/dist/server/auth/oauth-transaction-store.d.ts +52 -0
  1013. package/dist/server/auth/orchestrator.d.cts +15 -0
  1014. package/dist/server/auth/orchestrator.d.ts +15 -0
  1015. package/dist/server/auth/types.d.cts +109 -0
  1016. package/dist/server/auth/types.d.ts +109 -0
  1017. package/dist/server/auth/validate-return-to.d.cts +27 -0
  1018. package/dist/server/auth/validate-return-to.d.ts +27 -0
  1019. package/dist/server/errors-envelope.cjs +101 -0
  1020. package/dist/server/errors-envelope.cjs.map +1 -0
  1021. package/dist/server/errors-envelope.d.cts +67 -0
  1022. package/dist/server/errors-envelope.d.ts +67 -0
  1023. package/dist/server/errors-envelope.js +95 -0
  1024. package/dist/server/errors-envelope.js.map +1 -0
  1025. package/dist/session-transcript-LGHSNVY5.cjs +62 -0
  1026. package/dist/session-transcript-LGHSNVY5.cjs.map +1 -0
  1027. package/dist/session-transcript-VTBTCGQX.js +5 -0
  1028. package/dist/session-transcript-VTBTCGQX.js.map +1 -0
  1029. package/dist/skills.cjs +25 -0
  1030. package/dist/skills.cjs.map +1 -0
  1031. package/dist/skills.d.cts +19 -0
  1032. package/dist/skills.d.ts +19 -0
  1033. package/dist/skills.js +8 -0
  1034. package/dist/skills.js.map +1 -0
  1035. package/dist/stream-object-HBFMIZLD.js +7 -0
  1036. package/dist/stream-object-HBFMIZLD.js.map +1 -0
  1037. package/dist/stream-object-QSKHISDJ.cjs +20 -0
  1038. package/dist/stream-object-QSKHISDJ.cjs.map +1 -0
  1039. package/dist/stream-object.d.ts +73 -0
  1040. package/dist/stream-to-completion-QV5HCL3J.js +30 -0
  1041. package/dist/stream-to-completion-QV5HCL3J.js.map +1 -0
  1042. package/dist/stream-to-completion-SRISU5AB.cjs +32 -0
  1043. package/dist/stream-to-completion-SRISU5AB.cjs.map +1 -0
  1044. package/dist/subagents-loader-DOBTTICM.js +7 -0
  1045. package/dist/subagents-loader-DOBTTICM.js.map +1 -0
  1046. package/dist/subagents-loader-GEHYCMEX.cjs +16 -0
  1047. package/dist/subagents-loader-GEHYCMEX.cjs.map +1 -0
  1048. package/dist/subagents-loader.cjs +35 -0
  1049. package/dist/subagents-loader.cjs.map +1 -0
  1050. package/dist/subagents-loader.d.cts +90 -0
  1051. package/dist/subagents-loader.d.ts +90 -0
  1052. package/dist/subagents-loader.js +32 -0
  1053. package/dist/subagents-loader.js.map +1 -0
  1054. package/dist/subagents.cjs +18 -0
  1055. package/dist/subagents.cjs.map +1 -0
  1056. package/dist/subagents.d.cts +14 -0
  1057. package/dist/subagents.d.ts +14 -0
  1058. package/dist/subagents.js +15 -0
  1059. package/dist/subagents.js.map +1 -0
  1060. package/dist/subscription/define-subscription.d.cts +71 -0
  1061. package/dist/subscription/define-subscription.d.ts +71 -0
  1062. package/dist/subscription/index.cjs +408 -0
  1063. package/dist/subscription/index.cjs.map +1 -0
  1064. package/dist/subscription/index.d.cts +20 -0
  1065. package/dist/subscription/index.d.ts +20 -0
  1066. package/dist/subscription/index.js +400 -0
  1067. package/dist/subscription/index.js.map +1 -0
  1068. package/dist/subscription/internal/backpressure.d.cts +24 -0
  1069. package/dist/subscription/internal/backpressure.d.ts +24 -0
  1070. package/dist/subscription/internal/server-integration.d.cts +22 -0
  1071. package/dist/subscription/internal/server-integration.d.ts +22 -0
  1072. package/dist/subscription/internal/sse-encoder.d.cts +13 -0
  1073. package/dist/subscription/internal/sse-encoder.d.ts +13 -0
  1074. package/dist/subscription/internal/sse-parser.d.cts +15 -0
  1075. package/dist/subscription/internal/sse-parser.d.ts +15 -0
  1076. package/dist/subscription/internal/subscription-runtime.d.cts +21 -0
  1077. package/dist/subscription/internal/subscription-runtime.d.ts +21 -0
  1078. package/dist/subscription/internal/types.d.cts +11 -0
  1079. package/dist/subscription/internal/types.d.ts +11 -0
  1080. package/dist/subscription/internal/ws-adapter-node.d.cts +10 -0
  1081. package/dist/subscription/internal/ws-adapter-node.d.ts +10 -0
  1082. package/dist/subscription/theokit-subscribe.d.cts +54 -0
  1083. package/dist/subscription/theokit-subscribe.d.ts +54 -0
  1084. package/dist/subscription/types.d.cts +158 -0
  1085. package/dist/subscription/types.d.ts +158 -0
  1086. package/dist/task-errors.d.ts +58 -0
  1087. package/dist/task-store.cjs +23 -0
  1088. package/dist/task-store.cjs.map +1 -0
  1089. package/dist/task-store.d.cts +10 -0
  1090. package/dist/task-store.d.ts +10 -0
  1091. package/dist/task-store.js +6 -0
  1092. package/dist/task-store.js.map +1 -0
  1093. package/dist/tool-error.d.ts +30 -0
  1094. package/dist/types/agent-prims.d.ts +137 -0
  1095. package/dist/types/agent.d.ts +947 -0
  1096. package/dist/types/batch.d.ts +121 -0
  1097. package/dist/types/budget-tracker.d.ts +80 -0
  1098. package/dist/types/budget.d.ts +97 -0
  1099. package/dist/types/content-blocks.d.ts +50 -0
  1100. package/dist/types/context.d.ts +96 -0
  1101. package/dist/types/conversation.d.ts +127 -0
  1102. package/dist/types/cron.d.ts +172 -0
  1103. package/dist/types/env-policy.d.ts +21 -0
  1104. package/dist/types/eval.d.ts +255 -0
  1105. package/dist/types/fork.d.ts +52 -0
  1106. package/dist/types/goal-events.d.ts +144 -0
  1107. package/dist/types/index.d.ts +19 -0
  1108. package/dist/types/mcp.d.ts +90 -0
  1109. package/dist/types/memory-adapter.d.ts +189 -0
  1110. package/dist/types/memory-provider.d.ts +206 -0
  1111. package/dist/types/messages-base.d.ts +24 -0
  1112. package/dist/types/messages.d.ts +161 -0
  1113. package/dist/types/plugin.d.ts +308 -0
  1114. package/dist/types/processors.d.ts +87 -0
  1115. package/dist/types/provider-profile.d.ts +116 -0
  1116. package/dist/types/providers.d.ts +116 -0
  1117. package/dist/types/run-events.d.ts +197 -0
  1118. package/dist/types/run.d.ts +671 -0
  1119. package/dist/types/sdk-agent.d.ts +342 -0
  1120. package/dist/types/session-message.d.ts +62 -0
  1121. package/dist/types/session-record.d.ts +103 -0
  1122. package/dist/types/session-store.d.ts +104 -0
  1123. package/dist/types/task.d.ts +146 -0
  1124. package/dist/types/theokit.d.ts +73 -0
  1125. package/dist/types/trajectory.d.ts +52 -0
  1126. package/dist/types/updates.d.ts +184 -0
  1127. package/dist/types/usage.d.ts +64 -0
  1128. package/dist/types/workflow.d.ts +426 -0
  1129. package/dist/workflow-as-tool.d.ts +66 -0
  1130. package/dist/workflow-errors.d.ts +164 -0
  1131. package/dist/workflow.cjs +100 -0
  1132. package/dist/workflow.cjs.map +1 -0
  1133. package/dist/workflow.d.cts +911 -0
  1134. package/dist/workflow.d.ts +911 -0
  1135. package/dist/workflow.js +11 -0
  1136. package/dist/workflow.js.map +1 -0
  1137. package/docs/adr/README.md +2604 -0
  1138. package/docs/error-codes.md +253 -0
  1139. package/docs/harness-capability-map.md +1435 -0
  1140. package/docs/memory-decisions.md +265 -0
  1141. package/package.json +455 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internal/cron/run-job.ts","../src/internal/cron/fire-handler.ts","../src/internal/cron/store.ts","../src/internal/cron/validate.ts","../src/internal/cron/scheduler.ts","../src/cron.ts"],"names":["Croner","Cron"],"mappings":"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","file":"chunk-XU6MLSC6.js","sourcesContent":["import { ConfigurationError, UnknownAgentError } from \"../../errors.js\";\nimport type { AgentOptions } from \"../../types/agent.js\";\nimport type { CronJob } from \"../../types/cron.js\";\nimport type { Run, SDKUserMessage } from \"../../types/run.js\";\nimport type { WorkflowRun } from \"../../types/workflow.js\";\nimport { getAgentFacade } from \"../runtime/registry/agent-factory-registry.js\";\n\n/**\n * Execute a cron job. Dispatches to one of three targets:\n * - `workflow` (SE35) → `workflow.run(inputData)` on the held instance (the\n * instance carries its own `.run`, so this module never imports `workflow.ts`),\n * returning the already-terminal {@link WorkflowRun}.\n * - `agent` → an ephemeral agent per fire; `agent.send(message)` → {@link Run}.\n * - `agentId` → reuse an existing agent; `agent.send(message)` → {@link Run}.\n *\n * Used by both `Cron.run(jobId)` (manual off-schedule fire) and the scheduler's\n * default fire handler. ADR 0014.\n *\n * @internal\n */\nexport async function runCronJob(job: CronJob): Promise<Run | WorkflowRun> {\n // `Workflow.run()` resolves only on a TERMINAL run (completed/failed/suspended/\n // cancelled — the executor never returns `status: \"running\"`), so the fire\n // handler treats the returned WorkflowRun as terminal (no `.wait()`).\n if (job.workflow !== undefined) return job.workflow.run(job.inputData);\n if (job.agent !== undefined) return runWithEphemeralAgent(job.agent, requireMessage(job));\n if (job.agentId !== undefined) return runWithExistingAgent(job.agentId, requireMessage(job));\n throw new ConfigurationError(\n `Cron job ${job.id} has no target (agent, agentId, or workflow) — cannot run.`,\n { code: \"cron_no_target\" },\n );\n}\n\n/**\n * Discriminate the {@link runCronJob} union: an agent `Run` is deferred (carries\n * `.wait()`/`.cancel()`); a {@link WorkflowRun} is already terminal (no `.wait()`).\n * @internal\n */\nexport function isAgentRun(outcome: Run | WorkflowRun): outcome is Run {\n return typeof (outcome as Run).wait === \"function\";\n}\n\n/** Agent targets require a message; fail-loud if one somehow reached a fire without it. */\nfunction requireMessage(job: CronJob): string | SDKUserMessage {\n if (job.message === undefined) {\n throw new ConfigurationError(`Cron job ${job.id} is an agent target but has no message.`, {\n code: \"cron_missing_message\",\n });\n }\n return job.message;\n}\n\nasync function runWithExistingAgent(\n agentId: string,\n message: string | SDKUserMessage,\n): Promise<Run> {\n const info = await getAgentFacade()\n .get(agentId)\n .catch(() => undefined);\n if (info === undefined) {\n throw new UnknownAgentError(\n `Cron job references agentId \"${agentId}\" but no such agent is registered. The agent may have been disposed or the process restarted without persisting the agent registry.`,\n { code: \"agent_not_registered\" },\n );\n }\n const agent = await getAgentFacade().resume(agentId);\n return agent.send(message);\n}\n\nasync function runWithEphemeralAgent(\n baseOptions: AgentOptions,\n message: string | SDKUserMessage,\n): Promise<Run> {\n const agent = await getAgentFacade().create(baseOptions);\n return agent.send(message);\n}\n","/**\n * Default cron fire handler (extracted from `Cron.start` for testability + G8).\n *\n * Every fire registers as a Task (ADRs D363/D374) so callers observe it via\n * `Task.list` / `Task.subscribe`. SE35 (ADR 0014): the fire target may be an\n * agent (a deferred {@link Run} — abort-wire + `wait()`) OR a workflow (an\n * already-terminal {@link WorkflowRun} — no `wait()`); `isAgentRun` discriminates\n * so the handler records the correct terminal status/runId for each shape.\n *\n * @internal\n */\n\nimport type { CronJob } from \"../../types/cron.js\";\nimport { submit as taskRegistrySubmit } from \"../task/registry.js\";\nimport { isAgentRun, runCronJob } from \"./run-job.js\";\n\nexport async function fireCronJobAsTask(job: CronJob): Promise<void> {\n // The task id namespace `cron-{jobId}-{fireEpochMs}` honors D368/EC-5.\n const fireTs = Date.now();\n const taskId = `cron-${job.id}-${fireTs}`;\n try {\n await taskRegistrySubmit({\n kind: \"cron\",\n id: taskId,\n allowReservedPrefix: true,\n meta: { jobId: job.id, jobName: job.name, schedule: job.cron, firedAt: fireTs },\n work: async (ctx) => {\n const outcome = await runCronJob(job);\n if (isAgentRun(outcome)) {\n // Agent target — the Run is deferred: abort-wire + await terminal.\n ctx.signal.addEventListener(\"abort\", () => void outcome.cancel().catch(() => {}), {\n once: true,\n });\n const result = await outcome.wait();\n ctx.emit({ status: result.status, runId: outcome.id });\n return { status: result.status, runId: outcome.id };\n }\n // SE35 workflow target — the WorkflowRun is ALREADY terminal (no wait()).\n ctx.emit({ status: outcome.status, runId: outcome.id });\n return { status: outcome.status, runId: outcome.id };\n },\n });\n } catch {\n // Task registry must not break cron — fall through to a direct run. No\n // double-execution: `taskRegistrySubmit` runs `work` (which calls\n // `runCronJob`) fire-and-forget, so a throw here means the SUBMIT itself\n // failed (id/registry setup) BEFORE `work` started — the job never ran, and\n // this is its first + only execution.\n const outcome = await runCronJob(job);\n if (isAgentRun(outcome)) await outcome.wait();\n }\n}\n","import type { CronJob } from \"../../types/cron.js\";\n\n/**\n * Process-wide cron job store. In Phase 1 we keep all jobs in memory\n * (across local + cloud runtimes). Local-runtime persistence to\n * `.theokit/cron/jobs.json` lands when the local runtime adapter is wired.\n *\n * @internal\n */\nconst jobs = new Map<string, CronJob>();\n\n/** Snapshot of every known cron job. @internal */\nexport function listJobs(): CronJob[] {\n return Array.from(jobs.values());\n}\n\n/** Total job count across runtimes. @internal */\nexport function jobCount(): number {\n return jobs.size;\n}\n\n/** Fetch a single job by id, or `undefined` if it does not exist. @internal */\nexport function getJob(jobId: string): CronJob | undefined {\n return jobs.get(jobId);\n}\n\n/** Insert or replace a job. @internal */\nexport function upsertJob(job: CronJob): void {\n jobs.set(job.id, job);\n}\n\n/** Delete a job. Returns `true` if a job was removed. @internal */\nexport function deleteJob(jobId: string): boolean {\n return jobs.delete(jobId);\n}\n\n/** Test-only: drop every job. @internal */\nexport function clearJobs(): void {\n jobs.clear();\n}\n","import { Cron } from \"croner\";\nimport { ConfigurationError } from \"../../errors.js\";\n\n/**\n * POSIX-cron + shorthand validators used by `Cron.create()`. Throws\n * `ConfigurationError` with a stable message and code on invalid input.\n *\n * @internal\n */\n\nconst SHORTHANDS = new Set([\"@hourly\", \"@daily\", \"@weekly\", \"@monthly\", \"@yearly\"]);\n\ninterface FieldRange {\n min: number;\n max: number;\n}\n\nconst FIELD_RANGES: readonly FieldRange[] = [\n { min: 0, max: 59 }, // minute\n { min: 0, max: 23 }, // hour\n { min: 1, max: 31 }, // day-of-month\n { min: 1, max: 12 }, // month\n { min: 0, max: 6 }, // day-of-week\n];\n\n/**\n * Validate a cron expression. Accepts shorthand (`@hourly`, ..., `@yearly`)\n * or 5-field POSIX cron with star, literals, star/N step, N-M range, and\n * N,M,P list.\n *\n * @internal\n */\nexport function validateCronExpression(cron: string): void {\n if (typeof cron !== \"string\" || cron.length === 0) {\n throw new ConfigurationError(\"Invalid cron expression: empty\", {\n code: \"invalid_cron\",\n });\n }\n if (cron.startsWith(\"@\")) {\n if (!SHORTHANDS.has(cron)) {\n throw new ConfigurationError(`Invalid cron expression: unknown shorthand ${cron}`, {\n code: \"invalid_cron\",\n });\n }\n return;\n }\n\n const fields = cron.trim().split(/\\s+/);\n if (fields.length !== FIELD_RANGES.length) {\n throw new ConfigurationError(\n `Invalid cron expression: ${cron} (expected ${FIELD_RANGES.length} fields, got ${fields.length})`,\n { code: \"invalid_cron\" },\n );\n }\n for (const [index, range] of FIELD_RANGES.entries()) {\n // The length check above already established one field per range, so the lookup is total.\n // B-116: this replaces a `range === undefined` guard that no caller could reach — its single\n // caller only ran with exactly 5 fields, and FIELD_RANGES has exactly 5 entries, so the branch\n // stayed at 0 executions through 37 tests written specifically to enter it.\n const field = fields[index] as string;\n if (!isValidCronField(field, range)) {\n throw new ConfigurationError(`Invalid cron expression: ${cron} (field ${index + 1})`, {\n code: \"invalid_cron\",\n });\n }\n }\n}\n\nfunction isValidCronField(field: string, range: FieldRange): boolean {\n if (field === \"*\") return true;\n if (field.startsWith(\"*/\")) return isValidStep(field.slice(2), range);\n if (field.includes(\",\")) {\n return field.split(\",\").every((part) => isValidCronField(part, range));\n }\n if (field.includes(\"-\")) return isValidRange(field, range);\n return isValidLiteral(field, range);\n}\n\n/**\n * Digits, and nothing else. `Number.parseInt` stops at the first non-digit, so it reads `\"5abc\"` as\n * `5` and `\"0x5\"` as `0` — a numeric field parsed that way accepts garbage that happens to start\n * with a digit.\n *\n * This replaces the `String(n) === field` round-trip the literal and step validators used to carry.\n * The round-trip refused the garbage correctly but also refused `\"07\"`, because `String(7) !== \"07\"`\n * — and `isValidRange` never had it at all, so `\"1-5abc\"` was accepted while `\"5abc\"` was refused\n * (B-121). One predicate, applied to every field shape, closes both halves.\n *\n * The boundary that matters is croner 9, the scheduler this SDK actually fires jobs with. Measured\n * 2026-08-19: it ACCEPTS `\"07 * * * *\"` (next run at :07) and REFUSES `\"5abc\"`, `\"1-5abc\"`,\n * `\"1abc-5\"`, `\"0x5\"`, `\"5.9\"`, `\"+5\"` and `\"1e1\"` as \"illegal character\" (B-122). Validating\n * stricter than the engine rejects schedules that would have run; validating looser only moves the\n * failure from `Cron.create()` to fire time, where nobody is watching.\n *\n * @internal\n */\nconst DIGITS_ONLY = /^\\d+$/;\n\nfunction parseFieldNumber(text: string): number | undefined {\n if (!DIGITS_ONLY.test(text)) return undefined;\n return Number.parseInt(text, 10);\n}\n\nfunction isValidStep(stepStr: string, range: FieldRange): boolean {\n const step = parseFieldNumber(stepStr);\n return step !== undefined && step > 0 && step <= range.max;\n}\n\nfunction isValidRange(field: string, range: FieldRange): boolean {\n const parts = field.split(\"-\");\n if (parts.length !== 2) return false;\n const [startStr, endStr] = parts;\n if (startStr === undefined || endStr === undefined) return false;\n const start = parseFieldNumber(startStr);\n const end = parseFieldNumber(endStr);\n if (start === undefined || end === undefined) return false;\n return start >= range.min && end <= range.max && start <= end;\n}\n\nfunction isValidLiteral(field: string, range: FieldRange): boolean {\n const n = parseFieldNumber(field);\n return n !== undefined && n >= range.min && n <= range.max;\n}\n\n/**\n * Validate an IANA timezone. Uses `Intl.DateTimeFormat`'s strict timezone\n * lookup; invalid values raise `RangeError` which we wrap.\n *\n * @internal\n */\nexport function validateTimezone(timezone: string): void {\n try {\n new Intl.DateTimeFormat(\"en-US\", { timeZone: timezone });\n } catch {\n throw new ConfigurationError(`Invalid IANA timezone: ${timezone}`, {\n code: \"invalid_timezone\",\n });\n }\n}\n\n/**\n * Shorthand (`@daily`, …) to the POSIX five-field form Croner parses.\n *\n * Moved here from the scheduler: interpreting a cron expression is this module's subject, and\n * {@link nextRunAt} needs the same mapping. Two copies would let the scheduler and the value stored\n * on the job disagree about what `@weekly` means.\n *\n * @internal\n */\nexport function normalizeExpression(cron: string): string {\n switch (cron) {\n case \"@hourly\":\n return \"0 * * * *\";\n case \"@daily\":\n return \"0 0 * * *\";\n case \"@weekly\":\n return \"0 0 * * 0\";\n case \"@monthly\":\n return \"0 0 1 * *\";\n case \"@yearly\":\n return \"0 0 1 1 *\";\n default:\n return cron;\n }\n}\n\n/**\n * When this expression next fires, or `undefined` when it never does again.\n *\n * This used to be `estimateNextRunAt`, which read neither of its parameters and returned\n * `Date.now() + 3600_000` for every input. Its docstring scoped it to fixture mode — \"real scheduling\n * uses a proper evaluator wired in by the local scheduler\" — and its one call site was\n * `Cron.create()`, so EVERY job created carried a `nextRunAt` one hour out whatever its schedule\n * said. A `@yearly` job reported that it would run in an hour. The scheduler corrected the value\n * later for jobs it picked up, so the fiction was visible exactly in the window between creating a\n * job and the scheduler reaching it — and permanently for a job the scheduler never runs.\n *\n * Croner is already a dependency and already computes this in the scheduler; this is the same call.\n * `undefined` rather than a filled-in number when there is no next run: `CronJob.nextRunAt` is\n * optional, and an absent next run is a real state (a one-shot date in the past), not a zero.\n *\n * @internal\n */\nexport function nextRunAt(cron: string, timezone: string): number | undefined {\n return new Cron(normalizeExpression(cron), { timezone }).nextRun()?.getTime();\n}\n","import { Cron as Croner } from \"croner\";\nimport type { CronJob } from \"../../types/cron.js\";\nimport { listJobs, upsertJob } from \"./store.js\";\nimport { normalizeExpression } from \"./validate.js\";\n\n/**\n * Real local cron scheduler. When `Cron.start()` is called the scheduler\n * installs a Croner timer per enabled local job; on fire the registered\n * fire handler runs the underlying agent. `Cron.stop()` tears every timer\n * down but keeps the jobs in the store.\n *\n * @internal\n */\n\nexport type CronFireHandler = (job: CronJob) => Promise<void> | void;\n\ninterface SchedulerState {\n running: boolean;\n cwd?: string;\n timers: Map<string, Croner>;\n fireHandler?: CronFireHandler;\n}\n\nconst state: SchedulerState = { running: false, timers: new Map() };\n\n/**\n * Register the callback invoked when a job fires. The runtime adapter\n * supplies a handler that actually executes the agent; fixture-mode tests\n * leave it unset so timers tick without side effects.\n *\n * @internal\n */\nexport function setCronFireHandler(handler: CronFireHandler | undefined): void {\n state.fireHandler = handler;\n}\n\n/** Activate the scheduler and install timers for every enabled local job. @internal */\nexport function startScheduler(cwd?: string): void {\n state.running = true;\n if (cwd !== undefined) state.cwd = cwd;\n for (const job of listJobs()) {\n if (job.runtime === \"local\" && job.enabled !== false) scheduleJob(job);\n }\n}\n\n/** Deactivate the scheduler. Stops every timer; jobs remain in the store. @internal */\nexport function stopScheduler(): void {\n state.running = false;\n for (const timer of state.timers.values()) timer.stop();\n state.timers.clear();\n}\n\n/** Schedule a single job. No-op if the scheduler is not running. @internal */\nexport function scheduleJob(job: CronJob): void {\n if (!state.running) return;\n unscheduleJob(job.id);\n const expression = normalizeExpression(job.cron);\n const timer = new Croner(\n expression,\n { timezone: job.timezone, name: job.id, protect: true },\n () => {\n void fireJob(job.id);\n },\n );\n state.timers.set(job.id, timer);\n refreshNextRunAt(job.id, timer);\n}\n\n/** Tear down the timer for a single job. @internal */\nexport function unscheduleJob(jobId: string): boolean {\n const timer = state.timers.get(jobId);\n if (timer === undefined) return false;\n timer.stop();\n state.timers.delete(jobId);\n return true;\n}\n\n/** Snapshot of the scheduler's running flag and configured workspace. @internal */\nexport function getSchedulerState(): { running: boolean; cwd?: string } {\n const result: { running: boolean; cwd?: string } = { running: state.running };\n if (state.cwd !== undefined) result.cwd = state.cwd;\n return result;\n}\n\nasync function fireJob(jobId: string): Promise<void> {\n const fresh = listJobs().find((entry) => entry.id === jobId);\n if (fresh === undefined || fresh.enabled === false) return;\n const handler = state.fireHandler;\n upsertJob({ ...fresh, lastRunAt: Date.now() });\n if (handler === undefined) return;\n try {\n await handler(fresh);\n } catch {\n // Swallow handler errors — the scheduler must keep ticking. Real\n // surface for run failures lives on the Run.wait() result itself.\n }\n}\n\nfunction refreshNextRunAt(jobId: string, timer: Croner): void {\n const next = timer.nextRun();\n if (next === null) return;\n const existing = listJobs().find((entry) => entry.id === jobId);\n if (existing === undefined) return;\n upsertJob({ ...existing, nextRunAt: next.getTime() });\n}\n","// Bootstrap import: loading this facade must register the public Agent facade\n// into the agent-factory-registry seam, because `internal/cron/run-job.ts`\n// resolves it via `getAgentFacade()` at runtime instead of importing `agent.ts`\n// directly (which would invert the public-api -> internal dependency\n// direction). The `@theokit/sdk/cron` sub-path entry would otherwise throw\n// \"Agent facade not registered\" at runtime.\nimport \"./agent.js\";\nimport { ConfigurationError, UnknownAgentError } from \"./errors.js\";\nimport { fireCronJobAsTask } from \"./internal/cron/fire-handler.js\";\nimport { runCronJob } from \"./internal/cron/run-job.js\";\nimport {\n getSchedulerState,\n scheduleJob,\n setCronFireHandler,\n startScheduler,\n stopScheduler,\n unscheduleJob,\n} from \"./internal/cron/scheduler.js\";\nimport { deleteJob, getJob, jobCount, listJobs, upsertJob } from \"./internal/cron/store.js\";\nimport { nextRunAt, validateCronExpression, validateTimezone } from \"./internal/cron/validate.js\";\nimport { resolveApiKey } from \"./internal/env.js\";\nimport { generateCronId } from \"./internal/ids.js\";\nimport type { AgentOptions, ListResult } from \"./types/agent.js\";\nimport type {\n CronCreateOptions,\n CronGetOptions,\n CronJob,\n CronListOptions,\n CronOperationOptions,\n CronRunOptions,\n CronRuntime,\n CronSchedulerStatus,\n CronStartOptions,\n} from \"./types/cron.js\";\nimport type { Run } from \"./types/run.js\";\n\n/**\n * Static façade for scheduling Theo agent runs on a cron expression.\n *\n * @public\n */\nexport class Cron {\n private constructor() {\n // Static-only façade.\n }\n\n /**\n * Create and persist a cron job.\n *\n * @public\n */\n static async create(options: CronCreateOptions): Promise<CronJob> {\n const job = await createCronJob(options);\n if (job.runtime === \"local\" && job.enabled !== false) scheduleJob(job);\n return job;\n }\n\n /**\n * List cron jobs (local, cloud, or both).\n *\n * @public\n */\n static list(options: CronListOptions = {}): Promise<ListResult<CronJob>> {\n const runtimeFilter = options.runtime;\n const items = listJobs().filter((job) =>\n runtimeFilter === undefined ? true : job.runtime === runtimeFilter,\n );\n return Promise.resolve({ items });\n }\n\n /**\n * Get a single cron job by ID.\n *\n * @public\n */\n static get(jobId: string, _options: CronGetOptions = {}): Promise<CronJob> {\n const job = getJob(jobId);\n if (job === undefined) {\n return Promise.reject(\n new UnknownAgentError(`Cron job ${jobId} not found`, { code: \"unknown_cron_job\" }),\n );\n }\n return Promise.resolve(job);\n }\n\n /**\n * Delete a cron job permanently.\n *\n * @public\n */\n static delete(jobId: string, _options: CronOperationOptions = {}): Promise<void> {\n unscheduleJob(jobId);\n deleteJob(jobId);\n return Promise.resolve();\n }\n\n /**\n * Re-enable a paused cron job.\n *\n * @public\n */\n static async enable(jobId: string, _options: CronOperationOptions = {}): Promise<CronJob> {\n return updateJobStatus(jobId, true);\n }\n\n /**\n * Pause a cron job without deleting it.\n *\n * @public\n */\n static async disable(jobId: string, _options: CronOperationOptions = {}): Promise<CronJob> {\n return updateJobStatus(jobId, false);\n }\n\n /**\n * Manually trigger a cron job off-schedule. Returns the resulting `Run`\n * (agent target) or `WorkflowRun` (workflow target — SE35).\n *\n * @public\n */\n static async run(\n jobId: string,\n _options: CronRunOptions = {},\n ): Promise<Run | import(\"./types/workflow.js\").WorkflowRun> {\n const job = getJob(jobId);\n if (job === undefined) {\n throw new UnknownAgentError(`Cron job ${jobId} not found`, { code: \"unknown_cron_job\" });\n }\n return runCronJob(job);\n }\n\n /**\n * Activate the in-process scheduler for local cron jobs.\n *\n * @public\n */\n static start(options: CronStartOptions = {}): Promise<void> {\n // Install the default fire handler so timer ticks actually drive a real\n // agent/workflow run. Users can override via `setCronFireHandler` from\n // `@theokit/sdk/internal` (test-mode hook). Handler body lives in\n // `internal/cron/fire-handler.ts` (testable + G8).\n setCronFireHandler(fireCronJobAsTask);\n startScheduler(options.cwd);\n return Promise.resolve();\n }\n\n /**\n * Stop the in-process scheduler. Jobs are preserved.\n *\n * @public\n */\n static stop(): Promise<void> {\n stopScheduler();\n return Promise.resolve();\n }\n\n /**\n * Snapshot of the local scheduler.\n *\n * @public\n */\n static status(_options: CronStartOptions = {}): Promise<CronSchedulerStatus> {\n const scheduler = getSchedulerState();\n return Promise.resolve({ running: scheduler.running, jobCount: jobCount() });\n }\n}\n\nasync function createCronJob(options: CronCreateOptions): Promise<CronJob> {\n validateCronTarget(options);\n\n validateCronExpression(options.cron);\n const timezone = options.timezone ?? \"UTC\";\n validateTimezone(timezone);\n\n // apiKey is accepted but not required for cron-create in fixture mode.\n resolveApiKey(options.apiKey);\n\n const runtime = detectRuntime(options);\n const now = Date.now();\n // Computed, not estimated. The predecessor returned now+1h for every expression, so a @yearly job\n // reported that it would run within the hour until the scheduler corrected it — and forever if the\n // scheduler never picked it up. Spread conditionally below: `nextRunAt` is optional, and \"no next\n // run\" is a real answer for a one-shot date in the past.\n const nextFireAt = nextRunAt(options.cron, timezone);\n const job: CronJob = {\n id: generateCronId(),\n cron: options.cron,\n timezone,\n enabled: options.enabled ?? true,\n status: options.enabled === false ? \"paused\" : \"scheduled\",\n runtime,\n createdAt: now,\n ...(nextFireAt === undefined ? {} : { nextRunAt: nextFireAt }),\n ...(options.name !== undefined ? { name: options.name } : {}),\n ...(options.message !== undefined ? { message: options.message } : {}),\n ...(options.agent !== undefined ? { agent: options.agent } : {}),\n ...(options.agentId !== undefined ? { agentId: options.agentId } : {}),\n ...(options.workflow !== undefined ? { workflow: options.workflow } : {}),\n ...(options.inputData !== undefined ? { inputData: options.inputData } : {}),\n };\n upsertJob(job);\n return job;\n}\n\n/**\n * SE35 (ADR 0014) — exactly ONE target (`agent` | `agentId` | `workflow`).\n * Agent targets require `message`; a workflow target takes `inputData` and MUST\n * NOT set `message`.\n */\nfunction validateCronTarget(options: CronCreateOptions): void {\n const targets = [options.agent, options.agentId, options.workflow].filter(\n (t) => t !== undefined,\n ).length;\n if (targets > 1) {\n throw new ConfigurationError(\n \"agent, agentId, and workflow are mutually exclusive — pass exactly one target.\",\n { code: \"cron_ambiguous_target\" },\n );\n }\n if (targets === 0) {\n throw new ConfigurationError(\n \"Cron job requires exactly one target: agent, agentId, or workflow.\",\n { code: \"cron_no_target\" },\n );\n }\n if (options.workflow !== undefined && options.message !== undefined) {\n throw new ConfigurationError(\n \"A workflow cron target takes inputData, not a message — remove `message`.\",\n { code: \"cron_workflow_message\" },\n );\n }\n if (options.workflow === undefined && options.message === undefined) {\n throw new ConfigurationError(\"An agent cron target requires a message.\", {\n code: \"cron_missing_message\",\n });\n }\n}\n\nfunction detectRuntime(options: CronCreateOptions): CronRuntime {\n // SE35 — a workflow target is a held in-memory instance; it can only run in\n // the local (in-process) scheduler. A workflow instance cannot cross the\n // cloud process boundary (ADR 0014).\n if (options.workflow !== undefined) return \"local\";\n if (options.agentId !== undefined) {\n return options.agentId.startsWith(\"bc-\") ? \"cloud\" : \"local\";\n }\n const agent = options.agent as AgentOptions | undefined;\n if (agent?.cloud !== undefined) return \"cloud\";\n return \"local\";\n}\n\nasync function updateJobStatus(jobId: string, enabled: boolean): Promise<CronJob> {\n const existing = getJob(jobId);\n if (existing === undefined) {\n throw new UnknownAgentError(`Cron job ${jobId} not found`, { code: \"unknown_cron_job\" });\n }\n const updated: CronJob = {\n ...existing,\n enabled,\n status: enabled ? \"scheduled\" : \"paused\",\n };\n upsertJob(updated);\n if (updated.runtime === \"local\") {\n if (enabled) {\n scheduleJob(updated);\n } else {\n unscheduleJob(updated.id);\n }\n }\n return updated;\n}\n"]}
@@ -0,0 +1,15 @@
1
+ import { registerBuiltins, listProviders, getProviderProfile } from './chunk-VWUXIVEI.js';
2
+
3
+ // src/providers.ts
4
+ function listProviders2() {
5
+ registerBuiltins();
6
+ return listProviders();
7
+ }
8
+ function getProviderProfile2(name) {
9
+ registerBuiltins();
10
+ return getProviderProfile(name);
11
+ }
12
+
13
+ export { getProviderProfile2 as getProviderProfile, listProviders2 as listProviders };
14
+ //# sourceMappingURL=chunk-XYFGKVZ7.js.map
15
+ //# sourceMappingURL=chunk-XYFGKVZ7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/providers.ts"],"names":["listProviders","getProviderProfile"],"mappings":";;;AA8BO,SAASA,cAAAA,GAA4C;AAC1D,EAAA,gBAAA,EAAiB;AACjB,EAAA,OAAO,aAAA,EAAa;AACtB;AAQO,SAASC,oBAAmB,IAAA,EAA2C;AAC5E,EAAA,gBAAA,EAAiB;AACjB,EAAA,OAAO,mBAAW,IAAI,CAAA;AACxB","file":"chunk-XYFGKVZ7.js","sourcesContent":["/**\n * Published as `@theokit/sdk/providers`.\n *\n * The provider registry, as public API.\n *\n * It was `@internal`, which meant the SDK was the only thing that could answer \"which providers\n * exist, and what does each one need?\". `theokit` consequently kept a hand-written list of three —\n * against the 46 registered here — so an agent declaring `ollama/qwen2.5:3b` routed to whatever\n * key happened to be set instead of to Ollama (usetheokit/theokit#326).\n *\n * A second table that nothing forces to agree with the first is not a cache, it is a future bug.\n * These two functions exist so there is one table.\n *\n * Both ensure the builtins are registered before answering: registration is lazy (it happens when\n * an agent is created, a run is routed, or a provider is defined), so a caller asking early would\n * otherwise get an empty registry and reasonably conclude the SDK knows nothing.\n */\n\nimport { registerBuiltins } from \"./internal/providers/builtin/index.js\";\nimport {\n getProviderProfile as getProfile,\n listProviders as listProfiles,\n} from \"./internal/providers/registry.js\";\nimport type { ProviderProfile } from \"./internal/providers/types.js\";\n\n/**\n * Every registered provider — builtins, the JSON catalog, and anything a plugin registered.\n *\n * @public\n */\nexport function listProviders(): readonly ProviderProfile[] {\n registerBuiltins();\n return listProfiles();\n}\n\n/**\n * One provider by name or alias (`lm-studio` resolves to `lmstudio`), or `undefined` when nothing\n * has registered it.\n *\n * @public\n */\nexport function getProviderProfile(name: string): ProviderProfile | undefined {\n registerBuiltins();\n return getProfile(name);\n}\n"]}
@@ -0,0 +1,118 @@
1
+ 'use strict';
2
+
3
+ var chunkYJNYDJ2T_cjs = require('./chunk-YJNYDJ2T.cjs');
4
+ var chunkYIFFF23U_cjs = require('./chunk-YIFFF23U.cjs');
5
+ var chunk6LHQPOMI_cjs = require('./chunk-6LHQPOMI.cjs');
6
+
7
+ // src/internal/session/agent-session.ts
8
+ var pendingWrites = /* @__PURE__ */ new Map();
9
+ var recordCounts = /* @__PURE__ */ new Map();
10
+ function appendSessionMessage(agentId, message) {
11
+ const existing = chunkYJNYDJ2T_cjs.sessions.get(agentId) ?? [];
12
+ existing.push(message);
13
+ chunkYJNYDJ2T_cjs.sessions.delete(agentId);
14
+ chunkYJNYDJ2T_cjs.sessions.set(agentId, existing);
15
+ enforceCeiling();
16
+ }
17
+ var MAX_CACHED_SESSIONS = 32;
18
+ function enforceCeiling() {
19
+ while (chunkYJNYDJ2T_cjs.sessions.size > MAX_CACHED_SESSIONS) {
20
+ const oldest = chunkYJNYDJ2T_cjs.sessions.keys().next().value;
21
+ if (oldest === void 0) return;
22
+ chunkYJNYDJ2T_cjs.sessions.delete(oldest);
23
+ forgetBookkeeping(oldest);
24
+ }
25
+ }
26
+ function forgetBookkeeping(agentId) {
27
+ const suffix = chunkYJNYDJ2T_cjs.transcriptKey("", agentId).slice(0 - agentId.length - 2);
28
+ for (const k of [...chunkYJNYDJ2T_cjs.hydratedKeys]) if (k.endsWith(suffix)) chunkYJNYDJ2T_cjs.hydratedKeys.delete(k);
29
+ for (const k of [...pendingWrites.keys()]) if (k.endsWith(suffix)) pendingWrites.delete(k);
30
+ for (const k of [...recordCounts.keys()]) if (k.endsWith(suffix)) recordCounts.delete(k);
31
+ }
32
+ function discardSession(cwd, agentId) {
33
+ const key = chunkYJNYDJ2T_cjs.transcriptKey(cwd, agentId);
34
+ let removed = 0;
35
+ if (chunkYJNYDJ2T_cjs.hydratedKeys.delete(key)) removed++;
36
+ if (pendingWrites.delete(key)) removed++;
37
+ if (recordCounts.delete(key)) removed++;
38
+ return removed;
39
+ }
40
+ function getSessionMessages(agentId) {
41
+ return chunkYJNYDJ2T_cjs.sessions.get(agentId) ?? [];
42
+ }
43
+ function persistTurnToTranscript(store, loc, sessionId, turn, onCompact) {
44
+ const key = chunkYJNYDJ2T_cjs.transcriptKey(loc.cwd, loc.agentId);
45
+ const chained = (pendingWrites.get(key) ?? Promise.resolve()).then(async () => {
46
+ try {
47
+ await chunkYIFFF23U_cjs.persistTurn(store, loc, sessionId, turn);
48
+ const count = (recordCounts.get(key) ?? 0) + 1;
49
+ recordCounts.set(key, count);
50
+ if (turn.autoCompact !== void 0) {
51
+ const { autoCompactIfNeeded } = await import('./compact-session-BHTPCIHA.cjs');
52
+ const fired = await autoCompactIfNeeded({
53
+ store,
54
+ loc,
55
+ sessionId,
56
+ usageTotal: turn.autoCompact.usageTotal,
57
+ contextWindow: turn.autoCompact.contextWindow,
58
+ turnCount: count,
59
+ summarize: turn.autoCompact.summarize
60
+ });
61
+ if (fired) onCompact?.();
62
+ }
63
+ } catch (cause) {
64
+ const msg = cause instanceof Error ? cause.message : String(cause);
65
+ chunk6LHQPOMI_cjs.diag(`[theokit-sdk] session transcript write failed (${loc.agentId}): ${msg}
66
+ `);
67
+ }
68
+ });
69
+ pendingWrites.set(
70
+ key,
71
+ chained.then(
72
+ () => void 0,
73
+ () => void 0
74
+ )
75
+ );
76
+ }
77
+ async function hydrateSession(agentId, loc) {
78
+ const key = chunkYJNYDJ2T_cjs.transcriptKey(loc.cwd, agentId);
79
+ if (chunkYJNYDJ2T_cjs.hydratedKeys.has(key)) return;
80
+ chunkYJNYDJ2T_cjs.hydratedKeys.add(key);
81
+ const persisted = await chunkYIFFF23U_cjs.readSessionMessages(loc.store, agentId);
82
+ if (persisted.length === 0) return;
83
+ chunkYJNYDJ2T_cjs.sessions.set(agentId, persisted);
84
+ }
85
+ async function flushSessionWrites() {
86
+ while (pendingWrites.size > 0) {
87
+ const all = Array.from(pendingWrites.values());
88
+ pendingWrites.clear();
89
+ await Promise.all(all);
90
+ }
91
+ }
92
+ function clearSession(agentId) {
93
+ chunkYJNYDJ2T_cjs.sessions.delete(agentId);
94
+ }
95
+ function enqueueSessionWrite(cwd, agentId, fn) {
96
+ const key = chunkYJNYDJ2T_cjs.transcriptKey(cwd, agentId);
97
+ const prior = pendingWrites.get(key) ?? Promise.resolve();
98
+ const result = prior.then(fn);
99
+ pendingWrites.set(
100
+ key,
101
+ result.then(
102
+ () => void 0,
103
+ () => void 0
104
+ )
105
+ );
106
+ return result;
107
+ }
108
+
109
+ exports.appendSessionMessage = appendSessionMessage;
110
+ exports.clearSession = clearSession;
111
+ exports.discardSession = discardSession;
112
+ exports.enqueueSessionWrite = enqueueSessionWrite;
113
+ exports.flushSessionWrites = flushSessionWrites;
114
+ exports.getSessionMessages = getSessionMessages;
115
+ exports.hydrateSession = hydrateSession;
116
+ exports.persistTurnToTranscript = persistTurnToTranscript;
117
+ //# sourceMappingURL=chunk-Y2KYR2ED.cjs.map
118
+ //# sourceMappingURL=chunk-Y2KYR2ED.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internal/session/agent-session.ts"],"names":["sessions","transcriptKey","hydratedKeys","persistTurn","diag","readSessionMessages"],"mappings":"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","file":"chunk-Y2KYR2ED.cjs","sourcesContent":["import type { SessionStore } from \"../../types/session-store.js\";\nimport {\n type PersistTurnInput,\n persistTurn,\n readSessionMessages,\n type TranscriptLocation,\n} from \"./agent-session-store.js\";\n\n/**\n * Per-agent conversation history kept across runs (and across `Agent.resume()`\n * within the same process). Lets the fixture responder recall prior facts when\n * the user asks a follow-up question.\n *\n * SE40 — disk persistence IS the native Claude-shaped `.jsonl` transcript. The\n * in-memory cache holds the narrowed `SessionMessage[]` (user/assistant text) so\n * a send can read `priorMessages` synchronously; the whole rich turn (user +\n * assistant + tool blocks) lands on disk once per send via {@link persistTurnToTranscript}\n * (fed by `run.conversation()`). Hydration on resume reconstructs the session by\n * walking the transcript DAG (`readSessionMessages`).\n *\n * @internal\n */\n\n// `SessionMessage` lives in `./session-types.ts` (leaf types file). Re-exported\n// for back-compat with downstream importers that pulled it from here.\nexport type { SessionMessage } from \"./types.js\";\n\nimport type { SessionMessage } from \"./types.js\";\n\n// M75 — the cache lives in a leaf; see session-cache.ts for the reason (cycle broken by extraction).\nexport {\n hydratedKeys,\n invalidateSessionCache,\n sessions,\n transcriptKey,\n} from \"./session-cache.js\";\n\nimport { diag } from \"../diagnostics.js\";\nimport { globalSingleton } from \"../global-singleton.js\";\nimport { hydratedKeys, sessions, transcriptKey } from \"./session-cache.js\";\n\nconst pendingWrites = new Map<string, Promise<void>>();\nconst recordCounts = new Map<string, number>();\n\n/**\n * Append a session message to the in-memory cache only. Disk persistence for the\n * whole turn happens once per send via {@link persistTurnToTranscript}; the cache\n * feeds `priorMessages` / `onBeforeSend.previousMessageCount` synchronously.\n *\n * @internal\n */\nexport function appendSessionMessage(agentId: string, message: SessionMessage): void {\n const existing = sessions.get(agentId) ?? [];\n existing.push(message);\n // `delete` + `set` reinserts at the END: a JS `Map` preserves insertion order, so the first key\n // is always the least recently touched. That is the entire LRU, with no new structure (parsimony\n // rungs 2/5 — the ordering we need is already a language guarantee).\n sessions.delete(agentId);\n sessions.set(agentId, existing);\n enforceCeiling();\n}\n\n/**\n * Ceiling on sessions kept in memory.\n *\n * The runtime only reads the **active** session; the rest is pure cache, rebuildable from the\n * on-disk transcript. 32 is deliberately generous — the primary removal path is the explicit\n * `discardSession()` at the end of the agent's life, and this ceiling is a safety net against a\n * long-lived process running hundreds of sessions (plan risk #2: a tight ceiling could evict a\n * session still referenced by an in-flight async path).\n */\nexport const MAX_CACHED_SESSIONS = 32;\n\nfunction enforceCeiling(): void {\n while (sessions.size > MAX_CACHED_SESSIONS) {\n const oldest = sessions.keys().next().value;\n if (oldest === undefined) return;\n sessions.delete(oldest);\n forgetBookkeeping(oldest);\n }\n}\n\n/**\n * Erases the bookkeeping for an `agentId` across EVERY `cwd` it appears in.\n *\n * The three maps are keyed by `transcriptKey(cwd, agentId)`; `sessions` is the only one keyed by the\n * raw `agentId`. The ceiling's first version deleted from all three using `sessions`' key — that is,\n * deleted nothing — and left `hydratedKeys` **orphaned**. Since `hydrateSession` returns early when\n * the marker is present, an evicted session came back **empty** instead of rehydrating from disk:\n * silent amnesia, and a regression new to M95, because before it nothing evicted.\n *\n * The ceiling only knows the `agentId`, not the `cwd`, so it scans by suffix — which is the format\n * `transcriptKey` produces. A scan rather than an index because these maps hold tens of entries, not\n * thousands: a reverse index here would be new structure for a problem that does not exist.\n */\nfunction forgetBookkeeping(agentId: string): void {\n const suffix = transcriptKey(\"\", agentId).slice(0 - agentId.length - 2);\n for (const k of [...hydratedKeys]) if (k.endsWith(suffix)) hydratedKeys.delete(k);\n for (const k of [...pendingWrites.keys()]) if (k.endsWith(suffix)) pendingWrites.delete(k);\n for (const k of [...recordCounts.keys()]) if (k.endsWith(suffix)) recordCounts.delete(k);\n}\n\n/**\n * Erases the agent's module bookkeeping and returns how many entries were removed.\n *\n * M95 — `invalidateSessionCache` used to clear **two** of the four maps (`sessions`, `hydratedKeys`);\n * `pendingWrites` and `recordCounts` were never touched by id, so they grew for the life of the\n * process. Neither is large per entry — the leak is in count, not volume — but a cache with no owner\n * for removal is a cache that only grows.\n *\n * Returns the count so the caller can prove the removal; a second discard returns 0, which is what\n * makes the idempotency test possible without exposing the maps.\n */\nexport function discardSession(cwd: string, agentId: string): number {\n const key = transcriptKey(cwd, agentId);\n let removed = 0;\n // `sessions` is NOT erased here — and the distinction is measured, not aesthetic. It holds the\n // readable conversation, and there is a legitimate reader AFTER dispose: the golden\n // `two-concurrent-sends-serialize` calls `getSessionMessages(agentId)` after `agent.dispose()`.\n // Erasing it here returned an empty list and broke two goldens. What bounds it is the LRU ceiling\n // above; the three below are pure bookkeeping, with no post-dispose reader.\n //\n // The key is `transcriptKey(cwd, agentId)` in ALL THREE — not the raw `agentId`. The first version\n // erased two of them by `agentId` and therefore **never erased anything**; the test did not catch\n // it because it only asserted that the SECOND call returns 0, which is true either way.\n if (hydratedKeys.delete(key)) removed++;\n if (pendingWrites.delete(key)) removed++;\n if (recordCounts.delete(key)) removed++;\n return removed;\n}\n\nexport function getSessionMessages(agentId: string): SessionMessage[] {\n return sessions.get(agentId) ?? [];\n}\n\n/**\n * Persist a full conversation turn (user + assistant + tool blocks) to the native\n * transcript. Chained per-(agent, transcript) so on-disk order matches send order,\n * and fire-and-forget so `send()` is not blocked by disk I/O. Every\n * M50 — when the caller supplies `turn.autoCompact`, size-driven auto-compaction (usage real vs\n * the model's context window) runs in this same chain, surfaced via the optional `onCompact` observer.\n *\n * @internal\n */\nexport function persistTurnToTranscript(\n store: SessionStore,\n loc: TranscriptLocation,\n sessionId: string,\n turn: PersistTurnInput,\n onCompact?: () => void,\n): void {\n const key = transcriptKey(loc.cwd, loc.agentId);\n // PRE-EXISTING debt, exposed when M75 fixed the Biome config that used to abort before\n // sweeping these files (a nested root under refactor/). It is not new code and was not touched\n // by M75; refactoring SDK internals without review would trade a visible problem for a diff\n // risky. Tracked in usetheodev/theokit-sdk#151.\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: see the reason just above\n const chained = (pendingWrites.get(key) ?? Promise.resolve()).then(async () => {\n try {\n await persistTurn(store, loc, sessionId, turn);\n const count = (recordCounts.get(key) ?? 0) + 1;\n recordCounts.set(key, count);\n // M50 — the 50-turn no-summary boundary stub is GONE (it silently amnesia'd the session).\n // Auto-compaction is now size-driven with a real summary: see `maybeAutoCompact` below,\n // invoked in this same write chain by the post-run lifecycle when usage is known.\n if (turn.autoCompact !== undefined) {\n const { autoCompactIfNeeded } = await import(\"./compact-session.js\");\n const fired = await autoCompactIfNeeded({\n store,\n loc,\n sessionId,\n usageTotal: turn.autoCompact.usageTotal,\n contextWindow: turn.autoCompact.contextWindow,\n turnCount: count,\n summarize: turn.autoCompact.summarize,\n });\n if (fired) onCompact?.();\n }\n } catch (cause) {\n const msg = cause instanceof Error ? cause.message : String(cause);\n diag(`[theokit-sdk] session transcript write failed (${loc.agentId}): ${msg}\\n`);\n }\n });\n pendingWrites.set(\n key,\n chained.then(\n () => undefined,\n () => undefined,\n ),\n );\n}\n\n/**\n * Load the persisted transcript into the in-memory cache. Idempotent per\n * (baseDir, cwd, agentId). Call once per agent lifecycle before the first read.\n *\n * @internal\n */\nexport async function hydrateSession(\n agentId: string,\n loc: { store: SessionStore; cwd: string },\n): Promise<void> {\n const key = transcriptKey(loc.cwd, agentId);\n if (hydratedKeys.has(key)) return;\n hydratedKeys.add(key);\n\n const persisted = await readSessionMessages(loc.store, agentId);\n if (persisted.length === 0) return;\n // M51 review F4 — the DISK is the source of truth at hydration time: after an invalidation\n // (compact/inject), an in-flight turn may have repopulated the cache with a SINGLE message before\n // this hydrate ran; the old \"skip when non-empty\" guard then pinned the parent to a 1-message\n // context (history + injected pair lost until restart). The persist chain serializes writes, so\n // the disk already contains that in-flight turn — replacing is always correct.\n sessions.set(agentId, persisted);\n}\n\n/**\n * Wait for all pending transcript writes to settle. Used by tests and by the\n * agent dispose path so on-disk state matches in-memory before the caller proceeds.\n *\n * @internal\n */\nexport async function flushSessionWrites(): Promise<void> {\n while (pendingWrites.size > 0) {\n const all = Array.from(pendingWrites.values());\n pendingWrites.clear();\n await Promise.all(all);\n }\n}\n\n/**\n * Drop the in-memory message cache for `agentId` and NOTHING else — the hydration marker in\n * `hydratedKeys` deliberately stays.\n *\n * That asymmetry is the feature, not an oversight, and it is what separates this from\n * `invalidateSessionCache`, which drops both. The single caller is the personality switch's\n * `reset: true` path (`internal/personality/switch.ts`): leaving the marker set makes\n * `hydrateSession` return early, so the next send starts from an EMPTY context instead of\n * replaying the pre-reset transcript off disk. Clearing the marker here would re-hydrate the\n * conversation the reset was asked to discard.\n *\n * The same shape read as a bug one function up: `forgetBookkeeping` documents an evicted session\n * coming back empty as \"silent amnesia\". The difference is intent — eviction wants the transcript\n * back, a reset does not. Anyone reaching for this to invalidate a cache wants\n * `invalidateSessionCache(cwd, agentId)` instead.\n */\nexport function clearSession(agentId: string): void {\n sessions.delete(agentId);\n}\n\n/**\n * M50 review F5 — run `fn` serialized on the SAME per-(cwd,agentId) write chain the per-turn\n * persistence uses, so a manual `Agent.compact` can never interleave with an in-flight turn's\n * writes (boundary landing mid-turn would orphan the turn from the replay).\n */\nexport function enqueueSessionWrite<T>(\n cwd: string,\n agentId: string,\n fn: () => Promise<T>,\n): Promise<T> {\n const key = transcriptKey(cwd, agentId);\n const prior = pendingWrites.get(key) ?? Promise.resolve();\n const result = prior.then(fn);\n pendingWrites.set(\n key,\n result.then(\n () => undefined,\n () => undefined,\n ),\n );\n return result;\n}\n\n/** Test-only: drop every cached session and hydration marker. @internal */\nexport function clearAllSessions(): void {\n sessions.clear();\n hydratedKeys.clear();\n recordCounts.clear();\n // M50 review F11 — the auto-compact attempt marks live on globalThis; tests reset them here.\n // Through the helper, with the SAME key compact-session.ts uses: two files hand-rolling one slot is\n // how two copies of a mechanism drift apart.\n globalSingleton(\n \"theokit-sdk.session.auto-compact-attempts\",\n () => new Map<string, number>(),\n ).clear();\n}\n"]}
@@ -0,0 +1,109 @@
1
+ 'use strict';
2
+
3
+ var chunkGZV6AVRL_cjs = require('./chunk-GZV6AVRL.cjs');
4
+
5
+ // src/internal/session/agent-session-store.ts
6
+ function seedTranscript(prior, opts) {
7
+ return chunkGZV6AVRL_cjs.SessionTranscript.fromRecords(prior, opts);
8
+ }
9
+ function applyThinkingStep(assistant, message) {
10
+ assistant.thinking = message.text;
11
+ if (message.signature !== void 0) assistant.thinkingSignature = message.signature;
12
+ }
13
+ function mapAgentTurn(steps) {
14
+ const assistant = {};
15
+ const toolResults = [];
16
+ const toolCalls = [];
17
+ for (const step of steps) {
18
+ if (step.type === "thinkingMessage") applyThinkingStep(assistant, step.message);
19
+ else if (step.type === "assistantMessage") assistant.text = step.message.text;
20
+ else if (step.type === "toolCall")
21
+ toolCalls.push({
22
+ id: step.message.callId,
23
+ name: step.message.name,
24
+ input: step.message.args ?? {}
25
+ });
26
+ else
27
+ toolResults.push({
28
+ toolUseId: step.message.callId,
29
+ content: step.message.result,
30
+ isError: step.message.isError
31
+ });
32
+ }
33
+ if (toolCalls.length > 0) assistant.toolCalls = toolCalls;
34
+ return { assistant, toolResults };
35
+ }
36
+ function hasAssistantContent(a) {
37
+ return a.text !== void 0 || a.thinking !== void 0 || (a.toolCalls?.length ?? 0) > 0;
38
+ }
39
+ function appendConversation(transcript, conversation) {
40
+ for (const ct of conversation) {
41
+ if (ct.type !== "agentConversationTurn") continue;
42
+ const { assistant, toolResults } = mapAgentTurn(ct.turn.steps);
43
+ if (hasAssistantContent(assistant)) transcript.appendAssistantTurn(assistant);
44
+ if (toolResults.length > 0) transcript.appendToolResults(toolResults);
45
+ }
46
+ }
47
+ async function readSessionMessages(store, agentId) {
48
+ const records = await store.readRecords(agentId);
49
+ return chunkGZV6AVRL_cjs.reconstructMessages(records).map(narrowToSessionMessage);
50
+ }
51
+ function partToText(p) {
52
+ if (p.type === "text") return p.text ?? "";
53
+ if (p.type === "tool_use") return `[tool call] ${p.name ?? ""}`;
54
+ if (p.type === "tool_result") {
55
+ const body = typeof p.content === "string" ? p.content : JSON.stringify(p.content);
56
+ return `[tool result] ${body}`;
57
+ }
58
+ return "";
59
+ }
60
+ function partToStructured(p) {
61
+ if (p.type === "text") return { type: "text", text: p.text ?? "" };
62
+ if (p.type === "tool_use") {
63
+ return {
64
+ type: "tool_use",
65
+ id: p.id ?? "",
66
+ name: p.name ?? "",
67
+ input: p.input ?? {}
68
+ };
69
+ }
70
+ if (p.type === "tool_result") {
71
+ return {
72
+ type: "tool_result",
73
+ toolUseId: p.toolUseId ?? "",
74
+ // Reconstructed tool results carry either a string or the SE7 content blocks; both are
75
+ // already the session shape, so this narrows `unknown` rather than converting anything.
76
+ content: p.content,
77
+ ...p.isError === true ? { isError: true } : {}
78
+ };
79
+ }
80
+ return void 0;
81
+ }
82
+ function narrowToSessionMessage(m) {
83
+ const role = m.role === "user" ? "user" : "assistant";
84
+ const text = m.content.map(partToText).filter((s) => s.length > 0).join("\n");
85
+ const parts = m.content.map(partToStructured).filter((p) => p !== void 0);
86
+ return { role, text, parts };
87
+ }
88
+ function deltaRecords(transcript, priorLength) {
89
+ return transcript.records().slice(priorLength);
90
+ }
91
+ async function persistTurn(store, loc, sessionId, turn) {
92
+ const prior = await store.readRecords(loc.agentId);
93
+ const transcript = seedTranscript(prior, { cwd: loc.cwd, sessionId, model: loc.model });
94
+ transcript.appendUserTurn(turn.userText);
95
+ appendConversation(transcript, turn.conversation);
96
+ await store.appendRecords(loc.agentId, deltaRecords(transcript, prior.length));
97
+ }
98
+ async function appendCompactBoundaryRecord(store, loc, sessionId, meta) {
99
+ const prior = await store.readRecords(loc.agentId);
100
+ const transcript = seedTranscript(prior, { cwd: loc.cwd, sessionId, model: loc.model });
101
+ transcript.appendCompactBoundary(meta);
102
+ await store.appendRecords(loc.agentId, deltaRecords(transcript, prior.length));
103
+ }
104
+
105
+ exports.appendCompactBoundaryRecord = appendCompactBoundaryRecord;
106
+ exports.persistTurn = persistTurn;
107
+ exports.readSessionMessages = readSessionMessages;
108
+ //# sourceMappingURL=chunk-YIFFF23U.cjs.map
109
+ //# sourceMappingURL=chunk-YIFFF23U.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internal/session/agent-session-store.ts"],"names":["SessionTranscript","reconstructMessages"],"mappings":"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","file":"chunk-YIFFF23U.cjs","sourcesContent":["/**\n * SE40 — native session store over the Claude-shaped `.jsonl` transcript.\n *\n * The theokit session format IS the Claude Code record shape (see\n * `../../persistence/session-transcript.ts`). This module owns the FS lifecycle:\n * read existing records, seed a {@link SessionTranscript}'s parent chain, append\n * the new turn (user + assistant/tool blocks), and write append-only. Compaction\n * appends a `compact_boundary` record (a new root) — it NEVER shrinks the line\n * set (that would break the DAG). Reads reconstruct `LlmMessage[]` via\n * {@link reconstructMessages}, narrowed to the in-memory {@link SessionMessage}.\n *\n * @internal\n */\n\nimport type { ToolResultContentBlock } from \"../../types/content-blocks.js\";\nimport type { ConversationStep, ConversationTurn } from \"../../types/conversation.js\";\nimport type { SessionStore } from \"../../types/session-store.js\";\nimport {\n type AssistantTurn,\n reconstructMessages,\n type SessionRecord,\n SessionTranscript,\n} from \"../persistence/session-transcript.js\";\nimport type { SessionMessage, SessionMessagePart } from \"./types.js\";\n\n/**\n * Seed a {@link SessionTranscript} from the already-on-disk records so a new\n * append parents correctly on the existing DAG leaf. The transcript re-emits the\n * seeded records verbatim before the new turn, so the whole file rewrites atomically\n * as one append-only line set. Returns the transcript primed with the prior records.\n */\nfunction seedTranscript(\n prior: readonly SessionRecord[],\n opts: { cwd: string; sessionId: string; model: string },\n): SessionTranscript {\n return SessionTranscript.fromRecords(prior, opts);\n}\n\n/** The turn to persist: the user's text plus the rich per-turn conversation view. */\nexport interface PersistTurnInput {\n userText: string;\n conversation: readonly ConversationTurn[];\n /**\n * M50 — when supplied, size-driven auto-compaction runs in the SAME write chain after the turn\n * persists (usage real vs the model's context window; summarizer injected by the caller).\n */\n autoCompact?: {\n usageTotal?: number | undefined;\n contextWindow?: number | undefined;\n summarize: (\n messages: readonly import(\"../../compaction.js\").CompressibleMessage[],\n ) => Promise<string>;\n };\n}\n\ninterface MappedTurn {\n assistant: AssistantTurn;\n toolResults: Array<{ toolUseId: string; content: string; isError?: boolean }>;\n}\n\n/**\n * theokit#122 — record the turn's thinking block, signature included.\n *\n * The signature is what makes the block replayable: without it the resumed turn is rejected by\n * Anthropic with `400 \"thinking blocks cannot be modified\"`.\n */\nfunction applyThinkingStep(\n assistant: AssistantTurn,\n message: { text: string; signature?: string },\n): void {\n assistant.thinking = message.text;\n if (message.signature !== undefined) assistant.thinkingSignature = message.signature;\n}\n\n/** Fold one agent turn's steps into an assistant record + paired tool results. */\nfunction mapAgentTurn(steps: readonly ConversationStep[]): MappedTurn {\n const assistant: AssistantTurn = {};\n const toolResults: MappedTurn[\"toolResults\"] = [];\n const toolCalls: NonNullable<AssistantTurn[\"toolCalls\"]> = [];\n for (const step of steps) {\n if (step.type === \"thinkingMessage\") applyThinkingStep(assistant, step.message);\n else if (step.type === \"assistantMessage\") assistant.text = step.message.text;\n else if (step.type === \"toolCall\")\n toolCalls.push({\n id: step.message.callId,\n name: step.message.name,\n input: (step.message.args as Record<string, unknown> | undefined) ?? {},\n });\n else\n toolResults.push({\n toolUseId: step.message.callId,\n content: step.message.result,\n isError: step.message.isError,\n });\n }\n if (toolCalls.length > 0) assistant.toolCalls = toolCalls;\n return { assistant, toolResults };\n}\n\n/** True when the assistant record carries any content worth emitting. */\nfunction hasAssistantContent(a: AssistantTurn): boolean {\n return a.text !== undefined || a.thinking !== undefined || (a.toolCalls?.length ?? 0) > 0;\n}\n\n/**\n * Map the rich `ConversationTurn[]` (from `run.conversation()`) into the native\n * assistant/tool records. One transcript turn is: an `assistant` record carrying\n * thinking + text + tool_use blocks, then (when present) a `user` record carrying\n * the paired tool_result blocks. Tool results pair with tool_use by `callId`.\n */\nfunction appendConversation(\n transcript: SessionTranscript,\n conversation: readonly ConversationTurn[],\n): void {\n for (const ct of conversation) {\n if (ct.type !== \"agentConversationTurn\") continue;\n const { assistant, toolResults } = mapAgentTurn(ct.turn.steps);\n if (hasAssistantContent(assistant)) transcript.appendAssistantTurn(assistant);\n if (toolResults.length > 0) transcript.appendToolResults(toolResults);\n }\n}\n\n/**\n * The per-agent transcript metadata used to seed a {@link SessionTranscript}. The\n * actual record I/O goes through the injected {@link SessionStore} (SE41), so this\n * no longer carries a `baseDir` — the store is already bound to its location.\n */\nexport interface TranscriptLocation {\n cwd: string;\n agentId: string;\n model: string;\n}\n\n/**\n * Read the session's records via the {@link SessionStore} and reconstruct the\n * resumable history, narrowed to the in-memory {@link SessionMessage} shape\n * (user/assistant text). Tool turns fold into assistant-role context so resume\n * keeps tool history. Works identically for the FS default and an external store.\n */\nexport async function readSessionMessages(\n store: SessionStore,\n agentId: string,\n): Promise<SessionMessage[]> {\n const records = await store.readRecords(agentId);\n return reconstructMessages(records).map(narrowToSessionMessage);\n}\n\ntype NarrowPart = {\n type: string;\n text?: string;\n content?: unknown;\n name?: string;\n id?: string;\n toolUseId?: string;\n input?: unknown;\n isError?: boolean;\n};\n\n/** Render one reconstructed content part as folded session text. */\nfunction partToText(p: NarrowPart): string {\n if (p.type === \"text\") return p.text ?? \"\";\n if (p.type === \"tool_use\") return `[tool call] ${p.name ?? \"\"}`;\n if (p.type === \"tool_result\") {\n const body = typeof p.content === \"string\" ? p.content : JSON.stringify(p.content);\n return `[tool result] ${body}`;\n }\n return \"\";\n}\n\n/**\n * theokit#146 — the same part, kept as STRUCTURE.\n *\n * `partToText` above is what the model replay wants; a host rendering tool cards needs the call id,\n * the tool name and the arguments, none of which survive `[tool call] NAME`. Both projections are\n * produced from the one reconstructed part, so they cannot drift apart.\n *\n * Returns `undefined` for a part with no display meaning (e.g. an image placeholder the session\n * projection does not model), which the caller filters out.\n */\nfunction partToStructured(p: NarrowPart): SessionMessagePart | undefined {\n if (p.type === \"text\") return { type: \"text\", text: p.text ?? \"\" };\n if (p.type === \"tool_use\") {\n return {\n type: \"tool_use\",\n id: p.id ?? \"\",\n name: p.name ?? \"\",\n input: (p.input ?? {}) as Record<string, unknown>,\n };\n }\n if (p.type === \"tool_result\") {\n return {\n type: \"tool_result\",\n toolUseId: p.toolUseId ?? \"\",\n // Reconstructed tool results carry either a string or the SE7 content blocks; both are\n // already the session shape, so this narrows `unknown` rather than converting anything.\n content: p.content as string | ReadonlyArray<ToolResultContentBlock>,\n ...(p.isError === true ? { isError: true } : {}),\n };\n }\n return undefined;\n}\n\n/** Flatten a reconstructed `LlmMessage` to the narrowed in-memory `SessionMessage`. */\nfunction narrowToSessionMessage(m: {\n role: \"system\" | \"user\" | \"assistant\";\n content: NarrowPart[];\n}): SessionMessage {\n const role = m.role === \"user\" ? \"user\" : \"assistant\";\n const text = m.content\n .map(partToText)\n .filter((s) => s.length > 0)\n .join(\"\\n\");\n const parts = m.content\n .map(partToStructured)\n .filter((p): p is SessionMessagePart => p !== undefined);\n return { role, text, parts };\n}\n\n/** The records appended by the last turn (the delta beyond the seeded prior). */\nfunction deltaRecords(\n transcript: SessionTranscript,\n priorLength: number,\n): readonly SessionRecord[] {\n return transcript.records().slice(priorLength);\n}\n\n/**\n * Persist one conversation turn (user + assistant/tool records) to the session\n * store, append-only. Reads the prior records to seed the parent chain, folds the\n * new turn, and appends ONLY the delta via {@link SessionStore.appendRecords}\n * (the store owns the append atomicity — the FS default serializes under a file\n * lock). Within one process, turns for an agent are already chained upstream, so\n * the read→append is ordered; cross-host ordering is the external store's contract.\n */\nexport async function persistTurn(\n store: SessionStore,\n loc: TranscriptLocation,\n sessionId: string,\n turn: PersistTurnInput,\n): Promise<void> {\n const prior = await store.readRecords(loc.agentId);\n const transcript = seedTranscript(prior, { cwd: loc.cwd, sessionId, model: loc.model });\n transcript.appendUserTurn(turn.userText);\n appendConversation(transcript, turn.conversation);\n await store.appendRecords(loc.agentId, deltaRecords(transcript, prior.length));\n}\n\n/**\n * Append-only compaction: add a `compact_boundary` system record (a new root) so\n * resume replays only the post-boundary continuation. Appends only the boundary\n * record via the store — NEVER rewrites or shrinks the prior records.\n */\nexport async function appendCompactBoundaryRecord(\n store: SessionStore,\n loc: TranscriptLocation,\n sessionId: string,\n meta: { preTokens: number; trigger: string },\n): Promise<void> {\n const prior = await store.readRecords(loc.agentId);\n const transcript = seedTranscript(prior, { cwd: loc.cwd, sessionId, model: loc.model });\n transcript.appendCompactBoundary(meta);\n await store.appendRecords(loc.agentId, deltaRecords(transcript, prior.length));\n}\n"]}
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ var chunkNVXXWAU7_cjs = require('./chunk-NVXXWAU7.cjs');
4
+
5
+ // src/internal/session/session-cache.ts
6
+ var sessions = chunkNVXXWAU7_cjs.globalSingleton(
7
+ "theokit-sdk.session.cache.messages",
8
+ () => /* @__PURE__ */ new Map()
9
+ );
10
+ var hydratedKeys = chunkNVXXWAU7_cjs.globalSingleton(
11
+ "theokit-sdk.session.cache.hydrated",
12
+ () => /* @__PURE__ */ new Set()
13
+ );
14
+ function transcriptKey(cwd, agentId) {
15
+ return `${cwd}::${agentId}`;
16
+ }
17
+ function invalidateSessionCache(cwd, agentId) {
18
+ sessions.delete(agentId);
19
+ hydratedKeys.delete(transcriptKey(cwd, agentId));
20
+ }
21
+
22
+ exports.hydratedKeys = hydratedKeys;
23
+ exports.invalidateSessionCache = invalidateSessionCache;
24
+ exports.sessions = sessions;
25
+ exports.transcriptKey = transcriptKey;
26
+ //# sourceMappingURL=chunk-YJNYDJ2T.cjs.map
27
+ //# sourceMappingURL=chunk-YJNYDJ2T.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internal/session/session-cache.ts"],"names":["globalSingleton"],"mappings":";;;;;AAuBO,IAAM,QAAA,GAAWA,iCAAA;AAAA,EACtB,oCAAA;AAAA,EACA,0BAAU,GAAA;AACZ;AACO,IAAM,YAAA,GAAeA,iCAAA;AAAA,EAC1B,oCAAA;AAAA,EACA,0BAAU,GAAA;AACZ;AAGO,SAAS,aAAA,CAAc,KAAa,OAAA,EAAyB;AAClE,EAAA,OAAO,CAAA,EAAG,GAAG,CAAA,EAAA,EAAK,OAAO,CAAA,CAAA;AAC3B;AAOO,SAAS,sBAAA,CAAuB,KAAa,OAAA,EAAuB;AACzE,EAAA,QAAA,CAAS,OAAO,OAAO,CAAA;AACvB,EAAA,YAAA,CAAa,MAAA,CAAO,aAAA,CAAc,GAAA,EAAK,OAAO,CAAC,CAAA;AACjD","file":"chunk-YJNYDJ2T.cjs","sourcesContent":["import { globalSingleton } from \"../global-singleton.js\";\nimport type { SessionMessage } from \"./types.js\";\n\n/**\n * The in-memory session cache — in a LEAF module, on purpose.\n *\n * The state and the invalidator lived in `agent-session.ts`, and `compact-session.ts` imported\n * `invalidateSessionCache` from there — while `agent-session.ts` imported `autoCompactIfNeeded`\n * back. The cycle was broken at runtime (the return edge is a dynamic `await import()`), but the detector\n * counts the dynamic edge, and counting a dynamic import as a cycle makes the gate impossible to satisfy\n * without abandoning the canonical cycle-breaking technique.\n *\n * This state's natural owner was never `agent-session.ts`: they are two process-wide maps that both\n * modules read. Extracting them into a leaf removes the cycle under ANY detector, with no tool\n * policy and without changing a line of behavior.\n *\n * THE CLAIM THAT USED TO CLOSE THIS PARAGRAPH WAS FALSE. It said the same `Map`/`Set` instances\n * remain the only ones in the process \"because an ES module is a singleton\". A module is a singleton\n * per MODULE INSTANCE, and `internal/global-singleton.ts` exists in this repository, in writing, to\n * refute exactly that: a package loaded twice — two copies in `node_modules`, ESM and CJS side by\n * side, a monorepo with distinct versions — evaluates the module twice and produces two Maps that\n * cannot see each other. Both now go through the helper, which keys on the global symbol registry.\n */\nexport const sessions = globalSingleton(\n \"theokit-sdk.session.cache.messages\",\n () => new Map<string, SessionMessage[]>(),\n);\nexport const hydratedKeys = globalSingleton(\n \"theokit-sdk.session.cache.hydrated\",\n () => new Set<string>(),\n);\n\n/** The per-(cwd, agentId) transcript key for cache/hydration bookkeeping. */\nexport function transcriptKey(cwd: string, agentId: string): string {\n return `${cwd}::${agentId}`;\n}\n\n/**\n * M50 review F1 — drop BOTH the message cache and the hydration marker so the NEXT send re-hydrates\n * from disk. Without this, a compaction only helps after a process restart: the live process keeps\n * sending the full pre-compact history (the cache is read synchronously by every send).\n */\nexport function invalidateSessionCache(cwd: string, agentId: string): void {\n sessions.delete(agentId);\n hydratedKeys.delete(transcriptKey(cwd, agentId));\n}\n"]}
@@ -0,0 +1,127 @@
1
+ 'use strict';
2
+
3
+ var module$1 = require('module');
4
+
5
+ var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
6
+ // src/sanitize/coerce.ts
7
+ var cachedJsonrepair;
8
+ function loadJsonrepair() {
9
+ if (cachedJsonrepair === void 0) {
10
+ const req = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-YSTXFWQE.cjs', document.baseURI).href)));
11
+ cachedJsonrepair = req("jsonrepair").jsonrepair;
12
+ }
13
+ return cachedJsonrepair;
14
+ }
15
+ function isPlainObject(v) {
16
+ return v !== null && typeof v === "object" && !Array.isArray(v);
17
+ }
18
+ function toFiniteNumber(raw) {
19
+ if (raw === "") return void 0;
20
+ const n = Number(raw);
21
+ return Number.isFinite(n) && String(n) === raw ? n : void 0;
22
+ }
23
+ function tryJson(raw, repair) {
24
+ const t = raw.trimStart();
25
+ if (!(t.startsWith("{") || t.startsWith("["))) return void 0;
26
+ try {
27
+ return JSON.parse(repair ? loadJsonrepair()(t) : t);
28
+ } catch {
29
+ return void 0;
30
+ }
31
+ }
32
+ function heuristicCoerce(raw, repairJson) {
33
+ if (raw === "true") return true;
34
+ if (raw === "false") return false;
35
+ if (raw === "null") return null;
36
+ const n = toFiniteNumber(raw);
37
+ if (n !== void 0) return n;
38
+ const json = tryJson(raw, false) ?? (repairJson ? tryJson(raw, true) : void 0);
39
+ return json === void 0 ? raw : json;
40
+ }
41
+ function coerceCandidates(raw, repairJson) {
42
+ const out = [];
43
+ if (raw === "true") out.push(true);
44
+ else if (raw === "false") out.push(false);
45
+ else if (raw === "null") out.push(null);
46
+ const n = toFiniteNumber(raw);
47
+ if (n !== void 0) out.push(n);
48
+ const json = tryJson(raw, false) ?? (repairJson ? tryJson(raw, true) : void 0);
49
+ if (json !== void 0) out.push(json);
50
+ out.push(raw);
51
+ return out;
52
+ }
53
+ function objectShape(schema) {
54
+ const shape = schema?.shape;
55
+ return shape !== null && typeof shape === "object" ? shape : void 0;
56
+ }
57
+
58
+ // src/sanitize/sanitize-tool-input.ts
59
+ function applyTrim(key, value, ctx) {
60
+ const trimmed = value.trim();
61
+ if (trimmed !== value) ctx.notes.push(`trimmed "${key}"`);
62
+ return trimmed;
63
+ }
64
+ function applyCoerce(key, raw, ctx) {
65
+ const field = ctx.shape?.[key];
66
+ let coerced = raw;
67
+ if (field) {
68
+ for (const candidate of coerceCandidates(raw, ctx.repairJson)) {
69
+ if (field.safeParse(candidate).success) {
70
+ coerced = candidate;
71
+ break;
72
+ }
73
+ }
74
+ } else {
75
+ coerced = heuristicCoerce(raw, ctx.repairJson);
76
+ }
77
+ if (coerced !== raw) ctx.notes.push(`coerced "${key}"`);
78
+ return coerced;
79
+ }
80
+ function applyRepair(key, value, ctx) {
81
+ const repaired = tryJson(value, true);
82
+ if (repaired === void 0) return value;
83
+ ctx.notes.push(`repaired json "${key}"`);
84
+ return repaired;
85
+ }
86
+ function sanitizeString(key, value, ctx) {
87
+ let out = ctx.trim ? applyTrim(key, value, ctx) : value;
88
+ if (ctx.coerce && typeof out === "string") out = applyCoerce(key, out, ctx);
89
+ if (ctx.repairJson && !ctx.coerce && typeof out === "string") out = applyRepair(key, out, ctx);
90
+ return out;
91
+ }
92
+ function walkValue(key, value, ctx, depth) {
93
+ if (typeof value === "string") return sanitizeString(key, value, ctx);
94
+ if (Array.isArray(value)) {
95
+ if (depth >= ctx.maxDepth) return value;
96
+ return value.map((element) => walkValue(key, element, ctx, depth + 1));
97
+ }
98
+ if (ctx.deep && depth < ctx.maxDepth && isPlainObject(value)) return walk(value, ctx, depth + 1);
99
+ return value;
100
+ }
101
+ function walk(input, ctx, depth) {
102
+ const out = {};
103
+ for (const [key, value] of Object.entries(input)) {
104
+ out[key] = walkValue(key, value, ctx, depth);
105
+ }
106
+ return out;
107
+ }
108
+ function sanitizeToolInput(input, options) {
109
+ if (!isPlainObject(input)) return { value: input, changed: false, notes: [] };
110
+ const ctx = {
111
+ trim: options?.trim ?? true,
112
+ coerce: options?.coerce ?? false,
113
+ repairJson: options?.repairJson ?? false,
114
+ deep: options?.deep ?? false,
115
+ maxDepth: options?.maxDepth ?? 8,
116
+ shape: objectShape(options?.schema),
117
+ notes: []
118
+ };
119
+ const value = walk(input, ctx, 0);
120
+ return { value, changed: ctx.notes.length > 0, notes: ctx.notes };
121
+ }
122
+
123
+ exports.isPlainObject = isPlainObject;
124
+ exports.sanitizeToolInput = sanitizeToolInput;
125
+ exports.tryJson = tryJson;
126
+ //# sourceMappingURL=chunk-YSTXFWQE.cjs.map
127
+ //# sourceMappingURL=chunk-YSTXFWQE.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/sanitize/coerce.ts","../src/sanitize/sanitize-tool-input.ts"],"names":["createRequire"],"mappings":"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","file":"chunk-YSTXFWQE.cjs","sourcesContent":["import { createRequire } from \"node:module\";\n\nimport type { ZodType } from \"zod\";\n\n// `jsonrepair` is loaded lazily — consumers who never set `repairJson: true` never pay its\n// module-parse cost. Unlike `zod` (an optional peer dep), `jsonrepair` is a direct dependency and\n// is always installed; the lazy load is a startup-cost optimization, not an optional-install story.\n// Cached after the first repair.\nlet cachedJsonrepair: ((text: string) => string) | undefined;\nfunction loadJsonrepair(): (text: string) => string {\n if (cachedJsonrepair === undefined) {\n const req = createRequire(import.meta.url);\n cachedJsonrepair = (req(\"jsonrepair\") as { jsonrepair: (t: string) => string }).jsonrepair;\n }\n return cachedJsonrepair;\n}\n\n/** @internal */\nexport function isPlainObject(v: unknown): v is Record<string, unknown> {\n return v !== null && typeof v === \"object\" && !Array.isArray(v);\n}\n\n/** Number coercion with a round-trip + finite guard: rejects big-ints, leading-zeros, `NaN`,\n * `Infinity`, and non-canonical forms (`\"1e3\"`), preventing silent ID/precision corruption (EC-2). */\nfunction toFiniteNumber(raw: string): number | undefined {\n if (raw === \"\") return undefined;\n const n = Number(raw);\n return Number.isFinite(n) && String(n) === raw ? n : undefined;\n}\n\n/** Parse a value ONLY when it looks like a JSON object/array (EC-3 guard; leading whitespace\n * ignored so `trim:false` inputs are still gated correctly). `repair` routes it through\n * `jsonrepair` first. Returns `undefined` when not JSON-looking or on parse failure.\n * @internal */\nexport function tryJson(raw: string, repair: boolean): unknown {\n const t = raw.trimStart();\n if (!(t.startsWith(\"{\") || t.startsWith(\"[\"))) return undefined;\n try {\n return JSON.parse(repair ? loadJsonrepair()(t) : t);\n } catch {\n return undefined;\n }\n}\n\n/** Heuristic scalar/JSON coercion (agentfw `coerceParameter` shape) used when there is no\n * per-field schema. Returns the coerced value, or the raw string when nothing applies.\n * @internal */\nexport function heuristicCoerce(raw: string, repairJson: boolean): unknown {\n if (raw === \"true\") return true;\n if (raw === \"false\") return false;\n if (raw === \"null\") return null;\n const n = toFiniteNumber(raw);\n if (n !== undefined) return n;\n const json = tryJson(raw, false) ?? (repairJson ? tryJson(raw, true) : undefined);\n return json === undefined ? raw : json;\n}\n\n/** Candidates a raw string could coerce to, most-specific first. Used for schema-aware coercion:\n * the field schema selects the first candidate it accepts (so a string field keeps `\"5\"`).\n * @internal */\nexport function coerceCandidates(raw: string, repairJson: boolean): unknown[] {\n const out: unknown[] = [];\n if (raw === \"true\") out.push(true);\n else if (raw === \"false\") out.push(false);\n else if (raw === \"null\") out.push(null);\n const n = toFiniteNumber(raw);\n if (n !== undefined) out.push(n);\n const json = tryJson(raw, false) ?? (repairJson ? tryJson(raw, true) : undefined);\n if (json !== undefined) out.push(json);\n out.push(raw); // raw string is always the last-resort candidate\n return out;\n}\n\n/** True for a Zod schema that exposes a per-key `.shape` (a `z.object`, incl. Zod-v4\n * `.refine()`/`.default()` which keep `.shape`); non-object schemas (union/record) return\n * `undefined` so callers fall back to heuristic coercion (EC-4).\n * @internal */\nexport function objectShape(schema: ZodType | undefined): Record<string, ZodType> | undefined {\n const shape = (schema as unknown as { shape?: unknown } | undefined)?.shape;\n return shape !== null && typeof shape === \"object\"\n ? (shape as Record<string, ZodType>)\n : undefined;\n}\n","import type { ZodType } from \"zod\";\n\nimport {\n coerceCandidates,\n heuristicCoerce,\n isPlainObject,\n objectShape,\n tryJson,\n} from \"./coerce.js\";\nimport type { SanitizeOptions, SanitizeResult } from \"./types.js\";\n\ninterface Ctx {\n trim: boolean;\n coerce: boolean;\n repairJson: boolean;\n deep: boolean;\n maxDepth: number;\n shape: Record<string, ZodType> | undefined;\n notes: string[];\n}\n\n/** Trim rung — returns the trimmed string, noting the change. */\nfunction applyTrim(key: string, value: string, ctx: Ctx): string {\n const trimmed = value.trim();\n if (trimmed !== value) ctx.notes.push(`trimmed \"${key}\"`);\n return trimmed;\n}\n\n/** Coerce rung — schema-aware when a field schema exists (pick the first accepted candidate),\n * else heuristic. Returns the coerced value (or the raw string), noting the change. */\nfunction applyCoerce(key: string, raw: string, ctx: Ctx): unknown {\n const field = ctx.shape?.[key];\n let coerced: unknown = raw;\n if (field) {\n for (const candidate of coerceCandidates(raw, ctx.repairJson)) {\n if (field.safeParse(candidate).success) {\n coerced = candidate;\n break;\n }\n }\n } else {\n coerced = heuristicCoerce(raw, ctx.repairJson);\n }\n if (coerced !== raw) ctx.notes.push(`coerced \"${key}\"`);\n return coerced;\n}\n\n/** Repair rung — repair-then-parse a JSON-looking string, noting the change. */\nfunction applyRepair(key: string, value: string, ctx: Ctx): unknown {\n const repaired = tryJson(value, true);\n if (repaired === undefined) return value;\n ctx.notes.push(`repaired json \"${key}\"`);\n return repaired;\n}\n\n/** Sanitize one string value through the enabled rungs (trim → coerce → repair). */\nfunction sanitizeString(key: string, value: string, ctx: Ctx): unknown {\n let out: unknown = ctx.trim ? applyTrim(key, value, ctx) : value;\n if (ctx.coerce && typeof out === \"string\") out = applyCoerce(key, out, ctx);\n // Standalone repair runs ONLY when coerce is off. When coerce is on it already embedded the\n // repair candidate (via coerceCandidates / heuristicCoerce), and a schema-confirmed raw string\n // (e.g. a JSON string a `z.string()` field accepted) must not be clobbered back into an object.\n if (ctx.repairJson && !ctx.coerce && typeof out === \"string\") out = applyRepair(key, out, ctx);\n return out;\n}\n\n/**\n * Sanitize one value, whatever shape it has.\n *\n * Arrays used to fall through to \"assign as-is\", so `{ tags: [\" a \" ] }` came back untouched while\n * `{ tag: \" a \" }` was trimmed — even though trim is on by default and the `@public` docblock on\n * `deep` promised recursion into \"objects/arrays\". Nothing in the type distinguished the two cases.\n *\n * The element rules are the SAME rules, deliberately: a string element is sanitized like a string\n * field, and an object element is descended only under `deep`, so a caller does not have to learn a\n * second set of semantics for values that happen to sit in a list. `map` rather than the object\n * walker, because reusing that would return `{ \"0\": … }` and a handler doing `Array.isArray` would\n * reject it.\n */\nfunction walkValue(key: string, value: unknown, ctx: Ctx, depth: number): unknown {\n if (typeof value === \"string\") return sanitizeString(key, value, ctx);\n if (Array.isArray(value)) {\n if (depth >= ctx.maxDepth) return value;\n return value.map((element) => walkValue(key, element, ctx, depth + 1));\n }\n if (ctx.deep && depth < ctx.maxDepth && isPlainObject(value)) return walk(value, ctx, depth + 1);\n return value;\n}\n\nfunction walk(input: Record<string, unknown>, ctx: Ctx, depth: number): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(input)) {\n out[key] = walkValue(key, value, ctx, depth);\n }\n return out;\n}\n\n/**\n * Sanitize the raw arguments a model emitted for a tool call — trim (default), optionally coerce\n * string values toward their expected type, optionally repair malformed JSON. Pure, synchronous,\n * and TOTAL: it never throws (non-object input is returned unchanged) and never changes a value's\n * meaning — only its hygiene/representation. Reused internally by the leaked-dialect recovery so\n * the public primitive and the internal path never diverge.\n *\n * @public\n */\nexport function sanitizeToolInput(\n input: Record<string, unknown>,\n options?: SanitizeOptions,\n): SanitizeResult {\n // EC-1 — total contract: a non-object (null / array / primitive) is returned as-is, never thrown on.\n if (!isPlainObject(input)) return { value: input, changed: false, notes: [] };\n const ctx: Ctx = {\n trim: options?.trim ?? true,\n coerce: options?.coerce ?? false,\n repairJson: options?.repairJson ?? false,\n deep: options?.deep ?? false,\n maxDepth: options?.maxDepth ?? 8,\n shape: objectShape(options?.schema),\n notes: [],\n };\n const value = walk(input, ctx, 0);\n return { value, changed: ctx.notes.length > 0, notes: ctx.notes };\n}\n"]}