@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,203 +0,0 @@
1
- import type { Context, MiddlewareHandler } from 'hono';
2
- import { upgradeWebSocket } from 'hono/bun';
3
- import { context as otelContext, ROOT_CONTEXT } from '@opentelemetry/api';
4
- import type { Env } from '../app';
5
- import { tagRoute } from './_route-meta';
6
-
7
- /**
8
- * Context key for WebSocket close promise.
9
- * Used by middleware to defer session finalization until WebSocket closes.
10
- */
11
- export const WS_DONE_PROMISE_KEY = '_wsDonePromise';
12
-
13
- /**
14
- * WebSocket connection interface for handling WebSocket events.
15
- */
16
- export interface WebSocketConnection {
17
- onOpen: (handler: (event: Event) => void | Promise<void>) => void;
18
- onMessage: (handler: (event: MessageEvent) => void | Promise<void>) => void;
19
- onClose: (handler: (event: CloseEvent) => void | Promise<void>) => void;
20
- send: (data: string | ArrayBuffer | Uint8Array) => void;
21
- }
22
-
23
- /**
24
- * Handler function for WebSocket connections.
25
- * Receives the Hono context and WebSocket connection with a flattened signature.
26
- *
27
- * **This handler must be synchronous** (returns `void`, not `Promise<void>`).
28
- * The handler is called inside Hono's `upgradeWebSocket` factory, which must
29
- * return event handlers synchronously for the HTTP upgrade to complete. If the
30
- * handler were async, any `ws.onOpen`/`ws.onMessage`/`ws.onClose` registrations
31
- * after an `await` would be silently lost because the factory returns before
32
- * they are registered.
33
- *
34
- * To perform async work, place it inside the `onOpen`, `onMessage`, or `onClose`
35
- * callbacks, which are properly awaited by the runtime.
36
- */
37
- export type WebSocketHandler<E extends Env = Env> = (
38
- c: Context<E>,
39
- ws: WebSocketConnection
40
- ) => void;
41
-
42
- /**
43
- * Creates a WebSocket middleware for handling WebSocket connections.
44
- *
45
- * The handler must be **synchronous** — it runs inside Hono's `upgradeWebSocket`
46
- * factory which must return event handlers synchronously for the HTTP upgrade to
47
- * complete. Async work should go inside `onOpen`, `onMessage`, or `onClose`
48
- * callbacks, which are properly awaited by the runtime.
49
- *
50
- * Use with router.get() to create a WebSocket endpoint:
51
- *
52
- * @example
53
- * ```typescript
54
- * // Basic synchronous usage
55
- * import { createRouter, websocket } from '@agentuity/runtime';
56
- *
57
- * const router = createRouter();
58
- *
59
- * router.get('/ws', websocket((c, ws) => {
60
- * ws.onOpen(() => {
61
- * c.var.logger.info('WebSocket opened');
62
- * ws.send('Welcome!');
63
- * });
64
- *
65
- * ws.onMessage((event) => {
66
- * c.var.logger.info('Received:', event.data);
67
- * ws.send('Echo: ' + event.data);
68
- * });
69
- *
70
- * ws.onClose(() => {
71
- * c.var.logger.info('WebSocket closed');
72
- * });
73
- * }));
74
- * ```
75
- *
76
- * @example
77
- * ```typescript
78
- * // Async work inside callbacks (correct pattern)
79
- * router.get('/ws', websocket((c, ws) => {
80
- * ws.onOpen(async () => {
81
- * const user = await fetchUser(c.var.auth);
82
- * ws.send(JSON.stringify({ welcome: user.name }));
83
- * });
84
- *
85
- * ws.onMessage(async (event) => {
86
- * const result = await processMessage(event.data);
87
- * ws.send(JSON.stringify(result));
88
- * });
89
- * }));
90
- * ```
91
- *
92
- * @param handler - Synchronous handler function receiving context and WebSocket connection
93
- * @returns Hono middleware handler for WebSocket upgrade
94
- */
95
- export function websocket<E extends Env = Env>(
96
- handler: WebSocketHandler<E>
97
- ): MiddlewareHandler<E, string, { outputFormat: 'ws' }> {
98
- const wsHandler = upgradeWebSocket((c: Context<E>) => {
99
- let openHandler: ((event: Event) => void | Promise<void>) | undefined;
100
- let messageHandler: ((event: MessageEvent) => void | Promise<void>) | undefined;
101
- let closeHandler: ((event: CloseEvent) => void | Promise<void>) | undefined;
102
- let initialized = false;
103
-
104
- // Create done promise for session lifecycle deferral, but ONLY for actual
105
- // WebSocket upgrade requests. The factory runs unconditionally for every
106
- // request hitting this route (Hono calls createEvents before attempting
107
- // server.upgrade). For non-upgrade HTTP requests, setting the promise would
108
- // cause the middleware to hang forever waiting for an onClose that never fires.
109
- let resolveDone: (() => void) | undefined;
110
- const isUpgrade = c.req.header('upgrade')?.toLowerCase() === 'websocket';
111
-
112
- if (isUpgrade) {
113
- const donePromise = new Promise<void>((resolve) => {
114
- resolveDone = resolve;
115
- });
116
-
117
- // Defensive: guard against future code adding rejection paths
118
- donePromise.catch(() => {});
119
-
120
- // Set on context so middleware defers session finalization until WS closes
121
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
122
- (c as any).set(WS_DONE_PROMISE_KEY, donePromise);
123
- }
124
-
125
- const wsConnection: WebSocketConnection = {
126
- onOpen: (h) => {
127
- openHandler = h;
128
- },
129
- onMessage: (h) => {
130
- messageHandler = h;
131
- },
132
- onClose: (h) => {
133
- closeHandler = h;
134
- },
135
- send: (_data: string | ArrayBuffer | Uint8Array) => {
136
- // This will be bound to the actual ws in the handlers
137
- },
138
- };
139
-
140
- // IMPORTANT: We run in ROOT_CONTEXT (no active OTEL span) to avoid a Bun bug
141
- // where OTEL-instrumented fetch conflicts with streaming responses.
142
- // See: https://github.com/agentuity/sdk/issues/471
143
- // See: https://github.com/oven-sh/bun/issues/24766
144
- const runHandler = () => {
145
- otelContext.with(ROOT_CONTEXT, () => {
146
- handler(c, wsConnection);
147
- });
148
- initialized = true;
149
- };
150
-
151
- runHandler();
152
-
153
- return {
154
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
155
- onOpen: async (event: Event, ws: any) => {
156
- try {
157
- wsConnection.send = (data) => ws.send(data);
158
-
159
- if (openHandler) {
160
- await otelContext.with(ROOT_CONTEXT, () => openHandler!(event));
161
- }
162
- } catch (err) {
163
- c.var.logger?.error('WebSocket onOpen error:', err);
164
- throw err;
165
- }
166
- },
167
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
168
- onMessage: async (event: MessageEvent, ws: any) => {
169
- try {
170
- if (!initialized) {
171
- wsConnection.send = (data) => ws.send(data);
172
- runHandler();
173
- }
174
- if (messageHandler) {
175
- await otelContext.with(ROOT_CONTEXT, () => messageHandler!(event));
176
- }
177
- } catch (err) {
178
- c.var.logger?.error('WebSocket onMessage error:', err);
179
- throw err;
180
- }
181
- },
182
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
183
- onClose: async (event: CloseEvent, _ws: any) => {
184
- try {
185
- if (closeHandler) {
186
- await otelContext.with(ROOT_CONTEXT, () => closeHandler!(event));
187
- }
188
- } catch (err) {
189
- c.var.logger?.error('WebSocket onClose error:', err);
190
- } finally {
191
- // Resolve the done promise to trigger session finalization
192
- // This must fire even if the user's onClose handler throws
193
- resolveDone?.();
194
- }
195
- },
196
- };
197
- });
198
-
199
- const middleware: MiddlewareHandler<E, string, { outputFormat: 'ws' }> = (c, next) =>
200
- (wsHandler as unknown as MiddlewareHandler<E, string, { outputFormat: 'ws' }>)(c, next);
201
-
202
- return tagRoute(middleware, { type: 'websocket' });
203
- }
@@ -1,323 +0,0 @@
1
- import type { LogLevel } from '@agentuity/core';
2
- import { __originalConsole } from '../otel/logger';
3
- import type { Logger } from './logger';
4
- import { formatMessage } from './util';
5
-
6
- const BOLD = '\x1b[1m';
7
- const RESET = '\x1b[0m';
8
-
9
- // Helper to convert hex color to ANSI 24-bit color code
10
- function hexToAnsi(hex: string): string {
11
- const r = parseInt(hex.slice(1, 3), 16);
12
- const g = parseInt(hex.slice(3, 5), 16);
13
- const b = parseInt(hex.slice(5, 7), 16);
14
- return `\x1b[38;2;${r};${g};${b}m`;
15
- }
16
-
17
- interface LogColors {
18
- level: string;
19
- message: string;
20
- }
21
-
22
- function shouldUseColors(): boolean {
23
- // FORCE_COLOR overrides all checks (used when stdout is piped but we still want colors)
24
- if (process.env.FORCE_COLOR === '1') {
25
- return true;
26
- }
27
-
28
- // Check for NO_COLOR environment variable (any non-empty value disables colors)
29
- if (process.env.NO_COLOR) {
30
- return false;
31
- }
32
-
33
- // Check for TERM=dumb
34
- if (process.env.TERM === 'dumb') {
35
- return false;
36
- }
37
-
38
- // Check if stdout is a TTY
39
- if (!process.stdout || typeof process.stdout.isTTY === 'undefined') {
40
- return false;
41
- }
42
-
43
- if (process.stdout && typeof process.stdout.isTTY !== 'undefined' && !process.stdout.isTTY) {
44
- return false;
45
- }
46
-
47
- return true;
48
- }
49
-
50
- type ColorScheme = 'light' | 'dark';
51
-
52
- function getLogColors(scheme: ColorScheme): Record<LogLevel, LogColors> {
53
- if (scheme === 'light') {
54
- // Darker, high-contrast colors for light backgrounds
55
- return {
56
- trace: {
57
- level: hexToAnsi('#008B8B') + BOLD, // Dark cyan
58
- message: hexToAnsi('#4B4B4B'), // Dark gray
59
- },
60
- debug: {
61
- level: hexToAnsi('#0000CD') + BOLD, // Medium blue
62
- message: hexToAnsi('#006400'), // Dark green
63
- },
64
- info: {
65
- level: hexToAnsi('#FF8C00') + BOLD, // Dark orange
66
- message: hexToAnsi('#0066CC') + BOLD, // Strong blue
67
- },
68
- warn: {
69
- level: hexToAnsi('#9400D3') + BOLD, // Dark violet
70
- message: hexToAnsi('#8B008B'), // Dark magenta
71
- },
72
- error: {
73
- level: hexToAnsi('#DC143C') + BOLD, // Crimson
74
- message: hexToAnsi('#8B0000') + BOLD, // Dark red
75
- },
76
- };
77
- }
78
-
79
- // Dark mode colors (brighter for dark backgrounds)
80
- return {
81
- trace: {
82
- level: hexToAnsi('#00FFFF') + BOLD, // Cyan
83
- message: hexToAnsi('#A0A0A0'), // Light gray
84
- },
85
- debug: {
86
- level: hexToAnsi('#5C9CFF') + BOLD, // Blue
87
- message: hexToAnsi('#90EE90'), // Light green
88
- },
89
- info: {
90
- level: hexToAnsi('#FFD700') + BOLD, // Gold/Yellow
91
- message: hexToAnsi('#FFFFFF') + BOLD, // White
92
- },
93
- warn: {
94
- level: hexToAnsi('#FF00FF') + BOLD, // Magenta
95
- message: hexToAnsi('#FF00FF'), // Magenta
96
- },
97
- error: {
98
- level: hexToAnsi('#FF4444') + BOLD, // Red
99
- message: hexToAnsi('#FF4444'), // Red
100
- },
101
- };
102
- }
103
-
104
- // Detect color scheme from environment
105
- function detectColorScheme(): ColorScheme {
106
- const scheme = process.env.COLOR_SCHEME?.toLowerCase();
107
- if (scheme === 'light' || scheme === 'dark') {
108
- return scheme;
109
- }
110
- if (process.env.CI) {
111
- return 'light';
112
- }
113
- return 'dark'; // Default to dark mode
114
- }
115
-
116
- const NOCOLORS = Object.freeze({ level: '', reset: '', message: '' });
117
-
118
- /**
119
- * Console implementation of the Logger interface
120
- */
121
- export default class ConsoleLogger implements Logger {
122
- private context: Record<string, unknown>;
123
- private formatContext: boolean;
124
- private logLevel: LogLevel;
125
- private colors: Record<LogLevel, LogColors>;
126
- private detectedTraceLoopLog: boolean | undefined;
127
- private useColors: boolean;
128
-
129
- /**
130
- * Creates a new console logger
131
- *
132
- * @param context - Initial context for the logger
133
- */
134
- constructor(
135
- context: Record<string, unknown> = {},
136
- formatContext = true,
137
- logLevel: LogLevel = 'info'
138
- ) {
139
- this.context = context;
140
- this.formatContext = formatContext;
141
- this.logLevel = logLevel;
142
- this.useColors = shouldUseColors();
143
- this.colors = this.useColors
144
- ? getLogColors(detectColorScheme())
145
- : ({} as Record<LogLevel, LogColors>);
146
- }
147
-
148
- private shouldLog(level: LogLevel): boolean {
149
- switch (this.logLevel) {
150
- case 'trace':
151
- return true;
152
- case 'debug':
153
- return level === 'debug' || level === 'info' || level === 'warn' || level === 'error';
154
- case 'info':
155
- return level === 'info' || level === 'warn' || level === 'error';
156
- case 'warn':
157
- return level === 'warn' || level === 'error';
158
- case 'error':
159
- return level === 'error';
160
- }
161
- return false;
162
- }
163
-
164
- /**
165
- * Log a trace message (most verbose)
166
- *
167
- * @param message - The message to log
168
- * @param args - Additional arguments to log
169
- */
170
- trace(message: unknown, ...args: unknown[]): void {
171
- if (!this.shouldLog('trace')) {
172
- return;
173
- }
174
- try {
175
- const colors = this.useColors ? this.colors.trace : NOCOLORS;
176
- const formattedMessage = formatMessage(this.formatContext, this.context, message, args);
177
- __originalConsole.debug(
178
- `${colors.level}[TRACE]${RESET} ${colors.message}${formattedMessage}${RESET}`
179
- );
180
- } catch (err) {
181
- // Fallback to direct logging if formatting fails
182
- const colors = this.colors.trace;
183
- __originalConsole.debug(`${colors.level}[TRACE]${RESET} ${message}`, ...args);
184
- __originalConsole.error('Error formatting log message:', err);
185
- }
186
- }
187
-
188
- /**
189
- * Log a debug message
190
- *
191
- * @param message - The message to log
192
- * @param args - Additional arguments to log
193
- */
194
- debug(message: unknown, ...args: unknown[]): void {
195
- if (!this.shouldLog('debug')) {
196
- return;
197
- }
198
- try {
199
- const colors = this.useColors ? this.colors.debug : NOCOLORS;
200
- const formattedMessage = formatMessage(this.formatContext, this.context, message, args);
201
- __originalConsole.debug(
202
- `${colors.level}[DEBUG]${RESET} ${colors.message}${formattedMessage}${RESET}`
203
- );
204
- } catch (err) {
205
- // Fallback to direct logging if formatting fails
206
- const colors = this.colors.debug;
207
- __originalConsole.debug(`${colors.level}[DEBUG]${RESET} ${message}`, ...args);
208
- __originalConsole.error('Error formatting log message:', err);
209
- }
210
- }
211
-
212
- /**
213
- * Log an info message
214
- *
215
- * @param message - The message to log
216
- * @param args - Additional arguments to log
217
- */
218
- info(message: unknown, ...args: unknown[]): void {
219
- if (!this.shouldLog('info')) {
220
- return;
221
- }
222
- // suppress the default traceloop message at info level
223
- if (
224
- !this.detectedTraceLoopLog &&
225
- typeof message === 'string' &&
226
- message.includes('Traceloop exporting traces to')
227
- ) {
228
- this.detectedTraceLoopLog = true;
229
- if (this.shouldLog('debug')) {
230
- this.debug(message, ...args);
231
- }
232
- return;
233
- }
234
- try {
235
- const colors = this.useColors ? this.colors.info : NOCOLORS;
236
- const formattedMessage = formatMessage(this.formatContext, this.context, message, args);
237
- __originalConsole.info(
238
- `${colors.level}[INFO]${RESET} ${colors.message}${formattedMessage}${RESET}`
239
- );
240
- } catch (err) {
241
- // Fallback to direct logging if formatting fails
242
- const colors = this.colors.info;
243
- __originalConsole.info(`${colors.level}[INFO]${RESET} ${message}`, ...args);
244
- __originalConsole.error('Error formatting log message:', err);
245
- }
246
- }
247
-
248
- /**
249
- * Log a warning message
250
- *
251
- * @param message - The message to log
252
- * @param args - Additional arguments to log
253
- */
254
- warn(message: unknown, ...args: unknown[]): void {
255
- if (!this.shouldLog('warn')) {
256
- return;
257
- }
258
- try {
259
- const colors = this.useColors ? this.colors.warn : NOCOLORS;
260
- const formattedMessage = formatMessage(this.formatContext, this.context, message, args);
261
- __originalConsole.warn(
262
- `${colors.level}[WARN]${RESET} ${colors.message}${formattedMessage}${RESET}`
263
- );
264
- } catch (err) {
265
- // Fallback to direct logging if formatting fails
266
- const colors = this.colors.warn;
267
- __originalConsole.warn(`${colors.level}[WARN]${RESET} ${message}`, ...args);
268
- __originalConsole.error('Error formatting log message:', err);
269
- }
270
- }
271
-
272
- /**
273
- * Log an error message
274
- *
275
- * @param message - The message to log
276
- * @param args - Additional arguments to log
277
- */
278
- error(message: unknown, ...args: unknown[]): void {
279
- if (!this.shouldLog('error')) {
280
- return;
281
- }
282
- try {
283
- const colors = this.useColors ? this.colors.error : NOCOLORS;
284
- const formattedMessage = formatMessage(this.formatContext, this.context, message, args);
285
- __originalConsole.error(
286
- `${colors.level}[ERROR]${RESET} ${colors.message}${formattedMessage}${RESET}`
287
- );
288
- } catch (err) {
289
- // Fallback to direct logging if formatting fails
290
- const colors = this.colors.error;
291
- __originalConsole.error(`${colors.level}[ERROR]${RESET} ${message}`, ...args);
292
- __originalConsole.error('Error formatting log message:', err);
293
- }
294
- }
295
-
296
- /**
297
- * Log a fatal error message and exit the process
298
- *
299
- * @param message - The message to log
300
- * @param args - Additional arguments to log
301
- */
302
- fatal(message: unknown, ...args: unknown[]): never {
303
- this.error(message, ...args);
304
- process.exit(1);
305
- }
306
-
307
- /**
308
- * Create a child logger with additional context
309
- *
310
- * @param opts - Additional context for the child logger
311
- * @returns A new logger instance with the additional context
312
- */
313
- child(opts: Record<string, unknown>): Logger {
314
- return new ConsoleLogger(
315
- {
316
- ...this.context,
317
- ...opts,
318
- },
319
- this.formatContext,
320
- this.logLevel
321
- );
322
- }
323
- }
@@ -1,2 +0,0 @@
1
- export { internal } from './internal';
2
- export { type Logger, logger } from './user';
@@ -1,165 +0,0 @@
1
- import { formatMessage } from './util';
2
-
3
- const cyan = '\x1b[1;96m';
4
- const reset = '\x1b[0m';
5
-
6
- /**
7
- * Log levels for internal SDK logging
8
- */
9
- export type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'silent';
10
-
11
- /**
12
- * Internal logger configuration
13
- */
14
- interface InternalLoggerConfig {
15
- level: LogLevel;
16
- context?: Record<string, unknown>;
17
- }
18
-
19
- /**
20
- * Simple internal logger that doesn't depend on other SDK modules
21
- * This logger is only for SDK internal diagnostics and debugging
22
- */
23
- class InternalLogger {
24
- private config: InternalLoggerConfig;
25
-
26
- constructor() {
27
- this.config = this.loadConfig();
28
- }
29
-
30
- /**
31
- * Load configuration from environment variables
32
- */
33
- private loadConfig(): InternalLoggerConfig {
34
- const envLevel = process.env.AGENTUITY_SDK_LOG_LEVEL?.toLowerCase();
35
-
36
- // Validate log level
37
- const validLevels: LogLevel[] = ['debug', 'info', 'warn', 'error', 'silent'];
38
- const level = validLevels.includes(envLevel as LogLevel) ? (envLevel as LogLevel) : 'silent';
39
-
40
- return {
41
- level,
42
- context: {
43
- '@agentuity/source': 'sdk-internal',
44
- '@agentuity/timestamp': new Date().toISOString(),
45
- },
46
- };
47
- }
48
-
49
- /**
50
- * Check if a log level should be output based on current configuration
51
- */
52
- private shouldLog(level: LogLevel): boolean {
53
- if (this.config.level === 'silent') return false;
54
-
55
- const levelPriority = {
56
- debug: 0,
57
- info: 1,
58
- warn: 2,
59
- error: 3,
60
- silent: 4,
61
- };
62
-
63
- return levelPriority[level] >= levelPriority[this.config.level];
64
- }
65
-
66
- /**
67
- * Format a log message with context
68
- */
69
- private formatMessage(message: unknown, ...args: unknown[]): string {
70
- const formattedMessage = formatMessage(false, this.config.context, message, args);
71
- return `${cyan}[INTERNAL]${reset} ${formattedMessage}`;
72
- }
73
-
74
- /**
75
- * Log a debug message
76
- */
77
- debug(message: unknown, ...args: unknown[]): void {
78
- if (this.shouldLog('debug')) {
79
- console.debug(this.formatMessage(message, ...args));
80
- }
81
- }
82
-
83
- /**
84
- * Log an info message
85
- */
86
- info(message: unknown, ...args: unknown[]): void {
87
- if (this.shouldLog('info')) {
88
- console.info(this.formatMessage(message, ...args));
89
- }
90
- }
91
-
92
- /**
93
- * Log a warning message
94
- */
95
- warn(message: unknown, ...args: unknown[]): void {
96
- if (this.shouldLog('warn')) {
97
- console.warn(this.formatMessage(message, ...args));
98
- }
99
- }
100
-
101
- /**
102
- * Log an error message
103
- */
104
- error(message: unknown, ...args: unknown[]): void {
105
- if (this.shouldLog('error')) {
106
- console.error(this.formatMessage(message, ...args));
107
- }
108
- }
109
-
110
- /**
111
- * Update configuration at runtime
112
- */
113
- updateConfig(config: Partial<InternalLoggerConfig>): void {
114
- this.config = { ...this.config, ...config };
115
- }
116
-
117
- /**
118
- * Get current configuration
119
- */
120
- getConfig(): InternalLoggerConfig {
121
- return { ...this.config };
122
- }
123
-
124
- /**
125
- * Check if logging is enabled
126
- */
127
- isEnabled(): boolean {
128
- return this.config.level !== 'silent';
129
- }
130
-
131
- /**
132
- * Create a child logger with additional context
133
- */
134
- child(context: Record<string, unknown>): InternalLogger {
135
- const childLogger = new InternalLogger();
136
- childLogger.updateConfig({
137
- ...this.config,
138
- context: {
139
- ...this.config.context,
140
- ...context,
141
- },
142
- });
143
- return childLogger;
144
- }
145
- }
146
-
147
- // Singleton instance - not exported
148
- const internalLogger = new InternalLogger();
149
-
150
- /**
151
- * Internal logger for SDK use only
152
- * This is NOT exported from the main SDK index
153
- */
154
- export const internal = {
155
- debug: (message: unknown, ...args: unknown[]) => internalLogger.debug(message, ...args),
156
- info: (message: unknown, ...args: unknown[]) => internalLogger.info(message, ...args),
157
- warn: (message: unknown, ...args: unknown[]) => internalLogger.warn(message, ...args),
158
- error: (message: unknown, ...args: unknown[]) => internalLogger.error(message, ...args),
159
-
160
- // Utility methods
161
- updateConfig: (config: Partial<InternalLoggerConfig>) => internalLogger.updateConfig(config),
162
- getConfig: () => internalLogger.getConfig(),
163
- isEnabled: () => internalLogger.isEnabled(),
164
- child: (context: Record<string, unknown>) => internalLogger.child(context),
165
- };