@agentuity/runtime 2.0.11 → 3.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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,121 +0,0 @@
1
- import { type ExportResult, ExportResultCode } from '@opentelemetry/core';
2
- import type { ReadableSpan, SpanExporter } from '@opentelemetry/sdk-trace-base';
3
- import { existsSync, appendFileSync, mkdirSync } from 'node:fs';
4
- import { join } from 'node:path';
5
- import { randomUUID } from 'node:crypto';
6
-
7
- /**
8
- * JSONL implementation of the SpanExporter interface
9
- * Writes traces to a timestamped JSONL file
10
- */
11
- export class JSONLTraceExporter implements SpanExporter {
12
- private currentFile: string | null = null;
13
- private readonly basePath: string;
14
- private readonly filePrefix: string;
15
-
16
- /**
17
- * Creates a new JSONL trace exporter
18
- * @param basePath - Directory to store the JSONL files
19
- */
20
- constructor(basePath: string) {
21
- this.basePath = basePath;
22
- this.filePrefix = 'otel-trace';
23
- this.ensureDirectory();
24
- }
25
-
26
- private ensureDirectory(): void {
27
- if (!existsSync(this.basePath)) {
28
- mkdirSync(this.basePath, { recursive: true });
29
- }
30
- }
31
-
32
- private getOrCreateFile(): string {
33
- // If current file exists, use it
34
- if (this.currentFile && existsSync(this.currentFile)) {
35
- return this.currentFile;
36
- }
37
-
38
- this.currentFile = join(
39
- this.basePath,
40
- `${this.filePrefix}-${Date.now()}.${randomUUID()}.jsonl`
41
- );
42
- return this.currentFile;
43
- }
44
-
45
- /**
46
- * Exports spans to a JSONL file
47
- *
48
- * @param spans - The spans to export
49
- * @param resultCallback - Callback function to report the export result
50
- */
51
- export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void {
52
- try {
53
- if (spans.length === 0) {
54
- resultCallback({ code: ExportResultCode.SUCCESS });
55
- return;
56
- }
57
- const file = this.getOrCreateFile();
58
- const lines: string[] = [];
59
- for (const span of spans) {
60
- const record = {
61
- traceId: span.spanContext().traceId,
62
- spanId: span.spanContext().spanId,
63
- traceState: span.spanContext().traceState?.serialize(),
64
- name: span.name,
65
- kind: span.kind,
66
- startTime: span.startTime,
67
- endTime: span.endTime,
68
- attributes: span.attributes,
69
- status: span.status,
70
- events: span.events,
71
- links: span.links,
72
- resource: span.resource.attributes,
73
- droppedAttributesCount: span.droppedAttributesCount,
74
- droppedEventsCount: span.droppedEventsCount,
75
- droppedLinksCount: span.droppedLinksCount,
76
- duration: span.duration,
77
- ended: span.ended,
78
- };
79
-
80
- lines.push(JSON.stringify(record));
81
- }
82
- const payload = `${lines.join('\n')}\n`;
83
- try {
84
- appendFileSync(file, payload, 'utf-8');
85
- } catch (err) {
86
- // File may have been deleted, reset and retry once
87
- const code = (err as NodeJS.ErrnoException).code;
88
- if (code === 'ENOENT') {
89
- this.currentFile = null;
90
- const newFile = this.getOrCreateFile();
91
- appendFileSync(newFile, payload, 'utf-8');
92
- } else {
93
- throw err;
94
- }
95
- }
96
-
97
- resultCallback({ code: ExportResultCode.SUCCESS });
98
- } catch (error) {
99
- resultCallback({
100
- code: ExportResultCode.FAILED,
101
- error: error instanceof Error ? error : new Error(String(error)),
102
- });
103
- }
104
- }
105
-
106
- /**
107
- * Shuts down the exporter
108
- *
109
- * @returns A promise that resolves when shutdown is complete
110
- */
111
- async shutdown(): Promise<void> {
112
- this.currentFile = null;
113
- }
114
-
115
- /**
116
- * Forces a flush of any pending data
117
- */
118
- async forceFlush(): Promise<void> {
119
- // No-op for file-based exporter as writes are synchronous
120
- }
121
- }
package/src/otel/fetch.ts DELETED
@@ -1,105 +0,0 @@
1
- import { context, propagation, SpanStatusCode, trace } from '@opentelemetry/api';
2
-
3
- /**
4
- * Reference to the original fetch function before instrumentation
5
- */
6
- export const __originalFetch = fetch; // save the original fetch before we patch it
7
-
8
- /**
9
- * Instruments the global fetch function with OpenTelemetry tracing
10
- *
11
- * Replaces the global fetch with an instrumented version that creates spans
12
- * for each HTTP request and propagates trace context in headers
13
- */
14
- export function instrumentFetch() {
15
- const patch = async (
16
- input: string | Request | URL,
17
- init: RequestInit | undefined
18
- ): Promise<Response> => {
19
- const url =
20
- typeof input === 'string' ? input : input instanceof URL ? input.toString() : input.url;
21
-
22
- const method =
23
- init?.method ||
24
- (typeof input !== 'string' && !(input instanceof URL) ? input.method || 'GET' : 'GET');
25
-
26
- // Get the active span if it exists
27
- const activeSpan = trace.getActiveSpan();
28
-
29
- // If there's no active span, just call the original fetch
30
- if (!activeSpan) {
31
- return __originalFetch(input, init);
32
- }
33
-
34
- // Get the current active context
35
- const currentContext = context.active();
36
- const _url = new URL(url);
37
-
38
- // Create a child span using the current context
39
- const childSpan = trace.getTracer('fetch').startSpan(
40
- `${method} ${_url.pathname}`,
41
- {
42
- attributes: {
43
- 'http.url': url,
44
- 'http.path': _url.pathname,
45
- 'http.method': method,
46
- host: _url.host,
47
- },
48
- },
49
- currentContext
50
- );
51
-
52
- try {
53
- // Prepare trace context injection
54
- const carrier: Record<string, string> = {};
55
-
56
- // Create a new context with the child span
57
- const newContext = trace.setSpan(currentContext, childSpan);
58
-
59
- // Use the new context for propagation
60
- propagation.inject(newContext, carrier);
61
-
62
- // Preserve original headers and add trace context
63
- // Handle headers from both Request input and init parameter
64
- const baseHeaders =
65
- typeof input !== 'string' && !(input instanceof URL) && input instanceof Request
66
- ? input.headers
67
- : undefined;
68
- const headers = new Headers(baseHeaders ?? init?.headers ?? {});
69
-
70
- // Add trace context headers (overwriting any already present)
71
- for (const [key, value] of Object.entries(carrier)) {
72
- headers.set(key, value);
73
- }
74
-
75
- // Create new init object with updated headers
76
- const newInit = {
77
- ...init,
78
- headers,
79
- };
80
-
81
- const response = await __originalFetch(input, newInit);
82
-
83
- // Add response attributes to span
84
- childSpan.setAttributes({
85
- 'http.status_code': response.status,
86
- 'http.user_agent': response.headers.get('user-agent') || '',
87
- });
88
-
89
- if (!response.ok) {
90
- childSpan.setStatus({ code: SpanStatusCode.ERROR });
91
- } else {
92
- childSpan.setStatus({ code: SpanStatusCode.OK });
93
- }
94
-
95
- return response;
96
- } catch (error) {
97
- childSpan.recordException(error as Error);
98
- childSpan.setStatus({ code: SpanStatusCode.ERROR });
99
- throw error;
100
- } finally {
101
- childSpan.end();
102
- }
103
- };
104
- globalThis.fetch = patch as typeof fetch;
105
- }
package/src/otel/http.ts DELETED
@@ -1,53 +0,0 @@
1
- import { context, propagation } from '@opentelemetry/api';
2
-
3
- /**
4
- * Injects trace context into response headers using the OpenTelemetry propagation API
5
- *
6
- * @param headers - Optional existing headers to include
7
- * @returns A record of headers with trace context injected
8
- */
9
- export function injectTraceContextToHeaders(
10
- headers: Record<string, string> | Headers = {}
11
- ): Record<string, string> {
12
- let _headers: Record<string, string>;
13
- if (headers instanceof Headers) {
14
- _headers = {};
15
- headers.forEach((v, k) => {
16
- _headers[k] = v;
17
- });
18
- } else {
19
- _headers = { ...headers };
20
- }
21
- // Create a carrier object for the headers
22
- const carrier: Record<string, string> = { ..._headers } as Record<string, string>;
23
-
24
- // Get the current context
25
- const currentContext = context.active();
26
-
27
- // Inject trace context into the carrier
28
- propagation.inject(currentContext, carrier);
29
-
30
- return carrier;
31
- }
32
-
33
- /**
34
- * Extracts trace context from Bun Request headers
35
- *
36
- * @param req - The Bun Request object
37
- * @returns The context with trace information
38
- */
39
- export function extractTraceContextFromRequest(
40
- req: Request
41
- ): ReturnType<typeof propagation.extract> {
42
- // Create a carrier object from the headers
43
- const carrier: Record<string, string> = {};
44
-
45
- // Convert headers to the format expected by the propagator
46
- req.headers.forEach((value, key) => {
47
- carrier[key.toLowerCase()] = value;
48
- });
49
-
50
- // Extract the context using the global propagator
51
- const activeContext = context.active();
52
- return propagation.extract(activeContext, carrier);
53
- }
@@ -1,293 +0,0 @@
1
- import { format } from 'node:util';
2
- import { safeStringify, type LogLevel } from '@agentuity/core';
3
- import * as LogsAPI from '@opentelemetry/api-logs';
4
- import type { Logger } from '../logger';
5
- import ConsoleLogger from '../logger/console';
6
-
7
- import { originalConsole as originalConsoleGlobal } from '../_globals';
8
-
9
- /**
10
- * Reference to the original console object before patching.
11
- * Stored in a Symbol.for() global to survive hot reloads.
12
- */
13
- const existingOriginal = originalConsoleGlobal.get();
14
- export const __originalConsole: Console = existingOriginal ?? Object.create(console);
15
-
16
- if (!existingOriginal) {
17
- originalConsoleGlobal.set(__originalConsole);
18
- }
19
-
20
- export class OtelLogger implements Logger {
21
- private readonly delegate: LogsAPI.Logger;
22
- private readonly context: Record<string, unknown> | undefined;
23
- private readonly logger: ConsoleLogger | undefined;
24
- private readonly logLevel: LogLevel;
25
-
26
- constructor(
27
- useConsole: boolean,
28
- delegate: LogsAPI.Logger,
29
- context?: Record<string, unknown> | undefined,
30
- logLevel?: LogLevel
31
- ) {
32
- this.delegate = delegate;
33
- this.context = context;
34
- this.logLevel = logLevel ?? 'info';
35
- this.logger = useConsole ? new ConsoleLogger(context, false, this.logLevel) : undefined;
36
- }
37
-
38
- private formatMessage(message: unknown) {
39
- if (typeof message === 'string') {
40
- return message;
41
- }
42
- try {
43
- return safeStringify(message);
44
- } catch {
45
- // Handle circular references or other unknown stringification errors
46
- return String(message);
47
- }
48
- }
49
-
50
- private getAttributes(): Record<string, unknown> | undefined {
51
- return this.context;
52
- }
53
-
54
- private emit(severityNumber: LogsAPI.SeverityNumber, severityText: string, body: string) {
55
- const attributes = this.getAttributes();
56
-
57
- try {
58
- this.delegate.emit({
59
- severityNumber,
60
- severityText,
61
- body,
62
- attributes: attributes as LogsAPI.LogRecord['attributes'],
63
- });
64
- } catch (error) {
65
- // Log error to console if available, but don't fail the entire operation
66
- this.logger?.error('Failed to emit log to OTLP instance:', error);
67
- }
68
- }
69
-
70
- private shouldLog(level: LogsAPI.SeverityNumber): boolean {
71
- switch (this.logLevel) {
72
- case 'trace':
73
- return true;
74
- case 'debug':
75
- return (
76
- level === LogsAPI.SeverityNumber.DEBUG ||
77
- level === LogsAPI.SeverityNumber.INFO ||
78
- level === LogsAPI.SeverityNumber.WARN ||
79
- level === LogsAPI.SeverityNumber.ERROR
80
- );
81
- case 'info':
82
- return (
83
- level === LogsAPI.SeverityNumber.INFO ||
84
- level === LogsAPI.SeverityNumber.WARN ||
85
- level === LogsAPI.SeverityNumber.ERROR
86
- );
87
- case 'warn':
88
- return level === LogsAPI.SeverityNumber.WARN || level === LogsAPI.SeverityNumber.ERROR;
89
- case 'error':
90
- return level === LogsAPI.SeverityNumber.ERROR;
91
- }
92
- return false;
93
- }
94
-
95
- trace(message: unknown, ...args: unknown[]) {
96
- if (!this.shouldLog(LogsAPI.SeverityNumber.TRACE)) {
97
- return;
98
- }
99
- this.logger?.trace(message, ...args);
100
- let body: string;
101
- try {
102
- body = format(this.formatMessage(message), ...args);
103
- } catch {
104
- // Fallback if format causes recursion
105
- body = `${this.formatMessage(message)} ${args.map((arg) => String(arg)).join(' ')}`;
106
- }
107
- this.emit(LogsAPI.SeverityNumber.TRACE, 'TRACE', body);
108
- }
109
- debug(message: unknown, ...args: unknown[]) {
110
- if (!this.shouldLog(LogsAPI.SeverityNumber.DEBUG)) {
111
- return;
112
- }
113
- this.logger?.debug(message, ...args);
114
- let body: string;
115
- try {
116
- body = format(this.formatMessage(message), ...args);
117
- } catch {
118
- // Fallback if format causes recursion
119
- body = `${this.formatMessage(message)} ${args.map((arg) => String(arg)).join(' ')}`;
120
- }
121
- this.emit(LogsAPI.SeverityNumber.DEBUG, 'DEBUG', body);
122
- }
123
- info(message: unknown, ...args: unknown[]) {
124
- if (!this.shouldLog(LogsAPI.SeverityNumber.INFO)) {
125
- return;
126
- }
127
- this.logger?.info(message, ...args);
128
- let body: string;
129
- try {
130
- body = format(this.formatMessage(message), ...args);
131
- } catch {
132
- // Fallback if format causes recursion
133
- body = `${this.formatMessage(message)} ${args.map((arg) => String(arg)).join(' ')}`;
134
- }
135
- this.emit(LogsAPI.SeverityNumber.INFO, 'INFO', body);
136
- }
137
- warn(message: unknown, ...args: unknown[]) {
138
- if (!this.shouldLog(LogsAPI.SeverityNumber.WARN)) {
139
- return;
140
- }
141
- this.logger?.warn(message, ...args);
142
- let body: string;
143
- try {
144
- body = format(this.formatMessage(message), ...args);
145
- } catch {
146
- // Fallback if format causes recursion
147
- body = `${this.formatMessage(message)} ${args.map((arg) => String(arg)).join(' ')}`;
148
- }
149
- this.emit(LogsAPI.SeverityNumber.WARN, 'WARN', body);
150
- }
151
- error(message: unknown, ...args: unknown[]) {
152
- if (!this.shouldLog(LogsAPI.SeverityNumber.ERROR)) {
153
- return;
154
- }
155
- this.logger?.error(message, ...args);
156
- let body: string;
157
- try {
158
- body = format(this.formatMessage(message), ...args);
159
- } catch {
160
- // Fallback if format causes recursion
161
- body = `${this.formatMessage(message)} ${args.map((arg) => String(arg)).join(' ')}`;
162
- }
163
- this.emit(LogsAPI.SeverityNumber.ERROR, 'ERROR', body);
164
- }
165
- fatal(message: unknown, ...args: unknown[]): never {
166
- this.error(message, ...args);
167
- process.exit(1);
168
- }
169
- child(opts: Record<string, unknown>): Logger {
170
- return new OtelLogger(
171
- !!this.logger,
172
- this.delegate,
173
- {
174
- ...(this.context ?? {}),
175
- ...opts,
176
- },
177
- this.logLevel
178
- );
179
- }
180
- }
181
-
182
- /**
183
- * Creates a logger that integrates with OpenTelemetry
184
- *
185
- * @param useConsole - Whether to also log to the console
186
- * @param context - Additional context to include with log records
187
- * @returns A logger instance
188
- */
189
- export function createLogger(
190
- useConsole: boolean,
191
- context?: Record<string, unknown>,
192
- logLevel?: LogLevel
193
- ): Logger {
194
- const delegate = LogsAPI.logs.getLogger('default', undefined, {
195
- scopeAttributes: context as LogsAPI.LoggerOptions['scopeAttributes'],
196
- });
197
- return new OtelLogger(useConsole, delegate, context, logLevel);
198
- }
199
-
200
- /**
201
- * Patches the global console object to integrate with OpenTelemetry logging
202
- *
203
- * @param attributes - Attributes to include with all console log records
204
- */
205
- export function patchConsole(
206
- enabled: boolean,
207
- attributes: Record<string, unknown>,
208
- logLevel: LogLevel
209
- ) {
210
- if (!enabled) {
211
- return;
212
- }
213
- const _patch = { ...__originalConsole };
214
- const delegate = createLogger(true, attributes, logLevel);
215
-
216
- // Patch individual console methods instead of reassigning the whole object
217
- _patch.log = (...args: unknown[]) => {
218
- delegate.info(args[0] as string, ...args.slice(1));
219
- };
220
- _patch.error = (...args: unknown[]) => {
221
- delegate.error(args[0] as string, ...args.slice(1));
222
- };
223
- _patch.warn = (...args: unknown[]) => {
224
- delegate.warn(args[0] as string, ...args.slice(1));
225
- };
226
- _patch.debug = (...args: unknown[]) => {
227
- delegate.debug(args[0] as string, ...args.slice(1));
228
- };
229
- _patch.info = (...args: unknown[]) => {
230
- delegate.info(args[0] as string, ...args.slice(1));
231
- };
232
- _patch.dir = (...args: unknown[]) => {
233
- let msg = '';
234
- if (args.length === 1) {
235
- msg = format(args[0]);
236
- } else if (args.length >= 2) {
237
- msg = format(args[0], args[1]);
238
- } else {
239
- msg = safeStringify(args);
240
- }
241
- delegate.debug(msg);
242
- };
243
- _patch.dirxml = (...args: unknown[]) => {
244
- delegate.debug('dirxml:', ...args);
245
- };
246
- _patch.table = (...args: unknown[]) => {
247
- delegate.debug('table:', ...args);
248
- };
249
- _patch.trace = (...args: unknown[]) => {
250
- delegate.debug(args[0] as string, ...args.slice(1));
251
- };
252
- _patch.group = (...args: unknown[]) => {
253
- delegate.debug('group:', ...args);
254
- };
255
- _patch.groupCollapsed = (...args: unknown[]) => {
256
- delegate.debug('groupCollapsed:', ...args);
257
- };
258
- _patch.groupEnd = () => {
259
- delegate.debug('groupEnd');
260
- };
261
- _patch.clear = () => {
262
- /* no-op */
263
- };
264
- _patch.count = (...args: unknown[]) => {
265
- delegate.debug('count:', ...args);
266
- };
267
- _patch.countReset = (...args: unknown[]) => {
268
- delegate.debug('countReset:', ...args);
269
- };
270
- _patch.assert = (condition?: boolean, ...args: unknown[]) => {
271
- if (!condition) {
272
- delegate.error('assertion failed:', ...args);
273
- }
274
- };
275
- _patch.time = (...args: unknown[]) => {
276
- delegate.debug('time:', ...args);
277
- };
278
- _patch.timeLog = (...args: unknown[]) => {
279
- delegate.debug('timeLog:', ...args);
280
- };
281
- _patch.timeEnd = (...args: unknown[]) => {
282
- delegate.debug('timeEnd:', ...args);
283
- };
284
- _patch.profile = (...args: unknown[]) => {
285
- delegate.debug('profile:', ...args);
286
- };
287
- _patch.profileEnd = (...args: unknown[]) => {
288
- delegate.debug('profileEnd:', ...args);
289
- };
290
-
291
- // biome-ignore lint/suspicious/noGlobalAssign: intentionally replacing console with instrumented version
292
- console = globalThis.console = _patch;
293
- }