@amodalai/runtime 0.1.26 → 0.2.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 (445) hide show
  1. package/dist/src/__fixtures__/README.md +88 -0
  2. package/dist/src/__fixtures__/e2e.test.js +211 -0
  3. package/dist/src/__fixtures__/e2e.test.js.map +1 -0
  4. package/dist/src/__fixtures__/smoke-agent/amodal.json +11 -0
  5. package/dist/src/__fixtures__/smoke-agent/automations/delivery-callback-test.json +9 -0
  6. package/dist/src/__fixtures__/smoke-agent/automations/test-auto.md +5 -0
  7. package/dist/src/__fixtures__/smoke-agent/connections/mock-api/access.json +11 -0
  8. package/dist/src/__fixtures__/smoke-agent/connections/mock-api/spec.json +4 -0
  9. package/dist/src/__fixtures__/smoke-agent/connections/mock-api/surface.md +9 -0
  10. package/dist/src/__fixtures__/smoke-agent/connections/mock-mcp/access.json +3 -0
  11. package/dist/src/__fixtures__/smoke-agent/connections/mock-mcp/spec.json +8 -0
  12. package/dist/src/__fixtures__/smoke-agent/evals/basic-eval.md +12 -0
  13. package/dist/src/__fixtures__/smoke-agent/knowledge/test-knowledge.md +3 -0
  14. package/dist/src/__fixtures__/smoke-agent/skills/test-skill/SKILL.md +11 -0
  15. package/dist/src/__fixtures__/smoke-agent/stores/test-items.json +11 -0
  16. package/dist/src/__fixtures__/smoke-agent/tools/echo_tool/handler.d.ts +18 -0
  17. package/dist/src/__fixtures__/smoke-agent/tools/echo_tool/handler.js +22 -0
  18. package/dist/src/__fixtures__/smoke-agent/tools/echo_tool/handler.js.map +1 -0
  19. package/dist/src/__fixtures__/smoke-agent/tools/echo_tool/tool.json +17 -0
  20. package/dist/src/__fixtures__/smoke.test.js +1404 -0
  21. package/dist/src/__fixtures__/smoke.test.js.map +1 -0
  22. package/dist/src/__fixtures__/test-env.d.ts +27 -0
  23. package/dist/src/__fixtures__/test-env.js +64 -0
  24. package/dist/src/__fixtures__/test-env.js.map +1 -0
  25. package/dist/src/__fixtures__/test-helpers.d.ts +30 -0
  26. package/dist/src/__fixtures__/test-helpers.js +120 -0
  27. package/dist/src/__fixtures__/test-helpers.js.map +1 -0
  28. package/dist/src/__tests__/test-providers.d.ts +40 -0
  29. package/dist/src/__tests__/test-providers.js +61 -0
  30. package/dist/src/__tests__/test-providers.js.map +1 -0
  31. package/dist/src/agent/agent-types.d.ts +22 -0
  32. package/dist/src/agent/agent-types.js.map +1 -1
  33. package/dist/src/agent/automation-bridge.d.ts +9 -0
  34. package/dist/src/agent/automation-bridge.js +26 -0
  35. package/dist/src/agent/automation-bridge.js.map +1 -1
  36. package/dist/src/agent/automation-bridge.test.js +63 -0
  37. package/dist/src/agent/automation-bridge.test.js.map +1 -1
  38. package/dist/src/agent/local-server.d.ts +1 -8
  39. package/dist/src/agent/local-server.js +398 -163
  40. package/dist/src/agent/local-server.js.map +1 -1
  41. package/dist/src/agent/local-server.test.js +14 -8
  42. package/dist/src/agent/local-server.test.js.map +1 -1
  43. package/dist/src/agent/loop-types.d.ts +254 -0
  44. package/dist/src/agent/loop-types.js +24 -0
  45. package/dist/src/agent/loop-types.js.map +1 -0
  46. package/dist/src/agent/loop.d.ts +31 -0
  47. package/dist/src/agent/loop.js +152 -0
  48. package/dist/src/agent/loop.js.map +1 -0
  49. package/dist/src/agent/loop.test.js +1594 -0
  50. package/dist/src/agent/loop.test.js.map +1 -0
  51. package/dist/src/agent/mcp-config.d.ts +28 -0
  52. package/dist/src/agent/mcp-config.js +57 -0
  53. package/dist/src/agent/mcp-config.js.map +1 -0
  54. package/dist/src/agent/page-builder.js +6 -1
  55. package/dist/src/agent/page-builder.js.map +1 -1
  56. package/dist/src/agent/proactive/delivery-router.d.ts +68 -0
  57. package/dist/src/agent/proactive/delivery-router.js +337 -0
  58. package/dist/src/agent/proactive/delivery-router.js.map +1 -0
  59. package/dist/src/agent/{stores-e2e.test.d.ts → proactive/delivery-router.test.d.ts} +1 -1
  60. package/dist/src/agent/proactive/delivery-router.test.js +455 -0
  61. package/dist/src/agent/proactive/delivery-router.test.js.map +1 -0
  62. package/dist/src/agent/proactive/proactive-runner.d.ts +46 -8
  63. package/dist/src/agent/proactive/proactive-runner.js +67 -37
  64. package/dist/src/agent/proactive/proactive-runner.js.map +1 -1
  65. package/dist/src/agent/proactive/proactive-runner.test.d.ts +1 -1
  66. package/dist/src/agent/proactive/proactive-runner.test.js +73 -87
  67. package/dist/src/agent/proactive/proactive-runner.test.js.map +1 -1
  68. package/dist/src/agent/routes/admin-chat-abort.test.d.ts +6 -0
  69. package/dist/src/agent/routes/admin-chat-abort.test.js +206 -0
  70. package/dist/src/agent/routes/admin-chat-abort.test.js.map +1 -0
  71. package/dist/src/agent/routes/admin-chat.d.ts +15 -3
  72. package/dist/src/agent/routes/admin-chat.js +61 -18
  73. package/dist/src/agent/routes/admin-chat.js.map +1 -1
  74. package/dist/src/agent/routes/automations.js +5 -6
  75. package/dist/src/agent/routes/automations.js.map +1 -1
  76. package/dist/src/agent/routes/evals.d.ts +3 -2
  77. package/dist/src/agent/routes/evals.js +25 -12
  78. package/dist/src/agent/routes/evals.js.map +1 -1
  79. package/dist/src/agent/routes/files.js +7 -9
  80. package/dist/src/agent/routes/files.js.map +1 -1
  81. package/dist/src/agent/routes/inspect.d.ts +6 -2
  82. package/dist/src/agent/routes/inspect.js +31 -17
  83. package/dist/src/agent/routes/inspect.js.map +1 -1
  84. package/dist/src/agent/routes/inspect.test.js +18 -42
  85. package/dist/src/agent/routes/inspect.test.js.map +1 -1
  86. package/dist/src/agent/routes/stores.js +9 -12
  87. package/dist/src/agent/routes/stores.js.map +1 -1
  88. package/dist/src/agent/routes/task.d.ts +15 -3
  89. package/dist/src/agent/routes/task.js +16 -7
  90. package/dist/src/agent/routes/task.js.map +1 -1
  91. package/dist/src/agent/routes/task.test.d.ts +1 -1
  92. package/dist/src/agent/routes/task.test.js +68 -53
  93. package/dist/src/agent/routes/task.test.js.map +1 -1
  94. package/dist/src/agent/routes/webhooks.js +12 -3
  95. package/dist/src/agent/routes/webhooks.js.map +1 -1
  96. package/dist/src/agent/snapshot-server.d.ts +2 -22
  97. package/dist/src/agent/snapshot-server.js +48 -27
  98. package/dist/src/agent/snapshot-server.js.map +1 -1
  99. package/dist/src/agent/states/compacting.d.ts +14 -0
  100. package/dist/src/agent/states/compacting.js +260 -0
  101. package/dist/src/agent/states/compacting.js.map +1 -0
  102. package/dist/src/agent/states/confirming.d.ts +10 -0
  103. package/dist/src/agent/states/confirming.js +79 -0
  104. package/dist/src/agent/states/confirming.js.map +1 -0
  105. package/dist/src/agent/states/dispatching.d.ts +18 -0
  106. package/dist/src/agent/states/dispatching.js +285 -0
  107. package/dist/src/agent/states/dispatching.js.map +1 -0
  108. package/dist/src/agent/states/executing.d.ts +21 -0
  109. package/dist/src/agent/states/executing.js +452 -0
  110. package/dist/src/agent/states/executing.js.map +1 -0
  111. package/dist/src/agent/states/streaming.d.ts +10 -0
  112. package/dist/src/agent/states/streaming.js +169 -0
  113. package/dist/src/agent/states/streaming.js.map +1 -0
  114. package/dist/src/agent/states/thinking.d.ts +13 -0
  115. package/dist/src/agent/states/thinking.js +450 -0
  116. package/dist/src/agent/states/thinking.js.map +1 -0
  117. package/dist/src/agent/token-estimate.d.ts +31 -0
  118. package/dist/src/agent/token-estimate.js +34 -0
  119. package/dist/src/agent/token-estimate.js.map +1 -0
  120. package/dist/src/agent/token-estimate.test.d.ts +6 -0
  121. package/dist/src/agent/token-estimate.test.js +44 -0
  122. package/dist/src/agent/token-estimate.test.js.map +1 -0
  123. package/dist/src/agent/tool-executor-local.js +9 -18
  124. package/dist/src/agent/tool-executor-local.js.map +1 -1
  125. package/dist/src/agent/tool-executor-local.test.js +3 -5
  126. package/dist/src/agent/tool-executor-local.test.js.map +1 -1
  127. package/dist/src/api/create-agent.d.ts +15 -0
  128. package/dist/src/api/create-agent.js +134 -0
  129. package/dist/src/api/create-agent.js.map +1 -0
  130. package/dist/src/api/types.d.ts +66 -0
  131. package/dist/src/api/types.js +7 -0
  132. package/dist/src/api/types.js.map +1 -0
  133. package/dist/src/context/compiler.d.ts +13 -0
  134. package/dist/src/context/compiler.js +358 -0
  135. package/dist/src/context/compiler.js.map +1 -0
  136. package/dist/src/context/compiler.test.d.ts +6 -0
  137. package/dist/src/context/compiler.test.js +532 -0
  138. package/dist/src/context/compiler.test.js.map +1 -0
  139. package/dist/src/context/types.d.ts +110 -0
  140. package/dist/src/context/types.js +7 -0
  141. package/dist/src/context/types.js.map +1 -0
  142. package/dist/src/env-ref.d.ts +13 -0
  143. package/dist/src/env-ref.js +31 -0
  144. package/dist/src/env-ref.js.map +1 -0
  145. package/dist/src/env-ref.test.d.ts +6 -0
  146. package/dist/src/env-ref.test.js +34 -0
  147. package/dist/src/env-ref.test.js.map +1 -0
  148. package/dist/src/errors.d.ts +15 -0
  149. package/dist/src/errors.js +22 -0
  150. package/dist/src/errors.js.map +1 -1
  151. package/dist/src/errors.test.js +2 -2
  152. package/dist/src/errors.test.js.map +1 -1
  153. package/dist/src/events/event-bus.d.ts +54 -0
  154. package/dist/src/events/event-bus.js +84 -0
  155. package/dist/src/events/event-bus.js.map +1 -0
  156. package/dist/src/events/event-bus.test.d.ts +6 -0
  157. package/dist/src/events/event-bus.test.js +112 -0
  158. package/dist/src/events/event-bus.test.js.map +1 -0
  159. package/dist/src/events/events-route.d.ts +36 -0
  160. package/dist/src/events/events-route.js +80 -0
  161. package/dist/src/events/events-route.js.map +1 -0
  162. package/dist/src/events/events-route.test.d.ts +6 -0
  163. package/dist/src/events/events-route.test.js +134 -0
  164. package/dist/src/events/events-route.test.js.map +1 -0
  165. package/dist/src/events/store-event-wrapper.d.ts +19 -0
  166. package/dist/src/events/store-event-wrapper.js +57 -0
  167. package/dist/src/events/store-event-wrapper.js.map +1 -0
  168. package/dist/src/events/store-event-wrapper.test.d.ts +6 -0
  169. package/dist/src/events/store-event-wrapper.test.js +91 -0
  170. package/dist/src/events/store-event-wrapper.test.js.map +1 -0
  171. package/dist/src/index.d.ts +33 -6
  172. package/dist/src/index.js +35 -21
  173. package/dist/src/index.js.map +1 -1
  174. package/dist/src/middleware/auth.d.ts +0 -2
  175. package/dist/src/middleware/auth.js.map +1 -1
  176. package/dist/src/providers/create-provider.d.ts +23 -0
  177. package/dist/src/providers/create-provider.js +185 -0
  178. package/dist/src/providers/create-provider.js.map +1 -0
  179. package/dist/src/providers/create-provider.test.d.ts +6 -0
  180. package/dist/src/providers/create-provider.test.js +95 -0
  181. package/dist/src/providers/create-provider.test.js.map +1 -0
  182. package/dist/src/providers/failover.d.ts +38 -0
  183. package/dist/src/providers/failover.js +147 -0
  184. package/dist/src/providers/failover.js.map +1 -0
  185. package/dist/src/providers/failover.test.d.ts +6 -0
  186. package/dist/src/providers/failover.test.js +169 -0
  187. package/dist/src/providers/failover.test.js.map +1 -0
  188. package/dist/src/providers/search-provider.d.ts +64 -0
  189. package/dist/src/providers/search-provider.js +174 -0
  190. package/dist/src/providers/search-provider.js.map +1 -0
  191. package/dist/src/providers/types.d.ts +118 -0
  192. package/dist/src/providers/types.js +7 -0
  193. package/dist/src/providers/types.js.map +1 -0
  194. package/dist/src/routes/ai-stream.d.ts +28 -10
  195. package/dist/src/routes/ai-stream.js +85 -41
  196. package/dist/src/routes/ai-stream.js.map +1 -1
  197. package/dist/src/routes/chat-new.test.d.ts +6 -0
  198. package/dist/src/routes/chat-new.test.js +107 -0
  199. package/dist/src/routes/chat-new.test.js.map +1 -0
  200. package/dist/src/routes/chat-stream-new.test.d.ts +6 -0
  201. package/dist/src/routes/chat-stream-new.test.js +135 -0
  202. package/dist/src/routes/chat-stream-new.test.js.map +1 -0
  203. package/dist/src/routes/chat-stream.d.ts +20 -4
  204. package/dist/src/routes/chat-stream.js +49 -29
  205. package/dist/src/routes/chat-stream.js.map +1 -1
  206. package/dist/src/routes/chat.d.ts +19 -4
  207. package/dist/src/routes/chat.js +62 -23
  208. package/dist/src/routes/chat.js.map +1 -1
  209. package/dist/src/routes/health.d.ts +3 -2
  210. package/dist/src/routes/health.js.map +1 -1
  211. package/dist/src/routes/route-helpers.d.ts +50 -0
  212. package/dist/src/routes/route-helpers.js +80 -0
  213. package/dist/src/routes/route-helpers.js.map +1 -0
  214. package/dist/src/routes/session-resolver.d.ts +77 -0
  215. package/dist/src/routes/session-resolver.js +109 -0
  216. package/dist/src/routes/session-resolver.js.map +1 -0
  217. package/dist/src/routes/session-resolver.test.d.ts +6 -0
  218. package/dist/src/routes/session-resolver.test.js +207 -0
  219. package/dist/src/routes/session-resolver.test.js.map +1 -0
  220. package/dist/src/routes/webhooks.d.ts +3 -1
  221. package/dist/src/routes/webhooks.js +12 -4
  222. package/dist/src/routes/webhooks.js.map +1 -1
  223. package/dist/src/security/permission-checker.d.ts +80 -0
  224. package/dist/src/security/permission-checker.js +75 -0
  225. package/dist/src/security/permission-checker.js.map +1 -0
  226. package/dist/src/security/permission-checker.test.d.ts +6 -0
  227. package/dist/src/security/permission-checker.test.js +208 -0
  228. package/dist/src/security/permission-checker.test.js.map +1 -0
  229. package/dist/src/server.d.ts +18 -11
  230. package/dist/src/server.js +46 -46
  231. package/dist/src/server.js.map +1 -1
  232. package/dist/src/server.test.d.ts +1 -1
  233. package/dist/src/server.test.js +6 -144
  234. package/dist/src/server.test.js.map +1 -1
  235. package/dist/src/session/drizzle-session-store.d.ts +56 -0
  236. package/dist/src/session/drizzle-session-store.js +203 -0
  237. package/dist/src/session/drizzle-session-store.js.map +1 -0
  238. package/dist/src/session/manager.d.ts +101 -0
  239. package/dist/src/session/manager.js +394 -0
  240. package/dist/src/session/manager.js.map +1 -0
  241. package/dist/src/session/manager.test.d.ts +6 -0
  242. package/dist/src/session/manager.test.js +309 -0
  243. package/dist/src/session/manager.test.js.map +1 -0
  244. package/dist/src/session/pglite-session-store.d.ts +23 -0
  245. package/dist/src/session/pglite-session-store.js +70 -0
  246. package/dist/src/session/pglite-session-store.js.map +1 -0
  247. package/dist/src/session/postgres-session-store.d.ts +44 -0
  248. package/dist/src/session/postgres-session-store.js +138 -0
  249. package/dist/src/session/postgres-session-store.js.map +1 -0
  250. package/dist/src/session/session-builder.d.ts +69 -0
  251. package/dist/src/session/session-builder.js +384 -0
  252. package/dist/src/session/session-builder.js.map +1 -0
  253. package/dist/src/session/session-builder.test.d.ts +6 -0
  254. package/dist/src/session/session-builder.test.js +350 -0
  255. package/dist/src/session/session-builder.test.js.map +1 -0
  256. package/dist/src/session/session-store-selector.d.ts +49 -0
  257. package/dist/src/session/session-store-selector.js +60 -0
  258. package/dist/src/session/session-store-selector.js.map +1 -0
  259. package/dist/src/session/session-store-selector.test.d.ts +6 -0
  260. package/dist/src/session/session-store-selector.test.js +79 -0
  261. package/dist/src/session/session-store-selector.test.js.map +1 -0
  262. package/dist/src/session/store.d.ts +171 -0
  263. package/dist/src/session/store.js +155 -0
  264. package/dist/src/session/store.js.map +1 -0
  265. package/dist/src/session/store.test.d.ts +6 -0
  266. package/dist/src/session/store.test.js +423 -0
  267. package/dist/src/session/store.test.js.map +1 -0
  268. package/dist/src/session/stream-hooks.d.ts +39 -0
  269. package/dist/src/session/stream-hooks.js +7 -0
  270. package/dist/src/session/stream-hooks.js.map +1 -0
  271. package/dist/src/session/tool-context-factory.d.ts +61 -0
  272. package/dist/src/session/tool-context-factory.js +189 -0
  273. package/dist/src/session/tool-context-factory.js.map +1 -0
  274. package/dist/src/session/tool-context-factory.test.d.ts +6 -0
  275. package/dist/src/session/tool-context-factory.test.js +284 -0
  276. package/dist/src/session/tool-context-factory.test.js.map +1 -0
  277. package/dist/src/session/types.d.ts +195 -0
  278. package/dist/src/session/types.js +7 -0
  279. package/dist/src/session/types.js.map +1 -0
  280. package/dist/src/stores/drizzle-store-backend.d.ts +49 -0
  281. package/dist/src/stores/drizzle-store-backend.js +306 -0
  282. package/dist/src/stores/drizzle-store-backend.js.map +1 -0
  283. package/dist/src/stores/drizzle-store-backend.test.d.ts +6 -0
  284. package/dist/src/stores/drizzle-store-backend.test.js +215 -0
  285. package/dist/src/stores/drizzle-store-backend.test.js.map +1 -0
  286. package/dist/src/stores/index.d.ts +4 -0
  287. package/dist/src/stores/index.js +2 -0
  288. package/dist/src/stores/index.js.map +1 -1
  289. package/dist/src/stores/pglite-store-backend.d.ts +16 -19
  290. package/dist/src/stores/pglite-store-backend.js +85 -239
  291. package/dist/src/stores/pglite-store-backend.js.map +1 -1
  292. package/dist/src/stores/postgres-store-backend.d.ts +30 -0
  293. package/dist/src/stores/postgres-store-backend.js +100 -0
  294. package/dist/src/stores/postgres-store-backend.js.map +1 -0
  295. package/dist/src/stores/schema.d.ts +457 -0
  296. package/dist/src/stores/schema.js +59 -0
  297. package/dist/src/stores/schema.js.map +1 -0
  298. package/dist/src/tools/admin-file-tools.d.ts +42 -0
  299. package/dist/src/tools/admin-file-tools.js +714 -0
  300. package/dist/src/tools/admin-file-tools.js.map +1 -0
  301. package/dist/src/tools/admin-file-tools.test.d.ts +6 -0
  302. package/dist/src/tools/admin-file-tools.test.js +521 -0
  303. package/dist/src/tools/admin-file-tools.test.js.map +1 -0
  304. package/dist/src/tools/custom-tool-adapter.d.ts +41 -0
  305. package/dist/src/tools/custom-tool-adapter.js +190 -0
  306. package/dist/src/tools/custom-tool-adapter.js.map +1 -0
  307. package/dist/src/tools/custom-tool-adapter.test.d.ts +6 -0
  308. package/dist/src/tools/custom-tool-adapter.test.js +243 -0
  309. package/dist/src/tools/custom-tool-adapter.test.js.map +1 -0
  310. package/dist/src/tools/dispatch-tool.d.ts +52 -0
  311. package/dist/src/tools/dispatch-tool.js +71 -0
  312. package/dist/src/tools/dispatch-tool.js.map +1 -0
  313. package/dist/src/tools/dispatch-tool.test.d.ts +6 -0
  314. package/dist/src/tools/dispatch-tool.test.js +75 -0
  315. package/dist/src/tools/dispatch-tool.test.js.map +1 -0
  316. package/dist/src/tools/fetch-url-tool.d.ts +23 -0
  317. package/dist/src/tools/fetch-url-tool.js +333 -0
  318. package/dist/src/tools/fetch-url-tool.js.map +1 -0
  319. package/dist/src/tools/fetch-url-tool.test.d.ts +6 -0
  320. package/dist/src/tools/fetch-url-tool.test.js +228 -0
  321. package/dist/src/tools/fetch-url-tool.test.js.map +1 -0
  322. package/dist/src/tools/mcp-tool-adapter.d.ts +18 -0
  323. package/dist/src/tools/mcp-tool-adapter.js +135 -0
  324. package/dist/src/tools/mcp-tool-adapter.js.map +1 -0
  325. package/dist/src/tools/mcp-tool-adapter.test.d.ts +6 -0
  326. package/dist/src/tools/mcp-tool-adapter.test.js +226 -0
  327. package/dist/src/tools/mcp-tool-adapter.test.js.map +1 -0
  328. package/dist/src/tools/registry.d.ts +25 -0
  329. package/dist/src/tools/registry.js +72 -0
  330. package/dist/src/tools/registry.js.map +1 -0
  331. package/dist/src/tools/registry.test.d.ts +6 -0
  332. package/dist/src/tools/registry.test.js +120 -0
  333. package/dist/src/tools/registry.test.js.map +1 -0
  334. package/dist/src/tools/request-tool.d.ts +42 -0
  335. package/dist/src/tools/request-tool.js +190 -0
  336. package/dist/src/tools/request-tool.js.map +1 -0
  337. package/dist/src/tools/request-tool.test.d.ts +6 -0
  338. package/dist/src/tools/request-tool.test.js +253 -0
  339. package/dist/src/tools/request-tool.test.js.map +1 -0
  340. package/dist/src/tools/store-tools.d.ts +29 -0
  341. package/dist/src/tools/store-tools.js +224 -0
  342. package/dist/src/tools/store-tools.js.map +1 -0
  343. package/dist/src/tools/store-tools.test.d.ts +6 -0
  344. package/dist/src/tools/store-tools.test.js +215 -0
  345. package/dist/src/tools/store-tools.test.js.map +1 -0
  346. package/dist/src/tools/types.d.ts +129 -0
  347. package/dist/src/tools/types.js +7 -0
  348. package/dist/src/tools/types.js.map +1 -0
  349. package/dist/src/tools/web-search-tool.d.ts +31 -0
  350. package/dist/src/tools/web-search-tool.js +170 -0
  351. package/dist/src/tools/web-search-tool.js.map +1 -0
  352. package/dist/src/tools/web-search-tool.test.d.ts +6 -0
  353. package/dist/src/tools/web-search-tool.test.js +153 -0
  354. package/dist/src/tools/web-search-tool.test.js.map +1 -0
  355. package/dist/src/tools/web-tools-shared.d.ts +21 -0
  356. package/dist/src/tools/web-tools-shared.js +32 -0
  357. package/dist/src/tools/web-tools-shared.js.map +1 -0
  358. package/dist/src/types.d.ts +40 -12
  359. package/dist/src/types.js +16 -2
  360. package/dist/src/types.js.map +1 -1
  361. package/dist/tsconfig.tsbuildinfo +1 -1
  362. package/package.json +27 -4
  363. package/dist/src/__tests__/sse-contract.test.js +0 -464
  364. package/dist/src/__tests__/sse-contract.test.js.map +0 -1
  365. package/dist/src/__tests__/tools.test.js +0 -583
  366. package/dist/src/__tests__/tools.test.js.map +0 -1
  367. package/dist/src/agent/agent-runner.d.ts +0 -33
  368. package/dist/src/agent/agent-runner.js +0 -1040
  369. package/dist/src/agent/agent-runner.js.map +0 -1
  370. package/dist/src/agent/custom-tools-e2e.test.d.ts +0 -6
  371. package/dist/src/agent/custom-tools-e2e.test.js +0 -566
  372. package/dist/src/agent/custom-tools-e2e.test.js.map +0 -1
  373. package/dist/src/agent/request-helper.d.ts +0 -16
  374. package/dist/src/agent/request-helper.js +0 -96
  375. package/dist/src/agent/request-helper.js.map +0 -1
  376. package/dist/src/agent/session-store.d.ts +0 -62
  377. package/dist/src/agent/session-store.js +0 -151
  378. package/dist/src/agent/session-store.js.map +0 -1
  379. package/dist/src/agent/stores-e2e.test.js +0 -433
  380. package/dist/src/agent/stores-e2e.test.js.map +0 -1
  381. package/dist/src/agent/tool-context-builder.d.ts +0 -11
  382. package/dist/src/agent/tool-context-builder.js +0 -102
  383. package/dist/src/agent/tool-context-builder.js.map +0 -1
  384. package/dist/src/agent/tool-context-builder.test.d.ts +0 -6
  385. package/dist/src/agent/tool-context-builder.test.js +0 -152
  386. package/dist/src/agent/tool-context-builder.test.js.map +0 -1
  387. package/dist/src/agent/write-repo-file.test.js +0 -270
  388. package/dist/src/agent/write-repo-file.test.js.map +0 -1
  389. package/dist/src/cron/heartbeat-runner.d.ts +0 -21
  390. package/dist/src/cron/heartbeat-runner.js +0 -79
  391. package/dist/src/cron/heartbeat-runner.js.map +0 -1
  392. package/dist/src/cron/heartbeat-runner.test.d.ts +0 -6
  393. package/dist/src/cron/heartbeat-runner.test.js +0 -120
  394. package/dist/src/cron/heartbeat-runner.test.js.map +0 -1
  395. package/dist/src/cron/heartbeat-scheduler.d.ts +0 -26
  396. package/dist/src/cron/heartbeat-scheduler.js +0 -55
  397. package/dist/src/cron/heartbeat-scheduler.js.map +0 -1
  398. package/dist/src/cron/heartbeat-scheduler.test.d.ts +0 -6
  399. package/dist/src/cron/heartbeat-scheduler.test.js +0 -61
  400. package/dist/src/cron/heartbeat-scheduler.test.js.map +0 -1
  401. package/dist/src/routes/ai-stream.test.d.ts +0 -6
  402. package/dist/src/routes/ai-stream.test.js +0 -586
  403. package/dist/src/routes/ai-stream.test.js.map +0 -1
  404. package/dist/src/routes/ask-user-response.d.ts +0 -30
  405. package/dist/src/routes/ask-user-response.js +0 -61
  406. package/dist/src/routes/ask-user-response.js.map +0 -1
  407. package/dist/src/routes/ask-user-response.test.d.ts +0 -6
  408. package/dist/src/routes/ask-user-response.test.js +0 -88
  409. package/dist/src/routes/ask-user-response.test.js.map +0 -1
  410. package/dist/src/routes/chat-stream.test.d.ts +0 -6
  411. package/dist/src/routes/chat-stream.test.js +0 -155
  412. package/dist/src/routes/chat-stream.test.js.map +0 -1
  413. package/dist/src/routes/chat.test.d.ts +0 -6
  414. package/dist/src/routes/chat.test.js +0 -99
  415. package/dist/src/routes/chat.test.js.map +0 -1
  416. package/dist/src/routes/widget-actions.d.ts +0 -49
  417. package/dist/src/routes/widget-actions.js +0 -78
  418. package/dist/src/routes/widget-actions.js.map +0 -1
  419. package/dist/src/session/admin-file-tools.d.ts +0 -136
  420. package/dist/src/session/admin-file-tools.js +0 -240
  421. package/dist/src/session/admin-file-tools.js.map +0 -1
  422. package/dist/src/session/custom-tool-adapter.d.ts +0 -74
  423. package/dist/src/session/custom-tool-adapter.js +0 -180
  424. package/dist/src/session/custom-tool-adapter.js.map +0 -1
  425. package/dist/src/session/history-converter.d.ts +0 -21
  426. package/dist/src/session/history-converter.js +0 -59
  427. package/dist/src/session/history-converter.js.map +0 -1
  428. package/dist/src/session/history-converter.test.d.ts +0 -6
  429. package/dist/src/session/history-converter.test.js +0 -130
  430. package/dist/src/session/history-converter.test.js.map +0 -1
  431. package/dist/src/session/session-manager.d.ts +0 -219
  432. package/dist/src/session/session-manager.js +0 -915
  433. package/dist/src/session/session-manager.js.map +0 -1
  434. package/dist/src/session/session-manager.test.d.ts +0 -6
  435. package/dist/src/session/session-manager.test.js +0 -455
  436. package/dist/src/session/session-manager.test.js.map +0 -1
  437. package/dist/src/session/session-runner.d.ts +0 -45
  438. package/dist/src/session/session-runner.js +0 -719
  439. package/dist/src/session/session-runner.js.map +0 -1
  440. package/dist/src/session/session-runner.test.d.ts +0 -6
  441. package/dist/src/session/session-runner.test.js +0 -834
  442. package/dist/src/session/session-runner.test.js.map +0 -1
  443. /package/dist/src/{__tests__/sse-contract.test.d.ts → __fixtures__/e2e.test.d.ts} +0 -0
  444. /package/dist/src/{__tests__/tools.test.d.ts → __fixtures__/smoke.test.d.ts} +0 -0
  445. /package/dist/src/agent/{write-repo-file.test.d.ts → loop.test.d.ts} +0 -0
@@ -0,0 +1,423 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ /**
7
+ * Shared session-store tests.
8
+ *
9
+ * Runs the full behaviour matrix (save/load, upsert, pagination,
10
+ * metadata filters, hooks, cleanup) against the PGLite backend by
11
+ * default.
12
+ *
13
+ * A Postgres variant runs only when TEST_POSTGRES_URL is set — same
14
+ * opt-in pattern as `stores/drizzle-store-backend.test.ts`:
15
+ *
16
+ * TEST_POSTGRES_URL=postgres://postgres:postgres@localhost:5433/amodal_test pnpm test
17
+ *
18
+ * Tests that need cross-test isolation use a per-test `scope` string
19
+ * stamped into `metadata.scope` and filter by it. There is no tenant
20
+ * or user concept in the session store.
21
+ */
22
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
23
+ import { createPGLiteSessionStore } from './pglite-session-store.js';
24
+ import { createPostgresSessionStore } from './postgres-session-store.js';
25
+ import { SessionStoreError } from '../errors.js';
26
+ import { createLogger } from '../logger.js';
27
+ const logger = createLogger({ component: 'test:session-store' });
28
+ /** Fresh per-test scope so list() filters return only this test's rows. */
29
+ function newScope(label) {
30
+ return `${label}-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`;
31
+ }
32
+ function makeSession(overrides = {}) {
33
+ return {
34
+ version: 1,
35
+ id: `sess-${Math.random().toString(36).slice(2, 10)}`,
36
+ messages: [{ role: 'user', content: 'Hello' }],
37
+ tokenUsage: { inputTokens: 100, outputTokens: 50, totalTokens: 150 },
38
+ metadata: {},
39
+ createdAt: new Date(),
40
+ updatedAt: new Date(),
41
+ ...overrides,
42
+ };
43
+ }
44
+ function runSuite(makeBackend) {
45
+ let store;
46
+ let cleanup;
47
+ let makeWithHooks;
48
+ beforeEach(async () => {
49
+ const b = await makeBackend();
50
+ store = b.store;
51
+ cleanup = b.cleanup;
52
+ makeWithHooks = b.makeWithHooks;
53
+ });
54
+ afterEach(async () => {
55
+ await cleanup();
56
+ });
57
+ describe('save / load / upsert', () => {
58
+ it('saves and loads a session with all fields intact', async () => {
59
+ const session = makeSession({
60
+ messages: [
61
+ { role: 'user', content: 'Hi' },
62
+ { role: 'assistant', content: 'Hello there' },
63
+ ],
64
+ tokenUsage: { inputTokens: 42, outputTokens: 7, totalTokens: 49 },
65
+ metadata: { title: 'Test', provider: 'anthropic' },
66
+ });
67
+ await store.save(session);
68
+ const loaded = await store.load(session.id);
69
+ expect(loaded).not.toBeNull();
70
+ expect(loaded.id).toBe(session.id);
71
+ expect(loaded.version).toBe(1);
72
+ expect(loaded.messages).toEqual(session.messages);
73
+ expect(loaded.tokenUsage).toEqual(session.tokenUsage);
74
+ expect(loaded.metadata).toEqual(session.metadata);
75
+ });
76
+ it('returns null for a missing session', async () => {
77
+ expect(await store.load('nonexistent')).toBeNull();
78
+ });
79
+ it('save updates an existing session (upsert) and refreshes fields', async () => {
80
+ const session = makeSession();
81
+ await store.save(session);
82
+ session.messages = [...session.messages, { role: 'assistant', content: 'Hi' }];
83
+ session.tokenUsage = { inputTokens: 200, outputTokens: 100, totalTokens: 300 };
84
+ session.updatedAt = new Date(Date.now() + 1000);
85
+ await store.save(session);
86
+ const loaded = await store.load(session.id);
87
+ expect(loaded.messages).toHaveLength(2);
88
+ expect(loaded.tokenUsage.totalTokens).toBe(300);
89
+ });
90
+ it('preserves rich metadata round-trip', async () => {
91
+ const session = makeSession({
92
+ metadata: {
93
+ title: 'Complex session',
94
+ model: 'claude-sonnet-4-20250514',
95
+ provider: 'anthropic',
96
+ appId: 'my-app',
97
+ automationName: 'nightly-digest',
98
+ custom: { nested: { deeply: [1, 2, 3] } },
99
+ },
100
+ });
101
+ await store.save(session);
102
+ const loaded = await store.load(session.id);
103
+ expect(loaded.metadata).toEqual(session.metadata);
104
+ });
105
+ });
106
+ describe('list — ordering', () => {
107
+ it('returns sessions newest first', async () => {
108
+ const scope = newScope('order');
109
+ const older = makeSession({
110
+ metadata: { scope },
111
+ updatedAt: new Date('2026-01-01'),
112
+ });
113
+ const newer = makeSession({
114
+ metadata: { scope },
115
+ updatedAt: new Date('2026-03-01'),
116
+ });
117
+ await store.save(older);
118
+ await store.save(newer);
119
+ const { sessions } = await store.list({ filter: { scope } });
120
+ const ids = sessions.map((s) => s.id);
121
+ expect(ids.indexOf(newer.id)).toBeLessThan(ids.indexOf(older.id));
122
+ });
123
+ });
124
+ describe('list — pagination', () => {
125
+ it('returns nextCursor when more rows exist, null when page is final', async () => {
126
+ const scope = newScope('page');
127
+ for (let i = 0; i < 5; i++) {
128
+ await store.save(makeSession({ metadata: { scope }, updatedAt: new Date(2026, 0, 1 + i) }));
129
+ }
130
+ const page1 = await store.list({ limit: 2, filter: { scope } });
131
+ expect(page1.sessions).toHaveLength(2);
132
+ expect(page1.nextCursor).not.toBeNull();
133
+ const page2 = await store.list({ limit: 2, filter: { scope }, cursor: page1.nextCursor });
134
+ expect(page2.sessions).toHaveLength(2);
135
+ expect(page2.nextCursor).not.toBeNull();
136
+ const page3 = await store.list({ limit: 2, filter: { scope }, cursor: page2.nextCursor });
137
+ expect(page3.sessions).toHaveLength(1);
138
+ expect(page3.nextCursor).toBeNull();
139
+ const allIds = [...page1.sessions, ...page2.sessions, ...page3.sessions].map((s) => s.id);
140
+ expect(new Set(allIds).size).toBe(5);
141
+ });
142
+ it('throws SessionStoreError on malformed cursor', async () => {
143
+ await expect(store.list({ cursor: 'not-base64-at-all!!!' })).rejects.toBeInstanceOf(SessionStoreError);
144
+ });
145
+ it('paginates correctly when multiple rows share the same updated_at', async () => {
146
+ // Compound (updated_at, id) cursor must visit every row exactly
147
+ // once even when rows tie on updated_at (batch inserts, sources
148
+ // with millisecond-precision clocks).
149
+ const scope = newScope('tied');
150
+ const sameTs = new Date('2026-05-15T12:00:00.000Z');
151
+ for (let i = 0; i < 4; i++) {
152
+ await store.save(makeSession({
153
+ id: `tied-${String.fromCharCode(97 + i)}-${scope}`,
154
+ metadata: { scope },
155
+ updatedAt: sameTs,
156
+ }));
157
+ }
158
+ const page1 = await store.list({ limit: 2, filter: { scope } });
159
+ expect(page1.sessions).toHaveLength(2);
160
+ expect(page1.nextCursor).not.toBeNull();
161
+ const page2 = await store.list({ limit: 2, filter: { scope }, cursor: page1.nextCursor });
162
+ expect(page2.sessions).toHaveLength(2);
163
+ const allIds = [...page1.sessions, ...page2.sessions].map((s) => s.id);
164
+ expect(new Set(allIds).size).toBe(4);
165
+ });
166
+ });
167
+ describe('list — metadata filters', () => {
168
+ it('filters by a metadata string field', async () => {
169
+ const scope = newScope('filter');
170
+ await store.save(makeSession({ metadata: { scope, status: 'active', appId: 'x' } }));
171
+ await store.save(makeSession({ metadata: { scope, status: 'archived', appId: 'x' } }));
172
+ await store.save(makeSession({ metadata: { scope, status: 'active', appId: 'y' } }));
173
+ const { sessions: active } = await store.list({ filter: { scope, status: 'active' } });
174
+ expect(active).toHaveLength(2);
175
+ expect(active.every((s) => s.metadata['status'] === 'active')).toBe(true);
176
+ const { sessions: inApp } = await store.list({
177
+ filter: { scope, status: 'active', appId: 'x' },
178
+ });
179
+ expect(inApp).toHaveLength(1);
180
+ });
181
+ it('rejects filter keys with injection characters', async () => {
182
+ await expect(store.list({ filter: { "'; DROP TABLE agent_sessions; --": 'x' } })).rejects.toBeInstanceOf(SessionStoreError);
183
+ });
184
+ it('rejects filter keys with whitespace / punctuation', async () => {
185
+ await expect(store.list({ filter: { 'status OR 1=1': 'x' } })).rejects.toBeInstanceOf(SessionStoreError);
186
+ });
187
+ });
188
+ describe('list — date range', () => {
189
+ it('updatedAfter / updatedBefore constrain the result window', async () => {
190
+ const scope = newScope('date');
191
+ await store.save(makeSession({ metadata: { scope }, updatedAt: new Date('2026-01-01') }));
192
+ await store.save(makeSession({ metadata: { scope }, updatedAt: new Date('2026-02-15') }));
193
+ await store.save(makeSession({ metadata: { scope }, updatedAt: new Date('2026-04-01') }));
194
+ const { sessions } = await store.list({
195
+ filter: { scope },
196
+ updatedAfter: new Date('2026-02-01'),
197
+ updatedBefore: new Date('2026-03-01'),
198
+ });
199
+ expect(sessions).toHaveLength(1);
200
+ });
201
+ });
202
+ describe('delete', () => {
203
+ it('removes a session and returns true', async () => {
204
+ const session = makeSession();
205
+ await store.save(session);
206
+ expect(await store.delete(session.id)).toBe(true);
207
+ expect(await store.load(session.id)).toBeNull();
208
+ });
209
+ it('returns false for a missing session', async () => {
210
+ expect(await store.delete('nonexistent')).toBe(false);
211
+ });
212
+ });
213
+ describe('cleanup', () => {
214
+ it('removes only sessions older than the cutoff', async () => {
215
+ const scope = newScope('cleanup');
216
+ const old = makeSession({ metadata: { scope }, updatedAt: new Date('2020-01-01') });
217
+ const recent = makeSession({ metadata: { scope }, updatedAt: new Date() });
218
+ await store.save(old);
219
+ await store.save(recent);
220
+ const cleaned = await store.cleanup(new Date('2025-01-01'));
221
+ expect(cleaned).toBeGreaterThanOrEqual(1);
222
+ expect(await store.load(old.id)).toBeNull();
223
+ expect(await store.load(recent.id)).not.toBeNull();
224
+ });
225
+ });
226
+ describe('hooks', () => {
227
+ it('onAfterSave fires on save', async () => {
228
+ const events = [];
229
+ const hooked = await makeWithHooks({
230
+ onAfterSave: (s) => { events.push(`save:${s.id}`); },
231
+ });
232
+ try {
233
+ const session = makeSession();
234
+ await hooked.store.save(session);
235
+ expect(events).toEqual([`save:${session.id}`]);
236
+ }
237
+ finally {
238
+ await hooked.cleanup();
239
+ }
240
+ });
241
+ it('onAfterDelete fires only on actual deletes', async () => {
242
+ const events = [];
243
+ const hooked = await makeWithHooks({
244
+ onAfterDelete: (id) => { events.push(`del:${id}`); },
245
+ });
246
+ try {
247
+ const session = makeSession();
248
+ await hooked.store.save(session);
249
+ await hooked.store.delete('nonexistent');
250
+ await hooked.store.delete(session.id);
251
+ expect(events).toEqual([`del:${session.id}`]);
252
+ }
253
+ finally {
254
+ await hooked.cleanup();
255
+ }
256
+ });
257
+ it('onAfterCleanup fires once with deleted count', async () => {
258
+ const events = [];
259
+ const hooked = await makeWithHooks({
260
+ onAfterCleanup: ({ deleted }) => { events.push({ deleted }); },
261
+ });
262
+ try {
263
+ await hooked.store.save(makeSession({ updatedAt: new Date('2020-01-01') }));
264
+ await hooked.store.save(makeSession({ updatedAt: new Date('2020-02-01') }));
265
+ await hooked.store.cleanup(new Date('2025-01-01'));
266
+ expect(events).toHaveLength(1);
267
+ expect(events[0].deleted).toBeGreaterThanOrEqual(2);
268
+ }
269
+ finally {
270
+ await hooked.cleanup();
271
+ }
272
+ });
273
+ it('hook failure propagates to caller', async () => {
274
+ const hooked = await makeWithHooks({
275
+ onAfterSave: () => { throw new Error('hook failed'); },
276
+ });
277
+ try {
278
+ await expect(hooked.store.save(makeSession())).rejects.toThrow('hook failed');
279
+ }
280
+ finally {
281
+ await hooked.cleanup();
282
+ }
283
+ });
284
+ });
285
+ }
286
+ // ---------------------------------------------------------------------------
287
+ // PGLite suite (always runs)
288
+ // ---------------------------------------------------------------------------
289
+ describe('PGLite session store', () => {
290
+ runSuite(async () => {
291
+ const store = await createPGLiteSessionStore({ logger });
292
+ return {
293
+ store,
294
+ cleanup: () => store.close(),
295
+ makeWithHooks: async (hooks) => {
296
+ const s = await createPGLiteSessionStore({ logger, hooks });
297
+ return { store: s, cleanup: () => s.close() };
298
+ },
299
+ };
300
+ });
301
+ });
302
+ // ---------------------------------------------------------------------------
303
+ // Postgres suite (opt-in via TEST_POSTGRES_URL env var)
304
+ // ---------------------------------------------------------------------------
305
+ const pgUrl = process.env['TEST_POSTGRES_URL'] ?? '';
306
+ const pgDescribe = pgUrl ? describe : describe.skip;
307
+ pgDescribe('Postgres session store (via TEST_POSTGRES_URL)', () => {
308
+ const TEST_TABLE = 'test_agent_sessions';
309
+ async function dropTable(name) {
310
+ const pg = await import('pg');
311
+ const { Pool } = pg.default ?? pg;
312
+ const pool = new Pool({ connectionString: pgUrl });
313
+ try {
314
+ await pool.query(`DROP TABLE IF EXISTS ${name} CASCADE`);
315
+ }
316
+ finally {
317
+ await pool.end();
318
+ }
319
+ }
320
+ runSuite(async () => {
321
+ await dropTable(TEST_TABLE);
322
+ const store = await createPostgresSessionStore({
323
+ connectionString: pgUrl,
324
+ tableName: TEST_TABLE,
325
+ logger,
326
+ });
327
+ return {
328
+ store,
329
+ cleanup: () => store.close(),
330
+ makeWithHooks: async (hooks) => {
331
+ const table = `test_h_${Math.random().toString(36).slice(2, 10)}`;
332
+ const s = await createPostgresSessionStore({
333
+ connectionString: pgUrl,
334
+ tableName: table,
335
+ logger,
336
+ hooks,
337
+ });
338
+ return {
339
+ store: s,
340
+ cleanup: async () => {
341
+ await s.close();
342
+ await dropTable(table);
343
+ },
344
+ };
345
+ },
346
+ };
347
+ });
348
+ describe('Postgres factory specifics', () => {
349
+ it('accepts an externally-owned pg.Pool and does not close it', async () => {
350
+ const localTable = 'test_ext_pool';
351
+ await dropTable(localTable);
352
+ const pg = await import('pg');
353
+ const { Pool } = pg.default ?? pg;
354
+ const externalPool = new Pool({ connectionString: pgUrl });
355
+ try {
356
+ const store = await createPostgresSessionStore({
357
+ pool: externalPool,
358
+ tableName: localTable,
359
+ logger,
360
+ });
361
+ await store.save(makeSession());
362
+ await store.close();
363
+ const { rows } = await externalPool.query(`SELECT COUNT(*) AS c FROM ${localTable}`);
364
+ expect(Number(rows[0].c)).toBe(1);
365
+ }
366
+ finally {
367
+ await externalPool.end();
368
+ await dropTable(localTable);
369
+ }
370
+ });
371
+ it('close() is idempotent and ops after close throw SessionStoreError', async () => {
372
+ const localTable = 'test_close_idemp';
373
+ await dropTable(localTable);
374
+ const store = await createPostgresSessionStore({
375
+ connectionString: pgUrl,
376
+ tableName: localTable,
377
+ logger,
378
+ });
379
+ await store.close();
380
+ await store.close();
381
+ await expect(store.save(makeSession())).rejects.toBeInstanceOf(SessionStoreError);
382
+ await expect(store.load('x')).rejects.toBeInstanceOf(SessionStoreError);
383
+ await dropTable(localTable);
384
+ });
385
+ it('rejects invalid tableName at construct time', async () => {
386
+ await expect(createPostgresSessionStore({
387
+ connectionString: pgUrl,
388
+ tableName: 'bad table; DROP',
389
+ logger,
390
+ })).rejects.toBeInstanceOf(SessionStoreError);
391
+ });
392
+ it('requires connectionString or pool', async () => {
393
+ await expect(createPostgresSessionStore({ logger })).rejects.toBeInstanceOf(SessionStoreError);
394
+ });
395
+ it('concurrent saves to the same id converge', async () => {
396
+ const localTable = 'test_concurrent';
397
+ await dropTable(localTable);
398
+ const store = await createPostgresSessionStore({
399
+ connectionString: pgUrl,
400
+ tableName: localTable,
401
+ logger,
402
+ });
403
+ try {
404
+ const id = 'concurrent-id';
405
+ const saves = Array.from({ length: 10 }, (_, i) => store.save(makeSession({
406
+ id,
407
+ updatedAt: new Date(2026, 0, 1, 0, 0, i),
408
+ tokenUsage: { inputTokens: i, outputTokens: 0, totalTokens: i },
409
+ })));
410
+ await Promise.all(saves);
411
+ const loaded = await store.load(id);
412
+ expect(loaded).not.toBeNull();
413
+ expect(loaded.tokenUsage.totalTokens).toBeGreaterThanOrEqual(0);
414
+ expect(loaded.tokenUsage.totalTokens).toBeLessThanOrEqual(9);
415
+ }
416
+ finally {
417
+ await store.close();
418
+ await dropTable(localTable);
419
+ }
420
+ });
421
+ });
422
+ });
423
+ //# sourceMappingURL=store.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.test.js","sourceRoot":"","sources":["../../../src/session/store.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ /**
7
+ * Stream hooks type.
8
+ *
9
+ * These callbacks are invoked by route handlers after runMessage() drains.
10
+ * Hosted-mode consumers use them for audit logging, usage reporting, and
11
+ * external persistence.
12
+ */
13
+ export interface TokenCounts {
14
+ inputTokens: number;
15
+ outputTokens: number;
16
+ cachedTokens: number;
17
+ }
18
+ /**
19
+ * Hooks invoked by chat route handlers after the message stream completes.
20
+ */
21
+ export interface StreamHooks {
22
+ /** Log an audit event */
23
+ onAuditLog?: (entry: {
24
+ event: string;
25
+ resource_name: string;
26
+ details?: Record<string, unknown>;
27
+ }) => void;
28
+ /** Report token usage after each turn (fire-and-forget) */
29
+ onUsageReport?: (usage: {
30
+ model: string;
31
+ taskAgentRuns: number;
32
+ tokens: TokenCounts;
33
+ }) => void;
34
+ /** Persist session history (fire-and-forget). Messages array is empty for new-stack sessions. */
35
+ onSessionPersist?: (sessionId: string, messages: unknown[], status: 'active' | 'completed' | 'error', meta?: {
36
+ model?: string;
37
+ provider?: string;
38
+ }) => void;
39
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=stream-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-hooks.js","sourceRoot":"","sources":["../../../src/session/stream-hooks.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ /**
7
+ * Tool Context Factory.
8
+ *
9
+ * Builds a ToolContext from session-level dependencies. This is the bridge
10
+ * between the agent loop and tool implementations.
11
+ *
12
+ * Replaces the old `buildToolContext()` in agent/tool-context-builder.ts
13
+ * which depended on the legacy AgentSession type. This factory takes
14
+ * explicit dependencies and returns a factory function matching the
15
+ * `AgentContext.buildToolContext` signature: `(callId: string) => ToolContext`.
16
+ */
17
+ import type { LoadedStore, StoreBackend } from '@amodalai/types';
18
+ import type { FieldScrubber } from '@amodalai/core';
19
+ import type { ConnectionsMap } from '../tools/request-tool.js';
20
+ import type { SearchProvider } from '../providers/search-provider.js';
21
+ import type { ToolContext } from '../tools/types.js';
22
+ import type { Logger } from '../logger.js';
23
+ /** Dependencies for creating tool contexts. */
24
+ export interface ToolContextFactoryOptions {
25
+ /** Connection configs (base_url, auth headers, etc.) */
26
+ connectionsMap: ConnectionsMap;
27
+ /** Shared store backend for ctx.store() */
28
+ storeBackend: StoreBackend;
29
+ /** Store definitions for key resolution */
30
+ storeDefinitions: LoadedStore[];
31
+ /** App ID for store isolation */
32
+ appId: string;
33
+ /** Allowlisted env vars: name → value. Only these are exposed via ctx.env(). */
34
+ envAllowlist: Record<string, string | undefined>;
35
+ /** Session-scoped logger */
36
+ logger: Logger;
37
+ /** Field scrubber for response sanitization (optional) */
38
+ fieldScrubber?: FieldScrubber | null;
39
+ /** User info */
40
+ user: {
41
+ roles: string[];
42
+ [key: string]: unknown;
43
+ };
44
+ /** Session ID for correlation */
45
+ sessionId: string;
46
+ /** Grounded search provider for web_search/fetch_url (optional). */
47
+ searchProvider?: SearchProvider;
48
+ }
49
+ /**
50
+ * Create a factory function that builds ToolContext instances for tool execution.
51
+ *
52
+ * The returned factory is passed as `AgentContext.buildToolContext`. The EXECUTING
53
+ * state handler calls it once per tool execution with the tool call ID.
54
+ *
55
+ * The EXECUTING handler composes its own AbortSignal (session + per-tool timeout)
56
+ * and overrides `ctx.signal` via object spread before passing to the tool's
57
+ * execute function. Methods on this context read `ctx.signal` at call time
58
+ * (not at creation time) so that the overridden signal propagates to HTTP
59
+ * requests and other async operations.
60
+ */
61
+ export declare function createToolContextFactory(opts: ToolContextFactoryOptions): (callId: string) => ToolContext;