@agentuity/runtime 2.0.11 → 3.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (415) hide show
  1. package/dist/index.d.ts +37 -65
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +59 -61
  4. package/dist/index.js.map +1 -1
  5. package/package.json +9 -38
  6. package/src/index.ts +58 -259
  7. package/AGENTS.md +0 -116
  8. package/dist/_config.d.ts +0 -100
  9. package/dist/_config.d.ts.map +0 -1
  10. package/dist/_config.js +0 -147
  11. package/dist/_config.js.map +0 -1
  12. package/dist/_context.d.ts +0 -80
  13. package/dist/_context.d.ts.map +0 -1
  14. package/dist/_context.js +0 -160
  15. package/dist/_context.js.map +0 -1
  16. package/dist/_events.d.ts +0 -64
  17. package/dist/_events.d.ts.map +0 -1
  18. package/dist/_events.js +0 -92
  19. package/dist/_events.js.map +0 -1
  20. package/dist/_globals.d.ts +0 -58
  21. package/dist/_globals.d.ts.map +0 -1
  22. package/dist/_globals.js +0 -71
  23. package/dist/_globals.js.map +0 -1
  24. package/dist/_idle.d.ts +0 -7
  25. package/dist/_idle.d.ts.map +0 -1
  26. package/dist/_idle.js +0 -10
  27. package/dist/_idle.js.map +0 -1
  28. package/dist/_metadata.d.ts +0 -117
  29. package/dist/_metadata.d.ts.map +0 -1
  30. package/dist/_metadata.js +0 -268
  31. package/dist/_metadata.js.map +0 -1
  32. package/dist/_process-protection.d.ts +0 -27
  33. package/dist/_process-protection.d.ts.map +0 -1
  34. package/dist/_process-protection.js +0 -56
  35. package/dist/_process-protection.js.map +0 -1
  36. package/dist/_server.d.ts +0 -50
  37. package/dist/_server.d.ts.map +0 -1
  38. package/dist/_server.js +0 -89
  39. package/dist/_server.js.map +0 -1
  40. package/dist/_services.d.ts +0 -25
  41. package/dist/_services.d.ts.map +0 -1
  42. package/dist/_services.js +0 -286
  43. package/dist/_services.js.map +0 -1
  44. package/dist/_standalone.d.ts +0 -212
  45. package/dist/_standalone.d.ts.map +0 -1
  46. package/dist/_standalone.js +0 -556
  47. package/dist/_standalone.js.map +0 -1
  48. package/dist/_tokens.d.ts +0 -12
  49. package/dist/_tokens.d.ts.map +0 -1
  50. package/dist/_tokens.js +0 -97
  51. package/dist/_tokens.js.map +0 -1
  52. package/dist/_util.d.ts +0 -16
  53. package/dist/_util.d.ts.map +0 -1
  54. package/dist/_util.js +0 -54
  55. package/dist/_util.js.map +0 -1
  56. package/dist/_validation.d.ts +0 -89
  57. package/dist/_validation.d.ts.map +0 -1
  58. package/dist/_validation.js +0 -29
  59. package/dist/_validation.js.map +0 -1
  60. package/dist/_waituntil.d.ts +0 -32
  61. package/dist/_waituntil.d.ts.map +0 -1
  62. package/dist/_waituntil.js +0 -156
  63. package/dist/_waituntil.js.map +0 -1
  64. package/dist/agent.d.ts +0 -1262
  65. package/dist/agent.d.ts.map +0 -1
  66. package/dist/agent.js +0 -981
  67. package/dist/agent.js.map +0 -1
  68. package/dist/app.d.ts +0 -514
  69. package/dist/app.d.ts.map +0 -1
  70. package/dist/app.js +0 -228
  71. package/dist/app.js.map +0 -1
  72. package/dist/bootstrap.d.ts +0 -44
  73. package/dist/bootstrap.d.ts.map +0 -1
  74. package/dist/bootstrap.js +0 -259
  75. package/dist/bootstrap.js.map +0 -1
  76. package/dist/bun-s3-patch.d.ts +0 -37
  77. package/dist/bun-s3-patch.d.ts.map +0 -1
  78. package/dist/bun-s3-patch.js +0 -142
  79. package/dist/bun-s3-patch.js.map +0 -1
  80. package/dist/cors.d.ts +0 -42
  81. package/dist/cors.d.ts.map +0 -1
  82. package/dist/cors.js +0 -117
  83. package/dist/cors.js.map +0 -1
  84. package/dist/dev-patches/aisdk.d.ts +0 -17
  85. package/dist/dev-patches/aisdk.d.ts.map +0 -1
  86. package/dist/dev-patches/aisdk.js +0 -160
  87. package/dist/dev-patches/aisdk.js.map +0 -1
  88. package/dist/dev-patches/gateway.d.ts +0 -16
  89. package/dist/dev-patches/gateway.d.ts.map +0 -1
  90. package/dist/dev-patches/gateway.js +0 -54
  91. package/dist/dev-patches/gateway.js.map +0 -1
  92. package/dist/dev-patches/index.d.ts +0 -21
  93. package/dist/dev-patches/index.d.ts.map +0 -1
  94. package/dist/dev-patches/index.js +0 -33
  95. package/dist/dev-patches/index.js.map +0 -1
  96. package/dist/dev-patches/otel-llm.d.ts +0 -12
  97. package/dist/dev-patches/otel-llm.d.ts.map +0 -1
  98. package/dist/dev-patches/otel-llm.js +0 -352
  99. package/dist/dev-patches/otel-llm.js.map +0 -1
  100. package/dist/devmode.d.ts +0 -3
  101. package/dist/devmode.d.ts.map +0 -1
  102. package/dist/devmode.js +0 -167
  103. package/dist/devmode.js.map +0 -1
  104. package/dist/eval.d.ts +0 -91
  105. package/dist/eval.d.ts.map +0 -1
  106. package/dist/eval.js +0 -16
  107. package/dist/eval.js.map +0 -1
  108. package/dist/handlers/_route-meta.d.ts +0 -22
  109. package/dist/handlers/_route-meta.d.ts.map +0 -1
  110. package/dist/handlers/_route-meta.js +0 -25
  111. package/dist/handlers/_route-meta.js.map +0 -1
  112. package/dist/handlers/cron.d.ts +0 -73
  113. package/dist/handlers/cron.d.ts.map +0 -1
  114. package/dist/handlers/cron.js +0 -43
  115. package/dist/handlers/cron.js.map +0 -1
  116. package/dist/handlers/index.d.ts +0 -6
  117. package/dist/handlers/index.d.ts.map +0 -1
  118. package/dist/handlers/index.js +0 -6
  119. package/dist/handlers/index.js.map +0 -1
  120. package/dist/handlers/sse.d.ts +0 -163
  121. package/dist/handlers/sse.d.ts.map +0 -1
  122. package/dist/handlers/sse.js +0 -175
  123. package/dist/handlers/sse.js.map +0 -1
  124. package/dist/handlers/stream.d.ts +0 -52
  125. package/dist/handlers/stream.d.ts.map +0 -1
  126. package/dist/handlers/stream.js +0 -108
  127. package/dist/handlers/stream.js.map +0 -1
  128. package/dist/handlers/webrtc.d.ts +0 -49
  129. package/dist/handlers/webrtc.d.ts.map +0 -1
  130. package/dist/handlers/webrtc.js +0 -109
  131. package/dist/handlers/webrtc.js.map +0 -1
  132. package/dist/handlers/websocket.d.ts +0 -88
  133. package/dist/handlers/websocket.d.ts.map +0 -1
  134. package/dist/handlers/websocket.js +0 -161
  135. package/dist/handlers/websocket.js.map +0 -1
  136. package/dist/logger/console.d.ts +0 -70
  137. package/dist/logger/console.d.ts.map +0 -1
  138. package/dist/logger/console.js +0 -278
  139. package/dist/logger/console.js.map +0 -1
  140. package/dist/logger/index.d.ts +0 -3
  141. package/dist/logger/index.d.ts.map +0 -1
  142. package/dist/logger/index.js +0 -3
  143. package/dist/logger/index.js.map +0 -1
  144. package/dist/logger/internal.d.ts +0 -79
  145. package/dist/logger/internal.d.ts.map +0 -1
  146. package/dist/logger/internal.js +0 -133
  147. package/dist/logger/internal.js.map +0 -1
  148. package/dist/logger/logger.d.ts +0 -41
  149. package/dist/logger/logger.d.ts.map +0 -1
  150. package/dist/logger/logger.js +0 -2
  151. package/dist/logger/logger.js.map +0 -1
  152. package/dist/logger/user.d.ts +0 -8
  153. package/dist/logger/user.d.ts.map +0 -1
  154. package/dist/logger/user.js +0 -7
  155. package/dist/logger/user.js.map +0 -1
  156. package/dist/logger/util.d.ts +0 -11
  157. package/dist/logger/util.d.ts.map +0 -1
  158. package/dist/logger/util.js +0 -77
  159. package/dist/logger/util.js.map +0 -1
  160. package/dist/middleware.d.ts +0 -105
  161. package/dist/middleware.d.ts.map +0 -1
  162. package/dist/middleware.js +0 -763
  163. package/dist/middleware.js.map +0 -1
  164. package/dist/otel/config.d.ts +0 -19
  165. package/dist/otel/config.d.ts.map +0 -1
  166. package/dist/otel/config.js +0 -26
  167. package/dist/otel/config.js.map +0 -1
  168. package/dist/otel/console.d.ts +0 -33
  169. package/dist/otel/console.d.ts.map +0 -1
  170. package/dist/otel/console.js +0 -86
  171. package/dist/otel/console.js.map +0 -1
  172. package/dist/otel/exporters/index.d.ts +0 -4
  173. package/dist/otel/exporters/index.d.ts.map +0 -1
  174. package/dist/otel/exporters/index.js +0 -4
  175. package/dist/otel/exporters/index.js.map +0 -1
  176. package/dist/otel/exporters/jsonl-log-exporter.d.ts +0 -36
  177. package/dist/otel/exporters/jsonl-log-exporter.d.ts.map +0 -1
  178. package/dist/otel/exporters/jsonl-log-exporter.js +0 -103
  179. package/dist/otel/exporters/jsonl-log-exporter.js.map +0 -1
  180. package/dist/otel/exporters/jsonl-metric-exporter.d.ts +0 -40
  181. package/dist/otel/exporters/jsonl-metric-exporter.d.ts.map +0 -1
  182. package/dist/otel/exporters/jsonl-metric-exporter.js +0 -104
  183. package/dist/otel/exporters/jsonl-metric-exporter.js.map +0 -1
  184. package/dist/otel/exporters/jsonl-trace-exporter.d.ts +0 -36
  185. package/dist/otel/exporters/jsonl-trace-exporter.d.ts.map +0 -1
  186. package/dist/otel/exporters/jsonl-trace-exporter.js +0 -111
  187. package/dist/otel/exporters/jsonl-trace-exporter.js.map +0 -1
  188. package/dist/otel/fetch.d.ts +0 -12
  189. package/dist/otel/fetch.d.ts.map +0 -1
  190. package/dist/otel/fetch.js +0 -82
  191. package/dist/otel/fetch.js.map +0 -1
  192. package/dist/otel/http.d.ts +0 -16
  193. package/dist/otel/http.d.ts.map +0 -1
  194. package/dist/otel/http.js +0 -44
  195. package/dist/otel/http.js.map +0 -1
  196. package/dist/otel/logger.d.ts +0 -37
  197. package/dist/otel/logger.d.ts.map +0 -1
  198. package/dist/otel/logger.js +0 -265
  199. package/dist/otel/logger.js.map +0 -1
  200. package/dist/otel/otel.d.ts +0 -68
  201. package/dist/otel/otel.d.ts.map +0 -1
  202. package/dist/otel/otel.js +0 -245
  203. package/dist/otel/otel.js.map +0 -1
  204. package/dist/otel/tracestate.d.ts +0 -44
  205. package/dist/otel/tracestate.d.ts.map +0 -1
  206. package/dist/otel/tracestate.js +0 -84
  207. package/dist/otel/tracestate.js.map +0 -1
  208. package/dist/router.d.ts +0 -66
  209. package/dist/router.d.ts.map +0 -1
  210. package/dist/router.js +0 -44
  211. package/dist/router.js.map +0 -1
  212. package/dist/services/evalrun/composite.d.ts +0 -21
  213. package/dist/services/evalrun/composite.d.ts.map +0 -1
  214. package/dist/services/evalrun/composite.js +0 -26
  215. package/dist/services/evalrun/composite.js.map +0 -1
  216. package/dist/services/evalrun/http.d.ts +0 -24
  217. package/dist/services/evalrun/http.d.ts.map +0 -1
  218. package/dist/services/evalrun/http.js +0 -115
  219. package/dist/services/evalrun/http.js.map +0 -1
  220. package/dist/services/evalrun/index.d.ts +0 -5
  221. package/dist/services/evalrun/index.d.ts.map +0 -1
  222. package/dist/services/evalrun/index.js +0 -5
  223. package/dist/services/evalrun/index.js.map +0 -1
  224. package/dist/services/evalrun/json.d.ts +0 -21
  225. package/dist/services/evalrun/json.d.ts.map +0 -1
  226. package/dist/services/evalrun/json.js +0 -38
  227. package/dist/services/evalrun/json.js.map +0 -1
  228. package/dist/services/evalrun/local.d.ts +0 -19
  229. package/dist/services/evalrun/local.d.ts.map +0 -1
  230. package/dist/services/evalrun/local.js +0 -22
  231. package/dist/services/evalrun/local.js.map +0 -1
  232. package/dist/services/local/_db.d.ts +0 -4
  233. package/dist/services/local/_db.d.ts.map +0 -1
  234. package/dist/services/local/_db.js +0 -281
  235. package/dist/services/local/_db.js.map +0 -1
  236. package/dist/services/local/_router.d.ts +0 -3
  237. package/dist/services/local/_router.d.ts.map +0 -1
  238. package/dist/services/local/_router.js +0 -28
  239. package/dist/services/local/_router.js.map +0 -1
  240. package/dist/services/local/_util.d.ts +0 -18
  241. package/dist/services/local/_util.d.ts.map +0 -1
  242. package/dist/services/local/_util.js +0 -44
  243. package/dist/services/local/_util.js.map +0 -1
  244. package/dist/services/local/email.d.ts +0 -24
  245. package/dist/services/local/email.d.ts.map +0 -1
  246. package/dist/services/local/email.js +0 -58
  247. package/dist/services/local/email.js.map +0 -1
  248. package/dist/services/local/index.d.ts +0 -10
  249. package/dist/services/local/index.d.ts.map +0 -1
  250. package/dist/services/local/index.js +0 -10
  251. package/dist/services/local/index.js.map +0 -1
  252. package/dist/services/local/keyvalue.d.ts +0 -17
  253. package/dist/services/local/keyvalue.d.ts.map +0 -1
  254. package/dist/services/local/keyvalue.js +0 -133
  255. package/dist/services/local/keyvalue.js.map +0 -1
  256. package/dist/services/local/queue.d.ts +0 -10
  257. package/dist/services/local/queue.d.ts.map +0 -1
  258. package/dist/services/local/queue.js +0 -96
  259. package/dist/services/local/queue.js.map +0 -1
  260. package/dist/services/local/stream.d.ts +0 -12
  261. package/dist/services/local/stream.d.ts.map +0 -1
  262. package/dist/services/local/stream.js +0 -266
  263. package/dist/services/local/stream.js.map +0 -1
  264. package/dist/services/local/task.d.ts +0 -55
  265. package/dist/services/local/task.d.ts.map +0 -1
  266. package/dist/services/local/task.js +0 -1248
  267. package/dist/services/local/task.js.map +0 -1
  268. package/dist/services/local/vector.d.ts +0 -17
  269. package/dist/services/local/vector.d.ts.map +0 -1
  270. package/dist/services/local/vector.js +0 -303
  271. package/dist/services/local/vector.js.map +0 -1
  272. package/dist/services/sandbox/http.d.ts +0 -23
  273. package/dist/services/sandbox/http.d.ts.map +0 -1
  274. package/dist/services/sandbox/http.js +0 -327
  275. package/dist/services/sandbox/http.js.map +0 -1
  276. package/dist/services/sandbox/index.d.ts +0 -2
  277. package/dist/services/sandbox/index.d.ts.map +0 -1
  278. package/dist/services/sandbox/index.js +0 -2
  279. package/dist/services/sandbox/index.js.map +0 -1
  280. package/dist/services/session/composite.d.ts +0 -21
  281. package/dist/services/session/composite.d.ts.map +0 -1
  282. package/dist/services/session/composite.js +0 -26
  283. package/dist/services/session/composite.js.map +0 -1
  284. package/dist/services/session/http.d.ts +0 -34
  285. package/dist/services/session/http.d.ts.map +0 -1
  286. package/dist/services/session/http.js +0 -124
  287. package/dist/services/session/http.js.map +0 -1
  288. package/dist/services/session/index.d.ts +0 -5
  289. package/dist/services/session/index.d.ts.map +0 -1
  290. package/dist/services/session/index.js +0 -5
  291. package/dist/services/session/index.js.map +0 -1
  292. package/dist/services/session/json.d.ts +0 -22
  293. package/dist/services/session/json.d.ts.map +0 -1
  294. package/dist/services/session/json.js +0 -35
  295. package/dist/services/session/json.js.map +0 -1
  296. package/dist/services/session/local.d.ts +0 -19
  297. package/dist/services/session/local.d.ts.map +0 -1
  298. package/dist/services/session/local.js +0 -23
  299. package/dist/services/session/local.js.map +0 -1
  300. package/dist/services/thread/local.d.ts +0 -20
  301. package/dist/services/thread/local.d.ts.map +0 -1
  302. package/dist/services/thread/local.js +0 -158
  303. package/dist/services/thread/local.js.map +0 -1
  304. package/dist/session.d.ts +0 -734
  305. package/dist/session.d.ts.map +0 -1
  306. package/dist/session.js +0 -1140
  307. package/dist/session.js.map +0 -1
  308. package/dist/signature.d.ts +0 -22
  309. package/dist/signature.d.ts.map +0 -1
  310. package/dist/signature.js +0 -63
  311. package/dist/signature.js.map +0 -1
  312. package/dist/validator.d.ts +0 -142
  313. package/dist/validator.d.ts.map +0 -1
  314. package/dist/validator.js +0 -149
  315. package/dist/validator.js.map +0 -1
  316. package/dist/version-check.d.ts +0 -20
  317. package/dist/version-check.d.ts.map +0 -1
  318. package/dist/version-check.js +0 -157
  319. package/dist/version-check.js.map +0 -1
  320. package/dist/web.d.ts +0 -8
  321. package/dist/web.d.ts.map +0 -1
  322. package/dist/web.js +0 -67
  323. package/dist/web.js.map +0 -1
  324. package/dist/webrtc-signaling.d.ts +0 -80
  325. package/dist/webrtc-signaling.d.ts.map +0 -1
  326. package/dist/webrtc-signaling.js +0 -237
  327. package/dist/webrtc-signaling.js.map +0 -1
  328. package/dist/workbench.d.ts +0 -17
  329. package/dist/workbench.d.ts.map +0 -1
  330. package/dist/workbench.js +0 -605
  331. package/dist/workbench.js.map +0 -1
  332. package/src/_config.ts +0 -163
  333. package/src/_context.ts +0 -240
  334. package/src/_events.ts +0 -142
  335. package/src/_globals.ts +0 -92
  336. package/src/_idle.ts +0 -10
  337. package/src/_metadata.ts +0 -407
  338. package/src/_process-protection.ts +0 -71
  339. package/src/_server.ts +0 -109
  340. package/src/_services.ts +0 -379
  341. package/src/_standalone.ts +0 -710
  342. package/src/_tokens.ts +0 -114
  343. package/src/_util.ts +0 -62
  344. package/src/_validation.ts +0 -119
  345. package/src/_waituntil.ts +0 -188
  346. package/src/agent.ts +0 -2739
  347. package/src/app.ts +0 -769
  348. package/src/bootstrap.ts +0 -321
  349. package/src/bun-s3-patch.ts +0 -224
  350. package/src/cors.ts +0 -137
  351. package/src/dev-patches/aisdk.ts +0 -169
  352. package/src/dev-patches/gateway.ts +0 -68
  353. package/src/dev-patches/index.ts +0 -37
  354. package/src/dev-patches/otel-llm.ts +0 -405
  355. package/src/devmode.ts +0 -171
  356. package/src/eval.ts +0 -109
  357. package/src/globals.d.ts +0 -28
  358. package/src/handlers/_route-meta.ts +0 -33
  359. package/src/handlers/cron.ts +0 -141
  360. package/src/handlers/index.ts +0 -18
  361. package/src/handlers/sse.ts +0 -358
  362. package/src/handlers/stream.ts +0 -121
  363. package/src/handlers/webrtc.ts +0 -125
  364. package/src/handlers/websocket.ts +0 -203
  365. package/src/logger/console.ts +0 -323
  366. package/src/logger/index.ts +0 -2
  367. package/src/logger/internal.ts +0 -165
  368. package/src/logger/logger.ts +0 -44
  369. package/src/logger/user.ts +0 -15
  370. package/src/logger/util.ts +0 -80
  371. package/src/middleware.ts +0 -1095
  372. package/src/otel/config.ts +0 -47
  373. package/src/otel/console.ts +0 -91
  374. package/src/otel/exporters/README.md +0 -217
  375. package/src/otel/exporters/index.ts +0 -3
  376. package/src/otel/exporters/jsonl-log-exporter.ts +0 -113
  377. package/src/otel/exporters/jsonl-metric-exporter.ts +0 -120
  378. package/src/otel/exporters/jsonl-trace-exporter.ts +0 -121
  379. package/src/otel/fetch.ts +0 -105
  380. package/src/otel/http.ts +0 -53
  381. package/src/otel/logger.ts +0 -293
  382. package/src/otel/otel.ts +0 -354
  383. package/src/otel/tracestate.ts +0 -108
  384. package/src/router.ts +0 -75
  385. package/src/services/evalrun/composite.ts +0 -34
  386. package/src/services/evalrun/http.ts +0 -167
  387. package/src/services/evalrun/index.ts +0 -4
  388. package/src/services/evalrun/json.ts +0 -46
  389. package/src/services/evalrun/local.ts +0 -28
  390. package/src/services/local/README.md +0 -1576
  391. package/src/services/local/_db.ts +0 -353
  392. package/src/services/local/_router.ts +0 -40
  393. package/src/services/local/_util.ts +0 -55
  394. package/src/services/local/email.ts +0 -91
  395. package/src/services/local/index.ts +0 -9
  396. package/src/services/local/keyvalue.ts +0 -174
  397. package/src/services/local/queue.ts +0 -145
  398. package/src/services/local/stream.ts +0 -358
  399. package/src/services/local/task.ts +0 -1711
  400. package/src/services/local/vector.ts +0 -438
  401. package/src/services/sandbox/http.ts +0 -522
  402. package/src/services/sandbox/index.ts +0 -1
  403. package/src/services/session/composite.ts +0 -33
  404. package/src/services/session/http.ts +0 -167
  405. package/src/services/session/index.ts +0 -4
  406. package/src/services/session/json.ts +0 -42
  407. package/src/services/session/local.ts +0 -33
  408. package/src/services/thread/local.ts +0 -199
  409. package/src/session.ts +0 -1960
  410. package/src/signature.ts +0 -82
  411. package/src/validator.ts +0 -283
  412. package/src/version-check.ts +0 -184
  413. package/src/web.ts +0 -76
  414. package/src/webrtc-signaling.ts +0 -288
  415. package/src/workbench.ts +0 -725
@@ -1,167 +0,0 @@
1
- import { APIClient, APIResponseSchemaNoData } from '@agentuity/server';
2
- import {
3
- type SessionEventProvider,
4
- type SessionStartEvent,
5
- SessionStartEventDelayedSchema,
6
- SessionCompleteEventDelayedSchema,
7
- type SessionCompleteEvent,
8
- type Logger,
9
- StructuredError,
10
- } from '@agentuity/core';
11
- import { context, trace, SpanStatusCode } from '@opentelemetry/api';
12
- import { internal } from '../../logger/internal';
13
-
14
- const SessionResponseError = StructuredError('SessionResponseError');
15
-
16
- /**
17
- * An implementation of the SessionEventProvider which uses HTTP for delivery.
18
- *
19
- * This provider checks that the event has required fields (orgId, projectId for start events)
20
- * before sending to the backend. If required fields are missing, the event is silently skipped.
21
- */
22
- export class HTTPSessionEventProvider implements SessionEventProvider {
23
- private apiClient: APIClient;
24
- private logger: Logger;
25
-
26
- constructor(client: APIClient, logger: Logger) {
27
- this.apiClient = client;
28
- this.logger = logger;
29
- }
30
-
31
- /**
32
- * Check if a start event has all required fields for HTTP delivery
33
- */
34
- private canSendStartEvent(event: SessionStartEvent): boolean {
35
- // orgId and projectId are required for the backend
36
- if (!event.orgId || !event.projectId) {
37
- internal.info(
38
- '[session-http] skipping start event - missing required fields: orgId=%s, projectId=%s',
39
- event.orgId ?? 'missing',
40
- event.projectId ?? 'missing'
41
- );
42
- return false;
43
- }
44
- return true;
45
- }
46
-
47
- /**
48
- * called when the session starts
49
- *
50
- * @param event SessionStartEvent
51
- */
52
- async start(event: SessionStartEvent): Promise<void> {
53
- // Check required fields before sending
54
- if (!this.canSendStartEvent(event)) {
55
- return;
56
- }
57
-
58
- const tracer = trace.getTracer('session');
59
- const currentContext = context.active();
60
- const span = tracer.startSpan('Session Start', {}, currentContext);
61
-
62
- try {
63
- internal.info('[session-http] sending start event: %s', event.id);
64
- this.logger.debug('Sending session start event: %s', event.id);
65
-
66
- const spanContext = trace.setSpan(currentContext, span);
67
- const resp = await context.with(spanContext, () =>
68
- this.apiClient.post(
69
- '/session',
70
- { ...event, timestamp: Date.now() },
71
- APIResponseSchemaNoData(),
72
- SessionStartEventDelayedSchema
73
- )
74
- );
75
-
76
- if (resp.success) {
77
- internal.info('[session-http] start event sent successfully: %s', event.id);
78
- this.logger.debug('Session start event sent successfully: %s', event.id);
79
- this.startedSessions.add(event.id);
80
- span.setStatus({ code: SpanStatusCode.OK });
81
- return;
82
- }
83
- internal.info('[session-http] start event failed: %s - %s', event.id, resp.message);
84
- span.setStatus({ code: SpanStatusCode.ERROR, message: resp.message });
85
- throw new SessionResponseError({ message: resp.message });
86
- } catch (error) {
87
- span.recordException(error as Error);
88
- span.setStatus({
89
- code: SpanStatusCode.ERROR,
90
- message: error instanceof Error ? error.message : String(error),
91
- });
92
- throw error;
93
- } finally {
94
- span.end();
95
- }
96
- }
97
-
98
- /**
99
- * Track session IDs that have been started (to know if we should send complete)
100
- */
101
- private startedSessions = new Set<string>();
102
-
103
- /**
104
- * called when the session completes
105
- *
106
- * @param event SessionCompleteEvent
107
- */
108
- async complete(event: SessionCompleteEvent): Promise<void> {
109
- // Always create the "Session End" span for telemetry purposes.
110
- // This span is used by Catalyst to detect when a session has completed,
111
- // so it must always be emitted even if we don't send the HTTP event.
112
- const tracer = trace.getTracer('session');
113
- const currentContext = context.active();
114
- const span = tracer.startSpan('Session End', {}, currentContext);
115
-
116
- try {
117
- // Only send HTTP complete event if we successfully sent a start event.
118
- // This prevents sending orphaned complete events when start was skipped.
119
- // However, we still create the span above for telemetry.
120
- if (!this.startedSessions.has(event.id)) {
121
- internal.info(
122
- '[session-http] skipping HTTP complete event (no matching start), but emitting Session End span: %s',
123
- event.id
124
- );
125
- span.setStatus({ code: SpanStatusCode.OK });
126
- return;
127
- }
128
-
129
- internal.info(
130
- '[session-http] sending complete event: %s, userData: %s',
131
- event.id,
132
- event.userData ? `${event.userData.length} bytes` : 'none'
133
- );
134
- this.logger.debug('Sending session complete event: %s', event.id);
135
-
136
- const spanContext = trace.setSpan(currentContext, span);
137
- const resp = await context.with(spanContext, () =>
138
- this.apiClient.put(
139
- '/session',
140
- { ...event, timestamp: Date.now() },
141
- APIResponseSchemaNoData(),
142
- SessionCompleteEventDelayedSchema
143
- )
144
- );
145
-
146
- if (resp.success) {
147
- this.startedSessions.delete(event.id);
148
- internal.info('[session-http] complete event sent successfully: %s', event.id);
149
- this.logger.debug('Session complete event sent successfully: %s', event.id);
150
- span.setStatus({ code: SpanStatusCode.OK });
151
- return;
152
- }
153
- internal.info('[session-http] complete event failed: %s - %s', event.id, resp.message);
154
- span.setStatus({ code: SpanStatusCode.ERROR, message: resp.message });
155
- throw new SessionResponseError({ message: resp.message });
156
- } catch (error) {
157
- span.recordException(error as Error);
158
- span.setStatus({
159
- code: SpanStatusCode.ERROR,
160
- message: error instanceof Error ? error.message : String(error),
161
- });
162
- throw error;
163
- } finally {
164
- span.end();
165
- }
166
- }
167
- }
@@ -1,4 +0,0 @@
1
- export * from './composite';
2
- export * from './http';
3
- export * from './json';
4
- export * from './local';
@@ -1,42 +0,0 @@
1
- import { join } from 'node:path';
2
- import { randomUUID } from 'node:crypto';
3
- import {
4
- type SessionEventProvider,
5
- type SessionStartEvent,
6
- type SessionCompleteEvent,
7
- } from '@agentuity/core';
8
-
9
- /**
10
- * An implementation of the SessionEventProvider which uses JSON logs for delivery
11
- */
12
- export class JSONSessionEventProvider implements SessionEventProvider {
13
- private directory: string;
14
-
15
- constructor(directory: string) {
16
- this.directory = directory;
17
- }
18
- private makeFilename(type: 'start' | 'complete'): string {
19
- return join(this.directory, `session-${type}.${Date.now()}${randomUUID()}.json`);
20
- }
21
- /**
22
- * called when the session starts
23
- *
24
- * @param event SessionStartEvent
25
- */
26
- async start(event: SessionStartEvent): Promise<void> {
27
- const filename = this.makeFilename('start');
28
- const payload = JSON.stringify({ ...event, timestamp: new Date() }) + '\n';
29
- await Bun.file(filename).write(payload);
30
- }
31
-
32
- /**
33
- * called when the session completes
34
- *
35
- * @param event SessionCompleteEvent
36
- */
37
- async complete(event: SessionCompleteEvent): Promise<void> {
38
- const filename = this.makeFilename('complete');
39
- const payload = JSON.stringify({ ...event, timestamp: new Date() }) + '\n';
40
- await Bun.file(filename).write(payload);
41
- }
42
- }
@@ -1,33 +0,0 @@
1
- import {
2
- type SessionEventProvider,
3
- type SessionStartEvent,
4
- type SessionCompleteEvent,
5
- } from '@agentuity/core';
6
- import { internal } from '../../logger/internal';
7
-
8
- /**
9
- * An implementation of the SessionEventProvider which is no-op
10
- */
11
- export class LocalSessionEventProvider implements SessionEventProvider {
12
- /**
13
- * called when the session starts
14
- *
15
- * @param event SessionStartEvent
16
- */
17
- async start(event: SessionStartEvent): Promise<void> {
18
- internal.info('[session-local] start event (no-op): %s', event.id);
19
- }
20
-
21
- /**
22
- * called when the session completes
23
- *
24
- * @param event SessionCompleteEvent
25
- */
26
- async complete(event: SessionCompleteEvent): Promise<void> {
27
- internal.info(
28
- '[session-local] complete event (no-op): %s, userData: %s',
29
- event.id,
30
- event.userData ? `${event.userData.length} bytes` : 'none'
31
- );
32
- }
33
- }
@@ -1,199 +0,0 @@
1
- import type { Context } from 'hono';
2
- import type { Database } from 'bun:sqlite';
3
- import type { AppState } from '../../index';
4
- import type { Env } from '../../app';
5
- import {
6
- DefaultThread,
7
- DefaultThreadIDProvider,
8
- parseThreadData,
9
- validateThreadIdOrThrow,
10
- type Thread,
11
- type ThreadIDProvider,
12
- type ThreadProvider,
13
- } from '../../session';
14
- import { getLocalDB } from '../local/_db';
15
-
16
- /**
17
- * Local thread provider with SQLite persistence.
18
- * Stores thread state in local DB for development and testing.
19
- * Suitable for local development and testing with persistence across requests.
20
- */
21
- export class LocalThreadProvider implements ThreadProvider {
22
- private appState: AppState | null = null;
23
- private threadIDProvider: ThreadIDProvider = new DefaultThreadIDProvider();
24
- private db: Database | null = null;
25
-
26
- async initialize(appState: AppState): Promise<void> {
27
- this.appState = appState;
28
- this.db = getLocalDB();
29
-
30
- // Create threads table if it doesn't exist
31
- this.db.run(`
32
- CREATE TABLE IF NOT EXISTS threads (
33
- id TEXT PRIMARY KEY,
34
- state TEXT NOT NULL,
35
- updated_at INTEGER NOT NULL
36
- )
37
- `);
38
- }
39
-
40
- setThreadIDProvider(provider: ThreadIDProvider): void {
41
- this.threadIDProvider = provider;
42
- }
43
-
44
- async restore(ctx: Context<Env>): Promise<Thread> {
45
- if (this.appState === null || this.db === null) {
46
- throw new Error(
47
- 'LocalThreadProvider.restore called before initialize(): appState/db not set; call initialize(appState) first'
48
- );
49
- }
50
-
51
- const threadId = await this.threadIDProvider.getThreadId(this.appState, ctx);
52
- validateThreadIdOrThrow(threadId);
53
-
54
- // Create a restore function for lazy loading
55
- const restoreFn = async (): Promise<{
56
- state: Map<string, unknown>;
57
- metadata: Record<string, unknown>;
58
- }> => {
59
- if (!this.db) {
60
- return { state: new Map(), metadata: {} };
61
- }
62
-
63
- const row = this.db
64
- .query<{ state: string }, [string]>('SELECT state FROM threads WHERE id = ?')
65
- .get(threadId);
66
-
67
- const { flatStateJson, metadata } = parseThreadData(row?.state);
68
-
69
- const state = new Map<string, unknown>();
70
- if (flatStateJson) {
71
- try {
72
- const data = JSON.parse(flatStateJson);
73
- for (const [key, value] of Object.entries(data)) {
74
- state.set(key, value);
75
- }
76
- } catch {
77
- // Continue with empty state if parsing fails
78
- }
79
- }
80
-
81
- return { state, metadata: metadata || {} };
82
- };
83
-
84
- return new DefaultThread(this, threadId, restoreFn);
85
- }
86
-
87
- async save(thread: Thread): Promise<void> {
88
- if (!this.db || !(thread instanceof DefaultThread)) {
89
- return;
90
- }
91
-
92
- const saveMode = thread.getSaveMode();
93
- if (saveMode === 'none') {
94
- return;
95
- }
96
-
97
- const now = Date.now();
98
-
99
- if (saveMode === 'merge') {
100
- // For merge, we need to load existing state, apply operations, then save
101
- const operations = thread.getPendingOperations();
102
- const metadata = thread.getMetadataForSave();
103
-
104
- // Load existing state
105
- const row = this.db
106
- .query<{ state: string }, [string]>('SELECT state FROM threads WHERE id = ?')
107
- .get(thread.id);
108
-
109
- const { flatStateJson, metadata: existingMetadata } = parseThreadData(row?.state);
110
-
111
- const state: Record<string, unknown> = {};
112
- if (flatStateJson) {
113
- try {
114
- Object.assign(state, JSON.parse(flatStateJson));
115
- } catch {
116
- // Continue with empty state if parsing fails
117
- }
118
- }
119
-
120
- // Apply operations
121
- for (const op of operations) {
122
- switch (op.op) {
123
- case 'clear':
124
- for (const key of Object.keys(state)) {
125
- delete state[key];
126
- }
127
- break;
128
- case 'set':
129
- if (op.key !== undefined) {
130
- state[op.key] = op.value;
131
- }
132
- break;
133
- case 'delete':
134
- if (op.key !== undefined) {
135
- delete state[op.key];
136
- }
137
- break;
138
- case 'push':
139
- if (op.key !== undefined) {
140
- const existing = state[op.key];
141
- let arr: unknown[];
142
- if (Array.isArray(existing)) {
143
- existing.push(op.value);
144
- arr = existing;
145
- } else if (existing === undefined) {
146
- arr = [op.value];
147
- state[op.key] = arr;
148
- } else {
149
- // If non-array, silently skip
150
- continue;
151
- }
152
- // Apply maxRecords limit
153
- if (op.maxRecords !== undefined && arr.length > op.maxRecords) {
154
- state[op.key] = arr.slice(arr.length - op.maxRecords);
155
- }
156
- }
157
- break;
158
- }
159
- }
160
-
161
- // Build final data
162
- const finalMetadata = metadata || existingMetadata || {};
163
- const hasState = Object.keys(state).length > 0;
164
- const hasMetadata = Object.keys(finalMetadata).length > 0;
165
-
166
- let stateJson = '';
167
- if (hasState || hasMetadata) {
168
- const data: { state?: Record<string, unknown>; metadata?: Record<string, unknown> } =
169
- {};
170
- if (hasState) data.state = state;
171
- if (hasMetadata) data.metadata = finalMetadata;
172
- stateJson = JSON.stringify(data);
173
- }
174
-
175
- this.db.run(
176
- `INSERT INTO threads (id, state, updated_at) VALUES (?, ?, ?)
177
- ON CONFLICT(id) DO UPDATE SET state = ?, updated_at = ?`,
178
- [thread.id, stateJson, now, stateJson, now]
179
- );
180
- } else {
181
- // Full save
182
- const stateJson = await thread.getSerializedState();
183
- this.db.run(
184
- `INSERT INTO threads (id, state, updated_at) VALUES (?, ?, ?)
185
- ON CONFLICT(id) DO UPDATE SET state = ?, updated_at = ?`,
186
- [thread.id, stateJson, now, stateJson, now]
187
- );
188
- }
189
- }
190
-
191
- async destroy(thread: Thread): Promise<void> {
192
- if (!this.db) {
193
- return;
194
- }
195
-
196
- // Delete thread from DB
197
- this.db.run('DELETE FROM threads WHERE id = ?', [thread.id]);
198
- }
199
- }