@agentuity/runtime 2.0.10 → 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,710 +0,0 @@
1
- import { context, SpanKind, SpanStatusCode, type Context, trace } from '@opentelemetry/api';
2
- import { enrichContextWithTraceState } from './otel/tracestate';
3
- import type {
4
- KeyValueStorage,
5
- StreamStorage,
6
- VectorStorage,
7
- SandboxService,
8
- QueueService,
9
- EmailService,
10
- ScheduleService,
11
- TaskStorage,
12
- Logger,
13
- } from '@agentuity/core';
14
- import { formatMessage } from './logger/util';
15
- import type {
16
- AgentContext,
17
- AgentRegistry,
18
- AgentRuntimeState,
19
- AgentMetadata,
20
- AgentRunner,
21
- } from './agent';
22
- import { AGENT_RUNTIME, AGENT_IDS, isInsideAgentRuntime } from './_config';
23
- import type { Thread, Session } from './session';
24
- import { generateId } from './session';
25
- import WaitUntilHandler from './_waituntil';
26
- import { registerServices, createServices } from './_services';
27
- import { getAgentAsyncLocalStorage } from './_context';
28
- import { getLogger, getTracer, setGlobalLogger, setGlobalTracer } from './_server';
29
-
30
- import { getThreadProvider, getSessionProvider, getSessionEventProvider } from './_services';
31
- import * as runtimeConfig from './_config';
32
-
33
- /**
34
- * Flag to track if standalone initialization has already been performed.
35
- * Prevents duplicate initialization across multiple createAgentContext() calls.
36
- */
37
- let standaloneInitialized = false;
38
-
39
- /**
40
- * Create a minimal console-based logger for standalone mode.
41
- * This logger outputs to console without OpenTelemetry integration.
42
- */
43
- function createStandaloneLogger(): Logger {
44
- const logLevel = (process.env.AGENTUITY_LOG_LEVEL || 'info') as
45
- | 'trace'
46
- | 'debug'
47
- | 'info'
48
- | 'warn'
49
- | 'error';
50
- const levels = ['trace', 'debug', 'info', 'warn', 'error'];
51
- const currentLevelIndex = levels.indexOf(logLevel);
52
-
53
- const shouldLog = (level: string) => levels.indexOf(level) >= currentLevelIndex;
54
-
55
- const logger: Logger = {
56
- trace: (message: unknown, ...args: unknown[]) => {
57
- if (shouldLog('trace'))
58
- console.debug('[TRACE]', formatMessage(false, undefined, message, args));
59
- },
60
- debug: (message: unknown, ...args: unknown[]) => {
61
- if (shouldLog('debug'))
62
- console.debug('[DEBUG]', formatMessage(false, undefined, message, args));
63
- },
64
- info: (message: unknown, ...args: unknown[]) => {
65
- if (shouldLog('info'))
66
- console.info('[INFO]', formatMessage(false, undefined, message, args));
67
- },
68
- warn: (message: unknown, ...args: unknown[]) => {
69
- if (shouldLog('warn'))
70
- console.warn('[WARN]', formatMessage(false, undefined, message, args));
71
- },
72
- error: (message: unknown, ...args: unknown[]) => {
73
- if (shouldLog('error'))
74
- console.error('[ERROR]', formatMessage(false, undefined, message, args));
75
- },
76
- fatal: (message: unknown, ...args: unknown[]): never => {
77
- console.error('[FATAL]', formatMessage(false, undefined, message, args));
78
- process.exit(1);
79
- },
80
- child: () => logger,
81
- };
82
-
83
- return logger;
84
- }
85
-
86
- /**
87
- * Initialize standalone runtime globals.
88
- * This sets up minimal logger, tracer, and services for standalone execution.
89
- * Called automatically by createAgentContext() when not running inside agent runtime.
90
- */
91
- function initializeStandaloneRuntime(): void {
92
- if (standaloneInitialized) {
93
- return;
94
- }
95
-
96
- const logger = createStandaloneLogger();
97
- const tracer = trace.getTracer('standalone-agent');
98
-
99
- // Set global state
100
- setGlobalLogger(logger);
101
- setGlobalTracer(tracer);
102
-
103
- // App state is already initialized as {} in _server.ts module-level var
104
-
105
- // Initialize services (will use local services since not authenticated)
106
- const serverUrl = `http://127.0.0.1:${process.env.PORT || '3500'}`;
107
- createServices(logger, undefined, serverUrl);
108
-
109
- standaloneInitialized = true;
110
- logger.debug('Standalone runtime initialized');
111
- }
112
-
113
- /**
114
- * Options for creating a standalone agent context.
115
- *
116
- * Use this when executing agents outside of HTTP requests (Discord bots, cron jobs, etc.)
117
- */
118
- export interface StandaloneContextOptions {
119
- /**
120
- * Session ID for this execution. If not provided, will be auto-generated from trace context.
121
- */
122
- sessionId?: string;
123
- /**
124
- * Thread for multi-turn conversations. If not provided, will be restored/created from thread provider.
125
- */
126
- thread?: Thread;
127
- /**
128
- * Session for this execution. If not provided, will be created.
129
- */
130
- session?: Session;
131
- /**
132
- * Parent OpenTelemetry context for distributed tracing.
133
- */
134
- parentContext?: Context;
135
- /**
136
- * Trigger type for this execution (used in telemetry and session events).
137
- */
138
- trigger?: import('@agentuity/core').SessionStartEvent['trigger'];
139
- }
140
-
141
- /**
142
- * Options for invoke() method.
143
- */
144
- export interface InvokeOptions {
145
- /**
146
- * Span name for OpenTelemetry trace (default: 'agent-invocation')
147
- */
148
- spanName?: string;
149
- }
150
-
151
- /**
152
- * Standalone agent context for executing agents outside of HTTP requests.
153
- *
154
- * This context provides the same infrastructure as HTTP request contexts:
155
- * - OpenTelemetry tracing with proper span hierarchy
156
- * - Session and thread management (save/restore)
157
- * - Background task handling (waitUntil)
158
- * - Session event tracking (start/complete)
159
- * - Access to all services (kv, stream, vector)
160
- *
161
- * @example
162
- * ```typescript
163
- * import { createAgentContext } from '@agentuity/runtime';
164
- * import myAgent from './agents/my-agent';
165
- *
166
- * // Simple usage:
167
- * const ctx = createAgentContext();
168
- * const result = await ctx.invoke(() => myAgent.run(input));
169
- *
170
- * // With custom session tracking:
171
- * const ctx = createAgentContext({
172
- * sessionId: discordMessage.id,
173
- * trigger: 'discord'
174
- * });
175
- * const result = await ctx.invoke(() => myAgent.run(input));
176
- *
177
- * // Reuse context for multiple agents:
178
- * const ctx = createAgentContext();
179
- * const result1 = await ctx.invoke(() => agent1.run(input1));
180
- * const result2 = await ctx.invoke(() => agent2.run(result1));
181
- * ```
182
- */
183
- export class StandaloneAgentContext<
184
- TAgentMap extends AgentRegistry = AgentRegistry,
185
- TConfig = unknown,
186
- TAppState = Record<string, never>,
187
- > implements AgentContext<TAgentMap, TConfig, TAppState>
188
- {
189
- // Immutable context properties (safe for concurrent access)
190
- agent: TAgentMap = {} as TAgentMap;
191
- logger: Logger;
192
- tracer: import('@opentelemetry/api').Tracer;
193
- kv!: KeyValueStorage;
194
- stream!: StreamStorage;
195
- vector!: VectorStorage;
196
- sandbox!: SandboxService;
197
- queue!: QueueService;
198
- email!: EmailService;
199
- schedule!: ScheduleService;
200
- task!: TaskStorage;
201
- config: TConfig;
202
- app: TAppState;
203
- current!: AgentMetadata;
204
- [AGENT_RUNTIME]: AgentRuntimeState;
205
-
206
- // Note: The following are mutable and will be set per-invocation via AsyncLocalStorage
207
- // They exist on the interface for compatibility but are overwritten during invoke()
208
- sessionId: string;
209
- state: Map<string, unknown>;
210
- session: Session;
211
- thread: Thread;
212
- auth: import('@agentuity/core').AuthInterface | null;
213
- [AGENT_IDS]?: Set<string>;
214
-
215
- // Immutable options stored from constructor
216
- private readonly parentContext: Context;
217
- private readonly trigger: import('@agentuity/core').SessionStartEvent['trigger'];
218
- private readonly initialSessionId?: string;
219
-
220
- constructor(options?: StandaloneContextOptions) {
221
- // Auto-initialize if not inside agent runtime and globals are not set
222
- let logger = getLogger();
223
- let tracer = getTracer();
224
- let app = {} as Record<string, unknown>;
225
-
226
- if (!logger || !tracer) {
227
- // Check if we're inside the agent runtime (dev server or cloud)
228
- if (isInsideAgentRuntime()) {
229
- // Inside runtime but globals not set - this is an error
230
- throw new Error(
231
- 'Global state not initialized. This should not happen inside the agent runtime. ' +
232
- 'Please report this issue.'
233
- );
234
- }
235
-
236
- // Not inside runtime - auto-initialize for standalone use
237
- initializeStandaloneRuntime();
238
-
239
- // Re-fetch globals after initialization
240
- logger = getLogger()!;
241
- tracer = getTracer()!;
242
- app = {};
243
- }
244
-
245
- this.logger = logger;
246
- this.tracer = tracer;
247
- this.app = app as TAppState;
248
- this.config = {} as TConfig;
249
- this.state = new Map();
250
- this.parentContext = options?.parentContext ?? context.active();
251
- this.trigger = (options?.trigger as typeof this.trigger) ?? 'manual';
252
- this.initialSessionId = options?.sessionId;
253
-
254
- // Session ID will be set properly in invoke() after span is created
255
- this.sessionId = options?.sessionId ?? 'pending';
256
-
257
- // Thread and session will be restored in invoke()
258
- this.thread =
259
- options?.thread ??
260
- ({
261
- id: 'pending',
262
- state: {
263
- loaded: false,
264
- dirty: false,
265
- get: async () => undefined,
266
- set: async () => {},
267
- has: async () => false,
268
- delete: async () => {},
269
- clear: async () => {},
270
- entries: async () => [],
271
- keys: async () => [],
272
- values: async () => [],
273
- size: async () => 0,
274
- push: async () => {},
275
- },
276
- getMetadata: async () => ({}),
277
- setMetadata: async () => {},
278
- addEventListener: () => {},
279
- removeEventListener: () => {},
280
- destroy: async () => {},
281
- empty: async () => true,
282
- } as Thread);
283
-
284
- this.session =
285
- options?.session ??
286
- ({
287
- id: 'pending',
288
- thread: this.thread,
289
- state: new Map(),
290
- metadata: {},
291
- addEventListener: () => {},
292
- removeEventListener: () => {},
293
- serializeUserData: () => undefined,
294
- } as Session);
295
-
296
- this.auth = null;
297
-
298
- // Create isolated runtime state
299
- this[AGENT_RUNTIME] = {
300
- agents: new Map(),
301
- agentConfigs: new Map(),
302
- agentEventListeners: new WeakMap(),
303
- };
304
-
305
- // Register services (kv, stream, vector)
306
- registerServices(this, true); // true = populate agents registry
307
- }
308
-
309
- waitUntil(_callback: Promise<void> | (() => void | Promise<void>)): void {
310
- // This will be called from within invoke() where waitUntilHandler is in scope
311
- // We need to access the per-call waitUntilHandler from the current invocation
312
- // This is handled by updating the context during invoke() via AsyncLocalStorage
313
- throw new Error('waitUntil must be called from within invoke() execution context');
314
- }
315
-
316
- /**
317
- * Execute a function within this agent context.
318
- *
319
- * This method:
320
- * 1. Creates an OpenTelemetry span for the invocation
321
- * 2. Restores/creates session and thread
322
- * 3. Sends session start event
323
- * 4. Executes the function within AsyncLocalStorage context
324
- * 5. Waits for background tasks (waitUntil)
325
- * 6. Saves session and thread
326
- * 7. Sends session complete event
327
- *
328
- * @param fn - Function to execute (typically () => agent.run(input))
329
- * @param options - Optional configuration for the invocation
330
- * @returns Promise that resolves to the function's return value
331
- *
332
- * @example
333
- * ```typescript
334
- * const result = await ctx.invoke(() => myAgent.run({ userId: '123' }));
335
- * ```
336
- *
337
- * @example
338
- * ```typescript
339
- * // Multiple agents in sequence:
340
- * const result = await ctx.invoke(async () => {
341
- * const step1 = await agent1.run(input);
342
- * return agent2.run(step1);
343
- * });
344
- * ```
345
- */
346
- async invoke<T>(fn: () => Promise<T>, options?: InvokeOptions): Promise<T> {
347
- const threadProvider = getThreadProvider();
348
- const sessionProvider = getSessionProvider();
349
- const sessionEventProvider = getSessionEventProvider();
350
- const storage = getAgentAsyncLocalStorage();
351
-
352
- // Create per-invocation state (prevents race conditions on concurrent calls)
353
- const waitUntilHandler = new WaitUntilHandler(this.tracer);
354
- const agentIds = new Set<string>();
355
- let invocationSessionId = this.initialSessionId ?? 'pending';
356
- let invocationThread: Thread;
357
- let invocationSession: Session;
358
- const invocationState = new Map<string, unknown>();
359
-
360
- // Create a per-call context that inherits from this but has isolated mutable state
361
- const callContext = Object.create(this) as StandaloneAgentContext<
362
- TAgentMap,
363
- TConfig,
364
- TAppState
365
- >;
366
- callContext.sessionId = invocationSessionId;
367
- callContext.state = invocationState;
368
- callContext[AGENT_IDS] = agentIds;
369
- callContext.waitUntil = (callback: Promise<void> | (() => void | Promise<void>)) => {
370
- waitUntilHandler.waitUntil(callback);
371
- };
372
-
373
- // Execute within parent context (for distributed tracing)
374
- return await context.with(this.parentContext, async () => {
375
- // Build enriched traceState BEFORE span creation so the
376
- // recording span inherits it and it gets exported to OTLP.
377
- const projectId = runtimeConfig.getProjectId();
378
- const orgId = runtimeConfig.getOrganizationId();
379
- const deploymentId = runtimeConfig.getDeploymentId();
380
- const isDevMode = runtimeConfig.isDevMode();
381
-
382
- const enrichedContext = enrichContextWithTraceState(context.active(), {
383
- pid: projectId,
384
- oid: orgId,
385
- did: deploymentId,
386
- d: isDevMode ? '1' : undefined,
387
- });
388
-
389
- // Create a span for this invocation (similar to otelMiddleware's HTTP span)
390
- return await trace.getTracer('standalone-agent').startActiveSpan(
391
- options?.spanName ?? 'agent-invocation',
392
- {
393
- kind: SpanKind.INTERNAL, // Not HTTP, but internal invocation
394
- attributes: {
395
- trigger: this.trigger,
396
- },
397
- },
398
- enrichedContext,
399
- async (span) => {
400
- const sctx = span.spanContext();
401
-
402
- // Generate sessionId from traceId if not provided
403
- invocationSessionId =
404
- this.initialSessionId ??
405
- (sctx?.traceId ? `sess_${sctx.traceId}` : generateId('sess'));
406
- callContext.sessionId = invocationSessionId;
407
-
408
- // Restore thread and session (like otelMiddleware does)
409
- // For standalone contexts, we create a simple thread/session if not provided
410
- // The threadProvider.restore expects a Hono context with cookie/header access
411
- // For standalone contexts without HTTP, we just create a new thread
412
- const { DefaultThread, generateId: genId } = await import('./session');
413
- const threadId = genId('thrd');
414
- // Create a no-op restore function for standalone contexts
415
- const restoreFn = async () => ({ state: new Map(), metadata: {} });
416
- invocationThread = new DefaultThread(threadProvider, threadId, restoreFn);
417
- callContext.thread = invocationThread;
418
-
419
- invocationSession = await sessionProvider.restore(
420
- invocationThread,
421
- invocationSessionId
422
- );
423
- callContext.session = invocationSession;
424
-
425
- // Send session start event (if configured)
426
- const shouldSendSession = !!(orgId && projectId);
427
- let canSendSessionEvents = true;
428
-
429
- if (shouldSendSession) {
430
- await sessionEventProvider
431
- .start({
432
- id: invocationSessionId,
433
- orgId,
434
- projectId,
435
- threadId: invocationThread.id,
436
- routeId: 'standalone', // No route for standalone contexts
437
- deploymentId,
438
- devmode: isDevMode,
439
- environment: runtimeConfig.getEnvironment(),
440
- method: 'STANDALONE',
441
- url: '',
442
- trigger: this.trigger,
443
- metadata:
444
- Object.keys(invocationSession.metadata).length > 0
445
- ? invocationSession.metadata
446
- : undefined,
447
- })
448
- .catch((ex) => {
449
- canSendSessionEvents = false;
450
- this.logger.error('error sending session start event: %s', ex);
451
- });
452
- }
453
-
454
- let hasPendingWaits = false;
455
-
456
- try {
457
- // Execute function within AsyncLocalStorage context with per-call context
458
- const result = await storage.run(callContext, fn);
459
-
460
- // Wait for background tasks (like otelMiddleware does)
461
- if (waitUntilHandler.hasPending()) {
462
- hasPendingWaits = true;
463
- waitUntilHandler
464
- .waitUntilAll(this.logger, invocationSessionId)
465
- .then(async () => {
466
- this.logger.debug(
467
- 'wait until finished for session %s',
468
- invocationSessionId
469
- );
470
- await sessionProvider.save(invocationSession);
471
- await threadProvider.save(invocationThread);
472
- span.setStatus({ code: SpanStatusCode.OK });
473
- if (shouldSendSession && canSendSessionEvents) {
474
- const userData = invocationSession.serializeUserData();
475
- sessionEventProvider
476
- .complete({
477
- id: invocationSessionId,
478
- threadId: (await invocationThread.empty())
479
- ? null
480
- : invocationThread.id,
481
- statusCode: 200, // Success
482
- agentIds: Array.from(agentIds),
483
- userData,
484
- metadata:
485
- Object.keys(invocationSession.metadata).length > 0
486
- ? invocationSession.metadata
487
- : undefined,
488
- })
489
- .then(() => {})
490
- .catch((ex) =>
491
- this.logger.error(
492
- 'session complete failed: %s',
493
- ex instanceof Error ? ex.message : ex
494
- )
495
- );
496
- }
497
- })
498
- .catch(async (ex) => {
499
- this.logger.error(
500
- 'wait until errored for session %s. %s',
501
- invocationSessionId,
502
- ex
503
- );
504
- if (ex instanceof Error) {
505
- span.recordException(ex);
506
- }
507
- const message = (ex as Error).message ?? String(ex);
508
- span.setStatus({
509
- code: SpanStatusCode.ERROR,
510
- message,
511
- });
512
- this.logger.error(message);
513
- if (shouldSendSession && canSendSessionEvents) {
514
- const userData = invocationSession.serializeUserData();
515
- sessionEventProvider
516
- .complete({
517
- id: invocationSessionId,
518
- threadId: (await invocationThread.empty())
519
- ? null
520
- : invocationThread.id,
521
- statusCode: 500, // Error
522
- error: message,
523
- agentIds: Array.from(agentIds),
524
- userData,
525
- metadata:
526
- Object.keys(invocationSession.metadata).length > 0
527
- ? invocationSession.metadata
528
- : undefined,
529
- })
530
- .then(() => {})
531
- .catch((ex) =>
532
- this.logger.error(
533
- 'session complete failed: %s',
534
- ex instanceof Error ? ex.message : ex
535
- )
536
- );
537
- }
538
- })
539
- .finally(() => {
540
- span.end();
541
- });
542
- } else {
543
- span.setStatus({ code: SpanStatusCode.OK });
544
- if (shouldSendSession && canSendSessionEvents) {
545
- const userData = invocationSession.serializeUserData();
546
- sessionEventProvider
547
- .complete({
548
- id: invocationSessionId,
549
- threadId: (await invocationThread.empty())
550
- ? null
551
- : invocationThread.id,
552
- statusCode: 200,
553
- agentIds: Array.from(agentIds),
554
- userData,
555
- metadata:
556
- Object.keys(invocationSession.metadata).length > 0
557
- ? invocationSession.metadata
558
- : undefined,
559
- })
560
- .then(() => {})
561
- .catch((ex) =>
562
- this.logger.error(
563
- 'session complete failed: %s',
564
- ex instanceof Error ? ex.message : ex
565
- )
566
- );
567
- }
568
- }
569
-
570
- return result;
571
- } catch (ex) {
572
- if (ex instanceof Error) {
573
- span.recordException(ex);
574
- }
575
- const message = (ex as Error).message ?? String(ex);
576
- span.setStatus({
577
- code: SpanStatusCode.ERROR,
578
- message,
579
- });
580
- this.logger.error(message);
581
- if (shouldSendSession && canSendSessionEvents) {
582
- const userData = invocationSession.serializeUserData();
583
- sessionEventProvider
584
- .complete({
585
- id: invocationSessionId,
586
- threadId: (await invocationThread.empty()) ? null : invocationThread.id,
587
- statusCode: 500,
588
- error: message,
589
- agentIds: Array.from(agentIds),
590
- userData,
591
- metadata:
592
- Object.keys(invocationSession.metadata).length > 0
593
- ? invocationSession.metadata
594
- : undefined,
595
- })
596
- .then(() => {})
597
- .catch((ex) =>
598
- this.logger.error(
599
- 'session complete failed: %s',
600
- ex instanceof Error ? ex.message : ex
601
- )
602
- );
603
- }
604
- throw ex;
605
- } finally {
606
- if (!hasPendingWaits) {
607
- try {
608
- await sessionProvider.save(invocationSession);
609
- await threadProvider.save(invocationThread);
610
- } finally {
611
- span.end();
612
- }
613
- }
614
- }
615
- }
616
- );
617
- });
618
- }
619
-
620
- /**
621
- * Execute an agent with the given input within this context.
622
- *
623
- * This is a convenience method that wraps `invoke()` for cleaner syntax
624
- * when running a single agent.
625
- *
626
- * @param agent - The agent to execute (must have a `run` method)
627
- * @param input - Input to pass to the agent (if agent requires input)
628
- * @returns Promise that resolves to the agent's output
629
- *
630
- * @example
631
- * ```typescript
632
- * import { createAgentContext } from '@agentuity/runtime';
633
- * import myAgent from './agents/my-agent';
634
- *
635
- * const ctx = createAgentContext();
636
- * const result = await ctx.run(myAgent, { name: 'World' });
637
- * ```
638
- *
639
- * @example
640
- * ```typescript
641
- * // Agent without input
642
- * const result = await ctx.run(statusAgent);
643
- * ```
644
- *
645
- * @example
646
- * ```typescript
647
- * // Multiple agents in sequence
648
- * const ctx = createAgentContext();
649
- * const step1 = await ctx.run(preprocessAgent, rawData);
650
- * const step2 = await ctx.run(processAgent, step1);
651
- * const result = await ctx.run(postprocessAgent, step2);
652
- * ```
653
- */
654
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
655
- async run<TOutput>(agent: AgentRunner<any, any, any>, input?: unknown): Promise<TOutput> {
656
- // Handle both agents with and without input
657
- // The agent.run type varies based on whether input schema is defined
658
- const runFn = agent.run as (input?: unknown) => Promise<TOutput>;
659
- return this.invoke(() => runFn(input));
660
- }
661
- }
662
-
663
- /**
664
- * Create a standalone agent context for executing agents outside of HTTP requests.
665
- *
666
- * This is useful for Discord bots, cron jobs, CLI scripts, sandboxes, or any scenario
667
- * where you need to run agents but don't have an HTTP request context.
668
- *
669
- * **Auto-initialization**: When running outside of the Agentuity runtime (dev server or cloud),
670
- * this function automatically initializes minimal runtime globals. No manual setup required.
671
- *
672
- * @param options - Optional configuration for the context
673
- * @returns A StandaloneAgentContext instance
674
- *
675
- * @example
676
- * ```typescript
677
- * import { createAgentContext } from '@agentuity/runtime';
678
- * import myAgent from './agents/my-agent';
679
- *
680
- * // Simple usage with ctx.run() (recommended):
681
- * const ctx = createAgentContext();
682
- * const result = await ctx.run(myAgent, { name: 'World' });
683
- *
684
- * // Discord bot example:
685
- * client.on('messageCreate', async (message) => {
686
- * const ctx = createAgentContext({
687
- * sessionId: message.id,
688
- * trigger: 'discord'
689
- * });
690
- * const response = await ctx.run(chatAgent, { message: message.content });
691
- * await message.reply(response.text);
692
- * });
693
- *
694
- * // Cron job example:
695
- * cron.schedule('0 * * * *', async () => {
696
- * const ctx = createAgentContext({ trigger: 'cron' });
697
- * await ctx.run(cleanupAgent);
698
- * });
699
- *
700
- * // Multiple agents in sequence:
701
- * const ctx = createAgentContext();
702
- * const step1 = await ctx.run(preprocessAgent, rawData);
703
- * const result = await ctx.run(processAgent, step1);
704
- * ```
705
- */
706
- export function createAgentContext<TAppState = Record<string, never>>(
707
- options?: StandaloneContextOptions
708
- ): StandaloneAgentContext<AgentRegistry, unknown, TAppState> {
709
- return new StandaloneAgentContext<AgentRegistry, unknown, TAppState>(options);
710
- }