@theokit/sdk 4.53.1 → 4.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (694) hide show
  1. package/CHANGELOG.md +1184 -0
  2. package/README.md +9 -4
  3. package/dist/a2a/agent-mailbox.d.cts +27 -0
  4. package/dist/a2a/agent-mailbox.d.ts +27 -0
  5. package/dist/a2a/index.cjs +9 -4
  6. package/dist/a2a/index.cjs.map +1 -1
  7. package/dist/a2a/index.js +7 -2
  8. package/dist/a2a/index.js.map +1 -1
  9. package/dist/a2a/message-bus.d.cts +39 -0
  10. package/dist/a2a/message-bus.d.ts +39 -0
  11. package/dist/a2a/subagent.d.cts +68 -7
  12. package/dist/a2a/subagent.d.ts +68 -7
  13. package/dist/a2a/types.d.cts +26 -0
  14. package/dist/a2a/types.d.ts +26 -0
  15. package/dist/{agent-B9HXlwID.d.ts → agent-D3Xr_-6Z.d.cts} +245 -850
  16. package/dist/{agent-nLqeXKIX.d.cts → agent-DIu6FooJ.d.ts} +245 -850
  17. package/dist/agent-HDEVVUBS.js +52 -0
  18. package/dist/{agent-FFVV4U5N.js.map → agent-HDEVVUBS.js.map} +1 -1
  19. package/dist/agent-R2HOJFZJ.cjs +61 -0
  20. package/dist/{agent-YLAHVHEH.cjs.map → agent-R2HOJFZJ.cjs.map} +1 -1
  21. package/dist/agent-builder.d.ts +19 -0
  22. package/dist/agent-session-store-P6V3FINW.js +7 -0
  23. package/dist/{agent-session-store-TNCGL5RN.js.map → agent-session-store-P6V3FINW.js.map} +1 -1
  24. package/dist/agent-session-store-ZJ3JSRS4.cjs +24 -0
  25. package/dist/{agent-session-store-DUGBAX5V.cjs.map → agent-session-store-ZJ3JSRS4.cjs.map} +1 -1
  26. package/dist/agent.d.ts +9 -6
  27. package/dist/auth/index.cjs +52 -35
  28. package/dist/auth/index.cjs.map +1 -1
  29. package/dist/auth/index.js +26 -9
  30. package/dist/auth/index.js.map +1 -1
  31. package/dist/{batch-UPKN4SG6.js → batch-2TGJMNCJ.js} +14 -13
  32. package/dist/batch-2TGJMNCJ.js.map +1 -0
  33. package/dist/{batch-ZEFN5SO7.cjs → batch-ND32UKZS.cjs} +31 -30
  34. package/dist/batch-ND32UKZS.cjs.map +1 -0
  35. package/dist/{chunk-TTJ54H3E.cjs → chunk-2ADR2GSO.cjs} +8 -8
  36. package/dist/chunk-2ADR2GSO.cjs.map +1 -0
  37. package/dist/chunk-2BDH744Z.js +15 -0
  38. package/dist/chunk-2BDH744Z.js.map +1 -0
  39. package/dist/{chunk-VGPXHHF3.cjs → chunk-2C72DXQF.cjs} +63 -27
  40. package/dist/chunk-2C72DXQF.cjs.map +1 -0
  41. package/dist/{chunk-4Q4K4WB5.js → chunk-2D34UTDC.js} +20 -4
  42. package/dist/chunk-2D34UTDC.js.map +1 -0
  43. package/dist/{chunk-UFIXH26P.js → chunk-2QKTVKH3.js} +4 -4
  44. package/dist/{chunk-UFIXH26P.js.map → chunk-2QKTVKH3.js.map} +1 -1
  45. package/dist/{chunk-GBBDINFK.js → chunk-3E77SX4H.js} +4 -4
  46. package/dist/{chunk-GBBDINFK.js.map → chunk-3E77SX4H.js.map} +1 -1
  47. package/dist/{chunk-VYHJZVL5.cjs → chunk-3EE6LVWT.cjs} +2 -2
  48. package/dist/chunk-3EE6LVWT.cjs.map +1 -0
  49. package/dist/{chunk-5NBUH3NO.js → chunk-3OR54XG4.js} +2 -2
  50. package/dist/{chunk-C6Y6CWYD.cjs.map → chunk-3OR54XG4.js.map} +1 -1
  51. package/dist/{chunk-ZN2DGEY3.cjs → chunk-3YJNUKYN.cjs} +15 -15
  52. package/dist/{chunk-ZN2DGEY3.cjs.map → chunk-3YJNUKYN.cjs.map} +1 -1
  53. package/dist/{chunk-POWRZSK4.js → chunk-44JAAH4X.js} +3 -3
  54. package/dist/{chunk-POWRZSK4.js.map → chunk-44JAAH4X.js.map} +1 -1
  55. package/dist/{chunk-SSDD676S.js → chunk-44MBDIHG.js} +4 -4
  56. package/dist/{chunk-SSDD676S.js.map → chunk-44MBDIHG.js.map} +1 -1
  57. package/dist/{chunk-OY7O3Q6R.js → chunk-4ERPXIVB.js} +5 -5
  58. package/dist/{chunk-OY7O3Q6R.js.map → chunk-4ERPXIVB.js.map} +1 -1
  59. package/dist/{chunk-3BK6YR5P.cjs → chunk-4I55V454.cjs} +4 -4
  60. package/dist/{chunk-3BK6YR5P.cjs.map → chunk-4I55V454.cjs.map} +1 -1
  61. package/dist/{chunk-B4YA6BRS.cjs → chunk-4O5TGQBW.cjs} +30 -7
  62. package/dist/chunk-4O5TGQBW.cjs.map +1 -0
  63. package/dist/{chunk-4JBHSLQO.cjs → chunk-4OTIXDMU.cjs} +2 -2
  64. package/dist/{chunk-4JBHSLQO.cjs.map → chunk-4OTIXDMU.cjs.map} +1 -1
  65. package/dist/{chunk-C6Y6CWYD.cjs → chunk-52NKC5HT.cjs} +2 -2
  66. package/dist/chunk-52NKC5HT.cjs.map +1 -0
  67. package/dist/{chunk-665SFFFR.cjs → chunk-53CBTBWO.cjs} +11 -11
  68. package/dist/{chunk-665SFFFR.cjs.map → chunk-53CBTBWO.cjs.map} +1 -1
  69. package/dist/{chunk-FFM3SJTQ.js → chunk-5JLFFPCH.js} +4 -4
  70. package/dist/{chunk-FFM3SJTQ.js.map → chunk-5JLFFPCH.js.map} +1 -1
  71. package/dist/{chunk-34XOCZJO.js → chunk-5PHVENFV.js} +3 -3
  72. package/dist/chunk-5PHVENFV.js.map +1 -0
  73. package/dist/{chunk-BDTVFIPB.cjs → chunk-5UOVYM3P.cjs} +36 -31
  74. package/dist/chunk-5UOVYM3P.cjs.map +1 -0
  75. package/dist/{chunk-VF7X6HDR.cjs → chunk-5USCYPPI.cjs} +15 -15
  76. package/dist/{chunk-VF7X6HDR.cjs.map → chunk-5USCYPPI.cjs.map} +1 -1
  77. package/dist/chunk-6HTXPPHK.cjs +18 -0
  78. package/dist/chunk-6HTXPPHK.cjs.map +1 -0
  79. package/dist/{chunk-D24WJWN2.js → chunk-AEOZTXVW.js} +3 -3
  80. package/dist/{chunk-D24WJWN2.js.map → chunk-AEOZTXVW.js.map} +1 -1
  81. package/dist/{chunk-DGOG5NXR.js → chunk-AG5JPQIY.js} +3 -3
  82. package/dist/{chunk-DGOG5NXR.js.map → chunk-AG5JPQIY.js.map} +1 -1
  83. package/dist/{chunk-BFYGJGC5.js → chunk-AQLGBKNT.js} +3 -3
  84. package/dist/chunk-AQLGBKNT.js.map +1 -0
  85. package/dist/{chunk-7W7ZWMLQ.js → chunk-AWO27VRZ.js} +3 -3
  86. package/dist/chunk-AWO27VRZ.js.map +1 -0
  87. package/dist/{chunk-VYCKUKPA.cjs → chunk-B2J4ZMZL.cjs} +3 -2
  88. package/dist/chunk-B2J4ZMZL.cjs.map +1 -0
  89. package/dist/{chunk-BERBYXFH.js → chunk-BMAZLQQ4.js} +3 -3
  90. package/dist/{chunk-BERBYXFH.js.map → chunk-BMAZLQQ4.js.map} +1 -1
  91. package/dist/{chunk-5YKNEMXR.cjs → chunk-BVZW2B5V.cjs} +4 -4
  92. package/dist/chunk-BVZW2B5V.cjs.map +1 -0
  93. package/dist/{chunk-MSFLYJDY.js → chunk-CQ2TQ32Y.js} +4 -4
  94. package/dist/chunk-CQ2TQ32Y.js.map +1 -0
  95. package/dist/{chunk-C5DEO6OI.cjs → chunk-CQGYNZ3K.cjs} +4 -4
  96. package/dist/{chunk-C5DEO6OI.cjs.map → chunk-CQGYNZ3K.cjs.map} +1 -1
  97. package/dist/{chunk-D75S2X6I.cjs → chunk-CTCGWIUD.cjs} +5 -5
  98. package/dist/{chunk-D75S2X6I.cjs.map → chunk-CTCGWIUD.cjs.map} +1 -1
  99. package/dist/{chunk-NZL4BNFQ.js → chunk-CV7XMBHP.js} +4 -4
  100. package/dist/chunk-CV7XMBHP.js.map +1 -0
  101. package/dist/{chunk-SEL2ZQMT.js → chunk-DAPSQZT4.js} +15 -10
  102. package/dist/chunk-DAPSQZT4.js.map +1 -0
  103. package/dist/{chunk-SVO5WPZX.cjs → chunk-DQKERTND.cjs} +11 -11
  104. package/dist/{chunk-SVO5WPZX.cjs.map → chunk-DQKERTND.cjs.map} +1 -1
  105. package/dist/{chunk-N5CR3TJZ.js → chunk-DZBSJX6J.js} +4 -4
  106. package/dist/{chunk-N5CR3TJZ.js.map → chunk-DZBSJX6J.js.map} +1 -1
  107. package/dist/{chunk-RAHSWE5C.cjs → chunk-EI2Q7SJ5.cjs} +12 -12
  108. package/dist/chunk-EI2Q7SJ5.cjs.map +1 -0
  109. package/dist/{chunk-UCFONJBG.js → chunk-EPSICJLZ.js} +2 -2
  110. package/dist/{chunk-UCFONJBG.js.map → chunk-EPSICJLZ.js.map} +1 -1
  111. package/dist/{chunk-3X6PM7DU.cjs → chunk-F3YZMOAU.cjs} +8 -8
  112. package/dist/{chunk-3X6PM7DU.cjs.map → chunk-F3YZMOAU.cjs.map} +1 -1
  113. package/dist/{chunk-F77UENR6.cjs → chunk-F5WMX4EA.cjs} +586 -398
  114. package/dist/chunk-F5WMX4EA.cjs.map +1 -0
  115. package/dist/{chunk-HE4BIAOS.js → chunk-F7AQV62G.js} +5 -4
  116. package/dist/chunk-F7AQV62G.js.map +1 -0
  117. package/dist/{chunk-2RW7K6FN.cjs → chunk-GHX4P3V2.cjs} +2 -2
  118. package/dist/chunk-GHX4P3V2.cjs.map +1 -0
  119. package/dist/{chunk-B6HOIWQ6.js → chunk-GJ6RK75E.js} +5 -5
  120. package/dist/chunk-GJ6RK75E.js.map +1 -0
  121. package/dist/{chunk-FOXKFTVZ.cjs → chunk-GNT35C5U.cjs} +13 -13
  122. package/dist/chunk-GNT35C5U.cjs.map +1 -0
  123. package/dist/{chunk-4NAKHID5.js → chunk-GTKFV7O5.js} +2 -2
  124. package/dist/chunk-GTKFV7O5.js.map +1 -0
  125. package/dist/{chunk-ELKO4ZLR.cjs → chunk-GWC3HADL.cjs} +4 -4
  126. package/dist/{chunk-ELKO4ZLR.cjs.map → chunk-GWC3HADL.cjs.map} +1 -1
  127. package/dist/{chunk-OXNYIMZZ.js → chunk-H73MEMQB.js} +2 -2
  128. package/dist/chunk-H73MEMQB.js.map +1 -0
  129. package/dist/{chunk-E7FJOO4G.cjs → chunk-HJBMA5MB.cjs} +11 -11
  130. package/dist/{chunk-E7FJOO4G.cjs.map → chunk-HJBMA5MB.cjs.map} +1 -1
  131. package/dist/{chunk-2FYEVT2B.cjs → chunk-HLPSLDGL.cjs} +275 -160
  132. package/dist/chunk-HLPSLDGL.cjs.map +1 -0
  133. package/dist/{chunk-VW6M4B3Z.cjs → chunk-HY57ULY2.cjs} +5 -5
  134. package/dist/{chunk-VW6M4B3Z.cjs.map → chunk-HY57ULY2.cjs.map} +1 -1
  135. package/dist/{chunk-CAH3G4IS.js → chunk-HY66GLM6.js} +2 -2
  136. package/dist/chunk-HY66GLM6.js.map +1 -0
  137. package/dist/{chunk-G3JWXOGY.js → chunk-I5BE5M5L.js} +310 -122
  138. package/dist/chunk-I5BE5M5L.js.map +1 -0
  139. package/dist/{chunk-C4H6PB5J.cjs → chunk-I6TGFUCO.cjs} +4 -4
  140. package/dist/{chunk-C4H6PB5J.cjs.map → chunk-I6TGFUCO.cjs.map} +1 -1
  141. package/dist/{chunk-U4UJHOSH.js → chunk-IDCKSLYH.js} +3 -3
  142. package/dist/{chunk-U4UJHOSH.js.map → chunk-IDCKSLYH.js.map} +1 -1
  143. package/dist/{chunk-WQ53UQL4.cjs → chunk-ILCGLTSA.cjs} +4 -4
  144. package/dist/{chunk-WQ53UQL4.cjs.map → chunk-ILCGLTSA.cjs.map} +1 -1
  145. package/dist/{chunk-QBTVATSF.cjs → chunk-ITSSOVOB.cjs} +44 -47
  146. package/dist/chunk-ITSSOVOB.cjs.map +1 -0
  147. package/dist/{chunk-V6HWJQQV.js → chunk-IVNNSANC.js} +27 -30
  148. package/dist/chunk-IVNNSANC.js.map +1 -0
  149. package/dist/{chunk-SZHU7A5B.cjs → chunk-IWBGCBR6.cjs} +4 -4
  150. package/dist/{chunk-SZHU7A5B.cjs.map → chunk-IWBGCBR6.cjs.map} +1 -1
  151. package/dist/{chunk-Q4RESANI.cjs → chunk-J24VJOH3.cjs} +20 -4
  152. package/dist/chunk-J24VJOH3.cjs.map +1 -0
  153. package/dist/{chunk-Y4AXQOT4.cjs → chunk-JHPGF3FP.cjs} +8 -8
  154. package/dist/{chunk-Y4AXQOT4.cjs.map → chunk-JHPGF3FP.cjs.map} +1 -1
  155. package/dist/{chunk-BM6N4KHO.cjs → chunk-JTB5Q42C.cjs} +6 -22
  156. package/dist/chunk-JTB5Q42C.cjs.map +1 -0
  157. package/dist/{chunk-LPVIRJVF.cjs → chunk-K3FW2XZD.cjs} +9 -9
  158. package/dist/{chunk-LPVIRJVF.cjs.map → chunk-K3FW2XZD.cjs.map} +1 -1
  159. package/dist/{chunk-LS3LMQ23.js → chunk-MVAPK2BX.js} +162 -49
  160. package/dist/chunk-MVAPK2BX.js.map +1 -0
  161. package/dist/{chunk-XPR366DL.cjs → chunk-NGESVVJN.cjs} +17 -17
  162. package/dist/chunk-NGESVVJN.cjs.map +1 -0
  163. package/dist/{chunk-VUKQL3L2.cjs → chunk-NIRE5CNO.cjs} +20 -13
  164. package/dist/chunk-NIRE5CNO.cjs.map +1 -0
  165. package/dist/{chunk-VC5ABJXC.js → chunk-NLTVXLGT.js} +3 -3
  166. package/dist/{chunk-VC5ABJXC.js.map → chunk-NLTVXLGT.js.map} +1 -1
  167. package/dist/chunk-NUKRL3I6.cjs +23 -0
  168. package/dist/chunk-NUKRL3I6.cjs.map +1 -0
  169. package/dist/{chunk-R5YZACGK.js → chunk-OC4NTGMN.js} +3 -3
  170. package/dist/{chunk-R5YZACGK.js.map → chunk-OC4NTGMN.js.map} +1 -1
  171. package/dist/{chunk-GOVJO4YE.js → chunk-OHBIUXKM.js} +6 -6
  172. package/dist/chunk-OHBIUXKM.js.map +1 -0
  173. package/dist/{chunk-FPYT5WZP.cjs → chunk-P6A3M6VD.cjs} +10 -10
  174. package/dist/{chunk-FPYT5WZP.cjs.map → chunk-P6A3M6VD.cjs.map} +1 -1
  175. package/dist/{chunk-OKLYRPKL.cjs → chunk-Q47R5E2X.cjs} +8 -8
  176. package/dist/chunk-Q47R5E2X.cjs.map +1 -0
  177. package/dist/{chunk-HSQ5Q3I5.js → chunk-Q4CMI2LP.js} +12 -5
  178. package/dist/chunk-Q4CMI2LP.js.map +1 -0
  179. package/dist/{chunk-2XLKLVVR.js → chunk-Q5EWJPRY.js} +2 -2
  180. package/dist/chunk-Q5EWJPRY.js.map +1 -0
  181. package/dist/{chunk-SK4QLUBK.js → chunk-QARJGQSA.js} +16 -7
  182. package/dist/chunk-QARJGQSA.js.map +1 -0
  183. package/dist/{chunk-CZ2GKKYL.cjs → chunk-QDED6YO6.cjs} +5 -5
  184. package/dist/{chunk-CZ2GKKYL.cjs.map → chunk-QDED6YO6.cjs.map} +1 -1
  185. package/dist/{chunk-VK7MAV65.cjs → chunk-QKLOP4VC.cjs} +2 -2
  186. package/dist/{chunk-VK7MAV65.cjs.map → chunk-QKLOP4VC.cjs.map} +1 -1
  187. package/dist/{chunk-FIOCJYLA.js → chunk-QRSUA2CV.js} +3 -3
  188. package/dist/{chunk-FIOCJYLA.js.map → chunk-QRSUA2CV.js.map} +1 -1
  189. package/dist/{chunk-ZT57WTUJ.cjs → chunk-R3UPQFKK.cjs} +21 -12
  190. package/dist/chunk-R3UPQFKK.cjs.map +1 -0
  191. package/dist/{chunk-X2FR4OIT.js → chunk-R7WIIPUR.js} +2 -2
  192. package/dist/chunk-R7WIIPUR.js.map +1 -0
  193. package/dist/{chunk-RP5HQVLD.js → chunk-RNB4APBZ.js} +30 -7
  194. package/dist/chunk-RNB4APBZ.js.map +1 -0
  195. package/dist/{chunk-GD63JPGC.cjs → chunk-ROYPRJH4.cjs} +9 -9
  196. package/dist/{chunk-GD63JPGC.cjs.map → chunk-ROYPRJH4.cjs.map} +1 -1
  197. package/dist/{chunk-V26QVGUG.js → chunk-RUDY2GTT.js} +59 -23
  198. package/dist/chunk-RUDY2GTT.js.map +1 -0
  199. package/dist/{chunk-JIQRXKTA.cjs → chunk-SKXBJ2NU.cjs} +7 -7
  200. package/dist/chunk-SKXBJ2NU.cjs.map +1 -0
  201. package/dist/{chunk-XROIW6BH.js → chunk-SUKXXLWD.js} +6 -6
  202. package/dist/chunk-SUKXXLWD.js.map +1 -0
  203. package/dist/{chunk-LTSTGCL6.js → chunk-T73NA43R.js} +3 -3
  204. package/dist/{chunk-LTSTGCL6.js.map → chunk-T73NA43R.js.map} +1 -1
  205. package/dist/chunk-T7O6K6PX.js +20 -0
  206. package/dist/chunk-T7O6K6PX.js.map +1 -0
  207. package/dist/{chunk-5F5NWKPN.js → chunk-T7XEKOVW.js} +5 -20
  208. package/dist/chunk-T7XEKOVW.js.map +1 -0
  209. package/dist/{chunk-HAWE74GQ.cjs → chunk-U2AC6JUP.cjs} +8 -8
  210. package/dist/chunk-U2AC6JUP.cjs.map +1 -0
  211. package/dist/{chunk-3WVMJY7F.js → chunk-UC3HT2S4.js} +3 -3
  212. package/dist/{chunk-3WVMJY7F.js.map → chunk-UC3HT2S4.js.map} +1 -1
  213. package/dist/{chunk-PBZ7HMBP.js → chunk-UPRJR6IP.js} +4 -4
  214. package/dist/chunk-UPRJR6IP.js.map +1 -0
  215. package/dist/{chunk-3V7UJLQT.js → chunk-UQGQFBRL.js} +3 -3
  216. package/dist/chunk-UQGQFBRL.js.map +1 -0
  217. package/dist/{chunk-2D43RD5D.cjs → chunk-V2UUGUY4.cjs} +27 -27
  218. package/dist/chunk-V2UUGUY4.cjs.map +1 -0
  219. package/dist/{chunk-6AZDM6LK.js → chunk-VF7EWVDG.js} +3 -3
  220. package/dist/{chunk-6AZDM6LK.js.map → chunk-VF7EWVDG.js.map} +1 -1
  221. package/dist/{chunk-PNVDQL5Y.cjs → chunk-VTYY7XL5.cjs} +2 -2
  222. package/dist/chunk-VTYY7XL5.cjs.map +1 -0
  223. package/dist/{chunk-Y4I4EQFK.js → chunk-WKRSH2VR.js} +3 -3
  224. package/dist/{chunk-Y4I4EQFK.js.map → chunk-WKRSH2VR.js.map} +1 -1
  225. package/dist/{chunk-4QEC4CCS.js → chunk-WTMU7J4U.js} +2 -2
  226. package/dist/{chunk-4QEC4CCS.js.map → chunk-WTMU7J4U.js.map} +1 -1
  227. package/dist/{chunk-KSWHTR54.js → chunk-XN7NOENA.js} +6 -6
  228. package/dist/chunk-XN7NOENA.js.map +1 -0
  229. package/dist/{chunk-ADLLFY3H.cjs → chunk-XSX2UU6Y.cjs} +10 -9
  230. package/dist/chunk-XSX2UU6Y.cjs.map +1 -0
  231. package/dist/{chunk-LD4MOBFX.js → chunk-XV4IZNV4.js} +9 -9
  232. package/dist/chunk-XV4IZNV4.js.map +1 -0
  233. package/dist/{chunk-EZ2YEF4F.cjs → chunk-XWL6O3SW.cjs} +4 -4
  234. package/dist/chunk-XWL6O3SW.cjs.map +1 -0
  235. package/dist/{chunk-PGP7IOJ2.js → chunk-YMA4S2WO.js} +4 -4
  236. package/dist/{chunk-PGP7IOJ2.js.map → chunk-YMA4S2WO.js.map} +1 -1
  237. package/dist/{chunk-OUOXM36O.cjs → chunk-YPJ5NH5N.cjs} +11 -11
  238. package/dist/chunk-YPJ5NH5N.cjs.map +1 -0
  239. package/dist/{chunk-YLQQX5W2.cjs → chunk-ZF2LDKQQ.cjs} +2 -2
  240. package/dist/chunk-ZF2LDKQQ.cjs.map +1 -0
  241. package/dist/{chunk-L5YO6PWL.cjs → chunk-ZNW6V4Y6.cjs} +2 -2
  242. package/dist/chunk-ZNW6V4Y6.cjs.map +1 -0
  243. package/dist/client/index.cjs.map +1 -1
  244. package/dist/client/index.js.map +1 -1
  245. package/dist/client/theokit-client.d.cts +36 -0
  246. package/dist/client/theokit-client.d.ts +36 -0
  247. package/dist/client/types.d.cts +30 -0
  248. package/dist/client/types.d.ts +30 -0
  249. package/dist/compact-session-FUJDVF7B.js +22 -0
  250. package/dist/{compact-session-4MNKNMO2.js.map → compact-session-FUJDVF7B.js.map} +1 -1
  251. package/dist/compact-session-LEWF554G.cjs +59 -0
  252. package/dist/{compact-session-EPFBQ46Z.cjs.map → compact-session-LEWF554G.cjs.map} +1 -1
  253. package/dist/compaction.cjs +17 -16
  254. package/dist/compaction.d.cts +13 -13
  255. package/dist/compaction.d.ts +13 -13
  256. package/dist/compaction.js +4 -3
  257. package/dist/concurrency.cjs +7 -6
  258. package/dist/concurrency.cjs.map +1 -1
  259. package/dist/concurrency.js +5 -4
  260. package/dist/concurrency.js.map +1 -1
  261. package/dist/context/index.cjs +7 -7
  262. package/dist/context/index.js +3 -3
  263. package/dist/context-FDOON2DB.js +6 -0
  264. package/dist/{context-ENXZNF6J.js.map → context-FDOON2DB.js.map} +1 -1
  265. package/dist/context-VMIE4BMD.cjs +23 -0
  266. package/dist/{context-7USNN6LP.cjs.map → context-VMIE4BMD.cjs.map} +1 -1
  267. package/dist/cron-BcWmzWzT.d.cts +240 -0
  268. package/dist/cron-De6hzWCF.d.ts +240 -0
  269. package/dist/cron.cjs +43 -41
  270. package/dist/cron.d.cts +5 -3
  271. package/dist/cron.d.ts +5 -3
  272. package/dist/cron.js +42 -40
  273. package/dist/define-tool.d.ts +14 -6
  274. package/dist/{errors-BSoXcl3F.d.cts → errors-BgJH9PHi.d.cts} +39 -24
  275. package/dist/{errors-CHllybaU.d.ts → errors-C5fJUqLk.d.ts} +39 -24
  276. package/dist/errors.cjs +22 -21
  277. package/dist/errors.d.cts +2 -2
  278. package/dist/errors.d.ts +2 -2
  279. package/dist/errors.js +3 -2
  280. package/dist/eval.cjs +61 -58
  281. package/dist/eval.cjs.map +1 -1
  282. package/dist/eval.d.cts +38 -0
  283. package/dist/eval.d.ts +38 -0
  284. package/dist/eval.js +51 -48
  285. package/dist/eval.js.map +1 -1
  286. package/dist/event-bus.d.ts +16 -0
  287. package/dist/{executor-2Z6XJJJG.js → executor-BMEHFOXZ.js} +8 -7
  288. package/dist/executor-BMEHFOXZ.js.map +1 -0
  289. package/dist/{executor-2Z3LGG3I.cjs → executor-ZERJ3DGN.cjs} +25 -24
  290. package/dist/executor-ZERJ3DGN.cjs.map +1 -0
  291. package/dist/filesystem/index.cjs +8 -7
  292. package/dist/filesystem/index.cjs.map +1 -1
  293. package/dist/filesystem/index.js +4 -3
  294. package/dist/filesystem/index.js.map +1 -1
  295. package/dist/filesystem/local-filesystem.d.cts +18 -0
  296. package/dist/filesystem/local-filesystem.d.ts +18 -0
  297. package/dist/filesystem/types.d.cts +12 -0
  298. package/dist/filesystem/types.d.ts +12 -0
  299. package/dist/fs-session-store-3MOJQGP2.cjs +20 -0
  300. package/dist/{fs-session-store-VVY2AHWG.cjs.map → fs-session-store-3MOJQGP2.cjs.map} +1 -1
  301. package/dist/fs-session-store-IN7JTTXD.js +11 -0
  302. package/dist/{fs-session-store-R5FD3EN6.js.map → fs-session-store-IN7JTTXD.js.map} +1 -1
  303. package/dist/generate-object-N5MDZUJI.js +8 -0
  304. package/dist/{generate-object-WQRCXFD2.js.map → generate-object-N5MDZUJI.js.map} +1 -1
  305. package/dist/generate-object-PGSP5U7N.cjs +21 -0
  306. package/dist/{generate-object-AVXOJK2I.cjs.map → generate-object-PGSP5U7N.cjs.map} +1 -1
  307. package/dist/generate-object.d.ts +20 -0
  308. package/dist/index-manager-NG5YENWO.cjs +22 -0
  309. package/dist/{index-manager-VRU3A2YL.cjs.map → index-manager-NG5YENWO.cjs.map} +1 -1
  310. package/dist/index-manager-ZMRJ6ZII.js +13 -0
  311. package/dist/{index-manager-WS7TVKUW.js.map → index-manager-ZMRJ6ZII.js.map} +1 -1
  312. package/dist/index.cjs +169 -155
  313. package/dist/index.cjs.map +1 -1
  314. package/dist/index.d.cts +702 -54
  315. package/dist/index.d.ts +702 -54
  316. package/dist/index.js +61 -58
  317. package/dist/index.js.map +1 -1
  318. package/dist/{inject-session-GMBMJVNZ.js → inject-session-BJMJH5BX.js} +9 -8
  319. package/dist/inject-session-BJMJH5BX.js.map +1 -0
  320. package/dist/inject-session-WQGGMCQY.cjs +29 -0
  321. package/dist/inject-session-WQGGMCQY.cjs.map +1 -0
  322. package/dist/internal/auth/auth-types.d.ts +83 -1
  323. package/dist/internal/auth/credential-store.d.ts +34 -6
  324. package/dist/internal/auth/oauth-device.d.ts +0 -1
  325. package/dist/internal/auth/resolve-credential.d.ts +40 -0
  326. package/dist/internal/budget/tracker/budget.d.ts +12 -14
  327. package/dist/internal/budget/usage-accumulator.d.ts +15 -0
  328. package/dist/internal/llm/anthropic-shared.d.ts +8 -4
  329. package/dist/internal/llm/model-identifier.d.ts +26 -0
  330. package/dist/internal/llm/openai.d.ts +8 -0
  331. package/dist/internal/llm/prompt-cache-key.d.ts +1 -0
  332. package/dist/internal/llm/responses.d.ts +67 -1
  333. package/dist/internal/llm/router.d.ts +8 -0
  334. package/dist/internal/llm/types.d.ts +27 -1
  335. package/dist/internal/local-agent/real-local-run-provider.d.ts +8 -3
  336. package/dist/internal/local-agent/real-local-run-tools.d.ts +23 -4
  337. package/dist/internal/mcp/oauth.d.ts +5 -0
  338. package/dist/internal/mcp/token-storage.d.ts +34 -0
  339. package/dist/internal/memory/adapters/index.cjs +12 -11
  340. package/dist/internal/memory/adapters/index.d.cts +3 -1
  341. package/dist/internal/memory/adapters/index.d.ts +3 -1
  342. package/dist/internal/memory/adapters/index.js +9 -8
  343. package/dist/internal/memory/adapters/openai-compatible.d.cts +45 -0
  344. package/dist/internal/memory/adapters/openai-compatible.d.ts +45 -0
  345. package/dist/internal/memory/embedding-cache.d.ts +42 -1
  346. package/dist/internal/memory/escape-like-pattern.d.ts +22 -0
  347. package/dist/internal/memory/sqlite-vec-loader.d.ts +1 -3
  348. package/dist/internal/memory/storage/markdown-store.d.ts +0 -5
  349. package/dist/internal/persistence/cwd-mutex.d.cts +34 -0
  350. package/dist/internal/persistence/cwd-mutex.d.ts +34 -0
  351. package/dist/internal/persistence/exclusive-create.d.cts +31 -0
  352. package/dist/internal/persistence/exclusive-create.d.ts +31 -0
  353. package/dist/internal/persistence/file-lock.d.cts +28 -0
  354. package/dist/internal/persistence/file-lock.d.ts +28 -0
  355. package/dist/internal/persistence/fs-session-store.d.cts +3 -0
  356. package/dist/internal/persistence/fs-session-store.d.ts +3 -0
  357. package/dist/internal/persistence/fts5-sanitize.d.cts +20 -0
  358. package/dist/internal/persistence/fts5-sanitize.d.ts +20 -0
  359. package/dist/internal/persistence/index.cjs +40 -39
  360. package/dist/internal/persistence/index.cjs.map +1 -1
  361. package/dist/internal/persistence/index.d.cts +6 -1
  362. package/dist/internal/persistence/index.d.ts +6 -1
  363. package/dist/internal/persistence/index.js +9 -8
  364. package/dist/internal/persistence/index.js.map +1 -1
  365. package/dist/internal/persistence/paths.d.cts +54 -1
  366. package/dist/internal/persistence/paths.d.ts +54 -1
  367. package/dist/internal/persistence/persistence-schema.d.cts +9 -1
  368. package/dist/internal/persistence/persistence-schema.d.ts +9 -1
  369. package/dist/internal/persistence/schema-version.d.cts +215 -1
  370. package/dist/internal/persistence/schema-version.d.ts +215 -1
  371. package/dist/internal/persistence/session-writer.d.cts +7 -7
  372. package/dist/internal/persistence/session-writer.d.ts +7 -7
  373. package/dist/internal/persistence/sqlite-cas.d.cts +37 -1
  374. package/dist/internal/persistence/sqlite-cas.d.ts +37 -1
  375. package/dist/internal/persistence/sqlite-open.d.cts +14 -0
  376. package/dist/internal/persistence/sqlite-open.d.ts +14 -0
  377. package/dist/internal/persistence/sqlite-wal.d.cts +45 -0
  378. package/dist/internal/persistence/sqlite-wal.d.ts +45 -0
  379. package/dist/internal/persistence/transcript-ops.d.cts +7 -1
  380. package/dist/internal/persistence/transcript-ops.d.ts +7 -1
  381. package/dist/internal/plugins/types.d.cts +1 -1
  382. package/dist/internal/plugins/types.d.ts +1 -1
  383. package/dist/internal/providers/builtin/openai-chatgpt.d.ts +12 -0
  384. package/dist/internal/providers/catalog-loader.d.ts +8 -0
  385. package/dist/internal/providers/catalog-schema.d.ts +55 -0
  386. package/dist/internal/providers/catalog-source-models-dev.d.ts +36 -0
  387. package/dist/internal/runtime/concurrency/delegation-depth.d.ts +27 -0
  388. package/dist/internal/runtime/concurrency/subagent-credentials.d.ts +33 -1
  389. package/dist/internal/runtime/context/context-discovery-runner.d.ts +44 -0
  390. package/dist/internal/runtime/context/context-discovery.d.ts +58 -0
  391. package/dist/internal/runtime/context/context-rules-frontmatter.d.ts +70 -1
  392. package/dist/internal/runtime/fixtures/fixture-mode.d.ts +15 -1
  393. package/dist/internal/runtime/lifecycle/post-run-lifecycle.d.ts +15 -0
  394. package/dist/internal/runtime/registry/agent-registry-store.d.ts +12 -0
  395. package/dist/internal/runtime/registry/live-agent-registry.d.ts +37 -0
  396. package/dist/internal/scorers/llm-judge.d.ts +6 -1
  397. package/dist/internal/security/index.cjs +14 -13
  398. package/dist/internal/security/index.d.cts +4 -1
  399. package/dist/internal/security/index.d.ts +4 -1
  400. package/dist/internal/security/index.js +4 -3
  401. package/dist/internal/security/path-guard.d.cts +46 -0
  402. package/dist/internal/security/path-guard.d.ts +46 -0
  403. package/dist/internal/security/redact.d.cts +71 -0
  404. package/dist/internal/security/redact.d.ts +71 -0
  405. package/dist/internal/session/agent-session.d.ts +15 -4
  406. package/dist/internal/session/session-cache.d.ts +5 -0
  407. package/dist/internal/task/store.d.ts +91 -5
  408. package/dist/internal/telemetry/span-names.d.ts +0 -1
  409. package/dist/internal/telemetry/tracer.d.ts +14 -0
  410. package/dist/job-queue.d.ts +18 -0
  411. package/dist/judge-call-DWHAJATE.js +6 -0
  412. package/dist/{judge-call-MDIPTBJI.js.map → judge-call-DWHAJATE.js.map} +1 -1
  413. package/dist/judge-call-EGYRC2RE.cjs +23 -0
  414. package/dist/{judge-call-G5SGV2M2.cjs.map → judge-call-EGYRC2RE.cjs.map} +1 -1
  415. package/dist/mcp-auth.cjs +41 -25
  416. package/dist/mcp-auth.cjs.map +1 -1
  417. package/dist/mcp-auth.js +34 -18
  418. package/dist/mcp-auth.js.map +1 -1
  419. package/dist/models.cjs +42 -27
  420. package/dist/models.cjs.map +1 -1
  421. package/dist/models.js +25 -10
  422. package/dist/models.js.map +1 -1
  423. package/dist/oauth-transaction-store-BT4GLTLK.cjs +36 -0
  424. package/dist/{oauth-transaction-store-7CKHPQRN.cjs.map → oauth-transaction-store-BT4GLTLK.cjs.map} +1 -1
  425. package/dist/oauth-transaction-store-W52KVHQ4.js +3 -0
  426. package/dist/{oauth-transaction-store-W74I6EFD.js.map → oauth-transaction-store-W52KVHQ4.js.map} +1 -1
  427. package/dist/path-safety.cjs +11 -10
  428. package/dist/path-safety.js +4 -3
  429. package/dist/permission-engine.d.ts +55 -0
  430. package/dist/persistence.cjs +43 -42
  431. package/dist/persistence.cjs.map +1 -1
  432. package/dist/persistence.js +13 -12
  433. package/dist/persistence.js.map +1 -1
  434. package/dist/project.cjs +9 -8
  435. package/dist/project.cjs.map +1 -1
  436. package/dist/project.js +5 -4
  437. package/dist/project.js.map +1 -1
  438. package/dist/providers.cjs +23 -0
  439. package/dist/providers.cjs.map +1 -0
  440. package/dist/providers.d.cts +29 -0
  441. package/dist/providers.d.ts +29 -0
  442. package/dist/providers.js +10 -0
  443. package/dist/providers.js.map +1 -0
  444. package/dist/registry-VFKX7WOP.cjs +47 -0
  445. package/dist/{registry-63ASMXT4.cjs.map → registry-VFKX7WOP.cjs.map} +1 -1
  446. package/dist/registry-VFP3WWQP.js +10 -0
  447. package/dist/{registry-O7FJ2MPM.js.map → registry-VFP3WWQP.js.map} +1 -1
  448. package/dist/retry.cjs +5 -4
  449. package/dist/retry.js +4 -3
  450. package/dist/{run-C8FBAC8o.d.cts → run-BYSHf58D.d.cts} +185 -33
  451. package/dist/{run-C8FBAC8o.d.ts → run-BYSHf58D.d.ts} +185 -33
  452. package/dist/{run-to-completion-JDPIUKSH.js → run-to-completion-DRO77625.js} +3 -3
  453. package/dist/{run-to-completion-JDPIUKSH.js.map → run-to-completion-DRO77625.js.map} +1 -1
  454. package/dist/{run-to-completion-J73I6IY4.cjs → run-to-completion-X4OWM673.cjs} +13 -13
  455. package/dist/{run-to-completion-J73I6IY4.cjs.map → run-to-completion-X4OWM673.cjs.map} +1 -1
  456. package/dist/sandbox/bwrap.d.cts +27 -13
  457. package/dist/sandbox/bwrap.d.ts +27 -13
  458. package/dist/sandbox/index.cjs +20 -19
  459. package/dist/sandbox/index.cjs.map +1 -1
  460. package/dist/sandbox/index.js +5 -4
  461. package/dist/sandbox/index.js.map +1 -1
  462. package/dist/sandbox/linux-sandbox.d.cts +72 -0
  463. package/dist/sandbox/linux-sandbox.d.ts +72 -0
  464. package/dist/sandbox/local-sandbox.d.cts +41 -0
  465. package/dist/sandbox/local-sandbox.d.ts +41 -0
  466. package/dist/sandbox/seccomp.d.cts +6 -0
  467. package/dist/sandbox/seccomp.d.ts +6 -0
  468. package/dist/sandbox/types.d.cts +64 -0
  469. package/dist/sandbox/types.d.ts +64 -0
  470. package/dist/scorers.d.ts +38 -7
  471. package/dist/sdk-agent-D8qJVkuV.d.ts +860 -0
  472. package/dist/sdk-agent-DEoKhA8a.d.cts +860 -0
  473. package/dist/server/auth/errors.d.cts +1 -1
  474. package/dist/server/auth/errors.d.ts +1 -1
  475. package/dist/server/auth/index.cjs +29 -21
  476. package/dist/server/auth/index.cjs.map +1 -1
  477. package/dist/server/auth/index.d.cts +25 -15
  478. package/dist/server/auth/index.d.ts +25 -15
  479. package/dist/server/auth/index.js +15 -7
  480. package/dist/server/auth/index.js.map +1 -1
  481. package/dist/server/auth/oauth-transaction-store.d.cts +13 -1
  482. package/dist/server/auth/oauth-transaction-store.d.ts +13 -1
  483. package/dist/server/auth/orchestrator.d.cts +1 -1
  484. package/dist/server/auth/orchestrator.d.ts +1 -1
  485. package/dist/server/auth/types.d.cts +1 -1
  486. package/dist/server/auth/types.d.ts +1 -1
  487. package/dist/server/auth/validate-return-to.d.cts +21 -11
  488. package/dist/server/auth/validate-return-to.d.ts +21 -11
  489. package/dist/server/errors-envelope.cjs +15 -14
  490. package/dist/server/errors-envelope.cjs.map +1 -1
  491. package/dist/server/errors-envelope.d.cts +4 -4
  492. package/dist/server/errors-envelope.d.ts +4 -4
  493. package/dist/server/errors-envelope.js +4 -3
  494. package/dist/server/errors-envelope.js.map +1 -1
  495. package/dist/session-transcript-AKDYYGXQ.js +6 -0
  496. package/dist/{session-transcript-RAKEK76V.js.map → session-transcript-AKDYYGXQ.js.map} +1 -1
  497. package/dist/session-transcript-JXHFTB7G.cjs +51 -0
  498. package/dist/{session-transcript-DOM3UTXR.cjs.map → session-transcript-JXHFTB7G.cjs.map} +1 -1
  499. package/dist/skills.cjs +8 -7
  500. package/dist/skills.js +6 -5
  501. package/dist/stream-object-BUCF5PHO.cjs +21 -0
  502. package/dist/{stream-object-L3Q7PBMF.cjs.map → stream-object-BUCF5PHO.cjs.map} +1 -1
  503. package/dist/stream-object-L57K4OFS.js +8 -0
  504. package/dist/{stream-object-ZYXWS4B2.js.map → stream-object-L57K4OFS.js.map} +1 -1
  505. package/dist/{stream-to-completion-DFJ5T3BK.js → stream-to-completion-QV5HCL3J.js} +3 -3
  506. package/dist/{stream-to-completion-DFJ5T3BK.js.map → stream-to-completion-QV5HCL3J.js.map} +1 -1
  507. package/dist/{stream-to-completion-H2MHISSK.cjs → stream-to-completion-SRISU5AB.cjs} +10 -10
  508. package/dist/{stream-to-completion-H2MHISSK.cjs.map → stream-to-completion-SRISU5AB.cjs.map} +1 -1
  509. package/dist/subagents-loader-AZIXJ7D3.cjs +16 -0
  510. package/dist/{subagents-loader-VRW73QQT.cjs.map → subagents-loader-AZIXJ7D3.cjs.map} +1 -1
  511. package/dist/subagents-loader-J54ESLDV.js +7 -0
  512. package/dist/{subagents-loader-I56GSKAQ.js.map → subagents-loader-J54ESLDV.js.map} +1 -1
  513. package/dist/subagents-loader.cjs +7 -6
  514. package/dist/subagents-loader.cjs.map +1 -1
  515. package/dist/subagents-loader.d.cts +3 -2
  516. package/dist/subagents-loader.d.ts +3 -2
  517. package/dist/subagents-loader.js +5 -4
  518. package/dist/subagents-loader.js.map +1 -1
  519. package/dist/subscription/define-subscription.d.cts +1 -1
  520. package/dist/subscription/define-subscription.d.ts +1 -1
  521. package/dist/subscription/index.cjs +22 -9
  522. package/dist/subscription/index.cjs.map +1 -1
  523. package/dist/subscription/index.d.cts +1 -1
  524. package/dist/subscription/index.d.ts +1 -1
  525. package/dist/subscription/index.js +21 -8
  526. package/dist/subscription/index.js.map +1 -1
  527. package/dist/subscription/internal/adapter-types.d.cts +1 -1
  528. package/dist/subscription/internal/adapter-types.d.ts +1 -1
  529. package/dist/subscription/internal/server-integration.d.cts +1 -1
  530. package/dist/subscription/internal/server-integration.d.ts +1 -1
  531. package/dist/subscription/internal/sse-encoder.d.cts +1 -1
  532. package/dist/subscription/internal/sse-encoder.d.ts +1 -1
  533. package/dist/subscription/internal/sse-parser.d.cts +1 -1
  534. package/dist/subscription/internal/sse-parser.d.ts +1 -1
  535. package/dist/subscription/internal/subscription-runtime.d.cts +1 -1
  536. package/dist/subscription/internal/subscription-runtime.d.ts +1 -1
  537. package/dist/subscription/internal/ws-adapter-node.d.cts +1 -1
  538. package/dist/subscription/internal/ws-adapter-node.d.ts +1 -1
  539. package/dist/subscription/theokit-subscribe.d.cts +14 -1
  540. package/dist/subscription/theokit-subscribe.d.ts +14 -1
  541. package/dist/subscription/types.d.cts +19 -1
  542. package/dist/subscription/types.d.ts +19 -1
  543. package/dist/task-store.cjs +8 -7
  544. package/dist/task-store.js +5 -4
  545. package/dist/types/agent-prims.d.ts +14 -0
  546. package/dist/types/agent.d.ts +92 -11
  547. package/dist/types/batch.d.ts +7 -1
  548. package/dist/types/conversation.d.ts +18 -5
  549. package/dist/types/goal-events.d.ts +4 -8
  550. package/dist/types/memory-adapter.d.ts +12 -1
  551. package/dist/types/plugin.d.ts +101 -0
  552. package/dist/types/provider-profile.d.ts +32 -0
  553. package/dist/types/run-events.d.ts +28 -1
  554. package/dist/types/run.d.ts +35 -23
  555. package/dist/types/sdk-agent.d.ts +14 -0
  556. package/dist/types/session-record.d.ts +18 -1
  557. package/dist/types/task.d.ts +15 -1
  558. package/dist/types/theokit.d.ts +10 -1
  559. package/dist/types/updates.d.ts +35 -4
  560. package/dist/types/workflow.d.ts +155 -0
  561. package/dist/workflow.cjs +29 -28
  562. package/dist/workflow.d.cts +666 -17
  563. package/dist/workflow.d.ts +666 -17
  564. package/dist/workflow.js +8 -7
  565. package/docs/error-codes.md +215 -0
  566. package/docs/harness-capability-map.md +1358 -0
  567. package/package.json +29 -16
  568. package/bin/init-claude.mjs +0 -68
  569. package/claude-template/AGENTS.md +0 -157
  570. package/claude-template/CLAUDE.md +0 -66
  571. package/claude-template/dot-claude/rules/theokit-conventions.md +0 -32
  572. package/claude-template/dot-claude/settings.json +0 -16
  573. package/claude-template/dot-claude/skills/theokit-agent-core/SKILL.md +0 -209
  574. package/claude-template/dot-claude/skills/theokit-auth/SKILL.md +0 -102
  575. package/claude-template/dot-claude/skills/theokit-budget/SKILL.md +0 -176
  576. package/claude-template/dot-claude/skills/theokit-client/SKILL.md +0 -58
  577. package/claude-template/dot-claude/skills/theokit-compaction/SKILL.md +0 -102
  578. package/claude-template/dot-claude/skills/theokit-concurrency/SKILL.md +0 -68
  579. package/claude-template/dot-claude/skills/theokit-config/SKILL.md +0 -139
  580. package/claude-template/dot-claude/skills/theokit-cron/SKILL.md +0 -148
  581. package/claude-template/dot-claude/skills/theokit-di/SKILL.md +0 -233
  582. package/claude-template/dot-claude/skills/theokit-di-agent/SKILL.md +0 -294
  583. package/claude-template/dot-claude/skills/theokit-errors/SKILL.md +0 -172
  584. package/claude-template/dot-claude/skills/theokit-eval/SKILL.md +0 -179
  585. package/claude-template/dot-claude/skills/theokit-filesystem/SKILL.md +0 -74
  586. package/claude-template/dot-claude/skills/theokit-gateways/SKILL.md +0 -209
  587. package/claude-template/dot-claude/skills/theokit-memory/SKILL.md +0 -176
  588. package/claude-template/dot-claude/skills/theokit-messages/SKILL.md +0 -58
  589. package/claude-template/dot-claude/skills/theokit-models/SKILL.md +0 -79
  590. package/claude-template/dot-claude/skills/theokit-path-safety/SKILL.md +0 -60
  591. package/claude-template/dot-claude/skills/theokit-persistence/SKILL.md +0 -85
  592. package/claude-template/dot-claude/skills/theokit-project/SKILL.md +0 -55
  593. package/claude-template/dot-claude/skills/theokit-retry/SKILL.md +0 -50
  594. package/claude-template/dot-claude/skills/theokit-sandbox/SKILL.md +0 -93
  595. package/claude-template/dot-claude/skills/theokit-sanitize/SKILL.md +0 -66
  596. package/claude-template/dot-claude/skills/theokit-skills/SKILL.md +0 -68
  597. package/claude-template/dot-claude/skills/theokit-streaming/SKILL.md +0 -156
  598. package/claude-template/dot-claude/skills/theokit-subagents/SKILL.md +0 -109
  599. package/claude-template/dot-claude/skills/theokit-subscriptions/SKILL.md +0 -148
  600. package/claude-template/dot-claude/skills/theokit-task-store/SKILL.md +0 -75
  601. package/claude-template/dot-claude/skills/theokit-tools/SKILL.md +0 -170
  602. package/claude-template/dot-claude/skills/theokit-workflows/SKILL.md +0 -218
  603. package/dist/agent-FFVV4U5N.js +0 -50
  604. package/dist/agent-YLAHVHEH.cjs +0 -59
  605. package/dist/agent-session-store-DUGBAX5V.cjs +0 -23
  606. package/dist/agent-session-store-TNCGL5RN.js +0 -6
  607. package/dist/batch-UPKN4SG6.js.map +0 -1
  608. package/dist/batch-ZEFN5SO7.cjs.map +0 -1
  609. package/dist/chunk-2D43RD5D.cjs.map +0 -1
  610. package/dist/chunk-2FYEVT2B.cjs.map +0 -1
  611. package/dist/chunk-2RW7K6FN.cjs.map +0 -1
  612. package/dist/chunk-2XLKLVVR.js.map +0 -1
  613. package/dist/chunk-34XOCZJO.js.map +0 -1
  614. package/dist/chunk-3V7UJLQT.js.map +0 -1
  615. package/dist/chunk-4NAKHID5.js.map +0 -1
  616. package/dist/chunk-4Q4K4WB5.js.map +0 -1
  617. package/dist/chunk-5F5NWKPN.js.map +0 -1
  618. package/dist/chunk-5NBUH3NO.js.map +0 -1
  619. package/dist/chunk-5YKNEMXR.cjs.map +0 -1
  620. package/dist/chunk-7W7ZWMLQ.js.map +0 -1
  621. package/dist/chunk-ADLLFY3H.cjs.map +0 -1
  622. package/dist/chunk-B4YA6BRS.cjs.map +0 -1
  623. package/dist/chunk-B6HOIWQ6.js.map +0 -1
  624. package/dist/chunk-BDTVFIPB.cjs.map +0 -1
  625. package/dist/chunk-BFYGJGC5.js.map +0 -1
  626. package/dist/chunk-BM6N4KHO.cjs.map +0 -1
  627. package/dist/chunk-CAH3G4IS.js.map +0 -1
  628. package/dist/chunk-EZ2YEF4F.cjs.map +0 -1
  629. package/dist/chunk-F77UENR6.cjs.map +0 -1
  630. package/dist/chunk-FOXKFTVZ.cjs.map +0 -1
  631. package/dist/chunk-G3JWXOGY.js.map +0 -1
  632. package/dist/chunk-GOVJO4YE.js.map +0 -1
  633. package/dist/chunk-HAWE74GQ.cjs.map +0 -1
  634. package/dist/chunk-HE4BIAOS.js.map +0 -1
  635. package/dist/chunk-HSQ5Q3I5.js.map +0 -1
  636. package/dist/chunk-JIQRXKTA.cjs.map +0 -1
  637. package/dist/chunk-KSWHTR54.js.map +0 -1
  638. package/dist/chunk-L5YO6PWL.cjs.map +0 -1
  639. package/dist/chunk-LD4MOBFX.js.map +0 -1
  640. package/dist/chunk-LS3LMQ23.js.map +0 -1
  641. package/dist/chunk-MSFLYJDY.js.map +0 -1
  642. package/dist/chunk-NZL4BNFQ.js.map +0 -1
  643. package/dist/chunk-OKLYRPKL.cjs.map +0 -1
  644. package/dist/chunk-OUOXM36O.cjs.map +0 -1
  645. package/dist/chunk-OXNYIMZZ.js.map +0 -1
  646. package/dist/chunk-PBZ7HMBP.js.map +0 -1
  647. package/dist/chunk-PNVDQL5Y.cjs.map +0 -1
  648. package/dist/chunk-Q4RESANI.cjs.map +0 -1
  649. package/dist/chunk-QBTVATSF.cjs.map +0 -1
  650. package/dist/chunk-RAHSWE5C.cjs.map +0 -1
  651. package/dist/chunk-RP5HQVLD.js.map +0 -1
  652. package/dist/chunk-SEL2ZQMT.js.map +0 -1
  653. package/dist/chunk-SK4QLUBK.js.map +0 -1
  654. package/dist/chunk-TTJ54H3E.cjs.map +0 -1
  655. package/dist/chunk-V26QVGUG.js.map +0 -1
  656. package/dist/chunk-V6HWJQQV.js.map +0 -1
  657. package/dist/chunk-VGPXHHF3.cjs.map +0 -1
  658. package/dist/chunk-VUKQL3L2.cjs.map +0 -1
  659. package/dist/chunk-VYCKUKPA.cjs.map +0 -1
  660. package/dist/chunk-VYHJZVL5.cjs.map +0 -1
  661. package/dist/chunk-X2FR4OIT.js.map +0 -1
  662. package/dist/chunk-XPR366DL.cjs.map +0 -1
  663. package/dist/chunk-XROIW6BH.js.map +0 -1
  664. package/dist/chunk-YLQQX5W2.cjs.map +0 -1
  665. package/dist/chunk-ZT57WTUJ.cjs.map +0 -1
  666. package/dist/compact-session-4MNKNMO2.js +0 -21
  667. package/dist/compact-session-EPFBQ46Z.cjs +0 -58
  668. package/dist/context-7USNN6LP.cjs +0 -22
  669. package/dist/context-ENXZNF6J.js +0 -5
  670. package/dist/cron-BMjgFH-_.d.ts +0 -631
  671. package/dist/cron-DFDdCdMM.d.cts +0 -631
  672. package/dist/executor-2Z3LGG3I.cjs.map +0 -1
  673. package/dist/executor-2Z6XJJJG.js.map +0 -1
  674. package/dist/fs-session-store-R5FD3EN6.js +0 -10
  675. package/dist/fs-session-store-VVY2AHWG.cjs +0 -19
  676. package/dist/generate-object-AVXOJK2I.cjs +0 -20
  677. package/dist/generate-object-WQRCXFD2.js +0 -7
  678. package/dist/index-manager-VRU3A2YL.cjs +0 -21
  679. package/dist/index-manager-WS7TVKUW.js +0 -12
  680. package/dist/inject-session-AUQLBDRS.cjs +0 -28
  681. package/dist/inject-session-AUQLBDRS.cjs.map +0 -1
  682. package/dist/inject-session-GMBMJVNZ.js.map +0 -1
  683. package/dist/judge-call-G5SGV2M2.cjs +0 -22
  684. package/dist/judge-call-MDIPTBJI.js +0 -5
  685. package/dist/oauth-transaction-store-7CKHPQRN.cjs +0 -32
  686. package/dist/oauth-transaction-store-W74I6EFD.js +0 -3
  687. package/dist/registry-63ASMXT4.cjs +0 -46
  688. package/dist/registry-O7FJ2MPM.js +0 -9
  689. package/dist/session-transcript-DOM3UTXR.cjs +0 -50
  690. package/dist/session-transcript-RAKEK76V.js +0 -5
  691. package/dist/stream-object-L3Q7PBMF.cjs +0 -20
  692. package/dist/stream-object-ZYXWS4B2.js +0 -7
  693. package/dist/subagents-loader-I56GSKAQ.js +0 -6
  694. package/dist/subagents-loader-VRW73QQT.cjs +0 -15
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/subscription/define-subscription.ts","../../src/subscription/internal/sse-parser.ts","../../src/subscription/types.ts","../../src/subscription/theokit-subscribe.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * @theokit/sdk — `defineSubscription` DSL (G8 public API).\n *\n * Per ADR D426 (AsyncGenerator handler + Zod input/output schemas).\n *\n * @public\n */\n\nimport type { SubscriptionCtx, SubscriptionDescriptor, TrackedEnvelope, ZodLike } from \"./types.js\";\n\n/**\n * Options accepted by {@link defineSubscription}.\n *\n * @public\n */\nexport interface DefineSubscriptionOptions<TInput, TOutput> {\n /** Optional explicit name. Falls back to filename derivation by the scanner. */\n name?: string;\n /** Zod schema validating subscription input. Required (typed RPC contract). */\n input: ZodLike<TInput>;\n /** Zod schema describing each output frame. Informational; not enforced per-frame. */\n output: ZodLike<TOutput>;\n /**\n * Handler that produces the subscription stream.\n *\n * Receives the validated input + {@link SubscriptionCtx}. Yielding a value\n * emits a plain output frame. Yielding a `tracked(id, payload)` envelope\n * additionally advertises a resume token to the client so reconnects can\n * resume from that point.\n */\n handler: (\n input: TInput,\n ctx: SubscriptionCtx,\n ) => AsyncGenerator<TOutput | TrackedEnvelope<TOutput>, void, void>;\n}\n\n/**\n * Define a typed subscription. Pair with `Theokit.subscribe(name, input)`\n * on the client side.\n *\n * Per ADR D426 — handler is `AsyncGenerator<TOutput | TrackedEnvelope<TOutput>>`.\n * The runtime validates input via `opts.input.safeParse` BEFORE invoking the\n * handler; failure throws {@link import('./types.js').SubscriptionInputError}.\n *\n * @example\n * ```ts\n * import { Subscription } from \"@theokit/sdk/subscription\";\n * import { z } from \"zod\";\n *\n * export default Subscription.create({\n * input: z.object({ topic: z.string() }),\n * output: z.object({ message: z.string(), ts: z.number() }),\n * async *handler(input, ctx) {\n * let cursor = ctx.lastEventId ?? \"0\";\n * while (!ctx.signal.aborted) {\n * const msgs = await fetchMessagesSince(input.topic, cursor);\n * for (const m of msgs) {\n * cursor = m.id;\n * yield ctx.tracked(m.id, { message: m.body, ts: m.ts });\n * }\n * await sleep(1000);\n * }\n * },\n * });\n * ```\n *\n * @public\n */\nexport function defineSubscription<TInput, TOutput>(\n opts: DefineSubscriptionOptions<TInput, TOutput>,\n): SubscriptionDescriptor<TInput, TOutput> {\n if (opts === null || typeof opts !== \"object\") {\n throw new TypeError(\"defineSubscription: options object is required\");\n }\n if (opts.input === undefined || typeof opts.input.safeParse !== \"function\") {\n throw new TypeError(\"defineSubscription: opts.input must be a Zod schema (or ZodLike)\");\n }\n if (opts.output === undefined || typeof opts.output.safeParse !== \"function\") {\n throw new TypeError(\"defineSubscription: opts.output must be a Zod schema (or ZodLike)\");\n }\n if (typeof opts.handler !== \"function\") {\n throw new TypeError(\"defineSubscription: opts.handler must be an async generator function\");\n }\n return {\n ...(opts.name !== undefined ? { name: opts.name } : {}),\n input: opts.input,\n output: opts.output,\n handler: opts.handler,\n };\n}\n\n/** SE36 — `Subscription.create` replaces `defineSubscription` (ADR 0015). @public */\nexport class Subscription {\n private constructor() {}\n static create<TInput, TOutput>(\n opts: DefineSubscriptionOptions<TInput, TOutput>,\n ): SubscriptionDescriptor<TInput, TOutput> {\n return defineSubscription(opts);\n }\n}\n","/**\n * @theokit/sdk — W3C SSE parser (G8 internal).\n *\n * Per ADR D428. Reads from `ReadableStream<Uint8Array>` or async iterable of\n * UTF-8 chunks; yields parsed {@link SSEvent} objects per W3C SSE spec.\n *\n * Independent of `internal/llm/sse.ts:parseSseStream` (LLM-specific a peer vendor AI\n * Data Stream v1; locked by D38). This parser handles the `id:` field needed\n * for tracked envelopes (G8 resume mechanism), which the LLM parser ignores.\n *\n * Reference: https://html.spec.whatwg.org/multipage/server-sent-events.html\n *\n * @internal\n */\n\nimport type { SSEvent } from \"./sse-encoder.js\";\n\nconst decoder = new TextDecoder(\"utf-8\");\n\n/**\n * Parse an async iterable of UTF-8 byte chunks into a stream of SSE events.\n *\n * Implements the W3C event stream parser:\n * - Lines are split by `\\n`, `\\r\\n`, or `\\r`\n * - Events are dispatched on blank line (no `:` and no field name)\n * - Fields: `event`, `data` (multi-line concat with `\\n`), `id`, `retry`\n * - Lines starting with `:` are comments (ignored, except dispatched as `comment`)\n * - Unknown fields silently ignored per spec\n *\n * Empty events (no fields) are NOT dispatched per spec.\n *\n * @internal\n */\nexport async function* parseSseW3C(\n source: AsyncIterable<Uint8Array>,\n): AsyncGenerator<SSEvent, void, void> {\n let buffer = \"\";\n let eventName: string | undefined;\n let dataLines: string[] = [];\n let id: string | undefined;\n let retry: number | undefined;\n let commentLines: string[] = [];\n let hasField = false;\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: dispatch builds SSEvent from per-field state per W3C spec — refactor candidate\n const dispatch = (): SSEvent | null => {\n if (!hasField) {\n // Blank line with no preceding fields → reset state, no dispatch (per spec § 9.2.6)\n eventName = undefined;\n dataLines = [];\n id = undefined;\n retry = undefined;\n commentLines = [];\n return null;\n }\n const chunk: SSEvent = {};\n if (eventName !== undefined) (chunk as { event?: string }).event = eventName;\n if (dataLines.length > 0) (chunk as { data?: string }).data = dataLines.join(\"\\n\");\n if (id !== undefined) (chunk as { id?: string }).id = id;\n if (retry !== undefined) (chunk as { retry?: number }).retry = retry;\n if (commentLines.length > 0) (chunk as { comment?: string }).comment = commentLines.join(\"\\n\");\n eventName = undefined;\n dataLines = [];\n id = undefined;\n retry = undefined;\n commentLines = [];\n hasField = false;\n return chunk;\n };\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: handleLine dispatches across all SSE field kinds per W3C spec — refactor candidate\n const handleLine = (line: string): SSEvent | null => {\n if (line === \"\") {\n return dispatch();\n }\n if (line.startsWith(\":\")) {\n // Comment line — per spec ignored, but we surface it for keepalive visibility.\n commentLines.push(line.slice(1).replace(/^ /, \"\"));\n hasField = true;\n return null;\n }\n const colonIdx = line.indexOf(\":\");\n let field: string;\n let value: string;\n if (colonIdx === -1) {\n field = line;\n value = \"\";\n } else {\n field = line.slice(0, colonIdx);\n value = line.slice(colonIdx + 1);\n // Strip ONE leading space if present (per spec § 9.2.6)\n if (value.startsWith(\" \")) value = value.slice(1);\n }\n switch (field) {\n case \"event\":\n eventName = value;\n hasField = true;\n break;\n case \"data\":\n dataLines.push(value);\n hasField = true;\n break;\n case \"id\":\n // Per spec: id with NULL is ignored\n if (!value.includes(\"\\0\")) {\n id = value;\n hasField = true;\n }\n break;\n case \"retry\":\n if (/^\\d+$/.test(value)) {\n retry = Number.parseInt(value, 10);\n hasField = true;\n }\n break;\n default:\n // Unknown field — ignored per spec\n break;\n }\n return null;\n };\n\n for await (const bytes of source) {\n // Normalize CRLF / CR to LF then split\n buffer += decoder.decode(bytes, { stream: true }).replace(/\\r\\n|\\r/g, \"\\n\");\n let idx: number;\n // biome-ignore lint/suspicious/noAssignInExpressions: idiomatic while-assignment loop for buffered line parsing\n while ((idx = buffer.indexOf(\"\\n\")) !== -1) {\n const line = buffer.slice(0, idx);\n buffer = buffer.slice(idx + 1);\n const event = handleLine(line);\n if (event !== null) yield event;\n }\n }\n // Flush remaining buffer as a final line (no trailing newline case)\n buffer += decoder.decode();\n if (buffer.length > 0) {\n const event = handleLine(buffer);\n if (event !== null) yield event;\n }\n // Final dispatch in case last event lacked terminating blank line\n const tail = dispatch();\n if (tail !== null) yield tail;\n}\n","/**\n * @theokit/sdk — Subscription type contract (G8 v1.7.0).\n *\n * Per ADRs D423 (resume token opaque), D424 (transport selection),\n * D426 (defineSubscription DSL shape).\n *\n * @public\n */\n\nimport { TheokitAgentError } from \"../errors.js\";\n\n/**\n * Transport selection for subscriptions.\n *\n * - `'ws'`: WebSocket (bidirectional). Required for inbound client→server frames.\n * v1.7 ships Node-canonical `ws` adapter; CF/Bun/Deno deferred to v1.8.x per ADR D425.\n * - `'sse'`: W3C Server-Sent Events (server→client only). Browser-native EventSource.\n * - `'auto'`: Prefer WS, fall back SSE on upgrade failure. Default.\n *\n * @public\n */\nexport type SubscriptionTransport = \"ws\" | \"sse\" | \"auto\";\n\n/**\n * Context passed to a subscription `handler` on each invocation.\n *\n * @public\n */\nexport interface SubscriptionCtx {\n /**\n * Opaque resume token forwarded by the client when reconnecting.\n * Handler defines its own semantics (monotonic int, ULID, timestamp,\n * encrypted cursor). SDK passes through unchanged. Per ADR D423.\n */\n readonly lastEventId?: string;\n\n /**\n * AbortSignal that fires when the subscription is cancelled\n * (client disconnect, consumer abort, server shutdown).\n * Handler MUST honor `signal.aborted` in long-running loops.\n */\n readonly signal: AbortSignal;\n\n /**\n * Stable identifier for the underlying transport connection.\n * Different from the subscription name — one connection may host\n * many subscriptions. Useful for logging / per-connection state.\n */\n readonly connectionId: string;\n\n /**\n * Force-close the underlying transport with optional WS close code + reason.\n * Used by consumer code (e.g., auth middleware revoking a session) to\n * terminate a subscription that should not continue.\n */\n disconnect(code?: number, reason?: string): void;\n\n /**\n * Helper to mint a tracked envelope `[id, payload]`.\n * Yielding tracked envelopes lets the client advance `lastEventId`\n * so reconnects can resume from that point.\n */\n tracked<TPayload>(id: string, payload: TPayload): TrackedEnvelope<TPayload>;\n}\n\n/**\n * Tracked envelope: `[id, payload]` tuple yielded by subscription handlers\n * to advertise the resume token associated with the payload.\n *\n * The encoder writes the `id` as an SSE `id:` field or WS payload metadata\n * so the client can echo it back on reconnect (`input.lastEventId`).\n *\n * Per ADR D423.\n *\n * @public\n */\nexport type TrackedEnvelope<T> = readonly [id: string, payload: T];\n\n/**\n * Type guard for {@link TrackedEnvelope}.\n *\n * @public\n */\nexport function isTrackedEnvelope(value: unknown): value is TrackedEnvelope<unknown> {\n return Array.isArray(value) && value.length === 2 && typeof value[0] === \"string\";\n}\n\n/**\n * Mint a tracked envelope. Equivalent to `[id, payload] as const`,\n * exported as a function so consumers don't repeat the tuple cast.\n *\n * @public\n */\nexport function tracked<T>(id: string, payload: T): TrackedEnvelope<T> {\n if (typeof id !== \"string\" || id.length === 0) {\n throw new TypeError(\"tracked(): id must be a non-empty string\");\n }\n return [id, payload] as const;\n}\n\n/**\n * Base error for the subscription subsystem. Extends {@link TheokitAgentError}\n * so existing `instanceof TheokitAgentError` branches keep working.\n *\n * @public\n */\nexport class SubscriptionError extends TheokitAgentError {\n override readonly name: string = \"SubscriptionError\";\n\n constructor(message: string, options: { code?: string; cause?: unknown } = {}) {\n super(message, { ...options, isRetryable: false });\n }\n}\n\n/**\n * Thrown when subscription input fails Zod schema validation.\n *\n * @public\n */\nexport class SubscriptionInputError extends SubscriptionError {\n override readonly name: string = \"SubscriptionInputError\";\n\n readonly issues: unknown;\n\n constructor(message: string, options: { issues: unknown; cause?: unknown }) {\n super(message, { code: \"subscription_input_invalid\", cause: options.cause });\n this.issues = options.issues;\n }\n}\n\n/**\n * Thrown when a subscription transport disconnects unexpectedly\n * AND the client did not opt out of reconnect.\n *\n * @public\n */\nexport class SubscriptionDisconnectError extends SubscriptionError {\n override readonly name: string = \"SubscriptionDisconnectError\";\n\n readonly closeCode?: number;\n readonly closeReason?: string;\n\n constructor(\n message: string,\n options: { closeCode?: number; closeReason?: string; cause?: unknown } = {},\n ) {\n super(message, { code: \"subscription_disconnected\", cause: options.cause });\n if (options.closeCode !== undefined) this.closeCode = options.closeCode;\n if (options.closeReason !== undefined) this.closeReason = options.closeReason;\n }\n}\n\n/**\n * Descriptor returned by {@link Subscription.create}. Carries the typed\n * input/output Zod schemas + handler factory.\n *\n * @public\n */\nexport interface SubscriptionDescriptor<TInput = unknown, TOutput = unknown> {\n /** Optional explicit name; the runtime may also derive name from file path. */\n readonly name?: string;\n /** Zod schema for the subscription input. Validated at dispatch boundary. */\n readonly input: ZodLike<TInput>;\n /** Zod schema for each output frame (informational; not enforced per-frame). */\n readonly output: ZodLike<TOutput>;\n /** Async handler that yields output frames (or tracked envelopes). */\n readonly handler: (\n input: TInput,\n ctx: SubscriptionCtx,\n ) => AsyncGenerator<TOutput | TrackedEnvelope<TOutput>, void, void>;\n}\n\n/**\n * Minimal structural Zod type used to avoid hard peer-dep import.\n * Mirrors the surface used by other SDK modules (e.g., `define-tool.ts`).\n *\n * @internal\n */\nexport interface ZodLike<T> {\n safeParse(value: unknown): { success: true; data: T } | { success: false; error: unknown };\n parse(value: unknown): T;\n}\n","/**\n * @theokit/sdk — `Theokit.subscribe` client (G8 public API).\n *\n * Per ADR D427 (Theokit.subscribe namespace) + D424 (transport selection)\n * + D423 (lastEventId opaque propagation).\n *\n * Returns an AsyncGenerator that yields server-sent values. Transparent\n * reconnect with exponential backoff. Propagates `lastEventId` from the last\n * received tracked envelope on each reconnect attempt.\n *\n * @public\n */\n\nimport { parseSseW3C } from \"./internal/sse-parser.js\";\nimport type { WireFrame } from \"./internal/subscription-runtime.js\";\nimport {\n SubscriptionDisconnectError,\n SubscriptionError,\n type SubscriptionTransport,\n} from \"./types.js\";\n\n/**\n * Options accepted by `Theokit.subscribe(name, input, opts?)`.\n *\n * @public\n */\nexport interface SubscribeOptions {\n /** Base URL of the server (e.g., `\"http://localhost:3000\"`). Required. */\n baseUrl: string;\n /** Preferred transport. Default `\"auto\"` (WS preferred, SSE fallback). */\n transport?: SubscriptionTransport;\n /** Max reconnect attempts (default 10). 0 disables reconnect. */\n maxReconnectAttempts?: number;\n /** Backoff strategy. Default exponential `min(30_000, 1000 * 2^attempt)` ms. */\n retryDelayMs?: (attempt: number) => number;\n /** Caller-supplied abort signal. Cancels the subscription entirely. */\n signal?: AbortSignal;\n /** Additional fetch-style headers (e.g., `Authorization`). */\n headers?: Record<string, string>;\n}\n\nconst defaultRetry = (attempt: number) => Math.min(30_000, 1000 * 2 ** attempt);\n\n/**\n * Subscribe to a typed subscription. Yields values produced by the server\n * handler. On disconnect with reconnect enabled, transparently re-establishes\n * the connection and forwards `lastEventId` from the last received tracked\n * envelope so the server handler can resume.\n *\n * @public\n */\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: G8 subscribe orchestrates reconnect + transport switch + resume — refactor candidate tracked in subscription/theokit-subscribe.ts:52 followup\nexport async function* subscribe<TInput, TOutput>(\n name: string,\n input: TInput,\n opts: SubscribeOptions,\n): AsyncGenerator<TOutput, void, void> {\n if (typeof name !== \"string\" || name.length === 0) {\n throw new SubscriptionError(\"Theokit.subscribe: name must be a non-empty string\", {\n code: \"subscribe_name_invalid\",\n });\n }\n if (opts === null || typeof opts !== \"object\" || typeof opts.baseUrl !== \"string\") {\n throw new SubscriptionError(\"Theokit.subscribe: opts.baseUrl is required\", {\n code: \"subscribe_baseUrl_missing\",\n });\n }\n const transport = opts.transport ?? \"auto\";\n const maxReconnects = opts.maxReconnectAttempts ?? 10;\n const retry = opts.retryDelayMs ?? defaultRetry;\n\n let lastEventId: string | undefined;\n let attempt = 0;\n\n while (true) {\n if (opts.signal?.aborted) return;\n try {\n const inputWithCursor = mergeLastEventId(input, lastEventId);\n const chosen = await selectTransport(transport, name, opts);\n if (chosen === \"ws\") {\n for await (const out of openWs<TOutput>(name, inputWithCursor, opts)) {\n if (out.lastEventId !== undefined) lastEventId = out.lastEventId;\n attempt = 0; // reset backoff on successful frame\n yield out.value;\n }\n } else {\n for await (const out of openSse<TOutput>(name, inputWithCursor, opts)) {\n if (out.lastEventId !== undefined) lastEventId = out.lastEventId;\n attempt = 0;\n yield out.value;\n }\n }\n // Clean end-of-stream — no reconnect.\n return;\n } catch (cause) {\n if (opts.signal?.aborted) return;\n if (maxReconnects === 0 || attempt >= maxReconnects) {\n if (cause instanceof SubscriptionError) throw cause;\n throw new SubscriptionDisconnectError(\n `subscription \"${name}\" disconnected; reconnect exhausted`,\n { cause },\n );\n }\n const delay = retry(attempt);\n attempt++;\n await sleep(delay, opts.signal);\n }\n }\n}\n\ninterface FrameOut<T> {\n readonly value: T;\n readonly lastEventId?: string;\n}\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: openSse parses framed SSE stream with abort/error/retry branches — refactor candidate\nasync function* openSse<T>(\n name: string,\n input: unknown,\n opts: SubscribeOptions,\n): AsyncIterable<FrameOut<T>> {\n const url = `${stripTrailingSlash(opts.baseUrl)}/api/subscriptions/${encodeURIComponent(name)}?input=${encodeURIComponent(JSON.stringify(input))}`;\n const res = await fetch(url, {\n method: \"GET\",\n headers: {\n accept: \"text/event-stream\",\n ...(opts.headers ?? {}),\n },\n ...(opts.signal !== undefined ? { signal: opts.signal } : {}),\n });\n if (!res.ok || res.body === null) {\n throw new SubscriptionError(`SSE subscribe failed: HTTP ${res.status} ${res.statusText}`, {\n code: \"sse_http_error\",\n });\n }\n const events = parseSseW3C(streamToAsyncIterable(res.body));\n for await (const ev of events) {\n if (ev.event === \"end\") return;\n if (ev.event === \"error\") {\n throw new SubscriptionError(`SSE server emitted error: ${ev.data ?? \"(no body)\"}`, {\n code: \"sse_server_error\",\n });\n }\n if (ev.event === \"connected\") continue;\n if (ev.data === undefined) continue;\n const parsedValue = safeJsonParse<T>(ev.data);\n if (parsedValue === undefined) continue;\n yield {\n value: parsedValue,\n ...(ev.id !== undefined ? { lastEventId: ev.id } : {}),\n };\n }\n}\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: openWs orchestrates WS lifecycle + envelope decode + cleanup — refactor candidate\nasync function* openWs<T>(\n name: string,\n input: unknown,\n opts: SubscribeOptions,\n): AsyncIterable<FrameOut<T>> {\n const baseUrl = stripTrailingSlash(opts.baseUrl);\n const wsUrl = baseUrl\n .replace(/^http:/, \"ws:\")\n .replace(/^https:/, \"wss:\")\n .concat(\"/api/ws\");\n\n const WS = (globalThis as { WebSocket?: typeof WebSocket }).WebSocket;\n if (WS === undefined) {\n throw new SubscriptionError(\n \"Theokit.subscribe(transport='ws'): no global WebSocket available. Use Node >=22 or install 'ws' as a runtime dep + assign to globalThis.WebSocket.\",\n { code: \"ws_global_missing\" },\n );\n }\n const ws = new WS(wsUrl);\n\n // Set up async iterator-like state.\n const incoming: WireFrame[] = [];\n // biome-ignore lint/suspicious/noConfusingVoidType: idiomatic event-callback signature; refactoring to undefined would mask the no-value semantics\n let waiter: ((value: void) => void) | null = null;\n let closed = false;\n let closeError: Error | undefined;\n\n ws.addEventListener(\"message\", (ev: MessageEvent) => {\n const data = typeof ev.data === \"string\" ? ev.data : \"\";\n const frame = safeJsonParse<WireFrame>(data);\n if (frame !== undefined) {\n incoming.push(frame);\n if (waiter !== null) {\n waiter();\n waiter = null;\n }\n }\n });\n ws.addEventListener(\"close\", () => {\n closed = true;\n if (waiter !== null) {\n waiter();\n waiter = null;\n }\n });\n ws.addEventListener(\"error\", () => {\n closed = true;\n closeError = new Error(\"WebSocket error\");\n if (waiter !== null) {\n waiter();\n waiter = null;\n }\n });\n\n await new Promise<void>((resolve, reject) => {\n ws.addEventListener(\"open\", () => resolve(), { once: true });\n ws.addEventListener(\"error\", () => reject(new Error(\"WS connect failed\")), { once: true });\n });\n\n // Send subscribe request after handshake.\n ws.send(JSON.stringify({ kind: \"subscribe\", name, input }));\n\n if (opts.signal !== undefined) {\n opts.signal.addEventListener(\"abort\", () => ws.close(), { once: true });\n }\n\n try {\n while (true) {\n if (incoming.length === 0) {\n if (closed) {\n if (closeError !== undefined) throw closeError;\n return;\n }\n await new Promise<void>((resolve) => {\n waiter = resolve;\n });\n continue;\n }\n const frame = incoming.shift() as WireFrame;\n if (frame.type === \"end\") return;\n if (frame.type === \"error\") {\n throw new SubscriptionError(\n `WS server emitted error: ${frame.error?.message ?? \"(unknown)\"}`,\n { code: \"ws_server_error\" },\n );\n }\n const value = frame.data as T;\n yield {\n value,\n ...(frame.id !== undefined ? { lastEventId: frame.id } : {}),\n };\n }\n } finally {\n try {\n ws.close();\n } catch {\n /* ignore */\n }\n }\n}\n\nasync function selectTransport(\n pref: SubscriptionTransport,\n _name: string,\n _opts: SubscribeOptions,\n): Promise<\"ws\" | \"sse\"> {\n if (pref === \"ws\") return \"ws\";\n if (pref === \"sse\") return \"sse\";\n // auto — prefer WS if available, else SSE.\n if (typeof (globalThis as { WebSocket?: unknown }).WebSocket === \"function\") {\n return \"ws\";\n }\n return \"sse\";\n}\n\nfunction mergeLastEventId(input: unknown, lastEventId: string | undefined): unknown {\n if (lastEventId === undefined) return input;\n if (input === null || typeof input !== \"object\" || Array.isArray(input)) {\n // Cannot merge into primitive — return as-is.\n return input;\n }\n return { ...(input as object), lastEventId };\n}\n\nfunction stripTrailingSlash(s: string): string {\n return s.endsWith(\"/\") ? s.slice(0, -1) : s;\n}\n\nfunction safeJsonParse<T>(s: string): T | undefined {\n try {\n return JSON.parse(s) as T;\n } catch {\n return undefined;\n }\n}\n\nasync function* streamToAsyncIterable(\n stream: ReadableStream<Uint8Array>,\n): AsyncIterable<Uint8Array> {\n const reader = stream.getReader();\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) return;\n if (value !== undefined) yield value;\n }\n } finally {\n reader.releaseLock();\n }\n}\n\nfunction sleep(ms: number, signal?: AbortSignal): Promise<void> {\n return new Promise((resolve, reject) => {\n if (signal?.aborted) {\n reject(new Error(\"aborted\"));\n return;\n }\n const t = setTimeout(() => {\n signal?.removeEventListener(\"abort\", onAbort);\n resolve();\n }, ms);\n const onAbort = () => {\n clearTimeout(t);\n reject(new Error(\"aborted\"));\n };\n signal?.addEventListener(\"abort\", onAbort, { once: true });\n });\n}\n"]}
1
+ {"version":3,"sources":["../../src/subscription/define-subscription.ts","../../src/subscription/internal/sse-parser.ts","../../src/subscription/types.ts","../../src/subscription/theokit-subscribe.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * `defineSubscription` DSL (G8 public API) — `@theokit/sdk`.\n *\n * Per ADR D426 (AsyncGenerator handler + Zod input/output schemas).\n *\n * @public\n */\n\nimport type { SubscriptionCtx, SubscriptionDescriptor, TrackedEnvelope, ZodLike } from \"./types.js\";\n\n/**\n * Options accepted by {@link defineSubscription}.\n *\n * @public\n */\nexport interface DefineSubscriptionOptions<TInput, TOutput> {\n /** Optional explicit name. Falls back to filename derivation by the scanner. */\n name?: string;\n /** Zod schema validating subscription input. Required (typed RPC contract). */\n input: ZodLike<TInput>;\n /** Zod schema describing each output frame. Informational; not enforced per-frame. */\n output: ZodLike<TOutput>;\n /**\n * Handler that produces the subscription stream.\n *\n * Receives the validated input + {@link SubscriptionCtx}. Yielding a value\n * emits a plain output frame. Yielding a `tracked(id, payload)` envelope\n * additionally advertises a resume token to the client so reconnects can\n * resume from that point.\n */\n handler: (\n input: TInput,\n ctx: SubscriptionCtx,\n ) => AsyncGenerator<TOutput | TrackedEnvelope<TOutput>, void, void>;\n}\n\n/**\n * Define a typed subscription. Pair with `Theokit.subscribe(name, input)`\n * on the client side.\n *\n * Per ADR D426 — handler is `AsyncGenerator<TOutput | TrackedEnvelope<TOutput>>`.\n * The runtime validates input via `opts.input.safeParse` BEFORE invoking the\n * handler; failure throws {@link import('./types.js').SubscriptionInputError}.\n *\n * @example\n * ```ts\n * import { Subscription } from \"@theokit/sdk/subscription\";\n * import { z } from \"zod\";\n *\n * export default Subscription.create({\n * input: z.object({ topic: z.string() }),\n * output: z.object({ message: z.string(), ts: z.number() }),\n * async *handler(input, ctx) {\n * let cursor = ctx.lastEventId ?? \"0\";\n * while (!ctx.signal.aborted) {\n * const msgs = await fetchMessagesSince(input.topic, cursor);\n * for (const m of msgs) {\n * cursor = m.id;\n * yield ctx.tracked(m.id, { message: m.body, ts: m.ts });\n * }\n * await sleep(1000);\n * }\n * },\n * });\n * ```\n *\n * @public\n */\nexport function defineSubscription<TInput, TOutput>(\n opts: DefineSubscriptionOptions<TInput, TOutput>,\n): SubscriptionDescriptor<TInput, TOutput> {\n if (opts === null || typeof opts !== \"object\") {\n throw new TypeError(\"defineSubscription: options object is required\");\n }\n if (opts.input === undefined || typeof opts.input.safeParse !== \"function\") {\n throw new TypeError(\"defineSubscription: opts.input must be a Zod schema (or ZodLike)\");\n }\n if (opts.output === undefined || typeof opts.output.safeParse !== \"function\") {\n throw new TypeError(\"defineSubscription: opts.output must be a Zod schema (or ZodLike)\");\n }\n if (typeof opts.handler !== \"function\") {\n throw new TypeError(\"defineSubscription: opts.handler must be an async generator function\");\n }\n return {\n ...(opts.name !== undefined ? { name: opts.name } : {}),\n input: opts.input,\n output: opts.output,\n handler: opts.handler,\n };\n}\n\n/** SE36 — `Subscription.create` replaces `defineSubscription` (ADR 0015). @public */\nexport class Subscription {\n private constructor() {}\n static create<TInput, TOutput>(\n opts: DefineSubscriptionOptions<TInput, TOutput>,\n ): SubscriptionDescriptor<TInput, TOutput> {\n return defineSubscription(opts);\n }\n}\n","/**\n * W3C SSE parser (G8 internal) — `@theokit/sdk`.\n *\n * Per ADR D428. Reads from `ReadableStream<Uint8Array>` or async iterable of\n * UTF-8 chunks; yields parsed {@link SSEvent} objects per W3C SSE spec.\n *\n * Independent of `internal/llm/sse.ts:parseSseStream` (LLM-specific a peer vendor AI\n * Data Stream v1; locked by D38). This parser handles the `id:` field needed\n * for tracked envelopes (G8 resume mechanism), which the LLM parser ignores.\n *\n * Reference: https://html.spec.whatwg.org/multipage/server-sent-events.html\n *\n * @internal\n */\n\nimport type { SSEvent } from \"./sse-encoder.js\";\n\nconst decoder = new TextDecoder(\"utf-8\");\n\n/**\n * Parse an async iterable of UTF-8 byte chunks into a stream of SSE events.\n *\n * Implements the W3C event stream parser:\n * - Lines are split by `\\n`, `\\r\\n`, or `\\r`\n * - Events are dispatched on blank line (no `:` and no field name)\n * - Fields: `event`, `data` (multi-line concat with `\\n`), `id`, `retry`\n * - Lines starting with `:` are comments (ignored, except dispatched as `comment`)\n * - Unknown fields silently ignored per spec\n *\n * Empty events (no fields) are NOT dispatched per spec.\n *\n * @internal\n */\nexport async function* parseSseW3C(\n source: AsyncIterable<Uint8Array>,\n): AsyncGenerator<SSEvent, void, void> {\n let buffer = \"\";\n let eventName: string | undefined;\n let dataLines: string[] = [];\n let id: string | undefined;\n let retry: number | undefined;\n let commentLines: string[] = [];\n let hasField = false;\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: dispatch builds SSEvent from per-field state per W3C spec — refactor candidate\n const dispatch = (): SSEvent | null => {\n if (!hasField) {\n // Blank line with no preceding fields → reset state, no dispatch (per spec § 9.2.6)\n eventName = undefined;\n dataLines = [];\n id = undefined;\n retry = undefined;\n commentLines = [];\n return null;\n }\n const chunk: SSEvent = {};\n if (eventName !== undefined) (chunk as { event?: string }).event = eventName;\n if (dataLines.length > 0) (chunk as { data?: string }).data = dataLines.join(\"\\n\");\n if (id !== undefined) (chunk as { id?: string }).id = id;\n if (retry !== undefined) (chunk as { retry?: number }).retry = retry;\n if (commentLines.length > 0) (chunk as { comment?: string }).comment = commentLines.join(\"\\n\");\n eventName = undefined;\n dataLines = [];\n id = undefined;\n retry = undefined;\n commentLines = [];\n hasField = false;\n return chunk;\n };\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: handleLine dispatches across all SSE field kinds per W3C spec — refactor candidate\n const handleLine = (line: string): SSEvent | null => {\n if (line === \"\") {\n return dispatch();\n }\n if (line.startsWith(\":\")) {\n // Comment line — per spec ignored, but we surface it for keepalive visibility.\n commentLines.push(line.slice(1).replace(/^ /, \"\"));\n hasField = true;\n return null;\n }\n const colonIdx = line.indexOf(\":\");\n let field: string;\n let value: string;\n if (colonIdx === -1) {\n field = line;\n value = \"\";\n } else {\n field = line.slice(0, colonIdx);\n value = line.slice(colonIdx + 1);\n // Strip ONE leading space if present (per spec § 9.2.6)\n if (value.startsWith(\" \")) value = value.slice(1);\n }\n switch (field) {\n case \"event\":\n eventName = value;\n hasField = true;\n break;\n case \"data\":\n dataLines.push(value);\n hasField = true;\n break;\n case \"id\":\n // Per spec: id with NULL is ignored\n if (!value.includes(\"\\0\")) {\n id = value;\n hasField = true;\n }\n break;\n case \"retry\":\n if (/^\\d+$/.test(value)) {\n retry = Number.parseInt(value, 10);\n hasField = true;\n }\n break;\n default:\n // Unknown field — ignored per spec\n break;\n }\n return null;\n };\n\n for await (const bytes of source) {\n // Normalize CRLF / CR to LF then split\n buffer += decoder.decode(bytes, { stream: true }).replace(/\\r\\n|\\r/g, \"\\n\");\n let idx: number;\n // biome-ignore lint/suspicious/noAssignInExpressions: idiomatic while-assignment loop for buffered line parsing\n while ((idx = buffer.indexOf(\"\\n\")) !== -1) {\n const line = buffer.slice(0, idx);\n buffer = buffer.slice(idx + 1);\n const event = handleLine(line);\n if (event !== null) yield event;\n }\n }\n // Flush remaining buffer as a final line (no trailing newline case)\n buffer += decoder.decode();\n if (buffer.length > 0) {\n const event = handleLine(buffer);\n if (event !== null) yield event;\n }\n // Final dispatch in case last event lacked terminating blank line\n const tail = dispatch();\n if (tail !== null) yield tail;\n}\n","/**\n * Subscription type contract (G8 v1.7.0) — `@theokit/sdk`.\n *\n * Per ADRs D423 (resume token opaque), D424 (transport selection),\n * D426 (defineSubscription DSL shape).\n *\n * @public\n */\n\nimport { TheokitAgentError } from \"../errors.js\";\n\n/**\n * Transport selection for subscriptions.\n *\n * - `'ws'`: WebSocket (bidirectional). Required for inbound client→server frames.\n * v1.7 ships Node-canonical `ws` adapter; CF/Bun/Deno deferred to v1.8.x per ADR D425.\n * - `'sse'`: W3C Server-Sent Events (server→client only). Browser-native EventSource.\n * - `'auto'`: Prefer WS, fall back SSE on upgrade failure. Default.\n *\n * @public\n */\nexport type SubscriptionTransport = \"ws\" | \"sse\" | \"auto\";\n\n/**\n * Context passed to a subscription `handler` on each invocation.\n *\n * @public\n */\nexport interface SubscriptionCtx {\n /**\n * Opaque resume token forwarded by the client when reconnecting.\n * Handler defines its own semantics (monotonic int, ULID, timestamp,\n * encrypted cursor). SDK passes through unchanged. Per ADR D423.\n */\n readonly lastEventId?: string;\n\n /**\n * AbortSignal that fires when the subscription is cancelled\n * (client disconnect, consumer abort, server shutdown).\n * Handler MUST honor `signal.aborted` in long-running loops.\n */\n readonly signal: AbortSignal;\n\n /**\n * Stable identifier for the underlying transport connection.\n * Different from the subscription name — one connection may host\n * many subscriptions. Useful for logging / per-connection state.\n */\n readonly connectionId: string;\n\n /**\n * Force-close the underlying transport with optional WS close code + reason.\n * Used by consumer code (e.g., auth middleware revoking a session) to\n * terminate a subscription that should not continue.\n */\n disconnect(code?: number, reason?: string): void;\n\n /**\n * Helper to mint a tracked envelope `[id, payload]`.\n * Yielding tracked envelopes lets the client advance `lastEventId`\n * so reconnects can resume from that point.\n */\n tracked<TPayload>(id: string, payload: TPayload): TrackedEnvelope<TPayload>;\n}\n\n/**\n * Tracked envelope: `[id, payload]` tuple yielded by subscription handlers\n * to advertise the resume token associated with the payload.\n *\n * The encoder writes the `id` as an SSE `id:` field or WS payload metadata\n * so the client can echo it back on reconnect (`input.lastEventId`).\n *\n * Per ADR D423.\n *\n * @public\n */\nexport type TrackedEnvelope<T> = readonly [id: string, payload: T];\n\n/**\n * Type guard for {@link TrackedEnvelope}.\n *\n * @public\n */\nexport function isTrackedEnvelope(value: unknown): value is TrackedEnvelope<unknown> {\n return Array.isArray(value) && value.length === 2 && typeof value[0] === \"string\";\n}\n\n/**\n * Mint a tracked envelope. Equivalent to `[id, payload] as const`,\n * exported as a function so consumers don't repeat the tuple cast.\n *\n * @public\n */\nexport function tracked<T>(id: string, payload: T): TrackedEnvelope<T> {\n if (typeof id !== \"string\" || id.length === 0) {\n throw new TypeError(\"tracked(): id must be a non-empty string\");\n }\n return [id, payload] as const;\n}\n\n/**\n * Base error for the subscription subsystem. Extends {@link TheokitAgentError}\n * so existing `instanceof TheokitAgentError` branches keep working.\n *\n * @public\n */\nexport class SubscriptionError extends TheokitAgentError {\n override readonly name: string = \"SubscriptionError\";\n\n constructor(message: string, options: { code?: string; cause?: unknown } = {}) {\n super(message, { ...options, isRetryable: false });\n }\n}\n\n/**\n * Thrown when subscription input fails Zod schema validation.\n *\n * @public\n */\nexport class SubscriptionInputError extends SubscriptionError {\n override readonly name: string = \"SubscriptionInputError\";\n\n readonly issues: unknown;\n\n constructor(message: string, options: { issues: unknown; cause?: unknown }) {\n super(message, { code: \"subscription_input_invalid\", cause: options.cause });\n this.issues = options.issues;\n }\n}\n\n/**\n * Thrown when a subscription transport disconnects unexpectedly\n * AND the client did not opt out of reconnect.\n *\n * @public\n */\nexport class SubscriptionDisconnectError extends SubscriptionError {\n override readonly name: string = \"SubscriptionDisconnectError\";\n\n readonly closeCode?: number;\n readonly closeReason?: string;\n\n constructor(\n message: string,\n options: { closeCode?: number; closeReason?: string; cause?: unknown } = {},\n ) {\n super(message, { code: \"subscription_disconnected\", cause: options.cause });\n if (options.closeCode !== undefined) this.closeCode = options.closeCode;\n if (options.closeReason !== undefined) this.closeReason = options.closeReason;\n }\n}\n\n/**\n * Descriptor returned by {@link Subscription.create}. Carries the typed\n * input/output Zod schemas + handler factory.\n *\n * @public\n */\nexport interface SubscriptionDescriptor<TInput = unknown, TOutput = unknown> {\n /** Optional explicit name; the runtime may also derive name from file path. */\n readonly name?: string;\n /** Zod schema for the subscription input. Validated at dispatch boundary. */\n readonly input: ZodLike<TInput>;\n /** Zod schema for each output frame (informational; not enforced per-frame). */\n readonly output: ZodLike<TOutput>;\n /** Async handler that yields output frames (or tracked envelopes). */\n readonly handler: (\n input: TInput,\n ctx: SubscriptionCtx,\n ) => AsyncGenerator<TOutput | TrackedEnvelope<TOutput>, void, void>;\n}\n\n/**\n * Minimal structural Zod type used to avoid hard peer-dep import.\n * Mirrors the surface used by other SDK modules (e.g., `define-tool.ts`).\n *\n * Emitted rather than erased: it appears in the signature of `defineSubscription`, which\n * `@theokit/sdk/subscription` publishes, so a consumer's type-aware lint has to be able to\n * resolve it.\n */\nexport interface ZodLike<T> {\n safeParse(value: unknown): { success: true; data: T } | { success: false; error: unknown };\n parse(value: unknown): T;\n}\n","/**\n * `Theokit.subscribe` client (G8 public API) — `@theokit/sdk`.\n *\n * Per ADR D427 (Theokit.subscribe namespace) + D424 (transport selection)\n * + D423 (lastEventId opaque propagation).\n *\n * Returns an AsyncGenerator that yields server-sent values. Transparent\n * reconnect with exponential backoff. Propagates `lastEventId` from the last\n * received tracked envelope on each reconnect attempt.\n *\n * @public\n */\n\nimport { parseSseW3C } from \"./internal/sse-parser.js\";\nimport type { WireFrame } from \"./internal/subscription-runtime.js\";\nimport {\n SubscriptionDisconnectError,\n SubscriptionError,\n type SubscriptionTransport,\n} from \"./types.js\";\n\n/**\n * Options accepted by `Theokit.subscribe(name, input, opts?)`.\n *\n * @public\n */\nexport interface SubscribeOptions {\n /** Base URL of the server (e.g., `\"http://localhost:3000\"`). Required. */\n baseUrl: string;\n /** Preferred transport. Default `\"auto\"` (WS preferred, SSE fallback). */\n transport?: SubscriptionTransport;\n /** Max reconnect attempts (default 10). 0 disables reconnect. */\n maxReconnectAttempts?: number;\n /** Backoff strategy. Default exponential `min(30_000, 1000 * 2^attempt)` ms. */\n retryDelayMs?: (attempt: number) => number;\n /** Caller-supplied abort signal. Cancels the subscription entirely. */\n signal?: AbortSignal;\n /** Additional fetch-style headers (e.g., `Authorization`). */\n headers?: Record<string, string>;\n /**\n * Override the SSE transport's `fetch`. Defaults to `globalThis.fetch`.\n * Lets a consumer supply a proxying agent or instrumented fetch without\n * mutating the runtime global.\n */\n fetch?: typeof globalThis.fetch;\n /**\n * Override the WS transport's `WebSocket` constructor. Defaults to\n * `globalThis.WebSocket`. Lets a consumer polyfill WS on a runtime that\n * lacks it, or supply an instrumented implementation, without mutating\n * the runtime global.\n */\n WebSocket?: typeof WebSocket;\n}\n\nconst defaultRetry = (attempt: number) => Math.min(30_000, 1000 * 2 ** attempt);\n\n/**\n * Subscribe to a typed subscription. Yields values produced by the server\n * handler. On disconnect with reconnect enabled, transparently re-establishes\n * the connection and forwards `lastEventId` from the last received tracked\n * envelope so the server handler can resume.\n *\n * @public\n */\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: G8 subscribe orchestrates reconnect + transport switch + resume — refactor candidate tracked in subscription/theokit-subscribe.ts:52 followup\nexport async function* subscribe<TInput, TOutput>(\n name: string,\n input: TInput,\n opts: SubscribeOptions,\n): AsyncGenerator<TOutput, void, void> {\n if (typeof name !== \"string\" || name.length === 0) {\n throw new SubscriptionError(\"Theokit.subscribe: name must be a non-empty string\", {\n code: \"subscribe_name_invalid\",\n });\n }\n if (opts === null || typeof opts !== \"object\" || typeof opts.baseUrl !== \"string\") {\n throw new SubscriptionError(\"Theokit.subscribe: opts.baseUrl is required\", {\n code: \"subscribe_baseUrl_missing\",\n });\n }\n const transport = opts.transport ?? \"auto\";\n const maxReconnects = opts.maxReconnectAttempts ?? 10;\n const retry = opts.retryDelayMs ?? defaultRetry;\n\n let lastEventId: string | undefined;\n let attempt = 0;\n\n while (true) {\n if (opts.signal?.aborted) return;\n try {\n const inputWithCursor = mergeLastEventId(input, lastEventId);\n const chosen = await selectTransport(transport, name, opts);\n if (chosen === \"ws\") {\n for await (const out of openWs<TOutput>(name, inputWithCursor, opts)) {\n if (out.lastEventId !== undefined) lastEventId = out.lastEventId;\n attempt = 0; // reset backoff on successful frame\n yield out.value;\n }\n } else {\n for await (const out of openSse<TOutput>(name, inputWithCursor, opts)) {\n if (out.lastEventId !== undefined) lastEventId = out.lastEventId;\n attempt = 0;\n yield out.value;\n }\n }\n // Clean end-of-stream — no reconnect.\n return;\n } catch (cause) {\n if (opts.signal?.aborted) return;\n if (maxReconnects === 0 || attempt >= maxReconnects) {\n if (cause instanceof SubscriptionError) throw cause;\n throw new SubscriptionDisconnectError(\n `subscription \"${name}\" disconnected; reconnect exhausted`,\n { cause },\n );\n }\n const delay = retry(attempt);\n attempt++;\n await sleep(delay, opts.signal);\n }\n }\n}\n\ninterface FrameOut<T> {\n readonly value: T;\n readonly lastEventId?: string;\n}\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: openSse parses framed SSE stream with abort/error/retry branches — refactor candidate\nasync function* openSse<T>(\n name: string,\n input: unknown,\n opts: SubscribeOptions,\n): AsyncIterable<FrameOut<T>> {\n const url = `${stripTrailingSlash(opts.baseUrl)}/api/subscriptions/${encodeURIComponent(name)}?input=${encodeURIComponent(JSON.stringify(input))}`;\n const fetchFn = opts.fetch ?? globalThis.fetch;\n const res = await fetchFn(url, {\n method: \"GET\",\n headers: {\n accept: \"text/event-stream\",\n ...(opts.headers ?? {}),\n },\n ...(opts.signal !== undefined ? { signal: opts.signal } : {}),\n });\n if (!res.ok || res.body === null) {\n throw new SubscriptionError(`SSE subscribe failed: HTTP ${res.status} ${res.statusText}`, {\n code: \"sse_http_error\",\n });\n }\n const events = parseSseW3C(streamToAsyncIterable(res.body));\n for await (const ev of events) {\n if (ev.event === \"end\") return;\n if (ev.event === \"error\") {\n throw new SubscriptionError(`SSE server emitted error: ${ev.data ?? \"(no body)\"}`, {\n code: \"sse_server_error\",\n });\n }\n if (ev.event === \"connected\") continue;\n if (ev.data === undefined) continue;\n const parsedValue = safeJsonParse<T>(ev.data);\n if (parsedValue === undefined) continue;\n yield {\n value: parsedValue,\n ...(ev.id !== undefined ? { lastEventId: ev.id } : {}),\n };\n }\n}\n\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: openWs orchestrates WS lifecycle + envelope decode + cleanup — refactor candidate\nasync function* openWs<T>(\n name: string,\n input: unknown,\n opts: SubscribeOptions,\n): AsyncIterable<FrameOut<T>> {\n const baseUrl = stripTrailingSlash(opts.baseUrl);\n const wsUrl = baseUrl\n .replace(/^http:/, \"ws:\")\n .replace(/^https:/, \"wss:\")\n .concat(\"/api/ws\");\n\n const WS = opts.WebSocket ?? (globalThis as { WebSocket?: typeof WebSocket }).WebSocket;\n if (WS === undefined) {\n throw new SubscriptionError(\n \"Theokit.subscribe(transport='ws'): no global WebSocket available. Use Node >=22 or install 'ws' as a runtime dep + assign to globalThis.WebSocket, or pass opts.WebSocket.\",\n { code: \"ws_global_missing\" },\n );\n }\n const ws = new WS(wsUrl);\n\n // Set up async iterator-like state.\n const incoming: WireFrame[] = [];\n // biome-ignore lint/suspicious/noConfusingVoidType: idiomatic event-callback signature; refactoring to undefined would mask the no-value semantics\n let waiter: ((value: void) => void) | null = null;\n let closed = false;\n let closeError: Error | undefined;\n\n ws.addEventListener(\"message\", (ev: MessageEvent) => {\n const data = typeof ev.data === \"string\" ? ev.data : \"\";\n const frame = safeJsonParse<WireFrame>(data);\n if (frame !== undefined) {\n incoming.push(frame);\n if (waiter !== null) {\n waiter();\n waiter = null;\n }\n }\n });\n ws.addEventListener(\"close\", () => {\n closed = true;\n if (waiter !== null) {\n waiter();\n waiter = null;\n }\n });\n ws.addEventListener(\"error\", () => {\n closed = true;\n closeError = new Error(\"WebSocket error\");\n if (waiter !== null) {\n waiter();\n waiter = null;\n }\n });\n\n await new Promise<void>((resolve, reject) => {\n ws.addEventListener(\"open\", () => resolve(), { once: true });\n ws.addEventListener(\"error\", () => reject(new Error(\"WS connect failed\")), { once: true });\n });\n\n // Send subscribe request after handshake.\n ws.send(JSON.stringify({ kind: \"subscribe\", name, input }));\n\n if (opts.signal !== undefined) {\n opts.signal.addEventListener(\"abort\", () => ws.close(), { once: true });\n }\n\n try {\n while (true) {\n if (incoming.length === 0) {\n if (closed) {\n if (closeError !== undefined) throw closeError;\n return;\n }\n await new Promise<void>((resolve) => {\n waiter = resolve;\n });\n continue;\n }\n const frame = incoming.shift() as WireFrame;\n if (frame.type === \"end\") return;\n if (frame.type === \"error\") {\n throw new SubscriptionError(\n `WS server emitted error: ${frame.error?.message ?? \"(unknown)\"}`,\n { code: \"ws_server_error\" },\n );\n }\n const value = frame.data as T;\n yield {\n value,\n ...(frame.id !== undefined ? { lastEventId: frame.id } : {}),\n };\n }\n } finally {\n try {\n ws.close();\n } catch {\n /* ignore */\n }\n }\n}\n\nasync function selectTransport(\n pref: SubscriptionTransport,\n _name: string,\n opts: SubscribeOptions,\n): Promise<\"ws\" | \"sse\"> {\n if (pref === \"ws\") return \"ws\";\n if (pref === \"sse\") return \"sse\";\n // auto — prefer WS if available (injected or global), else SSE.\n const WS = opts.WebSocket ?? (globalThis as { WebSocket?: unknown }).WebSocket;\n if (typeof WS === \"function\") {\n return \"ws\";\n }\n return \"sse\";\n}\n\nfunction mergeLastEventId(input: unknown, lastEventId: string | undefined): unknown {\n if (lastEventId === undefined) return input;\n if (input === null || typeof input !== \"object\" || Array.isArray(input)) {\n // Cannot merge into primitive — return as-is.\n return input;\n }\n return { ...(input as object), lastEventId };\n}\n\nfunction stripTrailingSlash(s: string): string {\n return s.endsWith(\"/\") ? s.slice(0, -1) : s;\n}\n\nfunction safeJsonParse<T>(s: string): T | undefined {\n try {\n return JSON.parse(s) as T;\n } catch {\n return undefined;\n }\n}\n\nasync function* streamToAsyncIterable(\n stream: ReadableStream<Uint8Array>,\n): AsyncIterable<Uint8Array> {\n const reader = stream.getReader();\n let finishedNaturally = false;\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n finishedNaturally = true;\n return;\n }\n if (value !== undefined) yield value;\n }\n } finally {\n // B-131: `releaseLock()` alone detaches the reader WITHOUT canceling the stream (WHATWG\n // Streams spec) — the underlying `fetch` response body, and its socket, stays open until\n // something else cancels it or reads it to completion. A consumer that breaks out of the\n // subscription mid-stream (the ordinary shape: `for await ... break`) used to leave that\n // connection dangling. `cancel()` is a no-op once the stream is already closed, so it is safe\n // to call unconditionally on the early-exit path; skip it on natural completion, where the\n // stream is already done and canceling only risks surfacing a spurious rejection.\n if (!finishedNaturally) {\n try {\n await reader.cancel();\n } catch {\n /* best-effort cleanup — the caller's own error (if any) already takes precedence */\n }\n }\n reader.releaseLock();\n }\n}\n\nfunction sleep(ms: number, signal?: AbortSignal): Promise<void> {\n return new Promise((resolve, reject) => {\n if (signal?.aborted) {\n reject(new Error(\"aborted\"));\n return;\n }\n const t = setTimeout(() => {\n signal?.removeEventListener(\"abort\", onAbort);\n resolve();\n }, ms);\n const onAbort = () => {\n clearTimeout(t);\n reject(new Error(\"aborted\"));\n };\n signal?.addEventListener(\"abort\", onAbort, { once: true });\n });\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @theokit/sdk — WS adapter contract (G8 internal).
2
+ * WS adapter contract (G8 internal) — `@theokit/sdk`.
3
3
  *
4
4
  * Per ADR D425. Defines the minimal interface that runtime adapters
5
5
  * (Node `ws`, CF Workers WebSocketPair v1.8.x, Bun.serve v1.8.x, etc.)
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @theokit/sdk — WS adapter contract (G8 internal).
2
+ * WS adapter contract (G8 internal) — `@theokit/sdk`.
3
3
  *
4
4
  * Per ADR D425. Defines the minimal interface that runtime adapters
5
5
  * (Node `ws`, CF Workers WebSocketPair v1.8.x, Bun.serve v1.8.x, etc.)
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @theokit/sdk — theokit/server integration (G8 internal).
2
+ * Theokit/server integration (G8 internal) — `@theokit/sdk`.
3
3
  *
4
4
  * Per ADR D429 (auto-route via theokit.subscriptions namespace).
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @theokit/sdk — theokit/server integration (G8 internal).
2
+ * Theokit/server integration (G8 internal) — `@theokit/sdk`.
3
3
  *
4
4
  * Per ADR D429 (auto-route via theokit.subscriptions namespace).
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @theokit/sdk — W3C SSE encoder (G8 internal).
2
+ * W3C SSE encoder (G8 internal) — `@theokit/sdk`.
3
3
  *
4
4
  * Per ADR D428 (W3C wire format, independent of D38 a peer vendor AI Data Stream).
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @theokit/sdk — W3C SSE encoder (G8 internal).
2
+ * W3C SSE encoder (G8 internal) — `@theokit/sdk`.
3
3
  *
4
4
  * Per ADR D428 (W3C wire format, independent of D38 a peer vendor AI Data Stream).
5
5
  *
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @theokit/sdk — W3C SSE parser (G8 internal).
2
+ * W3C SSE parser (G8 internal) — `@theokit/sdk`.
3
3
  *
4
4
  * Per ADR D428. Reads from `ReadableStream<Uint8Array>` or async iterable of
5
5
  * UTF-8 chunks; yields parsed {@link SSEvent} objects per W3C SSE spec.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @theokit/sdk — W3C SSE parser (G8 internal).
2
+ * W3C SSE parser (G8 internal) — `@theokit/sdk`.
3
3
  *
4
4
  * Per ADR D428. Reads from `ReadableStream<Uint8Array>` or async iterable of
5
5
  * UTF-8 chunks; yields parsed {@link SSEvent} objects per W3C SSE spec.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @theokit/sdk — Subscription runtime (G8 internal).
2
+ * Subscription runtime (G8 internal) — `@theokit/sdk`.
3
3
  *
4
4
  * Per ADR D422 (Form 4 Hybrid). Hosts registered {@link SubscriptionDescriptor}
5
5
  * + dispatches incoming subscription requests across SSE / WS transports.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @theokit/sdk — Subscription runtime (G8 internal).
2
+ * Subscription runtime (G8 internal) — `@theokit/sdk`.
3
3
  *
4
4
  * Per ADR D422 (Form 4 Hybrid). Hosts registered {@link SubscriptionDescriptor}
5
5
  * + dispatches incoming subscription requests across SSE / WS transports.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @theokit/sdk — Node `ws` WebSocket adapter (G8 internal).
2
+ * Node `ws` WebSocket adapter (G8 internal) — `@theokit/sdk`.
3
3
  *
4
4
  * Per ADR D425. Canonical v1.7.0 adapter — wraps `ws.WebSocketServer({ noServer: true })`
5
5
  * for explicit HTTP upgrade integration. Dynamic `import('ws')` keeps the lib
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @theokit/sdk — Node `ws` WebSocket adapter (G8 internal).
2
+ * Node `ws` WebSocket adapter (G8 internal) — `@theokit/sdk`.
3
3
  *
4
4
  * Per ADR D425. Canonical v1.7.0 adapter — wraps `ws.WebSocketServer({ noServer: true })`
5
5
  * for explicit HTTP upgrade integration. Dynamic `import('ws')` keeps the lib
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @theokit/sdk — `Theokit.subscribe` client (G8 public API).
2
+ * `Theokit.subscribe` client (G8 public API) — `@theokit/sdk`.
3
3
  *
4
4
  * Per ADR D427 (Theokit.subscribe namespace) + D424 (transport selection)
5
5
  * + D423 (lastEventId opaque propagation).
@@ -29,6 +29,19 @@ export interface SubscribeOptions {
29
29
  signal?: AbortSignal;
30
30
  /** Additional fetch-style headers (e.g., `Authorization`). */
31
31
  headers?: Record<string, string>;
32
+ /**
33
+ * Override the SSE transport's `fetch`. Defaults to `globalThis.fetch`.
34
+ * Lets a consumer supply a proxying agent or instrumented fetch without
35
+ * mutating the runtime global.
36
+ */
37
+ fetch?: typeof globalThis.fetch;
38
+ /**
39
+ * Override the WS transport's `WebSocket` constructor. Defaults to
40
+ * `globalThis.WebSocket`. Lets a consumer polyfill WS on a runtime that
41
+ * lacks it, or supply an instrumented implementation, without mutating
42
+ * the runtime global.
43
+ */
44
+ WebSocket?: typeof WebSocket;
32
45
  }
33
46
  /**
34
47
  * Subscribe to a typed subscription. Yields values produced by the server
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @theokit/sdk — `Theokit.subscribe` client (G8 public API).
2
+ * `Theokit.subscribe` client (G8 public API) — `@theokit/sdk`.
3
3
  *
4
4
  * Per ADR D427 (Theokit.subscribe namespace) + D424 (transport selection)
5
5
  * + D423 (lastEventId opaque propagation).
@@ -29,6 +29,19 @@ export interface SubscribeOptions {
29
29
  signal?: AbortSignal;
30
30
  /** Additional fetch-style headers (e.g., `Authorization`). */
31
31
  headers?: Record<string, string>;
32
+ /**
33
+ * Override the SSE transport's `fetch`. Defaults to `globalThis.fetch`.
34
+ * Lets a consumer supply a proxying agent or instrumented fetch without
35
+ * mutating the runtime global.
36
+ */
37
+ fetch?: typeof globalThis.fetch;
38
+ /**
39
+ * Override the WS transport's `WebSocket` constructor. Defaults to
40
+ * `globalThis.WebSocket`. Lets a consumer polyfill WS on a runtime that
41
+ * lacks it, or supply an instrumented implementation, without mutating
42
+ * the runtime global.
43
+ */
44
+ WebSocket?: typeof WebSocket;
32
45
  }
33
46
  /**
34
47
  * Subscribe to a typed subscription. Yields values produced by the server
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @theokit/sdk — Subscription type contract (G8 v1.7.0).
2
+ * Subscription type contract (G8 v1.7.0) — `@theokit/sdk`.
3
3
  *
4
4
  * Per ADRs D423 (resume token opaque), D424 (transport selection),
5
5
  * D426 (defineSubscription DSL shape).
@@ -138,3 +138,21 @@ export interface SubscriptionDescriptor<TInput = unknown, TOutput = unknown> {
138
138
  /** Async handler that yields output frames (or tracked envelopes). */
139
139
  readonly handler: (input: TInput, ctx: SubscriptionCtx) => AsyncGenerator<TOutput | TrackedEnvelope<TOutput>, void, void>;
140
140
  }
141
+ /**
142
+ * Minimal structural Zod type used to avoid hard peer-dep import.
143
+ * Mirrors the surface used by other SDK modules (e.g., `define-tool.ts`).
144
+ *
145
+ * Emitted rather than erased: it appears in the signature of `defineSubscription`, which
146
+ * `@theokit/sdk/subscription` publishes, so a consumer's type-aware lint has to be able to
147
+ * resolve it.
148
+ */
149
+ export interface ZodLike<T> {
150
+ safeParse(value: unknown): {
151
+ success: true;
152
+ data: T;
153
+ } | {
154
+ success: false;
155
+ error: unknown;
156
+ };
157
+ parse(value: unknown): T;
158
+ }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @theokit/sdk — Subscription type contract (G8 v1.7.0).
2
+ * Subscription type contract (G8 v1.7.0) — `@theokit/sdk`.
3
3
  *
4
4
  * Per ADRs D423 (resume token opaque), D424 (transport selection),
5
5
  * D426 (defineSubscription DSL shape).
@@ -138,3 +138,21 @@ export interface SubscriptionDescriptor<TInput = unknown, TOutput = unknown> {
138
138
  /** Async handler that yields output frames (or tracked envelopes). */
139
139
  readonly handler: (input: TInput, ctx: SubscriptionCtx) => AsyncGenerator<TOutput | TrackedEnvelope<TOutput>, void, void>;
140
140
  }
141
+ /**
142
+ * Minimal structural Zod type used to avoid hard peer-dep import.
143
+ * Mirrors the surface used by other SDK modules (e.g., `define-tool.ts`).
144
+ *
145
+ * Emitted rather than erased: it appears in the signature of `defineSubscription`, which
146
+ * `@theokit/sdk/subscription` publishes, so a consumer's type-aware lint has to be able to
147
+ * resolve it.
148
+ */
149
+ export interface ZodLike<T> {
150
+ safeParse(value: unknown): {
151
+ success: true;
152
+ data: T;
153
+ } | {
154
+ success: false;
155
+ error: unknown;
156
+ };
157
+ parse(value: unknown): T;
158
+ }
@@ -1,23 +1,24 @@
1
1
  'use strict';
2
2
 
3
- var chunkVGPXHHF3_cjs = require('./chunk-VGPXHHF3.cjs');
4
- require('./chunk-C4H6PB5J.cjs');
5
- require('./chunk-LPVIRJVF.cjs');
6
- require('./chunk-BM6N4KHO.cjs');
3
+ var chunk2C72DXQF_cjs = require('./chunk-2C72DXQF.cjs');
4
+ require('./chunk-I6TGFUCO.cjs');
5
+ require('./chunk-K3FW2XZD.cjs');
6
+ require('./chunk-JTB5Q42C.cjs');
7
+ require('./chunk-NUKRL3I6.cjs');
7
8
 
8
9
 
9
10
 
10
11
  Object.defineProperty(exports, "InMemoryTaskStore", {
11
12
  enumerable: true,
12
- get: function () { return chunkVGPXHHF3_cjs.InMemoryTaskStore; }
13
+ get: function () { return chunk2C72DXQF_cjs.InMemoryTaskStore; }
13
14
  });
14
15
  Object.defineProperty(exports, "JsonFileTaskStore", {
15
16
  enumerable: true,
16
- get: function () { return chunkVGPXHHF3_cjs.JsonFileTaskStore; }
17
+ get: function () { return chunk2C72DXQF_cjs.JsonFileTaskStore; }
17
18
  });
18
19
  Object.defineProperty(exports, "getTaskStoreFor", {
19
20
  enumerable: true,
20
- get: function () { return chunkVGPXHHF3_cjs.getTaskStoreFor; }
21
+ get: function () { return chunk2C72DXQF_cjs.getTaskStoreFor; }
21
22
  });
22
23
  //# sourceMappingURL=task-store.cjs.map
23
24
  //# sourceMappingURL=task-store.cjs.map
@@ -1,6 +1,7 @@
1
- export { InMemoryTaskStore, JsonFileTaskStore, getTaskStoreFor } from './chunk-V26QVGUG.js';
2
- import './chunk-6AZDM6LK.js';
3
- import './chunk-U4UJHOSH.js';
4
- import './chunk-5F5NWKPN.js';
1
+ export { InMemoryTaskStore, JsonFileTaskStore, getTaskStoreFor } from './chunk-RUDY2GTT.js';
2
+ import './chunk-VF7EWVDG.js';
3
+ import './chunk-IDCKSLYH.js';
4
+ import './chunk-T7XEKOVW.js';
5
+ import './chunk-T7O6K6PX.js';
5
6
  //# sourceMappingURL=task-store.js.map
6
7
  //# sourceMappingURL=task-store.js.map
@@ -37,6 +37,20 @@ export interface ModelSelection {
37
37
  * clamped — declaring 10M does not blow past the provider.
38
38
  */
39
39
  contextWindow?: number;
40
+ /**
41
+ * #332 — the endpoint THIS model should reach, for OpenAI-compatible and local servers.
42
+ *
43
+ * Without it the base URL came only from a process-wide env var (`OLLAMA_HOST`) or the provider
44
+ * profile's shipped default, so every `ollama/*` model in a process shared one host — an app
45
+ * could not run a small model on localhost and a large one on a GPU box.
46
+ *
47
+ * It outranks the env var deliberately: with the env var winning, whoever set it for one model
48
+ * would keep hijacking every other one, which is the same bug wearing a hat.
49
+ *
50
+ * Leaving it unset keeps the zero-config path exactly as it was — `ollama/qwen2.5:3b` still
51
+ * resolves to `http://localhost:11434` from the profile, with no key and no setup.
52
+ */
53
+ url?: string;
40
54
  }
41
55
  /**
42
56
  * SE12 — a read-only, text-only projection of one turn of the run's conversation,
@@ -15,12 +15,48 @@ export type { InvalidateCacheOptions, PersonalityPreset, SDKAgent, SystemPromptS
15
15
  * @public
16
16
  */
17
17
  export type SettingSource = "project" | "user" | "team" | "mdm" | "plugins" | "all";
18
+ /**
19
+ * A tool the SDK declares to the model on its own initiative — not one the consumer passed in
20
+ * {@link AgentOptions.tools}, and not one an MCP server exposed.
21
+ *
22
+ * These three names are also the ones the SDK reserves: a custom tool may not claim them. Listing
23
+ * one in {@link AgentOptions.withheldBuiltinTools} both stops it being declared and releases the
24
+ * name, because nothing of the SDK's is occupying it any more.
25
+ *
26
+ * Named for usetheokit/theokit-sdk#381, which is the report that the catalog had no opt-out.
27
+ *
28
+ * @public
29
+ */
30
+ export type BuiltinToolName = "shell" | "memory_search" | "memory_get";
18
31
  /**
19
32
  * Local agent configuration.
20
33
  *
34
+ * TWO THINGS A LOCAL AGENT DOES BY DEFAULT, both reported as surprises (#338):
35
+ *
36
+ * 1. **A `shell` tool is always registered**, including when you pass `tools: []`. Every local
37
+ * agent can therefore read any file reachable from {@link LocalOptions.cwd}. One report describes
38
+ * an evaluation invalidated this way: the working directory held the benchmark's answer key, and
39
+ * two transcripts show the model citing it. Deny it explicitly if that matters —
40
+ * `{ tool: "shell", action: "deny" }` on a {@link PermissionEngine} rule is terminal under every
41
+ * permission mode, including `bypass`. A deny rule still leaves the tool in the advertised
42
+ * catalog, so the model may attempt it and be refused; to keep it out of the catalog entirely,
43
+ * pass `withheldBuiltinTools: ["shell"]` on {@link AgentOptions} (usetheokit/theokit-sdk#381).
44
+ *
45
+ * 2. **Finished runs write a transcript to disk**, at `.theokit/memory/sessions/<runId>.md` under
46
+ * the workspace `cwd`, with the full prompt and reply. This happens with no `memory` config and
47
+ * with `settingSources: []` — it is what `memory_search({ corpus: "sessions" })` reads. Opt out
48
+ * with `memory: { enabled: false }`, which suppresses the write entirely
49
+ * (usetheokit/theokit-sdk#382). Leaving `memory`
50
+ * unset still writes, so if the workspace is a git repository, add `.theokit/` to `.gitignore`:
51
+ * one report describes a transcript reaching a public repo before it was noticed.
52
+ *
21
53
  * @public
22
54
  */
23
55
  export interface LocalOptions {
56
+ /**
57
+ * Workspace root(s). Also the reach of the always-present `shell` tool — see the note on
58
+ * {@link LocalOptions}, and the transcript written under `.theokit/memory/sessions/` here.
59
+ */
24
60
  cwd?: string | string[];
25
61
  settingSources?: SettingSource[];
26
62
  sandboxOptions?: {
@@ -282,8 +318,11 @@ export interface MemorySettings {
282
318
  * to add prompt/response/args events to the spans (consumer's
283
319
  * responsibility to sanitize PII).
284
320
  *
285
- * `@opentelemetry/api` is an OPTIONAL peer dependency. Without it
286
- * installed, telemetry is a no-op even when `enabled: true`.
321
+ * `@opentelemetry/api` is an OPTIONAL peer dependency declared, so your package manager can
322
+ * tell you the version range, and not installed for you. Without it, telemetry is a NO-OP even
323
+ * when `enabled: true`: the tracer is loaded lazily inside a try/catch, so nothing throws and
324
+ * nothing is recorded. A run that reports no spans with `enabled: true` is almost always this,
325
+ * not a misconfigured collector.
287
326
  *
288
327
  * @public
289
328
  */
@@ -413,6 +452,32 @@ export interface AgentOptions {
413
452
  * See {@link CustomTool}.
414
453
  */
415
454
  tools?: CustomTool[];
455
+ /**
456
+ * Builtin tools this agent must NOT declare to the model. Absent or empty ⇒ every builtin the
457
+ * rest of the configuration would register is declared, exactly as before this option existed.
458
+ *
459
+ * WHY WITHHOLDING IS NOT THE SAME AS DENYING. A consumer that cannot allow `shell` — because it
460
+ * reaches outside their own sandbox scope — can already refuse the call in a `pre_tool_call` hook
461
+ * or with a {@link PermissionEngine} deny rule. That stops the execution and pays for the offer
462
+ * twice over: the schema rides in EVERY request of EVERY round (measured at 267 characters for
463
+ * `shell`, 1,462 for `memory_search` + `memory_get` together — usetheokit/theokit-sdk#381), and
464
+ * the model can spend a whole round discovering a refusal it had no way to anticipate. Declaring
465
+ * a tool that is guaranteed to be refused is the wrong shape; withholding removes it from the
466
+ * catalog, so the model is never offered what it cannot have.
467
+ *
468
+ * WITHHOLDING RELEASES THE NAME. `withheldBuiltinTools: ["shell"]` lets {@link AgentOptions.tools}
469
+ * declare a tool called `shell` without the `tool_reserved_name` error — the reservation exists to
470
+ * stop a collision with the SDK's own tool, and there is no longer one to collide with. Every
471
+ * builtin still declared stays reserved.
472
+ *
473
+ * This governs DECLARATION, not authorization. A withheld builtin is simply absent from the
474
+ * catalog: a model that invents the name anyway gets `Unknown tool <name>` (exit 127) rather than
475
+ * an execution, but nothing here evaluates a policy. Keep the deny rule if you need one that a
476
+ * per-send `tools` override cannot reopen.
477
+ *
478
+ * @public
479
+ */
480
+ withheldBuiltinTools?: readonly BuiltinToolName[];
416
481
  /**
417
482
  * SE37 — opt-in reasoning. When `true`, the agent gets a chain-of-thought
418
483
  * preamble prepended to its system prompt AND the `think` reasoning tool
@@ -688,6 +753,12 @@ export interface AgentDescription {
688
753
  /**
689
754
  * Options for `Agent.list()`.
690
755
  *
756
+ * `limit`/`cursor` paginate (B-115): a `limit` bounds the page and, when more agents remain,
757
+ * `ListResult.nextCursor` is set — pass it back as `cursor` for the next page. Omitting `limit`
758
+ * returns every matching agent in one page, unpaginated, exactly as before (M107 declared imposing
759
+ * pagination order unconditionally a breaking change to every caller's observed order; pagination
760
+ * here is opt-in and only reorders the page it returns, never the unlimited default).
761
+ *
691
762
  * @public
692
763
  */
693
764
  export type ListAgentsOptions = {
@@ -700,13 +771,19 @@ export type ListAgentsOptions = {
700
771
  cwd?: string;
701
772
  } | {
702
773
  runtime: "cloud";
703
- prUrl?: string;
774
+ /**
775
+ * Hide archived agents unless `true`. Default `false` (hidden) — B-115, this used to be
776
+ * accepted and silently ignored; every archived agent was always included.
777
+ */
704
778
  includeArchived?: boolean;
705
779
  apiKey?: string;
706
780
  });
707
781
  /**
708
782
  * Options for `Agent.get()`.
709
783
  *
784
+ * `cwd` (default `process.cwd()`) selects which workspace's on-disk registry to hydrate before the
785
+ * lookup — same rule `Agent.list` uses (B-115; this used to be accepted and silently ignored).
786
+ *
710
787
  * @public
711
788
  */
712
789
  export interface GetAgentOptions {
@@ -716,18 +793,22 @@ export interface GetAgentOptions {
716
793
  /**
717
794
  * Options for `Agent.listRuns()`.
718
795
  *
796
+ * `cwd` (default `process.cwd()`) hydrates that workspace's registry before validating the agent
797
+ * exists — same rule as `Agent.get` (B-115). `limit`/`cursor` paginate the SAME way as
798
+ * `Agent.list` — see its doc — except no reordering is ever needed: a single agent's runs are
799
+ * already returned in the stable order they were created.
800
+ *
801
+ * B-115 — `runtime` removed 2026-08-19. A single `agentId` already pins exactly one runtime;
802
+ * filtering an already-single-agent's runs by runtime filtered nothing and was never checked.
803
+ *
719
804
  * @public
720
805
  */
721
- export type ListRunsOptions = {
722
- limit?: number;
723
- cursor?: string;
724
- } & ({
725
- runtime?: "local";
806
+ export interface ListRunsOptions {
726
807
  cwd?: string;
727
- } | {
728
- runtime: "cloud";
729
808
  apiKey?: string;
730
- });
809
+ limit?: number;
810
+ cursor?: string;
811
+ }
731
812
  /**
732
813
  * Options for `Agent.getRun()`. Cloud requires the parent `agentId`.
733
814
  *