@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,108 +0,0 @@
1
- import { stream as honoStream } from 'hono/streaming';
2
- import { context as otelContext, ROOT_CONTEXT } from '@opentelemetry/api';
3
- import { STREAM_DONE_PROMISE_KEY, IS_STREAMING_RESPONSE_KEY } from './sse';
4
- import { tagRoute } from './_route-meta';
5
- /**
6
- * Creates a streaming middleware for returning ReadableStream responses.
7
- *
8
- * Use with router.post() (or any HTTP method) to create a streaming endpoint:
9
- *
10
- * @example
11
- * ```typescript
12
- * import { createRouter, stream } from '@agentuity/runtime';
13
- *
14
- * const router = createRouter();
15
- *
16
- * router.post('/events', stream((c) => {
17
- * return new ReadableStream({
18
- * start(controller) {
19
- * controller.enqueue('event 1\n');
20
- * controller.enqueue('event 2\n');
21
- * controller.close();
22
- * }
23
- * });
24
- * }));
25
- * ```
26
- *
27
- * @example
28
- * ```typescript
29
- * // Async stream with data from request body
30
- * router.post('/process', stream(async (c) => {
31
- * const body = await c.req.json();
32
- *
33
- * return new ReadableStream({
34
- * async start(controller) {
35
- * for (const item of body.items) {
36
- * controller.enqueue(`Processing: ${item}\n`);
37
- * await new Promise(r => setTimeout(r, 100));
38
- * }
39
- * controller.close();
40
- * }
41
- * });
42
- * }));
43
- * ```
44
- *
45
- * @param handler - Handler function returning a ReadableStream
46
- * @returns Hono handler for streaming response
47
- */
48
- export function stream(handler) {
49
- const streamHandler = (c) => {
50
- // Track stream completion for deferred session/thread saving
51
- // This promise resolves when the stream completes (pipe finishes or errors)
52
- let resolveDone;
53
- let rejectDone;
54
- const donePromise = new Promise((resolve, reject) => {
55
- resolveDone = resolve;
56
- rejectDone = reject;
57
- });
58
- // Idempotent function to mark stream as completed
59
- let isDone = false;
60
- const markDone = (error) => {
61
- if (isDone)
62
- return;
63
- isDone = true;
64
- if (error && rejectDone) {
65
- rejectDone(error);
66
- }
67
- else if (resolveDone) {
68
- resolveDone();
69
- }
70
- };
71
- // Expose completion tracking to middleware
72
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
73
- c.set(STREAM_DONE_PROMISE_KEY, donePromise);
74
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
75
- c.set(IS_STREAMING_RESPONSE_KEY, true);
76
- c.header('Content-Type', 'application/octet-stream');
77
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
78
- return honoStream(c, async (s) => {
79
- const runInContext = async () => {
80
- try {
81
- let streamResult = handler(c);
82
- if (streamResult instanceof Promise) {
83
- streamResult = await streamResult;
84
- }
85
- await s.pipe(streamResult);
86
- // Stream completed successfully
87
- markDone();
88
- }
89
- catch (err) {
90
- c.var.logger?.error('Stream error:', err);
91
- markDone(err);
92
- throw err;
93
- }
94
- };
95
- // IMPORTANT: We run in ROOT_CONTEXT (no active OTEL span) to avoid a Bun bug
96
- // where OTEL-instrumented fetch conflicts with streaming responses.
97
- // This causes "ReadableStream has already been used" errors when AI SDK's
98
- // generateText/generateObject (which use fetch + stream.tee() internally)
99
- // are called inside stream handlers. Running without an active span makes
100
- // our OTEL fetch wrapper use the original unpatched fetch.
101
- // See: https://github.com/agentuity/sdk/issues/471
102
- // See: https://github.com/oven-sh/bun/issues/24766
103
- await otelContext.with(ROOT_CONTEXT, runInContext);
104
- });
105
- };
106
- return tagRoute(streamHandler, { type: 'stream' });
107
- }
108
- //# sourceMappingURL=stream.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/handlers/stream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,OAAO,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAUzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,UAAU,MAAM,CAAsB,OAAyB;IACpE,MAAM,aAAa,GAAe,CAAC,CAAa,EAAE,EAAE;QACnD,6DAA6D;QAC7D,4EAA4E;QAC5E,IAAI,WAAqC,CAAC;QAC1C,IAAI,UAAoD,CAAC;QACzD,MAAM,WAAW,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzD,WAAW,GAAG,OAAO,CAAC;YACtB,UAAU,GAAG,MAAM,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,kDAAkD;QAClD,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,MAAM,QAAQ,GAAG,CAAC,KAAe,EAAE,EAAE;YACpC,IAAI,MAAM;gBAAE,OAAO;YACnB,MAAM,GAAG,IAAI,CAAC;YACd,IAAI,KAAK,IAAI,UAAU,EAAE,CAAC;gBACzB,UAAU,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;iBAAM,IAAI,WAAW,EAAE,CAAC;gBACxB,WAAW,EAAE,CAAC;YACf,CAAC;QACF,CAAC,CAAC;QAEF,2CAA2C;QAC3C,8DAA8D;QAC7D,CAAS,CAAC,GAAG,CAAC,uBAAuB,EAAE,WAAW,CAAC,CAAC;QACrD,8DAA8D;QAC7D,CAAS,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC;QAEhD,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,0BAA0B,CAAC,CAAC;QAErD,8DAA8D;QAC9D,OAAO,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAM,EAAE,EAAE;YACrC,MAAM,YAAY,GAAG,KAAK,IAAI,EAAE;gBAC/B,IAAI,CAAC;oBACJ,IAAI,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC9B,IAAI,YAAY,YAAY,OAAO,EAAE,CAAC;wBACrC,YAAY,GAAG,MAAM,YAAY,CAAC;oBACnC,CAAC;oBACD,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBAC3B,gCAAgC;oBAChC,QAAQ,EAAE,CAAC;gBACZ,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACd,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;oBAC1C,QAAQ,CAAC,GAAG,CAAC,CAAC;oBACd,MAAM,GAAG,CAAC;gBACX,CAAC;YACF,CAAC,CAAC;YAEF,6EAA6E;YAC7E,oEAAoE;YACpE,0EAA0E;YAC1E,0EAA0E;YAC1E,0EAA0E;YAC1E,2DAA2D;YAC3D,mDAAmD;YACnD,mDAAmD;YACnD,MAAM,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,QAAQ,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;AACpD,CAAC"}
@@ -1,49 +0,0 @@
1
- import type { Context, MiddlewareHandler } from 'hono';
2
- import type { Env } from '../app';
3
- import { WebRTCRoomManager, type WebRTCOptions } from '../webrtc-signaling';
4
- export type { WebRTCOptions };
5
- /**
6
- * Handler function for WebRTC signaling connections.
7
- * Receives the Hono context and WebRTCRoomManager.
8
- */
9
- export type WebRTCHandler<E extends Env = Env> = (c: Context<E>, roomManager: WebRTCRoomManager) => void | Promise<void>;
10
- /**
11
- * Creates a WebRTC signaling middleware for peer-to-peer communication.
12
- *
13
- * This middleware sets up a WebSocket-based signaling server that handles:
14
- * - Room membership and peer discovery
15
- * - SDP offer/answer relay
16
- * - ICE candidate relay
17
- *
18
- * Use with router.get() to create a WebRTC signaling endpoint:
19
- *
20
- * @example
21
- * ```typescript
22
- * import { createRouter, webrtc } from '@agentuity/runtime';
23
- *
24
- * const router = createRouter();
25
- *
26
- * // Basic signaling endpoint
27
- * router.get('/call/signal', webrtc());
28
- *
29
- * // With options
30
- * router.get('/call/signal', webrtc({ maxPeers: 4 }));
31
- *
32
- * // With callbacks for monitoring
33
- * router.get('/call/signal', webrtc({
34
- * maxPeers: 2,
35
- * callbacks: {
36
- * onRoomCreated: (roomId) => console.log(`Room ${roomId} created`),
37
- * onPeerJoin: (peerId, roomId) => console.log(`${peerId} joined ${roomId}`),
38
- * onPeerLeave: (peerId, roomId, reason) => {
39
- * console.log(`${peerId} left ${roomId}: ${reason}`);
40
- * },
41
- * },
42
- * }));
43
- * ```
44
- *
45
- * @param options - Configuration options for WebRTC signaling
46
- * @returns Hono middleware handler for WebSocket upgrade
47
- */
48
- export declare function webrtc<E extends Env = Env>(options?: WebRTCOptions): MiddlewareHandler<E>;
49
- //# sourceMappingURL=webrtc.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webrtc.d.ts","sourceRoot":"","sources":["../../src/handlers/webrtc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAIvD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAG5E,YAAY,EAAE,aAAa,EAAE,CAAC;AAE9B;;;GAGG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,CAChD,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EACb,WAAW,EAAE,iBAAiB,KAC1B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAmEzF"}
@@ -1,109 +0,0 @@
1
- import { upgradeWebSocket } from 'hono/bun';
2
- import { context as otelContext, ROOT_CONTEXT } from '@opentelemetry/api';
3
- import { getAgentAsyncLocalStorage } from '../_context';
4
- import { WebRTCRoomManager } from '../webrtc-signaling';
5
- /**
6
- * Creates a WebRTC signaling middleware for peer-to-peer communication.
7
- *
8
- * This middleware sets up a WebSocket-based signaling server that handles:
9
- * - Room membership and peer discovery
10
- * - SDP offer/answer relay
11
- * - ICE candidate relay
12
- *
13
- * Use with router.get() to create a WebRTC signaling endpoint:
14
- *
15
- * @example
16
- * ```typescript
17
- * import { createRouter, webrtc } from '@agentuity/runtime';
18
- *
19
- * const router = createRouter();
20
- *
21
- * // Basic signaling endpoint
22
- * router.get('/call/signal', webrtc());
23
- *
24
- * // With options
25
- * router.get('/call/signal', webrtc({ maxPeers: 4 }));
26
- *
27
- * // With callbacks for monitoring
28
- * router.get('/call/signal', webrtc({
29
- * maxPeers: 2,
30
- * callbacks: {
31
- * onRoomCreated: (roomId) => console.log(`Room ${roomId} created`),
32
- * onPeerJoin: (peerId, roomId) => console.log(`${peerId} joined ${roomId}`),
33
- * onPeerLeave: (peerId, roomId, reason) => {
34
- * console.log(`${peerId} left ${roomId}: ${reason}`);
35
- * },
36
- * },
37
- * }));
38
- * ```
39
- *
40
- * @param options - Configuration options for WebRTC signaling
41
- * @returns Hono middleware handler for WebSocket upgrade
42
- */
43
- export function webrtc(options) {
44
- const roomManager = new WebRTCRoomManager(options);
45
- const wsHandler = upgradeWebSocket((_c) => {
46
- let currentWs;
47
- // we need a Privder interface here with AsyncLocalStorage and KV
48
- const asyncLocalStorage = getAgentAsyncLocalStorage();
49
- const capturedContext = asyncLocalStorage.getStore();
50
- return {
51
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
52
- onOpen: (_event, ws) => {
53
- otelContext.with(ROOT_CONTEXT, () => {
54
- if (capturedContext) {
55
- asyncLocalStorage.run(capturedContext, () => {
56
- currentWs = {
57
- onOpen: () => { },
58
- onMessage: () => { },
59
- onClose: () => { },
60
- send: (data) => ws.send(data),
61
- };
62
- });
63
- }
64
- else {
65
- currentWs = {
66
- onOpen: () => { },
67
- onMessage: () => { },
68
- onClose: () => { },
69
- send: (data) => ws.send(data),
70
- };
71
- }
72
- });
73
- },
74
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
75
- onMessage: (event, _ws) => {
76
- if (currentWs) {
77
- otelContext.with(ROOT_CONTEXT, () => {
78
- if (capturedContext) {
79
- asyncLocalStorage.run(capturedContext, () => {
80
- roomManager.handleMessage(currentWs, String(event.data));
81
- });
82
- }
83
- else {
84
- roomManager.handleMessage(currentWs, String(event.data));
85
- }
86
- });
87
- }
88
- },
89
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
90
- onClose: (_event, _ws) => {
91
- if (currentWs) {
92
- otelContext.with(ROOT_CONTEXT, () => {
93
- if (capturedContext) {
94
- asyncLocalStorage.run(capturedContext, () => {
95
- roomManager.handleDisconnect(currentWs);
96
- });
97
- }
98
- else {
99
- roomManager.handleDisconnect(currentWs);
100
- }
101
- });
102
- }
103
- },
104
- };
105
- });
106
- const middleware = (c, next) => wsHandler(c, next);
107
- return middleware;
108
- }
109
- //# sourceMappingURL=webrtc.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webrtc.js","sourceRoot":"","sources":["../../src/handlers/webrtc.ts"],"names":[],"mappings":"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"}
@@ -1,88 +0,0 @@
1
- import type { Context, MiddlewareHandler } from 'hono';
2
- import type { Env } from '../app';
3
- /**
4
- * Context key for WebSocket close promise.
5
- * Used by middleware to defer session finalization until WebSocket closes.
6
- */
7
- export declare const WS_DONE_PROMISE_KEY = "_wsDonePromise";
8
- /**
9
- * WebSocket connection interface for handling WebSocket events.
10
- */
11
- export interface WebSocketConnection {
12
- onOpen: (handler: (event: Event) => void | Promise<void>) => void;
13
- onMessage: (handler: (event: MessageEvent) => void | Promise<void>) => void;
14
- onClose: (handler: (event: CloseEvent) => void | Promise<void>) => void;
15
- send: (data: string | ArrayBuffer | Uint8Array) => void;
16
- }
17
- /**
18
- * Handler function for WebSocket connections.
19
- * Receives the Hono context and WebSocket connection with a flattened signature.
20
- *
21
- * **This handler must be synchronous** (returns `void`, not `Promise<void>`).
22
- * The handler is called inside Hono's `upgradeWebSocket` factory, which must
23
- * return event handlers synchronously for the HTTP upgrade to complete. If the
24
- * handler were async, any `ws.onOpen`/`ws.onMessage`/`ws.onClose` registrations
25
- * after an `await` would be silently lost because the factory returns before
26
- * they are registered.
27
- *
28
- * To perform async work, place it inside the `onOpen`, `onMessage`, or `onClose`
29
- * callbacks, which are properly awaited by the runtime.
30
- */
31
- export type WebSocketHandler<E extends Env = Env> = (c: Context<E>, ws: WebSocketConnection) => void;
32
- /**
33
- * Creates a WebSocket middleware for handling WebSocket connections.
34
- *
35
- * The handler must be **synchronous** — it runs inside Hono's `upgradeWebSocket`
36
- * factory which must return event handlers synchronously for the HTTP upgrade to
37
- * complete. Async work should go inside `onOpen`, `onMessage`, or `onClose`
38
- * callbacks, which are properly awaited by the runtime.
39
- *
40
- * Use with router.get() to create a WebSocket endpoint:
41
- *
42
- * @example
43
- * ```typescript
44
- * // Basic synchronous usage
45
- * import { createRouter, websocket } from '@agentuity/runtime';
46
- *
47
- * const router = createRouter();
48
- *
49
- * router.get('/ws', websocket((c, ws) => {
50
- * ws.onOpen(() => {
51
- * c.var.logger.info('WebSocket opened');
52
- * ws.send('Welcome!');
53
- * });
54
- *
55
- * ws.onMessage((event) => {
56
- * c.var.logger.info('Received:', event.data);
57
- * ws.send('Echo: ' + event.data);
58
- * });
59
- *
60
- * ws.onClose(() => {
61
- * c.var.logger.info('WebSocket closed');
62
- * });
63
- * }));
64
- * ```
65
- *
66
- * @example
67
- * ```typescript
68
- * // Async work inside callbacks (correct pattern)
69
- * router.get('/ws', websocket((c, ws) => {
70
- * ws.onOpen(async () => {
71
- * const user = await fetchUser(c.var.auth);
72
- * ws.send(JSON.stringify({ welcome: user.name }));
73
- * });
74
- *
75
- * ws.onMessage(async (event) => {
76
- * const result = await processMessage(event.data);
77
- * ws.send(JSON.stringify(result));
78
- * });
79
- * }));
80
- * ```
81
- *
82
- * @param handler - Synchronous handler function receiving context and WebSocket connection
83
- * @returns Hono middleware handler for WebSocket upgrade
84
- */
85
- export declare function websocket<E extends Env = Env>(handler: WebSocketHandler<E>): MiddlewareHandler<E, string, {
86
- outputFormat: 'ws';
87
- }>;
88
- //# sourceMappingURL=websocket.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../src/handlers/websocket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAGvD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAGlC;;;GAGG;AACH,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAClE,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAC5E,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IACxE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,KAAK,IAAI,CAAC;CACxD;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,CACnD,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EACb,EAAE,EAAE,mBAAmB,KACnB,IAAI,CAAC;AAEV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,EAC5C,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,GAC1B,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE;IAAE,YAAY,EAAE,IAAI,CAAA;CAAE,CAAC,CA0GtD"}
@@ -1,161 +0,0 @@
1
- import { upgradeWebSocket } from 'hono/bun';
2
- import { context as otelContext, ROOT_CONTEXT } from '@opentelemetry/api';
3
- import { tagRoute } from './_route-meta';
4
- /**
5
- * Context key for WebSocket close promise.
6
- * Used by middleware to defer session finalization until WebSocket closes.
7
- */
8
- export const WS_DONE_PROMISE_KEY = '_wsDonePromise';
9
- /**
10
- * Creates a WebSocket middleware for handling WebSocket connections.
11
- *
12
- * The handler must be **synchronous** — it runs inside Hono's `upgradeWebSocket`
13
- * factory which must return event handlers synchronously for the HTTP upgrade to
14
- * complete. Async work should go inside `onOpen`, `onMessage`, or `onClose`
15
- * callbacks, which are properly awaited by the runtime.
16
- *
17
- * Use with router.get() to create a WebSocket endpoint:
18
- *
19
- * @example
20
- * ```typescript
21
- * // Basic synchronous usage
22
- * import { createRouter, websocket } from '@agentuity/runtime';
23
- *
24
- * const router = createRouter();
25
- *
26
- * router.get('/ws', websocket((c, ws) => {
27
- * ws.onOpen(() => {
28
- * c.var.logger.info('WebSocket opened');
29
- * ws.send('Welcome!');
30
- * });
31
- *
32
- * ws.onMessage((event) => {
33
- * c.var.logger.info('Received:', event.data);
34
- * ws.send('Echo: ' + event.data);
35
- * });
36
- *
37
- * ws.onClose(() => {
38
- * c.var.logger.info('WebSocket closed');
39
- * });
40
- * }));
41
- * ```
42
- *
43
- * @example
44
- * ```typescript
45
- * // Async work inside callbacks (correct pattern)
46
- * router.get('/ws', websocket((c, ws) => {
47
- * ws.onOpen(async () => {
48
- * const user = await fetchUser(c.var.auth);
49
- * ws.send(JSON.stringify({ welcome: user.name }));
50
- * });
51
- *
52
- * ws.onMessage(async (event) => {
53
- * const result = await processMessage(event.data);
54
- * ws.send(JSON.stringify(result));
55
- * });
56
- * }));
57
- * ```
58
- *
59
- * @param handler - Synchronous handler function receiving context and WebSocket connection
60
- * @returns Hono middleware handler for WebSocket upgrade
61
- */
62
- export function websocket(handler) {
63
- const wsHandler = upgradeWebSocket((c) => {
64
- let openHandler;
65
- let messageHandler;
66
- let closeHandler;
67
- let initialized = false;
68
- // Create done promise for session lifecycle deferral, but ONLY for actual
69
- // WebSocket upgrade requests. The factory runs unconditionally for every
70
- // request hitting this route (Hono calls createEvents before attempting
71
- // server.upgrade). For non-upgrade HTTP requests, setting the promise would
72
- // cause the middleware to hang forever waiting for an onClose that never fires.
73
- let resolveDone;
74
- const isUpgrade = c.req.header('upgrade')?.toLowerCase() === 'websocket';
75
- if (isUpgrade) {
76
- const donePromise = new Promise((resolve) => {
77
- resolveDone = resolve;
78
- });
79
- // Defensive: guard against future code adding rejection paths
80
- donePromise.catch(() => { });
81
- // Set on context so middleware defers session finalization until WS closes
82
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
83
- c.set(WS_DONE_PROMISE_KEY, donePromise);
84
- }
85
- const wsConnection = {
86
- onOpen: (h) => {
87
- openHandler = h;
88
- },
89
- onMessage: (h) => {
90
- messageHandler = h;
91
- },
92
- onClose: (h) => {
93
- closeHandler = h;
94
- },
95
- send: (_data) => {
96
- // This will be bound to the actual ws in the handlers
97
- },
98
- };
99
- // IMPORTANT: We run in ROOT_CONTEXT (no active OTEL span) to avoid a Bun bug
100
- // where OTEL-instrumented fetch conflicts with streaming responses.
101
- // See: https://github.com/agentuity/sdk/issues/471
102
- // See: https://github.com/oven-sh/bun/issues/24766
103
- const runHandler = () => {
104
- otelContext.with(ROOT_CONTEXT, () => {
105
- handler(c, wsConnection);
106
- });
107
- initialized = true;
108
- };
109
- runHandler();
110
- return {
111
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
112
- onOpen: async (event, ws) => {
113
- try {
114
- wsConnection.send = (data) => ws.send(data);
115
- if (openHandler) {
116
- await otelContext.with(ROOT_CONTEXT, () => openHandler(event));
117
- }
118
- }
119
- catch (err) {
120
- c.var.logger?.error('WebSocket onOpen error:', err);
121
- throw err;
122
- }
123
- },
124
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
125
- onMessage: async (event, ws) => {
126
- try {
127
- if (!initialized) {
128
- wsConnection.send = (data) => ws.send(data);
129
- runHandler();
130
- }
131
- if (messageHandler) {
132
- await otelContext.with(ROOT_CONTEXT, () => messageHandler(event));
133
- }
134
- }
135
- catch (err) {
136
- c.var.logger?.error('WebSocket onMessage error:', err);
137
- throw err;
138
- }
139
- },
140
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
141
- onClose: async (event, _ws) => {
142
- try {
143
- if (closeHandler) {
144
- await otelContext.with(ROOT_CONTEXT, () => closeHandler(event));
145
- }
146
- }
147
- catch (err) {
148
- c.var.logger?.error('WebSocket onClose error:', err);
149
- }
150
- finally {
151
- // Resolve the done promise to trigger session finalization
152
- // This must fire even if the user's onClose handler throws
153
- resolveDone?.();
154
- }
155
- },
156
- };
157
- });
158
- const middleware = (c, next) => wsHandler(c, next);
159
- return tagRoute(middleware, { type: 'websocket' });
160
- }
161
- //# sourceMappingURL=websocket.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../src/handlers/websocket.ts"],"names":[],"mappings":"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"}
@@ -1,70 +0,0 @@
1
- import type { LogLevel } from '@agentuity/core';
2
- import type { Logger } from './logger';
3
- /**
4
- * Console implementation of the Logger interface
5
- */
6
- export default class ConsoleLogger implements Logger {
7
- private context;
8
- private formatContext;
9
- private logLevel;
10
- private colors;
11
- private detectedTraceLoopLog;
12
- private useColors;
13
- /**
14
- * Creates a new console logger
15
- *
16
- * @param context - Initial context for the logger
17
- */
18
- constructor(context?: Record<string, unknown>, formatContext?: boolean, logLevel?: LogLevel);
19
- private shouldLog;
20
- /**
21
- * Log a trace message (most verbose)
22
- *
23
- * @param message - The message to log
24
- * @param args - Additional arguments to log
25
- */
26
- trace(message: unknown, ...args: unknown[]): void;
27
- /**
28
- * Log a debug message
29
- *
30
- * @param message - The message to log
31
- * @param args - Additional arguments to log
32
- */
33
- debug(message: unknown, ...args: unknown[]): void;
34
- /**
35
- * Log an info message
36
- *
37
- * @param message - The message to log
38
- * @param args - Additional arguments to log
39
- */
40
- info(message: unknown, ...args: unknown[]): void;
41
- /**
42
- * Log a warning message
43
- *
44
- * @param message - The message to log
45
- * @param args - Additional arguments to log
46
- */
47
- warn(message: unknown, ...args: unknown[]): void;
48
- /**
49
- * Log an error message
50
- *
51
- * @param message - The message to log
52
- * @param args - Additional arguments to log
53
- */
54
- error(message: unknown, ...args: unknown[]): void;
55
- /**
56
- * Log a fatal error message and exit the process
57
- *
58
- * @param message - The message to log
59
- * @param args - Additional arguments to log
60
- */
61
- fatal(message: unknown, ...args: unknown[]): never;
62
- /**
63
- * Create a child logger with additional context
64
- *
65
- * @param opts - Additional context for the child logger
66
- * @returns A new logger instance with the additional context
67
- */
68
- child(opts: Record<string, unknown>): Logger;
69
- }
70
- //# sourceMappingURL=console.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../src/logger/console.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAmHvC;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,aAAc,YAAW,MAAM;IACnD,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,oBAAoB,CAAsB;IAClD,OAAO,CAAC,SAAS,CAAU;IAE3B;;;;OAIG;gBAEF,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,aAAa,UAAO,EACpB,QAAQ,GAAE,QAAiB;IAW5B,OAAO,CAAC,SAAS;IAgBjB;;;;;OAKG;IACH,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAkBjD;;;;;OAKG;IACH,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAkBjD;;;;;OAKG;IACH,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IA8BhD;;;;;OAKG;IACH,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAkBhD;;;;;OAKG;IACH,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAkBjD;;;;;OAKG;IACH,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK;IAKlD;;;;;OAKG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;CAU5C"}