@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
package/dist/eval.js DELETED
@@ -1,16 +0,0 @@
1
- import { z } from 'zod';
2
- export const EvalHandlerResultSchema = z.object({
3
- passed: z.boolean(),
4
- score: z.number().min(0).max(1).optional(),
5
- reason: z.string().optional(),
6
- metadata: z.record(z.string(), z.any()).optional(),
7
- });
8
- // Internal types for catalyst (include success field)
9
- export const EvalRunResultSuccessSchema = z.object({
10
- success: z.literal(true),
11
- passed: z.boolean(),
12
- score: z.number().min(0).max(1).optional(),
13
- reason: z.string().optional(),
14
- metadata: z.record(z.string(), z.any()).optional(),
15
- });
16
- //# sourceMappingURL=eval.js.map
package/dist/eval.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"eval.js","sourceRoot":"","sources":["../src/eval.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;IACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC1C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE;CAClD,CAAC,CAAC;AAIH,sDAAsD;AACtD,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACxB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;IACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC1C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE;CAClD,CAAC,CAAC"}
@@ -1,22 +0,0 @@
1
- /**
2
- * Route metadata tagging for build-time route type discovery.
3
- *
4
- * Handler wrappers (websocket, sse, stream, cron) stamp this symbol on
5
- * the returned middleware so the build tool can detect the route type
6
- * from `router.routes` without AST parsing.
7
- */
8
- export declare const ROUTE_META: unique symbol;
9
- export interface RouteMeta {
10
- type: 'websocket' | 'sse' | 'stream' | 'cron';
11
- /** Cron schedule expression (only for type: 'cron') */
12
- schedule?: string;
13
- }
14
- /**
15
- * Tag a handler/middleware with route metadata.
16
- */
17
- export declare function tagRoute<T extends (...args: any[]) => any>(handler: T, meta: RouteMeta): T;
18
- /**
19
- * Read route metadata from a handler/middleware.
20
- */
21
- export declare function getRouteMeta(handler: unknown): RouteMeta | undefined;
22
- //# sourceMappingURL=_route-meta.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_route-meta.d.ts","sourceRoot":"","sources":["../../src/handlers/_route-meta.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,UAAU,eAAqC,CAAC;AAE7D,MAAM,WAAW,SAAS;IACzB,IAAI,EAAE,WAAW,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC9C,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,GAAG,CAAC,CAG1F;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAKpE"}
@@ -1,25 +0,0 @@
1
- /**
2
- * Route metadata tagging for build-time route type discovery.
3
- *
4
- * Handler wrappers (websocket, sse, stream, cron) stamp this symbol on
5
- * the returned middleware so the build tool can detect the route type
6
- * from `router.routes` without AST parsing.
7
- */
8
- export const ROUTE_META = Symbol.for('agentuity:route-meta');
9
- /**
10
- * Tag a handler/middleware with route metadata.
11
- */
12
- export function tagRoute(handler, meta) {
13
- handler[ROUTE_META] = meta;
14
- return handler;
15
- }
16
- /**
17
- * Read route metadata from a handler/middleware.
18
- */
19
- export function getRouteMeta(handler) {
20
- if (typeof handler === 'function') {
21
- return handler[ROUTE_META];
22
- }
23
- return undefined;
24
- }
25
- //# sourceMappingURL=_route-meta.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_route-meta.js","sourceRoot":"","sources":["../../src/handlers/_route-meta.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AAQ7D;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAoC,OAAU,EAAE,IAAe;IACrF,OAAe,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;IACpC,OAAO,OAAO,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC5C,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;QACnC,OAAQ,OAAe,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC"}
@@ -1,73 +0,0 @@
1
- import type { Context, Handler } from 'hono';
2
- import type { Env } from '../app';
3
- /**
4
- * Handler function for cron jobs.
5
- * Receives the Hono context and can return any response.
6
- */
7
- export type CronHandler<E extends Env = Env> = (c: Context<E>) => unknown | Promise<unknown>;
8
- /**
9
- * Options for the cron middleware.
10
- */
11
- export interface CronOptions {
12
- /**
13
- * Whether to require signature authentication for cron requests.
14
- * When true, requests must include valid X-Agentuity-Cron-Signature
15
- * and X-Agentuity-Cron-Timestamp headers signed with the project's SDK key.
16
- * Signatures are valid for 5 minutes.
17
- */
18
- auth: boolean;
19
- }
20
- /**
21
- * Creates a cron middleware for scheduled task endpoints.
22
- *
23
- * **Important:** Cron endpoints must use POST method. The middleware will throw
24
- * an error if called with any other HTTP method.
25
- *
26
- * @example
27
- * ```typescript
28
- * import { createRouter, cron } from '@agentuity/runtime';
29
- *
30
- * const router = createRouter();
31
- *
32
- * // With authentication (recommended)
33
- * router.post('/daily-cleanup', cron('0 0 * * *', { auth: true }, (c) => {
34
- * c.var.logger.info('Running daily cleanup');
35
- * return { status: 'cleanup complete' };
36
- * }));
37
- *
38
- * // Without authentication (not recommended for production)
39
- * router.post('/health-check', cron('0 * * * *', { auth: false }, (c) => {
40
- * c.var.logger.info('Running hourly health check');
41
- * return c.text('OK');
42
- * }));
43
- * ```
44
- *
45
- * @param schedule - Cron expression (e.g., '0 0 * * *' for daily at midnight)
46
- * @param options - Configuration options including auth requirement
47
- * @param handler - Handler function to run on schedule
48
- * @returns Hono handler for cron endpoint
49
- */
50
- export declare function cron<E extends Env = Env>(schedule: string, options: CronOptions, handler: CronHandler<E>): Handler<E>;
51
- /**
52
- * Creates a cron middleware for scheduled task endpoints.
53
- *
54
- * @deprecated Use the overload with explicit `options` parameter: `cron(schedule, { auth: true }, handler)`
55
- *
56
- * **Important:** Cron endpoints must use POST method. The middleware will throw
57
- * an error if called with any other HTTP method.
58
- *
59
- * This deprecated overload defaults to `auth: false` for backwards compatibility.
60
- *
61
- * @param schedule - Cron expression (e.g., '0 0 * * *' for daily at midnight)
62
- * @param handler - Handler function to run on schedule
63
- * @returns Hono handler for cron endpoint
64
- */
65
- export declare function cron<E extends Env = Env>(schedule: string, handler: CronHandler<E>): Handler<E>;
66
- /**
67
- * Metadata interface for cron jobs (can be used for registration/discovery).
68
- */
69
- export interface CronMetadata {
70
- schedule: string;
71
- path: string;
72
- }
73
- //# sourceMappingURL=cron.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../../src/handlers/cron.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE7C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAIlC;;;GAGG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAE7F;;GAEG;AACH,MAAM,WAAW,WAAW;IAC3B;;;;;OAKG;IACH,IAAI,EAAE,OAAO,CAAC;CACd;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,EACvC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GACrB,OAAO,CAAC,CAAC,CAAC,CAAC;AAEd;;;;;;;;;;;;;GAaG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AA2DjG;;GAEG;AACH,MAAM,WAAW,YAAY;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACb"}
@@ -1,43 +0,0 @@
1
- import { returnResponse } from '../_util';
2
- import { verifySignature } from '../signature';
3
- import { tagRoute } from './_route-meta';
4
- export function cron(_schedule, optionsOrHandler, maybeHandler) {
5
- let options;
6
- let handler;
7
- if (typeof optionsOrHandler === 'function') {
8
- // Deprecated: cron(schedule, handler) - defaults to auth: false
9
- options = { auth: false };
10
- handler = optionsOrHandler;
11
- }
12
- else {
13
- // New: cron(schedule, options, handler)
14
- options = optionsOrHandler;
15
- handler = maybeHandler;
16
- }
17
- const cronHandler = async (c) => {
18
- if (c.req.method !== 'POST') {
19
- throw new Error(`Cron endpoint must use POST method, but received ${c.req.method}. ` +
20
- `Use router.post() instead of router.${c.req.method.toLowerCase()}().`);
21
- }
22
- if (options.auth) {
23
- // Clone the request to read body for signature verification without consuming it
24
- const clonedReq = c.req.raw.clone();
25
- const body = await clonedReq.text();
26
- // Verify the cron signature
27
- const isValid = await verifySignature(c.req.header('X-Agentuity-Cron-Signature'), c.req.header('X-Agentuity-Cron-Timestamp'), body);
28
- if (!isValid) {
29
- return c.json({ error: 'Unauthorized' }, 401);
30
- }
31
- }
32
- let result = handler(c);
33
- if (result instanceof Promise) {
34
- result = await result;
35
- }
36
- if (result instanceof Response) {
37
- return result;
38
- }
39
- return returnResponse(c, result);
40
- };
41
- return tagRoute(cronHandler, { type: 'cron', schedule: _schedule });
42
- }
43
- //# sourceMappingURL=cron.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cron.js","sourceRoot":"","sources":["../../src/handlers/cron.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAyEzC,MAAM,UAAU,IAAI,CACnB,SAAiB,EACjB,gBAA8C,EAC9C,YAA6B;IAE7B,IAAI,OAAoB,CAAC;IACzB,IAAI,OAAuB,CAAC;IAE5B,IAAI,OAAO,gBAAgB,KAAK,UAAU,EAAE,CAAC;QAC5C,gEAAgE;QAChE,OAAO,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAC1B,OAAO,GAAG,gBAAgB,CAAC;IAC5B,CAAC;SAAM,CAAC;QACP,wCAAwC;QACxC,OAAO,GAAG,gBAAgB,CAAC;QAC3B,OAAO,GAAG,YAAa,CAAC;IACzB,CAAC;IAED,MAAM,WAAW,GAAe,KAAK,EAAE,CAAa,EAAE,EAAE;QACvD,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACd,oDAAoD,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI;gBACnE,uCAAuC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CACvE,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,iFAAiF;YACjF,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;YAEpC,4BAA4B;YAC5B,MAAM,OAAO,GAAG,MAAM,eAAe,CACpC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,4BAA4B,CAAC,EAC1C,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,4BAA4B,CAAC,EAC1C,IAAI,CACJ,CAAC;YACF,IAAI,CAAC,OAAO,EAAE,CAAC;gBACd,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,GAAG,CAAC,CAAC;YAC/C,CAAC;QACF,CAAC;QAED,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;YAC/B,MAAM,GAAG,MAAM,MAAM,CAAC;QACvB,CAAC;QAED,IAAI,MAAM,YAAY,QAAQ,EAAE,CAAC;YAChC,OAAO,MAAM,CAAC;QACf,CAAC;QAED,OAAO,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC,CAAC;IAEF,OAAO,QAAQ,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;AACrE,CAAC"}
@@ -1,6 +0,0 @@
1
- export { websocket, type WebSocketConnection, type WebSocketHandler, WS_DONE_PROMISE_KEY, } from './websocket';
2
- export { sse, type SSEMessage, type SSEStream, type SSEHandler, type SSEOptions, STREAM_DONE_PROMISE_KEY, IS_STREAMING_RESPONSE_KEY, } from './sse';
3
- export { stream, type StreamHandler } from './stream';
4
- export { cron, type CronHandler, type CronMetadata } from './cron';
5
- export { webrtc, type WebRTCHandler, type WebRTCOptions } from './webrtc';
6
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/handlers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,SAAS,EACT,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,mBAAmB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,GAAG,EACH,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,UAAU,EACf,uBAAuB,EACvB,yBAAyB,GACzB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC"}
@@ -1,6 +0,0 @@
1
- export { websocket, WS_DONE_PROMISE_KEY, } from './websocket';
2
- export { sse, STREAM_DONE_PROMISE_KEY, IS_STREAMING_RESPONSE_KEY, } from './sse';
3
- export { stream } from './stream';
4
- export { cron } from './cron';
5
- export { webrtc } from './webrtc';
6
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/handlers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,SAAS,EAGT,mBAAmB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,GAAG,EAKH,uBAAuB,EACvB,yBAAyB,GACzB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,MAAM,EAAsB,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,IAAI,EAAuC,MAAM,QAAQ,CAAC;AACnE,OAAO,EAAE,MAAM,EAA0C,MAAM,UAAU,CAAC"}
@@ -1,163 +0,0 @@
1
- import type { Context, Handler } from 'hono';
2
- import type { Schema } from '@agentuity/schema';
3
- import type { Env } from '../app';
4
- /**
5
- * Context variable key for stream completion promise.
6
- * Used by middleware to defer session/thread saving until stream completes.
7
- * @internal
8
- */
9
- export declare const STREAM_DONE_PROMISE_KEY = "_streamDonePromise";
10
- /**
11
- * Context variable key to indicate this is a streaming response.
12
- * @internal
13
- */
14
- export declare const IS_STREAMING_RESPONSE_KEY = "_isStreamingResponse";
15
- /**
16
- * SSE message format for Server-Sent Events.
17
- */
18
- export interface SSEMessage {
19
- data: string;
20
- event?: string;
21
- id?: string;
22
- retry?: number;
23
- }
24
- /**
25
- * SSE stream interface for writing Server-Sent Events.
26
- */
27
- export interface SSEStream {
28
- /**
29
- * Write a simple value as SSE data.
30
- * Strings, numbers, and booleans are converted to string data.
31
- * Objects are passed through as SSE message format.
32
- */
33
- write: (data: string | number | boolean | SSEMessage) => Promise<void>;
34
- /**
35
- * Write a properly formatted SSE message.
36
- */
37
- writeSSE: (message: SSEMessage) => Promise<void>;
38
- /**
39
- * Register a callback for when the client aborts the connection.
40
- */
41
- onAbort: (callback: () => void) => void;
42
- /**
43
- * Close the SSE stream.
44
- */
45
- close: () => void;
46
- }
47
- /**
48
- * Handler function for SSE connections.
49
- * Receives the Hono context and SSE stream with a flattened signature.
50
- */
51
- export type SSEHandler<E extends Env = Env> = (c: Context<E>, stream: SSEStream) => void | Promise<void>;
52
- /**
53
- * Options for configuring SSE middleware.
54
- *
55
- * @template TOutput - The type of data that will be sent through the SSE stream.
56
- * This is used for type inference in generated route registries and does not
57
- * perform runtime validation (SSE data is serialized via JSON.stringify).
58
- */
59
- export interface SSEOptions<TOutput = unknown> {
60
- /**
61
- * Schema defining the output type for SSE events.
62
- *
63
- * This schema is used for:
64
- * - Type inference in generated `routes.ts` registry
65
- * - Automatic typing of `EventSource/EventStreamManager` hook's `data` property
66
- *
67
- * The schema is NOT used for runtime validation - SSE messages are sent
68
- * as-is through the stream. Use this for TypeScript type safety only.
69
- *
70
- * @example
71
- * ```typescript
72
- * import { s } from '@agentuity/schema';
73
- *
74
- * const StreamEventSchema = s.object({
75
- * type: s.enum(['token', 'complete', 'error']),
76
- * content: s.optional(s.string()),
77
- * });
78
- *
79
- * router.get('/stream', sse({ output: StreamEventSchema }, async (c, stream) => {
80
- * await stream.writeSSE({ data: JSON.stringify({ type: 'token', content: 'Hello' }) });
81
- * await stream.writeSSE({ data: JSON.stringify({ type: 'complete' }) });
82
- * stream.close();
83
- * }));
84
- * ```
85
- */
86
- output: Schema<TOutput, TOutput>;
87
- }
88
- /**
89
- * Creates an SSE (Server-Sent Events) middleware for streaming updates to clients.
90
- *
91
- * This implementation uses Hono's stream() helper instead of streamSSE() to ensure
92
- * compatibility with async operations that consume ReadableStreams internally
93
- * (like AI SDK's generateText/generateObject). The stream() helper uses a fire-and-forget
94
- * pattern that avoids "ReadableStream has already been used" errors.
95
- *
96
- * Use with router.get() to create an SSE endpoint:
97
- *
98
- * @example Basic SSE without typed output
99
- * ```typescript
100
- * import { createRouter, sse } from '@agentuity/runtime';
101
- *
102
- * const router = createRouter();
103
- *
104
- * router.get('/events', sse((c, stream) => {
105
- * let count = 0;
106
- * const interval = setInterval(() => {
107
- * stream.writeSSE({
108
- * data: `Event ${++count}`,
109
- * event: 'update'
110
- * });
111
- * if (count >= 10) {
112
- * clearInterval(interval);
113
- * stream.close();
114
- * }
115
- * }, 1000);
116
- *
117
- * stream.onAbort(() => {
118
- * clearInterval(interval);
119
- * });
120
- * }));
121
- * ```
122
- *
123
- * @example SSE with typed output schema
124
- * ```typescript
125
- * import { createRouter, sse } from '@agentuity/runtime';
126
- * import { s } from '@agentuity/schema';
127
- *
128
- * // Define your SSE event schema
129
- * export const outputSchema = s.object({
130
- * type: s.enum(['token', 'complete', 'error']),
131
- * content: s.optional(s.string()),
132
- * });
133
- *
134
- * const router = createRouter();
135
- *
136
- * // Pass schema as first argument for typed SSE routes
137
- * router.get('/stream', sse({ output: outputSchema }, async (c, stream) => {
138
- * await stream.writeSSE({ data: JSON.stringify({ type: 'token', content: 'Hello' }) });
139
- * await stream.writeSSE({ data: JSON.stringify({ type: 'complete' }) });
140
- * stream.close();
141
- * }));
142
- *
143
- * // On the frontend, EventSource/EventStreamManager will now have typed data:
144
- * // const { data } = EventSource/EventStreamManager('/api/stream');
145
- * // data.type is 'token' | 'complete' | 'error'
146
- * ```
147
- *
148
- * @param handler - Handler function receiving context and SSE stream
149
- * @param options - Optional configuration with output schema for type inference
150
- * @returns Hono handler for SSE streaming
151
- * @see https://github.com/agentuity/sdk/issues/471
152
- * @see https://github.com/agentuity/sdk/issues/855
153
- */
154
- export declare function sse<E extends Env = Env>(handler: SSEHandler<E>): Handler<E>;
155
- /**
156
- * Creates an SSE middleware with typed output schema.
157
- *
158
- * @param options - Configuration object containing the output schema
159
- * @param handler - Handler function receiving context and SSE stream
160
- * @returns Hono handler for SSE streaming
161
- */
162
- export declare function sse<E extends Env = Env, TOutput = unknown>(options: SSEOptions<TOutput>, handler: SSEHandler<E>): Handler<E>;
163
- //# sourceMappingURL=sse.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../src/handlers/sse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAI7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAWlC;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,uBAAuB,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,yBAAyB,yBAAyB,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACzB;;;;OAIG;IACH,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE;;OAEG;IACH,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD;;OAEG;IACH,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;IACxC;;OAEG;IACH,KAAK,EAAE,MAAM,IAAI,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,CAC7C,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EACb,MAAM,EAAE,SAAS,KACb,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B;;;;;;GAMG;AACH,MAAM,WAAW,UAAU,CAAC,OAAO,GAAG,OAAO;IAC5C;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;CACjC;AA2BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiEG;AACH,wBAAgB,GAAG,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC7E;;;;;;GAMG;AACH,wBAAgB,GAAG,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,EAAE,OAAO,GAAG,OAAO,EACzD,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,EAC5B,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,GACpB,OAAO,CAAC,CAAC,CAAC,CAAC"}
@@ -1,175 +0,0 @@
1
- import { stream as honoStream } from 'hono/streaming';
2
- import { context as otelContext, ROOT_CONTEXT } from '@opentelemetry/api';
3
- import { StructuredError } from '@agentuity/core';
4
- import { tagRoute } from './_route-meta';
5
- /**
6
- * Error thrown when sse() is called without a handler function.
7
- */
8
- const SSEHandlerMissingError = StructuredError('SSEHandlerMissingError', 'An SSE handler function is required. Use sse(handler) or sse({ output: schema }, handler).');
9
- /**
10
- * Context variable key for stream completion promise.
11
- * Used by middleware to defer session/thread saving until stream completes.
12
- * @internal
13
- */
14
- export const STREAM_DONE_PROMISE_KEY = '_streamDonePromise';
15
- /**
16
- * Context variable key to indicate this is a streaming response.
17
- * @internal
18
- */
19
- export const IS_STREAMING_RESPONSE_KEY = '_isStreamingResponse';
20
- /**
21
- * Format an SSE message according to the SSE specification.
22
- * @see https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events
23
- */
24
- function formatSSEMessage(message) {
25
- let text = '';
26
- if (message.event) {
27
- text += `event: ${message.event}\n`;
28
- }
29
- if (message.id) {
30
- text += `id: ${message.id}\n`;
31
- }
32
- if (typeof message.retry === 'number') {
33
- text += `retry: ${message.retry}\n`;
34
- }
35
- // Data can be multiline - each line needs its own "data:" prefix
36
- const dataLines = message.data.split(/\r?\n/);
37
- for (const line of dataLines) {
38
- text += `data: ${line}\n`;
39
- }
40
- // SSE messages are terminated by a blank line
41
- text += '\n';
42
- return text;
43
- }
44
- export function sse(handlerOrOptions, maybeHandler) {
45
- // Determine if first arg is options or handler
46
- const handler = typeof handlerOrOptions === 'function' ? handlerOrOptions : maybeHandler;
47
- // Validate handler is provided - catches sse({ output }) without handler
48
- if (!handler) {
49
- throw new SSEHandlerMissingError();
50
- }
51
- // Note: options.output is captured for type inference but not used at runtime
52
- // The CLI extracts this during build to generate typed route registries
53
- const sseHandler = (c) => {
54
- // Track stream completion for deferred session/thread saving
55
- // This promise resolves when the stream closes (normally or via abort)
56
- let resolveDone;
57
- let rejectDone;
58
- const donePromise = new Promise((resolve, reject) => {
59
- resolveDone = resolve;
60
- rejectDone = reject;
61
- });
62
- // Prevent unhandled rejection warnings if no middleware consumes donePromise.
63
- // The error is still propagated via the rejection for middleware that awaits it.
64
- donePromise.catch(() => {
65
- // Intentionally empty - error is logged in runInContext catch block
66
- });
67
- // Idempotent function to mark stream as completed
68
- let isDone = false;
69
- const markDone = (error) => {
70
- if (isDone)
71
- return;
72
- isDone = true;
73
- if (error && rejectDone) {
74
- rejectDone(error);
75
- }
76
- else if (resolveDone) {
77
- resolveDone();
78
- }
79
- };
80
- // Expose completion tracking to middleware
81
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
82
- c.set(STREAM_DONE_PROMISE_KEY, donePromise);
83
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
84
- c.set(IS_STREAMING_RESPONSE_KEY, true);
85
- // Set SSE-specific headers
86
- c.header('Content-Type', 'text/event-stream');
87
- c.header('Cache-Control', 'no-cache');
88
- c.header('Connection', 'keep-alive');
89
- // Use honoStream instead of honoStreamSSE.
90
- // honoStream uses a fire-and-forget async IIFE pattern that returns the Response
91
- // immediately while the handler runs in the background. This is critical for
92
- // compatibility with AI SDK's generateText/generateObject which use fetch()
93
- // internally. With honoStreamSSE, the callback is awaited before returning,
94
- // which causes "ReadableStream has already been used" errors when fetch
95
- // response streams are consumed in the same async chain.
96
- // See: https://github.com/agentuity/sdk/issues/471
97
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
98
- return honoStream(c, async (s) => {
99
- const encoder = new TextEncoder();
100
- // Track if user registered an onAbort callback
101
- let userAbortCallback;
102
- // Internal function to write an SSE message
103
- const writeSSEInternal = async (message) => {
104
- const formatted = formatSSEMessage(message);
105
- await s.write(encoder.encode(formatted));
106
- };
107
- const wrappedStream = {
108
- write: async (data) => {
109
- if (typeof data === 'string' ||
110
- typeof data === 'number' ||
111
- typeof data === 'boolean') {
112
- return writeSSEInternal({ data: String(data) });
113
- }
114
- else if (typeof data === 'object' && data !== null) {
115
- return writeSSEInternal(data);
116
- }
117
- return writeSSEInternal({ data: String(data) });
118
- },
119
- writeSSE: writeSSEInternal,
120
- onAbort: (callback) => {
121
- userAbortCallback = callback;
122
- s.onAbort(() => {
123
- try {
124
- callback();
125
- }
126
- finally {
127
- // Mark stream as done on abort
128
- markDone();
129
- }
130
- });
131
- },
132
- close: () => {
133
- try {
134
- s.close?.();
135
- }
136
- finally {
137
- // Mark stream as done on close
138
- markDone();
139
- }
140
- },
141
- };
142
- // Always register internal abort handler if user doesn't register one
143
- // This ensures we track completion even if user doesn't call onAbort
144
- s.onAbort(() => {
145
- if (!userAbortCallback) {
146
- // Only mark done if user didn't register their own handler
147
- // (their handler wrapper already calls markDone)
148
- markDone();
149
- }
150
- });
151
- const runInContext = async () => {
152
- try {
153
- await handler(c, wrappedStream);
154
- markDone();
155
- }
156
- catch (err) {
157
- // Log error but don't rethrow - would be unhandled rejection
158
- c.var.logger?.error?.('SSE handler error:', err);
159
- markDone(err);
160
- }
161
- };
162
- // IMPORTANT: We run in ROOT_CONTEXT (no active OTEL span) to avoid a Bun bug
163
- // where OTEL-instrumented fetch conflicts with streaming responses.
164
- // This causes "ReadableStream has already been used" errors when AI SDK's
165
- // generateText/generateObject (which use fetch + stream.tee() internally)
166
- // are called inside SSE handlers. Running without an active span makes
167
- // our OTEL fetch wrapper use the original unpatched fetch.
168
- // See: https://github.com/agentuity/sdk/issues/471
169
- // See: https://github.com/oven-sh/bun/issues/24766
170
- await otelContext.with(ROOT_CONTEXT, runInContext);
171
- });
172
- };
173
- return tagRoute(sseHandler, { type: 'sse' });
174
- }
175
- //# sourceMappingURL=sse.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sse.js","sourceRoot":"","sources":["../../src/handlers/sse.ts"],"names":[],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- import type { Context, Handler } from 'hono';
2
- import type { Env } from '../app';
3
- /**
4
- * Handler function for streaming responses.
5
- * Returns a ReadableStream that will be piped to the response.
6
- */
7
- export type StreamHandler<E extends Env = Env> = (c: Context<E>) => ReadableStream<Uint8Array | string> | Promise<ReadableStream<Uint8Array | string>>;
8
- /**
9
- * Creates a streaming middleware for returning ReadableStream responses.
10
- *
11
- * Use with router.post() (or any HTTP method) to create a streaming endpoint:
12
- *
13
- * @example
14
- * ```typescript
15
- * import { createRouter, stream } from '@agentuity/runtime';
16
- *
17
- * const router = createRouter();
18
- *
19
- * router.post('/events', stream((c) => {
20
- * return new ReadableStream({
21
- * start(controller) {
22
- * controller.enqueue('event 1\n');
23
- * controller.enqueue('event 2\n');
24
- * controller.close();
25
- * }
26
- * });
27
- * }));
28
- * ```
29
- *
30
- * @example
31
- * ```typescript
32
- * // Async stream with data from request body
33
- * router.post('/process', stream(async (c) => {
34
- * const body = await c.req.json();
35
- *
36
- * return new ReadableStream({
37
- * async start(controller) {
38
- * for (const item of body.items) {
39
- * controller.enqueue(`Processing: ${item}\n`);
40
- * await new Promise(r => setTimeout(r, 100));
41
- * }
42
- * controller.close();
43
- * }
44
- * });
45
- * }));
46
- * ```
47
- *
48
- * @param handler - Handler function returning a ReadableStream
49
- * @returns Hono handler for streaming response
50
- */
51
- export declare function stream<E extends Env = Env>(handler: StreamHandler<E>): Handler<E>;
52
- //# sourceMappingURL=stream.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/handlers/stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAG7C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAIlC;;;GAGG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,CAChD,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,KACT,cAAc,CAAC,UAAU,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC;AAExF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CA8DjF"}