@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
@@ -1,583 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2026 Amodal Labs, Inc.
4
- * SPDX-License-Identifier: MIT
5
- */
6
- /**
7
- * Phase 0.6 — Tool Execution Integration Tests
8
- *
9
- * Parity tests that verify tool execution end-to-end through the current
10
- * gemini-cli-core system. If a future SDK swap breaks tool behaviour,
11
- * these tests catch it immediately.
12
- *
13
- * Scenarios:
14
- * 1. Store write → read back → verify data
15
- * 2. Store batch write → query → verify all items
16
- * 3. Store query with filter → verify filtered result
17
- * 4. Custom tool (handler) → verify execution and structured return
18
- * 5. Connection request tool → verify API call with auth headers
19
- */
20
- import { describe, it, expect, vi, beforeAll, afterAll, beforeEach } from 'vitest';
21
- import { mkdtempSync, mkdirSync, writeFileSync, rmSync } from 'node:fs';
22
- import { join } from 'node:path';
23
- import { tmpdir } from 'node:os';
24
- import { createServer } from 'node:http';
25
- import { loadRepo } from '@amodalai/core';
26
- import { SSEEventType } from '../types.js';
27
- // ── Mock the LLM provider ──────────────────────────────────────────────────
28
- const { mockChat, mockFailoverCtor } = vi.hoisted(() => {
29
- const chat = vi.fn();
30
- const ctor = vi.fn().mockImplementation(() => ({ chat }));
31
- return { mockChat: chat, mockFailoverCtor: ctor };
32
- });
33
- vi.mock('@amodalai/core', async (importOriginal) => {
34
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion -- needed when core is not pre-built
35
- const actual = (await importOriginal());
36
- return {
37
- ...actual,
38
- FailoverProvider: mockFailoverCtor,
39
- };
40
- });
41
- // ── Fixture: amodal.json ────────────────────────────────────────────────────
42
- const AMODAL_CONFIG = JSON.stringify({
43
- name: 'tool-integration-test',
44
- version: '1.0.0',
45
- models: {
46
- main: { provider: 'anthropic', model: 'claude-sonnet-4-20250514' },
47
- },
48
- });
49
- // ── Fixture: store definition ───────────────────────────────────────────────
50
- const INCIDENTS_STORE = JSON.stringify({
51
- name: 'incidents',
52
- entity: {
53
- name: 'Incident',
54
- key: '{incident_id}',
55
- schema: {
56
- incident_id: { type: 'string' },
57
- severity: { type: 'enum', values: ['P1', 'P2', 'P3', 'P4'] },
58
- service: { type: 'string' },
59
- status: { type: 'enum', values: ['open', 'investigating', 'resolved'] },
60
- summary: { type: 'string' },
61
- },
62
- },
63
- history: { versions: 3 },
64
- });
65
- // ── Helpers ─────────────────────────────────────────────────────────────────
66
- function createFixtureRepo(opts) {
67
- const dir = mkdtempSync(join(tmpdir(), 'tools-int-'));
68
- writeFileSync(join(dir, 'amodal.json'), AMODAL_CONFIG);
69
- // Stores
70
- mkdirSync(join(dir, 'stores'), { recursive: true });
71
- writeFileSync(join(dir, 'stores', 'incidents.json'), INCIDENTS_STORE);
72
- // .amodal dir for PGLite data
73
- mkdirSync(join(dir, '.amodal'), { recursive: true });
74
- // Connections
75
- if (opts?.connections) {
76
- const configWithConns = {
77
- ...JSON.parse(AMODAL_CONFIG),
78
- connections: opts.connections,
79
- };
80
- writeFileSync(join(dir, 'amodal.json'), JSON.stringify(configWithConns));
81
- }
82
- // Custom tools
83
- if (opts?.customTools) {
84
- for (const [name, files] of Object.entries(opts.customTools)) {
85
- const toolDir = join(dir, 'tools', name);
86
- mkdirSync(toolDir, { recursive: true });
87
- for (const [filename, content] of Object.entries(files)) {
88
- writeFileSync(join(toolDir, filename), content);
89
- }
90
- }
91
- }
92
- return dir;
93
- }
94
- async function collectEvents(gen) {
95
- const events = [];
96
- for await (const event of gen) {
97
- events.push(event);
98
- }
99
- return events;
100
- }
101
- async function buildSession(repoDir, extraOpts) {
102
- const repo = await loadRepo({ localPath: repoDir });
103
- const { setupSession, PlanModeManager, prepareExploreConfig } = await import('@amodalai/core');
104
- const { createPGLiteStoreBackend } = await import('../stores/pglite-store-backend.js');
105
- const storeBackend = await createPGLiteStoreBackend(repo.stores);
106
- const runtime = setupSession({
107
- repo,
108
- userId: 'integration-test-user',
109
- userRoles: [],
110
- isDelegated: false,
111
- });
112
- const session = {
113
- id: 'tools-int-session',
114
- runtime: {
115
- ...runtime,
116
- connectionsMap: extraOpts?.connectionsMap ?? {},
117
- },
118
- appId: 'int-test-tenant',
119
- conversationHistory: [],
120
- createdAt: Date.now(),
121
- lastAccessedAt: Date.now(),
122
- planModeManager: new PlanModeManager(),
123
- exploreConfig: prepareExploreConfig(runtime),
124
- storeBackend: storeBackend,
125
- };
126
- return { session, repo, storeBackend };
127
- }
128
- // ── Tests ───────────────────────────────────────────────────────────────────
129
- describe('Tool Execution Integration Tests', () => {
130
- let repoDir;
131
- beforeAll(() => {
132
- repoDir = createFixtureRepo();
133
- });
134
- afterAll(() => {
135
- rmSync(repoDir, { recursive: true, force: true });
136
- });
137
- beforeEach(() => {
138
- mockChat.mockReset();
139
- mockFailoverCtor.mockReset();
140
- mockFailoverCtor.mockImplementation(() => ({ chat: mockChat }));
141
- });
142
- // ────────────────────────────────────────────────────────────────────────
143
- // 1. Store write → read back → verify data
144
- // ────────────────────────────────────────────────────────────────────────
145
- describe('1. Store write → read back → verify data', () => {
146
- it('writes a document via store tool, reads it back via query_store, and verifies all fields', async () => {
147
- const { session, storeBackend } = await buildSession(repoDir);
148
- const { runAgentTurn } = await import('../agent/agent-runner.js');
149
- const incidentPayload = {
150
- incident_id: 'inc_001',
151
- severity: 'P1',
152
- service: 'payment-api',
153
- status: 'open',
154
- summary: 'Latency spike after deploy v2.3.1',
155
- };
156
- // Turn 1: LLM calls store_incidents to write
157
- mockChat
158
- .mockResolvedValueOnce({
159
- content: [{
160
- type: 'tool_use',
161
- id: 'tc_write_001',
162
- name: 'store_incidents',
163
- input: incidentPayload,
164
- }],
165
- stopReason: 'tool_use',
166
- usage: { inputTokens: 100, outputTokens: 50 },
167
- })
168
- // Turn 2: LLM calls query_store to read back
169
- .mockResolvedValueOnce({
170
- content: [{
171
- type: 'tool_use',
172
- id: 'tc_read_001',
173
- name: 'query_store',
174
- input: { store: 'incidents', key: 'inc_001' },
175
- }],
176
- stopReason: 'tool_use',
177
- usage: { inputTokens: 150, outputTokens: 40 },
178
- })
179
- // Turn 3: Text response
180
- .mockResolvedValueOnce({
181
- content: [{ type: 'text', text: 'Incident inc_001 stored and verified.' }],
182
- stopReason: 'end_turn',
183
- usage: { inputTokens: 200, outputTokens: 20 },
184
- });
185
- const events = await collectEvents(runAgentTurn(session, 'Store this incident and read it back', AbortSignal.timeout(30000)));
186
- // Verify tool call events
187
- const toolResults = events.filter((e) => e.type === SSEEventType.ToolCallResult);
188
- expect(toolResults).toHaveLength(2);
189
- // Write result
190
- if (toolResults[0].type === SSEEventType.ToolCallResult) {
191
- expect(toolResults[0].status).toBe('success');
192
- const writeResult = JSON.parse(toolResults[0].result ?? '{}');
193
- expect(writeResult['stored']).toBe(true);
194
- expect(writeResult['key']).toBe('inc_001');
195
- expect(writeResult['version']).toBe(1);
196
- }
197
- // Read result — verify all fields preserved
198
- if (toolResults[1].type === SSEEventType.ToolCallResult) {
199
- expect(toolResults[1].status).toBe('success');
200
- const readResult = JSON.parse(toolResults[1].result ?? '{}');
201
- expect(readResult['found']).toBe(true);
202
- const payload = readResult['payload'];
203
- expect(payload['incident_id']).toBe('inc_001');
204
- expect(payload['severity']).toBe('P1');
205
- expect(payload['service']).toBe('payment-api');
206
- expect(payload['status']).toBe('open');
207
- expect(payload['summary']).toBe('Latency spike after deploy v2.3.1');
208
- }
209
- // Verify direct PGLite persistence
210
- const doc = await storeBackend.get('int-test-tenant', 'incidents', 'inc_001');
211
- expect(doc).not.toBeNull();
212
- expect(doc.payload['severity']).toBe('P1');
213
- expect(doc.payload['service']).toBe('payment-api');
214
- expect(doc.version).toBe(1);
215
- await storeBackend.close();
216
- }, 30000);
217
- });
218
- // ────────────────────────────────────────────────────────────────────────
219
- // 2. Store batch write → query → verify all items
220
- // ────────────────────────────────────────────────────────────────────────
221
- describe('2. Store batch write → query → verify all items', () => {
222
- it('writes multiple documents then lists them all via query_store', async () => {
223
- const { session, storeBackend } = await buildSession(repoDir);
224
- const { runAgentTurn } = await import('../agent/agent-runner.js');
225
- const incidents = [
226
- { incident_id: 'inc_batch_1', severity: 'P1', service: 'auth', status: 'open', summary: 'Auth down' },
227
- { incident_id: 'inc_batch_2', severity: 'P3', service: 'cdn', status: 'investigating', summary: 'Cache miss' },
228
- { incident_id: 'inc_batch_3', severity: 'P2', service: 'payments', status: 'open', summary: 'Slow txns' },
229
- ];
230
- // Turn 1-3: LLM writes each incident
231
- // Turn 4: LLM queries all incidents
232
- // Turn 5: Text response
233
- for (const incident of incidents) {
234
- mockChat.mockResolvedValueOnce({
235
- content: [{
236
- type: 'tool_use',
237
- id: `tc_batch_${incident.incident_id}`,
238
- name: 'store_incidents',
239
- input: incident,
240
- }],
241
- stopReason: 'tool_use',
242
- usage: { inputTokens: 100, outputTokens: 50 },
243
- });
244
- }
245
- mockChat
246
- .mockResolvedValueOnce({
247
- content: [{
248
- type: 'tool_use',
249
- id: 'tc_list_all',
250
- name: 'query_store',
251
- input: { store: 'incidents' },
252
- }],
253
- stopReason: 'tool_use',
254
- usage: { inputTokens: 200, outputTokens: 40 },
255
- })
256
- .mockResolvedValueOnce({
257
- content: [{ type: 'text', text: 'All incidents stored and listed.' }],
258
- stopReason: 'end_turn',
259
- usage: { inputTokens: 300, outputTokens: 20 },
260
- });
261
- const events = await collectEvents(runAgentTurn(session, 'Store these three incidents then list them all', AbortSignal.timeout(30000)));
262
- // Should have 4 tool results (3 writes + 1 list)
263
- const toolResults = events.filter((e) => e.type === SSEEventType.ToolCallResult);
264
- expect(toolResults).toHaveLength(4);
265
- // All writes should succeed
266
- for (let i = 0; i < 3; i++) {
267
- if (toolResults[i].type === SSEEventType.ToolCallResult) {
268
- expect(toolResults[i].status).toBe('success');
269
- const r = JSON.parse(toolResults[i].result ?? '{}');
270
- expect(r['stored']).toBe(true);
271
- }
272
- }
273
- // List result should contain all 3 documents
274
- if (toolResults[3].type === SSEEventType.ToolCallResult) {
275
- expect(toolResults[3].status).toBe('success');
276
- const listResult = JSON.parse(toolResults[3].result ?? '{}');
277
- const docs = listResult['documents'];
278
- expect(docs).toHaveLength(3);
279
- const ids = docs.map((d) => d['payload']['incident_id']).sort();
280
- expect(ids).toEqual(['inc_batch_1', 'inc_batch_2', 'inc_batch_3']);
281
- }
282
- // Verify direct backend has all 3
283
- const backendList = await storeBackend.list('int-test-tenant', 'incidents', {});
284
- expect(backendList.documents).toHaveLength(3);
285
- await storeBackend.close();
286
- }, 30000);
287
- });
288
- // ────────────────────────────────────────────────────────────────────────
289
- // 3. Store query with filter → verify filtered result
290
- // ────────────────────────────────────────────────────────────────────────
291
- describe('3. Store query with filter → verify filtered result', () => {
292
- it('writes documents with different severities, queries with filter, only matching items returned', async () => {
293
- const { session, storeBackend } = await buildSession(repoDir);
294
- const { runAgentTurn } = await import('../agent/agent-runner.js');
295
- const incidents = [
296
- { incident_id: 'inc_f1', severity: 'P1', service: 'api', status: 'open', summary: 'Critical' },
297
- { incident_id: 'inc_f2', severity: 'P3', service: 'web', status: 'resolved', summary: 'Minor' },
298
- { incident_id: 'inc_f3', severity: 'P1', service: 'db', status: 'investigating', summary: 'DB down' },
299
- { incident_id: 'inc_f4', severity: 'P4', service: 'docs', status: 'open', summary: 'Typo' },
300
- ];
301
- // Write all 4 incidents
302
- for (const incident of incidents) {
303
- mockChat.mockResolvedValueOnce({
304
- content: [{
305
- type: 'tool_use',
306
- id: `tc_f_${incident.incident_id}`,
307
- name: 'store_incidents',
308
- input: incident,
309
- }],
310
- stopReason: 'tool_use',
311
- usage: { inputTokens: 100, outputTokens: 50 },
312
- });
313
- }
314
- // Query with severity filter
315
- mockChat
316
- .mockResolvedValueOnce({
317
- content: [{
318
- type: 'tool_use',
319
- id: 'tc_filter_query',
320
- name: 'query_store',
321
- input: { store: 'incidents', filter: { severity: 'P1' } },
322
- }],
323
- stopReason: 'tool_use',
324
- usage: { inputTokens: 200, outputTokens: 40 },
325
- })
326
- .mockResolvedValueOnce({
327
- content: [{ type: 'text', text: 'Found 2 P1 incidents.' }],
328
- stopReason: 'end_turn',
329
- usage: { inputTokens: 250, outputTokens: 15 },
330
- });
331
- const events = await collectEvents(runAgentTurn(session, 'Store these incidents and show me only P1s', AbortSignal.timeout(30000)));
332
- // 4 writes + 1 filtered query
333
- const toolResults = events.filter((e) => e.type === SSEEventType.ToolCallResult);
334
- expect(toolResults).toHaveLength(5);
335
- // Filter result should only contain P1 incidents
336
- if (toolResults[4].type === SSEEventType.ToolCallResult) {
337
- expect(toolResults[4].status).toBe('success');
338
- const filterResult = JSON.parse(toolResults[4].result ?? '{}');
339
- const docs = filterResult['documents'];
340
- expect(docs).toHaveLength(2);
341
- const ids = docs.map((d) => d['payload']['incident_id']).sort();
342
- expect(ids).toEqual(['inc_f1', 'inc_f3']);
343
- // All returned docs should be P1
344
- for (const doc of docs) {
345
- expect(doc['payload']['severity']).toBe('P1');
346
- }
347
- }
348
- await storeBackend.close();
349
- }, 30000);
350
- });
351
- // ────────────────────────────────────────────────────────────────────────
352
- // 4. Custom tool → verify execution and structured return
353
- // ────────────────────────────────────────────────────────────────────────
354
- describe('4. Custom tool execution → structured return', () => {
355
- it('executes a custom tool handler and returns structured data through the agent loop', async () => {
356
- const customRepoDir = createFixtureRepo({
357
- customTools: {
358
- risk_scorer: {
359
- 'tool.json': JSON.stringify({
360
- description: 'Score risk for a deal',
361
- parameters: {
362
- type: 'object',
363
- properties: {
364
- deal_id: { type: 'string' },
365
- revenue: { type: 'number' },
366
- days_stale: { type: 'number' },
367
- },
368
- required: ['deal_id', 'revenue', 'days_stale'],
369
- },
370
- }),
371
- 'handler.mjs': `
372
- export default async (params) => {
373
- const score = params.days_stale > 30 ? 'at_risk' : params.revenue > 100000 ? 'healthy' : 'attention';
374
- return {
375
- deal_id: params.deal_id,
376
- risk_score: score,
377
- factors: {
378
- days_stale: params.days_stale,
379
- revenue: params.revenue,
380
- },
381
- };
382
- };
383
- `,
384
- // loader needs handler.ts to detect the tool
385
- 'handler.ts': 'placeholder',
386
- },
387
- },
388
- });
389
- try {
390
- const repo = await loadRepo({ localPath: customRepoDir });
391
- // Swap handler path to .mjs for dynamic import
392
- const mjsPath = join(customRepoDir, 'tools', 'risk_scorer', 'handler.mjs');
393
- for (const tool of repo.tools) {
394
- if (tool.name === 'risk_scorer') {
395
- tool.handlerPath = mjsPath;
396
- }
397
- }
398
- const { setupSession, PlanModeManager, prepareExploreConfig } = await import('@amodalai/core');
399
- const { runAgentTurn } = await import('../agent/agent-runner.js');
400
- const runtime = setupSession({
401
- repo,
402
- userId: 'test',
403
- userRoles: [],
404
- isDelegated: false,
405
- });
406
- const session = {
407
- id: 'custom-tool-int-session',
408
- runtime,
409
- appId: 'int-test',
410
- conversationHistory: [],
411
- createdAt: Date.now(),
412
- lastAccessedAt: Date.now(),
413
- planModeManager: new PlanModeManager(),
414
- exploreConfig: prepareExploreConfig(runtime),
415
- };
416
- // LLM calls risk_scorer tool
417
- mockChat
418
- .mockResolvedValueOnce({
419
- content: [{
420
- type: 'tool_use',
421
- id: 'tc_risk_001',
422
- name: 'risk_scorer',
423
- input: { deal_id: 'deal_42', revenue: 250000, days_stale: 5 },
424
- }],
425
- stopReason: 'tool_use',
426
- usage: { inputTokens: 100, outputTokens: 60 },
427
- })
428
- .mockResolvedValueOnce({
429
- content: [{ type: 'text', text: 'Deal deal_42 scored as healthy.' }],
430
- stopReason: 'end_turn',
431
- usage: { inputTokens: 200, outputTokens: 20 },
432
- });
433
- const events = await collectEvents(runAgentTurn(session, 'Score deal_42', AbortSignal.timeout(30000)));
434
- // Verify tool call start
435
- const toolStarts = events.filter((e) => e.type === SSEEventType.ToolCallStart);
436
- expect(toolStarts).toHaveLength(1);
437
- if (toolStarts[0].type === SSEEventType.ToolCallStart) {
438
- expect(toolStarts[0].tool_name).toBe('risk_scorer');
439
- }
440
- // Verify tool result
441
- const toolResults = events.filter((e) => e.type === SSEEventType.ToolCallResult);
442
- expect(toolResults).toHaveLength(1);
443
- if (toolResults[0].type === SSEEventType.ToolCallResult) {
444
- expect(toolResults[0].status).toBe('success');
445
- // executeCustomTool returns {output: JSON.stringify(handlerResult)}
446
- // The SSE event's result field is that output string directly.
447
- const payload = JSON.parse(toolResults[0].result ?? '{}');
448
- expect(payload).toEqual({
449
- deal_id: 'deal_42',
450
- risk_score: 'healthy',
451
- factors: { days_stale: 5, revenue: 250000 },
452
- });
453
- }
454
- // Verify text response and done event
455
- const textEvents = events.filter((e) => e.type === SSEEventType.TextDelta);
456
- expect(textEvents.length).toBeGreaterThan(0);
457
- expect(events[events.length - 1].type).toBe(SSEEventType.Done);
458
- }
459
- finally {
460
- rmSync(customRepoDir, { recursive: true, force: true });
461
- }
462
- }, 30000);
463
- });
464
- // ────────────────────────────────────────────────────────────────────────
465
- // 5. Connection request tool → verify API call with auth headers
466
- // ────────────────────────────────────────────────────────────────────────
467
- describe('5. Connection request tool → auth headers', () => {
468
- let mockServer;
469
- let mockPort;
470
- let capturedHeaders;
471
- let capturedPath;
472
- let capturedMethod;
473
- beforeAll(async () => {
474
- // Start a local HTTP server that captures request details
475
- await new Promise((resolve) => {
476
- mockServer = createServer((req, res) => {
477
- capturedHeaders = req.headers;
478
- capturedPath = req.url ?? '';
479
- capturedMethod = req.method ?? '';
480
- res.writeHead(200, { 'Content-Type': 'application/json' });
481
- res.end(JSON.stringify({ deals: [{ id: 'deal_1', name: 'Acme Corp' }] }));
482
- });
483
- mockServer.listen(0, '127.0.0.1', () => {
484
- const addr = mockServer.address();
485
- if (addr && typeof addr === 'object') {
486
- mockPort = addr.port;
487
- }
488
- resolve();
489
- });
490
- });
491
- });
492
- afterAll(() => {
493
- mockServer.close();
494
- });
495
- it('makes an HTTP request through a connection with correct auth headers', async () => {
496
- const connRepoDir = createFixtureRepo();
497
- try {
498
- const repo = await loadRepo({ localPath: connRepoDir });
499
- const { setupSession, PlanModeManager, prepareExploreConfig } = await import('@amodalai/core');
500
- const { runAgentTurn } = await import('../agent/agent-runner.js');
501
- const runtime = setupSession({
502
- repo,
503
- userId: 'test',
504
- userRoles: [],
505
- isDelegated: false,
506
- });
507
- // Set up connection with auth headers pointing to our mock server
508
- const connectionsMap = {
509
- crm: {
510
- base_url: `http://127.0.0.1:${mockPort}`,
511
- _request_config: {
512
- auth: [
513
- { header: 'Authorization', value_template: 'Bearer test-api-token-123' },
514
- { header: 'X-Custom-Header', value_template: 'custom-value' },
515
- ],
516
- },
517
- },
518
- };
519
- const session = {
520
- id: 'conn-int-session',
521
- runtime: { ...runtime, connectionsMap },
522
- appId: 'int-test',
523
- conversationHistory: [],
524
- createdAt: Date.now(),
525
- lastAccessedAt: Date.now(),
526
- planModeManager: new PlanModeManager(),
527
- exploreConfig: prepareExploreConfig(runtime),
528
- };
529
- // LLM calls request tool
530
- mockChat
531
- .mockResolvedValueOnce({
532
- content: [{
533
- type: 'tool_use',
534
- id: 'tc_req_001',
535
- name: 'request',
536
- input: {
537
- connection: 'crm',
538
- method: 'GET',
539
- endpoint: '/api/deals',
540
- intent: 'read',
541
- params: { status: 'active' },
542
- },
543
- }],
544
- stopReason: 'tool_use',
545
- usage: { inputTokens: 100, outputTokens: 60 },
546
- })
547
- .mockResolvedValueOnce({
548
- content: [{ type: 'text', text: 'Found 1 deal.' }],
549
- stopReason: 'end_turn',
550
- usage: { inputTokens: 200, outputTokens: 15 },
551
- });
552
- const events = await collectEvents(runAgentTurn(session, 'List active deals from CRM', AbortSignal.timeout(30000)));
553
- // Verify tool execution
554
- const toolStarts = events.filter((e) => e.type === SSEEventType.ToolCallStart);
555
- expect(toolStarts).toHaveLength(1);
556
- if (toolStarts[0].type === SSEEventType.ToolCallStart) {
557
- expect(toolStarts[0].tool_name).toBe('request');
558
- }
559
- const toolResults = events.filter((e) => e.type === SSEEventType.ToolCallResult);
560
- expect(toolResults).toHaveLength(1);
561
- if (toolResults[0].type === SSEEventType.ToolCallResult) {
562
- expect(toolResults[0].status).toBe('success');
563
- const result = JSON.parse(toolResults[0].result ?? '{}');
564
- const deals = result['deals'];
565
- expect(deals).toHaveLength(1);
566
- expect(deals[0]['id']).toBe('deal_1');
567
- }
568
- // Verify the mock server received correct auth headers
569
- expect(capturedMethod).toBe('GET');
570
- expect(capturedPath).toBe('/api/deals?status=active');
571
- expect(capturedHeaders['authorization']).toBe('Bearer test-api-token-123');
572
- expect(capturedHeaders['x-custom-header']).toBe('custom-value');
573
- expect(capturedHeaders['content-type']).toBe('application/json');
574
- // Verify text + done
575
- expect(events[events.length - 1].type).toBe(SSEEventType.Done);
576
- }
577
- finally {
578
- rmSync(connRepoDir, { recursive: true, force: true });
579
- }
580
- }, 30000);
581
- });
582
- });
583
- //# sourceMappingURL=tools.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tools.test.js","sourceRoot":"","sources":["../../../src/__tests__/tools.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAC,MAAM,QAAQ,CAAC;AACjF,OAAO,EAAC,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAC,MAAM,SAAS,CAAC;AACtE,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAC,MAAM,EAAC,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAC,YAAY,EAAc,MAAM,WAAW,CAAC;AACpD,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAGxC,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAGzC,8EAA8E;AAE9E,MAAM,EAAC,QAAQ,EAAE,gBAAgB,EAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;IACnD,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IACrB,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAC,IAAI,EAAC,CAAC,CAAC,CAAC;IACxD,OAAO,EAAC,QAAQ,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAC,CAAC;AAClD,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;IACjD,iHAAiH;IACjH,MAAM,MAAM,GAAG,CAAC,MAAM,cAAc,EAAE,CAA4B,CAAC;IACnE,OAAO;QACL,GAAG,MAAM;QACT,gBAAgB,EAAE,gBAAgB;KACnC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,+EAA+E;AAE/E,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC;IACnC,IAAI,EAAE,uBAAuB;IAC7B,OAAO,EAAE,OAAO;IAChB,MAAM,EAAE;QACN,IAAI,EAAE,EAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,0BAA0B,EAAC;KACjE;CACF,CAAC,CAAC;AAEH,+EAA+E;AAE/E,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC;IACrC,IAAI,EAAE,WAAW;IACjB,MAAM,EAAE;QACN,IAAI,EAAE,UAAU;QAChB,GAAG,EAAE,eAAe;QACpB,MAAM,EAAE;YACN,WAAW,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC;YAC7B,QAAQ,EAAE,EAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAC;YAC1D,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC;YACzB,MAAM,EAAE,EAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,UAAU,CAAC,EAAC;YACrE,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC;SAC1B;KACF;IACD,OAAO,EAAE,EAAC,QAAQ,EAAE,CAAC,EAAC;CACvB,CAAC,CAAC;AAEH,+EAA+E;AAE/E,SAAS,iBAAiB,CAAC,IAG1B;IACC,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;IAEtD,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,aAAa,CAAC,CAAC;IAEvD,SAAS;IACT,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;IAClD,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,gBAAgB,CAAC,EAAE,eAAe,CAAC,CAAC;IAEtE,8BAA8B;IAC9B,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;IAEnD,cAAc;IACd,IAAI,IAAI,EAAE,WAAW,EAAE,CAAC;QACtB,MAAM,eAAe,GAAG;YACtB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAA4B;YACvD,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC;QACF,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,eAAe;IACf,IAAI,IAAI,EAAE,WAAW,EAAE,CAAC;QACtB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YACzC,SAAS,CAAC,OAAO,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;YACtC,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxD,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,GAA6B;IACxD,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,OAAe,EAAE,SAE5C;IACC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,EAAC,SAAS,EAAE,OAAO,EAAC,CAAC,CAAC;IAElD,MAAM,EAAC,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAC,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC7F,MAAM,EAAC,wBAAwB,EAAC,GAAG,MAAM,MAAM,CAAC,mCAAmC,CAAC,CAAC;IAErF,MAAM,YAAY,GAAuB,MAAM,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAErF,MAAM,OAAO,GAAG,YAAY,CAAC;QAC3B,IAAI;QACJ,MAAM,EAAE,uBAAuB;QAC/B,SAAS,EAAE,EAAE;QACb,WAAW,EAAE,KAAK;KACnB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG;QACd,EAAE,EAAE,mBAAmB;QACvB,OAAO,EAAE;YACP,GAAG,OAAO;YACV,cAAc,EAAE,SAAS,EAAE,cAAc,IAAI,EAAE;SAChD;QACD,KAAK,EAAE,iBAAiB;QACxB,mBAAmB,EAAE,EAAE;QACvB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE;QAC1B,eAAe,EAAE,IAAI,eAAe,EAAE;QACtC,aAAa,EAAE,oBAAoB,CAAC,OAAO,CAAC;QAC5C,YAAY,EAAE,YAA4B;KAC3C,CAAC;IAEF,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAC,CAAC;AACvC,CAAC;AAED,+EAA+E;AAE/E,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,IAAI,OAAe,CAAC;IAEpB,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,GAAG,iBAAiB,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,GAAG,EAAE;QACZ,MAAM,CAAC,OAAO,EAAE,EAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,GAAG,EAAE;QACd,QAAQ,CAAC,SAAS,EAAE,CAAC;QACrB,gBAAgB,CAAC,SAAS,EAAE,CAAC;QAC7B,gBAAgB,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,2EAA2E;IAC3E,2CAA2C;IAC3C,2EAA2E;IAE3E,QAAQ,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACxD,EAAE,CAAC,0FAA0F,EAAE,KAAK,IAAI,EAAE;YACxG,MAAM,EAAC,OAAO,EAAE,YAAY,EAAC,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;YAC5D,MAAM,EAAC,YAAY,EAAC,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;YAEhE,MAAM,eAAe,GAAG;gBACtB,WAAW,EAAE,SAAS;gBACtB,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,aAAa;gBACtB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,mCAAmC;aAC7C,CAAC;YAEF,6CAA6C;YAC7C,QAAQ;iBACL,qBAAqB,CAAC;gBACrB,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,UAAU;wBAChB,EAAE,EAAE,cAAc;wBAClB,IAAI,EAAE,iBAAiB;wBACvB,KAAK,EAAE,eAAe;qBACvB,CAAC;gBACF,UAAU,EAAE,UAAU;gBACtB,KAAK,EAAE,EAAC,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAC;aAC5C,CAAC;gBACF,6CAA6C;iBAC5C,qBAAqB,CAAC;gBACrB,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,UAAU;wBAChB,EAAE,EAAE,aAAa;wBACjB,IAAI,EAAE,aAAa;wBACnB,KAAK,EAAE,EAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAC;qBAC5C,CAAC;gBACF,UAAU,EAAE,UAAU;gBACtB,KAAK,EAAE,EAAC,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAC;aAC5C,CAAC;gBACF,wBAAwB;iBACvB,qBAAqB,CAAC;gBACrB,OAAO,EAAE,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uCAAuC,EAAC,CAAC;gBACxE,UAAU,EAAE,UAAU;gBACtB,KAAK,EAAE,EAAC,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAC;aAC5C,CAAC,CAAC;YAEL,MAAM,MAAM,GAAG,MAAM,aAAa,CAChC,YAAY,CACV,OAA6C,EAC7C,sCAAsC,EACtC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAC3B,CACF,CAAC;YAEF,0BAA0B;YAC1B,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,cAAc,CAAC,CAAC;YACjF,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAEpC,eAAe;YACf,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,cAAc,EAAE,CAAC;gBACxD,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAA4B,CAAC;gBACzF,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC3C,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACzC,CAAC;YAED,4CAA4C;YAC5C,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,cAAc,EAAE,CAAC;gBACxD,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAA4B,CAAC;gBACxF,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvC,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAA4B,CAAC;gBACjE,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC/C,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC/C,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACvC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YACvE,CAAC;YAED,mCAAmC;YACnC,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,iBAAiB,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;YAC9E,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,CAAC,GAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACpD,MAAM,CAAC,GAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAE7B,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;QAC7B,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,2EAA2E;IAC3E,kDAAkD;IAClD,2EAA2E;IAE3E,QAAQ,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAC/D,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;YAC7E,MAAM,EAAC,OAAO,EAAE,YAAY,EAAC,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;YAC5D,MAAM,EAAC,YAAY,EAAC,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;YAEhE,MAAM,SAAS,GAAG;gBAChB,EAAC,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAC;gBACnG,EAAC,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,EAAC;gBAC5G,EAAC,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAC;aACxG,CAAC;YAEF,qCAAqC;YACrC,oCAAoC;YACpC,wBAAwB;YACxB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,QAAQ,CAAC,qBAAqB,CAAC;oBAC7B,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,UAAU;4BAChB,EAAE,EAAE,YAAY,QAAQ,CAAC,WAAW,EAAE;4BACtC,IAAI,EAAE,iBAAiB;4BACvB,KAAK,EAAE,QAAQ;yBAChB,CAAC;oBACF,UAAU,EAAE,UAAU;oBACtB,KAAK,EAAE,EAAC,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAC;iBAC5C,CAAC,CAAC;YACL,CAAC;YAED,QAAQ;iBACL,qBAAqB,CAAC;gBACrB,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,UAAU;wBAChB,EAAE,EAAE,aAAa;wBACjB,IAAI,EAAE,aAAa;wBACnB,KAAK,EAAE,EAAC,KAAK,EAAE,WAAW,EAAC;qBAC5B,CAAC;gBACF,UAAU,EAAE,UAAU;gBACtB,KAAK,EAAE,EAAC,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAC;aAC5C,CAAC;iBACD,qBAAqB,CAAC;gBACrB,OAAO,EAAE,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kCAAkC,EAAC,CAAC;gBACnE,UAAU,EAAE,UAAU;gBACtB,KAAK,EAAE,EAAC,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAC;aAC5C,CAAC,CAAC;YAEL,MAAM,MAAM,GAAG,MAAM,aAAa,CAChC,YAAY,CACV,OAA6C,EAC7C,gDAAgD,EAChD,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAC3B,CACF,CAAC;YAEF,iDAAiD;YACjD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,cAAc,CAAC,CAAC;YACjF,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAEpC,4BAA4B;YAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3B,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,cAAc,EAAE,CAAC;oBACxD,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC9C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAA4B,CAAC;oBAC/E,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC;YAED,6CAA6C;YAC7C,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,cAAc,EAAE,CAAC;gBACxD,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAA4B,CAAC;gBACxF,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,CAAmC,CAAC;gBACvE,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAE7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,SAAS,CAA6B,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC7F,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC;YACrE,CAAC;YAED,kCAAkC;YAClC,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,iBAAiB,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;YAChF,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAE9C,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;QAC7B,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,2EAA2E;IAC3E,sDAAsD;IACtD,2EAA2E;IAE3E,QAAQ,CAAC,qDAAqD,EAAE,GAAG,EAAE;QACnE,EAAE,CAAC,+FAA+F,EAAE,KAAK,IAAI,EAAE;YAC7G,MAAM,EAAC,OAAO,EAAE,YAAY,EAAC,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;YAC5D,MAAM,EAAC,YAAY,EAAC,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;YAEhE,MAAM,SAAS,GAAG;gBAChB,EAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAC;gBAC5F,EAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAC;gBAC7F,EAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAC;gBACnG,EAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAC;aAC1F,CAAC;YAEF,wBAAwB;YACxB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,QAAQ,CAAC,qBAAqB,CAAC;oBAC7B,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,UAAU;4BAChB,EAAE,EAAE,QAAQ,QAAQ,CAAC,WAAW,EAAE;4BAClC,IAAI,EAAE,iBAAiB;4BACvB,KAAK,EAAE,QAAQ;yBAChB,CAAC;oBACF,UAAU,EAAE,UAAU;oBACtB,KAAK,EAAE,EAAC,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAC;iBAC5C,CAAC,CAAC;YACL,CAAC;YAED,6BAA6B;YAC7B,QAAQ;iBACL,qBAAqB,CAAC;gBACrB,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,UAAU;wBAChB,EAAE,EAAE,iBAAiB;wBACrB,IAAI,EAAE,aAAa;wBACnB,KAAK,EAAE,EAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,EAAC;qBACtD,CAAC;gBACF,UAAU,EAAE,UAAU;gBACtB,KAAK,EAAE,EAAC,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAC;aAC5C,CAAC;iBACD,qBAAqB,CAAC;gBACrB,OAAO,EAAE,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAC,CAAC;gBACxD,UAAU,EAAE,UAAU;gBACtB,KAAK,EAAE,EAAC,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAC;aAC5C,CAAC,CAAC;YAEL,MAAM,MAAM,GAAG,MAAM,aAAa,CAChC,YAAY,CACV,OAA6C,EAC7C,4CAA4C,EAC5C,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAC3B,CACF,CAAC;YAEF,8BAA8B;YAC9B,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,cAAc,CAAC,CAAC;YACjF,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAEpC,iDAAiD;YACjD,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,cAAc,EAAE,CAAC;gBACxD,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAA4B,CAAC;gBAC1F,MAAM,IAAI,GAAG,YAAY,CAAC,WAAW,CAAmC,CAAC;gBACzE,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAE7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAC,CAAC,SAAS,CAA6B,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC7F,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAE1C,iCAAiC;gBACjC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;oBACvB,MAAM,CAAE,GAAG,CAAC,SAAS,CAA6B,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC7E,CAAC;YACH,CAAC;YAED,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;QAC7B,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,2EAA2E;IAC3E,0DAA0D;IAC1D,2EAA2E;IAE3E,QAAQ,CAAC,8CAA8C,EAAE,GAAG,EAAE;QAC5D,EAAE,CAAC,mFAAmF,EAAE,KAAK,IAAI,EAAE;YACjG,MAAM,aAAa,GAAG,iBAAiB,CAAC;gBACtC,WAAW,EAAE;oBACX,WAAW,EAAE;wBACX,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC;4BAC1B,WAAW,EAAE,uBAAuB;4BACpC,UAAU,EAAE;gCACV,IAAI,EAAE,QAAQ;gCACd,UAAU,EAAE;oCACV,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC;oCACzB,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC;oCACzB,UAAU,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC;iCAC7B;gCACD,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC;6BAC/C;yBACF,CAAC;wBACF,aAAa,EAAE;;;;;;;;;;;;CAY1B;wBACW,6CAA6C;wBAC7C,YAAY,EAAE,aAAa;qBAC5B;iBACF;aACF,CAAC,CAAC;YAEH,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,EAAC,SAAS,EAAE,aAAa,EAAC,CAAC,CAAC;gBAExD,+CAA+C;gBAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;gBAC3E,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBAC9B,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;wBAChC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;oBAC7B,CAAC;gBACH,CAAC;gBAED,MAAM,EAAC,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAC,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;gBAC7F,MAAM,EAAC,YAAY,EAAC,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;gBAEhE,MAAM,OAAO,GAAG,YAAY,CAAC;oBAC3B,IAAI;oBACJ,MAAM,EAAE,MAAM;oBACd,SAAS,EAAE,EAAE;oBACb,WAAW,EAAE,KAAK;iBACnB,CAAC,CAAC;gBAEH,MAAM,OAAO,GAAG;oBACd,EAAE,EAAE,yBAAyB;oBAC7B,OAAO;oBACP,KAAK,EAAE,UAAU;oBACjB,mBAAmB,EAAE,EAAE;oBACvB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;oBACrB,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE;oBAC1B,eAAe,EAAE,IAAI,eAAe,EAAE;oBACtC,aAAa,EAAE,oBAAoB,CAAC,OAAO,CAAC;iBAC7C,CAAC;gBAEF,6BAA6B;gBAC7B,QAAQ;qBACL,qBAAqB,CAAC;oBACrB,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,UAAU;4BAChB,EAAE,EAAE,aAAa;4BACjB,IAAI,EAAE,aAAa;4BACnB,KAAK,EAAE,EAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAC;yBAC5D,CAAC;oBACF,UAAU,EAAE,UAAU;oBACtB,KAAK,EAAE,EAAC,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAC;iBAC5C,CAAC;qBACD,qBAAqB,CAAC;oBACrB,OAAO,EAAE,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,EAAC,CAAC;oBAClE,UAAU,EAAE,UAAU;oBACtB,KAAK,EAAE,EAAC,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAC;iBAC5C,CAAC,CAAC;gBAEL,MAAM,MAAM,GAAG,MAAM,aAAa,CAChC,YAAY,CACV,OAA6C,EAC7C,eAAe,EACf,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAC3B,CACF,CAAC;gBAEF,yBAAyB;gBACzB,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,aAAa,CAAC,CAAC;gBAC/E,MAAM,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACnC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,aAAa,EAAE,CAAC;oBACtD,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACtD,CAAC;gBAED,qBAAqB;gBACrB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,cAAc,CAAC,CAAC;gBACjF,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAEpC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,cAAc,EAAE,CAAC;oBACxD,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAE9C,oEAAoE;oBACpE,+DAA+D;oBAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAA4B,CAAC;oBACrF,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;wBACtB,OAAO,EAAE,SAAS;wBAClB,UAAU,EAAE,SAAS;wBACrB,OAAO,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAC;qBAC1C,CAAC,CAAC;gBACL,CAAC;gBAED,sCAAsC;gBACtC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,SAAS,CAAC,CAAC;gBAC3E,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;gBAC7C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACjE,CAAC;oBAAS,CAAC;gBACT,MAAM,CAAC,aAAa,EAAE,EAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC;YACxD,CAAC;QACH,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,2EAA2E;IAC3E,iEAAiE;IACjE,2EAA2E;IAE3E,QAAQ,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACzD,IAAI,UAAkB,CAAC;QACvB,IAAI,QAAgB,CAAC;QACrB,IAAI,eAA8D,CAAC;QACnE,IAAI,YAAoB,CAAC;QACzB,IAAI,cAAsB,CAAC;QAE3B,SAAS,CAAC,KAAK,IAAI,EAAE;YACnB,0DAA0D;YAC1D,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBAClC,UAAU,GAAG,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;oBACrC,eAAe,GAAG,GAAG,CAAC,OAAO,CAAC;oBAC9B,YAAY,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;oBAC7B,cAAc,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;oBAClC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAC,cAAc,EAAE,kBAAkB,EAAC,CAAC,CAAC;oBACzD,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAC,KAAK,EAAE,CAAC,EAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;gBACxE,CAAC,CAAC,CAAC;gBACH,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE;oBACrC,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;oBAClC,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;wBACrC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;oBACvB,CAAC;oBACD,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,GAAG,EAAE;YACZ,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;YACpF,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC;YAExC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,EAAC,SAAS,EAAE,WAAW,EAAC,CAAC,CAAC;gBACtD,MAAM,EAAC,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAC,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;gBAC7F,MAAM,EAAC,YAAY,EAAC,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;gBAEhE,MAAM,OAAO,GAAG,YAAY,CAAC;oBAC3B,IAAI;oBACJ,MAAM,EAAE,MAAM;oBACd,SAAS,EAAE,EAAE;oBACb,WAAW,EAAE,KAAK;iBACnB,CAAC,CAAC;gBAEH,kEAAkE;gBAClE,MAAM,cAAc,GAAG;oBACrB,GAAG,EAAE;wBACH,QAAQ,EAAE,oBAAoB,QAAQ,EAAE;wBACxC,eAAe,EAAE;4BACf,IAAI,EAAE;gCACJ,EAAC,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,2BAA2B,EAAC;gCACtE,EAAC,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,cAAc,EAAC;6BAC5D;yBACF;qBACF;iBACF,CAAC;gBAEF,MAAM,OAAO,GAAG;oBACd,EAAE,EAAE,kBAAkB;oBACtB,OAAO,EAAE,EAAC,GAAG,OAAO,EAAE,cAAc,EAAC;oBACrC,KAAK,EAAE,UAAU;oBACjB,mBAAmB,EAAE,EAAE;oBACvB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;oBACrB,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE;oBAC1B,eAAe,EAAE,IAAI,eAAe,EAAE;oBACtC,aAAa,EAAE,oBAAoB,CAAC,OAAO,CAAC;iBAC7C,CAAC;gBAEF,yBAAyB;gBACzB,QAAQ;qBACL,qBAAqB,CAAC;oBACrB,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,UAAU;4BAChB,EAAE,EAAE,YAAY;4BAChB,IAAI,EAAE,SAAS;4BACf,KAAK,EAAE;gCACL,UAAU,EAAE,KAAK;gCACjB,MAAM,EAAE,KAAK;gCACb,QAAQ,EAAE,YAAY;gCACtB,MAAM,EAAE,MAAM;gCACd,MAAM,EAAE,EAAC,MAAM,EAAE,QAAQ,EAAC;6BAC3B;yBACF,CAAC;oBACF,UAAU,EAAE,UAAU;oBACtB,KAAK,EAAE,EAAC,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAC;iBAC5C,CAAC;qBACD,qBAAqB,CAAC;oBACrB,OAAO,EAAE,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAC,CAAC;oBAChD,UAAU,EAAE,UAAU;oBACtB,KAAK,EAAE,EAAC,WAAW,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAC;iBAC5C,CAAC,CAAC;gBAEL,MAAM,MAAM,GAAG,MAAM,aAAa,CAChC,YAAY,CACV,OAA6C,EAC7C,4BAA4B,EAC5B,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAC3B,CACF,CAAC;gBAEF,wBAAwB;gBACxB,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,aAAa,CAAC,CAAC;gBAC/E,MAAM,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACnC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,aAAa,EAAE,CAAC;oBACtD,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAClD,CAAC;gBAED,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,cAAc,CAAC,CAAC;gBACjF,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACpC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,cAAc,EAAE,CAAC;oBACxD,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAA4B,CAAC;oBACpF,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAmC,CAAC;oBAChE,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;oBAC9B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACxC,CAAC;gBAED,uDAAuD;gBACvD,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACnC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;gBACtD,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;gBAC3E,MAAM,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAChE,MAAM,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAEjE,qBAAqB;gBACrB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACjE,CAAC;oBAAS,CAAC;gBACT,MAAM,CAAC,WAAW,EAAE,EAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC;YACtD,CAAC;QACH,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,33 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Amodal Labs, Inc.
4
- * SPDX-License-Identifier: MIT
5
- */
6
- import type { AgentSession } from './agent-types.js';
7
- import type { SSEEvent } from '../types.js';
8
- /**
9
- * Runs an agent turn as a ReAct loop, yielding SSE events.
10
- *
11
- * Uses FailoverProvider for multi-provider support with retry + fallback.
12
- */
13
- export declare function runAgentTurn(session: AgentSession, message: string, signal: AbortSignal): AsyncGenerator<SSEEvent>;
14
- interface ToolResult {
15
- output?: string;
16
- error?: string;
17
- }
18
- /** @internal Exported for testing */
19
- export declare function isAllowedRepoPath(relPath: string): boolean;
20
- /** @internal Exported for testing */
21
- export declare function validateRepoFilePath(session: AgentSession, rawPath: string): {
22
- error: string;
23
- } | {
24
- resolved: string;
25
- relative: string;
26
- };
27
- /** @internal Exported for testing */
28
- export declare function executeReadRepoFile(session: AgentSession, args: Record<string, unknown>): Promise<ToolResult>;
29
- /** @internal Exported for testing */
30
- export declare function executeWriteRepoFile(session: AgentSession, args: Record<string, unknown>): Promise<ToolResult>;
31
- /** @internal Exported for testing */
32
- export declare function executeDeleteRepoFile(session: AgentSession, args: Record<string, unknown>): Promise<ToolResult>;
33
- export {};