@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,69 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import type { AgentBundle, CustomToolExecutor, StoreBackend } from '@amodalai/types';
7
+ import type { McpManager, AdminAgentContent, FieldScrubber } from '@amodalai/core';
8
+ import type { LLMProvider } from '../providers/types.js';
9
+ import type { ToolRegistry, ToolContext } from '../tools/types.js';
10
+ import type { PermissionChecker } from '../security/permission-checker.js';
11
+ import { DISPATCH_TOOL_NAME } from '../tools/dispatch-tool.js';
12
+ import type { Logger } from '../logger.js';
13
+ /** Session type determines which content and tools are available. */
14
+ export type SessionType = 'chat' | 'admin' | 'automation';
15
+ /** Components needed to create a session via StandaloneSessionManager. */
16
+ export interface SessionComponents {
17
+ provider: LLMProvider;
18
+ toolRegistry: ToolRegistry;
19
+ permissionChecker: PermissionChecker;
20
+ systemPrompt: string;
21
+ toolContextFactory: (callId: string) => ToolContext;
22
+ userRoles: string[];
23
+ }
24
+ /** Options for building session components. */
25
+ export interface BuildSessionComponentsOptions {
26
+ /** The agent bundle (repo config). */
27
+ bundle: AgentBundle;
28
+ /** Shared store backend (lifecycle managed by the server). */
29
+ storeBackend: StoreBackend | null;
30
+ /** Shared MCP manager (lifecycle managed by the server). */
31
+ mcpManager: McpManager | null;
32
+ /** Session type — determines which content and tools are available. */
33
+ sessionType?: SessionType;
34
+ /** User roles for permission checks and field guidance. */
35
+ userRoles?: string[];
36
+ /** Pinned model override (takes precedence over bundle config). */
37
+ pinnedModel?: {
38
+ provider: string;
39
+ model: string;
40
+ };
41
+ /** Logger instance. */
42
+ logger: Logger;
43
+ /** App ID for store isolation (default: 'local'). */
44
+ appId?: string;
45
+ /** Custom tool executor for running compiled tool handlers. */
46
+ toolExecutor?: CustomToolExecutor;
47
+ /** Admin agent content (required when sessionType is 'admin'). */
48
+ adminContent?: AdminAgentContent;
49
+ /** Repo root path (required when sessionType is 'admin' for file tools). */
50
+ repoRoot?: string;
51
+ /** Callback to get the server port (for admin internal_api tool). */
52
+ getPort?: () => number | null;
53
+ /** Session ID for correlation in tool context (default: generated). */
54
+ sessionId?: string;
55
+ /** Optional field scrubber for response sanitization on ctx.request() */
56
+ fieldScrubber?: FieldScrubber;
57
+ }
58
+ declare const PRESENT_TOOL_NAME = "present";
59
+ declare const STOP_EXECUTION_TOOL_NAME = "stop_execution";
60
+ /**
61
+ * Build all session components from a bundle.
62
+ *
63
+ * This is the single entry point for translating repo config into runtime
64
+ * components. The caller (route handler or session manager) provides the
65
+ * bundle and shared resources; the builder returns everything needed to
66
+ * create a session.
67
+ */
68
+ export declare function buildSessionComponents(opts: BuildSessionComponentsOptions): SessionComponents;
69
+ export { PRESENT_TOOL_NAME, STOP_EXECUTION_TOOL_NAME, DISPATCH_TOOL_NAME };
@@ -0,0 +1,384 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ /**
7
+ * Session Builder.
8
+ *
9
+ * Translates an AgentBundle (repo config) into SessionComponents: the
10
+ * LLMProvider, ToolRegistry, PermissionChecker, system prompt, and
11
+ * ToolContextFactory needed to create a session.
12
+ *
13
+ * Replaces the 150-line initialization sequence in the old SessionManager.create().
14
+ * The builder is pure — no async callbacks, no platform awareness. The route
15
+ * handler fetches the bundle and passes it here.
16
+ */
17
+ import { z } from 'zod';
18
+ import { buildConnectionsMap, buildAccessConfigs } from '@amodalai/core';
19
+ import { createProvider } from '../providers/create-provider.js';
20
+ import { createSearchProvider } from '../providers/search-provider.js';
21
+ import { createToolRegistry } from '../tools/registry.js';
22
+ import { registerStoreTools } from '../tools/store-tools.js';
23
+ import { createRequestTool, REQUEST_TOOL_NAME } from '../tools/request-tool.js';
24
+ import { createCustomToolDefinition } from '../tools/custom-tool-adapter.js';
25
+ import { registerMcpTools } from '../tools/mcp-tool-adapter.js';
26
+ import { registerAdminFileTools } from '../tools/admin-file-tools.js';
27
+ import { AccessJsonPermissionChecker, } from '../security/permission-checker.js';
28
+ import { compileContext } from '../context/compiler.js';
29
+ import { createToolContextFactory } from './tool-context-factory.js';
30
+ import { LOCAL_APP_ID } from '../constants.js';
31
+ import { StoreError } from '../errors.js';
32
+ import { createDispatchTool, DISPATCH_TOOL_NAME } from '../tools/dispatch-tool.js';
33
+ import { createWebSearchTool, WEB_SEARCH_TOOL_NAME } from '../tools/web-search-tool.js';
34
+ import { createFetchUrlTool, FETCH_URL_TOOL_NAME } from '../tools/fetch-url-tool.js';
35
+ // ---------------------------------------------------------------------------
36
+ // Present tool (system tool)
37
+ // ---------------------------------------------------------------------------
38
+ const PRESENT_TOOL_NAME = 'present';
39
+ const WIDGET_TYPES = [
40
+ 'entity-card', 'entity-list', 'scope-map', 'alert-card', 'timeline',
41
+ 'comparison', 'data-table', 'score-breakdown', 'status-board',
42
+ 'credential-input', 'document-preview', 'info-card', 'metric',
43
+ ];
44
+ function createPresentTool() {
45
+ return {
46
+ description: `Show a visual widget inline in the conversation. Use to display entities, maps, alerts, timelines, score breakdowns, status boards, credential input forms, document previews, and other structured data visually instead of describing them in text.
47
+
48
+ Before first use in a session, load knowledge tagged widget_schemas for the correct data format for each widget type.
49
+
50
+ Widget selection:
51
+ - entity-card: Single entity profile or lookup result
52
+ - entity-list: Multiple entities in table format
53
+ - alert-card: Individual finding or alert with severity
54
+ - timeline: Chronological event sequence
55
+ - data-table: Structured data, comparisons, lists
56
+ - scope-map: Spatial/scope visualization
57
+ - comparison: Side-by-side entity or metric comparison
58
+ - score-breakdown: Risk/severity score with factor breakdown
59
+ - status-board: Overview of all active findings with severity
60
+ - credential-input: Securely capture connection credentials
61
+ - document-preview: Show proposed resources for approval
62
+ - info-card: Generic entity/object profile with key-value fields
63
+ - metric: Single highlighted metric with optional trend`,
64
+ parameters: z.object({
65
+ widget: z.enum(WIDGET_TYPES),
66
+ data: z.record(z.unknown()),
67
+ }),
68
+ readOnly: true,
69
+ metadata: { category: 'system' },
70
+ async execute(params) {
71
+ // The present tool's result is consumed by the SSE layer to emit a
72
+ // Widget event. The execute function just passes the data through.
73
+ return { widget: params.widget, data: params.data, rendered: true };
74
+ },
75
+ };
76
+ }
77
+ // ---------------------------------------------------------------------------
78
+ // Stop execution tool (system tool)
79
+ // ---------------------------------------------------------------------------
80
+ const STOP_EXECUTION_TOOL_NAME = 'stop_execution';
81
+ function createStopExecutionTool() {
82
+ return {
83
+ description: 'Stop the current task. Call this when the task is complete, impossible, or when you need the user to take action before you can continue. Provide a reason explaining why you are stopping.',
84
+ parameters: z.object({
85
+ reason: z.string().describe('Why execution is stopping'),
86
+ }),
87
+ readOnly: true,
88
+ metadata: { category: 'system' },
89
+ async execute(params) {
90
+ // The __stop sentinel is checked by the EXECUTING state handler.
91
+ // When detected, it transitions to DONE(model_stop) instead of continuing.
92
+ return { __stop: true, reason: params.reason };
93
+ },
94
+ };
95
+ }
96
+ // ---------------------------------------------------------------------------
97
+ // Bundle → CompilerConnection mapping
98
+ // ---------------------------------------------------------------------------
99
+ function bundleConnectionToCompilerConnection(name, conn) {
100
+ return {
101
+ name,
102
+ description: undefined,
103
+ endpoints: conn.surface
104
+ .filter((e) => e.included)
105
+ .map((e) => ({ method: e.method, path: e.path, description: e.description })),
106
+ entities: conn.entities,
107
+ rules: conn.rules,
108
+ fieldRestrictions: conn.access.fieldRestrictions?.map((fr) => ({
109
+ entity: fr.entity,
110
+ field: fr.field,
111
+ policy: fr.policy,
112
+ reason: fr.reason,
113
+ allowedRoles: fr.allowedRoles,
114
+ })),
115
+ rowScoping: conn.access.rowScoping,
116
+ alternativeLookups: conn.access.alternativeLookups,
117
+ };
118
+ }
119
+ // ---------------------------------------------------------------------------
120
+ // Custom tool session context bridge
121
+ // ---------------------------------------------------------------------------
122
+ function buildCustomToolSessionContext(bundle, connectionsMap, storeBackend, appId) {
123
+ // Adapt StoreBackend.put (returns StorePutResult) to CustomToolSessionContext.storeBackend.put (returns void)
124
+ const adaptedBackend = storeBackend
125
+ ? {
126
+ async put(a, s, k, p, m) {
127
+ await storeBackend.put(a, s, k, p, m);
128
+ },
129
+ }
130
+ : undefined;
131
+ return {
132
+ config: {
133
+ getConnections() {
134
+ // Return processed connections map (with base_url, _request_config)
135
+ // not raw LoadedConnection objects
136
+ return connectionsMap;
137
+ },
138
+ getStores() {
139
+ return bundle.stores.map((s) => ({
140
+ name: s.name,
141
+ entity: { key: s.entity.key, schema: s.entity.schema },
142
+ }));
143
+ },
144
+ },
145
+ storeBackend: adaptedBackend,
146
+ appId,
147
+ };
148
+ }
149
+ // ---------------------------------------------------------------------------
150
+ // Env allowlist
151
+ // ---------------------------------------------------------------------------
152
+ function collectEnvAllowlist(bundle) {
153
+ const allowlist = {};
154
+ for (const tool of bundle.tools) {
155
+ for (const envVar of tool.env) {
156
+ allowlist[envVar] = process.env[envVar];
157
+ }
158
+ }
159
+ return allowlist;
160
+ }
161
+ // ---------------------------------------------------------------------------
162
+ // Builder
163
+ // ---------------------------------------------------------------------------
164
+ /**
165
+ * Build all session components from a bundle.
166
+ *
167
+ * This is the single entry point for translating repo config into runtime
168
+ * components. The caller (route handler or session manager) provides the
169
+ * bundle and shared resources; the builder returns everything needed to
170
+ * create a session.
171
+ */
172
+ export function buildSessionComponents(opts) {
173
+ const { bundle, storeBackend, mcpManager, sessionType = 'chat', userRoles = [], pinnedModel, logger, appId = LOCAL_APP_ID, toolExecutor, adminContent, repoRoot, getPort, sessionId = 'pending', fieldScrubber, } = opts;
174
+ // -------------------------------------------------------------------------
175
+ // 1. Create LLM provider
176
+ // -------------------------------------------------------------------------
177
+ const bundleModel = bundle.config.models.main;
178
+ const providerConfig = {
179
+ provider: pinnedModel?.provider ?? bundleModel.provider,
180
+ model: pinnedModel?.model ?? bundleModel.model,
181
+ apiKey: resolveApiKey(pinnedModel ?? bundleModel, bundle),
182
+ baseUrl: pinnedModel ? undefined : bundleModel.baseUrl,
183
+ region: pinnedModel ? undefined : bundleModel.region,
184
+ };
185
+ const provider = createProvider(providerConfig);
186
+ // -------------------------------------------------------------------------
187
+ // 2. Create tool registry
188
+ // -------------------------------------------------------------------------
189
+ const registry = createToolRegistry();
190
+ // -------------------------------------------------------------------------
191
+ // 3. Register store tools
192
+ // -------------------------------------------------------------------------
193
+ if (storeBackend && bundle.stores.length > 0) {
194
+ registerStoreTools(registry, bundle.stores, storeBackend, appId);
195
+ }
196
+ // -------------------------------------------------------------------------
197
+ // 4. Register request tool
198
+ // -------------------------------------------------------------------------
199
+ const connectionsMap = buildConnectionsMap(bundle.connections, bundle.resolvedCredentials);
200
+ const accessConfigs = buildAccessConfigs(bundle.connections);
201
+ const connectionNames = [...bundle.connections.keys()].filter((name) => bundle.connections.get(name)?.spec.protocol !== 'mcp');
202
+ if (connectionNames.length > 0) {
203
+ registry.register(REQUEST_TOOL_NAME, createRequestTool({
204
+ connectionsMap,
205
+ permissionChecker: new AccessJsonPermissionChecker({
206
+ accessConfigs,
207
+ isDelegated: false,
208
+ }),
209
+ }));
210
+ }
211
+ // -------------------------------------------------------------------------
212
+ // 5. Register custom tools
213
+ // -------------------------------------------------------------------------
214
+ if (toolExecutor) {
215
+ const customToolSessionCtx = buildCustomToolSessionContext(bundle, connectionsMap, storeBackend, appId);
216
+ for (const tool of bundle.tools) {
217
+ // Skip tools with confirm: 'never' — they exist but are not callable
218
+ if (tool.confirm === 'never')
219
+ continue;
220
+ registry.register(tool.name, createCustomToolDefinition(tool, toolExecutor, customToolSessionCtx));
221
+ }
222
+ }
223
+ // -------------------------------------------------------------------------
224
+ // 6. Register MCP tools
225
+ // -------------------------------------------------------------------------
226
+ if (mcpManager) {
227
+ registerMcpTools(registry, mcpManager, logger);
228
+ }
229
+ // -------------------------------------------------------------------------
230
+ // 7. Register admin file tools (admin sessions only)
231
+ // -------------------------------------------------------------------------
232
+ if (sessionType === 'admin' && repoRoot) {
233
+ registerAdminFileTools(registry, repoRoot, getPort ?? (() => null));
234
+ }
235
+ // -------------------------------------------------------------------------
236
+ // 8. Register present tool
237
+ // -------------------------------------------------------------------------
238
+ registry.register(PRESENT_TOOL_NAME, createPresentTool());
239
+ // -------------------------------------------------------------------------
240
+ // 9. Register stop_execution tool
241
+ // -------------------------------------------------------------------------
242
+ registry.register(STOP_EXECUTION_TOOL_NAME, createStopExecutionTool());
243
+ // -------------------------------------------------------------------------
244
+ // 10. Register dispatch_task tool (sub-agent dispatch)
245
+ // -------------------------------------------------------------------------
246
+ registry.register(DISPATCH_TOOL_NAME, createDispatchTool());
247
+ // -------------------------------------------------------------------------
248
+ // 10a. Build search provider + register web tools (if webTools configured)
249
+ // -------------------------------------------------------------------------
250
+ let searchProvider;
251
+ const webToolsConfig = bundle.config.webTools;
252
+ if (webToolsConfig) {
253
+ searchProvider = createSearchProvider(webToolsConfig);
254
+ registry.register(WEB_SEARCH_TOOL_NAME, createWebSearchTool());
255
+ registry.register(FETCH_URL_TOOL_NAME, createFetchUrlTool());
256
+ logger.info('web_tools_enabled', {
257
+ provider: webToolsConfig.provider,
258
+ model: searchProvider.model,
259
+ });
260
+ }
261
+ else {
262
+ logger.info('web_tools_not_configured', {});
263
+ }
264
+ // -------------------------------------------------------------------------
265
+ // 11. Build permission checker (session-level)
266
+ // -------------------------------------------------------------------------
267
+ const sessionPermissionChecker = new AccessJsonPermissionChecker({
268
+ accessConfigs,
269
+ isDelegated: sessionType === 'automation',
270
+ });
271
+ // -------------------------------------------------------------------------
272
+ // 11. Compile system prompt
273
+ // -------------------------------------------------------------------------
274
+ const isAdmin = sessionType === 'admin';
275
+ const skills = isAdmin && adminContent ? adminContent.skills : bundle.skills;
276
+ const knowledge = isAdmin && adminContent ? adminContent.knowledge : bundle.knowledge;
277
+ const agentOverride = isAdmin && adminContent ? (adminContent.agentPrompt ?? undefined) : bundle.agents.main;
278
+ const compilerConnections = [];
279
+ for (const [name, conn] of bundle.connections) {
280
+ if (conn.spec.protocol === 'mcp')
281
+ continue;
282
+ compilerConnections.push(bundleConnectionToCompilerConnection(name, conn));
283
+ }
284
+ const compilerInput = {
285
+ name: bundle.config.name,
286
+ description: bundle.config.description,
287
+ userContext: bundle.config.userContext,
288
+ agentOverride,
289
+ basePrompt: bundle.config.basePrompt,
290
+ connections: compilerConnections,
291
+ skills: skills.map((s) => ({
292
+ name: s.name,
293
+ description: s.description,
294
+ trigger: s.trigger,
295
+ body: s.body,
296
+ })),
297
+ knowledge: knowledge.map((k) => ({
298
+ name: k.name,
299
+ title: k.title,
300
+ body: k.body,
301
+ })),
302
+ stores: bundle.stores.map((s) => ({
303
+ name: s.name,
304
+ entity: {
305
+ name: s.entity.name,
306
+ key: s.entity.key,
307
+ schema: s.entity.schema,
308
+ },
309
+ })),
310
+ userRoles,
311
+ };
312
+ const compiled = compileContext(compilerInput);
313
+ if (compiled.warnings.length > 0) {
314
+ for (const warning of compiled.warnings) {
315
+ logger.warn('compiler_warning', { warning });
316
+ }
317
+ }
318
+ // -------------------------------------------------------------------------
319
+ // 12. Build tool context factory
320
+ // -------------------------------------------------------------------------
321
+ const envAllowlist = collectEnvAllowlist(bundle);
322
+ const factoryOpts = {
323
+ connectionsMap,
324
+ storeBackend: storeBackend ?? makeThrowingStoreBackend(),
325
+ storeDefinitions: bundle.stores,
326
+ appId,
327
+ envAllowlist,
328
+ logger,
329
+ fieldScrubber,
330
+ sessionId,
331
+ user: { roles: userRoles },
332
+ ...(searchProvider ? { searchProvider } : {}),
333
+ };
334
+ const toolContextFactory = createToolContextFactory(factoryOpts);
335
+ // -------------------------------------------------------------------------
336
+ // Return components
337
+ // -------------------------------------------------------------------------
338
+ return {
339
+ provider,
340
+ toolRegistry: registry,
341
+ permissionChecker: sessionPermissionChecker,
342
+ systemPrompt: compiled.systemPrompt,
343
+ toolContextFactory,
344
+ userRoles,
345
+ };
346
+ }
347
+ // ---------------------------------------------------------------------------
348
+ // Helpers
349
+ // ---------------------------------------------------------------------------
350
+ /** Stub backend that throws on every operation — used when no real backend is available. */
351
+ function makeThrowingStoreBackend() {
352
+ const fail = () => { throw new StoreError('Store backend not available', { store: '', operation: 'init', context: {} }); };
353
+ return {
354
+ initialize: () => Promise.reject(fail()),
355
+ get: () => Promise.reject(fail()),
356
+ put: () => Promise.reject(fail()),
357
+ list: () => Promise.reject(fail()),
358
+ delete: () => Promise.reject(fail()),
359
+ history: () => Promise.reject(fail()),
360
+ purgeExpired: () => Promise.reject(fail()),
361
+ close: () => Promise.resolve(),
362
+ };
363
+ }
364
+ function resolveApiKey(modelConfig, bundle) {
365
+ // Check model-level credentials first
366
+ if (modelConfig.credentials) {
367
+ const key = modelConfig.credentials['apiKey'] ?? modelConfig.credentials['api_key'];
368
+ if (key)
369
+ return key;
370
+ }
371
+ // Check resolved credentials from the bundle
372
+ if (bundle.resolvedCredentials) {
373
+ const providerEnvKey = `${modelConfig.provider.toUpperCase()}_API_KEY`;
374
+ if (bundle.resolvedCredentials[providerEnvKey]) {
375
+ return bundle.resolvedCredentials[providerEnvKey];
376
+ }
377
+ }
378
+ // Fall back to environment variable
379
+ const envKey = `${modelConfig.provider.toUpperCase()}_API_KEY`;
380
+ return process.env[envKey];
381
+ }
382
+ // Re-export constants for use in tests and state handlers
383
+ export { PRESENT_TOOL_NAME, STOP_EXECUTION_TOOL_NAME, DISPATCH_TOOL_NAME };
384
+ //# sourceMappingURL=session-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-builder.js","sourceRoot":"","sources":["../../../src/session/session-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ export {};