@theokit/sdk 5.7.0 → 5.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (355) hide show
  1. package/CHANGELOG.md +77 -0
  2. package/dist/a2a/index.cjs +6 -6
  3. package/dist/a2a/index.js +2 -2
  4. package/dist/agent-6STOEBGQ.js +59 -0
  5. package/dist/{agent-EQ5HKTWV.js.map → agent-6STOEBGQ.js.map} +1 -1
  6. package/dist/{agent-Dya5SmhY.d.cts → agent-Dh2YHSLj.d.cts} +33 -3
  7. package/dist/agent-ZM4FDDL7.cjs +68 -0
  8. package/dist/{agent-KA63WDQH.cjs.map → agent-ZM4FDDL7.cjs.map} +1 -1
  9. package/dist/{agent-Bqzdhkqr.d.ts → agent-enXXu447.d.ts} +33 -3
  10. package/dist/auth/index.cjs +32 -32
  11. package/dist/auth/index.js +5 -5
  12. package/dist/{batch-US4F6WPK.js → batch-427O54FQ.js} +7 -7
  13. package/dist/{batch-US4F6WPK.js.map → batch-427O54FQ.js.map} +1 -1
  14. package/dist/{batch-I6T6MXZO.cjs → batch-U4SO4RLX.cjs} +24 -24
  15. package/dist/{batch-I6T6MXZO.cjs.map → batch-U4SO4RLX.cjs.map} +1 -1
  16. package/dist/{chunk-44I6UYVH.js → chunk-26NEAJ6T.js} +4 -4
  17. package/dist/{chunk-44I6UYVH.js.map → chunk-26NEAJ6T.js.map} +1 -1
  18. package/dist/{chunk-A6PDYH55.js → chunk-4QCJAJAG.js} +2 -2
  19. package/dist/chunk-4QCJAJAG.js.map +1 -0
  20. package/dist/{chunk-XYFGKVZ7.js → chunk-53RDNK3H.js} +3 -3
  21. package/dist/{chunk-XYFGKVZ7.js.map → chunk-53RDNK3H.js.map} +1 -1
  22. package/dist/{chunk-CZWN4C6A.js → chunk-5522X223.js} +3 -3
  23. package/dist/{chunk-CZWN4C6A.js.map → chunk-5522X223.js.map} +1 -1
  24. package/dist/{chunk-EH6XD3FY.js → chunk-5DD4NJN3.js} +3 -3
  25. package/dist/{chunk-EH6XD3FY.js.map → chunk-5DD4NJN3.js.map} +1 -1
  26. package/dist/{chunk-V22DZIXO.js → chunk-5Q4RTLMP.js} +3 -3
  27. package/dist/{chunk-V22DZIXO.js.map → chunk-5Q4RTLMP.js.map} +1 -1
  28. package/dist/{chunk-ER5BOIYD.cjs → chunk-5WR33BHA.cjs} +22 -22
  29. package/dist/{chunk-ER5BOIYD.cjs.map → chunk-5WR33BHA.cjs.map} +1 -1
  30. package/dist/{chunk-4A3SKJ53.cjs → chunk-6PB5AQCY.cjs} +14 -14
  31. package/dist/{chunk-4A3SKJ53.cjs.map → chunk-6PB5AQCY.cjs.map} +1 -1
  32. package/dist/{chunk-PRZ3BES7.cjs → chunk-72CPLZPC.cjs} +5 -5
  33. package/dist/{chunk-PRZ3BES7.cjs.map → chunk-72CPLZPC.cjs.map} +1 -1
  34. package/dist/{chunk-HNAYCTX4.cjs → chunk-76PIKR4P.cjs} +22 -22
  35. package/dist/{chunk-HNAYCTX4.cjs.map → chunk-76PIKR4P.cjs.map} +1 -1
  36. package/dist/{chunk-EFMFILPG.js → chunk-7F7XE6CM.js} +3 -3
  37. package/dist/{chunk-EFMFILPG.js.map → chunk-7F7XE6CM.js.map} +1 -1
  38. package/dist/{chunk-7C3HWGCW.js → chunk-7GDHFV2M.js} +3 -3
  39. package/dist/{chunk-7C3HWGCW.js.map → chunk-7GDHFV2M.js.map} +1 -1
  40. package/dist/{chunk-CA5VUAP3.js → chunk-7HUCU3KK.js} +5 -5
  41. package/dist/{chunk-CA5VUAP3.js.map → chunk-7HUCU3KK.js.map} +1 -1
  42. package/dist/{chunk-4MMWFSCD.js → chunk-7JAKO3NM.js} +3 -3
  43. package/dist/{chunk-4MMWFSCD.js.map → chunk-7JAKO3NM.js.map} +1 -1
  44. package/dist/{chunk-UADQJBHR.cjs → chunk-7NQ7HJ3E.cjs} +6 -6
  45. package/dist/{chunk-UADQJBHR.cjs.map → chunk-7NQ7HJ3E.cjs.map} +1 -1
  46. package/dist/{chunk-ZLMU5EU3.cjs → chunk-ARMFXTY6.cjs} +114 -190
  47. package/dist/chunk-ARMFXTY6.cjs.map +1 -0
  48. package/dist/{chunk-5WKQDIGO.js → chunk-AY43232P.js} +4 -4
  49. package/dist/{chunk-5WKQDIGO.js.map → chunk-AY43232P.js.map} +1 -1
  50. package/dist/{chunk-7FDKWDA2.cjs → chunk-B3XXQX6L.cjs} +7 -7
  51. package/dist/{chunk-7FDKWDA2.cjs.map → chunk-B3XXQX6L.cjs.map} +1 -1
  52. package/dist/{chunk-ALUN2B4W.js → chunk-B5MHRQJZ.js} +9 -3
  53. package/dist/chunk-B5MHRQJZ.js.map +1 -0
  54. package/dist/{chunk-TA3K7SBK.js → chunk-BKMDRBJ7.js} +3 -3
  55. package/dist/{chunk-TA3K7SBK.js.map → chunk-BKMDRBJ7.js.map} +1 -1
  56. package/dist/{chunk-A575WPBL.cjs → chunk-BM6PDJW3.cjs} +260 -260
  57. package/dist/{chunk-A575WPBL.cjs.map → chunk-BM6PDJW3.cjs.map} +1 -1
  58. package/dist/{chunk-RWPLWMCZ.cjs → chunk-C7GKRGKN.cjs} +42 -21
  59. package/dist/chunk-C7GKRGKN.cjs.map +1 -0
  60. package/dist/{chunk-FUSDYC2B.cjs → chunk-CQYBJOB2.cjs} +4 -4
  61. package/dist/{chunk-FUSDYC2B.cjs.map → chunk-CQYBJOB2.cjs.map} +1 -1
  62. package/dist/{chunk-7JJ3A6AT.cjs → chunk-D5KXKBEN.cjs} +5 -5
  63. package/dist/{chunk-7JJ3A6AT.cjs.map → chunk-D5KXKBEN.cjs.map} +1 -1
  64. package/dist/{chunk-3VXQEQE4.js → chunk-DDRX4LYS.js} +4 -4
  65. package/dist/{chunk-3VXQEQE4.js.map → chunk-DDRX4LYS.js.map} +1 -1
  66. package/dist/{chunk-QDM3OHUT.cjs → chunk-ECD6ER3E.cjs} +4 -4
  67. package/dist/{chunk-QDM3OHUT.cjs.map → chunk-ECD6ER3E.cjs.map} +1 -1
  68. package/dist/{chunk-JMDDYA22.js → chunk-EJROML3Q.js} +4 -4
  69. package/dist/{chunk-JMDDYA22.js.map → chunk-EJROML3Q.js.map} +1 -1
  70. package/dist/{chunk-EIQFAOFD.js → chunk-GGRPAQ3B.js} +3 -3
  71. package/dist/{chunk-EIQFAOFD.js.map → chunk-GGRPAQ3B.js.map} +1 -1
  72. package/dist/{chunk-HCT4HPCL.cjs → chunk-GHHIJEFX.cjs} +4 -4
  73. package/dist/{chunk-HCT4HPCL.cjs.map → chunk-GHHIJEFX.cjs.map} +1 -1
  74. package/dist/{chunk-7A6535RA.cjs → chunk-GM54F4FE.cjs} +9 -9
  75. package/dist/{chunk-7A6535RA.cjs.map → chunk-GM54F4FE.cjs.map} +1 -1
  76. package/dist/{chunk-6M2OIS4Y.js → chunk-GMRFAX4I.js} +74 -4
  77. package/dist/chunk-GMRFAX4I.js.map +1 -0
  78. package/dist/{chunk-O6USDERH.js → chunk-GMSRRJ53.js} +3 -3
  79. package/dist/{chunk-O6USDERH.js.map → chunk-GMSRRJ53.js.map} +1 -1
  80. package/dist/{chunk-VE6DFSKU.js → chunk-GTX6FEDP.js} +3 -3
  81. package/dist/{chunk-VE6DFSKU.js.map → chunk-GTX6FEDP.js.map} +1 -1
  82. package/dist/{chunk-NJWYQWDL.js → chunk-H3CVJSFC.js} +3 -3
  83. package/dist/{chunk-NJWYQWDL.js.map → chunk-H3CVJSFC.js.map} +1 -1
  84. package/dist/{chunk-MYJGWS2J.cjs → chunk-HG5LKFG7.cjs} +16 -16
  85. package/dist/{chunk-MYJGWS2J.cjs.map → chunk-HG5LKFG7.cjs.map} +1 -1
  86. package/dist/{chunk-55GB6JYQ.js → chunk-HOHR75KF.js} +5 -5
  87. package/dist/{chunk-55GB6JYQ.js.map → chunk-HOHR75KF.js.map} +1 -1
  88. package/dist/{chunk-GBCVPKHE.js → chunk-HV4V63CO.js} +3 -3
  89. package/dist/{chunk-GBCVPKHE.js.map → chunk-HV4V63CO.js.map} +1 -1
  90. package/dist/{chunk-I2PWY7VM.cjs → chunk-IIYJMXYW.cjs} +4 -4
  91. package/dist/{chunk-I2PWY7VM.cjs.map → chunk-IIYJMXYW.cjs.map} +1 -1
  92. package/dist/{chunk-YYN6BB7R.cjs → chunk-J4SA2ZEJ.cjs} +4 -4
  93. package/dist/{chunk-YYN6BB7R.cjs.map → chunk-J4SA2ZEJ.cjs.map} +1 -1
  94. package/dist/{chunk-ATT276RD.cjs → chunk-J5623RIV.cjs} +78 -6
  95. package/dist/chunk-J5623RIV.cjs.map +1 -0
  96. package/dist/{chunk-KVSAY6NZ.cjs → chunk-J6GXS5A2.cjs} +13 -13
  97. package/dist/{chunk-KVSAY6NZ.cjs.map → chunk-J6GXS5A2.cjs.map} +1 -1
  98. package/dist/{chunk-NQTD6QOW.cjs → chunk-JW3GVLM6.cjs} +4 -4
  99. package/dist/{chunk-NQTD6QOW.cjs.map → chunk-JW3GVLM6.cjs.map} +1 -1
  100. package/dist/{chunk-TFG5IBZS.cjs → chunk-KGZ66JVZ.cjs} +14 -14
  101. package/dist/{chunk-TFG5IBZS.cjs.map → chunk-KGZ66JVZ.cjs.map} +1 -1
  102. package/dist/{chunk-47TF32NQ.js → chunk-KO6SHCEH.js} +3 -3
  103. package/dist/{chunk-47TF32NQ.js.map → chunk-KO6SHCEH.js.map} +1 -1
  104. package/dist/{chunk-EFETPSJZ.cjs → chunk-KTA7YTZQ.cjs} +12 -12
  105. package/dist/{chunk-EFETPSJZ.cjs.map → chunk-KTA7YTZQ.cjs.map} +1 -1
  106. package/dist/{chunk-D6POWE7E.cjs → chunk-MEUBLCM4.cjs} +11 -11
  107. package/dist/{chunk-D6POWE7E.cjs.map → chunk-MEUBLCM4.cjs.map} +1 -1
  108. package/dist/{chunk-VWUXIVEI.js → chunk-MFZODA5Y.js} +5 -5
  109. package/dist/{chunk-VWUXIVEI.js.map → chunk-MFZODA5Y.js.map} +1 -1
  110. package/dist/{chunk-4HS6FFGL.cjs → chunk-MPQJE3G4.cjs} +15 -15
  111. package/dist/{chunk-4HS6FFGL.cjs.map → chunk-MPQJE3G4.cjs.map} +1 -1
  112. package/dist/{chunk-QRVS2PRE.cjs → chunk-MPR2ISL2.cjs} +4 -4
  113. package/dist/{chunk-QRVS2PRE.cjs.map → chunk-MPR2ISL2.cjs.map} +1 -1
  114. package/dist/{chunk-UOLBAPDM.js → chunk-MQGSOKR3.js} +3 -3
  115. package/dist/{chunk-UOLBAPDM.js.map → chunk-MQGSOKR3.js.map} +1 -1
  116. package/dist/{chunk-HFEJE7AC.js → chunk-MU7IAA7G.js} +9 -9
  117. package/dist/{chunk-HFEJE7AC.js.map → chunk-MU7IAA7G.js.map} +1 -1
  118. package/dist/{chunk-EXTRW7GW.cjs → chunk-NAGPKWOD.cjs} +4 -4
  119. package/dist/{chunk-EXTRW7GW.cjs.map → chunk-NAGPKWOD.cjs.map} +1 -1
  120. package/dist/{chunk-KTTHHYEW.cjs → chunk-NJSIAJEK.cjs} +4 -4
  121. package/dist/{chunk-KTTHHYEW.cjs.map → chunk-NJSIAJEK.cjs.map} +1 -1
  122. package/dist/{chunk-Z3NTRKIC.cjs → chunk-NKIQTLFA.cjs} +4 -4
  123. package/dist/{chunk-Z3NTRKIC.cjs.map → chunk-NKIQTLFA.cjs.map} +1 -1
  124. package/dist/{chunk-N7VAE6DZ.js → chunk-NOO6GZTZ.js} +8 -84
  125. package/dist/chunk-NOO6GZTZ.js.map +1 -0
  126. package/dist/{chunk-GK3UG7YQ.cjs → chunk-OCEQ6DW2.cjs} +10 -10
  127. package/dist/{chunk-GK3UG7YQ.cjs.map → chunk-OCEQ6DW2.cjs.map} +1 -1
  128. package/dist/{chunk-BJUJT5ED.cjs → chunk-OF2CLCTH.cjs} +4 -4
  129. package/dist/{chunk-BJUJT5ED.cjs.map → chunk-OF2CLCTH.cjs.map} +1 -1
  130. package/dist/{chunk-HUFSABUZ.cjs → chunk-OLSEWLK5.cjs} +6 -6
  131. package/dist/{chunk-HUFSABUZ.cjs.map → chunk-OLSEWLK5.cjs.map} +1 -1
  132. package/dist/{chunk-DQZU7JK6.cjs → chunk-P22BZE7G.cjs} +4 -4
  133. package/dist/{chunk-DQZU7JK6.cjs.map → chunk-P22BZE7G.cjs.map} +1 -1
  134. package/dist/{chunk-QWD3CZWE.cjs → chunk-P7NNKEWO.cjs} +4 -4
  135. package/dist/{chunk-QWD3CZWE.cjs.map → chunk-P7NNKEWO.cjs.map} +1 -1
  136. package/dist/{chunk-DQNI52VV.js → chunk-PQCTDMUI.js} +3 -3
  137. package/dist/{chunk-DQNI52VV.js.map → chunk-PQCTDMUI.js.map} +1 -1
  138. package/dist/{chunk-3XSWF5AP.cjs → chunk-PSLCVSCS.cjs} +3 -3
  139. package/dist/{chunk-3XSWF5AP.cjs.map → chunk-PSLCVSCS.cjs.map} +1 -1
  140. package/dist/{chunk-FUUSIT2T.js → chunk-PYFBS6OQ.js} +34 -34
  141. package/dist/{chunk-FUUSIT2T.js.map → chunk-PYFBS6OQ.js.map} +1 -1
  142. package/dist/{chunk-YRLI5DVC.js → chunk-QDQQYRJI.js} +4 -4
  143. package/dist/{chunk-YRLI5DVC.js.map → chunk-QDQQYRJI.js.map} +1 -1
  144. package/dist/{chunk-P5S3WCSZ.js → chunk-R2C3HXR3.js} +4 -4
  145. package/dist/{chunk-P5S3WCSZ.js.map → chunk-R2C3HXR3.js.map} +1 -1
  146. package/dist/chunk-R3ZQBPA5.cjs +18 -0
  147. package/dist/{chunk-ANMJJD6D.cjs.map → chunk-R3ZQBPA5.cjs.map} +1 -1
  148. package/dist/{chunk-4NLCWGH7.cjs → chunk-RA7IE4NK.cjs} +15 -15
  149. package/dist/{chunk-4NLCWGH7.cjs.map → chunk-RA7IE4NK.cjs.map} +1 -1
  150. package/dist/{chunk-UBR5PWD7.js → chunk-SUVCHX4L.js} +3 -3
  151. package/dist/{chunk-UBR5PWD7.js.map → chunk-SUVCHX4L.js.map} +1 -1
  152. package/dist/{chunk-7KBNBPFK.cjs → chunk-SWALPLFQ.cjs} +2 -2
  153. package/dist/chunk-SWALPLFQ.cjs.map +1 -0
  154. package/dist/{chunk-E6QXZZKE.cjs → chunk-T5KOSR5Y.cjs} +11 -11
  155. package/dist/{chunk-E6QXZZKE.cjs.map → chunk-T5KOSR5Y.cjs.map} +1 -1
  156. package/dist/{chunk-R3LBRQAN.js → chunk-TC4RWP3Y.js} +6 -6
  157. package/dist/{chunk-R3LBRQAN.js.map → chunk-TC4RWP3Y.js.map} +1 -1
  158. package/dist/{chunk-XB4GI5RZ.js → chunk-TE6XVTOA.js} +3 -3
  159. package/dist/{chunk-XB4GI5RZ.js.map → chunk-TE6XVTOA.js.map} +1 -1
  160. package/dist/{chunk-33A27NFX.cjs → chunk-TTBIQTO5.cjs} +19 -19
  161. package/dist/{chunk-33A27NFX.cjs.map → chunk-TTBIQTO5.cjs.map} +1 -1
  162. package/dist/{chunk-6JG2RFGK.js → chunk-UKBBYVNS.js} +5 -5
  163. package/dist/{chunk-6JG2RFGK.js.map → chunk-UKBBYVNS.js.map} +1 -1
  164. package/dist/{chunk-J7J7J2GN.cjs → chunk-UNFBHV46.cjs} +9 -2
  165. package/dist/chunk-UNFBHV46.cjs.map +1 -0
  166. package/dist/{chunk-AAEZSPTC.js → chunk-UNZOJVVC.js} +4 -4
  167. package/dist/{chunk-AAEZSPTC.js.map → chunk-UNZOJVVC.js.map} +1 -1
  168. package/dist/{chunk-24SYBZPL.cjs → chunk-WPO3VCY4.cjs} +9 -9
  169. package/dist/{chunk-24SYBZPL.cjs.map → chunk-WPO3VCY4.cjs.map} +1 -1
  170. package/dist/{chunk-IUMAQURF.js → chunk-X6DUEDAF.js} +3 -3
  171. package/dist/{chunk-IUMAQURF.js.map → chunk-X6DUEDAF.js.map} +1 -1
  172. package/dist/{chunk-CFE6QF2Q.js → chunk-XCQ432OX.js} +3 -3
  173. package/dist/{chunk-CFE6QF2Q.js.map → chunk-XCQ432OX.js.map} +1 -1
  174. package/dist/{chunk-QWD4RDZ3.cjs → chunk-XDUGSTYJ.cjs} +15 -15
  175. package/dist/{chunk-QWD4RDZ3.cjs.map → chunk-XDUGSTYJ.cjs.map} +1 -1
  176. package/dist/{chunk-K2VMFZQ5.js → chunk-XKMVJ443.js} +5 -5
  177. package/dist/{chunk-K2VMFZQ5.js.map → chunk-XKMVJ443.js.map} +1 -1
  178. package/dist/{chunk-6PWOWXMC.js → chunk-XZHJYSPB.js} +3 -3
  179. package/dist/{chunk-6PWOWXMC.js.map → chunk-XZHJYSPB.js.map} +1 -1
  180. package/dist/{chunk-QC55H6RJ.cjs → chunk-YRJA2POB.cjs} +9 -9
  181. package/dist/{chunk-QC55H6RJ.cjs.map → chunk-YRJA2POB.cjs.map} +1 -1
  182. package/dist/{chunk-T3ZDEYTJ.js → chunk-ZDYDBXSD.js} +36 -15
  183. package/dist/chunk-ZDYDBXSD.js.map +1 -0
  184. package/dist/{chunk-DMRT67Y6.js → chunk-ZJZ7LV3A.js} +3 -3
  185. package/dist/{chunk-DMRT67Y6.js.map → chunk-ZJZ7LV3A.js.map} +1 -1
  186. package/dist/{chunk-G7BLGBRN.js → chunk-ZWFTECOE.js} +3 -3
  187. package/dist/{chunk-G7BLGBRN.js.map → chunk-ZWFTECOE.js.map} +1 -1
  188. package/dist/{compact-session-QT6RJOKO.js → compact-session-2N3ZYJTW.js} +12 -12
  189. package/dist/{compact-session-QT6RJOKO.js.map → compact-session-2N3ZYJTW.js.map} +1 -1
  190. package/dist/{compact-session-75KD2FCM.cjs → compact-session-RBPLUPCK.cjs} +21 -21
  191. package/dist/{compact-session-75KD2FCM.cjs.map → compact-session-RBPLUPCK.cjs.map} +1 -1
  192. package/dist/compaction.cjs +20 -16
  193. package/dist/compaction.d.cts +2 -0
  194. package/dist/compaction.d.ts +2 -0
  195. package/dist/compaction.js +2 -2
  196. package/dist/concurrency.cjs +5 -5
  197. package/dist/concurrency.js +3 -3
  198. package/dist/context/index.cjs +13 -9
  199. package/dist/context/index.cjs.map +1 -1
  200. package/dist/context/index.d.cts +2 -0
  201. package/dist/context/index.d.ts +2 -0
  202. package/dist/context/index.js +5 -5
  203. package/dist/context/index.js.map +1 -1
  204. package/dist/context-SXR2HLHT.js +7 -0
  205. package/dist/{context-OJIIXJCV.js.map → context-SXR2HLHT.js.map} +1 -1
  206. package/dist/context-ZOULM2RB.cjs +24 -0
  207. package/dist/{context-7RP5JXGM.cjs.map → context-ZOULM2RB.cjs.map} +1 -1
  208. package/dist/{cron-D8uB1Xh5.d.ts → cron-DTuaPMVI.d.ts} +2 -2
  209. package/dist/{cron-BwxDUscv.d.cts → cron-QTgcwcZt.d.cts} +2 -2
  210. package/dist/cron.cjs +34 -34
  211. package/dist/cron.d.cts +4 -4
  212. package/dist/cron.d.ts +4 -4
  213. package/dist/cron.js +33 -33
  214. package/dist/{errors-DrDEgyz1.d.cts → errors-BWOJeWTZ.d.cts} +25 -2
  215. package/dist/{errors-CLOAyuiv.d.ts → errors-DDvG18IB.d.ts} +25 -2
  216. package/dist/errors.cjs +25 -21
  217. package/dist/errors.d.cts +2 -2
  218. package/dist/errors.d.ts +2 -2
  219. package/dist/errors.js +1 -1
  220. package/dist/eval.cjs +44 -44
  221. package/dist/eval.js +34 -34
  222. package/dist/{executor-XQAOQOHD.cjs → executor-2SUGI3ZT.cjs} +21 -21
  223. package/dist/{executor-XQAOQOHD.cjs.map → executor-2SUGI3ZT.cjs.map} +1 -1
  224. package/dist/{executor-ZNDQDX6Q.js → executor-3NI7KNL4.js} +6 -6
  225. package/dist/{executor-ZNDQDX6Q.js.map → executor-3NI7KNL4.js.map} +1 -1
  226. package/dist/filesystem/index.cjs +11 -11
  227. package/dist/filesystem/index.js +2 -2
  228. package/dist/fs-session-store-JHBJFKVV.cjs +19 -0
  229. package/dist/{fs-session-store-E4U3P56L.cjs.map → fs-session-store-JHBJFKVV.cjs.map} +1 -1
  230. package/dist/fs-session-store-STZZFXH2.js +10 -0
  231. package/dist/{fs-session-store-77JU46UZ.js.map → fs-session-store-STZZFXH2.js.map} +1 -1
  232. package/dist/generate-object-NTKAWE7D.js +7 -0
  233. package/dist/{generate-object-BXV7BZRP.js.map → generate-object-NTKAWE7D.js.map} +1 -1
  234. package/dist/generate-object-YHTWG5DB.cjs +20 -0
  235. package/dist/{generate-object-YBI2TDJ3.cjs.map → generate-object-YHTWG5DB.cjs.map} +1 -1
  236. package/dist/index-manager-ONQJSWX5.js +17 -0
  237. package/dist/{index-manager-Z4XMRVWQ.js.map → index-manager-ONQJSWX5.js.map} +1 -1
  238. package/dist/{index-manager-W7RHSL6G.cjs → index-manager-ZGJN25FD.cjs} +9 -9
  239. package/dist/{index-manager-W7RHSL6G.cjs.map → index-manager-ZGJN25FD.cjs.map} +1 -1
  240. package/dist/index.cjs +148 -146
  241. package/dist/index.d.cts +28 -10
  242. package/dist/index.d.ts +28 -10
  243. package/dist/index.js +49 -49
  244. package/dist/{inject-session-L6MIIELT.cjs → inject-session-3FPXJDJP.cjs} +4 -4
  245. package/dist/{inject-session-L6MIIELT.cjs.map → inject-session-3FPXJDJP.cjs.map} +1 -1
  246. package/dist/{inject-session-XWWN4DAA.js → inject-session-YNNOE3O6.js} +3 -3
  247. package/dist/{inject-session-XWWN4DAA.js.map → inject-session-YNNOE3O6.js.map} +1 -1
  248. package/dist/interactive/index.cjs +3 -3
  249. package/dist/interactive/index.js +1 -1
  250. package/dist/internal/memory/adapters/index.cjs +7 -7
  251. package/dist/internal/memory/adapters/index.js +6 -6
  252. package/dist/internal/memory/storage/index.cjs +35 -35
  253. package/dist/internal/memory/storage/index.js +6 -6
  254. package/dist/internal/persistence/index.cjs +11 -11
  255. package/dist/internal/persistence/index.js +3 -3
  256. package/dist/internal/runtime/compression/compression-model-registry.d.ts +1 -0
  257. package/dist/internal/runtime/compression/compression-summarizer.d.ts +0 -14
  258. package/dist/internal/runtime/context/context-discovery.d.ts +20 -5
  259. package/dist/internal/runtime/context/context-loaders.d.ts +5 -1
  260. package/dist/internal/security/index.cjs +9 -9
  261. package/dist/internal/security/index.js +2 -2
  262. package/dist/judge-call-AQQYK6VT.cjs +22 -0
  263. package/dist/{judge-call-46M2E5FA.cjs.map → judge-call-AQQYK6VT.cjs.map} +1 -1
  264. package/dist/judge-call-LOL5FQEX.js +5 -0
  265. package/dist/{judge-call-FGUNNWEI.js.map → judge-call-LOL5FQEX.js.map} +1 -1
  266. package/dist/mcp-auth.cjs +9 -9
  267. package/dist/mcp-auth.js +2 -2
  268. package/dist/models.cjs +15 -15
  269. package/dist/models.js +6 -6
  270. package/dist/oauth-transaction-store-NP2YHZ6D.js +5 -0
  271. package/dist/{oauth-transaction-store-5RIR6D5C.js.map → oauth-transaction-store-NP2YHZ6D.js.map} +1 -1
  272. package/dist/oauth-transaction-store-ZINDV7AF.cjs +38 -0
  273. package/dist/{oauth-transaction-store-SXIE57OD.cjs.map → oauth-transaction-store-ZINDV7AF.cjs.map} +1 -1
  274. package/dist/path-safety.cjs +9 -9
  275. package/dist/path-safety.js +2 -2
  276. package/dist/persistence.cjs +16 -16
  277. package/dist/persistence.js +4 -4
  278. package/dist/project.cjs +5 -5
  279. package/dist/project.js +2 -2
  280. package/dist/providers.cjs +8 -8
  281. package/dist/providers.js +6 -6
  282. package/dist/{registry-DMWCJKRF.js → registry-5FK42CRV.js} +6 -6
  283. package/dist/{registry-DMWCJKRF.js.map → registry-5FK42CRV.js.map} +1 -1
  284. package/dist/{registry-BZQFYRTL.cjs → registry-BVTNO73E.cjs} +14 -14
  285. package/dist/{registry-BZQFYRTL.cjs.map → registry-BVTNO73E.cjs.map} +1 -1
  286. package/dist/retry.cjs +3 -3
  287. package/dist/retry.js +2 -2
  288. package/dist/{run-CTAdRU3U.d.ts → run-DsA5Ip2i.d.cts} +1 -1
  289. package/dist/{run-CTAdRU3U.d.cts → run-DsA5Ip2i.d.ts} +1 -1
  290. package/dist/sandbox/index.cjs +18 -18
  291. package/dist/sandbox/index.js +3 -3
  292. package/dist/{sdk-agent-BOiKqOgL.d.cts → sdk-agent-dNwjwCt5.d.cts} +2 -2
  293. package/dist/{sdk-agent-D4a_BR_6.d.ts → sdk-agent-wEOLXD3F.d.ts} +2 -2
  294. package/dist/server/auth/index.cjs +21 -21
  295. package/dist/server/auth/index.js +6 -6
  296. package/dist/server/errors-envelope.cjs +13 -13
  297. package/dist/server/errors-envelope.d.cts +2 -2
  298. package/dist/server/errors-envelope.d.ts +2 -2
  299. package/dist/server/errors-envelope.js +2 -2
  300. package/dist/skills.cjs +7 -7
  301. package/dist/skills.js +4 -4
  302. package/dist/stream-object-QAEHG4YO.js +7 -0
  303. package/dist/{stream-object-HBFMIZLD.js.map → stream-object-QAEHG4YO.js.map} +1 -1
  304. package/dist/stream-object-TKVGGA54.cjs +20 -0
  305. package/dist/{stream-object-QSKHISDJ.cjs.map → stream-object-TKVGGA54.cjs.map} +1 -1
  306. package/dist/subagents-loader-5TZCAIYQ.cjs +16 -0
  307. package/dist/{subagents-loader-MOO7DC4E.cjs.map → subagents-loader-5TZCAIYQ.cjs.map} +1 -1
  308. package/dist/subagents-loader-PEV3PD4Q.js +7 -0
  309. package/dist/{subagents-loader-CJFYQQU2.js.map → subagents-loader-PEV3PD4Q.js.map} +1 -1
  310. package/dist/subagents-loader.cjs +5 -5
  311. package/dist/subagents-loader.d.cts +3 -3
  312. package/dist/subagents-loader.d.ts +3 -3
  313. package/dist/subagents-loader.js +3 -3
  314. package/dist/subscription/index.cjs +3 -2
  315. package/dist/subscription/index.d.cts +1 -1
  316. package/dist/subscription/index.d.ts +1 -1
  317. package/dist/subscription/index.js +2 -2
  318. package/dist/task-store.cjs +5 -5
  319. package/dist/task-store.js +2 -2
  320. package/dist/types/agent.d.ts +12 -0
  321. package/dist/workflow.cjs +25 -25
  322. package/dist/workflow.d.cts +2 -2
  323. package/dist/workflow.d.ts +2 -2
  324. package/dist/workflow.js +4 -4
  325. package/docs/error-codes.md +8 -7
  326. package/docs/harness-capability-map.md +17 -1
  327. package/package.json +1 -1
  328. package/dist/agent-EQ5HKTWV.js +0 -59
  329. package/dist/agent-KA63WDQH.cjs +0 -68
  330. package/dist/chunk-6M2OIS4Y.js.map +0 -1
  331. package/dist/chunk-7KBNBPFK.cjs.map +0 -1
  332. package/dist/chunk-A6PDYH55.js.map +0 -1
  333. package/dist/chunk-ALUN2B4W.js.map +0 -1
  334. package/dist/chunk-ANMJJD6D.cjs +0 -18
  335. package/dist/chunk-ATT276RD.cjs.map +0 -1
  336. package/dist/chunk-J7J7J2GN.cjs.map +0 -1
  337. package/dist/chunk-N7VAE6DZ.js.map +0 -1
  338. package/dist/chunk-RWPLWMCZ.cjs.map +0 -1
  339. package/dist/chunk-T3ZDEYTJ.js.map +0 -1
  340. package/dist/chunk-ZLMU5EU3.cjs.map +0 -1
  341. package/dist/context-7RP5JXGM.cjs +0 -24
  342. package/dist/context-OJIIXJCV.js +0 -7
  343. package/dist/fs-session-store-77JU46UZ.js +0 -10
  344. package/dist/fs-session-store-E4U3P56L.cjs +0 -19
  345. package/dist/generate-object-BXV7BZRP.js +0 -7
  346. package/dist/generate-object-YBI2TDJ3.cjs +0 -20
  347. package/dist/index-manager-Z4XMRVWQ.js +0 -17
  348. package/dist/judge-call-46M2E5FA.cjs +0 -22
  349. package/dist/judge-call-FGUNNWEI.js +0 -5
  350. package/dist/oauth-transaction-store-5RIR6D5C.js +0 -5
  351. package/dist/oauth-transaction-store-SXIE57OD.cjs +0 -38
  352. package/dist/stream-object-HBFMIZLD.js +0 -7
  353. package/dist/stream-object-QSKHISDJ.cjs +0 -20
  354. package/dist/subagents-loader-CJFYQQU2.js +0 -7
  355. package/dist/subagents-loader-MOO7DC4E.cjs +0 -16
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/internal/emit-run-event.ts","../src/internal/task/ring-buffer.ts","../src/internal/task/subscribe.ts","../src/internal/task/task-run-event-bridge.ts","../src/internal/task/telemetry.ts","../src/internal/task/registry.ts"],"names":["subscribe"],"mappings":"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","file":"chunk-K2VMFZQ5.js","sourcesContent":["/**\n * The fail-safe emitter for the `RunEvent` stream — runtime, deliberately NOT in `types/`.\n *\n * Eleven modules across `agent-loop/`, `runtime/`, `task/` and `local-agent/` call it; the type it\n * carries stays in `types/run-events.ts`, which is what `types/` is for. Sibling of\n * `internal/diagnostics.ts`, which swallows sink failures on the same principle and for the same\n * reason: observability degrades what you can SEE, never what the agent DOES.\n *\n * @internal\n */\n\nimport type { RunEvent, RunEventSink } from \"../types/run-events.js\";\n\n/**\n * SE2 — emit a {@link RunEvent} to an optional sink, swallowing any sink error so\n * observability can never break the run (fail-safe, mirrors the EventBus EC-2\n * contract). No-op when the sink is absent.\n */\nexport function emitRunEvent(sink: RunEventSink | undefined, event: RunEvent): void {\n if (sink === undefined) return;\n try {\n sink(event);\n } catch {\n // best-effort: an observability sink must never break the run.\n }\n}\n","/**\n * Bounded FIFO ring buffer for late-attach replay (ADR D372).\n *\n * Push always succeeds; when the buffer is at capacity the oldest\n * entry is dropped and the `truncated` flag flips to `true`. Drain\n * returns a snapshot + the current truncated flag.\n *\n * @internal\n */\n\nexport class RingBuffer<T> {\n private readonly buf: T[] = [];\n private truncated = false;\n\n constructor(private readonly cap: number) {\n if (!Number.isInteger(cap) || cap < 1) {\n throw new Error(`RingBuffer capacity must be a positive integer, got ${cap}`);\n }\n }\n\n push(item: T): void {\n if (this.buf.length >= this.cap) {\n this.buf.shift();\n this.truncated = true;\n }\n this.buf.push(item);\n }\n\n drain(): { readonly items: readonly T[]; readonly truncated: boolean } {\n return { items: this.buf.slice(), truncated: this.truncated };\n }\n\n size(): number {\n return this.buf.length;\n }\n\n wasTruncated(): boolean {\n return this.truncated;\n }\n}\n","/**\n * `subscribe(id)` — emits the per-task event stream (D372 ring buffer\n * + live tail). The returned AsyncIterable implements `return()` for\n * leak-free cleanup (EC-10).\n *\n * @internal\n */\n\nimport { TaskNotFoundError } from \"../../errors.js\";\nimport type { TaskEvent } from \"../../types/task.js\";\nimport type { RingBuffer } from \"./ring-buffer.js\";\nimport { isValidTaskId } from \"./task-id.js\";\n\nexport interface SubscribeDeps {\n getBuffer(id: string): RingBuffer<TaskEvent> | undefined;\n getOrCreateSubscriberSet(id: string): Set<(e: TaskEvent) => void>;\n removeSubscriber(id: string, cb: (e: TaskEvent) => void): void;\n}\n\nfunction isTerminalEvent(event: TaskEvent): boolean {\n return event.type === \"finished\" || event.type === \"errored\" || event.type === \"cancelled\";\n}\n\nfunction drainBuffered(buffer: RingBuffer<TaskEvent>): TaskEvent[] {\n const { items, truncated } = buffer.drain();\n const queue = items.slice();\n if (truncated && queue.length > 0) {\n const first = queue[0];\n if (first !== undefined && first.type === \"submitted\") {\n queue[0] = { ...first, truncated: true } satisfies TaskEvent;\n }\n }\n return queue;\n}\n\nclass TaskIterator implements AsyncIterator<TaskEvent> {\n private readonly queue: TaskEvent[];\n private pendingResolve?: (v: IteratorResult<TaskEvent>) => void;\n private done = false;\n private readonly callback: (e: TaskEvent) => void;\n\n constructor(\n buffer: RingBuffer<TaskEvent>,\n private readonly id: string,\n private readonly deps: SubscribeDeps,\n ) {\n this.queue = drainBuffered(buffer);\n this.callback = (e) => this.deliver(e);\n deps.getOrCreateSubscriberSet(id).add(this.callback);\n }\n\n private deliver(e: TaskEvent): void {\n if (this.done) return;\n if (this.pendingResolve !== undefined) {\n const r = this.pendingResolve;\n this.pendingResolve = undefined;\n r({ value: e, done: false });\n } else {\n this.queue.push(e);\n }\n }\n\n private cleanup(): void {\n if (this.done) return;\n this.done = true;\n this.deps.removeSubscriber(this.id, this.callback);\n if (this.pendingResolve !== undefined) {\n const r = this.pendingResolve;\n this.pendingResolve = undefined;\n r({ value: undefined, done: true });\n }\n }\n\n private dequeue(): IteratorResult<TaskEvent> | undefined {\n const event = this.queue.shift();\n if (event === undefined) return undefined;\n if (isTerminalEvent(event)) queueMicrotask(() => this.cleanup());\n return { value: event, done: false };\n }\n\n next(): Promise<IteratorResult<TaskEvent>> {\n if (this.done) return Promise.resolve({ value: undefined, done: true });\n const queued = this.dequeue();\n if (queued !== undefined) return Promise.resolve(queued);\n return new Promise((resolve) => {\n this.pendingResolve = resolve;\n });\n }\n\n return(): Promise<IteratorResult<TaskEvent>> {\n this.cleanup();\n return Promise.resolve({ value: undefined, done: true });\n }\n}\n\nexport function buildSubscribe(deps: SubscribeDeps) {\n return function subscribe(id: string): AsyncIterable<TaskEvent> {\n if (!isValidTaskId(id, true)) throw new TaskNotFoundError(id);\n const buffer = deps.getBuffer(id);\n if (buffer === undefined) throw new TaskNotFoundError(id);\n\n return {\n [Symbol.asyncIterator](): AsyncIterator<TaskEvent> {\n return new TaskIterator(buffer, id, deps);\n },\n };\n };\n}\n","/**\n * SE2 — the `TaskEvent` → `task_*` RunEvent bridge for the opt-in `onRunEvent`\n * sink. Extracted from `registry.ts` (a pure, self-contained mapping) to keep\n * the registry within the G8 LoC budget and give the bridge one home.\n *\n * @internal\n */\n\nimport type { RunEvent } from \"../../types/run-events.js\";\nimport type { TaskEvent, TaskKind } from \"../../types/task.js\";\n\n/** Map a `TaskEvent` to a `task_*` RunEvent, or `undefined` when it has no counterpart. */\nexport function taskEventToRunEvent(\n event: TaskEvent,\n taskId: string,\n kind: TaskKind,\n): RunEvent | undefined {\n switch (event.type) {\n case \"started\":\n return { type: \"task_started\", taskId, description: kind };\n case \"progress\":\n return { type: \"task_updated\", taskId, status: \"progress\" };\n case \"finished\":\n return { type: \"task_completed\", taskId, status: \"completed\" };\n case \"errored\":\n return { type: \"task_completed\", taskId, status: \"failed\" };\n case \"cancelled\":\n return { type: \"task_completed\", taskId, status: \"stopped\" };\n default:\n return undefined; // `submitted` (queued) has no RunEvent counterpart\n }\n}\n","/**\n * OTel telemetry for the Task registry (ADR D371).\n *\n * Spans:\n * - `task.submit` — short-lived span around the submit + insert.\n * - `task.transition` — per state transition (attrs: from / to).\n * - `task.cancel` — invoked from `Task.cancel` or via cancelRequested honor.\n *\n * Uses the existing tracer seam (D34); when OTel is absent, every helper\n * returns the shared no-op span. No new peer deps.\n *\n * @internal\n */\n\nimport { getTracer, noopSpan, type SpanLike } from \"../telemetry/tracer-loader.js\";\n\nconst TRACER_NAME = \"@theokit/sdk/task\";\n\nexport function startTaskSubmitSpan(info: { taskId: string; kind: string }): SpanLike {\n const tracer = getTracer(TRACER_NAME);\n if (tracer === undefined) return noopSpan;\n return tracer.startSpan(\"task.submit\", {\n attributes: {\n \"task.id\": info.taskId,\n \"task.kind\": info.kind,\n },\n });\n}\n\nexport function startTaskTransitionSpan(info: {\n taskId: string;\n from: string;\n to: string;\n}): SpanLike {\n const tracer = getTracer(TRACER_NAME);\n if (tracer === undefined) return noopSpan;\n return tracer.startSpan(\"task.transition\", {\n attributes: {\n \"task.id\": info.taskId,\n \"task.state.from\": info.from,\n \"task.state.to\": info.to,\n },\n });\n}\n\nexport function startTaskCancelSpan(info: {\n taskId: string;\n reason?: string;\n via: \"api\" | \"cancelRequested\";\n}): SpanLike {\n const tracer = getTracer(TRACER_NAME);\n if (tracer === undefined) return noopSpan;\n return tracer.startSpan(\"task.cancel\", {\n attributes: {\n \"task.id\": info.taskId,\n \"task.cancel.via\": info.via,\n ...(info.reason !== undefined ? { \"task.cancel.reason\": info.reason } : {}),\n },\n });\n}\n","/**\n * `TaskRegistry` — the singleton coordinating Task submit/list/get/cancel/\n * subscribe. Wraps the pluggable `TaskStore` (D364), the `AsyncSemaphore`\n * (D135 / D369) and a per-task `RingBuffer<TaskEvent>` (D372) for\n * late-attach replay.\n *\n * Edge cases absorbed:\n * - EC-3: work-fn invocation goes through `Promise.resolve().then(...)`\n * so synchronous throws become rejected promises.\n * - EC-4: pre-aborted signal short-circuits to `cancelled` without\n * acquiring a semaphore slot.\n * - EC-7: cross-process cancel via the `cancelRequested` flag on\n * `TaskHandle`. Registry polls at start + each progress event.\n * - EC-9: store-update failures are caught + logged; the event is\n * still emitted so subscribers always observe a terminal event.\n * - EC-10: subscribe iterator implements `return()` for leak-free\n * cleanup.\n * - EC-11: reentrant submit (work-fn calling `Task.submit`) uses an\n * ALS marker to bypass the semaphore queue, avoiding deadlock under\n * low concurrency caps.\n *\n * @internal\n */\n\nimport { AsyncLocalStorage } from \"node:async_hooks\";\nimport { randomUUID } from \"node:crypto\";\n\nimport { InvalidTaskIdError } from \"../../errors.js\";\nimport type {\n TaskCancelResult,\n TaskEvent,\n TaskFilter,\n TaskHandle,\n TaskKind,\n TaskState,\n TaskStoreOptions,\n} from \"../../types/task.js\";\nimport { type AsyncSemaphore, createSemaphore } from \"../concurrency/async-semaphore.js\";\nimport { diag } from \"../diagnostics.js\";\nimport { emitRunEvent } from \"../emit-run-event.js\";\nimport { RingBuffer } from \"./ring-buffer.js\";\nimport { getTaskStoreFor, InMemoryTaskStore, type TaskStore } from \"./store.js\";\nimport { buildSubscribe } from \"./subscribe.js\";\nimport { isValidTaskId } from \"./task-id.js\";\nimport { taskEventToRunEvent } from \"./task-run-event-bridge.js\";\nimport { startTaskCancelSpan, startTaskSubmitSpan, startTaskTransitionSpan } from \"./telemetry.js\";\n\nconst DEFAULT_CONCURRENCY = 8;\nconst DEFAULT_RETENTION_MS = 60 * 60 * 1000;\nconst EVICTION_INTERVAL_MS = 5 * 60 * 1000;\nconst RING_CAP = 64;\n\n/** EC-11 — ALS flag indicating we are inside a task work-fn. Reentrant submits bypass the semaphore. */\nconst reentryAls = new AsyncLocalStorage<boolean>();\n\nexport interface TaskRegistryOptions {\n readonly store?: TaskStoreOptions;\n readonly maxConcurrent?: number;\n readonly retentionMs?: number;\n}\n\nexport interface TaskWorkContext {\n readonly signal: AbortSignal;\n emit(payload: unknown): void;\n}\n\ntype WorkFn<T> = (ctx: TaskWorkContext) => Promise<T> | T;\n\ninterface InternalState {\n readonly store: TaskStore;\n readonly semaphore: AsyncSemaphore;\n readonly aborters: Map<string, AbortController>;\n readonly buffers: Map<string, RingBuffer<TaskEvent>>;\n readonly subscribers: Map<string, Set<(e: TaskEvent) => void>>;\n retentionMs: number;\n evictTimer?: NodeJS.Timeout;\n firstSubmitSeen: boolean;\n}\n\nfunction buildState(opts: TaskRegistryOptions): InternalState {\n const store = opts.store === undefined ? new InMemoryTaskStore() : getTaskStoreFor(opts.store);\n return {\n store,\n semaphore: createSemaphore(opts.maxConcurrent ?? DEFAULT_CONCURRENCY),\n aborters: new Map(),\n buffers: new Map(),\n subscribers: new Map(),\n retentionMs: opts.retentionMs ?? DEFAULT_RETENTION_MS,\n firstSubmitSeen: false,\n };\n}\n\nlet state: InternalState = buildState({});\n\nexport function __resetTaskRegistryForTests(): void {\n if (state.evictTimer !== undefined) clearInterval(state.evictTimer);\n state = buildState({});\n}\n\nexport function __getSubscribersCountForTests(taskId: string): number {\n return state.subscribers.get(taskId)?.size ?? 0;\n}\n\nexport function configure(opts: TaskRegistryOptions): void {\n if (state.firstSubmitSeen) {\n diag(\n \"[task] configure() ignored — registry already in use; reset via __resetTaskRegistryForTests()\\n\",\n );\n return;\n }\n if (state.evictTimer !== undefined) clearInterval(state.evictTimer);\n state = buildState(opts);\n}\n\nfunction emitToSubscribers(taskId: string, event: TaskEvent): void {\n const buffer = state.buffers.get(taskId);\n if (buffer !== undefined) buffer.push(event);\n const subs = state.subscribers.get(taskId);\n if (subs === undefined) return;\n for (const cb of subs) {\n try {\n cb(event);\n } catch (err) {\n diag(`[task] subscriber threw: ${(err as Error).message}\\n`);\n }\n }\n}\n\nasync function safeUpdate(\n taskId: string,\n mutate: (h: TaskHandle) => TaskHandle,\n): Promise<TaskHandle | undefined> {\n try {\n return await state.store.update(taskId, mutate);\n } catch (err) {\n // EC-9: store failure should not swallow the event.\n diag(`[task] store.update failed for ${taskId}: ${(err as Error).message}\\n`);\n return undefined;\n }\n}\n\nfunction startEvictTimerIfNeeded(): void {\n if (state.evictTimer !== undefined) return;\n state.evictTimer = setInterval(() => {\n const cutoff = Date.now() - state.retentionMs;\n void state.store\n .evictTerminalOlderThan(cutoff)\n .then((count) => {\n if (count === 0) return;\n // Also drop buffers + subscribers for evicted tasks. We don't\n // know which ones were dropped — clean up any task whose store\n // entry is gone.\n for (const id of state.buffers.keys()) {\n void state.store.get(id).then((h) => {\n if (h === undefined) {\n state.buffers.delete(id);\n state.subscribers.delete(id);\n state.aborters.delete(id);\n }\n });\n }\n })\n .catch(() => {\n /* swallow timer errors */\n });\n }, EVICTION_INTERVAL_MS).unref();\n}\n\nfunction buildSubmittedEvent(handle: TaskHandle): TaskEvent {\n return {\n type: \"submitted\",\n taskId: handle.id,\n kind: handle.kind,\n submittedAt: handle.submittedAt,\n ...(handle.meta !== undefined ? { meta: handle.meta } : {}),\n };\n}\n\nasync function shortCircuitAborted(handle: TaskHandle, signal: AbortSignal): Promise<TaskHandle> {\n // EC-4: pre-aborted signal — skip queue/semaphore.\n const cancelled: TaskHandle = {\n ...handle,\n state: \"cancelled\",\n cancelledAt: Date.now(),\n };\n await state.store.insert(cancelled);\n state.buffers.set(handle.id, new RingBuffer(RING_CAP));\n emitToSubscribers(handle.id, buildSubmittedEvent(cancelled));\n emitToSubscribers(handle.id, {\n type: \"cancelled\",\n taskId: handle.id,\n cancelledAt: cancelled.cancelledAt ?? Date.now(),\n reason: signal.reason instanceof Error ? signal.reason.message : \"pre-aborted\",\n });\n return cancelled;\n}\n\nasync function transition<T extends TaskState>(\n taskId: string,\n next: T,\n patch: Partial<TaskHandle>,\n): Promise<void> {\n const before = await state.store.get(taskId);\n const span = startTaskTransitionSpan({\n taskId,\n from: before?.state ?? \"unknown\",\n to: next,\n });\n try {\n await safeUpdate(taskId, (h) => ({ ...h, state: next, ...patch }));\n } finally {\n span.end();\n }\n}\n\ninterface SubmitInternal<T> {\n readonly kind: TaskKind;\n readonly work: WorkFn<T>;\n readonly id?: string;\n readonly meta?: Record<string, unknown>;\n readonly signal?: AbortSignal;\n /** When true (adapter-internal), the validator allows reserved prefixes. */\n readonly allowReservedPrefix?: boolean;\n /** SE2 — forward this task's lifecycle to the run-event sink as `task_*` RunEvents. */\n readonly onRunEvent?: import(\"../../types/run-events.js\").RunEventSink;\n}\n\nasync function buildAndInsertQueued(\n internal: SubmitInternal<unknown>,\n resolvedId: string,\n): Promise<TaskHandle> {\n const submittedAt = Date.now();\n const handle: TaskHandle = {\n id: resolvedId,\n kind: internal.kind,\n state: \"queued\",\n submittedAt,\n ...(internal.meta !== undefined ? { meta: internal.meta } : {}),\n };\n await state.store.insert(handle);\n state.buffers.set(resolvedId, new RingBuffer(RING_CAP));\n emitToSubscribers(resolvedId, buildSubmittedEvent(handle));\n return handle;\n}\n\nfunction resolveIdInternal(internal: SubmitInternal<unknown>): string {\n if (internal.id === undefined) return randomUUID();\n if (!isValidTaskId(internal.id, internal.allowReservedPrefix ?? false)) {\n throw new InvalidTaskIdError(`invalid task id: ${internal.id}`, internal.id);\n }\n return internal.id;\n}\n\nasync function runWorkAndFinalize<T>(\n taskId: string,\n aborter: AbortController,\n work: WorkFn<T>,\n): Promise<void> {\n const ctx: TaskWorkContext = {\n signal: aborter.signal,\n emit(payload) {\n // EC-7: check cancelRequested at every progress checkpoint.\n void checkCancelRequestedAt(taskId, aborter);\n emitToSubscribers(taskId, {\n type: \"progress\",\n taskId,\n at: Date.now(),\n payload,\n });\n },\n };\n\n try {\n const result = await reentryAls.run(true, () => Promise.resolve().then(() => work(ctx)));\n if (aborter.signal.aborted) {\n const cancelledAt = Date.now();\n await transition(taskId, \"cancelled\", { cancelledAt });\n emitToSubscribers(taskId, { type: \"cancelled\", taskId, cancelledAt });\n return;\n }\n const finishedAt = Date.now();\n await transition(taskId, \"finished\", { finishedAt, result });\n emitToSubscribers(taskId, { type: \"finished\", taskId, finishedAt, result });\n } catch (err) {\n if (aborter.signal.aborted) {\n const cancelledAt = Date.now();\n await transition(taskId, \"cancelled\", { cancelledAt });\n emitToSubscribers(taskId, { type: \"cancelled\", taskId, cancelledAt });\n return;\n }\n const erroredAt = Date.now();\n const error =\n err instanceof Error\n ? { code: (err as { code?: string }).code ?? \"work_threw\", message: err.message }\n : { code: \"work_threw\", message: String(err) };\n await transition(taskId, \"error\", { erroredAt, error });\n emitToSubscribers(taskId, { type: \"errored\", taskId, erroredAt, error });\n }\n}\n\nasync function checkCancelRequestedAt(taskId: string, aborter: AbortController): Promise<void> {\n if (aborter.signal.aborted) return;\n try {\n const handle = await state.store.get(taskId);\n if (handle?.cancelRequested === true) {\n aborter.abort(\"cancelRequested\");\n }\n } catch {\n /* ignore — best-effort poll */\n }\n}\n\nasync function acquireSlot(): Promise<() => void> {\n if (reentryAls.getStore() === true) {\n // EC-11: reentrant submit bypasses the queue.\n return () => {\n /* no-op */\n };\n }\n return state.semaphore.acquire();\n}\n\n/**\n * Submit a task. Validates id (D368, EC-5 via allowReservedPrefix),\n * handles pre-aborted signals (EC-4), enforces single-flight by id\n * (D367), runs work under semaphore (D369/EC-11 reentrant bypass),\n * and produces the canonical event stream (D366).\n */\nexport async function submit<T>(internal: SubmitInternal<T>): Promise<TaskHandle> {\n state.firstSubmitSeen = true;\n startEvictTimerIfNeeded();\n\n const resolvedId = resolveIdInternal(internal);\n // SE2 — bridge the task lifecycle to the caller's run-event sink (opt-in).\n if (internal.onRunEvent !== undefined) {\n const sink = internal.onRunEvent;\n const kind = internal.kind;\n const subs = state.subscribers.get(resolvedId) ?? new Set();\n subs.add((e: TaskEvent) => {\n const runEvent = taskEventToRunEvent(e, resolvedId, kind);\n if (runEvent !== undefined) emitRunEvent(sink, runEvent);\n });\n state.subscribers.set(resolvedId, subs);\n }\n const submitSpan = startTaskSubmitSpan({ taskId: resolvedId, kind: internal.kind });\n\n // D367 single-flight.\n const existing = await state.store.get(resolvedId);\n if (existing !== undefined) {\n submitSpan.end();\n return existing;\n }\n\n const queuedHandle = await buildAndInsertQueued(internal, resolvedId);\n submitSpan.end();\n\n // EC-4: pre-aborted signal — short-circuit.\n if (internal.signal?.aborted === true) {\n return shortCircuitAborted(queuedHandle, internal.signal);\n }\n\n const aborter = new AbortController();\n state.aborters.set(resolvedId, aborter);\n if (internal.signal !== undefined) {\n internal.signal.addEventListener(\"abort\", () => aborter.abort(internal.signal?.reason), {\n once: true,\n });\n }\n\n // Fire and forget the actual run; the returned handle is the queued one.\n const release = await acquireSlot();\n void (async () => {\n try {\n // Check cancelRequested before starting (EC-7).\n await checkCancelRequestedAt(resolvedId, aborter);\n if (aborter.signal.aborted) {\n const cancelledAt = Date.now();\n await transition(resolvedId, \"cancelled\", { cancelledAt });\n emitToSubscribers(resolvedId, { type: \"cancelled\", taskId: resolvedId, cancelledAt });\n return;\n }\n const startedAt = Date.now();\n await transition(resolvedId, \"running\", { startedAt });\n emitToSubscribers(resolvedId, { type: \"started\", taskId: resolvedId, startedAt });\n await runWorkAndFinalize(resolvedId, aborter, internal.work as WorkFn<unknown>);\n } finally {\n release();\n state.aborters.delete(resolvedId);\n }\n })();\n\n return queuedHandle;\n}\n\nexport async function list(filter: TaskFilter = {}): Promise<TaskHandle[]> {\n return state.store.list(filter);\n}\n\nexport async function get(id: string): Promise<TaskHandle | undefined> {\n if (!isValidTaskId(id, true)) return undefined;\n return state.store.get(id);\n}\n\nexport async function cancel(id: string, reason?: string): Promise<TaskCancelResult> {\n if (!isValidTaskId(id, true)) return { cancelled: false, alreadyTerminal: false };\n const handle = await state.store.get(id);\n if (handle === undefined) return { cancelled: false, alreadyTerminal: false };\n if (handle.state === \"finished\" || handle.state === \"error\" || handle.state === \"cancelled\") {\n return { cancelled: false, alreadyTerminal: true };\n }\n const span = startTaskCancelSpan({\n taskId: id,\n ...(reason !== undefined ? { reason } : {}),\n via: \"api\",\n });\n try {\n return await cancelInternal(id, handle.state, reason);\n } finally {\n span.end();\n }\n}\n\nasync function cancelInternal(\n id: string,\n currentState: TaskState,\n reason?: string,\n): Promise<TaskCancelResult> {\n if (currentState === \"queued\") {\n const cancelledAt = Date.now();\n await transition(id, \"cancelled\", { cancelledAt });\n emitToSubscribers(id, {\n type: \"cancelled\",\n taskId: id,\n cancelledAt,\n ...(reason !== undefined ? { reason } : {}),\n });\n state.aborters.delete(id);\n return { cancelled: true, alreadyTerminal: false };\n }\n // running: trigger AbortController; runWorkAndFinalize handles the transition.\n const aborter = state.aborters.get(id);\n if (aborter !== undefined) aborter.abort(reason ?? \"cancelled\");\n return { cancelled: true, alreadyTerminal: false };\n}\n\nexport const subscribe = buildSubscribe({\n getBuffer: (id) => state.buffers.get(id),\n getOrCreateSubscriberSet: (id) => {\n let subs = state.subscribers.get(id);\n if (subs === undefined) {\n subs = new Set();\n state.subscribers.set(id, subs);\n }\n return subs;\n },\n removeSubscriber: (id, cb) => {\n const set = state.subscribers.get(id);\n set?.delete(cb);\n if (set !== undefined && set.size === 0) state.subscribers.delete(id);\n },\n});\n"]}
1
+ {"version":3,"sources":["../src/internal/emit-run-event.ts","../src/internal/task/ring-buffer.ts","../src/internal/task/subscribe.ts","../src/internal/task/task-run-event-bridge.ts","../src/internal/task/telemetry.ts","../src/internal/task/registry.ts"],"names":["subscribe"],"mappings":"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","file":"chunk-XKMVJ443.js","sourcesContent":["/**\n * The fail-safe emitter for the `RunEvent` stream — runtime, deliberately NOT in `types/`.\n *\n * Eleven modules across `agent-loop/`, `runtime/`, `task/` and `local-agent/` call it; the type it\n * carries stays in `types/run-events.ts`, which is what `types/` is for. Sibling of\n * `internal/diagnostics.ts`, which swallows sink failures on the same principle and for the same\n * reason: observability degrades what you can SEE, never what the agent DOES.\n *\n * @internal\n */\n\nimport type { RunEvent, RunEventSink } from \"../types/run-events.js\";\n\n/**\n * SE2 — emit a {@link RunEvent} to an optional sink, swallowing any sink error so\n * observability can never break the run (fail-safe, mirrors the EventBus EC-2\n * contract). No-op when the sink is absent.\n */\nexport function emitRunEvent(sink: RunEventSink | undefined, event: RunEvent): void {\n if (sink === undefined) return;\n try {\n sink(event);\n } catch {\n // best-effort: an observability sink must never break the run.\n }\n}\n","/**\n * Bounded FIFO ring buffer for late-attach replay (ADR D372).\n *\n * Push always succeeds; when the buffer is at capacity the oldest\n * entry is dropped and the `truncated` flag flips to `true`. Drain\n * returns a snapshot + the current truncated flag.\n *\n * @internal\n */\n\nexport class RingBuffer<T> {\n private readonly buf: T[] = [];\n private truncated = false;\n\n constructor(private readonly cap: number) {\n if (!Number.isInteger(cap) || cap < 1) {\n throw new Error(`RingBuffer capacity must be a positive integer, got ${cap}`);\n }\n }\n\n push(item: T): void {\n if (this.buf.length >= this.cap) {\n this.buf.shift();\n this.truncated = true;\n }\n this.buf.push(item);\n }\n\n drain(): { readonly items: readonly T[]; readonly truncated: boolean } {\n return { items: this.buf.slice(), truncated: this.truncated };\n }\n\n size(): number {\n return this.buf.length;\n }\n\n wasTruncated(): boolean {\n return this.truncated;\n }\n}\n","/**\n * `subscribe(id)` — emits the per-task event stream (D372 ring buffer\n * + live tail). The returned AsyncIterable implements `return()` for\n * leak-free cleanup (EC-10).\n *\n * @internal\n */\n\nimport { TaskNotFoundError } from \"../../errors.js\";\nimport type { TaskEvent } from \"../../types/task.js\";\nimport type { RingBuffer } from \"./ring-buffer.js\";\nimport { isValidTaskId } from \"./task-id.js\";\n\nexport interface SubscribeDeps {\n getBuffer(id: string): RingBuffer<TaskEvent> | undefined;\n getOrCreateSubscriberSet(id: string): Set<(e: TaskEvent) => void>;\n removeSubscriber(id: string, cb: (e: TaskEvent) => void): void;\n}\n\nfunction isTerminalEvent(event: TaskEvent): boolean {\n return event.type === \"finished\" || event.type === \"errored\" || event.type === \"cancelled\";\n}\n\nfunction drainBuffered(buffer: RingBuffer<TaskEvent>): TaskEvent[] {\n const { items, truncated } = buffer.drain();\n const queue = items.slice();\n if (truncated && queue.length > 0) {\n const first = queue[0];\n if (first !== undefined && first.type === \"submitted\") {\n queue[0] = { ...first, truncated: true } satisfies TaskEvent;\n }\n }\n return queue;\n}\n\nclass TaskIterator implements AsyncIterator<TaskEvent> {\n private readonly queue: TaskEvent[];\n private pendingResolve?: (v: IteratorResult<TaskEvent>) => void;\n private done = false;\n private readonly callback: (e: TaskEvent) => void;\n\n constructor(\n buffer: RingBuffer<TaskEvent>,\n private readonly id: string,\n private readonly deps: SubscribeDeps,\n ) {\n this.queue = drainBuffered(buffer);\n this.callback = (e) => this.deliver(e);\n deps.getOrCreateSubscriberSet(id).add(this.callback);\n }\n\n private deliver(e: TaskEvent): void {\n if (this.done) return;\n if (this.pendingResolve !== undefined) {\n const r = this.pendingResolve;\n this.pendingResolve = undefined;\n r({ value: e, done: false });\n } else {\n this.queue.push(e);\n }\n }\n\n private cleanup(): void {\n if (this.done) return;\n this.done = true;\n this.deps.removeSubscriber(this.id, this.callback);\n if (this.pendingResolve !== undefined) {\n const r = this.pendingResolve;\n this.pendingResolve = undefined;\n r({ value: undefined, done: true });\n }\n }\n\n private dequeue(): IteratorResult<TaskEvent> | undefined {\n const event = this.queue.shift();\n if (event === undefined) return undefined;\n if (isTerminalEvent(event)) queueMicrotask(() => this.cleanup());\n return { value: event, done: false };\n }\n\n next(): Promise<IteratorResult<TaskEvent>> {\n if (this.done) return Promise.resolve({ value: undefined, done: true });\n const queued = this.dequeue();\n if (queued !== undefined) return Promise.resolve(queued);\n return new Promise((resolve) => {\n this.pendingResolve = resolve;\n });\n }\n\n return(): Promise<IteratorResult<TaskEvent>> {\n this.cleanup();\n return Promise.resolve({ value: undefined, done: true });\n }\n}\n\nexport function buildSubscribe(deps: SubscribeDeps) {\n return function subscribe(id: string): AsyncIterable<TaskEvent> {\n if (!isValidTaskId(id, true)) throw new TaskNotFoundError(id);\n const buffer = deps.getBuffer(id);\n if (buffer === undefined) throw new TaskNotFoundError(id);\n\n return {\n [Symbol.asyncIterator](): AsyncIterator<TaskEvent> {\n return new TaskIterator(buffer, id, deps);\n },\n };\n };\n}\n","/**\n * SE2 — the `TaskEvent` → `task_*` RunEvent bridge for the opt-in `onRunEvent`\n * sink. Extracted from `registry.ts` (a pure, self-contained mapping) to keep\n * the registry within the G8 LoC budget and give the bridge one home.\n *\n * @internal\n */\n\nimport type { RunEvent } from \"../../types/run-events.js\";\nimport type { TaskEvent, TaskKind } from \"../../types/task.js\";\n\n/** Map a `TaskEvent` to a `task_*` RunEvent, or `undefined` when it has no counterpart. */\nexport function taskEventToRunEvent(\n event: TaskEvent,\n taskId: string,\n kind: TaskKind,\n): RunEvent | undefined {\n switch (event.type) {\n case \"started\":\n return { type: \"task_started\", taskId, description: kind };\n case \"progress\":\n return { type: \"task_updated\", taskId, status: \"progress\" };\n case \"finished\":\n return { type: \"task_completed\", taskId, status: \"completed\" };\n case \"errored\":\n return { type: \"task_completed\", taskId, status: \"failed\" };\n case \"cancelled\":\n return { type: \"task_completed\", taskId, status: \"stopped\" };\n default:\n return undefined; // `submitted` (queued) has no RunEvent counterpart\n }\n}\n","/**\n * OTel telemetry for the Task registry (ADR D371).\n *\n * Spans:\n * - `task.submit` — short-lived span around the submit + insert.\n * - `task.transition` — per state transition (attrs: from / to).\n * - `task.cancel` — invoked from `Task.cancel` or via cancelRequested honor.\n *\n * Uses the existing tracer seam (D34); when OTel is absent, every helper\n * returns the shared no-op span. No new peer deps.\n *\n * @internal\n */\n\nimport { getTracer, noopSpan, type SpanLike } from \"../telemetry/tracer-loader.js\";\n\nconst TRACER_NAME = \"@theokit/sdk/task\";\n\nexport function startTaskSubmitSpan(info: { taskId: string; kind: string }): SpanLike {\n const tracer = getTracer(TRACER_NAME);\n if (tracer === undefined) return noopSpan;\n return tracer.startSpan(\"task.submit\", {\n attributes: {\n \"task.id\": info.taskId,\n \"task.kind\": info.kind,\n },\n });\n}\n\nexport function startTaskTransitionSpan(info: {\n taskId: string;\n from: string;\n to: string;\n}): SpanLike {\n const tracer = getTracer(TRACER_NAME);\n if (tracer === undefined) return noopSpan;\n return tracer.startSpan(\"task.transition\", {\n attributes: {\n \"task.id\": info.taskId,\n \"task.state.from\": info.from,\n \"task.state.to\": info.to,\n },\n });\n}\n\nexport function startTaskCancelSpan(info: {\n taskId: string;\n reason?: string;\n via: \"api\" | \"cancelRequested\";\n}): SpanLike {\n const tracer = getTracer(TRACER_NAME);\n if (tracer === undefined) return noopSpan;\n return tracer.startSpan(\"task.cancel\", {\n attributes: {\n \"task.id\": info.taskId,\n \"task.cancel.via\": info.via,\n ...(info.reason !== undefined ? { \"task.cancel.reason\": info.reason } : {}),\n },\n });\n}\n","/**\n * `TaskRegistry` — the singleton coordinating Task submit/list/get/cancel/\n * subscribe. Wraps the pluggable `TaskStore` (D364), the `AsyncSemaphore`\n * (D135 / D369) and a per-task `RingBuffer<TaskEvent>` (D372) for\n * late-attach replay.\n *\n * Edge cases absorbed:\n * - EC-3: work-fn invocation goes through `Promise.resolve().then(...)`\n * so synchronous throws become rejected promises.\n * - EC-4: pre-aborted signal short-circuits to `cancelled` without\n * acquiring a semaphore slot.\n * - EC-7: cross-process cancel via the `cancelRequested` flag on\n * `TaskHandle`. Registry polls at start + each progress event.\n * - EC-9: store-update failures are caught + logged; the event is\n * still emitted so subscribers always observe a terminal event.\n * - EC-10: subscribe iterator implements `return()` for leak-free\n * cleanup.\n * - EC-11: reentrant submit (work-fn calling `Task.submit`) uses an\n * ALS marker to bypass the semaphore queue, avoiding deadlock under\n * low concurrency caps.\n *\n * @internal\n */\n\nimport { AsyncLocalStorage } from \"node:async_hooks\";\nimport { randomUUID } from \"node:crypto\";\n\nimport { InvalidTaskIdError } from \"../../errors.js\";\nimport type {\n TaskCancelResult,\n TaskEvent,\n TaskFilter,\n TaskHandle,\n TaskKind,\n TaskState,\n TaskStoreOptions,\n} from \"../../types/task.js\";\nimport { type AsyncSemaphore, createSemaphore } from \"../concurrency/async-semaphore.js\";\nimport { diag } from \"../diagnostics.js\";\nimport { emitRunEvent } from \"../emit-run-event.js\";\nimport { RingBuffer } from \"./ring-buffer.js\";\nimport { getTaskStoreFor, InMemoryTaskStore, type TaskStore } from \"./store.js\";\nimport { buildSubscribe } from \"./subscribe.js\";\nimport { isValidTaskId } from \"./task-id.js\";\nimport { taskEventToRunEvent } from \"./task-run-event-bridge.js\";\nimport { startTaskCancelSpan, startTaskSubmitSpan, startTaskTransitionSpan } from \"./telemetry.js\";\n\nconst DEFAULT_CONCURRENCY = 8;\nconst DEFAULT_RETENTION_MS = 60 * 60 * 1000;\nconst EVICTION_INTERVAL_MS = 5 * 60 * 1000;\nconst RING_CAP = 64;\n\n/** EC-11 — ALS flag indicating we are inside a task work-fn. Reentrant submits bypass the semaphore. */\nconst reentryAls = new AsyncLocalStorage<boolean>();\n\nexport interface TaskRegistryOptions {\n readonly store?: TaskStoreOptions;\n readonly maxConcurrent?: number;\n readonly retentionMs?: number;\n}\n\nexport interface TaskWorkContext {\n readonly signal: AbortSignal;\n emit(payload: unknown): void;\n}\n\ntype WorkFn<T> = (ctx: TaskWorkContext) => Promise<T> | T;\n\ninterface InternalState {\n readonly store: TaskStore;\n readonly semaphore: AsyncSemaphore;\n readonly aborters: Map<string, AbortController>;\n readonly buffers: Map<string, RingBuffer<TaskEvent>>;\n readonly subscribers: Map<string, Set<(e: TaskEvent) => void>>;\n retentionMs: number;\n evictTimer?: NodeJS.Timeout;\n firstSubmitSeen: boolean;\n}\n\nfunction buildState(opts: TaskRegistryOptions): InternalState {\n const store = opts.store === undefined ? new InMemoryTaskStore() : getTaskStoreFor(opts.store);\n return {\n store,\n semaphore: createSemaphore(opts.maxConcurrent ?? DEFAULT_CONCURRENCY),\n aborters: new Map(),\n buffers: new Map(),\n subscribers: new Map(),\n retentionMs: opts.retentionMs ?? DEFAULT_RETENTION_MS,\n firstSubmitSeen: false,\n };\n}\n\nlet state: InternalState = buildState({});\n\nexport function __resetTaskRegistryForTests(): void {\n if (state.evictTimer !== undefined) clearInterval(state.evictTimer);\n state = buildState({});\n}\n\nexport function __getSubscribersCountForTests(taskId: string): number {\n return state.subscribers.get(taskId)?.size ?? 0;\n}\n\nexport function configure(opts: TaskRegistryOptions): void {\n if (state.firstSubmitSeen) {\n diag(\n \"[task] configure() ignored — registry already in use; reset via __resetTaskRegistryForTests()\\n\",\n );\n return;\n }\n if (state.evictTimer !== undefined) clearInterval(state.evictTimer);\n state = buildState(opts);\n}\n\nfunction emitToSubscribers(taskId: string, event: TaskEvent): void {\n const buffer = state.buffers.get(taskId);\n if (buffer !== undefined) buffer.push(event);\n const subs = state.subscribers.get(taskId);\n if (subs === undefined) return;\n for (const cb of subs) {\n try {\n cb(event);\n } catch (err) {\n diag(`[task] subscriber threw: ${(err as Error).message}\\n`);\n }\n }\n}\n\nasync function safeUpdate(\n taskId: string,\n mutate: (h: TaskHandle) => TaskHandle,\n): Promise<TaskHandle | undefined> {\n try {\n return await state.store.update(taskId, mutate);\n } catch (err) {\n // EC-9: store failure should not swallow the event.\n diag(`[task] store.update failed for ${taskId}: ${(err as Error).message}\\n`);\n return undefined;\n }\n}\n\nfunction startEvictTimerIfNeeded(): void {\n if (state.evictTimer !== undefined) return;\n state.evictTimer = setInterval(() => {\n const cutoff = Date.now() - state.retentionMs;\n void state.store\n .evictTerminalOlderThan(cutoff)\n .then((count) => {\n if (count === 0) return;\n // Also drop buffers + subscribers for evicted tasks. We don't\n // know which ones were dropped — clean up any task whose store\n // entry is gone.\n for (const id of state.buffers.keys()) {\n void state.store.get(id).then((h) => {\n if (h === undefined) {\n state.buffers.delete(id);\n state.subscribers.delete(id);\n state.aborters.delete(id);\n }\n });\n }\n })\n .catch(() => {\n /* swallow timer errors */\n });\n }, EVICTION_INTERVAL_MS).unref();\n}\n\nfunction buildSubmittedEvent(handle: TaskHandle): TaskEvent {\n return {\n type: \"submitted\",\n taskId: handle.id,\n kind: handle.kind,\n submittedAt: handle.submittedAt,\n ...(handle.meta !== undefined ? { meta: handle.meta } : {}),\n };\n}\n\nasync function shortCircuitAborted(handle: TaskHandle, signal: AbortSignal): Promise<TaskHandle> {\n // EC-4: pre-aborted signal — skip queue/semaphore.\n const cancelled: TaskHandle = {\n ...handle,\n state: \"cancelled\",\n cancelledAt: Date.now(),\n };\n await state.store.insert(cancelled);\n state.buffers.set(handle.id, new RingBuffer(RING_CAP));\n emitToSubscribers(handle.id, buildSubmittedEvent(cancelled));\n emitToSubscribers(handle.id, {\n type: \"cancelled\",\n taskId: handle.id,\n cancelledAt: cancelled.cancelledAt ?? Date.now(),\n reason: signal.reason instanceof Error ? signal.reason.message : \"pre-aborted\",\n });\n return cancelled;\n}\n\nasync function transition<T extends TaskState>(\n taskId: string,\n next: T,\n patch: Partial<TaskHandle>,\n): Promise<void> {\n const before = await state.store.get(taskId);\n const span = startTaskTransitionSpan({\n taskId,\n from: before?.state ?? \"unknown\",\n to: next,\n });\n try {\n await safeUpdate(taskId, (h) => ({ ...h, state: next, ...patch }));\n } finally {\n span.end();\n }\n}\n\ninterface SubmitInternal<T> {\n readonly kind: TaskKind;\n readonly work: WorkFn<T>;\n readonly id?: string;\n readonly meta?: Record<string, unknown>;\n readonly signal?: AbortSignal;\n /** When true (adapter-internal), the validator allows reserved prefixes. */\n readonly allowReservedPrefix?: boolean;\n /** SE2 — forward this task's lifecycle to the run-event sink as `task_*` RunEvents. */\n readonly onRunEvent?: import(\"../../types/run-events.js\").RunEventSink;\n}\n\nasync function buildAndInsertQueued(\n internal: SubmitInternal<unknown>,\n resolvedId: string,\n): Promise<TaskHandle> {\n const submittedAt = Date.now();\n const handle: TaskHandle = {\n id: resolvedId,\n kind: internal.kind,\n state: \"queued\",\n submittedAt,\n ...(internal.meta !== undefined ? { meta: internal.meta } : {}),\n };\n await state.store.insert(handle);\n state.buffers.set(resolvedId, new RingBuffer(RING_CAP));\n emitToSubscribers(resolvedId, buildSubmittedEvent(handle));\n return handle;\n}\n\nfunction resolveIdInternal(internal: SubmitInternal<unknown>): string {\n if (internal.id === undefined) return randomUUID();\n if (!isValidTaskId(internal.id, internal.allowReservedPrefix ?? false)) {\n throw new InvalidTaskIdError(`invalid task id: ${internal.id}`, internal.id);\n }\n return internal.id;\n}\n\nasync function runWorkAndFinalize<T>(\n taskId: string,\n aborter: AbortController,\n work: WorkFn<T>,\n): Promise<void> {\n const ctx: TaskWorkContext = {\n signal: aborter.signal,\n emit(payload) {\n // EC-7: check cancelRequested at every progress checkpoint.\n void checkCancelRequestedAt(taskId, aborter);\n emitToSubscribers(taskId, {\n type: \"progress\",\n taskId,\n at: Date.now(),\n payload,\n });\n },\n };\n\n try {\n const result = await reentryAls.run(true, () => Promise.resolve().then(() => work(ctx)));\n if (aborter.signal.aborted) {\n const cancelledAt = Date.now();\n await transition(taskId, \"cancelled\", { cancelledAt });\n emitToSubscribers(taskId, { type: \"cancelled\", taskId, cancelledAt });\n return;\n }\n const finishedAt = Date.now();\n await transition(taskId, \"finished\", { finishedAt, result });\n emitToSubscribers(taskId, { type: \"finished\", taskId, finishedAt, result });\n } catch (err) {\n if (aborter.signal.aborted) {\n const cancelledAt = Date.now();\n await transition(taskId, \"cancelled\", { cancelledAt });\n emitToSubscribers(taskId, { type: \"cancelled\", taskId, cancelledAt });\n return;\n }\n const erroredAt = Date.now();\n const error =\n err instanceof Error\n ? { code: (err as { code?: string }).code ?? \"work_threw\", message: err.message }\n : { code: \"work_threw\", message: String(err) };\n await transition(taskId, \"error\", { erroredAt, error });\n emitToSubscribers(taskId, { type: \"errored\", taskId, erroredAt, error });\n }\n}\n\nasync function checkCancelRequestedAt(taskId: string, aborter: AbortController): Promise<void> {\n if (aborter.signal.aborted) return;\n try {\n const handle = await state.store.get(taskId);\n if (handle?.cancelRequested === true) {\n aborter.abort(\"cancelRequested\");\n }\n } catch {\n /* ignore — best-effort poll */\n }\n}\n\nasync function acquireSlot(): Promise<() => void> {\n if (reentryAls.getStore() === true) {\n // EC-11: reentrant submit bypasses the queue.\n return () => {\n /* no-op */\n };\n }\n return state.semaphore.acquire();\n}\n\n/**\n * Submit a task. Validates id (D368, EC-5 via allowReservedPrefix),\n * handles pre-aborted signals (EC-4), enforces single-flight by id\n * (D367), runs work under semaphore (D369/EC-11 reentrant bypass),\n * and produces the canonical event stream (D366).\n */\nexport async function submit<T>(internal: SubmitInternal<T>): Promise<TaskHandle> {\n state.firstSubmitSeen = true;\n startEvictTimerIfNeeded();\n\n const resolvedId = resolveIdInternal(internal);\n // SE2 — bridge the task lifecycle to the caller's run-event sink (opt-in).\n if (internal.onRunEvent !== undefined) {\n const sink = internal.onRunEvent;\n const kind = internal.kind;\n const subs = state.subscribers.get(resolvedId) ?? new Set();\n subs.add((e: TaskEvent) => {\n const runEvent = taskEventToRunEvent(e, resolvedId, kind);\n if (runEvent !== undefined) emitRunEvent(sink, runEvent);\n });\n state.subscribers.set(resolvedId, subs);\n }\n const submitSpan = startTaskSubmitSpan({ taskId: resolvedId, kind: internal.kind });\n\n // D367 single-flight.\n const existing = await state.store.get(resolvedId);\n if (existing !== undefined) {\n submitSpan.end();\n return existing;\n }\n\n const queuedHandle = await buildAndInsertQueued(internal, resolvedId);\n submitSpan.end();\n\n // EC-4: pre-aborted signal — short-circuit.\n if (internal.signal?.aborted === true) {\n return shortCircuitAborted(queuedHandle, internal.signal);\n }\n\n const aborter = new AbortController();\n state.aborters.set(resolvedId, aborter);\n if (internal.signal !== undefined) {\n internal.signal.addEventListener(\"abort\", () => aborter.abort(internal.signal?.reason), {\n once: true,\n });\n }\n\n // Fire and forget the actual run; the returned handle is the queued one.\n const release = await acquireSlot();\n void (async () => {\n try {\n // Check cancelRequested before starting (EC-7).\n await checkCancelRequestedAt(resolvedId, aborter);\n if (aborter.signal.aborted) {\n const cancelledAt = Date.now();\n await transition(resolvedId, \"cancelled\", { cancelledAt });\n emitToSubscribers(resolvedId, { type: \"cancelled\", taskId: resolvedId, cancelledAt });\n return;\n }\n const startedAt = Date.now();\n await transition(resolvedId, \"running\", { startedAt });\n emitToSubscribers(resolvedId, { type: \"started\", taskId: resolvedId, startedAt });\n await runWorkAndFinalize(resolvedId, aborter, internal.work as WorkFn<unknown>);\n } finally {\n release();\n state.aborters.delete(resolvedId);\n }\n })();\n\n return queuedHandle;\n}\n\nexport async function list(filter: TaskFilter = {}): Promise<TaskHandle[]> {\n return state.store.list(filter);\n}\n\nexport async function get(id: string): Promise<TaskHandle | undefined> {\n if (!isValidTaskId(id, true)) return undefined;\n return state.store.get(id);\n}\n\nexport async function cancel(id: string, reason?: string): Promise<TaskCancelResult> {\n if (!isValidTaskId(id, true)) return { cancelled: false, alreadyTerminal: false };\n const handle = await state.store.get(id);\n if (handle === undefined) return { cancelled: false, alreadyTerminal: false };\n if (handle.state === \"finished\" || handle.state === \"error\" || handle.state === \"cancelled\") {\n return { cancelled: false, alreadyTerminal: true };\n }\n const span = startTaskCancelSpan({\n taskId: id,\n ...(reason !== undefined ? { reason } : {}),\n via: \"api\",\n });\n try {\n return await cancelInternal(id, handle.state, reason);\n } finally {\n span.end();\n }\n}\n\nasync function cancelInternal(\n id: string,\n currentState: TaskState,\n reason?: string,\n): Promise<TaskCancelResult> {\n if (currentState === \"queued\") {\n const cancelledAt = Date.now();\n await transition(id, \"cancelled\", { cancelledAt });\n emitToSubscribers(id, {\n type: \"cancelled\",\n taskId: id,\n cancelledAt,\n ...(reason !== undefined ? { reason } : {}),\n });\n state.aborters.delete(id);\n return { cancelled: true, alreadyTerminal: false };\n }\n // running: trigger AbortController; runWorkAndFinalize handles the transition.\n const aborter = state.aborters.get(id);\n if (aborter !== undefined) aborter.abort(reason ?? \"cancelled\");\n return { cancelled: true, alreadyTerminal: false };\n}\n\nexport const subscribe = buildSubscribe({\n getBuffer: (id) => state.buffers.get(id),\n getOrCreateSubscriberSet: (id) => {\n let subs = state.subscribers.get(id);\n if (subs === undefined) {\n subs = new Set();\n state.subscribers.set(id, subs);\n }\n return subs;\n },\n removeSubscriber: (id, cb) => {\n const set = state.subscribers.get(id);\n set?.delete(cb);\n if (set !== undefined && set.size === 0) state.subscribers.delete(id);\n },\n});\n"]}
@@ -1,4 +1,4 @@
1
- import { ConfigurationError } from './chunk-ALUN2B4W.js';
1
+ import { ConfigurationError } from './chunk-B5MHRQJZ.js';
2
2
  import { diag } from './chunk-CZJ6Q7CW.js';
3
3
  import { mkdir, rename } from 'fs/promises';
4
4
  import { dirname } from 'path';
@@ -117,5 +117,5 @@ async function renameAside(filePath, label) {
117
117
  }
118
118
 
119
119
  export { applyWalWithFallback, isCorruptionError, openSqliteResilient };
120
- //# sourceMappingURL=chunk-6PWOWXMC.js.map
121
- //# sourceMappingURL=chunk-6PWOWXMC.js.map
120
+ //# sourceMappingURL=chunk-XZHJYSPB.js.map
121
+ //# sourceMappingURL=chunk-XZHJYSPB.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/internal/persistence/sqlite-wal.ts","../src/internal/persistence/sqlite-open.ts"],"names":[],"mappings":"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","file":"chunk-6PWOWXMC.js","sourcesContent":["/**\n * SQLite WAL mode helper with NFS/SMB/FUSE fallback to DELETE (ADR D63).\n *\n * WAL is faster (concurrent readers + one writer) but unsupported on some\n * network/FUSE filesystems. Try WAL; if the pragma returns something else\n * or throws, fall back to DELETE journal mode. Warn one time per label.\n *\n * This block is the MODULE header and must stay at offset 0. Sitting below the import it became a\n * leading comment of the first declaration instead, which is how its tag deleted `PragmaCapable`\n * from the emitted `.d.ts` while `applyWalWithFallback` — which names it — survived.\n */\n\nimport { diag } from \"../diagnostics.js\";\n\n/**\n * The narrow slice of a SQLite handle this module needs: anything with a `pragma()` method, which\n * `better-sqlite3` satisfies without being named here.\n *\n * Not exported, but it appears in the signature of `applyWalWithFallback`, so it is emitted into\n * the published declarations and a consumer can structurally satisfy it.\n */\ninterface PragmaCapable {\n pragma: (statement: string, options?: { simple?: boolean }) => unknown;\n}\n\n/**\n * What journal mode a connection ended up in after `applyWalWithFallback`.\n *\n * `mode` is the mode actually in effect, never the one that was requested. `fellBack` is `true`\n * only when WAL was attempted and refused — either the pragma threw or it reported a mode other\n * than `wal` — and the connection was put into DELETE instead.\n *\n * `fellBack: true` is normal on NFS, SMB and FUSE, where WAL needs shared memory the filesystem\n * does not provide. It is not an error and nothing further is required of the caller; the\n * consequence is slower concurrent access, since DELETE mode does not allow readers alongside a\n * writer. Treat it as a signal about the storage, not about the database.\n *\n * @public — re-exported from the semver-protected `@theokit/sdk/persistence` barrel, and (for\n * back-compat) from the semver-exempt `@theokit/sdk/internal/persistence` alias.\n */\nexport interface WalApplyResult {\n /** Final journal_mode actually in effect. */\n mode: \"wal\" | \"delete\";\n /** True if we wanted WAL but the filesystem refused. */\n fellBack: boolean;\n}\n\nconst warnedLabels = new Set<string>();\n\n/**\n * Apply WAL mode with DELETE fallback. Idempotent — safe to call multiple\n * times on the same connection.\n *\n * @param db any `pragma()`-capable SQLite handle (e.g., `better-sqlite3`)\n * @param label short identifier used in the warning (e.g., \"memory-index\")\n *\n */\nexport function applyWalWithFallback(db: PragmaCapable, label: string): WalApplyResult {\n try {\n const result = db.pragma(\"journal_mode = WAL\", { simple: true });\n if (typeof result === \"string\" && result.toLowerCase() === \"wal\") {\n return { mode: \"wal\", fellBack: false };\n }\n logFallback(label, `got \"${String(result)}\" instead of \"wal\"`);\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n logFallback(label, msg);\n }\n\n db.pragma(\"journal_mode = DELETE\");\n return { mode: \"delete\", fellBack: true };\n}\n\nfunction logFallback(label: string, reason: string): void {\n if (warnedLabels.has(label)) return;\n warnedLabels.add(label);\n diag(\n `[theokit-sdk] ${label}: WAL unavailable (${reason}); using DELETE journal mode. ` +\n \"This is normal on NFS/SMB/FUSE; expect slightly slower concurrent access.\\n\",\n );\n}\n\n/**\n * Test helper — clears the warn-once registry.\n *\n * @internal\n */\nexport function _resetWalWarnings(): void {\n warnedLabels.clear();\n}\n","/**\n * Resilient SQLite open (plan m0-foundation-expose-primitives, M0-5).\n *\n * Generalizes the driver-load + WAL-apply + corruption-recovery logic that was\n * duplicated (byte-identical) across `sdk/internal/memory/index-db.ts` and\n * `sdk-memory/internal/index/index-db.ts`. Schema-agnostic: the caller applies\n * its own PRAGMA/SCHEMA via the `onOpen` callback.\n *\n * Corruption recovery (EC-7): when opening fails with a \"malformed\" / \"not a\n * database\" / \"encrypted\" error and `recoverCorrupt` is not false, the file is\n * renamed aside to `<path>.corrupt-<ts>` (plus its WAL/SHM siblings) and a fresh\n * DB is opened. The corrupt file is renamed, NOT backed up — the timestamped\n * `.corrupt-*` file is kept for manual recovery.\n *\n * @internal — public via `@theokit/sdk/internal/persistence` (semver-exempt)\n */\n\nimport { mkdir, rename } from \"node:fs/promises\";\nimport { dirname } from \"node:path\";\n\nimport { ConfigurationError } from \"../../errors.js\";\nimport { diag } from \"../diagnostics.js\";\nimport { applyWalWithFallback } from \"./sqlite-wal.js\";\n\n/** Minimal SQLite handle surface every driver (`better-sqlite3`) exposes. */\nexport interface ResilientSqliteDb {\n /** SQLite `pragma()` access (used by `applyWalWithFallback`). */\n pragma(statement: string, options?: { simple?: boolean }): unknown;\n exec(sql: string): void;\n close(): void;\n}\n\n/**\n * Input to {@link openSqliteResilient}.\n *\n * The trap is `recoverCorrupt`, whose default is ON. When the driver reports a corrupt or encrypted\n * database, the file is renamed aside and a FRESH one is opened — so the call SUCCEEDS and hands\n * back an EMPTY database. The old bytes survive on disk under the renamed path, but a caller that\n * treats a resolved promise as \"my data is here\" is wrong exactly when it matters. Pass\n * `recoverCorrupt: false` to get the corruption error thrown instead.\n *\n * Semver-exempt: reachable via the '@theokit/sdk/internal/persistence' sub-path, which the package\n * declares in 'exports' but does NOT cover with its semver contract.\n *\n * @typeParam T - the concrete DB handle the driver returns; defaults to {@link ResilientSqliteDb}\n */\nexport interface OpenSqliteResilientOptions<T extends ResilientSqliteDb> {\n /** Absolute path to the SQLite file. Parent directories are created. */\n filePath: string;\n /**\n * Called after the driver is open and WAL is applied, before the handle is\n * returned. Apply PRAGMA/SCHEMA statements here. Errors propagate.\n */\n onOpen?: (db: T) => void | Promise<void>;\n /** Label used in the WAL-fallback warning and corruption-recovery log. Default \"sqlite\". */\n label?: string;\n /** When true (default) a corruption error renames the file aside and rebuilds. */\n recoverCorrupt?: boolean;\n}\n\n/**\n * Open a SQLite file with WAL (+ DELETE fallback) and corruption recovery.\n *\n * @typeParam T - the concrete DB handle type the driver returns (defaults to the\n * minimal {@link ResilientSqliteDb} surface)\n */\nexport async function openSqliteResilient<T extends ResilientSqliteDb = ResilientSqliteDb>(\n options: OpenSqliteResilientOptions<T>,\n): Promise<T> {\n await mkdir(dirname(options.filePath), { recursive: true });\n try {\n return await openConcrete(options);\n } catch (cause) {\n if (options.recoverCorrupt !== false && isCorruptionError(cause)) {\n await renameAside(options.filePath, options.label ?? \"sqlite\");\n return await openConcrete(options);\n }\n throw cause;\n }\n}\n\nasync function openConcrete<T extends ResilientSqliteDb>(\n options: OpenSqliteResilientOptions<T>,\n): Promise<T> {\n const db = await loadDriver<T>(options.filePath);\n // Apply WAL with NFS/SMB/FUSE fallback BEFORE schema so the journal mode is\n // set for the whole session.\n applyWalWithFallback(db, options.label ?? \"sqlite\");\n await options.onOpen?.(db);\n return db;\n}\n\n/** Injectable driver loaders (tests simulate a consumer env without better-sqlite3). */\ninterface DriverLoaders {\n betterSqlite3?: () => Promise<unknown>;\n nodeSqlite?: () => Promise<unknown>;\n}\nlet driverLoaderOverrides: DriverLoaders | undefined;\n\n/** Test-only. @internal */\nexport function _setDriverLoadersForTests(overrides: DriverLoaders | undefined): void {\n driverLoaderOverrides = overrides;\n}\n\n/**\n * Adapt `node:sqlite`'s `DatabaseSync` to the better-sqlite3 surface this module's callers use\n * (`prepare/get/all/run`, `exec`, `close`, `pragma`, `loadExtension`). The error message below has\n * ALWAYS promised this fallback (\"or run on Node 22.5+ for built-in node:sqlite\") — before the\n * flicker-bug fix the promise was fabricated: only better-sqlite3 was ever tried, so every consumer\n * without the optional native dep lost memory tools AND got a per-turn stderr WARN.\n */\nfunction adaptNodeSqlite(db: {\n prepare(sql: string): unknown;\n exec(sql: string): void;\n close(): void;\n loadExtension?: (path: string) => void;\n}): ResilientSqliteDb {\n const pragma = (statement: string, options?: { simple?: boolean }): unknown => {\n const stmt = db.prepare(`PRAGMA ${statement}`) as {\n get(): Record<string, unknown> | undefined;\n };\n const row = stmt.get();\n if (options?.simple === true) {\n return row === undefined ? undefined : Object.values(row)[0];\n }\n return row === undefined ? [] : [row];\n };\n return new Proxy(db as unknown as ResilientSqliteDb, {\n get(target, prop, receiver) {\n if (prop === \"pragma\") return pragma;\n // Reached by `sqlite-vec`'s own `load()`, not by anything in this package — see the member's\n // docblock on `MemoryDb`. `loadSqliteVecExtension` catches this and re-throws it as a\n // ConfigurationError with code `sqlite_vec_unavailable`, so a bare Error never escapes.\n if (prop === \"loadExtension\" && typeof db.loadExtension !== \"function\") {\n return () => {\n throw new Error(\n \"SQLite extension loading is unavailable on the node:sqlite fallback — install better-sqlite3 for sqlite-vec\",\n );\n };\n }\n const value = Reflect.get(target, prop, receiver) as unknown;\n return typeof value === \"function\"\n ? (value as (...a: unknown[]) => unknown).bind(target)\n : value;\n },\n });\n}\n\n// PRE-EXISTING debt, exposed when M75 fixed the Biome config that used to abort before\n// sweeping these files (a nested root under refactor/). It is not new code and was not touched\n// by M75; refactoring SDK internals without review would trade a visible problem for a diff\n// risky. Tracked in usetheodev/theokit-sdk#151.\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: see the reason just above\nasync function loadDriver<T extends ResilientSqliteDb>(filePath: string): Promise<T> {\n let betterSqliteCause: unknown;\n try {\n const mod = (await (driverLoaderOverrides?.betterSqlite3?.() ?? import(\"better-sqlite3\"))) as {\n default?: unknown;\n };\n const Ctor = mod.default ?? mod;\n if (typeof Ctor !== \"function\") {\n throw new Error(`better-sqlite3 export is not a constructor (got ${typeof Ctor})`);\n }\n return new (Ctor as new (path: string) => unknown)(filePath) as T;\n } catch (cause) {\n betterSqliteCause = cause;\n }\n // Fallback: the Node 22.5+ built-in driver (the path the error message documents).\n // `process.getBuiltinModule` (Node 22.3+) instead of `import(\"node:sqlite\")` — bundlers that\n // predate the sqlite builtin rewrite the import specifier to a bare \"sqlite\" package (proven in\n // the published dist: \"Cannot find package 'sqlite'\"), while getBuiltinModule is opaque to them.\n try {\n const mod = (await (driverLoaderOverrides?.nodeSqlite?.() ??\n Promise.resolve(\n (process as { getBuiltinModule?: (id: string) => unknown }).getBuiltinModule?.(\n \"node:sqlite\",\n ) ??\n (() => {\n throw new Error(\"node:sqlite built-in unavailable (Node < 22.3)\");\n })(),\n ))) as {\n DatabaseSync: new (\n path: string,\n ) => {\n prepare(sql: string): unknown;\n exec(sql: string): void;\n close(): void;\n };\n };\n return adaptNodeSqlite(new mod.DatabaseSync(filePath)) as T;\n } catch (nodeSqliteCause) {\n const b =\n betterSqliteCause instanceof Error ? betterSqliteCause.message : String(betterSqliteCause);\n const n = nodeSqliteCause instanceof Error ? nodeSqliteCause.message : String(nodeSqliteCause);\n throw new ConfigurationError(\n `Failed to load SQLite driver. Install \\`better-sqlite3\\` or run on Node 22.5+ for built-in \\`node:sqlite\\`. better-sqlite3: ${b}; node:sqlite: ${n}`,\n { code: \"sqlite_driver_unavailable\", cause: nodeSqliteCause },\n );\n }\n}\n\n/** True when an open error indicates an unreadable / corrupt database file. */\nexport function isCorruptionError(cause: unknown): boolean {\n if (!(cause instanceof Error)) return false;\n const msg = cause.message.toLowerCase();\n return (\n msg.includes(\"malformed\") ||\n msg.includes(\"not a database\") ||\n msg.includes(\"encrypted\") ||\n msg.includes(\"disk image is malformed\")\n );\n}\n\nasync function renameAside(filePath: string, label: string): Promise<void> {\n const asidePath = `${filePath}.corrupt-${Date.now()}`;\n await rename(filePath, asidePath).catch(() => undefined);\n await rename(`${filePath}-wal`, `${asidePath}-wal`).catch(() => undefined);\n await rename(`${filePath}-shm`, `${asidePath}-shm`).catch(() => undefined);\n diag(\n `[theokit-sdk] ${label} database corrupt; renamed aside to ${asidePath} and rebuilt schema\\n`,\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/internal/persistence/sqlite-wal.ts","../src/internal/persistence/sqlite-open.ts"],"names":[],"mappings":"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","file":"chunk-XZHJYSPB.js","sourcesContent":["/**\n * SQLite WAL mode helper with NFS/SMB/FUSE fallback to DELETE (ADR D63).\n *\n * WAL is faster (concurrent readers + one writer) but unsupported on some\n * network/FUSE filesystems. Try WAL; if the pragma returns something else\n * or throws, fall back to DELETE journal mode. Warn one time per label.\n *\n * This block is the MODULE header and must stay at offset 0. Sitting below the import it became a\n * leading comment of the first declaration instead, which is how its tag deleted `PragmaCapable`\n * from the emitted `.d.ts` while `applyWalWithFallback` — which names it — survived.\n */\n\nimport { diag } from \"../diagnostics.js\";\n\n/**\n * The narrow slice of a SQLite handle this module needs: anything with a `pragma()` method, which\n * `better-sqlite3` satisfies without being named here.\n *\n * Not exported, but it appears in the signature of `applyWalWithFallback`, so it is emitted into\n * the published declarations and a consumer can structurally satisfy it.\n */\ninterface PragmaCapable {\n pragma: (statement: string, options?: { simple?: boolean }) => unknown;\n}\n\n/**\n * What journal mode a connection ended up in after `applyWalWithFallback`.\n *\n * `mode` is the mode actually in effect, never the one that was requested. `fellBack` is `true`\n * only when WAL was attempted and refused — either the pragma threw or it reported a mode other\n * than `wal` — and the connection was put into DELETE instead.\n *\n * `fellBack: true` is normal on NFS, SMB and FUSE, where WAL needs shared memory the filesystem\n * does not provide. It is not an error and nothing further is required of the caller; the\n * consequence is slower concurrent access, since DELETE mode does not allow readers alongside a\n * writer. Treat it as a signal about the storage, not about the database.\n *\n * @public — re-exported from the semver-protected `@theokit/sdk/persistence` barrel, and (for\n * back-compat) from the semver-exempt `@theokit/sdk/internal/persistence` alias.\n */\nexport interface WalApplyResult {\n /** Final journal_mode actually in effect. */\n mode: \"wal\" | \"delete\";\n /** True if we wanted WAL but the filesystem refused. */\n fellBack: boolean;\n}\n\nconst warnedLabels = new Set<string>();\n\n/**\n * Apply WAL mode with DELETE fallback. Idempotent — safe to call multiple\n * times on the same connection.\n *\n * @param db any `pragma()`-capable SQLite handle (e.g., `better-sqlite3`)\n * @param label short identifier used in the warning (e.g., \"memory-index\")\n *\n */\nexport function applyWalWithFallback(db: PragmaCapable, label: string): WalApplyResult {\n try {\n const result = db.pragma(\"journal_mode = WAL\", { simple: true });\n if (typeof result === \"string\" && result.toLowerCase() === \"wal\") {\n return { mode: \"wal\", fellBack: false };\n }\n logFallback(label, `got \"${String(result)}\" instead of \"wal\"`);\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n logFallback(label, msg);\n }\n\n db.pragma(\"journal_mode = DELETE\");\n return { mode: \"delete\", fellBack: true };\n}\n\nfunction logFallback(label: string, reason: string): void {\n if (warnedLabels.has(label)) return;\n warnedLabels.add(label);\n diag(\n `[theokit-sdk] ${label}: WAL unavailable (${reason}); using DELETE journal mode. ` +\n \"This is normal on NFS/SMB/FUSE; expect slightly slower concurrent access.\\n\",\n );\n}\n\n/**\n * Test helper — clears the warn-once registry.\n *\n * @internal\n */\nexport function _resetWalWarnings(): void {\n warnedLabels.clear();\n}\n","/**\n * Resilient SQLite open (plan m0-foundation-expose-primitives, M0-5).\n *\n * Generalizes the driver-load + WAL-apply + corruption-recovery logic that was\n * duplicated (byte-identical) across `sdk/internal/memory/index-db.ts` and\n * `sdk-memory/internal/index/index-db.ts`. Schema-agnostic: the caller applies\n * its own PRAGMA/SCHEMA via the `onOpen` callback.\n *\n * Corruption recovery (EC-7): when opening fails with a \"malformed\" / \"not a\n * database\" / \"encrypted\" error and `recoverCorrupt` is not false, the file is\n * renamed aside to `<path>.corrupt-<ts>` (plus its WAL/SHM siblings) and a fresh\n * DB is opened. The corrupt file is renamed, NOT backed up — the timestamped\n * `.corrupt-*` file is kept for manual recovery.\n *\n * @internal — public via `@theokit/sdk/internal/persistence` (semver-exempt)\n */\n\nimport { mkdir, rename } from \"node:fs/promises\";\nimport { dirname } from \"node:path\";\n\nimport { ConfigurationError } from \"../../errors.js\";\nimport { diag } from \"../diagnostics.js\";\nimport { applyWalWithFallback } from \"./sqlite-wal.js\";\n\n/** Minimal SQLite handle surface every driver (`better-sqlite3`) exposes. */\nexport interface ResilientSqliteDb {\n /** SQLite `pragma()` access (used by `applyWalWithFallback`). */\n pragma(statement: string, options?: { simple?: boolean }): unknown;\n exec(sql: string): void;\n close(): void;\n}\n\n/**\n * Input to {@link openSqliteResilient}.\n *\n * The trap is `recoverCorrupt`, whose default is ON. When the driver reports a corrupt or encrypted\n * database, the file is renamed aside and a FRESH one is opened — so the call SUCCEEDS and hands\n * back an EMPTY database. The old bytes survive on disk under the renamed path, but a caller that\n * treats a resolved promise as \"my data is here\" is wrong exactly when it matters. Pass\n * `recoverCorrupt: false` to get the corruption error thrown instead.\n *\n * Semver-exempt: reachable via the '@theokit/sdk/internal/persistence' sub-path, which the package\n * declares in 'exports' but does NOT cover with its semver contract.\n *\n * @typeParam T - the concrete DB handle the driver returns; defaults to {@link ResilientSqliteDb}\n */\nexport interface OpenSqliteResilientOptions<T extends ResilientSqliteDb> {\n /** Absolute path to the SQLite file. Parent directories are created. */\n filePath: string;\n /**\n * Called after the driver is open and WAL is applied, before the handle is\n * returned. Apply PRAGMA/SCHEMA statements here. Errors propagate.\n */\n onOpen?: (db: T) => void | Promise<void>;\n /** Label used in the WAL-fallback warning and corruption-recovery log. Default \"sqlite\". */\n label?: string;\n /** When true (default) a corruption error renames the file aside and rebuilds. */\n recoverCorrupt?: boolean;\n}\n\n/**\n * Open a SQLite file with WAL (+ DELETE fallback) and corruption recovery.\n *\n * @typeParam T - the concrete DB handle type the driver returns (defaults to the\n * minimal {@link ResilientSqliteDb} surface)\n */\nexport async function openSqliteResilient<T extends ResilientSqliteDb = ResilientSqliteDb>(\n options: OpenSqliteResilientOptions<T>,\n): Promise<T> {\n await mkdir(dirname(options.filePath), { recursive: true });\n try {\n return await openConcrete(options);\n } catch (cause) {\n if (options.recoverCorrupt !== false && isCorruptionError(cause)) {\n await renameAside(options.filePath, options.label ?? \"sqlite\");\n return await openConcrete(options);\n }\n throw cause;\n }\n}\n\nasync function openConcrete<T extends ResilientSqliteDb>(\n options: OpenSqliteResilientOptions<T>,\n): Promise<T> {\n const db = await loadDriver<T>(options.filePath);\n // Apply WAL with NFS/SMB/FUSE fallback BEFORE schema so the journal mode is\n // set for the whole session.\n applyWalWithFallback(db, options.label ?? \"sqlite\");\n await options.onOpen?.(db);\n return db;\n}\n\n/** Injectable driver loaders (tests simulate a consumer env without better-sqlite3). */\ninterface DriverLoaders {\n betterSqlite3?: () => Promise<unknown>;\n nodeSqlite?: () => Promise<unknown>;\n}\nlet driverLoaderOverrides: DriverLoaders | undefined;\n\n/** Test-only. @internal */\nexport function _setDriverLoadersForTests(overrides: DriverLoaders | undefined): void {\n driverLoaderOverrides = overrides;\n}\n\n/**\n * Adapt `node:sqlite`'s `DatabaseSync` to the better-sqlite3 surface this module's callers use\n * (`prepare/get/all/run`, `exec`, `close`, `pragma`, `loadExtension`). The error message below has\n * ALWAYS promised this fallback (\"or run on Node 22.5+ for built-in node:sqlite\") — before the\n * flicker-bug fix the promise was fabricated: only better-sqlite3 was ever tried, so every consumer\n * without the optional native dep lost memory tools AND got a per-turn stderr WARN.\n */\nfunction adaptNodeSqlite(db: {\n prepare(sql: string): unknown;\n exec(sql: string): void;\n close(): void;\n loadExtension?: (path: string) => void;\n}): ResilientSqliteDb {\n const pragma = (statement: string, options?: { simple?: boolean }): unknown => {\n const stmt = db.prepare(`PRAGMA ${statement}`) as {\n get(): Record<string, unknown> | undefined;\n };\n const row = stmt.get();\n if (options?.simple === true) {\n return row === undefined ? undefined : Object.values(row)[0];\n }\n return row === undefined ? [] : [row];\n };\n return new Proxy(db as unknown as ResilientSqliteDb, {\n get(target, prop, receiver) {\n if (prop === \"pragma\") return pragma;\n // Reached by `sqlite-vec`'s own `load()`, not by anything in this package — see the member's\n // docblock on `MemoryDb`. `loadSqliteVecExtension` catches this and re-throws it as a\n // ConfigurationError with code `sqlite_vec_unavailable`, so a bare Error never escapes.\n if (prop === \"loadExtension\" && typeof db.loadExtension !== \"function\") {\n return () => {\n throw new Error(\n \"SQLite extension loading is unavailable on the node:sqlite fallback — install better-sqlite3 for sqlite-vec\",\n );\n };\n }\n const value = Reflect.get(target, prop, receiver) as unknown;\n return typeof value === \"function\"\n ? (value as (...a: unknown[]) => unknown).bind(target)\n : value;\n },\n });\n}\n\n// PRE-EXISTING debt, exposed when M75 fixed the Biome config that used to abort before\n// sweeping these files (a nested root under refactor/). It is not new code and was not touched\n// by M75; refactoring SDK internals without review would trade a visible problem for a diff\n// risky. Tracked in usetheodev/theokit-sdk#151.\n// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: see the reason just above\nasync function loadDriver<T extends ResilientSqliteDb>(filePath: string): Promise<T> {\n let betterSqliteCause: unknown;\n try {\n const mod = (await (driverLoaderOverrides?.betterSqlite3?.() ?? import(\"better-sqlite3\"))) as {\n default?: unknown;\n };\n const Ctor = mod.default ?? mod;\n if (typeof Ctor !== \"function\") {\n throw new Error(`better-sqlite3 export is not a constructor (got ${typeof Ctor})`);\n }\n return new (Ctor as new (path: string) => unknown)(filePath) as T;\n } catch (cause) {\n betterSqliteCause = cause;\n }\n // Fallback: the Node 22.5+ built-in driver (the path the error message documents).\n // `process.getBuiltinModule` (Node 22.3+) instead of `import(\"node:sqlite\")` — bundlers that\n // predate the sqlite builtin rewrite the import specifier to a bare \"sqlite\" package (proven in\n // the published dist: \"Cannot find package 'sqlite'\"), while getBuiltinModule is opaque to them.\n try {\n const mod = (await (driverLoaderOverrides?.nodeSqlite?.() ??\n Promise.resolve(\n (process as { getBuiltinModule?: (id: string) => unknown }).getBuiltinModule?.(\n \"node:sqlite\",\n ) ??\n (() => {\n throw new Error(\"node:sqlite built-in unavailable (Node < 22.3)\");\n })(),\n ))) as {\n DatabaseSync: new (\n path: string,\n ) => {\n prepare(sql: string): unknown;\n exec(sql: string): void;\n close(): void;\n };\n };\n return adaptNodeSqlite(new mod.DatabaseSync(filePath)) as T;\n } catch (nodeSqliteCause) {\n const b =\n betterSqliteCause instanceof Error ? betterSqliteCause.message : String(betterSqliteCause);\n const n = nodeSqliteCause instanceof Error ? nodeSqliteCause.message : String(nodeSqliteCause);\n throw new ConfigurationError(\n `Failed to load SQLite driver. Install \\`better-sqlite3\\` or run on Node 22.5+ for built-in \\`node:sqlite\\`. better-sqlite3: ${b}; node:sqlite: ${n}`,\n { code: \"sqlite_driver_unavailable\", cause: nodeSqliteCause },\n );\n }\n}\n\n/** True when an open error indicates an unreadable / corrupt database file. */\nexport function isCorruptionError(cause: unknown): boolean {\n if (!(cause instanceof Error)) return false;\n const msg = cause.message.toLowerCase();\n return (\n msg.includes(\"malformed\") ||\n msg.includes(\"not a database\") ||\n msg.includes(\"encrypted\") ||\n msg.includes(\"disk image is malformed\")\n );\n}\n\nasync function renameAside(filePath: string, label: string): Promise<void> {\n const asidePath = `${filePath}.corrupt-${Date.now()}`;\n await rename(filePath, asidePath).catch(() => undefined);\n await rename(`${filePath}-wal`, `${asidePath}-wal`).catch(() => undefined);\n await rename(`${filePath}-shm`, `${asidePath}-shm`).catch(() => undefined);\n diag(\n `[theokit-sdk] ${label} database corrupt; renamed aside to ${asidePath} and rebuilt schema\\n`,\n );\n}\n"]}
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkNVXXWAU7_cjs = require('./chunk-NVXXWAU7.cjs');
4
- var chunk4NLCWGH7_cjs = require('./chunk-4NLCWGH7.cjs');
5
- var chunkEXTRW7GW_cjs = require('./chunk-EXTRW7GW.cjs');
6
- var chunkJ7J7J2GN_cjs = require('./chunk-J7J7J2GN.cjs');
4
+ var chunkRA7IE4NK_cjs = require('./chunk-RA7IE4NK.cjs');
5
+ var chunkNAGPKWOD_cjs = require('./chunk-NAGPKWOD.cjs');
6
+ var chunkUNFBHV46_cjs = require('./chunk-UNFBHV46.cjs');
7
7
  var chunk6LHQPOMI_cjs = require('./chunk-6LHQPOMI.cjs');
8
8
  var fs = require('fs');
9
9
  var path = require('path');
@@ -112,7 +112,7 @@ var catalogEntrySchema = zod.z.object({
112
112
  }).loose();
113
113
 
114
114
  // src/internal/providers/catalog-loader.ts
115
- var __dirname_resolved = path.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-QC55H6RJ.cjs', document.baseURI).href))));
115
+ var __dirname_resolved = path.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-YRJA2POB.cjs', document.baseURI).href))));
116
116
  var modelInfoIndex = chunkNVXXWAU7_cjs.globalSingleton(
117
117
  "theokit-sdk.providers.model-info-index",
118
118
  () => /* @__PURE__ */ new Map()
@@ -426,19 +426,19 @@ var OPENAI_OAUTH_CONFIG = {
426
426
  function codexFetch() {
427
427
  return (async (input, init) => {
428
428
  const env = process.env;
429
- const resolved = await chunk4NLCWGH7_cjs.resolveCredential({
429
+ const resolved = await chunkRA7IE4NK_cjs.resolveCredential({
430
430
  provider: "openai",
431
431
  store: DEFAULT_STORE,
432
432
  oauth: OPENAI_OAUTH_CONFIG,
433
433
  env
434
434
  });
435
435
  if (resolved === void 0) {
436
- throw new chunkJ7J7J2GN_cjs.AuthenticationError(
436
+ throw new chunkUNFBHV46_cjs.AuthenticationError(
437
437
  'openai-chatgpt: no ChatGPT credential found \u2014 run the OpenAI device login (e.g. "/login openai") first.',
438
438
  { code: "missing_credential" }
439
439
  );
440
440
  }
441
- const accountId = chunkEXTRW7GW_cjs.readStoredOAuth(DEFAULT_STORE, env)?.account_id;
441
+ const accountId = chunkNAGPKWOD_cjs.readStoredOAuth(DEFAULT_STORE, env)?.account_id;
442
442
  const headers = new Headers(init?.headers);
443
443
  headers.set("authorization", `Bearer ${resolved.apiKey}`);
444
444
  if (accountId !== void 0) headers.set("ChatGPT-Account-Id", accountId);
@@ -597,5 +597,5 @@ exports.resolveBedrockBaseUrl = resolveBedrockBaseUrl;
597
597
  exports.resolveVertexBaseUrl = resolveVertexBaseUrl;
598
598
  exports.stripBedrockPrefix = stripBedrockPrefix;
599
599
  exports.stripVertexPrefix = stripVertexPrefix;
600
- //# sourceMappingURL=chunk-QC55H6RJ.cjs.map
601
- //# sourceMappingURL=chunk-QC55H6RJ.cjs.map
600
+ //# sourceMappingURL=chunk-YRJA2POB.cjs.map
601
+ //# sourceMappingURL=chunk-YRJA2POB.cjs.map