@theokit/sdk 4.63.3 → 5.0.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (788) hide show
  1. package/CHANGELOG.md +729 -0
  2. package/dist/a2a/index.cjs +29 -13
  3. package/dist/a2a/index.cjs.map +1 -1
  4. package/dist/a2a/index.d.cts +1 -1
  5. package/dist/a2a/index.d.ts +1 -1
  6. package/dist/a2a/index.js +26 -11
  7. package/dist/a2a/index.js.map +1 -1
  8. package/dist/a2a/message-bus.d.cts +26 -3
  9. package/dist/a2a/message-bus.d.ts +26 -3
  10. package/dist/a2a/subagent.d.cts +8 -3
  11. package/dist/a2a/subagent.d.ts +8 -3
  12. package/dist/agent-2E7DI47Y.cjs +67 -0
  13. package/dist/{agent-PVINJTUR.cjs.map → agent-2E7DI47Y.cjs.map} +1 -1
  14. package/dist/{agent-BFno7Sfn.d.ts → agent-CdYJfKr6.d.ts} +205 -36
  15. package/dist/{agent-X0DKA943.d.cts → agent-CgNzshyV.d.cts} +205 -36
  16. package/dist/agent-XMKRP27S.js +58 -0
  17. package/dist/{agent-3JK7VXNN.js.map → agent-XMKRP27S.js.map} +1 -1
  18. package/dist/agent-session-store-AFML3AXC.js +6 -0
  19. package/dist/{agent-session-store-OPGRB4XM.js.map → agent-session-store-AFML3AXC.js.map} +1 -1
  20. package/dist/agent-session-store-MTSIY3MH.cjs +23 -0
  21. package/dist/{agent-session-store-6EL5NPA4.cjs.map → agent-session-store-MTSIY3MH.cjs.map} +1 -1
  22. package/dist/agent.d.ts +1 -1
  23. package/dist/auth/index.cjs +33 -34
  24. package/dist/auth/index.cjs.map +1 -1
  25. package/dist/auth/index.d.cts +1 -1
  26. package/dist/auth/index.d.ts +1 -1
  27. package/dist/auth/index.js +6 -7
  28. package/dist/auth/index.js.map +1 -1
  29. package/dist/{batch-BXYTW2DP.cjs → batch-I6T6MXZO.cjs} +58 -40
  30. package/dist/batch-I6T6MXZO.cjs.map +1 -0
  31. package/dist/{batch-L4ZXS46M.js → batch-US4F6WPK.js} +42 -24
  32. package/dist/batch-US4F6WPK.js.map +1 -0
  33. package/dist/chunk-24MGQDK3.js +31 -0
  34. package/dist/chunk-24MGQDK3.js.map +1 -0
  35. package/dist/{chunk-UGT7GK7I.cjs → chunk-24SYBZPL.cjs} +36 -18
  36. package/dist/chunk-24SYBZPL.cjs.map +1 -0
  37. package/dist/{chunk-KYAJINUI.cjs → chunk-2HPNT6HH.cjs} +581 -401
  38. package/dist/chunk-2HPNT6HH.cjs.map +1 -0
  39. package/dist/{chunk-VLVVJLDH.cjs → chunk-2NE7DTOK.cjs} +234 -193
  40. package/dist/chunk-2NE7DTOK.cjs.map +1 -0
  41. package/dist/{chunk-N2U4AZGB.js → chunk-2WXHA33T.js} +3 -3
  42. package/dist/chunk-2WXHA33T.js.map +1 -0
  43. package/dist/chunk-2XC6KDJM.js +22 -0
  44. package/dist/chunk-2XC6KDJM.js.map +1 -0
  45. package/dist/{chunk-L3MTL4NA.js → chunk-2ZLVT7H3.js} +223 -182
  46. package/dist/chunk-2ZLVT7H3.js.map +1 -0
  47. package/dist/{chunk-2GUYQR5P.js → chunk-3JHIFQ4I.js} +39 -13
  48. package/dist/chunk-3JHIFQ4I.js.map +1 -0
  49. package/dist/{chunk-BU4KFWXF.js → chunk-44I6UYVH.js} +8 -17
  50. package/dist/chunk-44I6UYVH.js.map +1 -0
  51. package/dist/{chunk-UNYXQ4M5.js → chunk-47TF32NQ.js} +10 -5
  52. package/dist/chunk-47TF32NQ.js.map +1 -0
  53. package/dist/{chunk-WNO3C3N2.cjs → chunk-4A3SKJ53.cjs} +56 -27
  54. package/dist/chunk-4A3SKJ53.cjs.map +1 -0
  55. package/dist/{chunk-YML4ME27.cjs → chunk-4HS6FFGL.cjs} +55 -46
  56. package/dist/chunk-4HS6FFGL.cjs.map +1 -0
  57. package/dist/{chunk-C72AZW7J.js → chunk-4MMWFSCD.js} +4 -4
  58. package/dist/chunk-4MMWFSCD.js.map +1 -0
  59. package/dist/{chunk-6HKGLTJI.cjs → chunk-4NLCWGH7.cjs} +15 -15
  60. package/dist/chunk-4NLCWGH7.cjs.map +1 -0
  61. package/dist/{chunk-UBDMVMBZ.js → chunk-55GB6JYQ.js} +33 -22
  62. package/dist/chunk-55GB6JYQ.js.map +1 -0
  63. package/dist/{chunk-U6IFHFWK.js → chunk-5WKQDIGO.js} +8 -17
  64. package/dist/chunk-5WKQDIGO.js.map +1 -0
  65. package/dist/{chunk-GPKAF7SG.js → chunk-6HIACV34.js} +91 -92
  66. package/dist/chunk-6HIACV34.js.map +1 -0
  67. package/dist/{chunk-XL7Q7HB2.cjs → chunk-6LHQPOMI.cjs} +39 -6
  68. package/dist/chunk-6LHQPOMI.cjs.map +1 -0
  69. package/dist/{chunk-A4JVILQU.js → chunk-6M2OIS4Y.js} +7 -7
  70. package/dist/chunk-6M2OIS4Y.js.map +1 -0
  71. package/dist/{chunk-LWGSI6M3.js → chunk-6PWOWXMC.js} +4 -4
  72. package/dist/{chunk-LWGSI6M3.js.map → chunk-6PWOWXMC.js.map} +1 -1
  73. package/dist/{chunk-RNB4APBZ.js → chunk-6WAKKTBO.js} +9 -5
  74. package/dist/chunk-6WAKKTBO.js.map +1 -0
  75. package/dist/{chunk-V2BOS4WF.cjs → chunk-7A6535RA.cjs} +11 -11
  76. package/dist/chunk-7A6535RA.cjs.map +1 -0
  77. package/dist/{chunk-ZLQSWSJ2.cjs → chunk-7FDKWDA2.cjs} +11 -11
  78. package/dist/{chunk-ZLQSWSJ2.cjs.map → chunk-7FDKWDA2.cjs.map} +1 -1
  79. package/dist/{chunk-4VPXM6UU.js → chunk-7I5Z3UBJ.js} +3 -3
  80. package/dist/{chunk-4VPXM6UU.js.map → chunk-7I5Z3UBJ.js.map} +1 -1
  81. package/dist/{chunk-B4EOJWOY.cjs → chunk-7JJ3A6AT.cjs} +13 -7
  82. package/dist/chunk-7JJ3A6AT.cjs.map +1 -0
  83. package/dist/{chunk-ZWRG4NWT.cjs → chunk-7ZK4DJD7.cjs} +108 -109
  84. package/dist/chunk-7ZK4DJD7.cjs.map +1 -0
  85. package/dist/{chunk-WJVHMTKB.cjs → chunk-AA27GEYS.cjs} +3 -3
  86. package/dist/{chunk-WJVHMTKB.cjs.map → chunk-AA27GEYS.cjs.map} +1 -1
  87. package/dist/{chunk-BP46RJ5X.js → chunk-AAEZSPTC.js} +5 -5
  88. package/dist/{chunk-BP46RJ5X.js.map → chunk-AAEZSPTC.js.map} +1 -1
  89. package/dist/chunk-AGACYRJ2.js +11 -0
  90. package/dist/chunk-AGACYRJ2.js.map +1 -0
  91. package/dist/{chunk-ZZMZWBR6.js → chunk-ALUN2B4W.js} +81 -58
  92. package/dist/chunk-ALUN2B4W.js.map +1 -0
  93. package/dist/chunk-ANMJJD6D.cjs +18 -0
  94. package/dist/chunk-ANMJJD6D.cjs.map +1 -0
  95. package/dist/{chunk-DXGZ2NUG.cjs → chunk-ATT276RD.cjs} +12 -11
  96. package/dist/chunk-ATT276RD.cjs.map +1 -0
  97. package/dist/{chunk-4FFBAUFS.js → chunk-AWINL3ZC.js} +6 -6
  98. package/dist/chunk-AWINL3ZC.js.map +1 -0
  99. package/dist/{chunk-UU36SHFY.cjs → chunk-BJUJT5ED.cjs} +9 -8
  100. package/dist/chunk-BJUJT5ED.cjs.map +1 -0
  101. package/dist/chunk-CEILSTWB.cjs +109 -0
  102. package/dist/chunk-CEILSTWB.cjs.map +1 -0
  103. package/dist/{chunk-D4CUGAKZ.js → chunk-CZJ6Q7CW.js} +36 -6
  104. package/dist/chunk-CZJ6Q7CW.js.map +1 -0
  105. package/dist/{chunk-KQ7TS7WW.cjs → chunk-D6POWE7E.cjs} +37 -26
  106. package/dist/chunk-D6POWE7E.cjs.map +1 -0
  107. package/dist/{chunk-AWO27VRZ.js → chunk-DMRT67Y6.js} +6 -5
  108. package/dist/chunk-DMRT67Y6.js.map +1 -0
  109. package/dist/{chunk-5VB22SYX.cjs → chunk-DQZU7JK6.cjs} +7 -7
  110. package/dist/{chunk-5VB22SYX.cjs.map → chunk-DQZU7JK6.cjs.map} +1 -1
  111. package/dist/{chunk-3NSS2OIZ.cjs → chunk-DRL7URI4.cjs} +6 -6
  112. package/dist/{chunk-3NSS2OIZ.cjs.map → chunk-DRL7URI4.cjs.map} +1 -1
  113. package/dist/{chunk-RFXWMRFC.js → chunk-EFMFILPG.js} +14 -6
  114. package/dist/chunk-EFMFILPG.js.map +1 -0
  115. package/dist/{chunk-HS7AVXTF.js → chunk-EH6XD3FY.js} +4 -4
  116. package/dist/chunk-EH6XD3FY.js.map +1 -0
  117. package/dist/{chunk-KQRW2GPZ.js → chunk-EIQFAOFD.js} +6 -6
  118. package/dist/chunk-EIQFAOFD.js.map +1 -0
  119. package/dist/{chunk-XJCXEKMD.cjs → chunk-EXTRW7GW.cjs} +4 -4
  120. package/dist/chunk-EXTRW7GW.cjs.map +1 -0
  121. package/dist/{chunk-U54XCYG3.js → chunk-FJWQP6EE.js} +12 -6
  122. package/dist/chunk-FJWQP6EE.js.map +1 -0
  123. package/dist/{chunk-O7DK5PBJ.cjs → chunk-FUSDYC2B.cjs} +26 -42
  124. package/dist/chunk-FUSDYC2B.cjs.map +1 -0
  125. package/dist/{chunk-CQBXOJ6U.cjs → chunk-G4ZGYKJG.cjs} +21 -21
  126. package/dist/chunk-G4ZGYKJG.cjs.map +1 -0
  127. package/dist/{chunk-4QZSA2HJ.js → chunk-G7BLGBRN.js} +4 -4
  128. package/dist/chunk-G7BLGBRN.js.map +1 -0
  129. package/dist/{chunk-BZRFXJHA.js → chunk-GBCVPKHE.js} +55 -26
  130. package/dist/chunk-GBCVPKHE.js.map +1 -0
  131. package/dist/{chunk-5HEG4CQH.cjs → chunk-GZV6AVRL.cjs} +8 -8
  132. package/dist/{chunk-5HEG4CQH.cjs.map → chunk-GZV6AVRL.cjs.map} +1 -1
  133. package/dist/{chunk-RFMBZPOW.cjs → chunk-HCT4HPCL.cjs} +10 -10
  134. package/dist/chunk-HCT4HPCL.cjs.map +1 -0
  135. package/dist/{chunk-OSEG74VJ.js → chunk-HFEJE7AC.js} +52 -43
  136. package/dist/chunk-HFEJE7AC.js.map +1 -0
  137. package/dist/{chunk-52NKC5HT.cjs → chunk-HUFSABUZ.cjs} +12 -8
  138. package/dist/chunk-HUFSABUZ.cjs.map +1 -0
  139. package/dist/{chunk-4CLOXP6H.cjs → chunk-HW7SEELD.cjs} +4 -4
  140. package/dist/{chunk-4CLOXP6H.cjs.map → chunk-HW7SEELD.cjs.map} +1 -1
  141. package/dist/{chunk-ZCIRZE37.cjs → chunk-HWSALKOR.cjs} +26 -17
  142. package/dist/chunk-HWSALKOR.cjs.map +1 -0
  143. package/dist/{chunk-ZSWPZ23K.cjs → chunk-I2PWY7VM.cjs} +5 -5
  144. package/dist/chunk-I2PWY7VM.cjs.map +1 -0
  145. package/dist/{chunk-VJ26EKGJ.cjs → chunk-IJ7M6GOG.cjs} +3 -3
  146. package/dist/chunk-IJ7M6GOG.cjs.map +1 -0
  147. package/dist/{chunk-K5OJUYSZ.js → chunk-IJM7UGS5.js} +19 -10
  148. package/dist/chunk-IJM7UGS5.js.map +1 -0
  149. package/dist/{chunk-SAVIWMZB.js → chunk-ILGZ2ZZV.js} +3 -3
  150. package/dist/chunk-ILGZ2ZZV.js.map +1 -0
  151. package/dist/{chunk-4ZHTIJNE.cjs → chunk-J7J7J2GN.cjs} +87 -63
  152. package/dist/chunk-J7J7J2GN.cjs.map +1 -0
  153. package/dist/{chunk-UALX2J2Q.cjs → chunk-JLRLCBJ4.cjs} +38 -11
  154. package/dist/chunk-JLRLCBJ4.cjs.map +1 -0
  155. package/dist/{chunk-2QDYBS2A.js → chunk-JMDDYA22.js} +4 -4
  156. package/dist/chunk-JMDDYA22.js.map +1 -0
  157. package/dist/{chunk-LXQ6HKPS.js → chunk-JNAA4G4H.js} +3 -3
  158. package/dist/{chunk-LXQ6HKPS.js.map → chunk-JNAA4G4H.js.map} +1 -1
  159. package/dist/{chunk-UMP6OJIM.js → chunk-JOFVLOFY.js} +4 -4
  160. package/dist/{chunk-UMP6OJIM.js.map → chunk-JOFVLOFY.js.map} +1 -1
  161. package/dist/chunk-JTZ74HFD.js +100 -0
  162. package/dist/chunk-JTZ74HFD.js.map +1 -0
  163. package/dist/{chunk-A46SWMIF.js → chunk-K2VMFZQ5.js} +7 -7
  164. package/dist/chunk-K2VMFZQ5.js.map +1 -0
  165. package/dist/{chunk-DN2PACRI.js → chunk-K3NH62DG.js} +461 -282
  166. package/dist/chunk-K3NH62DG.js.map +1 -0
  167. package/dist/{chunk-XWTLIGO3.cjs → chunk-KTTHHYEW.cjs} +5 -5
  168. package/dist/chunk-KTTHHYEW.cjs.map +1 -0
  169. package/dist/{chunk-3FFAEAUJ.cjs → chunk-KVSAY6NZ.cjs} +18 -18
  170. package/dist/chunk-KVSAY6NZ.cjs.map +1 -0
  171. package/dist/{chunk-IAHZCGBE.cjs → chunk-LHSWHYF3.cjs} +120 -146
  172. package/dist/chunk-LHSWHYF3.cjs.map +1 -0
  173. package/dist/{chunk-25BD2R5G.js → chunk-NCGWJ3HS.js} +1991 -1854
  174. package/dist/chunk-NCGWJ3HS.js.map +1 -0
  175. package/dist/{chunk-3OR54XG4.js → chunk-NJWYQWDL.js} +12 -8
  176. package/dist/chunk-NJWYQWDL.js.map +1 -0
  177. package/dist/chunk-NVXXWAU7.cjs +13 -0
  178. package/dist/chunk-NVXXWAU7.cjs.map +1 -0
  179. package/dist/{chunk-2D34UTDC.js → chunk-O6USDERH.js} +31 -11
  180. package/dist/chunk-O6USDERH.js.map +1 -0
  181. package/dist/{chunk-XO4SOZN6.js → chunk-OR6XIWLB.js} +4 -4
  182. package/dist/{chunk-XO4SOZN6.js.map → chunk-OR6XIWLB.js.map} +1 -1
  183. package/dist/{chunk-4PYZ5AX3.cjs → chunk-PRZ3BES7.cjs} +16 -8
  184. package/dist/chunk-PRZ3BES7.cjs.map +1 -0
  185. package/dist/{chunk-HCZD23VS.cjs → chunk-QC55H6RJ.cjs} +65 -39
  186. package/dist/chunk-QC55H6RJ.cjs.map +1 -0
  187. package/dist/{chunk-4O5TGQBW.cjs → chunk-QME6FDFG.cjs} +9 -5
  188. package/dist/chunk-QME6FDFG.cjs.map +1 -0
  189. package/dist/chunk-QOGNZMHD.cjs +34 -0
  190. package/dist/chunk-QOGNZMHD.cjs.map +1 -0
  191. package/dist/{chunk-B2J4ZMZL.cjs → chunk-QWD3CZWE.cjs} +6 -5
  192. package/dist/chunk-QWD3CZWE.cjs.map +1 -0
  193. package/dist/{chunk-SZVR77EJ.cjs → chunk-QWD4RDZ3.cjs} +15 -24
  194. package/dist/chunk-QWD4RDZ3.cjs.map +1 -0
  195. package/dist/{chunk-7BG5UH3T.cjs → chunk-RHZ6HP23.cjs} +4 -4
  196. package/dist/chunk-RHZ6HP23.cjs.map +1 -0
  197. package/dist/{chunk-2HVF2WJY.cjs → chunk-RQMCOFAI.cjs} +8 -8
  198. package/dist/{chunk-2HVF2WJY.cjs.map → chunk-RQMCOFAI.cjs.map} +1 -1
  199. package/dist/{chunk-VKJ7V7EB.cjs → chunk-SA6K24NB.cjs} +3 -3
  200. package/dist/chunk-SA6K24NB.cjs.map +1 -0
  201. package/dist/{chunk-7AD3ZTZL.js → chunk-SAGRF4IB.js} +3 -3
  202. package/dist/chunk-SAGRF4IB.js.map +1 -0
  203. package/dist/{chunk-PUAEFLYK.js → chunk-SVQIW5RJ.js} +4 -4
  204. package/dist/{chunk-PUAEFLYK.js.map → chunk-SVQIW5RJ.js.map} +1 -1
  205. package/dist/{chunk-3O42QOMJ.js → chunk-TA3K7SBK.js} +7 -6
  206. package/dist/chunk-TA3K7SBK.js.map +1 -0
  207. package/dist/{chunk-LYRDF5TQ.cjs → chunk-TFG5IBZS.cjs} +14 -23
  208. package/dist/chunk-TFG5IBZS.cjs.map +1 -0
  209. package/dist/{chunk-GKEFRLU7.cjs → chunk-TMKTSYDS.cjs} +6 -6
  210. package/dist/{chunk-GKEFRLU7.cjs.map → chunk-TMKTSYDS.cjs.map} +1 -1
  211. package/dist/{chunk-J24VJOH3.cjs → chunk-UADQJBHR.cjs} +31 -11
  212. package/dist/chunk-UADQJBHR.cjs.map +1 -0
  213. package/dist/{chunk-TAZVKYWJ.js → chunk-UBR5PWD7.js} +26 -40
  214. package/dist/chunk-UBR5PWD7.js.map +1 -0
  215. package/dist/{chunk-IPYYKCRC.js → chunk-UFPUHJWS.js} +5 -5
  216. package/dist/{chunk-IPYYKCRC.js.map → chunk-UFPUHJWS.js.map} +1 -1
  217. package/dist/{chunk-OHLDPWTA.cjs → chunk-UGRS7ZA7.cjs} +15 -15
  218. package/dist/{chunk-OHLDPWTA.cjs.map → chunk-UGRS7ZA7.cjs.map} +1 -1
  219. package/dist/{chunk-RIAM53CP.js → chunk-UKMBRMGT.js} +3 -3
  220. package/dist/chunk-UKMBRMGT.js.map +1 -0
  221. package/dist/{chunk-L4BDVXIM.js → chunk-UNK4HNJH.js} +97 -123
  222. package/dist/chunk-UNK4HNJH.js.map +1 -0
  223. package/dist/{chunk-C3NT3PVE.js → chunk-V22DZIXO.js} +3 -3
  224. package/dist/chunk-V22DZIXO.js.map +1 -0
  225. package/dist/{chunk-OFRFZRQ4.cjs → chunk-V6ZY4AX6.cjs} +24 -14
  226. package/dist/chunk-V6ZY4AX6.cjs.map +1 -0
  227. package/dist/{chunk-B3IMEBOA.js → chunk-VE6DFSKU.js} +3 -3
  228. package/dist/{chunk-B3IMEBOA.js.map → chunk-VE6DFSKU.js.map} +1 -1
  229. package/dist/{chunk-WLQNMXQE.js → chunk-VWUXIVEI.js} +53 -26
  230. package/dist/chunk-VWUXIVEI.js.map +1 -0
  231. package/dist/{chunk-ACDLHN3W.js → chunk-WJXOICRC.js} +16 -6
  232. package/dist/chunk-WJXOICRC.js.map +1 -0
  233. package/dist/{chunk-JJ3OVRUM.cjs → chunk-WMH2MSOP.cjs} +2250 -2113
  234. package/dist/chunk-WMH2MSOP.cjs.map +1 -0
  235. package/dist/{chunk-7YGCPMGB.js → chunk-XB4GI5RZ.js} +27 -12
  236. package/dist/chunk-XB4GI5RZ.js.map +1 -0
  237. package/dist/{chunk-LXI4XZEC.js → chunk-XCCGNU3D.js} +13 -13
  238. package/dist/chunk-XCCGNU3D.js.map +1 -0
  239. package/dist/{chunk-O73J46PV.js → chunk-XDANGA2C.js} +5 -5
  240. package/dist/{chunk-O73J46PV.js.map → chunk-XDANGA2C.js.map} +1 -1
  241. package/dist/{chunk-UTSRIDKZ.js → chunk-XYFGKVZ7.js} +3 -3
  242. package/dist/chunk-XYFGKVZ7.js.map +1 -0
  243. package/dist/{chunk-RMWTPV3M.cjs → chunk-Y2KYR2ED.cjs} +27 -27
  244. package/dist/chunk-Y2KYR2ED.cjs.map +1 -0
  245. package/dist/{chunk-O7LZFG6O.cjs → chunk-YIFFF23U.cjs} +5 -5
  246. package/dist/chunk-YIFFF23U.cjs.map +1 -0
  247. package/dist/{chunk-4OTIXDMU.cjs → chunk-YJNYDJ2T.cjs} +12 -4
  248. package/dist/chunk-YJNYDJ2T.cjs.map +1 -0
  249. package/dist/{chunk-6JSIEDKL.cjs → chunk-YSTXFWQE.cjs} +13 -7
  250. package/dist/chunk-YSTXFWQE.cjs.map +1 -0
  251. package/dist/{chunk-I6HGWHPU.cjs → chunk-Z3NTRKIC.cjs} +4 -4
  252. package/dist/{chunk-I6HGWHPU.cjs.map → chunk-Z3NTRKIC.cjs.map} +1 -1
  253. package/dist/compact-session-BHTPCIHA.cjs +61 -0
  254. package/dist/{compact-session-QV57KR66.cjs.map → compact-session-BHTPCIHA.cjs.map} +1 -1
  255. package/dist/compact-session-W4WLJTHA.js +24 -0
  256. package/dist/{compact-session-RIGOWC4Y.js.map → compact-session-W4WLJTHA.js.map} +1 -1
  257. package/dist/compaction.cjs +20 -17
  258. package/dist/compaction.d.cts +15 -1
  259. package/dist/compaction.d.ts +15 -1
  260. package/dist/compaction.js +3 -4
  261. package/dist/concurrency.cjs +6 -7
  262. package/dist/concurrency.cjs.map +1 -1
  263. package/dist/concurrency.d.cts +6 -3
  264. package/dist/concurrency.d.ts +6 -3
  265. package/dist/concurrency.js +4 -5
  266. package/dist/concurrency.js.map +1 -1
  267. package/dist/context/index.cjs +6 -6
  268. package/dist/context/index.js +3 -3
  269. package/dist/context-74SBFD27.cjs +23 -0
  270. package/dist/{context-AGQ3DIZU.cjs.map → context-74SBFD27.cjs.map} +1 -1
  271. package/dist/context-NZ2AC6S7.js +6 -0
  272. package/dist/{context-GQRFBCLP.js.map → context-NZ2AC6S7.js.map} +1 -1
  273. package/dist/create-skill.d.ts +4 -1
  274. package/dist/{cron-BuiRPrvt.d.cts → cron-Bw6mSgD4.d.cts} +8 -2
  275. package/dist/{cron-C2SIi31n.d.ts → cron-DJv9oXSZ.d.ts} +8 -2
  276. package/dist/cron.cjs +46 -45
  277. package/dist/cron.d.cts +5 -4
  278. package/dist/cron.d.ts +5 -4
  279. package/dist/cron.js +45 -44
  280. package/dist/{errors-BgJH9PHi.d.cts → errors-CLOAyuiv.d.ts} +133 -95
  281. package/dist/{errors-C5fJUqLk.d.ts → errors-DrDEgyz1.d.cts} +133 -95
  282. package/dist/errors-base-B5g01neU.d.cts +75 -0
  283. package/dist/errors-base-B5g01neU.d.ts +75 -0
  284. package/dist/errors-base.d.ts +73 -0
  285. package/dist/errors.cjs +25 -22
  286. package/dist/errors.d.cts +3 -2
  287. package/dist/errors.d.ts +3 -2
  288. package/dist/errors.js +2 -3
  289. package/dist/eval.cjs +74 -78
  290. package/dist/eval.cjs.map +1 -1
  291. package/dist/eval.js +64 -68
  292. package/dist/eval.js.map +1 -1
  293. package/dist/{executor-6CYCA7MI.cjs → executor-XQAOQOHD.cjs} +60 -54
  294. package/dist/executor-XQAOQOHD.cjs.map +1 -0
  295. package/dist/{executor-QSEC3MRH.js → executor-ZNDQDX6Q.js} +43 -37
  296. package/dist/executor-ZNDQDX6Q.js.map +1 -0
  297. package/dist/filesystem/index.cjs +24 -26
  298. package/dist/filesystem/index.cjs.map +1 -1
  299. package/dist/filesystem/index.js +20 -22
  300. package/dist/filesystem/index.js.map +1 -1
  301. package/dist/filesystem/types.d.cts +11 -5
  302. package/dist/filesystem/types.d.ts +11 -5
  303. package/dist/{fork-agent-RSV4E3EA.js → fork-agent-S2EPIML7.js} +3 -3
  304. package/dist/fork-agent-S2EPIML7.js.map +1 -0
  305. package/dist/{fork-agent-Y2IK2RYU.cjs → fork-agent-WAEQI2DL.cjs} +4 -4
  306. package/dist/fork-agent-WAEQI2DL.cjs.map +1 -0
  307. package/dist/fs-session-store-77JU46UZ.js +10 -0
  308. package/dist/{fs-session-store-NM6YSTE2.js.map → fs-session-store-77JU46UZ.js.map} +1 -1
  309. package/dist/fs-session-store-E4U3P56L.cjs +19 -0
  310. package/dist/{fs-session-store-4PIHT5UX.cjs.map → fs-session-store-E4U3P56L.cjs.map} +1 -1
  311. package/dist/generate-object-BXV7BZRP.js +7 -0
  312. package/dist/{generate-object-GUNAUVBX.js.map → generate-object-BXV7BZRP.js.map} +1 -1
  313. package/dist/generate-object-YBI2TDJ3.cjs +20 -0
  314. package/dist/{generate-object-R7HTMW7F.cjs.map → generate-object-YBI2TDJ3.cjs.map} +1 -1
  315. package/dist/generate-object.d.ts +2 -4
  316. package/dist/index-manager-DXR2RSFI.cjs +26 -0
  317. package/dist/{index-manager-2SRX45WJ.cjs.map → index-manager-DXR2RSFI.cjs.map} +1 -1
  318. package/dist/index-manager-QH6OXEV5.js +17 -0
  319. package/dist/{index-manager-SP4ISSDX.js.map → index-manager-QH6OXEV5.js.map} +1 -1
  320. package/dist/index.cjs +234 -194
  321. package/dist/index.cjs.map +1 -1
  322. package/dist/index.d.cts +243 -41
  323. package/dist/index.d.ts +243 -41
  324. package/dist/index.js +140 -102
  325. package/dist/index.js.map +1 -1
  326. package/dist/{inject-session-DAR7OUCW.js → inject-session-SUM6TDJF.js} +9 -9
  327. package/dist/{inject-session-DAR7OUCW.js.map → inject-session-SUM6TDJF.js.map} +1 -1
  328. package/dist/inject-session-W6A46J3E.cjs +29 -0
  329. package/dist/{inject-session-WQKMC3GR.cjs.map → inject-session-W6A46J3E.cjs.map} +1 -1
  330. package/dist/interactive/index.cjs +12 -6
  331. package/dist/interactive/index.cjs.map +1 -1
  332. package/dist/interactive/index.js +12 -6
  333. package/dist/interactive/index.js.map +1 -1
  334. package/dist/interactive/types.d.cts +14 -4
  335. package/dist/interactive/types.d.ts +14 -4
  336. package/dist/internal/agent-loop/loop-context-init.d.ts +1 -1
  337. package/dist/internal/agent-loop/loop-finalize.d.ts +25 -0
  338. package/dist/internal/agent-loop/loop.d.ts +1 -1
  339. package/dist/internal/agent-loop/message-builders.d.ts +1 -1
  340. package/dist/internal/agent-loop/replay-messages.d.ts +41 -0
  341. package/dist/internal/agent-loop/tool-dispatch.d.ts +2 -2
  342. package/dist/internal/agent-loop/usage-and-cost.d.ts +1 -1
  343. package/dist/internal/auth/credential-availability.d.ts +61 -0
  344. package/dist/internal/auth/credential-store.d.ts +1 -1
  345. package/dist/internal/auth/oauth-device.d.ts +1 -1
  346. package/dist/internal/auth/oauth-engine.d.ts +1 -1
  347. package/dist/internal/auth/resolve-credential.d.ts +1 -1
  348. package/dist/internal/base-url.d.ts +14 -0
  349. package/dist/internal/cloud-agent/cloud-config-serializer.d.ts +1 -1
  350. package/dist/internal/{runtime/concurrency → concurrency}/subagent-credentials.d.ts +2 -2
  351. package/dist/internal/emit-run-event.d.ts +16 -0
  352. package/dist/internal/error-mappers/shared.d.ts +14 -1
  353. package/dist/internal/eval/assert.d.ts +2 -1
  354. package/dist/internal/eval/single-flight.d.ts +2 -1
  355. package/dist/internal/global-singleton.d.ts +6 -3
  356. package/dist/internal/llm/responses.d.ts +10 -0
  357. package/dist/internal/local-agent/local-agent-bootstrap.d.ts +5 -3
  358. package/dist/internal/local-agent/local-agent-capabilities.d.ts +38 -0
  359. package/dist/internal/local-agent/local-agent-dispatch.d.ts +2 -2
  360. package/dist/internal/local-agent/local-agent-memory-provider.d.ts +1 -1
  361. package/dist/internal/local-agent/local-agent-personality-extensions.d.ts +25 -1
  362. package/dist/internal/local-agent/local-agent-send.d.ts +42 -1
  363. package/dist/internal/local-agent/local-option-keys.d.ts +2 -0
  364. package/dist/internal/local-agent/real-local-run-mcp.d.ts +26 -0
  365. package/dist/internal/local-agent/real-local-run-options.d.ts +26 -0
  366. package/dist/internal/local-agent/real-local-run-tools.d.ts +21 -4
  367. package/dist/internal/local-agent/real-local-run.d.ts +2 -2
  368. package/dist/internal/mcp/handshake-timeout.d.ts +53 -0
  369. package/dist/internal/memory/active-memory.d.ts +1 -1
  370. package/dist/internal/memory/adapters/index.cjs +10 -10
  371. package/dist/internal/memory/adapters/index.js +9 -9
  372. package/dist/internal/memory/adapters/openai-embedding.d.cts +10 -0
  373. package/dist/internal/memory/adapters/openai-embedding.d.ts +10 -0
  374. package/dist/internal/memory/corpus-sync.d.ts +23 -0
  375. package/dist/internal/memory/index-db.d.ts +15 -1
  376. package/dist/internal/memory/index-manager-contract.d.ts +12 -0
  377. package/dist/internal/memory/index-manager.d.ts +4 -10
  378. package/dist/internal/memory/index-repository.d.ts +58 -0
  379. package/dist/internal/memory/lance-memory-adapter.d.ts +16 -14
  380. package/dist/internal/memory/memory-index.d.ts +15 -0
  381. package/dist/internal/memory/sdk-memory-peer-loader.d.ts +54 -1
  382. package/dist/internal/memory/storage/index.cjs +39 -40
  383. package/dist/internal/memory/storage/index.js +10 -11
  384. package/dist/internal/memory/storage/memory-root.d.cts +2 -3
  385. package/dist/internal/memory/storage/memory-root.d.ts +2 -3
  386. package/dist/internal/persistence/atomic-write.d.cts +4 -4
  387. package/dist/internal/persistence/atomic-write.d.ts +4 -4
  388. package/dist/internal/persistence/index.cjs +24 -25
  389. package/dist/internal/persistence/index.cjs.map +1 -1
  390. package/dist/internal/persistence/index.js +7 -8
  391. package/dist/internal/persistence/index.js.map +1 -1
  392. package/dist/internal/persistence/jsonl.d.cts +3 -1
  393. package/dist/internal/persistence/jsonl.d.ts +3 -1
  394. package/dist/internal/persistence/paths.d.cts +2 -2
  395. package/dist/internal/persistence/paths.d.ts +2 -2
  396. package/dist/internal/persistence/transcript-ops.d.cts +11 -2
  397. package/dist/internal/persistence/transcript-ops.d.ts +11 -2
  398. package/dist/internal/plugins/context.d.cts +0 -10
  399. package/dist/internal/plugins/context.d.ts +0 -10
  400. package/dist/internal/plugins/types.d.cts +1 -1
  401. package/dist/internal/plugins/types.d.ts +1 -1
  402. package/dist/internal/providers/catalog-schema.d.ts +94 -0
  403. package/dist/internal/providers/catalog-source-models-dev.d.ts +11 -0
  404. package/dist/internal/runtime/compat/foreign-config-sources.d.ts +86 -0
  405. package/dist/internal/runtime/compression/compression-model-registry.d.ts +1 -1
  406. package/dist/internal/runtime/compression/compression-summarizer.d.ts +5 -1
  407. package/dist/internal/runtime/fixtures/fixture-events.d.ts +1 -1
  408. package/dist/internal/runtime/fixtures/fixture-mode.d.ts +8 -14
  409. package/dist/internal/runtime/fixtures/fixture-run-base.d.ts +1 -1
  410. package/dist/internal/runtime/fixtures/fixture-scripts.d.ts +2 -2
  411. package/dist/internal/runtime/hooks/hooks-executor.d.ts +14 -1
  412. package/dist/internal/runtime/hooks/hooks-source.d.ts +9 -0
  413. package/dist/internal/runtime/lifecycle/wrap-completion-check-run.d.ts +1 -1
  414. package/dist/internal/runtime/{memory → memory-glue}/memory-provider.d.ts +1 -1
  415. package/dist/internal/runtime/{plugins → plugin-loader}/plugin-bundles.d.ts +3 -1
  416. package/dist/internal/runtime/processors/wrap-output-run.d.ts +1 -1
  417. package/dist/internal/runtime/registry/live-agent-registry.d.ts +9 -1
  418. package/dist/internal/runtime/system-prompt/local-assembly.d.ts +2 -1
  419. package/dist/internal/scorers/llm-judge.d.ts +12 -0
  420. package/dist/internal/security/index.cjs +14 -15
  421. package/dist/internal/security/index.d.cts +6 -1
  422. package/dist/internal/security/index.d.ts +6 -1
  423. package/dist/internal/security/index.js +4 -5
  424. package/dist/internal/security/path-containment.d.ts +24 -0
  425. package/dist/internal/session/agent-session-store.d.ts +1 -1
  426. package/dist/internal/session/agent-session.d.ts +1 -1
  427. package/dist/internal/session/index.d.ts +1 -1
  428. package/dist/internal/session/session-cache.d.ts +9 -3
  429. package/dist/internal/task/registry.d.ts +1 -1
  430. package/dist/internal/task/store.d.ts +1 -1
  431. package/dist/internal/task/subscribe.d.ts +1 -1
  432. package/dist/internal/task/task-id.d.ts +22 -0
  433. package/dist/internal/telemetry/adapter-registry.d.ts +12 -2
  434. package/dist/internal/telemetry/adapters/braintrust.d.ts +6 -1
  435. package/dist/internal/telemetry/adapters/langsmith.d.ts +6 -1
  436. package/dist/internal/workflow/executor.d.ts +2 -1
  437. package/dist/internal/workflow/snapshot-store.d.ts +1 -1
  438. package/dist/internal/workflow/step-branch.d.ts +2 -2
  439. package/dist/internal/workflow/step-dowhile.d.ts +2 -2
  440. package/dist/internal/workflow/step-execution.d.ts +25 -0
  441. package/dist/internal/workflow/step-foreach.d.ts +2 -2
  442. package/dist/internal/workflow/step-parallel.d.ts +2 -2
  443. package/dist/judge-call-6MVARKU2.js +5 -0
  444. package/dist/{judge-call-LVXABPS3.js.map → judge-call-6MVARKU2.js.map} +1 -1
  445. package/dist/judge-call-I3P4D5QR.cjs +22 -0
  446. package/dist/{judge-call-LAHMBJ57.cjs.map → judge-call-I3P4D5QR.cjs.map} +1 -1
  447. package/dist/mcp-auth.cjs +14 -15
  448. package/dist/mcp-auth.cjs.map +1 -1
  449. package/dist/mcp-auth.d.cts +2 -0
  450. package/dist/mcp-auth.d.ts +2 -0
  451. package/dist/mcp-auth.js +4 -5
  452. package/dist/mcp-auth.js.map +1 -1
  453. package/dist/models.cjs +52 -42
  454. package/dist/models.cjs.map +1 -1
  455. package/dist/models.js +39 -29
  456. package/dist/models.js.map +1 -1
  457. package/dist/oauth-transaction-store-5RIR6D5C.js +5 -0
  458. package/dist/{oauth-transaction-store-W52KVHQ4.js.map → oauth-transaction-store-5RIR6D5C.js.map} +1 -1
  459. package/dist/oauth-transaction-store-SXIE57OD.cjs +38 -0
  460. package/dist/{oauth-transaction-store-BT4GLTLK.cjs.map → oauth-transaction-store-SXIE57OD.cjs.map} +1 -1
  461. package/dist/path-safety.cjs +11 -12
  462. package/dist/path-safety.d.cts +2 -0
  463. package/dist/path-safety.d.ts +2 -0
  464. package/dist/path-safety.js +4 -5
  465. package/dist/permission-engine.d.ts +10 -17
  466. package/dist/persistence.cjs +31 -31
  467. package/dist/persistence.cjs.map +1 -1
  468. package/dist/persistence.d.cts +9 -1
  469. package/dist/persistence.d.ts +9 -1
  470. package/dist/persistence.js +12 -13
  471. package/dist/persistence.js.map +1 -1
  472. package/dist/project.cjs +5 -6
  473. package/dist/project.cjs.map +1 -1
  474. package/dist/project.js +3 -4
  475. package/dist/project.js.map +1 -1
  476. package/dist/providers.cjs +10 -10
  477. package/dist/providers.d.cts +2 -0
  478. package/dist/providers.d.ts +2 -0
  479. package/dist/providers.js +8 -8
  480. package/dist/registry-BZQFYRTL.cjs +46 -0
  481. package/dist/{registry-V7BDQ6QB.cjs.map → registry-BZQFYRTL.cjs.map} +1 -1
  482. package/dist/registry-DMWCJKRF.js +9 -0
  483. package/dist/{registry-75W33OGL.js.map → registry-DMWCJKRF.js.map} +1 -1
  484. package/dist/retry.cjs +4 -5
  485. package/dist/retry.d.cts +20 -5
  486. package/dist/retry.d.ts +20 -5
  487. package/dist/retry.js +3 -4
  488. package/dist/{run-BYSHf58D.d.cts → run-CTAdRU3U.d.cts} +120 -152
  489. package/dist/{run-BYSHf58D.d.ts → run-CTAdRU3U.d.ts} +120 -152
  490. package/dist/{run-until-HEQOUVU6.js → run-until-6D6TQ4JN.js} +27 -59
  491. package/dist/run-until-6D6TQ4JN.js.map +1 -0
  492. package/dist/{run-until-U2B5FJJI.cjs → run-until-DG2KXWB2.cjs} +27 -59
  493. package/dist/run-until-DG2KXWB2.cjs.map +1 -0
  494. package/dist/sandbox/bwrap.d.cts +11 -1
  495. package/dist/sandbox/bwrap.d.ts +11 -1
  496. package/dist/sandbox/index.cjs +26 -30
  497. package/dist/sandbox/index.cjs.map +1 -1
  498. package/dist/sandbox/index.d.cts +8 -1
  499. package/dist/sandbox/index.d.ts +8 -1
  500. package/dist/sandbox/index.js +10 -14
  501. package/dist/sandbox/index.js.map +1 -1
  502. package/dist/sandbox/linux-sandbox.d.cts +20 -4
  503. package/dist/sandbox/linux-sandbox.d.ts +20 -4
  504. package/dist/sandbox/types.d.cts +18 -2
  505. package/dist/sandbox/types.d.ts +18 -2
  506. package/dist/sanitize/index.cjs +2 -2
  507. package/dist/sanitize/index.js +1 -1
  508. package/dist/sanitize/types.d.cts +15 -2
  509. package/dist/sanitize/types.d.ts +15 -2
  510. package/dist/{sdk-agent-D8qJVkuV.d.ts → sdk-agent-Dxjb0IfM.d.cts} +169 -116
  511. package/dist/{sdk-agent-DEoKhA8a.d.cts → sdk-agent-ldzpyAaF.d.ts} +169 -116
  512. package/dist/server/auth/errors.d.cts +4 -3
  513. package/dist/server/auth/errors.d.ts +4 -3
  514. package/dist/server/auth/index.cjs +28 -28
  515. package/dist/server/auth/index.cjs.map +1 -1
  516. package/dist/server/auth/index.d.cts +28 -5
  517. package/dist/server/auth/index.d.ts +28 -5
  518. package/dist/server/auth/index.js +13 -13
  519. package/dist/server/auth/index.js.map +1 -1
  520. package/dist/server/auth/oauth-transaction-store.d.cts +2 -1
  521. package/dist/server/auth/oauth-transaction-store.d.ts +2 -1
  522. package/dist/server/auth/orchestrator.d.cts +4 -1
  523. package/dist/server/auth/orchestrator.d.ts +4 -1
  524. package/dist/server/auth/types.d.cts +18 -0
  525. package/dist/server/auth/types.d.ts +18 -0
  526. package/dist/server/errors-envelope.cjs +14 -15
  527. package/dist/server/errors-envelope.cjs.map +1 -1
  528. package/dist/server/errors-envelope.d.cts +3 -3
  529. package/dist/server/errors-envelope.d.ts +3 -3
  530. package/dist/server/errors-envelope.js +3 -4
  531. package/dist/server/errors-envelope.js.map +1 -1
  532. package/dist/session-transcript-LGHSNVY5.cjs +62 -0
  533. package/dist/{session-transcript-6WNITKRE.cjs.map → session-transcript-LGHSNVY5.cjs.map} +1 -1
  534. package/dist/session-transcript-VTBTCGQX.js +5 -0
  535. package/dist/{session-transcript-XAEKW6P7.js.map → session-transcript-VTBTCGQX.js.map} +1 -1
  536. package/dist/skills.cjs +8 -9
  537. package/dist/skills.js +6 -7
  538. package/dist/stream-object-HBFMIZLD.js +7 -0
  539. package/dist/{stream-object-UF4QRQRU.js.map → stream-object-HBFMIZLD.js.map} +1 -1
  540. package/dist/stream-object-QSKHISDJ.cjs +20 -0
  541. package/dist/{stream-object-ZJTQNKY3.cjs.map → stream-object-QSKHISDJ.cjs.map} +1 -1
  542. package/dist/stream-object.d.ts +2 -4
  543. package/dist/subagents-loader-LSKM2UIK.js +7 -0
  544. package/dist/{subagents-loader-CRT5LLL3.js.map → subagents-loader-LSKM2UIK.js.map} +1 -1
  545. package/dist/subagents-loader-YWFE7KYE.cjs +16 -0
  546. package/dist/{subagents-loader-YEUFFPAL.cjs.map → subagents-loader-YWFE7KYE.cjs.map} +1 -1
  547. package/dist/subagents-loader.cjs +7 -8
  548. package/dist/subagents-loader.cjs.map +1 -1
  549. package/dist/subagents-loader.d.cts +5 -3
  550. package/dist/subagents-loader.d.ts +5 -3
  551. package/dist/subagents-loader.js +5 -6
  552. package/dist/subagents-loader.js.map +1 -1
  553. package/dist/subagents.cjs +2 -2
  554. package/dist/subagents.cjs.map +1 -1
  555. package/dist/subagents.js +1 -1
  556. package/dist/subagents.js.map +1 -1
  557. package/dist/subscription/define-subscription.d.cts +4 -1
  558. package/dist/subscription/define-subscription.d.ts +4 -1
  559. package/dist/subscription/index.cjs +4 -5
  560. package/dist/subscription/index.cjs.map +1 -1
  561. package/dist/subscription/index.d.cts +2 -0
  562. package/dist/subscription/index.d.ts +2 -0
  563. package/dist/subscription/index.js +3 -4
  564. package/dist/subscription/index.js.map +1 -1
  565. package/dist/subscription/internal/server-integration.d.cts +5 -0
  566. package/dist/subscription/internal/server-integration.d.ts +5 -0
  567. package/dist/subscription/internal/subscription-runtime.d.cts +13 -1
  568. package/dist/subscription/internal/subscription-runtime.d.ts +13 -1
  569. package/dist/task-errors.d.ts +58 -0
  570. package/dist/task-store.cjs +7 -8
  571. package/dist/task-store.d.cts +2 -0
  572. package/dist/task-store.d.ts +2 -0
  573. package/dist/task-store.js +4 -5
  574. package/dist/types/agent-prims.d.ts +21 -0
  575. package/dist/types/agent.d.ts +63 -15
  576. package/dist/types/batch.d.ts +3 -0
  577. package/dist/types/budget-tracker.d.ts +3 -0
  578. package/dist/types/budget.d.ts +12 -3
  579. package/dist/types/content-blocks.d.ts +3 -0
  580. package/dist/types/context.d.ts +3 -0
  581. package/dist/types/conversation.d.ts +5 -0
  582. package/dist/types/cron.d.ts +5 -0
  583. package/dist/types/env-policy.d.ts +3 -0
  584. package/dist/types/eval.d.ts +3 -0
  585. package/dist/types/fork.d.ts +3 -0
  586. package/dist/types/goal-events.d.ts +3 -0
  587. package/dist/types/mcp.d.ts +5 -0
  588. package/dist/types/memory-adapter.d.ts +3 -0
  589. package/dist/types/memory-provider.d.ts +44 -5
  590. package/dist/types/messages-base.d.ts +4 -0
  591. package/dist/types/messages.d.ts +5 -0
  592. package/dist/types/plugin.d.ts +32 -4
  593. package/dist/types/processors.d.ts +3 -0
  594. package/dist/types/provider-profile.d.ts +3 -0
  595. package/dist/types/providers.d.ts +3 -0
  596. package/dist/types/run-events.d.ts +36 -9
  597. package/dist/types/run.d.ts +29 -2
  598. package/dist/types/sdk-agent.d.ts +43 -0
  599. package/dist/types/session-message.d.ts +3 -0
  600. package/dist/types/session-record.d.ts +3 -0
  601. package/dist/types/session-store.d.ts +45 -0
  602. package/dist/types/task.d.ts +3 -11
  603. package/dist/types/theokit.d.ts +3 -0
  604. package/dist/types/trajectory.d.ts +3 -0
  605. package/dist/types/updates.d.ts +5 -0
  606. package/dist/types/usage.d.ts +4 -1
  607. package/dist/types/workflow.d.ts +13 -135
  608. package/dist/workflow-as-tool.d.ts +66 -0
  609. package/dist/workflow-errors.d.ts +164 -0
  610. package/dist/workflow.cjs +29 -30
  611. package/dist/workflow.d.cts +135 -74
  612. package/dist/workflow.d.ts +135 -74
  613. package/dist/workflow.js +8 -9
  614. package/docs/adr/README.md +2604 -0
  615. package/docs/error-codes.md +137 -103
  616. package/docs/harness-capability-map.md +30 -20
  617. package/docs/memory-decisions.md +1 -1
  618. package/package.json +3 -7
  619. package/bin/theokit-migrate-config.mjs +0 -278
  620. package/bin/theokit-migrate-memory.mjs +0 -116
  621. package/dist/agent-3JK7VXNN.js +0 -57
  622. package/dist/agent-PVINJTUR.cjs +0 -66
  623. package/dist/agent-session-store-6EL5NPA4.cjs +0 -24
  624. package/dist/agent-session-store-OPGRB4XM.js +0 -7
  625. package/dist/batch-BXYTW2DP.cjs.map +0 -1
  626. package/dist/batch-L4ZXS46M.js.map +0 -1
  627. package/dist/chunk-25BD2R5G.js.map +0 -1
  628. package/dist/chunk-2D34UTDC.js.map +0 -1
  629. package/dist/chunk-2GUYQR5P.js.map +0 -1
  630. package/dist/chunk-2QDYBS2A.js.map +0 -1
  631. package/dist/chunk-3FFAEAUJ.cjs.map +0 -1
  632. package/dist/chunk-3O42QOMJ.js.map +0 -1
  633. package/dist/chunk-3OR54XG4.js.map +0 -1
  634. package/dist/chunk-4FFBAUFS.js.map +0 -1
  635. package/dist/chunk-4O5TGQBW.cjs.map +0 -1
  636. package/dist/chunk-4OTIXDMU.cjs.map +0 -1
  637. package/dist/chunk-4PYZ5AX3.cjs.map +0 -1
  638. package/dist/chunk-4QZSA2HJ.js.map +0 -1
  639. package/dist/chunk-4ZHTIJNE.cjs.map +0 -1
  640. package/dist/chunk-52NKC5HT.cjs.map +0 -1
  641. package/dist/chunk-6HKGLTJI.cjs.map +0 -1
  642. package/dist/chunk-6JSIEDKL.cjs.map +0 -1
  643. package/dist/chunk-7AD3ZTZL.js.map +0 -1
  644. package/dist/chunk-7BG5UH3T.cjs.map +0 -1
  645. package/dist/chunk-7YGCPMGB.js.map +0 -1
  646. package/dist/chunk-A46SWMIF.js.map +0 -1
  647. package/dist/chunk-A4JVILQU.js.map +0 -1
  648. package/dist/chunk-ACDLHN3W.js.map +0 -1
  649. package/dist/chunk-AQO3NSRG.cjs +0 -41
  650. package/dist/chunk-AQO3NSRG.cjs.map +0 -1
  651. package/dist/chunk-AWO27VRZ.js.map +0 -1
  652. package/dist/chunk-B2J4ZMZL.cjs.map +0 -1
  653. package/dist/chunk-B4EOJWOY.cjs.map +0 -1
  654. package/dist/chunk-BU4KFWXF.js.map +0 -1
  655. package/dist/chunk-BZRFXJHA.js.map +0 -1
  656. package/dist/chunk-C3NT3PVE.js.map +0 -1
  657. package/dist/chunk-C72AZW7J.js.map +0 -1
  658. package/dist/chunk-CQBXOJ6U.cjs.map +0 -1
  659. package/dist/chunk-D4CUGAKZ.js.map +0 -1
  660. package/dist/chunk-DN2PACRI.js.map +0 -1
  661. package/dist/chunk-DXGZ2NUG.cjs.map +0 -1
  662. package/dist/chunk-EG4QM7ZJ.cjs +0 -39
  663. package/dist/chunk-EG4QM7ZJ.cjs.map +0 -1
  664. package/dist/chunk-GPKAF7SG.js.map +0 -1
  665. package/dist/chunk-HCZD23VS.cjs.map +0 -1
  666. package/dist/chunk-HS7AVXTF.js.map +0 -1
  667. package/dist/chunk-IAHZCGBE.cjs.map +0 -1
  668. package/dist/chunk-J24VJOH3.cjs.map +0 -1
  669. package/dist/chunk-JJ3OVRUM.cjs.map +0 -1
  670. package/dist/chunk-JPBKYL3B.cjs +0 -18
  671. package/dist/chunk-JPBKYL3B.cjs.map +0 -1
  672. package/dist/chunk-K5OJUYSZ.js.map +0 -1
  673. package/dist/chunk-KQ7TS7WW.cjs.map +0 -1
  674. package/dist/chunk-KQRW2GPZ.js.map +0 -1
  675. package/dist/chunk-KYAJINUI.cjs.map +0 -1
  676. package/dist/chunk-L3MTL4NA.js.map +0 -1
  677. package/dist/chunk-L4BDVXIM.js.map +0 -1
  678. package/dist/chunk-LXI4XZEC.js.map +0 -1
  679. package/dist/chunk-LYRDF5TQ.cjs.map +0 -1
  680. package/dist/chunk-N2U4AZGB.js.map +0 -1
  681. package/dist/chunk-O7DK5PBJ.cjs.map +0 -1
  682. package/dist/chunk-O7LZFG6O.cjs.map +0 -1
  683. package/dist/chunk-OFRFZRQ4.cjs.map +0 -1
  684. package/dist/chunk-OSEG74VJ.js.map +0 -1
  685. package/dist/chunk-RFMBZPOW.cjs.map +0 -1
  686. package/dist/chunk-RFXWMRFC.js.map +0 -1
  687. package/dist/chunk-RIAM53CP.js.map +0 -1
  688. package/dist/chunk-RMWTPV3M.cjs.map +0 -1
  689. package/dist/chunk-RNB4APBZ.js.map +0 -1
  690. package/dist/chunk-SAVIWMZB.js.map +0 -1
  691. package/dist/chunk-SZVR77EJ.cjs.map +0 -1
  692. package/dist/chunk-TAZVKYWJ.js.map +0 -1
  693. package/dist/chunk-U54XCYG3.js.map +0 -1
  694. package/dist/chunk-U6IFHFWK.js.map +0 -1
  695. package/dist/chunk-UALX2J2Q.cjs.map +0 -1
  696. package/dist/chunk-UBDMVMBZ.js.map +0 -1
  697. package/dist/chunk-UFLD2HEV.js +0 -35
  698. package/dist/chunk-UFLD2HEV.js.map +0 -1
  699. package/dist/chunk-UGT7GK7I.cjs.map +0 -1
  700. package/dist/chunk-UNYXQ4M5.js.map +0 -1
  701. package/dist/chunk-UTSRIDKZ.js.map +0 -1
  702. package/dist/chunk-UU36SHFY.cjs.map +0 -1
  703. package/dist/chunk-V2BOS4WF.cjs.map +0 -1
  704. package/dist/chunk-VJ26EKGJ.cjs.map +0 -1
  705. package/dist/chunk-VKJ7V7EB.cjs.map +0 -1
  706. package/dist/chunk-VLVVJLDH.cjs.map +0 -1
  707. package/dist/chunk-WLQNMXQE.js.map +0 -1
  708. package/dist/chunk-WNO3C3N2.cjs.map +0 -1
  709. package/dist/chunk-WTMU7J4U.js +0 -14
  710. package/dist/chunk-WTMU7J4U.js.map +0 -1
  711. package/dist/chunk-XEQ3TM66.js +0 -35
  712. package/dist/chunk-XEQ3TM66.js.map +0 -1
  713. package/dist/chunk-XJCXEKMD.cjs.map +0 -1
  714. package/dist/chunk-XL7Q7HB2.cjs.map +0 -1
  715. package/dist/chunk-XWTLIGO3.cjs.map +0 -1
  716. package/dist/chunk-YML4ME27.cjs.map +0 -1
  717. package/dist/chunk-ZCIRZE37.cjs.map +0 -1
  718. package/dist/chunk-ZSWPZ23K.cjs.map +0 -1
  719. package/dist/chunk-ZWRG4NWT.cjs.map +0 -1
  720. package/dist/chunk-ZZMZWBR6.js.map +0 -1
  721. package/dist/compact-session-QV57KR66.cjs +0 -59
  722. package/dist/compact-session-RIGOWC4Y.js +0 -22
  723. package/dist/context-AGQ3DIZU.cjs +0 -24
  724. package/dist/context-GQRFBCLP.js +0 -7
  725. package/dist/executor-6CYCA7MI.cjs.map +0 -1
  726. package/dist/executor-QSEC3MRH.js.map +0 -1
  727. package/dist/fork-agent-RSV4E3EA.js.map +0 -1
  728. package/dist/fork-agent-Y2IK2RYU.cjs.map +0 -1
  729. package/dist/fs-session-store-4PIHT5UX.cjs +0 -20
  730. package/dist/fs-session-store-NM6YSTE2.js +0 -11
  731. package/dist/generate-object-GUNAUVBX.js +0 -8
  732. package/dist/generate-object-R7HTMW7F.cjs +0 -21
  733. package/dist/index-manager-2SRX45WJ.cjs +0 -27
  734. package/dist/index-manager-SP4ISSDX.js +0 -18
  735. package/dist/inject-session-WQKMC3GR.cjs +0 -29
  736. package/dist/internal/persistence/credential-pool-store.d.cts +0 -32
  737. package/dist/internal/persistence/credential-pool-store.d.ts +0 -32
  738. package/dist/internal/runtime/memory/memory-path-selector.d.ts +0 -73
  739. package/dist/judge-call-LAHMBJ57.cjs +0 -23
  740. package/dist/judge-call-LVXABPS3.js +0 -6
  741. package/dist/oauth-transaction-store-BT4GLTLK.cjs +0 -36
  742. package/dist/oauth-transaction-store-W52KVHQ4.js +0 -3
  743. package/dist/registry-75W33OGL.js +0 -10
  744. package/dist/registry-V7BDQ6QB.cjs +0 -47
  745. package/dist/run-until-HEQOUVU6.js.map +0 -1
  746. package/dist/run-until-U2B5FJJI.cjs.map +0 -1
  747. package/dist/server/adapter/express.d.cts +0 -9
  748. package/dist/server/adapter/express.d.ts +0 -9
  749. package/dist/server/adapter/fastify.d.cts +0 -9
  750. package/dist/server/adapter/fastify.d.ts +0 -9
  751. package/dist/server/adapter/hono.d.cts +0 -9
  752. package/dist/server/adapter/hono.d.ts +0 -9
  753. package/dist/server/adapter/shared-handler.d.cts +0 -9
  754. package/dist/server/adapter/shared-handler.d.ts +0 -9
  755. package/dist/server/adapter/types.d.cts +0 -33
  756. package/dist/server/adapter/types.d.ts +0 -33
  757. package/dist/session-transcript-6WNITKRE.cjs +0 -63
  758. package/dist/session-transcript-XAEKW6P7.js +0 -6
  759. package/dist/stream-object-UF4QRQRU.js +0 -8
  760. package/dist/stream-object-ZJTQNKY3.cjs +0 -21
  761. package/dist/subagents-loader-CRT5LLL3.js +0 -8
  762. package/dist/subagents-loader-YEUFFPAL.cjs +0 -17
  763. /package/dist/{batch.d.ts → internal/agent/batch.d.ts} +0 -0
  764. /package/dist/{agent-helpers.d.ts → internal/agent/helpers.d.ts} +0 -0
  765. /package/dist/internal/agent-loop/{loop-types.d.ts → types.d.ts} +0 -0
  766. /package/dist/internal/auth/{auth-types.d.ts → types.d.ts} +0 -0
  767. /package/dist/internal/cloud-agent/{cloud-payload-types.d.ts → types.d.ts} +0 -0
  768. /package/dist/internal/{runtime/concurrency → concurrency}/abort-utils.d.ts +0 -0
  769. /package/dist/internal/{runtime/concurrency → concurrency}/async-local-storage.d.ts +0 -0
  770. /package/dist/internal/{runtime/concurrency → concurrency}/async-semaphore.d.ts +0 -0
  771. /package/dist/internal/{runtime/concurrency → concurrency}/delegation-depth.d.ts +0 -0
  772. /package/dist/internal/{runtime/concurrency → concurrency}/map-with-concurrency.d.ts +0 -0
  773. /package/dist/internal/{runtime/retry → error-mappers}/default-retriable.d.ts +0 -0
  774. /package/dist/internal/{runtime/fixtures/fixture-types.d.ts → memory/storage/list-markdown.d.cts} +0 -0
  775. /package/dist/internal/{runtime/plugins/plugins-manager.d.ts → memory/storage/list-markdown.d.ts} +0 -0
  776. /package/dist/internal/{resilience → retry}/circuit-breaker.d.ts +0 -0
  777. /package/dist/internal/{runtime/retry → retry}/with-retry.d.ts +0 -0
  778. /package/dist/internal/{security/secret-redactor.d.cts → runtime/fixtures/types.d.ts} +0 -0
  779. /package/dist/internal/runtime/{memory → memory-glue}/memory-store.d.ts +0 -0
  780. /package/dist/internal/runtime/{memory → memory-glue}/select-facts.d.ts +0 -0
  781. /package/dist/internal/runtime/{plugins → plugin-loader}/plugin-frontmatter.d.ts +0 -0
  782. /package/dist/internal/{security/secret-redactor.d.ts → runtime/plugin-loader/plugins-manager.d.ts} +0 -0
  783. /package/dist/internal/runtime/{reasoning → system-prompt}/native-reasoning.d.ts +0 -0
  784. /package/dist/internal/{runtime/context/path-containment.d.ts → security/path-containment.d.cts} +0 -0
  785. /package/dist/internal/session/{session-types.d.ts → types.d.ts} +0 -0
  786. /package/dist/internal/{zod/to-json-schema.d.ts → zod-to-json-schema.d.ts} +0 -0
  787. /package/dist/subscription/internal/{adapter-types.d.cts → types.d.cts} +0 -0
  788. /package/dist/subscription/internal/{adapter-types.d.ts → types.d.ts} +0 -0
@@ -3,11 +3,12 @@
3
3
  *
4
4
  * Plan T1.2 + v1.1 EC-1 (AuthCancelledError for OAuth provider error response RFC 6749 §4.1.2.1).
5
5
  */
6
+ import { TheokitAgentError } from "../../errors.js";
6
7
  /**
7
8
  * Thrown at `defineAuth()` time when configuration is invalid
8
9
  * (e.g., duplicate provider name, invalid email shape per EC-V1-12).
9
10
  */
10
- export declare class AuthConfigError extends Error {
11
+ export declare class AuthConfigError extends TheokitAgentError {
11
12
  readonly name = "AuthConfigError";
12
13
  readonly code: string;
13
14
  constructor(code: string, message: string);
@@ -16,7 +17,7 @@ export declare class AuthConfigError extends Error {
16
17
  * Thrown at `startSignIn(providerName, ...)` or `finishSignIn(providerName, ...)`
17
18
  * when the named provider is not registered in `providers[]`.
18
19
  */
19
- export declare class AuthProviderNotFoundError extends Error {
20
+ export declare class AuthProviderNotFoundError extends TheokitAgentError {
20
21
  readonly name = "AuthProviderNotFoundError";
21
22
  readonly providerName: string;
22
23
  constructor(providerName: string);
@@ -33,7 +34,7 @@ export declare class AuthProviderNotFoundError extends Error {
33
34
  * - 'oauth_userinfo_failed' — userinfo endpoint returned error
34
35
  * - 'oauth_missing_code_or_state' — required query params absent
35
36
  */
36
- export declare class AuthCallbackError extends Error {
37
+ export declare class AuthCallbackError extends TheokitAgentError {
37
38
  readonly name: string;
38
39
  readonly code: string;
39
40
  constructor(code: string, message?: string);
@@ -3,11 +3,12 @@
3
3
  *
4
4
  * Plan T1.2 + v1.1 EC-1 (AuthCancelledError for OAuth provider error response RFC 6749 §4.1.2.1).
5
5
  */
6
+ import { TheokitAgentError } from "../../errors.js";
6
7
  /**
7
8
  * Thrown at `defineAuth()` time when configuration is invalid
8
9
  * (e.g., duplicate provider name, invalid email shape per EC-V1-12).
9
10
  */
10
- export declare class AuthConfigError extends Error {
11
+ export declare class AuthConfigError extends TheokitAgentError {
11
12
  readonly name = "AuthConfigError";
12
13
  readonly code: string;
13
14
  constructor(code: string, message: string);
@@ -16,7 +17,7 @@ export declare class AuthConfigError extends Error {
16
17
  * Thrown at `startSignIn(providerName, ...)` or `finishSignIn(providerName, ...)`
17
18
  * when the named provider is not registered in `providers[]`.
18
19
  */
19
- export declare class AuthProviderNotFoundError extends Error {
20
+ export declare class AuthProviderNotFoundError extends TheokitAgentError {
20
21
  readonly name = "AuthProviderNotFoundError";
21
22
  readonly providerName: string;
22
23
  constructor(providerName: string);
@@ -33,7 +34,7 @@ export declare class AuthProviderNotFoundError extends Error {
33
34
  * - 'oauth_userinfo_failed' — userinfo endpoint returned error
34
35
  * - 'oauth_missing_code_or_state' — required query params absent
35
36
  */
36
- export declare class AuthCallbackError extends Error {
37
+ export declare class AuthCallbackError extends TheokitAgentError {
37
38
  readonly name: string;
38
39
  readonly code: string;
39
40
  constructor(code: string, message?: string);
@@ -1,7 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var chunkB2J4ZMZL_cjs = require('../../chunk-B2J4ZMZL.cjs');
4
- var chunk52NKC5HT_cjs = require('../../chunk-52NKC5HT.cjs');
3
+ var chunkQWD3CZWE_cjs = require('../../chunk-QWD3CZWE.cjs');
4
+ var chunkHUFSABUZ_cjs = require('../../chunk-HUFSABUZ.cjs');
5
+ require('../../chunk-J7J7J2GN.cjs');
6
+ require('../../chunk-6LHQPOMI.cjs');
5
7
  var crypto = require('crypto');
6
8
 
7
9
  // src/server/auth/validate-return-to.ts
@@ -37,19 +39,17 @@ function generatePkceVerifier() {
37
39
  return Buffer.from(bytes).toString("base64url");
38
40
  }
39
41
  function txCookieSecret(opts) {
40
- const sess = opts.session;
41
- if (sess.secret) {
42
- if (Array.isArray(sess.secret)) {
43
- const first = sess.secret[0];
44
- if (first) return first;
45
- } else {
46
- return sess.secret;
47
- }
42
+ const fromManager = opts.session.getCookieSecret?.();
43
+ if (Array.isArray(fromManager)) {
44
+ const first = fromManager[0];
45
+ if (first !== void 0 && first !== "") return first;
46
+ } else if (fromManager !== void 0 && fromManager !== "") {
47
+ return fromManager;
48
48
  }
49
49
  const fromEnv = process.env.THEOKIT_OAUTH_TX_SECRET;
50
50
  if (fromEnv) return fromEnv;
51
51
  if (process.env.NODE_ENV === "production") {
52
- throw new chunk52NKC5HT_cjs.AuthConfigError(
52
+ throw new chunkHUFSABUZ_cjs.AuthConfigError(
53
53
  "missing_tx_secret",
54
54
  "No OAuth transaction secret is configured. Set THEOKIT_OAUTH_TX_SECRET to a 32+ character random value \u2014 e.g. `openssl rand -hex 32`. Refusing to encrypt the transaction cookie with the development fallback, which ships inside this package and protects nothing."
55
55
  );
@@ -58,18 +58,18 @@ function txCookieSecret(opts) {
58
58
  }
59
59
  function defineAuth(opts) {
60
60
  if (!opts.session) {
61
- throw new chunk52NKC5HT_cjs.AuthConfigError("missing_session", "defineAuth({ session }) is required");
61
+ throw new chunkHUFSABUZ_cjs.AuthConfigError("missing_session", "defineAuth({ session }) is required");
62
62
  }
63
63
  const providersMap = /* @__PURE__ */ new Map();
64
64
  for (const provider of opts.providers ?? []) {
65
65
  if (!provider.name || !PROVIDER_NAME_RE.test(provider.name)) {
66
- throw new chunk52NKC5HT_cjs.AuthConfigError(
66
+ throw new chunkHUFSABUZ_cjs.AuthConfigError(
67
67
  "invalid_provider_name",
68
68
  `Provider name must match ${PROVIDER_NAME_RE} (got: '${provider.name}')`
69
69
  );
70
70
  }
71
71
  if (providersMap.has(provider.name)) {
72
- throw new chunk52NKC5HT_cjs.AuthConfigError(
72
+ throw new chunkHUFSABUZ_cjs.AuthConfigError(
73
73
  "duplicate_provider_name",
74
74
  `Duplicate provider name: '${provider.name}'`
75
75
  );
@@ -79,7 +79,7 @@ function defineAuth(opts) {
79
79
  const txSecret = txCookieSecret(opts);
80
80
  function requireProvider(name) {
81
81
  const p = providersMap.get(name);
82
- if (!p) throw new chunk52NKC5HT_cjs.AuthProviderNotFoundError(name);
82
+ if (!p) throw new chunkHUFSABUZ_cjs.AuthProviderNotFoundError(name);
83
83
  return p;
84
84
  }
85
85
  async function startSignIn(providerName, req, startOpts) {
@@ -88,7 +88,7 @@ function defineAuth(opts) {
88
88
  const safeReturnTo = validateReturnTo(startOpts?.returnTo, baseUrl);
89
89
  const state = randomState();
90
90
  const pkceVerifier = generatePkceVerifier();
91
- const tx = chunkB2J4ZMZL_cjs.newTransaction({
91
+ const tx = chunkQWD3CZWE_cjs.newTransaction({
92
92
  state,
93
93
  pkceVerifier,
94
94
  returnTo: safeReturnTo === "/" ? void 0 : safeReturnTo
@@ -96,7 +96,7 @@ function defineAuth(opts) {
96
96
  const authUrl = await provider.createAuthorizationURL(tx);
97
97
  const headers = new Headers();
98
98
  headers.set("Location", authUrl.toString());
99
- const { encodeTransaction, COOKIE_NAME } = await import('../../oauth-transaction-store-BT4GLTLK.cjs');
99
+ const { encodeTransaction, COOKIE_NAME } = await import('../../oauth-transaction-store-SXIE57OD.cjs');
100
100
  const encodedTx = await encodeTransaction(tx, txSecret);
101
101
  headers.set(
102
102
  "Set-Cookie",
@@ -111,23 +111,23 @@ function defineAuth(opts) {
111
111
  if (errorParam) {
112
112
  const errorDescription = url.searchParams.get("error_description") ?? void 0;
113
113
  if (errorParam === "access_denied") {
114
- throw new chunk52NKC5HT_cjs.AuthCancelledError(errorDescription);
114
+ throw new chunkHUFSABUZ_cjs.AuthCancelledError(errorDescription);
115
115
  }
116
- throw new chunk52NKC5HT_cjs.AuthCallbackError(
116
+ throw new chunkHUFSABUZ_cjs.AuthCallbackError(
117
117
  "oauth_provider_error",
118
118
  `Provider returned error: ${errorParam}${errorDescription ? ` (${errorDescription})` : ""}`
119
119
  );
120
120
  }
121
- const tx = await chunkB2J4ZMZL_cjs.getTransaction(req, txSecret);
121
+ const tx = await chunkQWD3CZWE_cjs.getTransaction(req, txSecret);
122
122
  if (!tx) {
123
- throw new chunk52NKC5HT_cjs.AuthCallbackError(
123
+ throw new chunkHUFSABUZ_cjs.AuthCallbackError(
124
124
  "oauth_transaction_expired",
125
125
  "OAuth transaction cookie missing or expired (>10min). Please retry sign-in."
126
126
  );
127
127
  }
128
128
  const queryState = url.searchParams.get("state");
129
129
  if (!queryState || queryState !== tx.state) {
130
- throw new chunk52NKC5HT_cjs.AuthCallbackError(
130
+ throw new chunkHUFSABUZ_cjs.AuthCallbackError(
131
131
  "oauth_state_mismatch",
132
132
  "OAuth state mismatch. Possible CSRF attempt or stale callback."
133
133
  );
@@ -144,7 +144,7 @@ function defineAuth(opts) {
144
144
  } catch {
145
145
  }
146
146
  await opts.session.createSession(res, sessionData);
147
- chunkB2J4ZMZL_cjs.clearTransaction(res);
147
+ chunkQWD3CZWE_cjs.clearTransaction(res);
148
148
  return { session: sessionData, returnTo: tx.returnTo };
149
149
  }
150
150
  async function signIn(profile, providerName, req, res) {
@@ -186,23 +186,23 @@ var Auth = class {
186
186
 
187
187
  Object.defineProperty(exports, "AuthSecretTooShortError", {
188
188
  enumerable: true,
189
- get: function () { return chunkB2J4ZMZL_cjs.AuthSecretTooShortError; }
189
+ get: function () { return chunkQWD3CZWE_cjs.AuthSecretTooShortError; }
190
190
  });
191
191
  Object.defineProperty(exports, "AuthCallbackError", {
192
192
  enumerable: true,
193
- get: function () { return chunk52NKC5HT_cjs.AuthCallbackError; }
193
+ get: function () { return chunkHUFSABUZ_cjs.AuthCallbackError; }
194
194
  });
195
195
  Object.defineProperty(exports, "AuthCancelledError", {
196
196
  enumerable: true,
197
- get: function () { return chunk52NKC5HT_cjs.AuthCancelledError; }
197
+ get: function () { return chunkHUFSABUZ_cjs.AuthCancelledError; }
198
198
  });
199
199
  Object.defineProperty(exports, "AuthConfigError", {
200
200
  enumerable: true,
201
- get: function () { return chunk52NKC5HT_cjs.AuthConfigError; }
201
+ get: function () { return chunkHUFSABUZ_cjs.AuthConfigError; }
202
202
  });
203
203
  Object.defineProperty(exports, "AuthProviderNotFoundError", {
204
204
  enumerable: true,
205
- get: function () { return chunk52NKC5HT_cjs.AuthProviderNotFoundError; }
205
+ get: function () { return chunkHUFSABUZ_cjs.AuthProviderNotFoundError; }
206
206
  });
207
207
  exports.Auth = Auth;
208
208
  exports.validateReturnTo = validateReturnTo;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/server/auth/validate-return-to.ts","../../../src/server/auth/orchestrator.ts"],"names":["webcrypto","AuthConfigError","AuthProviderNotFoundError","newTransaction","AuthCancelledError","AuthCallbackError","getTransaction","clearTransaction"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Clamp a caller-supplied `returnTo` to a same-origin destination, falling back\n * to `'/'` for anything else. This is the open-redirect guard for a post-login\n * redirect (`@theokit/sdk/server/auth`; OWASP A01:2021, v1.1 EC-2). Without it,\n * `/login?returnTo=https://evil.com` would send the freshly authenticated session\n * to an attacker's domain.\n *\n * validateReturnTo(req.query.returnTo, new URL(\"https://app.example.com\"));\n *\n * Pure and synchronous. It never throws and always returns a string:\n * - undefined / empty / whitespace-only `returnTo` -> `'/'`\n * - protocol-relative `//evil.com` -> `'/'` (a browser would resolve it against\n * the current protocol)\n * - absolute URL whose origin differs from `baseUrl.origin` -> `'/'`\n * - absolute URL on `baseUrl.origin` -> its `pathname + search + hash`, with\n * the origin dropped\n * - relative path starting with `'/'` -> kept verbatim\n * - anything else, including `javascript:` and `data:` -> `'/'`\n *\n * `baseUrl` is compared by ORIGIN only (scheme + host + port); its path is\n * ignored, so an app mounted under a sub-path gets no extra containment from it.\n *\n * Trap: this defends the origin, not the route. A same-origin relative path is\n * returned unchanged — `..` segments included, and with no notion of whether the\n * user is allowed there. Authorise the destination separately.\n */\nexport function validateReturnTo(returnTo: string | undefined, baseUrl: URL): string {\n if (!returnTo || typeof returnTo !== \"string\" || returnTo.trim() === \"\") {\n return \"/\";\n }\n\n const trimmed = returnTo.trim();\n\n // Protocol-relative URLs (//evil.com) are dangerous — browser would resolve to current protocol\n if (trimmed.startsWith(\"//\")) {\n return \"/\";\n }\n\n // Try absolute URL parsing first\n if (URL.canParse(trimmed)) {\n const parsed = new URL(trimmed);\n if (parsed.origin === baseUrl.origin) {\n // Same-origin absolute URL — return the pathname+search+hash portion (drop origin)\n return parsed.pathname + parsed.search + parsed.hash;\n }\n // Cross-origin — reject\n return \"/\";\n }\n\n // Not parseable as absolute. Must start with '/' to be a valid relative path\n if (trimmed.startsWith(\"/\")) {\n return trimmed;\n }\n\n // Anything else (e.g., \"javascript:alert\", \"data:...\" that wasn't parseable, or bare strings) → default\n return \"/\";\n}\n","/**\n * DefineAuth orchestrator runtime (Path C Hybrid) — `@theokit/sdk/server/auth`.\n *\n * Plan T1.2 implementation per blueprint Q5 § Path C signatures.\n * Composes existing primitives + the v1.1 EC-1/EC-2/EC-10 fixes.\n */\n\nimport { webcrypto } from \"node:crypto\";\nimport type { IncomingMessage, ServerResponse } from \"node:http\";\nimport {\n AuthCallbackError,\n AuthCancelledError,\n AuthConfigError,\n AuthProviderNotFoundError,\n} from \"./errors.js\";\nimport { clearTransaction, getTransaction, newTransaction } from \"./oauth-transaction-store.js\";\nimport type { AuthOrchestrator, AuthProvider, DefineAuthOptions } from \"./types.js\";\nimport { validateReturnTo } from \"./validate-return-to.js\";\n\nconst PROVIDER_NAME_RE = /^[a-z0-9-]{1,32}$/;\n\nfunction randomState(): string {\n const bytes = webcrypto.getRandomValues(new Uint8Array(24));\n return Buffer.from(bytes).toString(\"base64url\");\n}\n\n/**\n * Generate a PKCE code_verifier per RFC 7636 §4.1 — 43..128 chars from the\n * unreserved set [A-Z][a-z][0-9]-._~ (base64url is a strict subset).\n *\n * 32 random bytes → 43 base64url chars satisfies the minimum. Provided by\n * the orchestrator so every transaction carries one; PKCE-aware providers\n * (Google) consume it; PKCE-ignorant providers (GitHub) discard it.\n */\nfunction generatePkceVerifier(): string {\n const bytes = webcrypto.getRandomValues(new Uint8Array(32));\n return Buffer.from(bytes).toString(\"base64url\");\n}\n\nfunction txCookieSecret<TSession>(opts: DefineAuthOptions<TSession>): string {\n // For T1.2 minimal impl, derive a per-session-manager secret from the\n // SessionManager identity. Production T2+ may refactor to share the\n // SessionManager's actual secret rotation chain via a `getCookieSecret()` method.\n // Falls back to TX_FALLBACK_SECRET when not available — apps should override.\n const sess = opts.session as unknown as { secret?: string | string[] };\n if (sess.secret) {\n if (Array.isArray(sess.secret)) {\n const first = sess.secret[0];\n if (first) return first;\n } else {\n return sess.secret;\n }\n }\n const fromEnv = process.env.THEOKIT_OAUTH_TX_SECRET;\n if (fromEnv) return fromEnv;\n\n // The comment that used to sit here said this fallback \"will fail in production scrutiny —\n // flagged by future audit\". This is that audit, and the fallback is now refused where it matters.\n //\n // The cookie this secret encrypts carries `state` and `pkceVerifier` — the two values that make\n // an authorization-code flow safe against CSRF and code interception. Encrypting them with a\n // constant published inside the package protects nothing from anyone who can read npm.\n //\n // `AuthSecretTooShortError` never caught it: the constant is 48 characters, and that guard checks\n // LENGTH, not provenance.\n //\n // Refused in production only. Blocking it everywhere would break every `pnpm dev`, and the risk\n // is a deployed app rather than a laptop. The branch above (`opts.session.secret`) stays for\n // callers who wire one, though `SessionManager` declares no such field today.\n if (process.env.NODE_ENV === \"production\") {\n throw new AuthConfigError(\n \"missing_tx_secret\",\n \"No OAuth transaction secret is configured. Set THEOKIT_OAUTH_TX_SECRET to a 32+ character \" +\n \"random value — e.g. `openssl rand -hex 32`. Refusing to encrypt the transaction cookie \" +\n \"with the development fallback, which ships inside this package and protects nothing.\",\n );\n }\n return \"DEV_ONLY_INSECURE_OAUTH_TX_SECRET_REPLACE_IN_PROD\";\n}\n\nfunction defineAuth<TSession>(opts: DefineAuthOptions<TSession>): AuthOrchestrator<TSession> {\n // Validate config at define-time (per blueprint Q5 invariants)\n if (!opts.session) {\n throw new AuthConfigError(\"missing_session\", \"defineAuth({ session }) is required\");\n }\n\n const providersMap = new Map<string, AuthProvider<unknown, string>>();\n for (const provider of opts.providers ?? []) {\n if (!provider.name || !PROVIDER_NAME_RE.test(provider.name)) {\n throw new AuthConfigError(\n \"invalid_provider_name\",\n `Provider name must match ${PROVIDER_NAME_RE} (got: '${provider.name}')`,\n );\n }\n if (providersMap.has(provider.name)) {\n throw new AuthConfigError(\n \"duplicate_provider_name\",\n `Duplicate provider name: '${provider.name}'`,\n );\n }\n providersMap.set(provider.name, provider);\n }\n\n const txSecret = txCookieSecret(opts);\n\n function requireProvider(name: string): AuthProvider<unknown, string> {\n const p = providersMap.get(name);\n if (!p) throw new AuthProviderNotFoundError(name);\n return p;\n }\n\n async function startSignIn(\n providerName: string,\n req: IncomingMessage,\n startOpts?: { returnTo?: string },\n ): Promise<Response> {\n const provider = requireProvider(providerName);\n\n // EC-2 (v1.1) — validate returnTo same-origin\n const baseUrl = new URL(`http://${req.headers.host ?? \"localhost\"}${req.url ?? \"/\"}`);\n const safeReturnTo = validateReturnTo(startOpts?.returnTo, baseUrl);\n\n // Generate transaction. Always include a PKCE verifier — PKCE-aware\n // providers (Google OIDC) consume it; PKCE-ignorant providers (GitHub\n // OAuth 2.0) discard it. Generating unconditionally simplifies the\n // provider contract: every tx is PKCE-ready.\n const state = randomState();\n const pkceVerifier = generatePkceVerifier();\n const tx = newTransaction({\n state,\n pkceVerifier,\n returnTo: safeReturnTo === \"/\" ? undefined : safeReturnTo,\n });\n\n // Persist transaction cookie via headers (since we return Response, need Set-Cookie header manually)\n const authUrl = await provider.createAuthorizationURL(tx);\n\n // Build response with Set-Cookie + redirect\n const headers = new Headers();\n headers.set(\"Location\", authUrl.toString());\n const { encodeTransaction, COOKIE_NAME } = await import(\"./oauth-transaction-store.js\");\n const encodedTx = await encodeTransaction(tx, txSecret);\n // COOKIE_NAME, never a literal: this header used to be written by hand as `theo_oauth_tx=`,\n // while the store reads the `__Host-` prefixed name — so `finishSignIn` never found the cookie\n // and every sign-in failed at the callback. One constant, one name.\n //\n // The `__Host-` prefix requires exactly what is set below: `Secure`, `Path=/`, and NO `Domain`.\n headers.set(\n \"Set-Cookie\",\n `${COOKIE_NAME}=${encodedTx}; HttpOnly; Secure; SameSite=Lax; Path=/; Max-Age=600`,\n );\n\n return new Response(null, { status: 302, headers });\n }\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: OAuth callback handler must validate 6 distinct error conditions sequentially (provider error / state / tx fetch / PKCE / code exchange / session) — extracting helpers fragments the linear control flow without clarifying intent (per EC-1 v1.1 absorbed)\n async function finishSignIn(\n providerName: string,\n req: IncomingMessage,\n res: ServerResponse,\n ): Promise<{ session: TSession; returnTo?: string }> {\n const provider = requireProvider(providerName);\n\n // EC-1 (v1.1) — OAuth provider error response (user declined consent) check BEFORE code-exchange\n const url = new URL(`http://${req.headers.host ?? \"localhost\"}${req.url ?? \"/\"}`);\n const errorParam = url.searchParams.get(\"error\");\n if (errorParam) {\n const errorDescription = url.searchParams.get(\"error_description\") ?? undefined;\n if (errorParam === \"access_denied\") {\n throw new AuthCancelledError(errorDescription);\n }\n throw new AuthCallbackError(\n \"oauth_provider_error\",\n `Provider returned error: ${errorParam}${errorDescription ? ` (${errorDescription})` : \"\"}`,\n );\n }\n\n // Read + validate transaction cookie\n const tx = await getTransaction(req, txSecret);\n if (!tx) {\n throw new AuthCallbackError(\n \"oauth_transaction_expired\",\n \"OAuth transaction cookie missing or expired (>10min). Please retry sign-in.\",\n );\n }\n\n // Verify state matches query param (CSRF defense per RFC 6749 §10.12)\n const queryState = url.searchParams.get(\"state\");\n if (!queryState || queryState !== tx.state) {\n throw new AuthCallbackError(\n \"oauth_state_mismatch\",\n \"OAuth state mismatch. Possible CSRF attempt or stale callback.\",\n );\n }\n\n // Provider-specific callback handling (token exchange + userinfo fetch)\n const result = await provider.handleCallback(req, tx);\n\n // Invoke onSignIn callback if defined to derive session shape\n let sessionData: TSession;\n if (opts.onSignIn) {\n sessionData = await opts.onSignIn({ profile: result.profile, provider: result.providerName });\n } else {\n // No onSignIn — pass the raw profile as session (consumers must type their own TSession)\n sessionData = result.profile as unknown as TSession;\n }\n\n // EC-10 (v1.1) — OWASP A07:2021 session fixation mitigation: rotate session ID BEFORE creating new session\n try {\n await opts.session.rotateSession(req, res);\n } catch {\n // rotateSession may no-op if no pre-existing session — non-fatal\n }\n\n // Create session cookie\n await opts.session.createSession(res, sessionData);\n\n // Clear transaction cookie\n clearTransaction(res);\n\n return { session: sessionData, returnTo: tx.returnTo };\n }\n\n async function signIn<TProfile>(\n profile: TProfile,\n providerName: string,\n req: IncomingMessage,\n res: ServerResponse,\n ): Promise<TSession> {\n // Path A escape hatch — skip OAuth flow, directly derive + persist session\n let sessionData: TSession;\n if (opts.onSignIn) {\n sessionData = await opts.onSignIn({ profile, provider: providerName });\n } else {\n sessionData = profile as unknown as TSession;\n }\n\n try {\n await opts.session.rotateSession(req, res);\n } catch {\n /* no-op if no pre-existing session */\n }\n\n await opts.session.createSession(res, sessionData);\n return sessionData;\n }\n\n async function signOut(res: ServerResponse): Promise<void> {\n // Read current session before destroying (so onSignOut can see it)\n let sessionData: TSession | null = null;\n if (opts.onSignOut) {\n // We don't have req here per AuthOrchestrator contract; onSignOut receives null\n // when no pre-existing session is available. Apps that need session-aware\n // signOut should use the manual session.destroySession + custom logic.\n sessionData = null;\n }\n\n opts.session.destroySession(res);\n\n if (opts.onSignOut) {\n await opts.onSignOut(sessionData);\n }\n }\n\n async function getSession(req: IncomingMessage): Promise<TSession | null> {\n return opts.session.getSession(req);\n }\n\n return { startSignIn, finishSignIn, signIn, signOut, getSession };\n}\n\n/** SE36 — `Auth.create` replaces `defineAuth` (ADR 0015). @public */\nexport class Auth {\n private constructor() {}\n static create<TSession>(opts: DefineAuthOptions<TSession>): AuthOrchestrator<TSession> {\n return defineAuth(opts);\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../src/server/auth/validate-return-to.ts","../../../src/server/auth/orchestrator.ts"],"names":["webcrypto","AuthConfigError","AuthProviderNotFoundError","newTransaction","AuthCancelledError","AuthCallbackError","getTransaction","clearTransaction"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Clamp a caller-supplied `returnTo` to a same-origin destination, falling back\n * to `'/'` for anything else. This is the open-redirect guard for a post-login\n * redirect (`@theokit/sdk/server/auth`; OWASP A01:2021, v1.1 EC-2). Without it,\n * `/login?returnTo=https://evil.com` would send the freshly authenticated session\n * to an attacker's domain.\n *\n * validateReturnTo(req.query.returnTo, new URL(\"https://app.example.com\"));\n *\n * Pure and synchronous. It never throws and always returns a string:\n * - undefined / empty / whitespace-only `returnTo` -> `'/'`\n * - protocol-relative `//evil.com` -> `'/'` (a browser would resolve it against\n * the current protocol)\n * - absolute URL whose origin differs from `baseUrl.origin` -> `'/'`\n * - absolute URL on `baseUrl.origin` -> its `pathname + search + hash`, with\n * the origin dropped\n * - relative path starting with `'/'` -> kept verbatim\n * - anything else, including `javascript:` and `data:` -> `'/'`\n *\n * `baseUrl` is compared by ORIGIN only (scheme + host + port); its path is\n * ignored, so an app mounted under a sub-path gets no extra containment from it.\n *\n * Trap: this defends the origin, not the route. A same-origin relative path is\n * returned unchanged — `..` segments included, and with no notion of whether the\n * user is allowed there. Authorise the destination separately.\n */\nexport function validateReturnTo(returnTo: string | undefined, baseUrl: URL): string {\n if (!returnTo || typeof returnTo !== \"string\" || returnTo.trim() === \"\") {\n return \"/\";\n }\n\n const trimmed = returnTo.trim();\n\n // Protocol-relative URLs (//evil.com) are dangerous — browser would resolve to current protocol\n if (trimmed.startsWith(\"//\")) {\n return \"/\";\n }\n\n // Try absolute URL parsing first\n if (URL.canParse(trimmed)) {\n const parsed = new URL(trimmed);\n if (parsed.origin === baseUrl.origin) {\n // Same-origin absolute URL — return the pathname+search+hash portion (drop origin)\n return parsed.pathname + parsed.search + parsed.hash;\n }\n // Cross-origin — reject\n return \"/\";\n }\n\n // Not parseable as absolute. Must start with '/' to be a valid relative path\n if (trimmed.startsWith(\"/\")) {\n return trimmed;\n }\n\n // Anything else (e.g., \"javascript:alert\", \"data:...\" that wasn't parseable, or bare strings) → default\n return \"/\";\n}\n","/**\n * DefineAuth orchestrator runtime (Path C Hybrid) — `@theokit/sdk/server/auth`.\n *\n * Plan T1.2 implementation per blueprint Q5 § Path C signatures.\n * Composes existing primitives + the v1.1 EC-1/EC-2/EC-10 fixes.\n */\n\nimport { webcrypto } from \"node:crypto\";\nimport type { IncomingMessage, ServerResponse } from \"node:http\";\nimport {\n AuthCallbackError,\n AuthCancelledError,\n AuthConfigError,\n AuthProviderNotFoundError,\n} from \"./errors.js\";\nimport { clearTransaction, getTransaction, newTransaction } from \"./oauth-transaction-store.js\";\nimport type { AuthOrchestrator, AuthProvider, DefineAuthOptions } from \"./types.js\";\nimport { validateReturnTo } from \"./validate-return-to.js\";\n\nconst PROVIDER_NAME_RE = /^[a-z0-9-]{1,32}$/;\n\nfunction randomState(): string {\n const bytes = webcrypto.getRandomValues(new Uint8Array(24));\n return Buffer.from(bytes).toString(\"base64url\");\n}\n\n/**\n * Generate a PKCE code_verifier per RFC 7636 §4.1 — 43..128 chars from the\n * unreserved set [A-Z][a-z][0-9]-._~ (base64url is a strict subset).\n *\n * 32 random bytes → 43 base64url chars satisfies the minimum. Provided by\n * the orchestrator so every transaction carries one; PKCE-aware providers\n * (Google) consume it; PKCE-ignorant providers (GitHub) discard it.\n */\nfunction generatePkceVerifier(): string {\n const bytes = webcrypto.getRandomValues(new Uint8Array(32));\n return Buffer.from(bytes).toString(\"base64url\");\n}\n\nfunction txCookieSecret<TSession>(opts: DefineAuthOptions<TSession>): string {\n // Read through the PORT. This was `opts.session as unknown as { secret?: string | string[] }` —\n // and `as unknown as` is the tell: TypeScript would have refused the property access, so the code\n // asserted a shape `SessionManager` does not offer. No conforming caller could reach the branch,\n // nothing in src/ supplied the field, and it was green only because a test double carried one. The\n // comment that stood here said this code WANTED a `getCookieSecret()` method; `SessionManager` now\n // declares it, optional and additive, so the branch is reachable through the contract and the\n // double conforms rather than the code conforming to the double.\n const fromManager = opts.session.getCookieSecret?.();\n if (Array.isArray(fromManager)) {\n // First entry encrypts; the rest exist to verify cookies written before the last rotation.\n const first = fromManager[0];\n if (first !== undefined && first !== \"\") return first;\n } else if (fromManager !== undefined && fromManager !== \"\") {\n return fromManager;\n }\n const fromEnv = process.env.THEOKIT_OAUTH_TX_SECRET;\n if (fromEnv) return fromEnv;\n\n // The comment that used to sit here said this fallback \"will fail in production scrutiny —\n // flagged by future audit\". This is that audit, and the fallback is now refused where it matters.\n //\n // The cookie this secret encrypts carries `state` and `pkceVerifier` — the two values that make\n // an authorization-code flow safe against CSRF and code interception. Encrypting them with a\n // constant published inside the package protects nothing from anyone who can read npm.\n //\n // `AuthSecretTooShortError` never caught it: the constant is 48 characters, and that guard checks\n // LENGTH, not provenance.\n //\n // Refused in production only. Blocking it everywhere would break every `pnpm dev`, and the risk\n // is a deployed app rather than a laptop. The branch above (`opts.session.secret`) stays for\n // callers who wire one, though `SessionManager` declares no such field today.\n if (process.env.NODE_ENV === \"production\") {\n throw new AuthConfigError(\n \"missing_tx_secret\",\n \"No OAuth transaction secret is configured. Set THEOKIT_OAUTH_TX_SECRET to a 32+ character \" +\n \"random value — e.g. `openssl rand -hex 32`. Refusing to encrypt the transaction cookie \" +\n \"with the development fallback, which ships inside this package and protects nothing.\",\n );\n }\n return \"DEV_ONLY_INSECURE_OAUTH_TX_SECRET_REPLACE_IN_PROD\";\n}\n\nfunction defineAuth<TSession>(opts: DefineAuthOptions<TSession>): AuthOrchestrator<TSession> {\n // Validate config at define-time (per blueprint Q5 invariants)\n if (!opts.session) {\n throw new AuthConfigError(\"missing_session\", \"defineAuth({ session }) is required\");\n }\n\n const providersMap = new Map<string, AuthProvider<unknown, string>>();\n for (const provider of opts.providers ?? []) {\n if (!provider.name || !PROVIDER_NAME_RE.test(provider.name)) {\n throw new AuthConfigError(\n \"invalid_provider_name\",\n `Provider name must match ${PROVIDER_NAME_RE} (got: '${provider.name}')`,\n );\n }\n if (providersMap.has(provider.name)) {\n throw new AuthConfigError(\n \"duplicate_provider_name\",\n `Duplicate provider name: '${provider.name}'`,\n );\n }\n providersMap.set(provider.name, provider);\n }\n\n const txSecret = txCookieSecret(opts);\n\n function requireProvider(name: string): AuthProvider<unknown, string> {\n const p = providersMap.get(name);\n if (!p) throw new AuthProviderNotFoundError(name);\n return p;\n }\n\n async function startSignIn(\n providerName: string,\n req: IncomingMessage,\n startOpts?: { returnTo?: string },\n ): Promise<Response> {\n const provider = requireProvider(providerName);\n\n // EC-2 (v1.1) — validate returnTo same-origin\n const baseUrl = new URL(`http://${req.headers.host ?? \"localhost\"}${req.url ?? \"/\"}`);\n const safeReturnTo = validateReturnTo(startOpts?.returnTo, baseUrl);\n\n // Generate transaction. Always include a PKCE verifier — PKCE-aware\n // providers (Google OIDC) consume it; PKCE-ignorant providers (GitHub\n // OAuth 2.0) discard it. Generating unconditionally simplifies the\n // provider contract: every tx is PKCE-ready.\n const state = randomState();\n const pkceVerifier = generatePkceVerifier();\n const tx = newTransaction({\n state,\n pkceVerifier,\n returnTo: safeReturnTo === \"/\" ? undefined : safeReturnTo,\n });\n\n // Persist transaction cookie via headers (since we return Response, need Set-Cookie header manually)\n const authUrl = await provider.createAuthorizationURL(tx);\n\n // Build response with Set-Cookie + redirect\n const headers = new Headers();\n headers.set(\"Location\", authUrl.toString());\n const { encodeTransaction, COOKIE_NAME } = await import(\"./oauth-transaction-store.js\");\n const encodedTx = await encodeTransaction(tx, txSecret);\n // COOKIE_NAME, never a literal: this header used to be written by hand as `theo_oauth_tx=`,\n // while the store reads the `__Host-` prefixed name — so `finishSignIn` never found the cookie\n // and every sign-in failed at the callback. One constant, one name.\n //\n // The `__Host-` prefix requires exactly what is set below: `Secure`, `Path=/`, and NO `Domain`.\n headers.set(\n \"Set-Cookie\",\n `${COOKIE_NAME}=${encodedTx}; HttpOnly; Secure; SameSite=Lax; Path=/; Max-Age=600`,\n );\n\n return new Response(null, { status: 302, headers });\n }\n\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: OAuth callback handler must validate 6 distinct error conditions sequentially (provider error / state / tx fetch / PKCE / code exchange / session) — extracting helpers fragments the linear control flow without clarifying intent (per EC-1 v1.1 absorbed)\n async function finishSignIn(\n providerName: string,\n req: IncomingMessage,\n res: ServerResponse,\n ): Promise<{ session: TSession; returnTo?: string }> {\n const provider = requireProvider(providerName);\n\n // EC-1 (v1.1) — OAuth provider error response (user declined consent) check BEFORE code-exchange\n const url = new URL(`http://${req.headers.host ?? \"localhost\"}${req.url ?? \"/\"}`);\n const errorParam = url.searchParams.get(\"error\");\n if (errorParam) {\n const errorDescription = url.searchParams.get(\"error_description\") ?? undefined;\n if (errorParam === \"access_denied\") {\n throw new AuthCancelledError(errorDescription);\n }\n throw new AuthCallbackError(\n \"oauth_provider_error\",\n `Provider returned error: ${errorParam}${errorDescription ? ` (${errorDescription})` : \"\"}`,\n );\n }\n\n // Read + validate transaction cookie\n const tx = await getTransaction(req, txSecret);\n if (!tx) {\n throw new AuthCallbackError(\n \"oauth_transaction_expired\",\n \"OAuth transaction cookie missing or expired (>10min). Please retry sign-in.\",\n );\n }\n\n // Verify state matches query param (CSRF defense per RFC 6749 §10.12)\n const queryState = url.searchParams.get(\"state\");\n if (!queryState || queryState !== tx.state) {\n throw new AuthCallbackError(\n \"oauth_state_mismatch\",\n \"OAuth state mismatch. Possible CSRF attempt or stale callback.\",\n );\n }\n\n // Provider-specific callback handling (token exchange + userinfo fetch)\n const result = await provider.handleCallback(req, tx);\n\n // Invoke onSignIn callback if defined to derive session shape\n let sessionData: TSession;\n if (opts.onSignIn) {\n sessionData = await opts.onSignIn({ profile: result.profile, provider: result.providerName });\n } else {\n // No onSignIn — pass the raw profile as session (consumers must type their own TSession)\n sessionData = result.profile as unknown as TSession;\n }\n\n // EC-10 (v1.1) — OWASP A07:2021 session fixation mitigation: rotate session ID BEFORE creating new session\n try {\n await opts.session.rotateSession(req, res);\n } catch {\n // rotateSession may no-op if no pre-existing session — non-fatal\n }\n\n // Create session cookie\n await opts.session.createSession(res, sessionData);\n\n // Clear transaction cookie\n clearTransaction(res);\n\n return { session: sessionData, returnTo: tx.returnTo };\n }\n\n async function signIn<TProfile>(\n profile: TProfile,\n providerName: string,\n req: IncomingMessage,\n res: ServerResponse,\n ): Promise<TSession> {\n // Path A escape hatch — skip OAuth flow, directly derive + persist session\n let sessionData: TSession;\n if (opts.onSignIn) {\n sessionData = await opts.onSignIn({ profile, provider: providerName });\n } else {\n sessionData = profile as unknown as TSession;\n }\n\n try {\n await opts.session.rotateSession(req, res);\n } catch {\n /* no-op if no pre-existing session */\n }\n\n await opts.session.createSession(res, sessionData);\n return sessionData;\n }\n\n async function signOut(res: ServerResponse): Promise<void> {\n // Read current session before destroying (so onSignOut can see it)\n let sessionData: TSession | null = null;\n if (opts.onSignOut) {\n // We don't have req here per AuthOrchestrator contract; onSignOut receives null\n // when no pre-existing session is available. Apps that need session-aware\n // signOut should use the manual session.destroySession + custom logic.\n sessionData = null;\n }\n\n opts.session.destroySession(res);\n\n if (opts.onSignOut) {\n await opts.onSignOut(sessionData);\n }\n }\n\n async function getSession(req: IncomingMessage): Promise<TSession | null> {\n return opts.session.getSession(req);\n }\n\n return { startSignIn, finishSignIn, signIn, signOut, getSession };\n}\n\n/** SE36 — `Auth.create` replaces `defineAuth` (ADR 0015). @public *\n * `Auth.create` returns an **`AuthOrchestrator<TSession>`**, not an `Auth`. The class is\n * the namespace; the orchestrator is the product.\n */\nexport class Auth {\n private constructor() {}\n static create<TSession>(opts: DefineAuthOptions<TSession>): AuthOrchestrator<TSession> {\n return defineAuth(opts);\n }\n}\n\n/**\n * Test seam over {@link txCookieSecret}.\n *\n * Exported so the resolution order can be exercised through a CONFORMING `SessionManager` — the\n * point of the change that introduced `getCookieSecret`. Without a seam the only way to reach it is\n * a full `defineAuth` round trip, which is what let the previous version go untested through the\n * port and tested only through a cast.\n *\n * @internal\n */\nexport function _txCookieSecretForTests<TSession>(\n opts: Pick<DefineAuthOptions<TSession>, \"session\">,\n): string {\n return txCookieSecret(opts as DefineAuthOptions<TSession>);\n}\n"]}
@@ -1,3 +1,4 @@
1
+ import { T as TheokitAgentError } from '../../errors-base-B5g01neU.cjs';
1
2
  import { IncomingMessage, ServerResponse } from 'node:http';
2
3
 
3
4
  /**
@@ -5,11 +6,12 @@ import { IncomingMessage, ServerResponse } from 'node:http';
5
6
  *
6
7
  * Plan T1.2 + v1.1 EC-1 (AuthCancelledError for OAuth provider error response RFC 6749 §4.1.2.1).
7
8
  */
9
+
8
10
  /**
9
11
  * Thrown at `defineAuth()` time when configuration is invalid
10
12
  * (e.g., duplicate provider name, invalid email shape per EC-V1-12).
11
13
  */
12
- declare class AuthConfigError extends Error {
14
+ declare class AuthConfigError extends TheokitAgentError {
13
15
  readonly name = "AuthConfigError";
14
16
  readonly code: string;
15
17
  constructor(code: string, message: string);
@@ -18,7 +20,7 @@ declare class AuthConfigError extends Error {
18
20
  * Thrown at `startSignIn(providerName, ...)` or `finishSignIn(providerName, ...)`
19
21
  * when the named provider is not registered in `providers[]`.
20
22
  */
21
- declare class AuthProviderNotFoundError extends Error {
23
+ declare class AuthProviderNotFoundError extends TheokitAgentError {
22
24
  readonly name = "AuthProviderNotFoundError";
23
25
  readonly providerName: string;
24
26
  constructor(providerName: string);
@@ -35,7 +37,7 @@ declare class AuthProviderNotFoundError extends Error {
35
37
  * - 'oauth_userinfo_failed' — userinfo endpoint returned error
36
38
  * - 'oauth_missing_code_or_state' — required query params absent
37
39
  */
38
- declare class AuthCallbackError extends Error {
40
+ declare class AuthCallbackError extends TheokitAgentError {
39
41
  readonly name: string;
40
42
  readonly code: string;
41
43
  constructor(code: string, message?: string);
@@ -73,6 +75,24 @@ interface SessionManager<TSession> {
73
75
  createSession(res: ServerResponse, data: TSession): Promise<void>;
74
76
  destroySession(res: ServerResponse): void;
75
77
  rotateSession(req: IncomingMessage, res: ServerResponse): Promise<TSession | null>;
78
+ /**
79
+ * The secret used to encrypt the OAuth transaction cookie, when this manager has one to share.
80
+ *
81
+ * OPTIONAL and additive: a manager without it makes `defineAuth` fall back to
82
+ * `THEOKIT_OAUTH_TX_SECRET`, which is the behaviour that already existed.
83
+ *
84
+ * It exists because the orchestrator was reading `session.secret` through
85
+ * `as unknown as { secret?: string | string[] }` — asserting a shape this contract did not offer,
86
+ * so no conforming caller could reach the branch and nothing in `src/` supplied it. The branch was
87
+ * green only because a test double carried the field. `orchestrator.ts` said in a comment that it
88
+ * WANTED this member ("may refactor to share the SessionManager's actual secret rotation chain via
89
+ * a `getCookieSecret()` method"); declaring it is what makes the branch reachable through the port
90
+ * and the double conform instead of the reverse.
91
+ *
92
+ * An array is accepted for rotation: the first entry encrypts, and the rest are for verifying
93
+ * cookies written before the last rotation.
94
+ */
95
+ getCookieSecret?(): string | string[] | undefined;
76
96
  }
77
97
  /**
78
98
  * Per ADR D5 — OAuth transaction state stored in encrypted HttpOnly cookie
@@ -172,7 +192,7 @@ interface AuthOrchestrator<TSession> {
172
192
  *
173
193
  * @public
174
194
  */
175
- declare class AuthSecretTooShortError extends Error {
195
+ declare class AuthSecretTooShortError extends TheokitAgentError {
176
196
  readonly name = "AuthSecretTooShortError";
177
197
  constructor(actualBytes: number);
178
198
  }
@@ -184,7 +204,10 @@ declare class AuthSecretTooShortError extends Error {
184
204
  * Composes existing primitives + the v1.1 EC-1/EC-2/EC-10 fixes.
185
205
  */
186
206
 
187
- /** SE36 — `Auth.create` replaces `defineAuth` (ADR 0015). @public */
207
+ /** SE36 — `Auth.create` replaces `defineAuth` (ADR 0015). @public *
208
+ * `Auth.create` returns an **`AuthOrchestrator<TSession>`**, not an `Auth`. The class is
209
+ * the namespace; the orchestrator is the product.
210
+ */
188
211
  declare class Auth {
189
212
  private constructor();
190
213
  static create<TSession>(opts: DefineAuthOptions<TSession>): AuthOrchestrator<TSession>;
@@ -1,3 +1,4 @@
1
+ import { T as TheokitAgentError } from '../../errors-base-B5g01neU.js';
1
2
  import { IncomingMessage, ServerResponse } from 'node:http';
2
3
 
3
4
  /**
@@ -5,11 +6,12 @@ import { IncomingMessage, ServerResponse } from 'node:http';
5
6
  *
6
7
  * Plan T1.2 + v1.1 EC-1 (AuthCancelledError for OAuth provider error response RFC 6749 §4.1.2.1).
7
8
  */
9
+
8
10
  /**
9
11
  * Thrown at `defineAuth()` time when configuration is invalid
10
12
  * (e.g., duplicate provider name, invalid email shape per EC-V1-12).
11
13
  */
12
- declare class AuthConfigError extends Error {
14
+ declare class AuthConfigError extends TheokitAgentError {
13
15
  readonly name = "AuthConfigError";
14
16
  readonly code: string;
15
17
  constructor(code: string, message: string);
@@ -18,7 +20,7 @@ declare class AuthConfigError extends Error {
18
20
  * Thrown at `startSignIn(providerName, ...)` or `finishSignIn(providerName, ...)`
19
21
  * when the named provider is not registered in `providers[]`.
20
22
  */
21
- declare class AuthProviderNotFoundError extends Error {
23
+ declare class AuthProviderNotFoundError extends TheokitAgentError {
22
24
  readonly name = "AuthProviderNotFoundError";
23
25
  readonly providerName: string;
24
26
  constructor(providerName: string);
@@ -35,7 +37,7 @@ declare class AuthProviderNotFoundError extends Error {
35
37
  * - 'oauth_userinfo_failed' — userinfo endpoint returned error
36
38
  * - 'oauth_missing_code_or_state' — required query params absent
37
39
  */
38
- declare class AuthCallbackError extends Error {
40
+ declare class AuthCallbackError extends TheokitAgentError {
39
41
  readonly name: string;
40
42
  readonly code: string;
41
43
  constructor(code: string, message?: string);
@@ -73,6 +75,24 @@ interface SessionManager<TSession> {
73
75
  createSession(res: ServerResponse, data: TSession): Promise<void>;
74
76
  destroySession(res: ServerResponse): void;
75
77
  rotateSession(req: IncomingMessage, res: ServerResponse): Promise<TSession | null>;
78
+ /**
79
+ * The secret used to encrypt the OAuth transaction cookie, when this manager has one to share.
80
+ *
81
+ * OPTIONAL and additive: a manager without it makes `defineAuth` fall back to
82
+ * `THEOKIT_OAUTH_TX_SECRET`, which is the behaviour that already existed.
83
+ *
84
+ * It exists because the orchestrator was reading `session.secret` through
85
+ * `as unknown as { secret?: string | string[] }` — asserting a shape this contract did not offer,
86
+ * so no conforming caller could reach the branch and nothing in `src/` supplied it. The branch was
87
+ * green only because a test double carried the field. `orchestrator.ts` said in a comment that it
88
+ * WANTED this member ("may refactor to share the SessionManager's actual secret rotation chain via
89
+ * a `getCookieSecret()` method"); declaring it is what makes the branch reachable through the port
90
+ * and the double conform instead of the reverse.
91
+ *
92
+ * An array is accepted for rotation: the first entry encrypts, and the rest are for verifying
93
+ * cookies written before the last rotation.
94
+ */
95
+ getCookieSecret?(): string | string[] | undefined;
76
96
  }
77
97
  /**
78
98
  * Per ADR D5 — OAuth transaction state stored in encrypted HttpOnly cookie
@@ -172,7 +192,7 @@ interface AuthOrchestrator<TSession> {
172
192
  *
173
193
  * @public
174
194
  */
175
- declare class AuthSecretTooShortError extends Error {
195
+ declare class AuthSecretTooShortError extends TheokitAgentError {
176
196
  readonly name = "AuthSecretTooShortError";
177
197
  constructor(actualBytes: number);
178
198
  }
@@ -184,7 +204,10 @@ declare class AuthSecretTooShortError extends Error {
184
204
  * Composes existing primitives + the v1.1 EC-1/EC-2/EC-10 fixes.
185
205
  */
186
206
 
187
- /** SE36 — `Auth.create` replaces `defineAuth` (ADR 0015). @public */
207
+ /** SE36 — `Auth.create` replaces `defineAuth` (ADR 0015). @public *
208
+ * `Auth.create` returns an **`AuthOrchestrator<TSession>`**, not an `Auth`. The class is
209
+ * the namespace; the orchestrator is the product.
210
+ */
188
211
  declare class Auth {
189
212
  private constructor();
190
213
  static create<TSession>(opts: DefineAuthOptions<TSession>): AuthOrchestrator<TSession>;
@@ -1,7 +1,9 @@
1
- import { getTransaction, clearTransaction, newTransaction } from '../../chunk-AWO27VRZ.js';
2
- export { AuthSecretTooShortError } from '../../chunk-AWO27VRZ.js';
3
- import { AuthConfigError, AuthCancelledError, AuthCallbackError, AuthProviderNotFoundError } from '../../chunk-3OR54XG4.js';
4
- export { AuthCallbackError, AuthCancelledError, AuthConfigError, AuthProviderNotFoundError } from '../../chunk-3OR54XG4.js';
1
+ import { getTransaction, clearTransaction, newTransaction } from '../../chunk-DMRT67Y6.js';
2
+ export { AuthSecretTooShortError } from '../../chunk-DMRT67Y6.js';
3
+ import { AuthConfigError, AuthCancelledError, AuthCallbackError, AuthProviderNotFoundError } from '../../chunk-NJWYQWDL.js';
4
+ export { AuthCallbackError, AuthCancelledError, AuthConfigError, AuthProviderNotFoundError } from '../../chunk-NJWYQWDL.js';
5
+ import '../../chunk-ALUN2B4W.js';
6
+ import '../../chunk-CZJ6Q7CW.js';
5
7
  import { webcrypto } from 'crypto';
6
8
 
7
9
  // src/server/auth/validate-return-to.ts
@@ -37,14 +39,12 @@ function generatePkceVerifier() {
37
39
  return Buffer.from(bytes).toString("base64url");
38
40
  }
39
41
  function txCookieSecret(opts) {
40
- const sess = opts.session;
41
- if (sess.secret) {
42
- if (Array.isArray(sess.secret)) {
43
- const first = sess.secret[0];
44
- if (first) return first;
45
- } else {
46
- return sess.secret;
47
- }
42
+ const fromManager = opts.session.getCookieSecret?.();
43
+ if (Array.isArray(fromManager)) {
44
+ const first = fromManager[0];
45
+ if (first !== void 0 && first !== "") return first;
46
+ } else if (fromManager !== void 0 && fromManager !== "") {
47
+ return fromManager;
48
48
  }
49
49
  const fromEnv = process.env.THEOKIT_OAUTH_TX_SECRET;
50
50
  if (fromEnv) return fromEnv;
@@ -96,7 +96,7 @@ function defineAuth(opts) {
96
96
  const authUrl = await provider.createAuthorizationURL(tx);
97
97
  const headers = new Headers();
98
98
  headers.set("Location", authUrl.toString());
99
- const { encodeTransaction, COOKIE_NAME } = await import('../../oauth-transaction-store-W52KVHQ4.js');
99
+ const { encodeTransaction, COOKIE_NAME } = await import('../../oauth-transaction-store-5RIR6D5C.js');
100
100
  const encodedTx = await encodeTransaction(tx, txSecret);
101
101
  headers.set(
102
102
  "Set-Cookie",