@elizaos/autonomous 2.0.0-alpha.73 → 2.0.0-alpha.74

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 (1915) hide show
  1. package/package.json +912 -202
  2. package/packages/autonomous/src/actions/emote.d.ts +14 -0
  3. package/packages/autonomous/src/actions/emote.d.ts.map +1 -0
  4. package/packages/autonomous/src/actions/emote.js +91 -0
  5. package/packages/autonomous/src/actions/restart.d.ts +19 -0
  6. package/packages/autonomous/src/actions/restart.d.ts.map +1 -0
  7. package/packages/autonomous/src/actions/restart.js +86 -0
  8. package/packages/autonomous/src/actions/send-message.d.ts +3 -0
  9. package/packages/autonomous/src/actions/send-message.d.ts.map +1 -0
  10. package/packages/autonomous/src/actions/send-message.js +144 -0
  11. package/packages/autonomous/src/actions/stream-control.d.ts +15 -0
  12. package/packages/autonomous/src/actions/stream-control.d.ts.map +1 -0
  13. package/packages/autonomous/src/actions/stream-control.js +357 -0
  14. package/packages/autonomous/src/actions/switch-stream-source.d.ts +16 -0
  15. package/packages/autonomous/src/actions/switch-stream-source.d.ts.map +1 -0
  16. package/packages/autonomous/src/actions/switch-stream-source.js +94 -0
  17. package/packages/autonomous/src/actions/terminal.d.ts +14 -0
  18. package/packages/autonomous/src/actions/terminal.d.ts.map +1 -0
  19. package/packages/autonomous/src/actions/terminal.js +154 -0
  20. package/packages/autonomous/src/api/agent-admin-routes.d.ts +38 -0
  21. package/packages/autonomous/src/api/agent-admin-routes.d.ts.map +1 -0
  22. package/packages/autonomous/src/api/agent-admin-routes.js +93 -0
  23. package/packages/autonomous/src/api/agent-lifecycle-routes.d.ts +16 -0
  24. package/packages/autonomous/src/api/agent-lifecycle-routes.d.ts.map +1 -0
  25. package/packages/autonomous/src/api/agent-lifecycle-routes.js +80 -0
  26. package/packages/autonomous/src/api/agent-model.d.ts +12 -0
  27. package/packages/autonomous/src/api/agent-model.d.ts.map +1 -0
  28. package/packages/autonomous/src/api/agent-model.js +123 -0
  29. package/packages/autonomous/src/api/agent-transfer-routes.d.ts +16 -0
  30. package/packages/autonomous/src/api/agent-transfer-routes.d.ts.map +1 -0
  31. package/packages/autonomous/src/api/agent-transfer-routes.js +124 -0
  32. package/packages/autonomous/src/api/apps-routes.d.ts +19 -0
  33. package/packages/autonomous/src/api/apps-routes.d.ts.map +1 -0
  34. package/packages/autonomous/src/api/apps-routes.js +128 -0
  35. package/packages/autonomous/src/api/auth-routes.d.ts +11 -0
  36. package/packages/autonomous/src/api/auth-routes.d.ts.map +1 -0
  37. package/packages/autonomous/src/api/auth-routes.js +54 -0
  38. package/packages/autonomous/src/api/bsc-trade.d.ts +34 -0
  39. package/packages/autonomous/src/api/bsc-trade.d.ts.map +1 -0
  40. package/packages/autonomous/src/api/bsc-trade.js +567 -0
  41. package/packages/autonomous/src/api/bug-report-routes.d.ts +7 -0
  42. package/packages/autonomous/src/api/bug-report-routes.d.ts.map +1 -0
  43. package/packages/autonomous/src/api/bug-report-routes.js +124 -0
  44. package/packages/autonomous/src/api/character-routes.d.ts +50 -0
  45. package/packages/autonomous/src/api/character-routes.d.ts.map +1 -0
  46. package/packages/autonomous/src/api/character-routes.js +302 -0
  47. package/packages/autonomous/src/api/cloud-billing-routes.d.ts +14 -0
  48. package/packages/autonomous/src/api/cloud-billing-routes.d.ts.map +1 -0
  49. package/packages/autonomous/src/api/cloud-billing-routes.js +400 -0
  50. package/packages/autonomous/src/api/cloud-compat-routes.d.ts +15 -0
  51. package/packages/autonomous/src/api/cloud-compat-routes.d.ts.map +1 -0
  52. package/packages/autonomous/src/api/cloud-compat-routes.js +131 -0
  53. package/packages/autonomous/src/api/cloud-routes.d.ts +62 -0
  54. package/packages/autonomous/src/api/cloud-routes.d.ts.map +1 -0
  55. package/packages/autonomous/src/api/cloud-routes.js +339 -0
  56. package/packages/autonomous/src/api/cloud-status-routes.d.ts +15 -0
  57. package/packages/autonomous/src/api/cloud-status-routes.d.ts.map +1 -0
  58. package/packages/autonomous/src/api/cloud-status-routes.js +165 -0
  59. package/packages/autonomous/src/api/compat-utils.d.ts +49 -0
  60. package/packages/autonomous/src/api/compat-utils.d.ts.map +1 -0
  61. package/packages/autonomous/src/api/compat-utils.js +126 -0
  62. package/packages/autonomous/src/api/connector-health.d.ts +34 -0
  63. package/packages/autonomous/src/api/connector-health.d.ts.map +1 -0
  64. package/packages/autonomous/src/api/connector-health.js +109 -0
  65. package/packages/autonomous/src/api/coordinator-wiring.d.ts +46 -0
  66. package/packages/autonomous/src/api/coordinator-wiring.d.ts.map +1 -0
  67. package/packages/autonomous/src/api/coordinator-wiring.js +101 -0
  68. package/packages/autonomous/src/api/credit-detection.d.ts +9 -0
  69. package/packages/autonomous/src/api/credit-detection.d.ts.map +1 -0
  70. package/packages/autonomous/src/api/credit-detection.js +41 -0
  71. package/packages/autonomous/src/api/database.d.ts +33 -0
  72. package/packages/autonomous/src/api/database.d.ts.map +1 -0
  73. package/packages/autonomous/src/api/database.js +1019 -0
  74. package/packages/autonomous/src/api/diagnostics-routes.d.ts +46 -0
  75. package/packages/autonomous/src/api/diagnostics-routes.d.ts.map +1 -0
  76. package/packages/autonomous/src/api/diagnostics-routes.js +241 -0
  77. package/packages/autonomous/src/api/drop-service.d.ts +26 -0
  78. package/packages/autonomous/src/api/drop-service.d.ts.map +1 -0
  79. package/packages/autonomous/src/api/drop-service.js +134 -0
  80. package/packages/autonomous/src/api/early-logs.d.ts +29 -0
  81. package/packages/autonomous/src/api/early-logs.d.ts.map +1 -0
  82. package/packages/autonomous/src/api/early-logs.js +96 -0
  83. package/packages/autonomous/src/api/http-helpers.d.ts +50 -0
  84. package/packages/autonomous/src/api/http-helpers.d.ts.map +1 -0
  85. package/packages/autonomous/src/api/http-helpers.js +145 -0
  86. package/packages/autonomous/src/api/index.d.ts +62 -0
  87. package/packages/autonomous/src/api/index.d.ts.map +1 -0
  88. package/packages/autonomous/src/api/index.js +60 -0
  89. package/packages/autonomous/src/api/knowledge-routes.d.ts +23 -0
  90. package/packages/autonomous/src/api/knowledge-routes.d.ts.map +1 -0
  91. package/packages/autonomous/src/api/knowledge-routes.js +887 -0
  92. package/packages/autonomous/src/api/knowledge-service-loader.d.ts +51 -0
  93. package/packages/autonomous/src/api/knowledge-service-loader.d.ts.map +1 -0
  94. package/packages/autonomous/src/api/knowledge-service-loader.js +34 -0
  95. package/packages/autonomous/src/api/memory-bounds.d.ts +51 -0
  96. package/packages/autonomous/src/api/memory-bounds.d.ts.map +1 -0
  97. package/packages/autonomous/src/api/memory-bounds.js +81 -0
  98. package/packages/autonomous/src/api/memory-routes.d.ts +9 -0
  99. package/packages/autonomous/src/api/memory-routes.d.ts.map +1 -0
  100. package/packages/autonomous/src/api/memory-routes.js +241 -0
  101. package/packages/autonomous/src/api/merkle-tree.d.ts +90 -0
  102. package/packages/autonomous/src/api/merkle-tree.d.ts.map +1 -0
  103. package/packages/autonomous/src/api/merkle-tree.js +174 -0
  104. package/packages/autonomous/src/api/models-routes.d.ts +14 -0
  105. package/packages/autonomous/src/api/models-routes.d.ts.map +1 -0
  106. package/packages/autonomous/src/api/models-routes.js +37 -0
  107. package/packages/autonomous/src/api/nfa-routes.d.ts +5 -0
  108. package/packages/autonomous/src/api/nfa-routes.d.ts.map +1 -0
  109. package/packages/autonomous/src/api/nfa-routes.js +125 -0
  110. package/packages/autonomous/src/api/nft-verify.d.ts +35 -0
  111. package/packages/autonomous/src/api/nft-verify.d.ts.map +1 -0
  112. package/packages/autonomous/src/api/nft-verify.js +130 -0
  113. package/packages/autonomous/src/api/og-tracker.d.ts +28 -0
  114. package/packages/autonomous/src/api/og-tracker.d.ts.map +1 -0
  115. package/packages/autonomous/src/api/og-tracker.js +60 -0
  116. package/packages/autonomous/src/api/parse-action-block.d.ts +36 -0
  117. package/packages/autonomous/src/api/parse-action-block.d.ts.map +1 -0
  118. package/packages/autonomous/src/api/parse-action-block.js +110 -0
  119. package/packages/autonomous/src/api/permissions-routes.d.ts +32 -0
  120. package/packages/autonomous/src/api/permissions-routes.d.ts.map +1 -0
  121. package/packages/autonomous/src/api/permissions-routes.js +149 -0
  122. package/packages/autonomous/src/api/plugin-validation.d.ts +86 -0
  123. package/packages/autonomous/src/api/plugin-validation.d.ts.map +1 -0
  124. package/packages/autonomous/src/api/plugin-validation.js +259 -0
  125. package/packages/autonomous/src/api/provider-switch-config.d.ts +37 -0
  126. package/packages/autonomous/src/api/provider-switch-config.d.ts.map +1 -0
  127. package/packages/autonomous/src/api/provider-switch-config.js +317 -0
  128. package/packages/autonomous/src/api/registry-routes.d.ts +26 -0
  129. package/packages/autonomous/src/api/registry-routes.d.ts.map +1 -0
  130. package/packages/autonomous/src/api/registry-routes.js +90 -0
  131. package/packages/autonomous/src/api/registry-service.d.ts +77 -0
  132. package/packages/autonomous/src/api/registry-service.d.ts.map +1 -0
  133. package/packages/autonomous/src/api/registry-service.js +190 -0
  134. package/packages/autonomous/src/api/route-helpers.d.ts +16 -0
  135. package/packages/autonomous/src/api/route-helpers.d.ts.map +1 -0
  136. package/packages/autonomous/src/api/route-helpers.js +1 -0
  137. package/packages/autonomous/src/api/sandbox-routes.d.ts +12 -0
  138. package/packages/autonomous/src/api/sandbox-routes.d.ts.map +1 -0
  139. package/packages/autonomous/src/api/sandbox-routes.js +1334 -0
  140. package/packages/autonomous/src/api/server.d.ts +418 -0
  141. package/packages/autonomous/src/api/server.d.ts.map +1 -0
  142. package/packages/autonomous/src/api/server.js +13564 -0
  143. package/packages/autonomous/src/api/signal-routes.d.ts +39 -0
  144. package/packages/autonomous/src/api/signal-routes.d.ts.map +1 -0
  145. package/packages/autonomous/src/api/signal-routes.js +168 -0
  146. package/packages/autonomous/src/api/stream-persistence.d.ts +64 -0
  147. package/packages/autonomous/src/api/stream-persistence.d.ts.map +1 -0
  148. package/packages/autonomous/src/api/stream-persistence.js +231 -0
  149. package/packages/autonomous/src/api/stream-route-state.d.ts +50 -0
  150. package/packages/autonomous/src/api/stream-route-state.d.ts.map +1 -0
  151. package/packages/autonomous/src/api/stream-route-state.js +1 -0
  152. package/packages/autonomous/src/api/stream-routes.d.ts +45 -0
  153. package/packages/autonomous/src/api/stream-routes.d.ts.map +1 -0
  154. package/packages/autonomous/src/api/stream-routes.js +809 -0
  155. package/packages/autonomous/src/api/stream-voice-routes.d.ts +36 -0
  156. package/packages/autonomous/src/api/stream-voice-routes.d.ts.map +1 -0
  157. package/packages/autonomous/src/api/stream-voice-routes.js +133 -0
  158. package/packages/autonomous/src/api/streaming-text.d.ts +9 -0
  159. package/packages/autonomous/src/api/streaming-text.d.ts.map +1 -0
  160. package/packages/autonomous/src/api/streaming-text.js +85 -0
  161. package/packages/autonomous/src/api/streaming-types.d.ts +30 -0
  162. package/packages/autonomous/src/api/streaming-types.d.ts.map +1 -0
  163. package/packages/autonomous/src/api/streaming-types.js +1 -0
  164. package/packages/autonomous/src/api/subscription-routes.d.ts +20 -0
  165. package/packages/autonomous/src/api/subscription-routes.d.ts.map +1 -0
  166. package/packages/autonomous/src/api/subscription-routes.js +191 -0
  167. package/packages/autonomous/src/api/terminal-run-limits.d.ts +5 -0
  168. package/packages/autonomous/src/api/terminal-run-limits.d.ts.map +1 -0
  169. package/packages/autonomous/src/api/terminal-run-limits.js +22 -0
  170. package/packages/autonomous/src/api/training-backend-check.d.ts +8 -0
  171. package/packages/autonomous/src/api/training-backend-check.d.ts.map +1 -0
  172. package/packages/autonomous/src/api/training-backend-check.js +28 -0
  173. package/packages/autonomous/src/api/training-routes.d.ts +44 -0
  174. package/packages/autonomous/src/api/training-routes.d.ts.map +1 -0
  175. package/packages/autonomous/src/api/training-routes.js +195 -0
  176. package/packages/autonomous/src/api/training-service-like.d.ts +38 -0
  177. package/packages/autonomous/src/api/training-service-like.d.ts.map +1 -0
  178. package/packages/autonomous/src/api/training-service-like.js +1 -0
  179. package/packages/autonomous/src/api/trajectory-routes.d.ts +17 -0
  180. package/packages/autonomous/src/api/trajectory-routes.d.ts.map +1 -0
  181. package/packages/autonomous/src/api/trajectory-routes.js +377 -0
  182. package/packages/autonomous/src/api/trigger-routes.d.ts +72 -0
  183. package/packages/autonomous/src/api/trigger-routes.d.ts.map +1 -0
  184. package/packages/autonomous/src/api/trigger-routes.js +268 -0
  185. package/packages/autonomous/src/api/twitter-verify.d.ts +25 -0
  186. package/packages/autonomous/src/api/twitter-verify.d.ts.map +1 -0
  187. package/packages/autonomous/src/api/twitter-verify.js +168 -0
  188. package/packages/autonomous/src/api/tx-service.d.ts +47 -0
  189. package/packages/autonomous/src/api/tx-service.d.ts.map +1 -0
  190. package/packages/autonomous/src/api/tx-service.js +156 -0
  191. package/packages/autonomous/src/api/wallet-dex-prices.d.ts +43 -0
  192. package/packages/autonomous/src/api/wallet-dex-prices.d.ts.map +1 -0
  193. package/packages/autonomous/src/api/wallet-dex-prices.js +149 -0
  194. package/packages/autonomous/src/api/wallet-evm-balance.d.ts +65 -0
  195. package/packages/autonomous/src/api/wallet-evm-balance.d.ts.map +1 -0
  196. package/packages/autonomous/src/api/wallet-evm-balance.js +663 -0
  197. package/packages/autonomous/src/api/wallet-routes.d.ts +35 -0
  198. package/packages/autonomous/src/api/wallet-routes.d.ts.map +1 -0
  199. package/packages/autonomous/src/api/wallet-routes.js +349 -0
  200. package/packages/autonomous/src/api/wallet-rpc.d.ts +61 -0
  201. package/packages/autonomous/src/api/wallet-rpc.d.ts.map +1 -0
  202. package/packages/autonomous/src/api/wallet-rpc.js +367 -0
  203. package/packages/autonomous/src/api/wallet-trading-profile.d.ts +51 -0
  204. package/packages/autonomous/src/api/wallet-trading-profile.d.ts.map +1 -0
  205. package/packages/autonomous/src/api/wallet-trading-profile.js +547 -0
  206. package/packages/autonomous/src/api/wallet.d.ts +32 -0
  207. package/packages/autonomous/src/api/wallet.d.ts.map +1 -0
  208. package/packages/autonomous/src/api/wallet.js +553 -0
  209. package/packages/autonomous/src/api/whatsapp-routes.d.ts +39 -0
  210. package/packages/autonomous/src/api/whatsapp-routes.d.ts.map +1 -0
  211. package/packages/autonomous/src/api/whatsapp-routes.js +182 -0
  212. package/packages/autonomous/src/api/zip-utils.d.ts +8 -0
  213. package/packages/autonomous/src/api/zip-utils.d.ts.map +1 -0
  214. package/packages/autonomous/src/api/zip-utils.js +115 -0
  215. package/packages/autonomous/src/auth/anthropic.d.ts +25 -0
  216. package/packages/autonomous/src/auth/anthropic.d.ts.map +1 -0
  217. package/packages/autonomous/src/auth/anthropic.js +40 -0
  218. package/packages/autonomous/src/auth/apply-stealth.d.ts +8 -0
  219. package/packages/autonomous/src/auth/apply-stealth.d.ts.map +1 -0
  220. package/packages/autonomous/src/auth/apply-stealth.js +35 -0
  221. package/packages/autonomous/src/auth/claude-code-stealth.d.ts +2 -0
  222. package/packages/autonomous/src/auth/claude-code-stealth.d.ts.map +1 -0
  223. package/packages/autonomous/src/auth/claude-code-stealth.js +104 -0
  224. package/packages/autonomous/src/auth/credentials.d.ts +55 -0
  225. package/packages/autonomous/src/auth/credentials.d.ts.map +1 -0
  226. package/packages/autonomous/src/auth/credentials.js +182 -0
  227. package/packages/autonomous/src/auth/index.d.ts +7 -0
  228. package/packages/autonomous/src/auth/index.d.ts.map +1 -0
  229. package/packages/autonomous/src/auth/index.js +3 -0
  230. package/packages/autonomous/src/auth/openai-codex.d.ts +27 -0
  231. package/packages/autonomous/src/auth/openai-codex.d.ts.map +1 -0
  232. package/packages/autonomous/src/auth/openai-codex.js +72 -0
  233. package/packages/autonomous/src/auth/types.d.ts +18 -0
  234. package/packages/autonomous/src/auth/types.d.ts.map +1 -0
  235. package/packages/autonomous/src/auth/types.js +8 -0
  236. package/packages/autonomous/src/awareness/registry.d.ts +27 -0
  237. package/packages/autonomous/src/awareness/registry.d.ts.map +1 -0
  238. package/packages/autonomous/src/awareness/registry.js +161 -0
  239. package/packages/autonomous/src/benchmark-server.d.ts +2 -0
  240. package/packages/autonomous/src/benchmark-server.d.ts.map +1 -0
  241. package/packages/autonomous/src/benchmark-server.js +773 -0
  242. package/packages/autonomous/src/bin.d.ts +3 -0
  243. package/packages/autonomous/src/bin.d.ts.map +1 -0
  244. package/packages/autonomous/src/bin.js +6 -0
  245. package/packages/autonomous/src/cli/index.d.ts +2 -0
  246. package/packages/autonomous/src/cli/index.d.ts.map +1 -0
  247. package/packages/autonomous/src/cli/index.js +40 -0
  248. package/packages/autonomous/src/cli/parse-duration.d.ts +5 -0
  249. package/packages/autonomous/src/cli/parse-duration.d.ts.map +1 -0
  250. package/packages/autonomous/src/cli/parse-duration.js +27 -0
  251. package/packages/autonomous/src/cloud/auth.d.ts +19 -0
  252. package/packages/autonomous/src/cloud/auth.d.ts.map +1 -0
  253. package/packages/autonomous/src/cloud/auth.js +107 -0
  254. package/packages/autonomous/src/cloud/backup.d.ts +18 -0
  255. package/packages/autonomous/src/cloud/backup.d.ts.map +1 -0
  256. package/packages/autonomous/src/cloud/backup.js +42 -0
  257. package/packages/autonomous/src/cloud/base-url.d.ts +3 -0
  258. package/packages/autonomous/src/cloud/base-url.d.ts.map +1 -0
  259. package/packages/autonomous/src/cloud/base-url.js +40 -0
  260. package/packages/autonomous/src/cloud/bridge-client.d.ts +56 -0
  261. package/packages/autonomous/src/cloud/bridge-client.d.ts.map +1 -0
  262. package/packages/autonomous/src/cloud/bridge-client.js +190 -0
  263. package/packages/autonomous/src/cloud/cloud-manager.d.ts +32 -0
  264. package/packages/autonomous/src/cloud/cloud-manager.d.ts.map +1 -0
  265. package/packages/autonomous/src/cloud/cloud-manager.js +119 -0
  266. package/packages/autonomous/src/cloud/cloud-proxy.d.ts +20 -0
  267. package/packages/autonomous/src/cloud/cloud-proxy.d.ts.map +1 -0
  268. package/packages/autonomous/src/cloud/cloud-proxy.js +34 -0
  269. package/packages/autonomous/src/cloud/index.d.ts +7 -0
  270. package/packages/autonomous/src/cloud/index.d.ts.map +1 -0
  271. package/packages/autonomous/src/cloud/index.js +6 -0
  272. package/packages/autonomous/src/cloud/reconnect.d.ts +26 -0
  273. package/packages/autonomous/src/cloud/reconnect.d.ts.map +1 -0
  274. package/packages/autonomous/src/cloud/reconnect.js +86 -0
  275. package/packages/autonomous/src/cloud/validate-url.d.ts +2 -0
  276. package/packages/autonomous/src/cloud/validate-url.d.ts.map +1 -0
  277. package/packages/autonomous/src/cloud/validate-url.js +162 -0
  278. package/packages/autonomous/src/config/character-schema.d.ts +25 -0
  279. package/packages/autonomous/src/config/character-schema.d.ts.map +1 -0
  280. package/packages/autonomous/src/config/character-schema.js +39 -0
  281. package/packages/autonomous/src/config/config.d.ts +6 -0
  282. package/packages/autonomous/src/config/config.d.ts.map +1 -0
  283. package/packages/autonomous/src/config/config.js +118 -0
  284. package/packages/autonomous/src/config/env-vars.d.ts +3 -0
  285. package/packages/autonomous/src/config/env-vars.d.ts.map +1 -0
  286. package/packages/autonomous/src/config/env-vars.js +76 -0
  287. package/packages/autonomous/src/config/includes.d.ts +26 -0
  288. package/packages/autonomous/src/config/includes.d.ts.map +1 -0
  289. package/packages/autonomous/src/config/includes.js +148 -0
  290. package/packages/autonomous/src/config/index.d.ts +16 -0
  291. package/packages/autonomous/src/config/index.d.ts.map +1 -0
  292. package/packages/autonomous/src/config/object-utils.d.ts +2 -0
  293. package/packages/autonomous/src/config/object-utils.d.ts.map +1 -0
  294. package/packages/autonomous/src/config/object-utils.js +6 -0
  295. package/packages/autonomous/src/config/paths.d.ts +13 -0
  296. package/packages/autonomous/src/config/paths.d.ts.map +1 -0
  297. package/packages/autonomous/src/config/paths.js +67 -0
  298. package/packages/autonomous/src/config/plugin-auto-enable.d.ts +16 -0
  299. package/packages/autonomous/src/config/plugin-auto-enable.d.ts.map +1 -0
  300. package/packages/autonomous/src/config/plugin-auto-enable.js +384 -0
  301. package/packages/autonomous/src/config/schema.d.ts +87 -0
  302. package/packages/autonomous/src/config/schema.d.ts.map +1 -0
  303. package/packages/autonomous/src/config/schema.js +928 -0
  304. package/packages/autonomous/src/config/telegram-custom-commands.d.ts +25 -0
  305. package/packages/autonomous/src/config/telegram-custom-commands.d.ts.map +1 -0
  306. package/packages/autonomous/src/config/telegram-custom-commands.js +71 -0
  307. package/packages/autonomous/src/config/types.agent-defaults.d.ts +331 -0
  308. package/packages/autonomous/src/config/types.agent-defaults.d.ts.map +1 -0
  309. package/packages/autonomous/src/config/types.agent-defaults.js +1 -0
  310. package/packages/autonomous/src/config/types.agents.d.ts +110 -0
  311. package/packages/autonomous/src/config/types.agents.d.ts.map +1 -0
  312. package/packages/autonomous/src/config/types.agents.js +1 -0
  313. package/packages/autonomous/src/config/types.d.ts +8 -0
  314. package/packages/autonomous/src/config/types.d.ts.map +1 -0
  315. package/packages/autonomous/src/config/types.eliza.d.ts +636 -0
  316. package/packages/autonomous/src/config/types.eliza.d.ts.map +1 -0
  317. package/packages/autonomous/src/config/types.eliza.js +1 -0
  318. package/packages/autonomous/src/config/types.gateway.d.ts +216 -0
  319. package/packages/autonomous/src/config/types.gateway.d.ts.map +1 -0
  320. package/packages/autonomous/src/config/types.gateway.js +1 -0
  321. package/packages/autonomous/src/config/types.hooks.d.ts +107 -0
  322. package/packages/autonomous/src/config/types.hooks.d.ts.map +1 -0
  323. package/packages/autonomous/src/config/types.hooks.js +1 -0
  324. package/packages/autonomous/src/config/types.messages.d.ts +176 -0
  325. package/packages/autonomous/src/config/types.messages.d.ts.map +1 -0
  326. package/packages/autonomous/src/config/types.messages.js +1 -0
  327. package/packages/autonomous/src/config/types.tools.d.ts +400 -0
  328. package/packages/autonomous/src/config/types.tools.d.ts.map +1 -0
  329. package/packages/autonomous/src/config/types.tools.js +1 -0
  330. package/packages/autonomous/src/config/zod-schema.agent-runtime.d.ts +1062 -0
  331. package/packages/autonomous/src/config/zod-schema.agent-runtime.d.ts.map +1 -0
  332. package/packages/autonomous/src/config/zod-schema.agent-runtime.js +721 -0
  333. package/packages/autonomous/src/config/zod-schema.core.d.ts +1021 -0
  334. package/packages/autonomous/src/config/zod-schema.core.d.ts.map +1 -0
  335. package/packages/autonomous/src/config/zod-schema.core.js +694 -0
  336. package/packages/autonomous/src/config/zod-schema.d.ts +4817 -0
  337. package/packages/autonomous/src/config/zod-schema.d.ts.map +1 -0
  338. package/packages/autonomous/src/config/zod-schema.hooks.d.ts +88 -0
  339. package/packages/autonomous/src/config/zod-schema.hooks.d.ts.map +1 -0
  340. package/packages/autonomous/src/config/zod-schema.hooks.js +133 -0
  341. package/packages/autonomous/src/config/zod-schema.js +778 -0
  342. package/packages/autonomous/src/config/zod-schema.providers-core.d.ts +2976 -0
  343. package/packages/autonomous/src/config/zod-schema.providers-core.d.ts.map +1 -0
  344. package/packages/autonomous/src/config/zod-schema.providers-core.js +1006 -0
  345. package/packages/autonomous/src/config/zod-schema.session.d.ts +183 -0
  346. package/packages/autonomous/src/config/zod-schema.session.d.ts.map +1 -0
  347. package/packages/autonomous/src/config/zod-schema.session.js +86 -0
  348. package/packages/autonomous/src/contracts/apps.d.ts +42 -0
  349. package/packages/autonomous/src/contracts/apps.d.ts.map +1 -0
  350. package/packages/autonomous/src/contracts/apps.js +4 -0
  351. package/packages/autonomous/src/contracts/awareness.d.ts +38 -0
  352. package/packages/autonomous/src/contracts/awareness.d.ts.map +1 -0
  353. package/packages/autonomous/src/contracts/awareness.js +7 -0
  354. package/packages/autonomous/src/contracts/config.d.ts +146 -0
  355. package/packages/autonomous/src/contracts/config.d.ts.map +1 -0
  356. package/packages/autonomous/src/contracts/config.js +4 -0
  357. package/packages/autonomous/src/contracts/drop.d.ts +20 -0
  358. package/packages/autonomous/src/contracts/drop.d.ts.map +1 -0
  359. package/packages/autonomous/src/contracts/drop.js +4 -0
  360. package/packages/autonomous/src/contracts/index.d.ts +9 -0
  361. package/packages/autonomous/src/contracts/index.d.ts.map +1 -0
  362. package/packages/autonomous/src/contracts/onboarding.d.ts +379 -0
  363. package/packages/autonomous/src/contracts/onboarding.d.ts.map +1 -0
  364. package/packages/autonomous/src/contracts/onboarding.js +290 -0
  365. package/packages/autonomous/src/contracts/permissions.d.ts +35 -0
  366. package/packages/autonomous/src/contracts/permissions.d.ts.map +1 -0
  367. package/packages/autonomous/src/contracts/permissions.js +4 -0
  368. package/packages/autonomous/src/contracts/verification.d.ts +9 -0
  369. package/packages/autonomous/src/contracts/verification.d.ts.map +1 -0
  370. package/packages/autonomous/src/contracts/verification.js +4 -0
  371. package/packages/autonomous/src/contracts/wallet.d.ts +409 -0
  372. package/packages/autonomous/src/contracts/wallet.d.ts.map +1 -0
  373. package/packages/autonomous/src/contracts/wallet.js +60 -0
  374. package/packages/autonomous/src/diagnostics/integration-observability.d.ts +40 -0
  375. package/packages/autonomous/src/diagnostics/integration-observability.d.ts.map +1 -0
  376. package/packages/autonomous/src/diagnostics/integration-observability.js +68 -0
  377. package/packages/autonomous/src/emotes/catalog.d.ts +31 -0
  378. package/packages/autonomous/src/emotes/catalog.d.ts.map +1 -0
  379. package/packages/autonomous/src/emotes/catalog.js +618 -0
  380. package/packages/autonomous/src/hooks/discovery.d.ts +13 -0
  381. package/packages/autonomous/src/hooks/discovery.d.ts.map +1 -0
  382. package/packages/autonomous/src/hooks/discovery.js +184 -0
  383. package/packages/autonomous/src/hooks/eligibility.d.ts +12 -0
  384. package/packages/autonomous/src/hooks/eligibility.d.ts.map +1 -0
  385. package/packages/autonomous/src/hooks/eligibility.js +100 -0
  386. package/packages/autonomous/src/hooks/index.d.ts +3 -0
  387. package/packages/autonomous/src/hooks/index.d.ts.map +1 -0
  388. package/packages/autonomous/src/hooks/index.js +2 -0
  389. package/packages/autonomous/src/hooks/loader.d.ts +34 -0
  390. package/packages/autonomous/src/hooks/loader.d.ts.map +1 -0
  391. package/packages/autonomous/src/hooks/loader.js +176 -0
  392. package/packages/autonomous/src/hooks/registry.d.ts +11 -0
  393. package/packages/autonomous/src/hooks/registry.d.ts.map +1 -0
  394. package/packages/autonomous/src/hooks/registry.js +58 -0
  395. package/packages/autonomous/src/hooks/types.d.ts +104 -0
  396. package/packages/autonomous/src/hooks/types.d.ts.map +1 -0
  397. package/packages/autonomous/src/hooks/types.js +8 -0
  398. package/packages/autonomous/src/index.d.ts +20 -0
  399. package/packages/autonomous/src/index.d.ts.map +1 -0
  400. package/packages/autonomous/src/onboarding-presets.d.ts +74 -0
  401. package/packages/autonomous/src/onboarding-presets.d.ts.map +1 -0
  402. package/packages/autonomous/src/onboarding-presets.js +1305 -0
  403. package/packages/autonomous/src/plugins/custom-rtmp/index.d.ts +12 -0
  404. package/packages/autonomous/src/plugins/custom-rtmp/index.d.ts.map +1 -0
  405. package/packages/autonomous/src/plugins/custom-rtmp/index.js +26 -0
  406. package/packages/autonomous/src/providers/admin-trust.d.ts +4 -0
  407. package/packages/autonomous/src/providers/admin-trust.d.ts.map +1 -0
  408. package/packages/autonomous/src/providers/admin-trust.js +53 -0
  409. package/packages/autonomous/src/providers/session-bridge.d.ts +24 -0
  410. package/packages/autonomous/src/providers/session-bridge.d.ts.map +1 -0
  411. package/packages/autonomous/src/providers/session-bridge.js +85 -0
  412. package/packages/autonomous/src/providers/session-utils.d.ts +20 -0
  413. package/packages/autonomous/src/providers/session-utils.d.ts.map +1 -0
  414. package/packages/autonomous/src/providers/session-utils.js +33 -0
  415. package/packages/autonomous/src/providers/simple-mode.d.ts +4 -0
  416. package/packages/autonomous/src/providers/simple-mode.d.ts.map +1 -0
  417. package/packages/autonomous/src/providers/simple-mode.js +85 -0
  418. package/packages/autonomous/src/providers/ui-catalog.d.ts +3 -0
  419. package/packages/autonomous/src/providers/ui-catalog.d.ts.map +1 -0
  420. package/packages/autonomous/src/providers/ui-catalog.js +123 -0
  421. package/packages/autonomous/src/providers/workspace-provider.d.ts +22 -0
  422. package/packages/autonomous/src/providers/workspace-provider.d.ts.map +1 -0
  423. package/packages/autonomous/src/providers/workspace-provider.js +167 -0
  424. package/packages/autonomous/src/providers/workspace.d.ts +54 -0
  425. package/packages/autonomous/src/providers/workspace.d.ts.map +1 -0
  426. package/packages/autonomous/src/providers/workspace.js +405 -0
  427. package/packages/autonomous/src/runtime/agent-event-service.d.ts +35 -0
  428. package/packages/autonomous/src/runtime/agent-event-service.d.ts.map +1 -0
  429. package/packages/autonomous/src/runtime/agent-event-service.js +16 -0
  430. package/packages/autonomous/src/runtime/cloud-onboarding.d.ts +55 -0
  431. package/packages/autonomous/src/runtime/cloud-onboarding.d.ts.map +1 -0
  432. package/packages/autonomous/src/runtime/cloud-onboarding.js +279 -0
  433. package/packages/autonomous/src/runtime/core-plugins.d.ts +14 -0
  434. package/packages/autonomous/src/runtime/core-plugins.d.ts.map +1 -0
  435. package/packages/autonomous/src/runtime/core-plugins.js +51 -0
  436. package/packages/autonomous/src/runtime/custom-actions.d.ts +40 -0
  437. package/packages/autonomous/src/runtime/custom-actions.d.ts.map +1 -0
  438. package/packages/autonomous/src/runtime/custom-actions.js +454 -0
  439. package/packages/autonomous/src/runtime/eliza-plugin.d.ts +16 -0
  440. package/packages/autonomous/src/runtime/eliza-plugin.d.ts.map +1 -0
  441. package/packages/autonomous/src/runtime/eliza-plugin.js +108 -0
  442. package/packages/autonomous/src/runtime/eliza.d.ts +205 -0
  443. package/packages/autonomous/src/runtime/eliza.d.ts.map +1 -0
  444. package/packages/autonomous/src/runtime/eliza.js +4006 -0
  445. package/packages/autonomous/src/runtime/embedding-presets.d.ts +19 -0
  446. package/packages/autonomous/src/runtime/embedding-presets.d.ts.map +1 -0
  447. package/packages/autonomous/src/runtime/embedding-presets.js +53 -0
  448. package/packages/autonomous/src/runtime/index.d.ts +9 -0
  449. package/packages/autonomous/src/runtime/index.d.ts.map +1 -0
  450. package/packages/autonomous/src/runtime/onboarding-names.d.ts +11 -0
  451. package/packages/autonomous/src/runtime/onboarding-names.d.ts.map +1 -0
  452. package/packages/autonomous/src/runtime/onboarding-names.js +74 -0
  453. package/packages/autonomous/src/runtime/release-plugin-policy.d.ts +20 -0
  454. package/packages/autonomous/src/runtime/release-plugin-policy.d.ts.map +1 -0
  455. package/packages/autonomous/src/runtime/release-plugin-policy.js +87 -0
  456. package/packages/autonomous/src/runtime/restart.d.ts +45 -0
  457. package/packages/autonomous/src/runtime/restart.d.ts.map +1 -0
  458. package/packages/autonomous/src/runtime/restart.js +45 -0
  459. package/packages/autonomous/src/runtime/trajectory-persistence.d.ts +214 -0
  460. package/packages/autonomous/src/runtime/trajectory-persistence.d.ts.map +1 -0
  461. package/packages/autonomous/src/runtime/trajectory-persistence.js +1849 -0
  462. package/packages/autonomous/src/runtime/version.d.ts +2 -0
  463. package/packages/autonomous/src/runtime/version.d.ts.map +1 -0
  464. package/packages/autonomous/src/runtime/version.js +5 -0
  465. package/packages/autonomous/src/security/audit-log.d.ts +49 -0
  466. package/packages/autonomous/src/security/audit-log.d.ts.map +1 -0
  467. package/packages/autonomous/src/security/audit-log.js +161 -0
  468. package/packages/autonomous/src/security/network-policy.d.ts +6 -0
  469. package/packages/autonomous/src/security/network-policy.d.ts.map +1 -0
  470. package/packages/autonomous/src/security/network-policy.js +85 -0
  471. package/packages/autonomous/src/server/index.d.ts +3 -0
  472. package/packages/autonomous/src/server/index.d.ts.map +1 -0
  473. package/packages/autonomous/src/server/index.js +1 -0
  474. package/packages/autonomous/src/services/agent-export.d.ts +100 -0
  475. package/packages/autonomous/src/services/agent-export.d.ts.map +1 -0
  476. package/packages/autonomous/src/services/agent-export.js +729 -0
  477. package/packages/autonomous/src/services/app-manager.d.ts +34 -0
  478. package/packages/autonomous/src/services/app-manager.d.ts.map +1 -0
  479. package/packages/autonomous/src/services/app-manager.js +425 -0
  480. package/packages/autonomous/src/services/browser-capture.d.ts +39 -0
  481. package/packages/autonomous/src/services/browser-capture.d.ts.map +1 -0
  482. package/packages/autonomous/src/services/browser-capture.js +162 -0
  483. package/packages/autonomous/src/services/coding-agent-context.d.ts +310 -0
  484. package/packages/autonomous/src/services/coding-agent-context.d.ts.map +1 -0
  485. package/packages/autonomous/src/services/coding-agent-context.js +281 -0
  486. package/packages/autonomous/src/services/fallback-training-service.d.ts +78 -0
  487. package/packages/autonomous/src/services/fallback-training-service.d.ts.map +1 -0
  488. package/packages/autonomous/src/services/fallback-training-service.js +126 -0
  489. package/packages/autonomous/src/services/index.d.ts +18 -0
  490. package/packages/autonomous/src/services/index.d.ts.map +1 -0
  491. package/packages/autonomous/src/services/mcp-marketplace.d.ts +89 -0
  492. package/packages/autonomous/src/services/mcp-marketplace.d.ts.map +1 -0
  493. package/packages/autonomous/src/services/mcp-marketplace.js +200 -0
  494. package/packages/autonomous/src/services/plugin-manager-types.d.ts +139 -0
  495. package/packages/autonomous/src/services/plugin-manager-types.d.ts.map +1 -0
  496. package/packages/autonomous/src/services/plugin-manager-types.js +18 -0
  497. package/packages/autonomous/src/services/privy-wallets.d.ts +18 -0
  498. package/packages/autonomous/src/services/privy-wallets.d.ts.map +1 -0
  499. package/packages/autonomous/src/services/privy-wallets.js +225 -0
  500. package/packages/autonomous/src/services/registry-client-app-meta.d.ts +6 -0
  501. package/packages/autonomous/src/services/registry-client-app-meta.d.ts.map +1 -0
  502. package/packages/autonomous/src/services/registry-client-app-meta.js +147 -0
  503. package/packages/autonomous/src/services/registry-client-endpoints.d.ts +7 -0
  504. package/packages/autonomous/src/services/registry-client-endpoints.d.ts.map +1 -0
  505. package/packages/autonomous/src/services/registry-client-endpoints.js +183 -0
  506. package/packages/autonomous/src/services/registry-client-local.d.ts +4 -0
  507. package/packages/autonomous/src/services/registry-client-local.d.ts.map +1 -0
  508. package/packages/autonomous/src/services/registry-client-local.js +377 -0
  509. package/packages/autonomous/src/services/registry-client-network.d.ts +9 -0
  510. package/packages/autonomous/src/services/registry-client-network.d.ts.map +1 -0
  511. package/packages/autonomous/src/services/registry-client-network.js +109 -0
  512. package/packages/autonomous/src/services/registry-client-queries.d.ts +15 -0
  513. package/packages/autonomous/src/services/registry-client-queries.d.ts.map +1 -0
  514. package/packages/autonomous/src/services/registry-client-queries.js +150 -0
  515. package/packages/autonomous/src/services/registry-client-types.d.ts +115 -0
  516. package/packages/autonomous/src/services/registry-client-types.d.ts.map +1 -0
  517. package/packages/autonomous/src/services/registry-client-types.js +1 -0
  518. package/packages/autonomous/src/services/registry-client.d.ts +39 -0
  519. package/packages/autonomous/src/services/registry-client.d.ts.map +1 -0
  520. package/packages/autonomous/src/services/registry-client.js +249 -0
  521. package/packages/autonomous/src/services/remote-signing-service.d.ts +58 -0
  522. package/packages/autonomous/src/services/remote-signing-service.d.ts.map +1 -0
  523. package/packages/autonomous/src/services/remote-signing-service.js +185 -0
  524. package/packages/autonomous/src/services/sandbox-engine.d.ts +96 -0
  525. package/packages/autonomous/src/services/sandbox-engine.d.ts.map +1 -0
  526. package/packages/autonomous/src/services/sandbox-engine.js +604 -0
  527. package/packages/autonomous/src/services/sandbox-manager.d.ts +104 -0
  528. package/packages/autonomous/src/services/sandbox-manager.d.ts.map +1 -0
  529. package/packages/autonomous/src/services/sandbox-manager.js +353 -0
  530. package/packages/autonomous/src/services/self-updater.d.ts +21 -0
  531. package/packages/autonomous/src/services/self-updater.d.ts.map +1 -0
  532. package/packages/autonomous/src/services/self-updater.js +162 -0
  533. package/packages/autonomous/src/services/signal-pairing.d.ts +37 -0
  534. package/packages/autonomous/src/services/signal-pairing.d.ts.map +1 -0
  535. package/packages/autonomous/src/services/signal-pairing.js +124 -0
  536. package/packages/autonomous/src/services/signing-policy.d.ts +44 -0
  537. package/packages/autonomous/src/services/signing-policy.d.ts.map +1 -0
  538. package/packages/autonomous/src/services/signing-policy.js +165 -0
  539. package/packages/autonomous/src/services/skill-catalog-client.d.ts +47 -0
  540. package/packages/autonomous/src/services/skill-catalog-client.d.ts.map +1 -0
  541. package/packages/autonomous/src/services/skill-catalog-client.js +130 -0
  542. package/packages/autonomous/src/services/skill-marketplace.d.ts +42 -0
  543. package/packages/autonomous/src/services/skill-marketplace.d.ts.map +1 -0
  544. package/packages/autonomous/src/services/skill-marketplace.js +680 -0
  545. package/packages/autonomous/src/services/stream-manager.d.ts +121 -0
  546. package/packages/autonomous/src/services/stream-manager.d.ts.map +1 -0
  547. package/packages/autonomous/src/services/stream-manager.js +604 -0
  548. package/packages/autonomous/src/services/tts-stream-bridge.d.ts +83 -0
  549. package/packages/autonomous/src/services/tts-stream-bridge.d.ts.map +1 -0
  550. package/packages/autonomous/src/services/tts-stream-bridge.js +349 -0
  551. package/packages/autonomous/src/services/update-checker.d.ts +29 -0
  552. package/packages/autonomous/src/services/update-checker.d.ts.map +1 -0
  553. package/packages/autonomous/src/services/update-checker.js +134 -0
  554. package/packages/autonomous/src/services/version-compat.d.ts +99 -0
  555. package/packages/autonomous/src/services/version-compat.d.ts.map +1 -0
  556. package/packages/autonomous/src/services/version-compat.js +195 -0
  557. package/packages/autonomous/src/services/whatsapp-pairing.d.ts +41 -0
  558. package/packages/autonomous/src/services/whatsapp-pairing.d.ts.map +1 -0
  559. package/packages/autonomous/src/services/whatsapp-pairing.js +209 -0
  560. package/packages/autonomous/src/shared/ui-catalog-prompt.d.ts +52 -0
  561. package/packages/autonomous/src/shared/ui-catalog-prompt.d.ts.map +1 -0
  562. package/packages/autonomous/src/shared/ui-catalog-prompt.js +1028 -0
  563. package/packages/autonomous/src/test-support/process-helpers.d.ts +13 -0
  564. package/packages/autonomous/src/test-support/process-helpers.d.ts.map +1 -0
  565. package/packages/autonomous/src/test-support/process-helpers.js +23 -0
  566. package/packages/autonomous/src/test-support/route-test-helpers.d.ts +37 -0
  567. package/packages/autonomous/src/test-support/route-test-helpers.d.ts.map +1 -0
  568. package/packages/autonomous/src/test-support/route-test-helpers.js +54 -0
  569. package/packages/autonomous/src/test-support/test-helpers.d.ts +77 -0
  570. package/packages/autonomous/src/test-support/test-helpers.d.ts.map +1 -0
  571. package/packages/autonomous/src/test-support/test-helpers.js +210 -0
  572. package/packages/autonomous/src/testing/index.d.ts +4 -0
  573. package/packages/autonomous/src/testing/index.d.ts.map +1 -0
  574. package/packages/autonomous/src/triggers/action.d.ts +3 -0
  575. package/packages/autonomous/src/triggers/action.d.ts.map +1 -0
  576. package/packages/autonomous/src/triggers/action.js +267 -0
  577. package/packages/autonomous/src/triggers/runtime.d.ts +24 -0
  578. package/packages/autonomous/src/triggers/runtime.d.ts.map +1 -0
  579. package/packages/autonomous/src/triggers/runtime.js +322 -0
  580. package/packages/autonomous/src/triggers/scheduling.d.ts +70 -0
  581. package/packages/autonomous/src/triggers/scheduling.d.ts.map +1 -0
  582. package/packages/autonomous/src/triggers/scheduling.js +355 -0
  583. package/packages/autonomous/src/triggers/types.d.ts +115 -0
  584. package/packages/autonomous/src/triggers/types.d.ts.map +1 -0
  585. package/packages/autonomous/src/triggers/types.js +1 -0
  586. package/packages/autonomous/src/utils/exec-safety.d.ts +2 -0
  587. package/packages/autonomous/src/utils/exec-safety.d.ts.map +1 -0
  588. package/packages/autonomous/src/utils/exec-safety.js +21 -0
  589. package/packages/autonomous/src/utils/number-parsing.d.ts +26 -0
  590. package/packages/autonomous/src/utils/number-parsing.d.ts.map +1 -0
  591. package/packages/autonomous/src/utils/number-parsing.js +52 -0
  592. package/packages/autonomous/src/utils/spoken-text.d.ts +2 -0
  593. package/packages/autonomous/src/utils/spoken-text.d.ts.map +1 -0
  594. package/packages/autonomous/src/utils/spoken-text.js +56 -0
  595. package/packages/autonomous/src/version-resolver.d.ts +3 -0
  596. package/packages/autonomous/src/version-resolver.d.ts.map +1 -0
  597. package/packages/autonomous/src/version-resolver.js +51 -0
  598. package/src/actions/emote.test.ts +0 -41
  599. package/src/actions/emote.ts +0 -110
  600. package/src/actions/restart.ts +0 -101
  601. package/src/actions/send-message.ts +0 -176
  602. package/src/actions/stream-control.ts +0 -439
  603. package/src/actions/switch-stream-source.ts +0 -132
  604. package/src/actions/terminal.ts +0 -186
  605. package/src/api/agent-admin-routes.ts +0 -178
  606. package/src/api/agent-lifecycle-routes.ts +0 -120
  607. package/src/api/agent-model.ts +0 -143
  608. package/src/api/agent-transfer-routes.ts +0 -211
  609. package/src/api/apps-routes.ts +0 -207
  610. package/src/api/auth-routes.ts +0 -90
  611. package/src/api/bsc-trade.ts +0 -736
  612. package/src/api/bug-report-routes.ts +0 -161
  613. package/src/api/character-routes.ts +0 -421
  614. package/src/api/cloud-billing-routes.ts +0 -600
  615. package/src/api/cloud-compat-routes.ts +0 -194
  616. package/src/api/cloud-routes.ts +0 -529
  617. package/src/api/cloud-status-routes.ts +0 -235
  618. package/src/api/compat-utils.ts +0 -154
  619. package/src/api/connector-health.ts +0 -137
  620. package/src/api/coordinator-wiring.ts +0 -182
  621. package/src/api/credit-detection.ts +0 -47
  622. package/src/api/database.ts +0 -1357
  623. package/src/api/diagnostics-routes.ts +0 -389
  624. package/src/api/drop-service.ts +0 -205
  625. package/src/api/early-logs.ts +0 -114
  626. package/src/api/http-helpers.ts +0 -252
  627. package/src/api/index.ts +0 -81
  628. package/src/api/knowledge-routes.ts +0 -1189
  629. package/src/api/knowledge-service-loader.ts +0 -92
  630. package/src/api/memory-bounds.ts +0 -121
  631. package/src/api/memory-routes.ts +0 -349
  632. package/src/api/merkle-tree.ts +0 -239
  633. package/src/api/models-routes.ts +0 -72
  634. package/src/api/nfa-routes.ts +0 -169
  635. package/src/api/nft-verify.ts +0 -188
  636. package/src/api/og-tracker.ts +0 -72
  637. package/src/api/parse-action-block.ts +0 -143
  638. package/src/api/permissions-routes.ts +0 -222
  639. package/src/api/plugin-validation.ts +0 -353
  640. package/src/api/provider-switch-config.ts +0 -456
  641. package/src/api/registry-routes.ts +0 -165
  642. package/src/api/registry-service.ts +0 -292
  643. package/src/api/route-helpers.ts +0 -21
  644. package/src/api/sandbox-routes.ts +0 -1480
  645. package/src/api/server.ts +0 -17706
  646. package/src/api/signal-routes.ts +0 -263
  647. package/src/api/stream-persistence.ts +0 -297
  648. package/src/api/stream-route-state.ts +0 -48
  649. package/src/api/stream-routes.ts +0 -1048
  650. package/src/api/stream-voice-routes.ts +0 -222
  651. package/src/api/streaming-text.ts +0 -129
  652. package/src/api/streaming-types.ts +0 -23
  653. package/src/api/subscription-routes.ts +0 -263
  654. package/src/api/terminal-run-limits.ts +0 -31
  655. package/src/api/training-backend-check.ts +0 -40
  656. package/src/api/training-routes.ts +0 -314
  657. package/src/api/training-service-like.ts +0 -46
  658. package/src/api/trajectory-routes.ts +0 -714
  659. package/src/api/trigger-routes.ts +0 -441
  660. package/src/api/twitter-verify.ts +0 -226
  661. package/src/api/tx-service.ts +0 -193
  662. package/src/api/wallet-dex-prices.ts +0 -206
  663. package/src/api/wallet-evm-balance.ts +0 -990
  664. package/src/api/wallet-routes.ts +0 -505
  665. package/src/api/wallet-rpc.ts +0 -523
  666. package/src/api/wallet-trading-profile.ts +0 -694
  667. package/src/api/wallet.ts +0 -745
  668. package/src/api/whatsapp-routes.ts +0 -280
  669. package/src/api/zip-utils.ts +0 -130
  670. package/src/auth/anthropic.ts +0 -63
  671. package/src/auth/apply-stealth.ts +0 -39
  672. package/src/auth/claude-code-stealth.ts +0 -141
  673. package/src/auth/credentials.ts +0 -226
  674. package/src/auth/index.ts +0 -18
  675. package/src/auth/openai-codex.ts +0 -94
  676. package/src/auth/types.ts +0 -24
  677. package/src/awareness/registry.ts +0 -220
  678. package/src/benchmark-server.ts +0 -1017
  679. package/src/bin.ts +0 -10
  680. package/src/cli/index.ts +0 -50
  681. package/src/cli/parse-duration.ts +0 -43
  682. package/src/cloud/auth.test.ts +0 -370
  683. package/src/cloud/auth.ts +0 -176
  684. package/src/cloud/backup.test.ts +0 -150
  685. package/src/cloud/backup.ts +0 -50
  686. package/src/cloud/base-url.ts +0 -45
  687. package/src/cloud/bridge-client.test.ts +0 -481
  688. package/src/cloud/bridge-client.ts +0 -304
  689. package/src/cloud/cloud-manager.test.ts +0 -223
  690. package/src/cloud/cloud-manager.ts +0 -151
  691. package/src/cloud/cloud-proxy.test.ts +0 -122
  692. package/src/cloud/cloud-proxy.ts +0 -52
  693. package/src/cloud/index.ts +0 -23
  694. package/src/cloud/reconnect.test.ts +0 -178
  695. package/src/cloud/reconnect.ts +0 -108
  696. package/src/cloud/validate-url.test.ts +0 -147
  697. package/src/cloud/validate-url.ts +0 -181
  698. package/src/config/character-schema.ts +0 -44
  699. package/src/config/config.ts +0 -151
  700. package/src/config/env-vars.ts +0 -85
  701. package/src/config/includes.ts +0 -196
  702. package/src/config/object-utils.ts +0 -10
  703. package/src/config/paths.ts +0 -103
  704. package/src/config/plugin-auto-enable.ts +0 -520
  705. package/src/config/schema.ts +0 -1342
  706. package/src/config/telegram-custom-commands.ts +0 -99
  707. package/src/config/types.agent-defaults.ts +0 -342
  708. package/src/config/types.agents.ts +0 -112
  709. package/src/config/types.gateway.ts +0 -243
  710. package/src/config/types.hooks.ts +0 -124
  711. package/src/config/types.messages.ts +0 -201
  712. package/src/config/types.tools.ts +0 -416
  713. package/src/config/zod-schema.agent-runtime.ts +0 -777
  714. package/src/config/zod-schema.core.ts +0 -778
  715. package/src/config/zod-schema.hooks.ts +0 -139
  716. package/src/config/zod-schema.providers-core.ts +0 -1126
  717. package/src/config/zod-schema.session.ts +0 -98
  718. package/src/config/zod-schema.ts +0 -865
  719. package/src/contracts/apps.ts +0 -46
  720. package/src/contracts/awareness.ts +0 -56
  721. package/src/contracts/config.ts +0 -172
  722. package/src/contracts/drop.ts +0 -21
  723. package/src/contracts/onboarding.ts +0 -591
  724. package/src/contracts/permissions.ts +0 -52
  725. package/src/contracts/verification.ts +0 -9
  726. package/src/contracts/wallet.ts +0 -503
  727. package/src/diagnostics/integration-observability.ts +0 -132
  728. package/src/emotes/catalog.ts +0 -655
  729. package/src/external-modules.d.ts +0 -7
  730. package/src/hooks/discovery.test.ts +0 -357
  731. package/src/hooks/discovery.ts +0 -231
  732. package/src/hooks/eligibility.ts +0 -146
  733. package/src/hooks/hooks.test.ts +0 -320
  734. package/src/hooks/index.ts +0 -8
  735. package/src/hooks/loader.test.ts +0 -418
  736. package/src/hooks/loader.ts +0 -256
  737. package/src/hooks/registry.test.ts +0 -168
  738. package/src/hooks/registry.ts +0 -74
  739. package/src/hooks/types.ts +0 -121
  740. package/src/onboarding-presets.ts +0 -1318
  741. package/src/plugins/custom-rtmp/index.ts +0 -40
  742. package/src/providers/admin-trust.ts +0 -76
  743. package/src/providers/session-bridge.ts +0 -143
  744. package/src/providers/session-utils.ts +0 -42
  745. package/src/providers/simple-mode.ts +0 -112
  746. package/src/providers/ui-catalog.ts +0 -135
  747. package/src/providers/workspace-provider.test.ts +0 -111
  748. package/src/providers/workspace-provider.ts +0 -217
  749. package/src/providers/workspace.test.ts +0 -94
  750. package/src/providers/workspace.ts +0 -510
  751. package/src/runtime/agent-event-service.ts +0 -60
  752. package/src/runtime/cloud-onboarding.test.ts +0 -489
  753. package/src/runtime/cloud-onboarding.ts +0 -410
  754. package/src/runtime/core-plugins.ts +0 -53
  755. package/src/runtime/custom-actions.ts +0 -605
  756. package/src/runtime/eliza-plugin.ts +0 -151
  757. package/src/runtime/eliza.ts +0 -5009
  758. package/src/runtime/embedding-presets.ts +0 -73
  759. package/src/runtime/onboarding-names.ts +0 -76
  760. package/src/runtime/release-plugin-policy.ts +0 -118
  761. package/src/runtime/restart.ts +0 -59
  762. package/src/runtime/trajectory-persistence.ts +0 -2605
  763. package/src/runtime/version.ts +0 -6
  764. package/src/security/audit-log.ts +0 -222
  765. package/src/security/network-policy.ts +0 -91
  766. package/src/server/index.ts +0 -2
  767. package/src/services/agent-export.ts +0 -993
  768. package/src/services/app-manager.ts +0 -578
  769. package/src/services/browser-capture.ts +0 -215
  770. package/src/services/coding-agent-context.ts +0 -355
  771. package/src/services/fallback-training-service.ts +0 -196
  772. package/src/services/mcp-marketplace.ts +0 -327
  773. package/src/services/plugin-manager-types.ts +0 -185
  774. package/src/services/privy-wallets.ts +0 -352
  775. package/src/services/registry-client-app-meta.ts +0 -184
  776. package/src/services/registry-client-endpoints.ts +0 -253
  777. package/src/services/registry-client-local.ts +0 -485
  778. package/src/services/registry-client-network.ts +0 -173
  779. package/src/services/registry-client-queries.ts +0 -176
  780. package/src/services/registry-client-types.ts +0 -104
  781. package/src/services/registry-client.ts +0 -366
  782. package/src/services/remote-signing-service.ts +0 -261
  783. package/src/services/sandbox-engine.ts +0 -753
  784. package/src/services/sandbox-manager.ts +0 -503
  785. package/src/services/self-updater.ts +0 -213
  786. package/src/services/signal-pairing.ts +0 -189
  787. package/src/services/signing-policy.ts +0 -230
  788. package/src/services/skill-catalog-client.ts +0 -195
  789. package/src/services/skill-marketplace.ts +0 -909
  790. package/src/services/stream-manager.ts +0 -707
  791. package/src/services/tts-stream-bridge.ts +0 -465
  792. package/src/services/update-checker.ts +0 -163
  793. package/src/services/version-compat.ts +0 -274
  794. package/src/services/whatsapp-pairing.ts +0 -282
  795. package/src/shared/ui-catalog-prompt.ts +0 -1158
  796. package/src/test-support/process-helpers.ts +0 -35
  797. package/src/test-support/route-test-helpers.ts +0 -113
  798. package/src/test-support/test-helpers.ts +0 -304
  799. package/src/triggers/action.ts +0 -342
  800. package/src/triggers/runtime.ts +0 -451
  801. package/src/triggers/scheduling.ts +0 -472
  802. package/src/triggers/types.ts +0 -133
  803. package/src/types/external-modules.d.ts +0 -7
  804. package/src/utils/exec-safety.ts +0 -23
  805. package/src/utils/number-parsing.ts +0 -112
  806. package/src/utils/spoken-text.ts +0 -65
  807. package/src/version-resolver.ts +0 -62
  808. package/test/agent-export.e2e.test.ts +0 -376
  809. package/test/agent-orchestration.e2e.test.ts +0 -1568
  810. package/test/agent-restart-recovery.e2e.test.ts +0 -149
  811. package/test/agent-runtime.e2e.test.ts +0 -1515
  812. package/test/anvil-contracts.e2e.test.ts +0 -533
  813. package/test/anvil-helper.ts +0 -285
  814. package/test/api/agent-admin-routes.test.ts +0 -166
  815. package/test/api/agent-lifecycle-routes.test.ts +0 -173
  816. package/test/api/agent-transfer-routes.test.ts +0 -145
  817. package/test/api/apps-routes.test.ts +0 -138
  818. package/test/api/auth-routes.test.ts +0 -160
  819. package/test/api/bug-report-routes.test.ts +0 -88
  820. package/test/api/knowledge-routes.test.ts +0 -73
  821. package/test/api/lifecycle.test.ts +0 -342
  822. package/test/api/memory-routes.test.ts +0 -74
  823. package/test/api/models-routes.test.ts +0 -114
  824. package/test/api/nfa-routes.test.ts +0 -78
  825. package/test/api/permissions-routes.test.ts +0 -185
  826. package/test/api/registry-routes.test.ts +0 -157
  827. package/test/api/signal-routes.test.ts +0 -113
  828. package/test/api/subscription-routes.test.ts +0 -90
  829. package/test/api/trigger-routes.test.ts +0 -87
  830. package/test/api/wallet-routes.observability.test.ts +0 -193
  831. package/test/api/wallet-routes.test.ts +0 -504
  832. package/test/api-auth-live.e2e.test.ts +0 -519
  833. package/test/api-auth.e2e.test.ts +0 -1039
  834. package/test/api-server.e2e.test.ts +0 -4582
  835. package/test/apps-e2e.e2e.test.ts +0 -1108
  836. package/test/auth-modules.e2e.test.ts +0 -71
  837. package/test/cloud-auth-state.e2e.test.ts +0 -145
  838. package/test/cloud-persistence.e2e.test.ts +0 -260
  839. package/test/cloud-providers.e2e.test.ts +0 -781
  840. package/test/config-hot-reload.e2e.test.ts +0 -131
  841. package/test/contract-deployer.ts +0 -151
  842. package/test/contracts/MockMiladyAgentRegistry.sol +0 -216
  843. package/test/contracts/MockMiladyCollection.sol +0 -195
  844. package/test/contracts/cache/solidity-files-cache.json +0 -1
  845. package/test/contracts/foundry.toml +0 -14
  846. package/test/contracts/lib/openzeppelin-contracts/.changeset/config.json +0 -12
  847. package/test/contracts/lib/openzeppelin-contracts/.codecov.yml +0 -12
  848. package/test/contracts/lib/openzeppelin-contracts/.editorconfig +0 -21
  849. package/test/contracts/lib/openzeppelin-contracts/.eslintrc +0 -20
  850. package/test/contracts/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/bug_report.md +0 -21
  851. package/test/contracts/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/config.yml +0 -4
  852. package/test/contracts/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/feature_request.md +0 -14
  853. package/test/contracts/lib/openzeppelin-contracts/.github/PULL_REQUEST_TEMPLATE.md +0 -20
  854. package/test/contracts/lib/openzeppelin-contracts/.github/actions/gas-compare/action.yml +0 -49
  855. package/test/contracts/lib/openzeppelin-contracts/.github/actions/setup/action.yml +0 -19
  856. package/test/contracts/lib/openzeppelin-contracts/.github/actions/storage-layout/action.yml +0 -55
  857. package/test/contracts/lib/openzeppelin-contracts/.github/workflows/actionlint.yml +0 -18
  858. package/test/contracts/lib/openzeppelin-contracts/.github/workflows/changeset.yml +0 -28
  859. package/test/contracts/lib/openzeppelin-contracts/.github/workflows/checks.yml +0 -111
  860. package/test/contracts/lib/openzeppelin-contracts/.github/workflows/docs.yml +0 -19
  861. package/test/contracts/lib/openzeppelin-contracts/.github/workflows/formal-verification.yml +0 -68
  862. package/test/contracts/lib/openzeppelin-contracts/.github/workflows/release-cycle.yml +0 -218
  863. package/test/contracts/lib/openzeppelin-contracts/.github/workflows/upgradeable.yml +0 -30
  864. package/test/contracts/lib/openzeppelin-contracts/.gitmodules +0 -7
  865. package/test/contracts/lib/openzeppelin-contracts/.mocharc.js +0 -4
  866. package/test/contracts/lib/openzeppelin-contracts/.prettierrc +0 -14
  867. package/test/contracts/lib/openzeppelin-contracts/.solcover.js +0 -13
  868. package/test/contracts/lib/openzeppelin-contracts/.solhint.json +0 -14
  869. package/test/contracts/lib/openzeppelin-contracts/CHANGELOG.md +0 -743
  870. package/test/contracts/lib/openzeppelin-contracts/CODE_OF_CONDUCT.md +0 -73
  871. package/test/contracts/lib/openzeppelin-contracts/CONTRIBUTING.md +0 -36
  872. package/test/contracts/lib/openzeppelin-contracts/GUIDELINES.md +0 -117
  873. package/test/contracts/lib/openzeppelin-contracts/LICENSE +0 -22
  874. package/test/contracts/lib/openzeppelin-contracts/README.md +0 -90
  875. package/test/contracts/lib/openzeppelin-contracts/RELEASING.md +0 -47
  876. package/test/contracts/lib/openzeppelin-contracts/SECURITY.md +0 -42
  877. package/test/contracts/lib/openzeppelin-contracts/audits/2017-03.md +0 -292
  878. package/test/contracts/lib/openzeppelin-contracts/audits/2018-10.pdf +0 -0
  879. package/test/contracts/lib/openzeppelin-contracts/audits/2022-10-Checkpoints.pdf +0 -0
  880. package/test/contracts/lib/openzeppelin-contracts/audits/2022-10-ERC4626.pdf +0 -0
  881. package/test/contracts/lib/openzeppelin-contracts/audits/2023-05-v4.9.pdf +0 -0
  882. package/test/contracts/lib/openzeppelin-contracts/audits/README.md +0 -16
  883. package/test/contracts/lib/openzeppelin-contracts/certora/Makefile +0 -54
  884. package/test/contracts/lib/openzeppelin-contracts/certora/README.md +0 -60
  885. package/test/contracts/lib/openzeppelin-contracts/certora/diff/token_ERC721_ERC721.sol.patch +0 -14
  886. package/test/contracts/lib/openzeppelin-contracts/certora/harnesses/AccessControlDefaultAdminRulesHarness.sol +0 -47
  887. package/test/contracts/lib/openzeppelin-contracts/certora/harnesses/AccessControlHarness.sol +0 -7
  888. package/test/contracts/lib/openzeppelin-contracts/certora/harnesses/DoubleEndedQueueHarness.sol +0 -59
  889. package/test/contracts/lib/openzeppelin-contracts/certora/harnesses/ERC20FlashMintHarness.sol +0 -36
  890. package/test/contracts/lib/openzeppelin-contracts/certora/harnesses/ERC20PermitHarness.sol +0 -17
  891. package/test/contracts/lib/openzeppelin-contracts/certora/harnesses/ERC20WrapperHarness.sol +0 -25
  892. package/test/contracts/lib/openzeppelin-contracts/certora/harnesses/ERC3156FlashBorrowerHarness.sol +0 -13
  893. package/test/contracts/lib/openzeppelin-contracts/certora/harnesses/ERC721Harness.sol +0 -37
  894. package/test/contracts/lib/openzeppelin-contracts/certora/harnesses/ERC721ReceiverHarness.sol +0 -11
  895. package/test/contracts/lib/openzeppelin-contracts/certora/harnesses/EnumerableMapHarness.sol +0 -55
  896. package/test/contracts/lib/openzeppelin-contracts/certora/harnesses/EnumerableSetHarness.sol +0 -35
  897. package/test/contracts/lib/openzeppelin-contracts/certora/harnesses/InitializableHarness.sol +0 -23
  898. package/test/contracts/lib/openzeppelin-contracts/certora/harnesses/Ownable2StepHarness.sol +0 -9
  899. package/test/contracts/lib/openzeppelin-contracts/certora/harnesses/OwnableHarness.sol +0 -9
  900. package/test/contracts/lib/openzeppelin-contracts/certora/harnesses/PausableHarness.sol +0 -19
  901. package/test/contracts/lib/openzeppelin-contracts/certora/harnesses/TimelockControllerHarness.sol +0 -12
  902. package/test/contracts/lib/openzeppelin-contracts/certora/reports/2021-10.pdf +0 -0
  903. package/test/contracts/lib/openzeppelin-contracts/certora/reports/2022-03.pdf +0 -0
  904. package/test/contracts/lib/openzeppelin-contracts/certora/reports/2022-05.pdf +0 -0
  905. package/test/contracts/lib/openzeppelin-contracts/certora/run.js +0 -146
  906. package/test/contracts/lib/openzeppelin-contracts/certora/specs/AccessControl.spec +0 -126
  907. package/test/contracts/lib/openzeppelin-contracts/certora/specs/AccessControlDefaultAdminRules.spec +0 -500
  908. package/test/contracts/lib/openzeppelin-contracts/certora/specs/DoubleEndedQueue.spec +0 -366
  909. package/test/contracts/lib/openzeppelin-contracts/certora/specs/ERC20.spec +0 -414
  910. package/test/contracts/lib/openzeppelin-contracts/certora/specs/ERC20FlashMint.spec +0 -48
  911. package/test/contracts/lib/openzeppelin-contracts/certora/specs/ERC20Wrapper.spec +0 -198
  912. package/test/contracts/lib/openzeppelin-contracts/certora/specs/ERC721.spec +0 -589
  913. package/test/contracts/lib/openzeppelin-contracts/certora/specs/EnumerableMap.spec +0 -334
  914. package/test/contracts/lib/openzeppelin-contracts/certora/specs/EnumerableSet.spec +0 -247
  915. package/test/contracts/lib/openzeppelin-contracts/certora/specs/Initializable.spec +0 -165
  916. package/test/contracts/lib/openzeppelin-contracts/certora/specs/Ownable.spec +0 -78
  917. package/test/contracts/lib/openzeppelin-contracts/certora/specs/Ownable2Step.spec +0 -108
  918. package/test/contracts/lib/openzeppelin-contracts/certora/specs/Pausable.spec +0 -96
  919. package/test/contracts/lib/openzeppelin-contracts/certora/specs/TimelockController.spec +0 -275
  920. package/test/contracts/lib/openzeppelin-contracts/certora/specs/helpers/helpers.spec +0 -1
  921. package/test/contracts/lib/openzeppelin-contracts/certora/specs/methods/IAccessControl.spec +0 -7
  922. package/test/contracts/lib/openzeppelin-contracts/certora/specs/methods/IAccessControlDefaultAdminRules.spec +0 -36
  923. package/test/contracts/lib/openzeppelin-contracts/certora/specs/methods/IERC20.spec +0 -11
  924. package/test/contracts/lib/openzeppelin-contracts/certora/specs/methods/IERC2612.spec +0 -5
  925. package/test/contracts/lib/openzeppelin-contracts/certora/specs/methods/IERC3156.spec +0 -5
  926. package/test/contracts/lib/openzeppelin-contracts/certora/specs/methods/IERC5313.spec +0 -3
  927. package/test/contracts/lib/openzeppelin-contracts/certora/specs/methods/IERC721.spec +0 -20
  928. package/test/contracts/lib/openzeppelin-contracts/certora/specs/methods/IOwnable.spec +0 -5
  929. package/test/contracts/lib/openzeppelin-contracts/certora/specs/methods/IOwnable2Step.spec +0 -7
  930. package/test/contracts/lib/openzeppelin-contracts/certora/specs.json +0 -86
  931. package/test/contracts/lib/openzeppelin-contracts/contracts/access/AccessControl.sol +0 -248
  932. package/test/contracts/lib/openzeppelin-contracts/contracts/access/AccessControlCrossChain.sol +0 -45
  933. package/test/contracts/lib/openzeppelin-contracts/contracts/access/AccessControlDefaultAdminRules.sol +0 -383
  934. package/test/contracts/lib/openzeppelin-contracts/contracts/access/AccessControlEnumerable.sol +0 -64
  935. package/test/contracts/lib/openzeppelin-contracts/contracts/access/IAccessControl.sol +0 -88
  936. package/test/contracts/lib/openzeppelin-contracts/contracts/access/IAccessControlDefaultAdminRules.sol +0 -172
  937. package/test/contracts/lib/openzeppelin-contracts/contracts/access/IAccessControlEnumerable.sol +0 -31
  938. package/test/contracts/lib/openzeppelin-contracts/contracts/access/Ownable.sol +0 -83
  939. package/test/contracts/lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol +0 -57
  940. package/test/contracts/lib/openzeppelin-contracts/contracts/access/README.adoc +0 -27
  941. package/test/contracts/lib/openzeppelin-contracts/contracts/crosschain/CrossChainEnabled.sol +0 -54
  942. package/test/contracts/lib/openzeppelin-contracts/contracts/crosschain/README.adoc +0 -34
  943. package/test/contracts/lib/openzeppelin-contracts/contracts/crosschain/amb/CrossChainEnabledAMB.sol +0 -49
  944. package/test/contracts/lib/openzeppelin-contracts/contracts/crosschain/amb/LibAMB.sol +0 -35
  945. package/test/contracts/lib/openzeppelin-contracts/contracts/crosschain/arbitrum/CrossChainEnabledArbitrumL1.sol +0 -44
  946. package/test/contracts/lib/openzeppelin-contracts/contracts/crosschain/arbitrum/CrossChainEnabledArbitrumL2.sol +0 -40
  947. package/test/contracts/lib/openzeppelin-contracts/contracts/crosschain/arbitrum/LibArbitrumL1.sol +0 -42
  948. package/test/contracts/lib/openzeppelin-contracts/contracts/crosschain/arbitrum/LibArbitrumL2.sol +0 -45
  949. package/test/contracts/lib/openzeppelin-contracts/contracts/crosschain/errors.sol +0 -7
  950. package/test/contracts/lib/openzeppelin-contracts/contracts/crosschain/optimism/CrossChainEnabledOptimism.sol +0 -41
  951. package/test/contracts/lib/openzeppelin-contracts/contracts/crosschain/optimism/LibOptimism.sol +0 -36
  952. package/test/contracts/lib/openzeppelin-contracts/contracts/crosschain/polygon/CrossChainEnabledPolygonChild.sol +0 -72
  953. package/test/contracts/lib/openzeppelin-contracts/contracts/finance/PaymentSplitter.sol +0 -214
  954. package/test/contracts/lib/openzeppelin-contracts/contracts/finance/README.adoc +0 -20
  955. package/test/contracts/lib/openzeppelin-contracts/contracts/finance/VestingWallet.sol +0 -145
  956. package/test/contracts/lib/openzeppelin-contracts/contracts/governance/Governor.sol +0 -723
  957. package/test/contracts/lib/openzeppelin-contracts/contracts/governance/IGovernor.sol +0 -313
  958. package/test/contracts/lib/openzeppelin-contracts/contracts/governance/README.adoc +0 -176
  959. package/test/contracts/lib/openzeppelin-contracts/contracts/governance/TimelockController.sol +0 -422
  960. package/test/contracts/lib/openzeppelin-contracts/contracts/governance/compatibility/GovernorCompatibilityBravo.sol +0 -333
  961. package/test/contracts/lib/openzeppelin-contracts/contracts/governance/compatibility/IGovernorCompatibilityBravo.sol +0 -118
  962. package/test/contracts/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorCountingSimple.sol +0 -100
  963. package/test/contracts/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorPreventLateQuorum.sol +0 -105
  964. package/test/contracts/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorProposalThreshold.sol +0 -23
  965. package/test/contracts/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorSettings.sol +0 -110
  966. package/test/contracts/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorTimelockCompound.sol +0 -190
  967. package/test/contracts/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorTimelockControl.sol +0 -166
  968. package/test/contracts/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorVotes.sol +0 -55
  969. package/test/contracts/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorVotesComp.sol +0 -55
  970. package/test/contracts/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorVotesQuorumFraction.sol +0 -121
  971. package/test/contracts/lib/openzeppelin-contracts/contracts/governance/extensions/IGovernorTimelock.sol +0 -26
  972. package/test/contracts/lib/openzeppelin-contracts/contracts/governance/utils/IVotes.sol +0 -56
  973. package/test/contracts/lib/openzeppelin-contracts/contracts/governance/utils/Votes.sol +0 -244
  974. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC1155.sol +0 -6
  975. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC1155MetadataURI.sol +0 -6
  976. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC1155Receiver.sol +0 -6
  977. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol +0 -19
  978. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol +0 -80
  979. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC1363Receiver.sol +0 -35
  980. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC1363Spender.sol +0 -29
  981. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol +0 -6
  982. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC1820Implementer.sol +0 -6
  983. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC1820Registry.sol +0 -6
  984. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol +0 -26
  985. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol +0 -6
  986. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC20Metadata.sol +0 -6
  987. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC2309.sol +0 -21
  988. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC2612.sol +0 -8
  989. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC2981.sol +0 -25
  990. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC3156.sol +0 -7
  991. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol +0 -29
  992. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol +0 -43
  993. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol +0 -232
  994. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC4906.sol +0 -20
  995. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol +0 -28
  996. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC5313.sol +0 -18
  997. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC5805.sol +0 -9
  998. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC6372.sol +0 -17
  999. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC721.sol +0 -6
  1000. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC721Enumerable.sol +0 -6
  1001. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC721Metadata.sol +0 -6
  1002. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC721Receiver.sol +0 -6
  1003. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC777.sol +0 -6
  1004. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC777Recipient.sol +0 -6
  1005. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC777Sender.sol +0 -6
  1006. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/README.adoc +0 -73
  1007. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol +0 -20
  1008. package/test/contracts/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC2612.sol +0 -8
  1009. package/test/contracts/lib/openzeppelin-contracts/contracts/metatx/ERC2771Context.sol +0 -54
  1010. package/test/contracts/lib/openzeppelin-contracts/contracts/metatx/MinimalForwarder.sol +0 -72
  1011. package/test/contracts/lib/openzeppelin-contracts/contracts/metatx/README.adoc +0 -12
  1012. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/AccessControlCrossChainMock.sol +0 -8
  1013. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/ArraysMock.sol +0 -51
  1014. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/Base64Dirty.sol +0 -19
  1015. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/CallReceiverMock.sol +0 -61
  1016. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/ConditionalEscrowMock.sol +0 -18
  1017. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/ContextMock.sol +0 -35
  1018. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/DummyImplementation.sol +0 -57
  1019. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/EIP712Verifier.sol +0 -16
  1020. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/ERC1271WalletMock.sol +0 -26
  1021. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/ERC165/ERC165MaliciousData.sol +0 -12
  1022. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/ERC165/ERC165MissingData.sol +0 -7
  1023. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/ERC165/ERC165NotSupported.sol +0 -5
  1024. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/ERC165/ERC165ReturnBomb.sol +0 -18
  1025. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/ERC20Mock.sol +0 -16
  1026. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/ERC20Reentrant.sol +0 -43
  1027. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/ERC2771ContextMock.sol +0 -27
  1028. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/ERC3156FlashBorrowerMock.sol +0 -53
  1029. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/ERC4626Mock.sol +0 -16
  1030. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/EtherReceiverMock.sol +0 -17
  1031. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/InitializableMock.sol +0 -130
  1032. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/MulticallTest.sol +0 -23
  1033. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/MultipleInheritanceInitializableMocks.sol +0 -131
  1034. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/PausableMock.sol +0 -31
  1035. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/PullPaymentMock.sol +0 -15
  1036. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/ReentrancyAttack.sol +0 -12
  1037. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/ReentrancyMock.sol +0 -51
  1038. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/RegressionImplementation.sol +0 -61
  1039. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/SafeMathMemoryCheck.sol +0 -72
  1040. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/SingleInheritanceInitializableMocks.sol +0 -49
  1041. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/StorageSlotMock.sol +0 -77
  1042. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/TimelockReentrant.sol +0 -26
  1043. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/TimersBlockNumberImpl.sol +0 -39
  1044. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/TimersTimestampImpl.sol +0 -39
  1045. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/VotesMock.sol +0 -45
  1046. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/compound/CompTimelock.sol +0 -174
  1047. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/crosschain/bridges.sol +0 -94
  1048. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/crosschain/receivers.sol +0 -54
  1049. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/docs/ERC4626Fees.sol +0 -100
  1050. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/docs/governance/MyGovernor.sol +0 -88
  1051. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/docs/governance/MyToken.sol +0 -24
  1052. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/docs/governance/MyTokenTimestampBased.sol +0 -35
  1053. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/docs/governance/MyTokenWrapped.sol +0 -31
  1054. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorCompMock.sol +0 -20
  1055. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorCompatibilityBravoMock.sol +0 -100
  1056. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorMock.sol +0 -28
  1057. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorPreventLateQuorumMock.sol +0 -45
  1058. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorTimelockCompoundMock.sol +0 -60
  1059. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorTimelockControlMock.sol +0 -60
  1060. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorVoteMock.sol +0 -20
  1061. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorWithParamsMock.sol +0 -50
  1062. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/proxy/BadBeacon.sol +0 -11
  1063. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/proxy/ClashingImplementation.sol +0 -17
  1064. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/proxy/UUPSLegacy.sol +0 -54
  1065. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/proxy/UUPSUpgradeableMock.sol +0 -33
  1066. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC1155ReceiverMock.sol +0 -47
  1067. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC20DecimalsMock.sol +0 -17
  1068. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ExcessDecimalsMock.sol +0 -9
  1069. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC20FlashMintMock.sol +0 -26
  1070. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ForceApproveMock.sol +0 -13
  1071. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC20MulticallMock.sol +0 -8
  1072. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC20NoReturnMock.sol +0 -28
  1073. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC20PermitNoRevertMock.sol +0 -36
  1074. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ReturnFalseMock.sol +0 -19
  1075. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC20VotesLegacyMock.sol +0 -262
  1076. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC4626OffsetMock.sol +0 -17
  1077. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC4646FeesMock.sol +0 -40
  1078. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC721ConsecutiveEnumerableMock.sol +0 -51
  1079. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC721ConsecutiveMock.sol +0 -61
  1080. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC721ReceiverMock.sol +0 -42
  1081. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC721URIStorageMock.sol +0 -17
  1082. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC777Mock.sol +0 -13
  1083. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC777SenderRecipientMock.sol +0 -152
  1084. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/token/VotesTimestamp.sol +0 -40
  1085. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/wizard/MyGovernor1.sol +0 -79
  1086. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/wizard/MyGovernor2.sol +0 -85
  1087. package/test/contracts/lib/openzeppelin-contracts/contracts/mocks/wizard/MyGovernor3.sol +0 -94
  1088. package/test/contracts/lib/openzeppelin-contracts/contracts/package.json +0 -32
  1089. package/test/contracts/lib/openzeppelin-contracts/contracts/proxy/Clones.sol +0 -88
  1090. package/test/contracts/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol +0 -32
  1091. package/test/contracts/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Upgrade.sol +0 -157
  1092. package/test/contracts/lib/openzeppelin-contracts/contracts/proxy/Proxy.sol +0 -86
  1093. package/test/contracts/lib/openzeppelin-contracts/contracts/proxy/README.adoc +0 -87
  1094. package/test/contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol +0 -61
  1095. package/test/contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol +0 -16
  1096. package/test/contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol +0 -65
  1097. package/test/contracts/lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol +0 -81
  1098. package/test/contracts/lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol +0 -191
  1099. package/test/contracts/lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol +0 -166
  1100. package/test/contracts/lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol +0 -99
  1101. package/test/contracts/lib/openzeppelin-contracts/contracts/security/Pausable.sol +0 -105
  1102. package/test/contracts/lib/openzeppelin-contracts/contracts/security/PullPayment.sol +0 -74
  1103. package/test/contracts/lib/openzeppelin-contracts/contracts/security/README.adoc +0 -20
  1104. package/test/contracts/lib/openzeppelin-contracts/contracts/security/ReentrancyGuard.sol +0 -77
  1105. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC1155/ERC1155.sol +0 -497
  1106. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol +0 -119
  1107. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol +0 -58
  1108. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC1155/README.adoc +0 -49
  1109. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/ERC1155Burnable.sol +0 -32
  1110. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/ERC1155Pausable.sol +0 -44
  1111. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/ERC1155Supply.sol +0 -64
  1112. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/ERC1155URIStorage.sol +0 -63
  1113. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol +0 -22
  1114. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC1155/presets/ERC1155PresetMinterPauser.sol +0 -114
  1115. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC1155/presets/README.md +0 -1
  1116. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC1155/utils/ERC1155Holder.sol +0 -36
  1117. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC1155/utils/ERC1155Receiver.sol +0 -19
  1118. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol +0 -365
  1119. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol +0 -78
  1120. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/README.adoc +0 -80
  1121. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol +0 -39
  1122. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Capped.sol +0 -37
  1123. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20FlashMint.sol +0 -109
  1124. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Pausable.sol +0 -35
  1125. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Permit.sol +0 -95
  1126. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Snapshot.sol +0 -191
  1127. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Votes.sol +0 -290
  1128. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20VotesComp.sol +0 -46
  1129. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Wrapper.sol +0 -73
  1130. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC4626.sol +0 -256
  1131. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol +0 -28
  1132. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol +0 -90
  1133. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-ERC20Permit.sol +0 -8
  1134. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol +0 -8
  1135. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/presets/ERC20PresetFixedSupply.sol +0 -30
  1136. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/presets/ERC20PresetMinterPauser.sol +0 -94
  1137. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/presets/README.md +0 -1
  1138. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol +0 -143
  1139. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC20/utils/TokenTimelock.sol +0 -72
  1140. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol +0 -466
  1141. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol +0 -132
  1142. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol +0 -27
  1143. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/README.adoc +0 -73
  1144. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Burnable.sol +0 -26
  1145. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Consecutive.sol +0 -148
  1146. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Enumerable.sol +0 -159
  1147. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Pausable.sol +0 -40
  1148. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Royalty.sol +0 -38
  1149. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721URIStorage.sol +0 -74
  1150. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Votes.sol +0 -43
  1151. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Wrapper.sol +0 -97
  1152. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol +0 -29
  1153. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol +0 -27
  1154. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/draft-ERC721Votes.sol +0 -9
  1155. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/presets/ERC721PresetMinterPauserAutoId.sol +0 -132
  1156. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/presets/README.md +0 -1
  1157. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol +0 -23
  1158. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC777/ERC777.sol +0 -514
  1159. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC777/IERC777.sol +0 -200
  1160. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC777/IERC777Recipient.sol +0 -35
  1161. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC777/IERC777Sender.sol +0 -35
  1162. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC777/README.adoc +0 -32
  1163. package/test/contracts/lib/openzeppelin-contracts/contracts/token/ERC777/presets/ERC777PresetFixedSupply.sol +0 -30
  1164. package/test/contracts/lib/openzeppelin-contracts/contracts/token/common/ERC2981.sol +0 -107
  1165. package/test/contracts/lib/openzeppelin-contracts/contracts/token/common/README.adoc +0 -10
  1166. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/Address.sol +0 -244
  1167. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/Arrays.sol +0 -105
  1168. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/Base64.sol +0 -101
  1169. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/Checkpoints.sol +0 -560
  1170. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/Context.sol +0 -28
  1171. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/Counters.sol +0 -43
  1172. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/Create2.sol +0 -75
  1173. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/Multicall.sol +0 -39
  1174. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/README.adoc +0 -113
  1175. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol +0 -122
  1176. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol +0 -138
  1177. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/Strings.sol +0 -85
  1178. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/Timers.sol +0 -75
  1179. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol +0 -217
  1180. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol +0 -142
  1181. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/cryptography/MerkleProof.sol +0 -227
  1182. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol +0 -50
  1183. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/cryptography/draft-EIP712.sol +0 -8
  1184. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/escrow/ConditionalEscrow.sol +0 -25
  1185. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/escrow/Escrow.sol +0 -67
  1186. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/escrow/RefundEscrow.sol +0 -100
  1187. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol +0 -29
  1188. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol +0 -126
  1189. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Storage.sol +0 -42
  1190. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/introspection/ERC1820Implementer.sol +0 -43
  1191. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol +0 -25
  1192. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/introspection/IERC1820Implementer.sol +0 -20
  1193. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/introspection/IERC1820Registry.sol +0 -112
  1194. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/math/Math.sol +0 -339
  1195. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol +0 -1136
  1196. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/math/SafeMath.sol +0 -215
  1197. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol +0 -43
  1198. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/math/SignedSafeMath.sol +0 -68
  1199. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/structs/BitMaps.sol +0 -51
  1200. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/structs/DoubleEndedQueue.sol +0 -170
  1201. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol +0 -598
  1202. package/test/contracts/lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol +0 -378
  1203. package/test/contracts/lib/openzeppelin-contracts/contracts/vendor/amb/IAMB.sol +0 -41
  1204. package/test/contracts/lib/openzeppelin-contracts/contracts/vendor/arbitrum/IArbSys.sol +0 -134
  1205. package/test/contracts/lib/openzeppelin-contracts/contracts/vendor/arbitrum/IBridge.sol +0 -102
  1206. package/test/contracts/lib/openzeppelin-contracts/contracts/vendor/arbitrum/IDelayedMessageProvider.sol +0 -16
  1207. package/test/contracts/lib/openzeppelin-contracts/contracts/vendor/arbitrum/IInbox.sol +0 -152
  1208. package/test/contracts/lib/openzeppelin-contracts/contracts/vendor/arbitrum/IOutbox.sol +0 -117
  1209. package/test/contracts/lib/openzeppelin-contracts/contracts/vendor/compound/ICompoundTimelock.sol +0 -86
  1210. package/test/contracts/lib/openzeppelin-contracts/contracts/vendor/compound/LICENSE +0 -11
  1211. package/test/contracts/lib/openzeppelin-contracts/contracts/vendor/optimism/ICrossDomainMessenger.sol +0 -34
  1212. package/test/contracts/lib/openzeppelin-contracts/contracts/vendor/optimism/LICENSE +0 -22
  1213. package/test/contracts/lib/openzeppelin-contracts/contracts/vendor/polygon/IFxMessageProcessor.sol +0 -7
  1214. package/test/contracts/lib/openzeppelin-contracts/docs/README.md +0 -16
  1215. package/test/contracts/lib/openzeppelin-contracts/docs/antora.yml +0 -6
  1216. package/test/contracts/lib/openzeppelin-contracts/docs/config.js +0 -21
  1217. package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-3a.png +0 -0
  1218. package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-3b.png +0 -0
  1219. package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-6.png +0 -0
  1220. package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack.png +0 -0
  1221. package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-deposit.png +0 -0
  1222. package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-mint.png +0 -0
  1223. package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-linear.png +0 -0
  1224. package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-loglog.png +0 -0
  1225. package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-loglogext.png +0 -0
  1226. package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/tally-exec.png +0 -0
  1227. package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/tally-vote.png +0 -0
  1228. package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/nav.adoc +0 -23
  1229. package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/access-control.adoc +0 -219
  1230. package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/crosschain.adoc +0 -210
  1231. package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/crowdsales.adoc +0 -11
  1232. package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/drafts.adoc +0 -19
  1233. package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc1155.adoc +0 -153
  1234. package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc20-supply.adoc +0 -113
  1235. package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc20.adoc +0 -85
  1236. package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc4626.adoc +0 -214
  1237. package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc721.adoc +0 -90
  1238. package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc777.adoc +0 -75
  1239. package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/extending-contracts.adoc +0 -131
  1240. package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/governance.adoc +0 -237
  1241. package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/index.adoc +0 -65
  1242. package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/releases-stability.adoc +0 -85
  1243. package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/tokens.adoc +0 -32
  1244. package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/upgradeable.adoc +0 -73
  1245. package/test/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/utilities.adoc +0 -190
  1246. package/test/contracts/lib/openzeppelin-contracts/docs/templates/contract.hbs +0 -85
  1247. package/test/contracts/lib/openzeppelin-contracts/docs/templates/helpers.js +0 -46
  1248. package/test/contracts/lib/openzeppelin-contracts/docs/templates/page.hbs +0 -4
  1249. package/test/contracts/lib/openzeppelin-contracts/docs/templates/properties.js +0 -45
  1250. package/test/contracts/lib/openzeppelin-contracts/foundry.toml +0 -3
  1251. package/test/contracts/lib/openzeppelin-contracts/hardhat/env-artifacts.js +0 -24
  1252. package/test/contracts/lib/openzeppelin-contracts/hardhat/env-contract.js +0 -10
  1253. package/test/contracts/lib/openzeppelin-contracts/hardhat/ignore-unreachable-warnings.js +0 -45
  1254. package/test/contracts/lib/openzeppelin-contracts/hardhat/skip-foundry-tests.js +0 -6
  1255. package/test/contracts/lib/openzeppelin-contracts/hardhat/task-test-get-files.js +0 -25
  1256. package/test/contracts/lib/openzeppelin-contracts/hardhat.config.js +0 -118
  1257. package/test/contracts/lib/openzeppelin-contracts/lib/erc4626-tests/ERC4626.prop.sol +0 -404
  1258. package/test/contracts/lib/openzeppelin-contracts/lib/erc4626-tests/ERC4626.test.sol +0 -349
  1259. package/test/contracts/lib/openzeppelin-contracts/lib/erc4626-tests/LICENSE +0 -661
  1260. package/test/contracts/lib/openzeppelin-contracts/lib/erc4626-tests/README.md +0 -116
  1261. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/.github/workflows/ci.yml +0 -92
  1262. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/.gitmodules +0 -3
  1263. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/LICENSE-APACHE +0 -203
  1264. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/LICENSE-MIT +0 -25
  1265. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/README.md +0 -250
  1266. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/foundry.toml +0 -21
  1267. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/.github/workflows/build.yml +0 -41
  1268. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/LICENSE +0 -674
  1269. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/Makefile +0 -14
  1270. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/default.nix +0 -4
  1271. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/demo/demo.sol +0 -222
  1272. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/package.json +0 -15
  1273. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/test.sol +0 -469
  1274. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/test.t.sol +0 -313
  1275. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/package.json +0 -16
  1276. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/Base.sol +0 -33
  1277. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/Script.sol +0 -26
  1278. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/StdAssertions.sol +0 -376
  1279. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/StdChains.sol +0 -233
  1280. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/StdCheats.sol +0 -624
  1281. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/StdError.sol +0 -15
  1282. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/StdInvariant.sol +0 -92
  1283. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/StdJson.sol +0 -179
  1284. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/StdMath.sol +0 -43
  1285. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/StdStorage.sol +0 -327
  1286. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/StdStyle.sol +0 -333
  1287. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/StdUtils.sol +0 -189
  1288. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/Test.sol +0 -32
  1289. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/Vm.sol +0 -409
  1290. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/console.sol +0 -1533
  1291. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/console2.sol +0 -1546
  1292. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/interfaces/IERC1155.sol +0 -105
  1293. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/interfaces/IERC165.sol +0 -12
  1294. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/interfaces/IERC20.sol +0 -43
  1295. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/interfaces/IERC4626.sol +0 -190
  1296. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/interfaces/IERC721.sol +0 -164
  1297. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/src/interfaces/IMulticall3.sol +0 -73
  1298. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/test/StdAssertions.t.sol +0 -954
  1299. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/test/StdChains.t.sol +0 -160
  1300. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/test/StdCheats.t.sol +0 -401
  1301. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/test/StdError.t.sol +0 -118
  1302. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/test/StdMath.t.sol +0 -197
  1303. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/test/StdStorage.t.sol +0 -283
  1304. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/test/StdStyle.t.sol +0 -110
  1305. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/test/StdUtils.t.sol +0 -297
  1306. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/test/compilation/CompilationScript.sol +0 -10
  1307. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/test/compilation/CompilationScriptBase.sol +0 -10
  1308. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/test/compilation/CompilationTest.sol +0 -10
  1309. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/test/compilation/CompilationTestBase.sol +0 -10
  1310. package/test/contracts/lib/openzeppelin-contracts/lib/forge-std/test/fixtures/broadcast.log.json +0 -187
  1311. package/test/contracts/lib/openzeppelin-contracts/logo.svg +0 -15
  1312. package/test/contracts/lib/openzeppelin-contracts/netlify.toml +0 -3
  1313. package/test/contracts/lib/openzeppelin-contracts/package-lock.json +0 -28795
  1314. package/test/contracts/lib/openzeppelin-contracts/package.json +0 -96
  1315. package/test/contracts/lib/openzeppelin-contracts/remappings.txt +0 -1
  1316. package/test/contracts/lib/openzeppelin-contracts/renovate.json +0 -4
  1317. package/test/contracts/lib/openzeppelin-contracts/requirements.txt +0 -1
  1318. package/test/contracts/lib/openzeppelin-contracts/scripts/checks/compare-layout.js +0 -19
  1319. package/test/contracts/lib/openzeppelin-contracts/scripts/checks/compareGasReports.js +0 -243
  1320. package/test/contracts/lib/openzeppelin-contracts/scripts/checks/extract-layout.js +0 -40
  1321. package/test/contracts/lib/openzeppelin-contracts/scripts/checks/generation.sh +0 -6
  1322. package/test/contracts/lib/openzeppelin-contracts/scripts/checks/inheritance-ordering.js +0 -54
  1323. package/test/contracts/lib/openzeppelin-contracts/scripts/gen-nav.js +0 -41
  1324. package/test/contracts/lib/openzeppelin-contracts/scripts/generate/format-lines.js +0 -16
  1325. package/test/contracts/lib/openzeppelin-contracts/scripts/generate/run.js +0 -49
  1326. package/test/contracts/lib/openzeppelin-contracts/scripts/generate/templates/Checkpoints.js +0 -304
  1327. package/test/contracts/lib/openzeppelin-contracts/scripts/generate/templates/Checkpoints.opts.js +0 -22
  1328. package/test/contracts/lib/openzeppelin-contracts/scripts/generate/templates/Checkpoints.t.js +0 -256
  1329. package/test/contracts/lib/openzeppelin-contracts/scripts/generate/templates/EnumerableMap.js +0 -310
  1330. package/test/contracts/lib/openzeppelin-contracts/scripts/generate/templates/EnumerableSet.js +0 -250
  1331. package/test/contracts/lib/openzeppelin-contracts/scripts/generate/templates/SafeCast.js +0 -163
  1332. package/test/contracts/lib/openzeppelin-contracts/scripts/generate/templates/StorageSlot.js +0 -87
  1333. package/test/contracts/lib/openzeppelin-contracts/scripts/generate/templates/conversion.js +0 -30
  1334. package/test/contracts/lib/openzeppelin-contracts/scripts/git-user-config.sh +0 -6
  1335. package/test/contracts/lib/openzeppelin-contracts/scripts/helpers.js +0 -37
  1336. package/test/contracts/lib/openzeppelin-contracts/scripts/migrate-imports.js +0 -180
  1337. package/test/contracts/lib/openzeppelin-contracts/scripts/prepack.sh +0 -12
  1338. package/test/contracts/lib/openzeppelin-contracts/scripts/prepare-contracts-package.sh +0 -15
  1339. package/test/contracts/lib/openzeppelin-contracts/scripts/prepare-docs.sh +0 -26
  1340. package/test/contracts/lib/openzeppelin-contracts/scripts/prepare.sh +0 -10
  1341. package/test/contracts/lib/openzeppelin-contracts/scripts/release/format-changelog.js +0 -33
  1342. package/test/contracts/lib/openzeppelin-contracts/scripts/release/synchronize-versions.js +0 -15
  1343. package/test/contracts/lib/openzeppelin-contracts/scripts/release/update-comment.js +0 -34
  1344. package/test/contracts/lib/openzeppelin-contracts/scripts/release/version.sh +0 -11
  1345. package/test/contracts/lib/openzeppelin-contracts/scripts/release/workflow/exit-prerelease.sh +0 -8
  1346. package/test/contracts/lib/openzeppelin-contracts/scripts/release/workflow/github-release.js +0 -47
  1347. package/test/contracts/lib/openzeppelin-contracts/scripts/release/workflow/integrity-check.sh +0 -20
  1348. package/test/contracts/lib/openzeppelin-contracts/scripts/release/workflow/pack.sh +0 -26
  1349. package/test/contracts/lib/openzeppelin-contracts/scripts/release/workflow/publish.sh +0 -26
  1350. package/test/contracts/lib/openzeppelin-contracts/scripts/release/workflow/rerun.js +0 -7
  1351. package/test/contracts/lib/openzeppelin-contracts/scripts/release/workflow/set-changesets-pr-title.js +0 -17
  1352. package/test/contracts/lib/openzeppelin-contracts/scripts/release/workflow/start.sh +0 -35
  1353. package/test/contracts/lib/openzeppelin-contracts/scripts/release/workflow/state.js +0 -112
  1354. package/test/contracts/lib/openzeppelin-contracts/scripts/remove-ignored-artifacts.js +0 -45
  1355. package/test/contracts/lib/openzeppelin-contracts/scripts/update-docs-branch.js +0 -63
  1356. package/test/contracts/lib/openzeppelin-contracts/scripts/upgradeable/README.md +0 -21
  1357. package/test/contracts/lib/openzeppelin-contracts/scripts/upgradeable/patch-apply.sh +0 -19
  1358. package/test/contracts/lib/openzeppelin-contracts/scripts/upgradeable/patch-save.sh +0 -18
  1359. package/test/contracts/lib/openzeppelin-contracts/scripts/upgradeable/transpile-onto.sh +0 -44
  1360. package/test/contracts/lib/openzeppelin-contracts/scripts/upgradeable/transpile.sh +0 -35
  1361. package/test/contracts/lib/openzeppelin-contracts/scripts/upgradeable/upgradeable.patch +0 -481
  1362. package/test/contracts/lib/openzeppelin-contracts/slither.config.json +0 -5
  1363. package/test/contracts/lib/openzeppelin-contracts/test/TESTING.md +0 -3
  1364. package/test/contracts/lib/openzeppelin-contracts/test/access/AccessControl.behavior.js +0 -867
  1365. package/test/contracts/lib/openzeppelin-contracts/test/access/AccessControl.test.js +0 -12
  1366. package/test/contracts/lib/openzeppelin-contracts/test/access/AccessControlCrossChain.test.js +0 -49
  1367. package/test/contracts/lib/openzeppelin-contracts/test/access/AccessControlDefaultAdminRules.test.js +0 -25
  1368. package/test/contracts/lib/openzeppelin-contracts/test/access/AccessControlEnumerable.test.js +0 -17
  1369. package/test/contracts/lib/openzeppelin-contracts/test/access/Ownable.test.js +0 -59
  1370. package/test/contracts/lib/openzeppelin-contracts/test/access/Ownable2Step.test.js +0 -67
  1371. package/test/contracts/lib/openzeppelin-contracts/test/crosschain/CrossChainEnabled.test.js +0 -78
  1372. package/test/contracts/lib/openzeppelin-contracts/test/finance/PaymentSplitter.test.js +0 -217
  1373. package/test/contracts/lib/openzeppelin-contracts/test/finance/VestingWallet.behavior.js +0 -59
  1374. package/test/contracts/lib/openzeppelin-contracts/test/finance/VestingWallet.test.js +0 -67
  1375. package/test/contracts/lib/openzeppelin-contracts/test/governance/Governor.t.sol +0 -55
  1376. package/test/contracts/lib/openzeppelin-contracts/test/governance/Governor.test.js +0 -782
  1377. package/test/contracts/lib/openzeppelin-contracts/test/governance/TimelockController.test.js +0 -1254
  1378. package/test/contracts/lib/openzeppelin-contracts/test/governance/compatibility/GovernorCompatibilityBravo.test.js +0 -283
  1379. package/test/contracts/lib/openzeppelin-contracts/test/governance/extensions/GovernorComp.test.js +0 -88
  1380. package/test/contracts/lib/openzeppelin-contracts/test/governance/extensions/GovernorERC721.test.js +0 -115
  1381. package/test/contracts/lib/openzeppelin-contracts/test/governance/extensions/GovernorPreventLateQuorum.test.js +0 -189
  1382. package/test/contracts/lib/openzeppelin-contracts/test/governance/extensions/GovernorTimelockCompound.test.js +0 -352
  1383. package/test/contracts/lib/openzeppelin-contracts/test/governance/extensions/GovernorTimelockControl.test.js +0 -445
  1384. package/test/contracts/lib/openzeppelin-contracts/test/governance/extensions/GovernorVotesQuorumFraction.test.js +0 -154
  1385. package/test/contracts/lib/openzeppelin-contracts/test/governance/extensions/GovernorWithParams.test.js +0 -173
  1386. package/test/contracts/lib/openzeppelin-contracts/test/governance/utils/EIP6372.behavior.js +0 -23
  1387. package/test/contracts/lib/openzeppelin-contracts/test/governance/utils/Votes.behavior.js +0 -361
  1388. package/test/contracts/lib/openzeppelin-contracts/test/governance/utils/Votes.test.js +0 -71
  1389. package/test/contracts/lib/openzeppelin-contracts/test/helpers/chainid.js +0 -10
  1390. package/test/contracts/lib/openzeppelin-contracts/test/helpers/create2.js +0 -11
  1391. package/test/contracts/lib/openzeppelin-contracts/test/helpers/crosschain.js +0 -61
  1392. package/test/contracts/lib/openzeppelin-contracts/test/helpers/customError.js +0 -24
  1393. package/test/contracts/lib/openzeppelin-contracts/test/helpers/eip712.js +0 -67
  1394. package/test/contracts/lib/openzeppelin-contracts/test/helpers/enums.js +0 -12
  1395. package/test/contracts/lib/openzeppelin-contracts/test/helpers/erc1967.js +0 -24
  1396. package/test/contracts/lib/openzeppelin-contracts/test/helpers/governance.js +0 -201
  1397. package/test/contracts/lib/openzeppelin-contracts/test/helpers/map-values.js +0 -7
  1398. package/test/contracts/lib/openzeppelin-contracts/test/helpers/sign.js +0 -63
  1399. package/test/contracts/lib/openzeppelin-contracts/test/helpers/time.js +0 -17
  1400. package/test/contracts/lib/openzeppelin-contracts/test/helpers/txpool.js +0 -38
  1401. package/test/contracts/lib/openzeppelin-contracts/test/metatx/ERC2771Context.test.js +0 -175
  1402. package/test/contracts/lib/openzeppelin-contracts/test/metatx/MinimalForwarder.test.js +0 -169
  1403. package/test/contracts/lib/openzeppelin-contracts/test/migrate-imports.test.js +0 -33
  1404. package/test/contracts/lib/openzeppelin-contracts/test/proxy/Clones.behaviour.js +0 -136
  1405. package/test/contracts/lib/openzeppelin-contracts/test/proxy/Clones.test.js +0 -61
  1406. package/test/contracts/lib/openzeppelin-contracts/test/proxy/ERC1967/ERC1967Proxy.test.js +0 -13
  1407. package/test/contracts/lib/openzeppelin-contracts/test/proxy/Proxy.behaviour.js +0 -225
  1408. package/test/contracts/lib/openzeppelin-contracts/test/proxy/beacon/BeaconProxy.test.js +0 -139
  1409. package/test/contracts/lib/openzeppelin-contracts/test/proxy/beacon/UpgradeableBeacon.test.js +0 -44
  1410. package/test/contracts/lib/openzeppelin-contracts/test/proxy/transparent/ProxyAdmin.test.js +0 -127
  1411. package/test/contracts/lib/openzeppelin-contracts/test/proxy/transparent/TransparentUpgradeableProxy.behaviour.js +0 -433
  1412. package/test/contracts/lib/openzeppelin-contracts/test/proxy/transparent/TransparentUpgradeableProxy.test.js +0 -17
  1413. package/test/contracts/lib/openzeppelin-contracts/test/proxy/utils/Initializable.test.js +0 -218
  1414. package/test/contracts/lib/openzeppelin-contracts/test/proxy/utils/UUPSUpgradeable.test.js +0 -85
  1415. package/test/contracts/lib/openzeppelin-contracts/test/security/Pausable.test.js +0 -85
  1416. package/test/contracts/lib/openzeppelin-contracts/test/security/PullPayment.test.js +0 -51
  1417. package/test/contracts/lib/openzeppelin-contracts/test/security/ReentrancyGuard.test.js +0 -43
  1418. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC1155/ERC1155.behavior.js +0 -767
  1419. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC1155/ERC1155.test.js +0 -235
  1420. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC1155/extensions/ERC1155Burnable.test.js +0 -67
  1421. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC1155/extensions/ERC1155Pausable.test.js +0 -108
  1422. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC1155/extensions/ERC1155Supply.test.js +0 -107
  1423. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC1155/extensions/ERC1155URIStorage.test.js +0 -66
  1424. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC1155/presets/ERC1155PresetMinterPauser.test.js +0 -156
  1425. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC1155/utils/ERC1155Holder.test.js +0 -64
  1426. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/ERC20.behavior.js +0 -322
  1427. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/ERC20.test.js +0 -305
  1428. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Burnable.behavior.js +0 -106
  1429. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Burnable.test.js +0 -20
  1430. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Capped.behavior.js +0 -32
  1431. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Capped.test.js +0 -23
  1432. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20FlashMint.test.js +0 -204
  1433. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Pausable.test.js +0 -133
  1434. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Snapshot.test.js +0 -207
  1435. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Votes.test.js +0 -578
  1436. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20VotesComp.test.js +0 -543
  1437. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Wrapper.test.js +0 -190
  1438. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC4626.t.sol +0 -42
  1439. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC4626.test.js +0 -1031
  1440. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/extensions/draft-ERC20Permit.test.js +0 -103
  1441. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/presets/ERC20PresetFixedSupply.test.js +0 -42
  1442. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/presets/ERC20PresetMinterPauser.test.js +0 -110
  1443. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/utils/SafeERC20.test.js +0 -350
  1444. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC20/utils/TokenTimelock.test.js +0 -71
  1445. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC721/ERC721.behavior.js +0 -893
  1446. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC721/ERC721.test.js +0 -15
  1447. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC721/ERC721Enumerable.test.js +0 -20
  1448. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Burnable.test.js +0 -70
  1449. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Consecutive.t.sol +0 -122
  1450. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Consecutive.test.js +0 -206
  1451. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Pausable.test.js +0 -92
  1452. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Royalty.test.js +0 -41
  1453. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721URIStorage.test.js +0 -100
  1454. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Votes.test.js +0 -184
  1455. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Wrapper.test.js +0 -283
  1456. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC721/presets/ERC721PresetMinterPauserAutoId.test.js +0 -122
  1457. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC721/utils/ERC721Holder.test.js +0 -22
  1458. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC777/ERC777.behavior.js +0 -597
  1459. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC777/ERC777.test.js +0 -556
  1460. package/test/contracts/lib/openzeppelin-contracts/test/token/ERC777/presets/ERC777PresetFixedSupply.test.js +0 -49
  1461. package/test/contracts/lib/openzeppelin-contracts/test/token/common/ERC2981.behavior.js +0 -157
  1462. package/test/contracts/lib/openzeppelin-contracts/test/utils/Address.test.js +0 -361
  1463. package/test/contracts/lib/openzeppelin-contracts/test/utils/Arrays.test.js +0 -123
  1464. package/test/contracts/lib/openzeppelin-contracts/test/utils/Base64.test.js +0 -43
  1465. package/test/contracts/lib/openzeppelin-contracts/test/utils/Checkpoints.t.sol +0 -347
  1466. package/test/contracts/lib/openzeppelin-contracts/test/utils/Checkpoints.test.js +0 -255
  1467. package/test/contracts/lib/openzeppelin-contracts/test/utils/Context.behavior.js +0 -42
  1468. package/test/contracts/lib/openzeppelin-contracts/test/utils/Context.test.js +0 -17
  1469. package/test/contracts/lib/openzeppelin-contracts/test/utils/Counters.test.js +0 -84
  1470. package/test/contracts/lib/openzeppelin-contracts/test/utils/Create2.test.js +0 -89
  1471. package/test/contracts/lib/openzeppelin-contracts/test/utils/Multicall.test.js +0 -68
  1472. package/test/contracts/lib/openzeppelin-contracts/test/utils/ShortStrings.t.sol +0 -55
  1473. package/test/contracts/lib/openzeppelin-contracts/test/utils/ShortStrings.test.js +0 -55
  1474. package/test/contracts/lib/openzeppelin-contracts/test/utils/StorageSlot.test.js +0 -210
  1475. package/test/contracts/lib/openzeppelin-contracts/test/utils/Strings.test.js +0 -150
  1476. package/test/contracts/lib/openzeppelin-contracts/test/utils/TimersBlockNumberImpl.test.js +0 -55
  1477. package/test/contracts/lib/openzeppelin-contracts/test/utils/TimersTimestamp.test.js +0 -55
  1478. package/test/contracts/lib/openzeppelin-contracts/test/utils/cryptography/ECDSA.test.js +0 -260
  1479. package/test/contracts/lib/openzeppelin-contracts/test/utils/cryptography/EIP712.test.js +0 -103
  1480. package/test/contracts/lib/openzeppelin-contracts/test/utils/cryptography/MerkleProof.test.js +0 -200
  1481. package/test/contracts/lib/openzeppelin-contracts/test/utils/cryptography/SignatureChecker.test.js +0 -87
  1482. package/test/contracts/lib/openzeppelin-contracts/test/utils/escrow/ConditionalEscrow.test.js +0 -37
  1483. package/test/contracts/lib/openzeppelin-contracts/test/utils/escrow/Escrow.behavior.js +0 -90
  1484. package/test/contracts/lib/openzeppelin-contracts/test/utils/escrow/Escrow.test.js +0 -14
  1485. package/test/contracts/lib/openzeppelin-contracts/test/utils/escrow/RefundEscrow.test.js +0 -143
  1486. package/test/contracts/lib/openzeppelin-contracts/test/utils/introspection/ERC165.test.js +0 -11
  1487. package/test/contracts/lib/openzeppelin-contracts/test/utils/introspection/ERC165Checker.test.js +0 -302
  1488. package/test/contracts/lib/openzeppelin-contracts/test/utils/introspection/ERC165Storage.test.js +0 -23
  1489. package/test/contracts/lib/openzeppelin-contracts/test/utils/introspection/ERC1820Implementer.test.js +0 -71
  1490. package/test/contracts/lib/openzeppelin-contracts/test/utils/introspection/SupportsInterface.behavior.js +0 -146
  1491. package/test/contracts/lib/openzeppelin-contracts/test/utils/math/Math.t.sol +0 -217
  1492. package/test/contracts/lib/openzeppelin-contracts/test/utils/math/Math.test.js +0 -289
  1493. package/test/contracts/lib/openzeppelin-contracts/test/utils/math/SafeCast.test.js +0 -152
  1494. package/test/contracts/lib/openzeppelin-contracts/test/utils/math/SafeMath.test.js +0 -433
  1495. package/test/contracts/lib/openzeppelin-contracts/test/utils/math/SignedMath.test.js +0 -95
  1496. package/test/contracts/lib/openzeppelin-contracts/test/utils/math/SignedSafeMath.test.js +0 -152
  1497. package/test/contracts/lib/openzeppelin-contracts/test/utils/structs/BitMap.test.js +0 -145
  1498. package/test/contracts/lib/openzeppelin-contracts/test/utils/structs/DoubleEndedQueue.test.js +0 -99
  1499. package/test/contracts/lib/openzeppelin-contracts/test/utils/structs/EnumerableMap.behavior.js +0 -185
  1500. package/test/contracts/lib/openzeppelin-contracts/test/utils/structs/EnumerableMap.test.js +0 -154
  1501. package/test/contracts/lib/openzeppelin-contracts/test/utils/structs/EnumerableSet.behavior.js +0 -129
  1502. package/test/contracts/lib/openzeppelin-contracts/test/utils/structs/EnumerableSet.test.js +0 -79
  1503. package/test/contracts/out/AccessControl.sol/AccessControl.json +0 -1
  1504. package/test/contracts/out/AccessControlCrossChain.sol/AccessControlCrossChain.json +0 -1
  1505. package/test/contracts/out/AccessControlCrossChainMock.sol/AccessControlCrossChainMock.json +0 -1
  1506. package/test/contracts/out/AccessControlDefaultAdminRules.sol/AccessControlDefaultAdminRules.json +0 -1
  1507. package/test/contracts/out/AccessControlEnumerable.sol/AccessControlEnumerable.json +0 -1
  1508. package/test/contracts/out/Address.sol/Address.json +0 -1
  1509. package/test/contracts/out/Arrays.sol/Arrays.json +0 -1
  1510. package/test/contracts/out/ArraysMock.sol/AddressArraysMock.json +0 -1
  1511. package/test/contracts/out/ArraysMock.sol/Bytes32ArraysMock.json +0 -1
  1512. package/test/contracts/out/ArraysMock.sol/Uint256ArraysMock.json +0 -1
  1513. package/test/contracts/out/BadBeacon.sol/BadBeaconNoImpl.json +0 -1
  1514. package/test/contracts/out/BadBeacon.sol/BadBeaconNotContract.json +0 -1
  1515. package/test/contracts/out/Base.sol/CommonBase.json +0 -1
  1516. package/test/contracts/out/Base.sol/ScriptBase.json +0 -1
  1517. package/test/contracts/out/Base.sol/TestBase.json +0 -1
  1518. package/test/contracts/out/Base64.sol/Base64.json +0 -1
  1519. package/test/contracts/out/Base64Dirty.sol/Base64Dirty.json +0 -1
  1520. package/test/contracts/out/BeaconProxy.sol/BeaconProxy.json +0 -1
  1521. package/test/contracts/out/BitMaps.sol/BitMaps.json +0 -1
  1522. package/test/contracts/out/CallReceiverMock.sol/CallReceiverMock.json +0 -1
  1523. package/test/contracts/out/Checkpoints.sol/Checkpoints.json +0 -1
  1524. package/test/contracts/out/Checkpoints.t.sol/CheckpointsHistoryTest.json +0 -1
  1525. package/test/contracts/out/Checkpoints.t.sol/CheckpointsTrace160Test.json +0 -1
  1526. package/test/contracts/out/Checkpoints.t.sol/CheckpointsTrace224Test.json +0 -1
  1527. package/test/contracts/out/ClashingImplementation.sol/ClashingImplementation.json +0 -1
  1528. package/test/contracts/out/Clones.sol/Clones.json +0 -1
  1529. package/test/contracts/out/CompTimelock.sol/CompTimelock.json +0 -1
  1530. package/test/contracts/out/CompilationScript.sol/CompilationScript.json +0 -1
  1531. package/test/contracts/out/CompilationScriptBase.sol/CompilationScriptBase.json +0 -1
  1532. package/test/contracts/out/CompilationTest.sol/CompilationTest.json +0 -1
  1533. package/test/contracts/out/CompilationTestBase.sol/CompilationTestBase.json +0 -1
  1534. package/test/contracts/out/ConditionalEscrow.sol/ConditionalEscrow.json +0 -1
  1535. package/test/contracts/out/ConditionalEscrowMock.sol/ConditionalEscrowMock.json +0 -1
  1536. package/test/contracts/out/Context.sol/Context.json +0 -1
  1537. package/test/contracts/out/ContextMock.sol/ContextMock.json +0 -1
  1538. package/test/contracts/out/ContextMock.sol/ContextMockCaller.json +0 -1
  1539. package/test/contracts/out/Counters.sol/Counters.json +0 -1
  1540. package/test/contracts/out/Create2.sol/Create2.json +0 -1
  1541. package/test/contracts/out/CrossChainEnabled.sol/CrossChainEnabled.json +0 -1
  1542. package/test/contracts/out/CrossChainEnabledAMB.sol/CrossChainEnabledAMB.json +0 -1
  1543. package/test/contracts/out/CrossChainEnabledArbitrumL1.sol/CrossChainEnabledArbitrumL1.json +0 -1
  1544. package/test/contracts/out/CrossChainEnabledArbitrumL2.sol/CrossChainEnabledArbitrumL2.json +0 -1
  1545. package/test/contracts/out/CrossChainEnabledOptimism.sol/CrossChainEnabledOptimism.json +0 -1
  1546. package/test/contracts/out/CrossChainEnabledPolygonChild.sol/CrossChainEnabledPolygonChild.json +0 -1
  1547. package/test/contracts/out/DoubleEndedQueue.sol/DoubleEndedQueue.json +0 -1
  1548. package/test/contracts/out/DummyImplementation.sol/DummyImplementation.json +0 -1
  1549. package/test/contracts/out/DummyImplementation.sol/DummyImplementationV2.json +0 -1
  1550. package/test/contracts/out/DummyImplementation.sol/Impl.json +0 -1
  1551. package/test/contracts/out/ECDSA.sol/ECDSA.json +0 -1
  1552. package/test/contracts/out/EIP712.sol/EIP712.json +0 -1
  1553. package/test/contracts/out/EIP712Verifier.sol/EIP712Verifier.json +0 -1
  1554. package/test/contracts/out/ERC1155.sol/ERC1155.json +0 -1
  1555. package/test/contracts/out/ERC1155Burnable.sol/ERC1155Burnable.json +0 -1
  1556. package/test/contracts/out/ERC1155Holder.sol/ERC1155Holder.json +0 -1
  1557. package/test/contracts/out/ERC1155Pausable.sol/ERC1155Pausable.json +0 -1
  1558. package/test/contracts/out/ERC1155PresetMinterPauser.sol/ERC1155PresetMinterPauser.json +0 -1
  1559. package/test/contracts/out/ERC1155Receiver.sol/ERC1155Receiver.json +0 -1
  1560. package/test/contracts/out/ERC1155ReceiverMock.sol/ERC1155ReceiverMock.json +0 -1
  1561. package/test/contracts/out/ERC1155Supply.sol/ERC1155Supply.json +0 -1
  1562. package/test/contracts/out/ERC1155URIStorage.sol/ERC1155URIStorage.json +0 -1
  1563. package/test/contracts/out/ERC1271WalletMock.sol/ERC1271MaliciousMock.json +0 -1
  1564. package/test/contracts/out/ERC1271WalletMock.sol/ERC1271WalletMock.json +0 -1
  1565. package/test/contracts/out/ERC165.sol/ERC165.json +0 -1
  1566. package/test/contracts/out/ERC165Checker.sol/ERC165Checker.json +0 -1
  1567. package/test/contracts/out/ERC165MaliciousData.sol/ERC165MaliciousData.json +0 -1
  1568. package/test/contracts/out/ERC165MissingData.sol/ERC165MissingData.json +0 -1
  1569. package/test/contracts/out/ERC165NotSupported.sol/ERC165NotSupported.json +0 -1
  1570. package/test/contracts/out/ERC165ReturnBomb.sol/ERC165ReturnBombMock.json +0 -1
  1571. package/test/contracts/out/ERC165Storage.sol/ERC165Storage.json +0 -1
  1572. package/test/contracts/out/ERC1820Implementer.sol/ERC1820Implementer.json +0 -1
  1573. package/test/contracts/out/ERC1967Proxy.sol/ERC1967Proxy.json +0 -1
  1574. package/test/contracts/out/ERC1967Upgrade.sol/ERC1967Upgrade.json +0 -1
  1575. package/test/contracts/out/ERC20.sol/ERC20.json +0 -1
  1576. package/test/contracts/out/ERC20Burnable.sol/ERC20Burnable.json +0 -1
  1577. package/test/contracts/out/ERC20Capped.sol/ERC20Capped.json +0 -1
  1578. package/test/contracts/out/ERC20DecimalsMock.sol/ERC20DecimalsMock.json +0 -1
  1579. package/test/contracts/out/ERC20ExcessDecimalsMock.sol/ERC20ExcessDecimalsMock.json +0 -1
  1580. package/test/contracts/out/ERC20FlashMint.sol/ERC20FlashMint.json +0 -1
  1581. package/test/contracts/out/ERC20FlashMintMock.sol/ERC20FlashMintMock.json +0 -1
  1582. package/test/contracts/out/ERC20ForceApproveMock.sol/ERC20ForceApproveMock.json +0 -1
  1583. package/test/contracts/out/ERC20Mock.sol/ERC20Mock.json +0 -1
  1584. package/test/contracts/out/ERC20MulticallMock.sol/ERC20MulticallMock.json +0 -1
  1585. package/test/contracts/out/ERC20NoReturnMock.sol/ERC20NoReturnMock.json +0 -1
  1586. package/test/contracts/out/ERC20Pausable.sol/ERC20Pausable.json +0 -1
  1587. package/test/contracts/out/ERC20Permit.sol/ERC20Permit.json +0 -1
  1588. package/test/contracts/out/ERC20PermitNoRevertMock.sol/ERC20PermitNoRevertMock.json +0 -1
  1589. package/test/contracts/out/ERC20PresetFixedSupply.sol/ERC20PresetFixedSupply.json +0 -1
  1590. package/test/contracts/out/ERC20PresetMinterPauser.sol/ERC20PresetMinterPauser.json +0 -1
  1591. package/test/contracts/out/ERC20Reentrant.sol/ERC20Reentrant.json +0 -1
  1592. package/test/contracts/out/ERC20ReturnFalseMock.sol/ERC20ReturnFalseMock.json +0 -1
  1593. package/test/contracts/out/ERC20Snapshot.sol/ERC20Snapshot.json +0 -1
  1594. package/test/contracts/out/ERC20Votes.sol/ERC20Votes.json +0 -1
  1595. package/test/contracts/out/ERC20VotesComp.sol/ERC20VotesComp.json +0 -1
  1596. package/test/contracts/out/ERC20VotesLegacyMock.sol/ERC20VotesLegacyMock.json +0 -1
  1597. package/test/contracts/out/ERC20Wrapper.sol/ERC20Wrapper.json +0 -1
  1598. package/test/contracts/out/ERC2771Context.sol/ERC2771Context.json +0 -1
  1599. package/test/contracts/out/ERC2771ContextMock.sol/ERC2771ContextMock.json +0 -1
  1600. package/test/contracts/out/ERC2981.sol/ERC2981.json +0 -1
  1601. package/test/contracts/out/ERC3156FlashBorrowerMock.sol/ERC3156FlashBorrowerMock.json +0 -1
  1602. package/test/contracts/out/ERC4626.prop.sol/ERC4626Prop.json +0 -1
  1603. package/test/contracts/out/ERC4626.prop.sol/IERC20.json +0 -1
  1604. package/test/contracts/out/ERC4626.prop.sol/IERC4626.json +0 -1
  1605. package/test/contracts/out/ERC4626.sol/ERC4626.json +0 -1
  1606. package/test/contracts/out/ERC4626.t.sol/ERC4626StdTest.json +0 -1
  1607. package/test/contracts/out/ERC4626.t.sol/ERC4626VaultOffsetMock.json +0 -1
  1608. package/test/contracts/out/ERC4626.test.sol/ERC4626Test.json +0 -1
  1609. package/test/contracts/out/ERC4626.test.sol/IMockERC20.json +0 -1
  1610. package/test/contracts/out/ERC4626Fees.sol/ERC4626Fees.json +0 -1
  1611. package/test/contracts/out/ERC4626Mock.sol/ERC4626Mock.json +0 -1
  1612. package/test/contracts/out/ERC4626OffsetMock.sol/ERC4626OffsetMock.json +0 -1
  1613. package/test/contracts/out/ERC4646FeesMock.sol/ERC4626FeesMock.json +0 -1
  1614. package/test/contracts/out/ERC721.sol/ERC721.json +0 -1
  1615. package/test/contracts/out/ERC721Burnable.sol/ERC721Burnable.json +0 -1
  1616. package/test/contracts/out/ERC721Consecutive.sol/ERC721Consecutive.json +0 -1
  1617. package/test/contracts/out/ERC721Consecutive.t.sol/ERC721ConsecutiveTarget.json +0 -1
  1618. package/test/contracts/out/ERC721Consecutive.t.sol/ERC721ConsecutiveTest.json +0 -1
  1619. package/test/contracts/out/ERC721ConsecutiveEnumerableMock.sol/ERC721ConsecutiveEnumerableMock.json +0 -1
  1620. package/test/contracts/out/ERC721ConsecutiveMock.sol/ERC721ConsecutiveMock.json +0 -1
  1621. package/test/contracts/out/ERC721ConsecutiveMock.sol/ERC721ConsecutiveNoConstructorMintMock.json +0 -1
  1622. package/test/contracts/out/ERC721Enumerable.sol/ERC721Enumerable.json +0 -1
  1623. package/test/contracts/out/ERC721Holder.sol/ERC721Holder.json +0 -1
  1624. package/test/contracts/out/ERC721Pausable.sol/ERC721Pausable.json +0 -1
  1625. package/test/contracts/out/ERC721PresetMinterPauserAutoId.sol/ERC721PresetMinterPauserAutoId.json +0 -1
  1626. package/test/contracts/out/ERC721ReceiverMock.sol/ERC721ReceiverMock.json +0 -1
  1627. package/test/contracts/out/ERC721Royalty.sol/ERC721Royalty.json +0 -1
  1628. package/test/contracts/out/ERC721URIStorage.sol/ERC721URIStorage.json +0 -1
  1629. package/test/contracts/out/ERC721URIStorageMock.sol/ERC721URIStorageMock.json +0 -1
  1630. package/test/contracts/out/ERC721Votes.sol/ERC721Votes.json +0 -1
  1631. package/test/contracts/out/ERC721Wrapper.sol/ERC721Wrapper.json +0 -1
  1632. package/test/contracts/out/ERC777.sol/ERC777.json +0 -1
  1633. package/test/contracts/out/ERC777Mock.sol/ERC777Mock.json +0 -1
  1634. package/test/contracts/out/ERC777PresetFixedSupply.sol/ERC777PresetFixedSupply.json +0 -1
  1635. package/test/contracts/out/ERC777SenderRecipientMock.sol/ERC777SenderRecipientMock.json +0 -1
  1636. package/test/contracts/out/EnumerableMap.sol/EnumerableMap.json +0 -1
  1637. package/test/contracts/out/EnumerableSet.sol/EnumerableSet.json +0 -1
  1638. package/test/contracts/out/Escrow.sol/Escrow.json +0 -1
  1639. package/test/contracts/out/EtherReceiverMock.sol/EtherReceiverMock.json +0 -1
  1640. package/test/contracts/out/Governor.sol/Governor.json +0 -1
  1641. package/test/contracts/out/Governor.t.sol/GovernorInternalTest.json +0 -1
  1642. package/test/contracts/out/GovernorCompMock.sol/GovernorCompMock.json +0 -1
  1643. package/test/contracts/out/GovernorCompatibilityBravo.sol/GovernorCompatibilityBravo.json +0 -1
  1644. package/test/contracts/out/GovernorCompatibilityBravoMock.sol/GovernorCompatibilityBravoMock.json +0 -1
  1645. package/test/contracts/out/GovernorCountingSimple.sol/GovernorCountingSimple.json +0 -1
  1646. package/test/contracts/out/GovernorMock.sol/GovernorMock.json +0 -1
  1647. package/test/contracts/out/GovernorPreventLateQuorum.sol/GovernorPreventLateQuorum.json +0 -1
  1648. package/test/contracts/out/GovernorPreventLateQuorumMock.sol/GovernorPreventLateQuorumMock.json +0 -1
  1649. package/test/contracts/out/GovernorProposalThreshold.sol/GovernorProposalThreshold.json +0 -1
  1650. package/test/contracts/out/GovernorSettings.sol/GovernorSettings.json +0 -1
  1651. package/test/contracts/out/GovernorTimelockCompound.sol/GovernorTimelockCompound.json +0 -1
  1652. package/test/contracts/out/GovernorTimelockCompoundMock.sol/GovernorTimelockCompoundMock.json +0 -1
  1653. package/test/contracts/out/GovernorTimelockControl.sol/GovernorTimelockControl.json +0 -1
  1654. package/test/contracts/out/GovernorTimelockControlMock.sol/GovernorTimelockControlMock.json +0 -1
  1655. package/test/contracts/out/GovernorVoteMock.sol/GovernorVoteMocks.json +0 -1
  1656. package/test/contracts/out/GovernorVotes.sol/GovernorVotes.json +0 -1
  1657. package/test/contracts/out/GovernorVotesComp.sol/GovernorVotesComp.json +0 -1
  1658. package/test/contracts/out/GovernorVotesQuorumFraction.sol/GovernorVotesQuorumFraction.json +0 -1
  1659. package/test/contracts/out/GovernorWithParamsMock.sol/GovernorWithParamsMock.json +0 -1
  1660. package/test/contracts/out/IAMB.sol/IAMB.json +0 -1
  1661. package/test/contracts/out/IAccessControl.sol/IAccessControl.json +0 -1
  1662. package/test/contracts/out/IAccessControlDefaultAdminRules.sol/IAccessControlDefaultAdminRules.json +0 -1
  1663. package/test/contracts/out/IAccessControlEnumerable.sol/IAccessControlEnumerable.json +0 -1
  1664. package/test/contracts/out/IArbSys.sol/IArbSys.json +0 -1
  1665. package/test/contracts/out/IBeacon.sol/IBeacon.json +0 -1
  1666. package/test/contracts/out/IBridge.sol/IBridge.json +0 -1
  1667. package/test/contracts/out/ICompoundTimelock.sol/ICompoundTimelock.json +0 -1
  1668. package/test/contracts/out/ICrossDomainMessenger.sol/ICrossDomainMessenger.json +0 -1
  1669. package/test/contracts/out/IDelayedMessageProvider.sol/IDelayedMessageProvider.json +0 -1
  1670. package/test/contracts/out/IERC1155.sol/IERC1155.json +0 -1
  1671. package/test/contracts/out/IERC1155MetadataURI.sol/IERC1155MetadataURI.json +0 -1
  1672. package/test/contracts/out/IERC1155Receiver.sol/IERC1155Receiver.json +0 -1
  1673. package/test/contracts/out/IERC1271.sol/IERC1271.json +0 -1
  1674. package/test/contracts/out/IERC1363.sol/IERC1363.json +0 -1
  1675. package/test/contracts/out/IERC1363Receiver.sol/IERC1363Receiver.json +0 -1
  1676. package/test/contracts/out/IERC1363Spender.sol/IERC1363Spender.json +0 -1
  1677. package/test/contracts/out/IERC165.sol/IERC165.json +0 -1
  1678. package/test/contracts/out/IERC1820Implementer.sol/IERC1820Implementer.json +0 -1
  1679. package/test/contracts/out/IERC1820Registry.sol/IERC1820Registry.json +0 -1
  1680. package/test/contracts/out/IERC1967.sol/IERC1967.json +0 -1
  1681. package/test/contracts/out/IERC20.sol/IERC20.json +0 -1
  1682. package/test/contracts/out/IERC20Metadata.sol/IERC20Metadata.json +0 -1
  1683. package/test/contracts/out/IERC20Permit.sol/IERC20Permit.json +0 -1
  1684. package/test/contracts/out/IERC2309.sol/IERC2309.json +0 -1
  1685. package/test/contracts/out/IERC2612.sol/IERC2612.json +0 -1
  1686. package/test/contracts/out/IERC2981.sol/IERC2981.json +0 -1
  1687. package/test/contracts/out/IERC3156FlashBorrower.sol/IERC3156FlashBorrower.json +0 -1
  1688. package/test/contracts/out/IERC3156FlashLender.sol/IERC3156FlashLender.json +0 -1
  1689. package/test/contracts/out/IERC4626.sol/IERC4626.json +0 -1
  1690. package/test/contracts/out/IERC4906.sol/IERC4906.json +0 -1
  1691. package/test/contracts/out/IERC5267.sol/IERC5267.json +0 -1
  1692. package/test/contracts/out/IERC5313.sol/IERC5313.json +0 -1
  1693. package/test/contracts/out/IERC5805.sol/IERC5805.json +0 -1
  1694. package/test/contracts/out/IERC6372.sol/IERC6372.json +0 -1
  1695. package/test/contracts/out/IERC721.sol/IERC721.json +0 -1
  1696. package/test/contracts/out/IERC721.sol/IERC721Enumerable.json +0 -1
  1697. package/test/contracts/out/IERC721.sol/IERC721Metadata.json +0 -1
  1698. package/test/contracts/out/IERC721.sol/IERC721TokenReceiver.json +0 -1
  1699. package/test/contracts/out/IERC721Enumerable.sol/IERC721Enumerable.json +0 -1
  1700. package/test/contracts/out/IERC721Metadata.sol/IERC721Metadata.json +0 -1
  1701. package/test/contracts/out/IERC721Receiver.sol/IERC721Receiver.json +0 -1
  1702. package/test/contracts/out/IERC777.sol/IERC777.json +0 -1
  1703. package/test/contracts/out/IERC777Recipient.sol/IERC777Recipient.json +0 -1
  1704. package/test/contracts/out/IERC777Sender.sol/IERC777Sender.json +0 -1
  1705. package/test/contracts/out/IFxMessageProcessor.sol/IFxMessageProcessor.json +0 -1
  1706. package/test/contracts/out/IGovernor.sol/IGovernor.json +0 -1
  1707. package/test/contracts/out/IGovernorCompatibilityBravo.sol/IGovernorCompatibilityBravo.json +0 -1
  1708. package/test/contracts/out/IGovernorTimelock.sol/IGovernorTimelock.json +0 -1
  1709. package/test/contracts/out/IInbox.sol/IInbox.json +0 -1
  1710. package/test/contracts/out/IMulticall3.sol/IMulticall3.json +0 -1
  1711. package/test/contracts/out/IOutbox.sol/IOutbox.json +0 -1
  1712. package/test/contracts/out/IVotes.sol/IVotes.json +0 -1
  1713. package/test/contracts/out/Initializable.sol/Initializable.json +0 -1
  1714. package/test/contracts/out/InitializableMock.sol/ChildConstructorInitializableMock.json +0 -1
  1715. package/test/contracts/out/InitializableMock.sol/ConstructorInitializableMock.json +0 -1
  1716. package/test/contracts/out/InitializableMock.sol/DisableBad1.json +0 -1
  1717. package/test/contracts/out/InitializableMock.sol/DisableBad2.json +0 -1
  1718. package/test/contracts/out/InitializableMock.sol/DisableNew.json +0 -1
  1719. package/test/contracts/out/InitializableMock.sol/DisableOk.json +0 -1
  1720. package/test/contracts/out/InitializableMock.sol/DisableOld.json +0 -1
  1721. package/test/contracts/out/InitializableMock.sol/InitializableMock.json +0 -1
  1722. package/test/contracts/out/InitializableMock.sol/ReinitializerMock.json +0 -1
  1723. package/test/contracts/out/LibAMB.sol/LibAMB.json +0 -1
  1724. package/test/contracts/out/LibArbitrumL1.sol/LibArbitrumL1.json +0 -1
  1725. package/test/contracts/out/LibArbitrumL2.sol/LibArbitrumL2.json +0 -1
  1726. package/test/contracts/out/LibOptimism.sol/LibOptimism.json +0 -1
  1727. package/test/contracts/out/Math.sol/Math.json +0 -1
  1728. package/test/contracts/out/Math.t.sol/MathTest.json +0 -1
  1729. package/test/contracts/out/MerkleProof.sol/MerkleProof.json +0 -1
  1730. package/test/contracts/out/MinimalForwarder.sol/MinimalForwarder.json +0 -1
  1731. package/test/contracts/out/MockMiladyAgentRegistry.sol/MockMiladyAgentRegistry.json +0 -1
  1732. package/test/contracts/out/MockMiladyCollection.sol/MockMiladyCollection.json +0 -1
  1733. package/test/contracts/out/Multicall.sol/Multicall.json +0 -1
  1734. package/test/contracts/out/MulticallTest.sol/MulticallTest.json +0 -1
  1735. package/test/contracts/out/MultipleInheritanceInitializableMocks.sol/SampleChild.json +0 -1
  1736. package/test/contracts/out/MultipleInheritanceInitializableMocks.sol/SampleFather.json +0 -1
  1737. package/test/contracts/out/MultipleInheritanceInitializableMocks.sol/SampleGramps.json +0 -1
  1738. package/test/contracts/out/MultipleInheritanceInitializableMocks.sol/SampleHuman.json +0 -1
  1739. package/test/contracts/out/MultipleInheritanceInitializableMocks.sol/SampleMother.json +0 -1
  1740. package/test/contracts/out/MyGovernor.sol/MyGovernor.json +0 -1
  1741. package/test/contracts/out/MyGovernor1.sol/MyGovernor1.json +0 -1
  1742. package/test/contracts/out/MyGovernor2.sol/MyGovernor2.json +0 -1
  1743. package/test/contracts/out/MyGovernor3.sol/MyGovernor3.json +0 -1
  1744. package/test/contracts/out/MyToken.sol/MyToken.json +0 -1
  1745. package/test/contracts/out/MyTokenTimestampBased.sol/MyTokenTimestampBased.json +0 -1
  1746. package/test/contracts/out/MyTokenWrapped.sol/MyTokenWrapped.json +0 -1
  1747. package/test/contracts/out/Ownable.sol/Ownable.json +0 -1
  1748. package/test/contracts/out/Ownable2Step.sol/Ownable2Step.json +0 -1
  1749. package/test/contracts/out/Pausable.sol/Pausable.json +0 -1
  1750. package/test/contracts/out/PausableMock.sol/PausableMock.json +0 -1
  1751. package/test/contracts/out/PaymentSplitter.sol/PaymentSplitter.json +0 -1
  1752. package/test/contracts/out/Proxy.sol/Proxy.json +0 -1
  1753. package/test/contracts/out/ProxyAdmin.sol/ProxyAdmin.json +0 -1
  1754. package/test/contracts/out/PullPayment.sol/PullPayment.json +0 -1
  1755. package/test/contracts/out/PullPaymentMock.sol/PullPaymentMock.json +0 -1
  1756. package/test/contracts/out/ReentrancyAttack.sol/ReentrancyAttack.json +0 -1
  1757. package/test/contracts/out/ReentrancyGuard.sol/ReentrancyGuard.json +0 -1
  1758. package/test/contracts/out/ReentrancyMock.sol/ReentrancyMock.json +0 -1
  1759. package/test/contracts/out/RefundEscrow.sol/RefundEscrow.json +0 -1
  1760. package/test/contracts/out/RegressionImplementation.sol/Implementation1.json +0 -1
  1761. package/test/contracts/out/RegressionImplementation.sol/Implementation2.json +0 -1
  1762. package/test/contracts/out/RegressionImplementation.sol/Implementation3.json +0 -1
  1763. package/test/contracts/out/RegressionImplementation.sol/Implementation4.json +0 -1
  1764. package/test/contracts/out/SafeCast.sol/SafeCast.json +0 -1
  1765. package/test/contracts/out/SafeERC20.sol/SafeERC20.json +0 -1
  1766. package/test/contracts/out/SafeMath.sol/SafeMath.json +0 -1
  1767. package/test/contracts/out/SafeMathMemoryCheck.sol/SafeMathMemoryCheck.json +0 -1
  1768. package/test/contracts/out/Script.sol/Script.json +0 -1
  1769. package/test/contracts/out/ShortStrings.sol/ShortStrings.json +0 -1
  1770. package/test/contracts/out/ShortStrings.t.sol/ShortStringsTest.json +0 -1
  1771. package/test/contracts/out/SignatureChecker.sol/SignatureChecker.json +0 -1
  1772. package/test/contracts/out/SignedMath.sol/SignedMath.json +0 -1
  1773. package/test/contracts/out/SignedSafeMath.sol/SignedSafeMath.json +0 -1
  1774. package/test/contracts/out/SingleInheritanceInitializableMocks.sol/MigratableMockV1.json +0 -1
  1775. package/test/contracts/out/SingleInheritanceInitializableMocks.sol/MigratableMockV2.json +0 -1
  1776. package/test/contracts/out/SingleInheritanceInitializableMocks.sol/MigratableMockV3.json +0 -1
  1777. package/test/contracts/out/StdAssertions.sol/StdAssertions.json +0 -1
  1778. package/test/contracts/out/StdAssertions.t.sol/StdAssertionsTest.json +0 -1
  1779. package/test/contracts/out/StdAssertions.t.sol/TestMockCall.json +0 -1
  1780. package/test/contracts/out/StdAssertions.t.sol/TestTest.json +0 -1
  1781. package/test/contracts/out/StdChains.sol/StdChains.json +0 -1
  1782. package/test/contracts/out/StdChains.t.sol/StdChainsTest.json +0 -1
  1783. package/test/contracts/out/StdCheats.sol/StdCheats.json +0 -1
  1784. package/test/contracts/out/StdCheats.sol/StdCheatsSafe.json +0 -1
  1785. package/test/contracts/out/StdCheats.t.sol/Bar.json +0 -1
  1786. package/test/contracts/out/StdCheats.t.sol/BarERC1155.json +0 -1
  1787. package/test/contracts/out/StdCheats.t.sol/BarERC721.json +0 -1
  1788. package/test/contracts/out/StdCheats.t.sol/RevertingContract.json +0 -1
  1789. package/test/contracts/out/StdCheats.t.sol/StdCheatsTest.json +0 -1
  1790. package/test/contracts/out/StdError.sol/stdError.json +0 -1
  1791. package/test/contracts/out/StdError.t.sol/ErrorsTest.json +0 -1
  1792. package/test/contracts/out/StdError.t.sol/StdErrorsTest.json +0 -1
  1793. package/test/contracts/out/StdInvariant.sol/StdInvariant.json +0 -1
  1794. package/test/contracts/out/StdJson.sol/stdJson.json +0 -1
  1795. package/test/contracts/out/StdMath.sol/stdMath.json +0 -1
  1796. package/test/contracts/out/StdMath.t.sol/StdMathTest.json +0 -1
  1797. package/test/contracts/out/StdStorage.sol/stdStorage.json +0 -1
  1798. package/test/contracts/out/StdStorage.sol/stdStorageSafe.json +0 -1
  1799. package/test/contracts/out/StdStorage.t.sol/StdStorageTest.json +0 -1
  1800. package/test/contracts/out/StdStorage.t.sol/StorageTest.json +0 -1
  1801. package/test/contracts/out/StdStyle.sol/StdStyle.json +0 -1
  1802. package/test/contracts/out/StdStyle.t.sol/StdStyleTest.json +0 -1
  1803. package/test/contracts/out/StdUtils.sol/StdUtils.json +0 -1
  1804. package/test/contracts/out/StdUtils.t.sol/StdUtilsForkTest.json +0 -1
  1805. package/test/contracts/out/StdUtils.t.sol/StdUtilsMock.json +0 -1
  1806. package/test/contracts/out/StdUtils.t.sol/StdUtilsTest.json +0 -1
  1807. package/test/contracts/out/StorageSlot.sol/StorageSlot.json +0 -1
  1808. package/test/contracts/out/StorageSlotMock.sol/StorageSlotMock.json +0 -1
  1809. package/test/contracts/out/Strings.sol/Strings.json +0 -1
  1810. package/test/contracts/out/TimelockController.sol/TimelockController.json +0 -1
  1811. package/test/contracts/out/TimelockReentrant.sol/TimelockReentrant.json +0 -1
  1812. package/test/contracts/out/Timers.sol/Timers.json +0 -1
  1813. package/test/contracts/out/TimersBlockNumberImpl.sol/TimersBlockNumberImpl.json +0 -1
  1814. package/test/contracts/out/TimersTimestampImpl.sol/TimersTimestampImpl.json +0 -1
  1815. package/test/contracts/out/TokenTimelock.sol/TokenTimelock.json +0 -1
  1816. package/test/contracts/out/TransparentUpgradeableProxy.sol/ITransparentUpgradeableProxy.json +0 -1
  1817. package/test/contracts/out/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +0 -1
  1818. package/test/contracts/out/UUPSLegacy.sol/UUPSUpgradeableLegacyMock.json +0 -1
  1819. package/test/contracts/out/UUPSUpgradeable.sol/UUPSUpgradeable.json +0 -1
  1820. package/test/contracts/out/UUPSUpgradeableMock.sol/NonUpgradeableMock.json +0 -1
  1821. package/test/contracts/out/UUPSUpgradeableMock.sol/UUPSUpgradeableMock.json +0 -1
  1822. package/test/contracts/out/UUPSUpgradeableMock.sol/UUPSUpgradeableUnsafeMock.json +0 -1
  1823. package/test/contracts/out/UpgradeableBeacon.sol/UpgradeableBeacon.json +0 -1
  1824. package/test/contracts/out/VestingWallet.sol/VestingWallet.json +0 -1
  1825. package/test/contracts/out/Vm.sol/Vm.json +0 -1
  1826. package/test/contracts/out/Vm.sol/VmSafe.json +0 -1
  1827. package/test/contracts/out/Votes.sol/Votes.json +0 -1
  1828. package/test/contracts/out/VotesMock.sol/VotesMock.json +0 -1
  1829. package/test/contracts/out/VotesMock.sol/VotesTimestampMock.json +0 -1
  1830. package/test/contracts/out/VotesTimestamp.sol/ERC20VotesCompTimestampMock.json +0 -1
  1831. package/test/contracts/out/VotesTimestamp.sol/ERC20VotesTimestampMock.json +0 -1
  1832. package/test/contracts/out/VotesTimestamp.sol/ERC721VotesTimestampMock.json +0 -1
  1833. package/test/contracts/out/bridges.sol/BaseRelayMock.json +0 -1
  1834. package/test/contracts/out/bridges.sol/BridgeAMBMock.json +0 -1
  1835. package/test/contracts/out/bridges.sol/BridgeArbitrumL1Inbox.json +0 -1
  1836. package/test/contracts/out/bridges.sol/BridgeArbitrumL1Mock.json +0 -1
  1837. package/test/contracts/out/bridges.sol/BridgeArbitrumL1Outbox.json +0 -1
  1838. package/test/contracts/out/bridges.sol/BridgeArbitrumL2Mock.json +0 -1
  1839. package/test/contracts/out/bridges.sol/BridgeOptimismMock.json +0 -1
  1840. package/test/contracts/out/bridges.sol/BridgePolygonChildMock.json +0 -1
  1841. package/test/contracts/out/build-info/2be03bb8eb1ccda1.json +0 -1
  1842. package/test/contracts/out/console.sol/console.json +0 -1
  1843. package/test/contracts/out/console2.sol/console2.json +0 -1
  1844. package/test/contracts/out/demo.sol/DemoTest.json +0 -1
  1845. package/test/contracts/out/demo.sol/DemoTestWithSetUp.json +0 -1
  1846. package/test/contracts/out/draft-IERC1822.sol/IERC1822Proxiable.json +0 -1
  1847. package/test/contracts/out/interfaces/IERC1155.sol/IERC1155.json +0 -1
  1848. package/test/contracts/out/interfaces/IERC165.sol/IERC165.json +0 -1
  1849. package/test/contracts/out/interfaces/IERC20.sol/IERC20.json +0 -1
  1850. package/test/contracts/out/interfaces/IERC4626.sol/IERC4626.json +0 -1
  1851. package/test/contracts/out/interfaces/IERC721.sol/IERC721.json +0 -1
  1852. package/test/contracts/out/receivers.sol/CrossChainEnabledAMBMock.json +0 -1
  1853. package/test/contracts/out/receivers.sol/CrossChainEnabledArbitrumL1Mock.json +0 -1
  1854. package/test/contracts/out/receivers.sol/CrossChainEnabledArbitrumL2Mock.json +0 -1
  1855. package/test/contracts/out/receivers.sol/CrossChainEnabledOptimismMock.json +0 -1
  1856. package/test/contracts/out/receivers.sol/CrossChainEnabledPolygonChildMock.json +0 -1
  1857. package/test/contracts/out/receivers.sol/Receiver.json +0 -1
  1858. package/test/contracts/out/test.sol/DSTest.json +0 -1
  1859. package/test/contracts/out/test.sol/Test.json +0 -1
  1860. package/test/contracts/out/test.t.sol/DemoTest.json +0 -1
  1861. package/test/database-api.e2e.test.ts +0 -666
  1862. package/test/debug-anvil.ts +0 -44
  1863. package/test/deferred-restart.e2e.test.ts +0 -368
  1864. package/test/diagnostics/integration-observability.test.ts +0 -135
  1865. package/test/discord-connector.e2e.test.ts +0 -463
  1866. package/test/e2e-global-setup.ts +0 -29
  1867. package/test/e2e-validation.e2e.test.ts +0 -1567
  1868. package/test/health-endpoint.e2e.test.ts +0 -95
  1869. package/test/knowledge-e2e-flow.e2e.test.ts +0 -134
  1870. package/test/knowledge-live.e2e.test.ts +0 -405
  1871. package/test/mcp-config.e2e.test.ts +0 -630
  1872. package/test/native-modules.e2e.test.ts +0 -470
  1873. package/test/permissions-api.e2e.test.ts +0 -637
  1874. package/test/plugin-install.e2e.test.ts +0 -645
  1875. package/test/plugin-lifecycle.e2e.test.ts +0 -617
  1876. package/test/plugin-management.e2e.test.ts +0 -311
  1877. package/test/provider-switch.e2e.test.ts +0 -322
  1878. package/test/runtime-debug.e2e.test.ts +0 -90
  1879. package/test/scripts/test-force.ts +0 -139
  1880. package/test/scripts/test-parallel.mjs +0 -192
  1881. package/test/scripts/validate-all-features.sh +0 -557
  1882. package/test/security/audit-log.test.ts +0 -227
  1883. package/test/security/network-policy.test.ts +0 -143
  1884. package/test/services/version-compat.test.ts +0 -117
  1885. package/test/setup.ts +0 -122
  1886. package/test/signal-connector.e2e.test.ts +0 -229
  1887. package/test/skills-marketplace-api.e2e.test.ts +0 -585
  1888. package/test/skills-marketplace-services.e2e.test.ts +0 -518
  1889. package/test/skills-marketplace.e2e.test.ts +0 -268
  1890. package/test/stubs/coding-agent-module.ts +0 -18
  1891. package/test/stubs/electron-module.ts +0 -17
  1892. package/test/stubs/empty-module.mjs +0 -4
  1893. package/test/stubs/pi-ai-module.ts +0 -12
  1894. package/test/subscription-auth.e2e.test.ts +0 -747
  1895. package/test/terminal-execution.e2e.test.ts +0 -134
  1896. package/test/terminal-run-limits.e2e.test.ts +0 -132
  1897. package/test/test-env.ts +0 -156
  1898. package/test/trajectory-collection.e2e.test.ts +0 -800
  1899. package/test/trajectory-database.e2e.test.ts +0 -218
  1900. package/test/trajectory-embedding-filter.e2e.test.ts +0 -317
  1901. package/test/trajectory-restart-carryover.e2e.test.ts +0 -306
  1902. package/test/trigger-execution-flow.e2e.test.ts +0 -132
  1903. package/test/trigger-runtime.e2e.test.ts +0 -247
  1904. package/test/wallet-api.e2e.test.ts +0 -1295
  1905. package/test/wallet-live.e2e.test.ts +0 -428
  1906. package/tsconfig.build.json +0 -18
  1907. package/tsconfig.json +0 -19
  1908. package/vitest.e2e.config.ts +0 -93
  1909. /package/{src/config/index.ts → packages/autonomous/src/config/index.js} +0 -0
  1910. /package/{src/config/types.ts → packages/autonomous/src/config/types.js} +0 -0
  1911. /package/{src/contracts/index.ts → packages/autonomous/src/contracts/index.js} +0 -0
  1912. /package/{src/index.ts → packages/autonomous/src/index.js} +0 -0
  1913. /package/{src/runtime/index.ts → packages/autonomous/src/runtime/index.js} +0 -0
  1914. /package/{src/services/index.ts → packages/autonomous/src/services/index.js} +0 -0
  1915. /package/{src/testing/index.ts → packages/autonomous/src/testing/index.js} +0 -0
@@ -1,4582 +0,0 @@
1
- /**
2
- * E2E tests for the real API server — NO MOCKS, NO API KEYS NEEDED.
3
- *
4
- * Imports and starts the actual `startApiServer()` from src/api/server.ts.
5
- * Tests every endpoint that doesn't require a running AgentRuntime:
6
- * - Status reporting
7
- * - Plugin discovery (real filesystem scan)
8
- * - Skill discovery (real filesystem scan)
9
- * - Onboarding options and status
10
- * - Config endpoints
11
- * - Log buffer
12
- * - Lifecycle state transitions
13
- * - Chat rejection when no runtime
14
- * - 404 handling
15
- * - CORS preflight
16
- *
17
- * These tests exercise REAL production code, not mocks.
18
- */
19
-
20
- import crypto from "node:crypto";
21
- import fs from "node:fs/promises";
22
- import http from "node:http";
23
- import os from "node:os";
24
- import path from "node:path";
25
- import type { AgentRuntime, Content, Task, UUID } from "@elizaos/core";
26
- import { afterAll, beforeAll, describe, expect, it, vi } from "vitest";
27
- import { WebSocket } from "ws";
28
- import { startApiServer } from "../src/api/server";
29
- import { AGENT_NAME_POOL } from "../src/runtime/onboarding-names";
30
-
31
- vi.mock("../src/services/mcp-marketplace", () => ({
32
- searchMcpMarketplace: vi
33
- .fn()
34
- .mockResolvedValue({ results: [{ name: "test", vendor: "test" }] }),
35
- getMcpServerDetails: vi.fn((name: string) =>
36
- name === "nonexistent-server-xyz-123"
37
- ? Promise.resolve(null)
38
- : Promise.resolve({ name: "test", description: "test" }),
39
- ),
40
- }));
41
-
42
- // ---------------------------------------------------------------------------
43
- // HTTP helper (identical to the one in agent-runtime.e2e.test.ts)
44
- // ---------------------------------------------------------------------------
45
-
46
- function req(
47
- port: number,
48
- method: string,
49
- p: string,
50
- body?: Record<string, unknown>,
51
- ): Promise<{
52
- status: number;
53
- headers: http.IncomingHttpHeaders;
54
- data: Record<string, unknown>;
55
- }> {
56
- return new Promise((resolve, reject) => {
57
- const b = body ? JSON.stringify(body) : undefined;
58
- const r = http.request(
59
- {
60
- hostname: "127.0.0.1",
61
- port,
62
- path: p,
63
- method,
64
- headers: {
65
- "Content-Type": "application/json",
66
- ...(b ? { "Content-Length": Buffer.byteLength(b) } : {}),
67
- },
68
- },
69
- (res) => {
70
- const ch: Buffer[] = [];
71
- res.on("data", (c: Buffer) => ch.push(c));
72
- res.on("end", () => {
73
- const raw = Buffer.concat(ch).toString("utf-8");
74
- let data: Record<string, unknown> = {};
75
- try {
76
- data = JSON.parse(raw) as Record<string, unknown>;
77
- } catch {
78
- data = { _raw: raw };
79
- }
80
- resolve({ status: res.statusCode ?? 0, headers: res.headers, data });
81
- });
82
- },
83
- );
84
- r.on("error", reject);
85
- if (b) r.write(b);
86
- r.end();
87
- });
88
- }
89
-
90
- function reqRaw(
91
- port: number,
92
- method: string,
93
- p: string,
94
- body?: Record<string, unknown>,
95
- ): Promise<{
96
- status: number;
97
- headers: http.IncomingHttpHeaders;
98
- data: Buffer;
99
- }> {
100
- return new Promise((resolve, reject) => {
101
- const b = body ? JSON.stringify(body) : undefined;
102
- const r = http.request(
103
- {
104
- hostname: "127.0.0.1",
105
- port,
106
- path: p,
107
- method,
108
- headers: {
109
- "Content-Type": "application/json",
110
- ...(b ? { "Content-Length": Buffer.byteLength(b) } : {}),
111
- },
112
- },
113
- (res) => {
114
- const chunks: Buffer[] = [];
115
- res.on("data", (chunk: Buffer) => chunks.push(chunk));
116
- res.on("end", () => {
117
- resolve({
118
- status: res.statusCode ?? 0,
119
- headers: res.headers,
120
- data: Buffer.concat(chunks),
121
- });
122
- });
123
- },
124
- );
125
- r.on("error", reject);
126
- if (b) r.write(b);
127
- r.end();
128
- });
129
- }
130
-
131
- type SseEventPayload = {
132
- type?: string;
133
- text?: string;
134
- fullText?: string;
135
- agentName?: string;
136
- message?: string;
137
- };
138
-
139
- function reqSse(
140
- port: number,
141
- p: string,
142
- body: Record<string, unknown>,
143
- ): Promise<{
144
- status: number;
145
- headers: http.IncomingHttpHeaders;
146
- events: SseEventPayload[];
147
- }> {
148
- return new Promise((resolve, reject) => {
149
- const b = JSON.stringify(body);
150
- const r = http.request(
151
- {
152
- hostname: "127.0.0.1",
153
- port,
154
- path: p,
155
- method: "POST",
156
- headers: {
157
- "Content-Type": "application/json",
158
- Accept: "text/event-stream",
159
- "Content-Length": Buffer.byteLength(b),
160
- },
161
- },
162
- (res) => {
163
- const chunks: Buffer[] = [];
164
- res.on("data", (c: Buffer) => chunks.push(c));
165
- res.on("end", () => {
166
- const raw = Buffer.concat(chunks).toString("utf-8");
167
- const events: SseEventPayload[] = [];
168
- const blocks = raw
169
- .split("\n\n")
170
- .map((block) => block.trim())
171
- .filter((block) => block.length > 0);
172
-
173
- for (const block of blocks) {
174
- for (const line of block.split("\n")) {
175
- if (!line.startsWith("data:")) continue;
176
- const payloadText = line.slice(5).trim();
177
- if (!payloadText) continue;
178
- try {
179
- events.push(JSON.parse(payloadText) as SseEventPayload);
180
- } catch {
181
- // Ignore malformed SSE payloads in test parsing.
182
- }
183
- }
184
- }
185
-
186
- resolve({
187
- status: res.statusCode ?? 0,
188
- headers: res.headers,
189
- events,
190
- });
191
- });
192
- },
193
- );
194
- r.on("error", reject);
195
- r.write(b);
196
- r.end();
197
- });
198
- }
199
-
200
- function waitForWsMessage(
201
- ws: WebSocket,
202
- predicate: (message: Record<string, unknown>) => boolean,
203
- timeoutMs = 3000,
204
- ): Promise<Record<string, unknown>> {
205
- return new Promise((resolve, reject) => {
206
- const timer = setTimeout(() => {
207
- cleanup();
208
- reject(new Error("Timed out waiting for websocket message"));
209
- }, timeoutMs);
210
-
211
- const onMessage = (raw: WebSocket.RawData) => {
212
- try {
213
- const text = Buffer.isBuffer(raw) ? raw.toString("utf-8") : String(raw);
214
- const message = JSON.parse(text) as Record<string, unknown>;
215
- if (predicate(message)) {
216
- cleanup();
217
- resolve(message);
218
- }
219
- } catch {
220
- // Ignore malformed WS frames in tests.
221
- }
222
- };
223
-
224
- const onError = (err: Error) => {
225
- cleanup();
226
- reject(err);
227
- };
228
-
229
- const cleanup = () => {
230
- clearTimeout(timer);
231
- ws.off("message", onMessage);
232
- ws.off("error", onError);
233
- };
234
-
235
- ws.on("message", onMessage);
236
- ws.on("error", onError);
237
- });
238
- }
239
-
240
- function createDeferred<T>() {
241
- let resolve!: (value: T | PromiseLike<T>) => void;
242
- const promise = new Promise<T>((res) => {
243
- resolve = res;
244
- });
245
- return { promise, resolve };
246
- }
247
-
248
- type TestAgentEvent = {
249
- runId: string;
250
- seq: number;
251
- stream: string;
252
- ts: number;
253
- data: Record<string, unknown>;
254
- sessionKey?: string;
255
- agentId?: string;
256
- roomId?: string;
257
- };
258
-
259
- type TestHeartbeatEvent = {
260
- ts: number;
261
- status: string;
262
- preview?: string;
263
- };
264
-
265
- class TestAgentEventService {
266
- private eventListeners = new Set<(event: TestAgentEvent) => void>();
267
- private heartbeatListeners = new Set<(event: TestHeartbeatEvent) => void>();
268
-
269
- subscribe(listener: (event: TestAgentEvent) => void): () => void {
270
- this.eventListeners.add(listener);
271
- return () => this.eventListeners.delete(listener);
272
- }
273
-
274
- subscribeHeartbeat(
275
- listener: (event: TestHeartbeatEvent) => void,
276
- ): () => void {
277
- this.heartbeatListeners.add(listener);
278
- return () => this.heartbeatListeners.delete(listener);
279
- }
280
-
281
- emit(event: TestAgentEvent): void {
282
- for (const listener of this.eventListeners) {
283
- listener(event);
284
- }
285
- }
286
-
287
- emitHeartbeat(event: TestHeartbeatEvent): void {
288
- for (const listener of this.heartbeatListeners) {
289
- listener(event);
290
- }
291
- }
292
- }
293
-
294
- function createRuntimeForStreamTests(options: {
295
- eventService?: TestAgentEventService;
296
- loopRunning?: boolean;
297
- }): AgentRuntime {
298
- const runtimeSubset = {
299
- agentId: "test-agent-id",
300
- character: { name: "StreamTestAgent" } as AgentRuntime["character"],
301
- getService: (serviceType: string) => {
302
- if (serviceType === "AGENT_EVENT") {
303
- return options.eventService ?? null;
304
- }
305
- if (serviceType === "AUTONOMY") {
306
- return {
307
- enableAutonomy: async () => {},
308
- disableAutonomy: async () => {},
309
- isLoopRunning: () => options.loopRunning ?? false,
310
- getStatus: () => ({ enabled: options.loopRunning ?? false }),
311
- } as Awaited<ReturnType<AgentRuntime["getService"]>>;
312
- }
313
- return null;
314
- },
315
- getRoomsByWorld: async () => [],
316
- getMemories: async () => [],
317
- getCache: async () => null,
318
- setCache: async () => {},
319
- };
320
- return runtimeSubset as unknown as AgentRuntime;
321
- }
322
-
323
- function createRuntimeForAutonomySurfaceTests(options: {
324
- eventService: TestAgentEventService;
325
- loopRunning?: boolean;
326
- }): AgentRuntime {
327
- const memoriesByRoom = new Map<string, Array<Record<string, unknown>>>();
328
- let tasks: Task[] = [
329
- {
330
- id: "00000000-0000-0000-0000-00000000a001" as UUID,
331
- name: "Autonomy surface task",
332
- description: "Validate workbench task visibility",
333
- tags: ["workbench-task"],
334
- metadata: {
335
- isCompleted: false,
336
- updatedAt: Date.now(),
337
- workbench: { kind: "task" },
338
- },
339
- } as Task,
340
- {
341
- id: "00000000-0000-0000-0000-00000000a002" as UUID,
342
- name: "TRIGGER_DISPATCH",
343
- description: "Autonomy surface trigger",
344
- tags: ["queue", "repeat", "trigger"],
345
- metadata: {
346
- updatedAt: Date.now(),
347
- updateInterval: 60_000,
348
- trigger: {
349
- triggerId: "00000000-0000-0000-0000-00000000a111",
350
- displayName: "Autonomy surface trigger",
351
- instructions: "Emit a proactive autonomy update",
352
- triggerType: "interval",
353
- enabled: true,
354
- wakeMode: "inject_now",
355
- createdBy: "test",
356
- intervalMs: 60_000,
357
- runCount: 0,
358
- nextRunAtMs: Date.now() + 60_000,
359
- },
360
- },
361
- } as Task,
362
- ];
363
-
364
- const runtimeSubset = {
365
- agentId: "autonomy-surface-agent",
366
- character: { name: "AutonomySurfaceAgent" } as AgentRuntime["character"],
367
- messageService: {
368
- handleMessage: async (
369
- _runtime: AgentRuntime,
370
- message: Record<string, unknown>,
371
- ) => {
372
- const prompt =
373
- typeof (message.content as Record<string, unknown> | undefined)
374
- ?.text === "string"
375
- ? String(
376
- (message.content as Record<string, unknown> | undefined)?.text,
377
- )
378
- : "autonomy";
379
- return {
380
- didRespond: true,
381
- responseContent: { text: `Autonomy says: ${prompt}` },
382
- responseMessages: [
383
- {
384
- id: crypto.randomUUID(),
385
- entityId: "autonomy-surface-agent",
386
- roomId: message.roomId as string,
387
- createdAt: Date.now(),
388
- content: {
389
- text: `Autonomy says: ${prompt}`,
390
- },
391
- },
392
- ],
393
- mode: "power",
394
- };
395
- },
396
- } as AgentRuntime["messageService"],
397
- getService: (serviceType: string) => {
398
- if (serviceType === "AGENT_EVENT") {
399
- return options.eventService;
400
- }
401
- if (serviceType === "AUTONOMY") {
402
- return {
403
- enableAutonomy: async () => {},
404
- disableAutonomy: async () => {},
405
- isLoopRunning: () => options.loopRunning ?? true,
406
- getStatus: () => ({ enabled: options.loopRunning ?? true }),
407
- } as Awaited<ReturnType<AgentRuntime["getService"]>>;
408
- }
409
- return null;
410
- },
411
- ensureConnection: async () => {},
412
- getWorld: async () => null,
413
- updateWorld: async () => {},
414
- createMemory: async (memory: Record<string, unknown>) => {
415
- const roomId = String(memory.roomId ?? "");
416
- if (!roomId) return;
417
- const current = memoriesByRoom.get(roomId) ?? [];
418
- current.push({
419
- ...memory,
420
- createdAt:
421
- typeof memory.createdAt === "number" ? memory.createdAt : Date.now(),
422
- });
423
- memoriesByRoom.set(roomId, current);
424
- },
425
- getMemories: async (query: { roomId?: string; count?: number }) => {
426
- const roomId = String(query.roomId ?? "");
427
- const current = memoriesByRoom.get(roomId) ?? [];
428
- const count = Math.max(1, query.count ?? current.length);
429
- return current.slice(-count) as unknown as Awaited<
430
- ReturnType<AgentRuntime["getMemories"]>
431
- >;
432
- },
433
- getRoomsByWorld: async () => [],
434
- getTasks: async (query?: { tags?: string[] }) => {
435
- if (!query?.tags || query.tags.length === 0) return tasks;
436
- return tasks.filter((task) =>
437
- query.tags?.every((tag) => task.tags?.includes(tag)),
438
- );
439
- },
440
- getTask: async (taskId: UUID) =>
441
- tasks.find((task) => task.id === taskId) ?? null,
442
- deleteTask: async (taskId: UUID) => {
443
- tasks = tasks.filter((task) => task.id !== taskId);
444
- },
445
- getCache: async () => null,
446
- setCache: async () => {},
447
- };
448
-
449
- return runtimeSubset as unknown as AgentRuntime;
450
- }
451
-
452
- function createRuntimeForWorkbenchCrudTests(options?: {
453
- loopRunning?: boolean;
454
- }): AgentRuntime {
455
- let tasks: Task[] = [];
456
- const runtimeSubset = {
457
- agentId: "workbench-crud-agent",
458
- character: { name: "WorkbenchCrudAgent" } as AgentRuntime["character"],
459
- getSetting: () => undefined,
460
- getService: (serviceType: string) => {
461
- if (serviceType === "AUTONOMY") {
462
- return {
463
- isLoopRunning: () => options?.loopRunning ?? false,
464
- getStatus: () => ({ enabled: options?.loopRunning ?? false }),
465
- getAutonomousRoomId: () =>
466
- "00000000-0000-0000-0000-000000000201" as UUID,
467
- } as Awaited<ReturnType<AgentRuntime["getService"]>>;
468
- }
469
- return null;
470
- },
471
- getRoomsByWorld: async () => [],
472
- getTasks: async (query?: { tags?: string[] }) => {
473
- if (!query?.tags || query.tags.length === 0) return tasks;
474
- return tasks.filter((task) =>
475
- query.tags?.every((tag) => task.tags?.includes(tag)),
476
- );
477
- },
478
- getTask: async (taskId: UUID) =>
479
- tasks.find((task) => task.id === taskId) ?? null,
480
- createTask: async (task: Task) => {
481
- const id = (task.id as UUID | undefined) ?? (crypto.randomUUID() as UUID);
482
- const created: Task = {
483
- ...task,
484
- id,
485
- };
486
- tasks.push(created);
487
- return id;
488
- },
489
- updateTask: async (taskId: UUID, update: Partial<Task>) => {
490
- tasks = tasks.map((task) =>
491
- task.id === taskId
492
- ? {
493
- ...task,
494
- ...update,
495
- metadata: {
496
- ...((task.metadata as Record<string, unknown> | undefined) ??
497
- {}),
498
- ...((update.metadata as Record<string, unknown> | undefined) ??
499
- {}),
500
- } as Task["metadata"],
501
- }
502
- : task,
503
- );
504
- },
505
- deleteTask: async (taskId: UUID) => {
506
- tasks = tasks.filter((task) => task.id !== taskId);
507
- },
508
- };
509
-
510
- return runtimeSubset as unknown as AgentRuntime;
511
- }
512
-
513
- function createRuntimeForChatSseTests(options?: {
514
- onEmitEvent?: (
515
- event: Parameters<AgentRuntime["emitEvent"]>[0],
516
- payload: Parameters<AgentRuntime["emitEvent"]>[1],
517
- ) => void | Promise<void>;
518
- getService?: (serviceType: string) => unknown;
519
- getServicesByType?: (serviceType: string) => unknown;
520
- handleMessage?: (
521
- runtime: AgentRuntime,
522
- message: object,
523
- onResponse: (content: Content) => Promise<object[]>,
524
- messageOptions?: {
525
- onStreamChunk?: (chunk: string, messageId?: string) => Promise<void>;
526
- },
527
- ) => Promise<{
528
- responseContent?: {
529
- text?: string;
530
- };
531
- }>;
532
- }): AgentRuntime {
533
- const memoriesByRoom = new Map<string, Array<Record<string, unknown>>>();
534
-
535
- const runtimeSubset = {
536
- agentId: "chat-stream-agent",
537
- character: {
538
- name: "ChatStreamAgent",
539
- postExamples: ["Welcome to the conversation."],
540
- } as AgentRuntime["character"],
541
- messageService: {
542
- handleMessage: async (
543
- runtime: AgentRuntime,
544
- message: object,
545
- onResponse: (content: Content) => Promise<object[]>,
546
- messageOptions?: {
547
- onStreamChunk?: (chunk: string, messageId?: string) => Promise<void>;
548
- },
549
- ) =>
550
- options?.handleMessage?.(
551
- runtime,
552
- message,
553
- onResponse,
554
- messageOptions,
555
- ) ??
556
- (await (async () => {
557
- await onResponse({ text: "Hello " } as Content);
558
- await onResponse({ text: "world" } as Content);
559
- return {
560
- responseContent: {
561
- text: "Hello world",
562
- },
563
- };
564
- })()),
565
- } as AgentRuntime["messageService"],
566
- ensureConnection: async () => {},
567
- getWorld: async () => null,
568
- updateWorld: async () => {},
569
- createMemory: async (memory: Record<string, unknown>) => {
570
- const roomId = String(memory.roomId ?? "");
571
- if (!roomId) return;
572
- const current = memoriesByRoom.get(roomId) ?? [];
573
- current.push({
574
- ...memory,
575
- createdAt:
576
- typeof memory.createdAt === "number" ? memory.createdAt : Date.now(),
577
- });
578
- memoriesByRoom.set(roomId, current);
579
- },
580
- getService: (serviceType: string) =>
581
- options?.getService?.(serviceType) ?? null,
582
- getServicesByType: (serviceType: string) =>
583
- options?.getServicesByType?.(serviceType) ?? [],
584
- emitEvent: async (
585
- event: Parameters<AgentRuntime["emitEvent"]>[0],
586
- payload: Parameters<AgentRuntime["emitEvent"]>[1],
587
- ) => {
588
- await options?.onEmitEvent?.(event, payload);
589
- },
590
- getMemoriesByRoomIds: async (query: {
591
- roomIds?: string[];
592
- limit?: number;
593
- }) => {
594
- const roomIds = Array.isArray(query.roomIds) ? query.roomIds : [];
595
- const limit = Math.max(1, query.limit ?? 200);
596
- const merged: Array<Record<string, unknown>> = [];
597
- for (const roomId of roomIds) {
598
- const current = memoriesByRoom.get(String(roomId)) ?? [];
599
- merged.push(...current);
600
- }
601
- merged.sort(
602
- (a, b) => Number(a.createdAt ?? 0) - Number(b.createdAt ?? 0),
603
- );
604
- return merged.slice(-limit) as unknown as Awaited<
605
- ReturnType<AgentRuntime["getMemoriesByRoomIds"]>
606
- >;
607
- },
608
- getRoomsByWorld: async () => [],
609
- getMemories: async (query: { roomId?: string; count?: number }) => {
610
- const roomId = String(query.roomId ?? "");
611
- const current = memoriesByRoom.get(roomId) ?? [];
612
- const count = Math.max(1, query.count ?? current.length);
613
- return current.slice(-count) as unknown as Awaited<
614
- ReturnType<AgentRuntime["getMemories"]>
615
- >;
616
- },
617
- getCache: async () => null,
618
- setCache: async () => {},
619
- };
620
-
621
- return runtimeSubset as unknown as AgentRuntime;
622
- }
623
-
624
- function createRuntimeForCompatEndpointTests(): AgentRuntime {
625
- const runtimeSubset = {
626
- agentId: "compat-endpoint-agent",
627
- character: { name: "CompatAgent" } as AgentRuntime["character"],
628
- messageService: {
629
- handleMessage: async (
630
- _runtime: AgentRuntime,
631
- _message: object,
632
- onResponse: (content: Content) => Promise<object[]>,
633
- ) => {
634
- await onResponse({ text: "Compat " } as Content);
635
- await onResponse({ text: "reply" } as Content);
636
- return {
637
- didRespond: true,
638
- responseContent: {
639
- text: "Compat reply",
640
- },
641
- responseMessages: [],
642
- mode: "power",
643
- };
644
- },
645
- } as AgentRuntime["messageService"],
646
- ensureConnection: async () => {},
647
- getWorld: async () => null,
648
- updateWorld: async () => {},
649
- getService: () => null,
650
- getRoomsByWorld: async () => [],
651
- getMemories: async () => [],
652
- getCache: async () => null,
653
- setCache: async () => {},
654
- };
655
-
656
- return runtimeSubset as unknown as AgentRuntime;
657
- }
658
-
659
- function createRuntimeForCreditNoResponseTests(): AgentRuntime {
660
- const runtimeLogger = {
661
- debug: () => {},
662
- info: () => {},
663
- warn: () => {},
664
- error: () => {},
665
- } as AgentRuntime["logger"];
666
-
667
- const runtimeSubset = {
668
- agentId: "credit-no-response-agent",
669
- character: { name: "CreditAgent" } as AgentRuntime["character"],
670
- logger: runtimeLogger,
671
- messageService: {
672
- handleMessage: async (_runtime: AgentRuntime) => {
673
- _runtime.logger.error(
674
- "#Youmu Model call failed: AI_APICallError: Insufficient credits. Required: $0.2250",
675
- );
676
- return {
677
- didRespond: true,
678
- responseContent: null,
679
- responseMessages: [],
680
- mode: "none",
681
- };
682
- },
683
- } as AgentRuntime["messageService"],
684
- ensureConnection: async () => {},
685
- getWorld: async () => null,
686
- updateWorld: async () => {},
687
- getService: () => null,
688
- getRoomsByWorld: async () => [],
689
- getMemories: async () => [],
690
- getCache: async () => null,
691
- setCache: async () => {},
692
- };
693
-
694
- return runtimeSubset as unknown as AgentRuntime;
695
- }
696
-
697
- function createRuntimeForCreditLiteralNoResponseTests(): AgentRuntime {
698
- const runtimeLogger = {
699
- debug: () => {},
700
- info: () => {},
701
- warn: () => {},
702
- error: () => {},
703
- } as AgentRuntime["logger"];
704
-
705
- const runtimeSubset = {
706
- agentId: "credit-literal-no-response-agent",
707
- character: { name: "CreditAgent" } as AgentRuntime["character"],
708
- logger: runtimeLogger,
709
- messageService: {
710
- handleMessage: async (_runtime: AgentRuntime) => {
711
- _runtime.logger.error(
712
- "#Youmu Model call failed: AI_APICallError: Insufficient credits. Required: $0.2250",
713
- );
714
- return {
715
- didRespond: true,
716
- responseContent: { text: "(no response)" },
717
- responseMessages: [],
718
- mode: "none",
719
- };
720
- },
721
- } as AgentRuntime["messageService"],
722
- ensureConnection: async () => {},
723
- getWorld: async () => null,
724
- updateWorld: async () => {},
725
- getService: () => null,
726
- getRoomsByWorld: async () => [],
727
- getMemories: async () => [],
728
- getCache: async () => null,
729
- setCache: async () => {},
730
- };
731
-
732
- return runtimeSubset as unknown as AgentRuntime;
733
- }
734
-
735
- function createRuntimeForCreditErrorTests(): AgentRuntime {
736
- const runtimeSubset = {
737
- agentId: "credit-error-agent",
738
- character: { name: "CreditAgent" } as AgentRuntime["character"],
739
- messageService: {
740
- handleMessage: async () => {
741
- throw new Error(
742
- "AI_APICallError: Insufficient credits. Required: $0.2250",
743
- );
744
- },
745
- } as AgentRuntime["messageService"],
746
- ensureConnection: async () => {},
747
- getWorld: async () => null,
748
- updateWorld: async () => {},
749
- getService: () => null,
750
- getRoomsByWorld: async () => [],
751
- getMemories: async () => [],
752
- getCache: async () => null,
753
- setCache: async () => {},
754
- };
755
-
756
- return runtimeSubset as unknown as AgentRuntime;
757
- }
758
-
759
- // ---------------------------------------------------------------------------
760
- // Test isolation — redirect all state to a temp directory so tests never
761
- // touch the real ~/.eliza config, database, or plugins.
762
- // ---------------------------------------------------------------------------
763
-
764
- let _e2eTempDir: string;
765
- let _origStateDirEnv: string | undefined;
766
-
767
- beforeAll(async () => {
768
- _origStateDirEnv = process.env.ELIZA_STATE_DIR;
769
- _e2eTempDir = await fs.mkdtemp(path.join(os.tmpdir(), "eliza-e2e-"));
770
- process.env.ELIZA_STATE_DIR = _e2eTempDir;
771
-
772
- // Seed a minimal config so the server can start
773
- await fs.writeFile(
774
- path.join(_e2eTempDir, "eliza.json"),
775
- JSON.stringify({
776
- agents: {
777
- defaults: { workspace: path.join(_e2eTempDir, "workspace") },
778
- list: [{ id: "main", default: true, name: "TestAgent" }],
779
- },
780
- ui: { theme: "dark" },
781
- cloud: { enabled: false },
782
- env: {},
783
- features: {},
784
- plugins: { entries: {} },
785
- database: { provider: "pglite" },
786
- }),
787
- );
788
- await fs.mkdir(path.join(_e2eTempDir, "workspace"), { recursive: true });
789
- });
790
-
791
- afterAll(async () => {
792
- if (_origStateDirEnv !== undefined) {
793
- process.env.ELIZA_STATE_DIR = _origStateDirEnv;
794
- } else {
795
- delete process.env.ELIZA_STATE_DIR;
796
- }
797
- if (_e2eTempDir) {
798
- await fs.rm(_e2eTempDir, { recursive: true, force: true });
799
- }
800
- });
801
-
802
- // ---------------------------------------------------------------------------
803
- // Tests
804
- // ---------------------------------------------------------------------------
805
-
806
- describe("API Server E2E (no runtime)", () => {
807
- let port: number;
808
- let close: () => Promise<void>;
809
- let updateStartup: (update: {
810
- phase?: string;
811
- attempt?: number;
812
- lastError?: string;
813
- lastErrorAt?: number;
814
- nextRetryAt?: number;
815
- state?:
816
- | "not_started"
817
- | "starting"
818
- | "running"
819
- | "paused"
820
- | "stopped"
821
- | "restarting"
822
- | "error";
823
- }) => void;
824
-
825
- beforeAll(async () => {
826
- // Start the REAL server with no runtime (port 0 = auto-assign)
827
- const server = await startApiServer({ port: 0 });
828
- port = server.port;
829
- close = server.close;
830
- updateStartup = server.updateStartup;
831
- }, 30_000);
832
-
833
- afterAll(async () => {
834
- await close();
835
- });
836
-
837
- // -- Status --
838
-
839
- describe("GET /api/status", () => {
840
- it("returns not_started state (no runtime)", async () => {
841
- const { status, data } = await req(port, "GET", "/api/status");
842
- expect(status).toBe(200);
843
- expect(data.state).toBe("not_started");
844
- expect(typeof data.agentName).toBe("string");
845
- });
846
-
847
- it("has no uptime or startedAt when not started", async () => {
848
- const { data } = await req(port, "GET", "/api/status");
849
- expect(data.uptime).toBeUndefined();
850
- expect(data.startedAt).toBeUndefined();
851
- });
852
-
853
- it("includes startup status diagnostics and reflects updates", async () => {
854
- const now = Date.now();
855
- updateStartup({
856
- phase: "runtime-retry",
857
- attempt: 2,
858
- lastError: "init failed",
859
- lastErrorAt: now,
860
- nextRetryAt: now + 1_000,
861
- state: "starting",
862
- });
863
- const { data } = await req(port, "GET", "/api/status");
864
- const startup = data.startup as
865
- | {
866
- phase?: string;
867
- attempt?: number;
868
- lastError?: string;
869
- }
870
- | undefined;
871
- expect(data.startup).toBeDefined();
872
- expect(startup?.phase).toBe("runtime-retry");
873
- expect(startup?.attempt).toBe(2);
874
- expect(startup?.lastError).toContain("init failed");
875
- expect(data.state).toBe("starting");
876
-
877
- updateStartup({
878
- phase: "idle",
879
- attempt: 0,
880
- lastError: undefined,
881
- lastErrorAt: undefined,
882
- nextRetryAt: undefined,
883
- state: "not_started",
884
- });
885
- });
886
- });
887
-
888
- // -- Lifecycle state transitions --
889
-
890
- describe("lifecycle state transitions", () => {
891
- it("start → running", async () => {
892
- const { data } = await req(port, "POST", "/api/agent/start");
893
- expect(data.ok).toBe(true);
894
- const status = await req(port, "GET", "/api/status");
895
- expect(status.data.state).toBe("paused");
896
- expect(typeof status.data.uptime).toBe("number");
897
- });
898
-
899
- it("pause → paused", async () => {
900
- const { data } = await req(port, "POST", "/api/agent/pause");
901
- expect(data.ok).toBe(true);
902
- expect((await req(port, "GET", "/api/status")).data.state).toBe("paused");
903
- });
904
-
905
- it("resume → running", async () => {
906
- const { data } = await req(port, "POST", "/api/agent/resume");
907
- expect(data.ok).toBe(true);
908
- expect((await req(port, "GET", "/api/status")).data.state).toBe(
909
- "running",
910
- );
911
- });
912
-
913
- it("stop → stopped, clears model and timing", async () => {
914
- const { data } = await req(port, "POST", "/api/agent/stop");
915
- expect(data.ok).toBe(true);
916
- const status = await req(port, "GET", "/api/status");
917
- expect(status.data.state).toBe("stopped");
918
- expect(status.data.model).toBeUndefined();
919
- expect(status.data.startedAt).toBeUndefined();
920
- });
921
-
922
- it("full cycle: start → pause → resume → stop", async () => {
923
- await req(port, "POST", "/api/agent/start");
924
- expect((await req(port, "GET", "/api/status")).data.state).toBe("paused");
925
-
926
- await req(port, "POST", "/api/agent/pause");
927
- expect((await req(port, "GET", "/api/status")).data.state).toBe("paused");
928
-
929
- await req(port, "POST", "/api/agent/resume");
930
- expect((await req(port, "GET", "/api/status")).data.state).toBe(
931
- "running",
932
- );
933
-
934
- await req(port, "POST", "/api/agent/stop");
935
- expect((await req(port, "GET", "/api/status")).data.state).toBe(
936
- "stopped",
937
- );
938
- });
939
- });
940
-
941
- // -- Chat rejection without runtime --
942
-
943
- describe("POST /api/chat (no runtime)", () => {
944
- it("rejects with 503 when no runtime", async () => {
945
- const { status, data } = await req(port, "POST", "/api/chat", {
946
- text: "hello",
947
- });
948
- expect(status).toBe(503);
949
- expect(data.error).toContain("not running");
950
- });
951
-
952
- it("rejects empty text with 400", async () => {
953
- const { status } = await req(port, "POST", "/api/chat", { text: "" });
954
- expect(status).toBe(400);
955
- });
956
-
957
- it("rejects missing text with 400", async () => {
958
- const { status } = await req(port, "POST", "/api/chat", {});
959
- expect(status).toBe(400);
960
- });
961
- });
962
-
963
- describe("POST /api/chat/stream (no runtime)", () => {
964
- it("rejects with 503 when no runtime", async () => {
965
- const { status, data } = await req(port, "POST", "/api/chat/stream", {
966
- text: "hello",
967
- });
968
- expect(status).toBe(503);
969
- expect(String(data.error)).toContain("not running");
970
- });
971
-
972
- it("rejects empty text with 400", async () => {
973
- const { status } = await req(port, "POST", "/api/chat/stream", {
974
- text: "",
975
- });
976
- expect(status).toBe(400);
977
- });
978
- });
979
-
980
- describe("POST /api/conversations/:id/messages/stream (no runtime)", () => {
981
- it("returns 404 when conversation does not exist", async () => {
982
- const { status } = await req(
983
- port,
984
- "POST",
985
- "/api/conversations/missing/messages/stream",
986
- {
987
- text: "hello",
988
- },
989
- );
990
- expect(status).toBe(404);
991
- });
992
-
993
- it("returns 503 when conversation exists but runtime is absent", async () => {
994
- const create = await req(port, "POST", "/api/conversations", {
995
- title: "Streaming test",
996
- });
997
- expect(create.status).toBe(200);
998
- const conversation = create.data.conversation as { id?: string };
999
- const conversationId = conversation.id ?? "";
1000
- expect(conversationId.length).toBeGreaterThan(0);
1001
-
1002
- const { status, data } = await req(
1003
- port,
1004
- "POST",
1005
- `/api/conversations/${conversationId}/messages/stream`,
1006
- {
1007
- text: "hello",
1008
- },
1009
- );
1010
- expect(status).toBe(503);
1011
- expect(String(data.error)).toContain("not running");
1012
- });
1013
- });
1014
-
1015
- describe("streaming chat endpoints (runtime stub)", () => {
1016
- it("POST /api/chat emits MESSAGE_RECEIVED before handling", async () => {
1017
- const emitted: Array<{
1018
- event: string;
1019
- source: string | null;
1020
- text: string | null;
1021
- }> = [];
1022
- const runtime = createRuntimeForChatSseTests({
1023
- onEmitEvent: (event, payload) => {
1024
- if (typeof event !== "string") return;
1025
- const message =
1026
- payload && typeof payload === "object" && "message" in payload
1027
- ? (payload.message as { content?: { text?: string } })
1028
- : null;
1029
- const source =
1030
- payload && typeof payload === "object" && "source" in payload
1031
- ? payload.source
1032
- : null;
1033
- emitted.push({
1034
- event,
1035
- source: typeof source === "string" ? source : null,
1036
- text:
1037
- typeof message?.content?.text === "string"
1038
- ? message.content.text
1039
- : null,
1040
- });
1041
- },
1042
- });
1043
- const streamServer = await startApiServer({ port: 0, runtime });
1044
- try {
1045
- const { status, data } = await req(
1046
- streamServer.port,
1047
- "POST",
1048
- "/api/chat",
1049
- {
1050
- text: "hello",
1051
- mode: "simple",
1052
- },
1053
- );
1054
-
1055
- expect(status).toBe(200);
1056
- expect(String(data.text ?? "")).toBe("Hello world");
1057
-
1058
- const received = emitted.find(
1059
- (entry) => entry.event === "MESSAGE_RECEIVED",
1060
- );
1061
- expect(received).toBeDefined();
1062
- expect(received?.source).toBe("client_chat");
1063
- expect(received?.text).toBe("hello");
1064
- } finally {
1065
- await streamServer.close();
1066
- }
1067
- });
1068
-
1069
- it("POST /api/chat does not use deprecated direct trajectory fallback when hooks do not set a step id", async () => {
1070
- const starts: Array<{ stepId: string; source?: string }> = [];
1071
- const ends: Array<{ stepId: string; status?: string }> = [];
1072
- const trajectoryLogger = {
1073
- isEnabled: () => true,
1074
- startTrajectory: async (
1075
- stepId: string,
1076
- options: { source?: string },
1077
- ) => {
1078
- starts.push({ stepId, source: options.source });
1079
- return stepId;
1080
- },
1081
- endTrajectory: async (stepId: string, status?: string) => {
1082
- ends.push({ stepId, status });
1083
- },
1084
- };
1085
- const runtime = createRuntimeForChatSseTests({
1086
- getService: (serviceType) =>
1087
- serviceType === "trajectory_logger" ? trajectoryLogger : null,
1088
- });
1089
- const streamServer = await startApiServer({ port: 0, runtime });
1090
- try {
1091
- const { status, data } = await req(
1092
- streamServer.port,
1093
- "POST",
1094
- "/api/chat",
1095
- {
1096
- text: "fallback trajectory path",
1097
- mode: "simple",
1098
- },
1099
- );
1100
-
1101
- expect(status).toBe(200);
1102
- expect(String(data.text ?? "")).toBe("Hello world");
1103
- expect(starts).toHaveLength(0);
1104
- expect(ends).toHaveLength(0);
1105
- } finally {
1106
- await streamServer.close();
1107
- }
1108
- });
1109
-
1110
- it("POST /api/chat does not call deprecated direct trajectory fallback even when logger is only in getServicesByType", async () => {
1111
- const starts: Array<{ stepId: string; source?: string }> = [];
1112
- const ends: Array<{ stepId: string; status?: string }> = [];
1113
- const trajectoryLogger = {
1114
- isEnabled: () => true,
1115
- startTrajectory: async (
1116
- stepId: string,
1117
- options: { source?: string },
1118
- ) => {
1119
- starts.push({ stepId, source: options.source });
1120
- return stepId;
1121
- },
1122
- endTrajectory: async (stepId: string, status?: string) => {
1123
- ends.push({ stepId, status });
1124
- },
1125
- };
1126
- const runtime = createRuntimeForChatSseTests({
1127
- getService: () => null,
1128
- getServicesByType: (serviceType) =>
1129
- serviceType === "trajectory_logger" ? [trajectoryLogger] : [],
1130
- });
1131
- const streamServer = await startApiServer({ port: 0, runtime });
1132
- try {
1133
- const { status, data } = await req(
1134
- streamServer.port,
1135
- "POST",
1136
- "/api/chat",
1137
- {
1138
- text: "trajectory logger by type",
1139
- mode: "simple",
1140
- },
1141
- );
1142
-
1143
- expect(status).toBe(200);
1144
- expect(String(data.text ?? "")).toBe("Hello world");
1145
- expect(starts).toHaveLength(0);
1146
- expect(ends).toHaveLength(0);
1147
- } finally {
1148
- await streamServer.close();
1149
- }
1150
- });
1151
-
1152
- it("POST /api/chat does not end trajectories directly when hook metadata provides a step id", async () => {
1153
- const starts: Array<{ stepId: string }> = [];
1154
- const ends: Array<{ stepId: string; status?: string }> = [];
1155
- const trajectoryLogger = {
1156
- isEnabled: () => true,
1157
- startTrajectory: async (stepId: string) => {
1158
- starts.push({ stepId });
1159
- return stepId;
1160
- },
1161
- endTrajectory: async (stepId: string, status?: string) => {
1162
- ends.push({ stepId, status });
1163
- },
1164
- };
1165
-
1166
- const runtime = createRuntimeForChatSseTests({
1167
- getService: (serviceType) =>
1168
- serviceType === "trajectory_logger" ? trajectoryLogger : null,
1169
- onEmitEvent: (_event, payload) => {
1170
- if (
1171
- payload &&
1172
- typeof payload === "object" &&
1173
- "message" in payload &&
1174
- payload.message &&
1175
- typeof payload.message === "object"
1176
- ) {
1177
- const msg = payload.message as {
1178
- metadata?: Record<string, unknown>;
1179
- };
1180
- if (!msg.metadata) msg.metadata = {};
1181
- msg.metadata.trajectoryStepId = "hook-step-id";
1182
- }
1183
- },
1184
- });
1185
-
1186
- const streamServer = await startApiServer({ port: 0, runtime });
1187
- try {
1188
- const { status, data } = await req(
1189
- streamServer.port,
1190
- "POST",
1191
- "/api/chat",
1192
- {
1193
- text: "trajectory end by hook",
1194
- mode: "simple",
1195
- },
1196
- );
1197
-
1198
- expect(status).toBe(200);
1199
- expect(String(data.text ?? "")).toBe("Hello world");
1200
- expect(starts).toHaveLength(0);
1201
- expect(ends).toHaveLength(0);
1202
- } finally {
1203
- await streamServer.close();
1204
- }
1205
- });
1206
-
1207
- it("POST /api/chat no longer proxies trajectory logger routing through deprecated fallback", async () => {
1208
- const starts: Array<{ stepId: string }> = [];
1209
- const ends: Array<{ stepId: string; status?: string }> = [];
1210
- const persistentLlmCalls: Array<{ stepId: string; model?: string }> = [];
1211
- const coreLlmCalls: Array<{ stepId: string; model?: string }> = [];
1212
- const persistentLogger = {
1213
- isEnabled: () => true,
1214
- startTrajectory: async (stepId: string) => {
1215
- starts.push({ stepId });
1216
- return stepId;
1217
- },
1218
- endTrajectory: async (stepId: string, status?: string) => {
1219
- ends.push({ stepId, status });
1220
- },
1221
- logLlmCall: (params: { stepId: string; model?: string }) => {
1222
- persistentLlmCalls.push(params);
1223
- },
1224
- };
1225
- const coreLogger = {
1226
- logLlmCall: (params: { stepId: string; model?: string }) => {
1227
- coreLlmCalls.push(params);
1228
- },
1229
- };
1230
- const runtime = createRuntimeForChatSseTests({
1231
- getService: (serviceType) =>
1232
- serviceType === "trajectory_logger" ? coreLogger : null,
1233
- getServicesByType: (serviceType) =>
1234
- serviceType === "trajectory_logger"
1235
- ? [coreLogger, persistentLogger]
1236
- : [],
1237
- handleMessage: async (runtimeArg, message, onResponse) => {
1238
- const trajectoryLogger = (
1239
- runtimeArg as unknown as {
1240
- getService: (serviceType: string) => {
1241
- logLlmCall?: (params: {
1242
- stepId: string;
1243
- model?: string;
1244
- }) => void;
1245
- } | null;
1246
- }
1247
- ).getService("trajectory_logger");
1248
- const metadata =
1249
- message && typeof message === "object" && "metadata" in message
1250
- ? (message.metadata as { trajectoryStepId?: string } | undefined)
1251
- : undefined;
1252
- const stepId = metadata?.trajectoryStepId;
1253
- if (stepId) {
1254
- trajectoryLogger?.logLlmCall?.({
1255
- stepId,
1256
- model: "unit-test-model",
1257
- });
1258
- }
1259
- await onResponse({ text: "Hello world" } as Content);
1260
- return {
1261
- responseContent: {
1262
- text: "Hello world",
1263
- },
1264
- };
1265
- },
1266
- });
1267
-
1268
- const streamServer = await startApiServer({ port: 0, runtime });
1269
- try {
1270
- const { status, data } = await req(
1271
- streamServer.port,
1272
- "POST",
1273
- "/api/chat",
1274
- {
1275
- text: "trajectory logger routing",
1276
- mode: "simple",
1277
- },
1278
- );
1279
-
1280
- expect(status).toBe(200);
1281
- expect(String(data.text ?? "")).toBe("Hello world");
1282
- expect(starts).toHaveLength(0);
1283
- expect(ends).toHaveLength(0);
1284
- expect(persistentLlmCalls).toHaveLength(0);
1285
- expect(coreLlmCalls).toHaveLength(0);
1286
- } finally {
1287
- await streamServer.close();
1288
- }
1289
- });
1290
-
1291
- it("POST /api/chat/stream emits token and done events", async () => {
1292
- const runtime = createRuntimeForChatSseTests();
1293
- const streamServer = await startApiServer({ port: 0, runtime });
1294
- try {
1295
- const { status, headers, events } = await reqSse(
1296
- streamServer.port,
1297
- "/api/chat/stream",
1298
- { text: "hello", mode: "power" },
1299
- );
1300
-
1301
- expect(status).toBe(200);
1302
- expect(String(headers["content-type"] ?? "")).toContain(
1303
- "text/event-stream",
1304
- );
1305
-
1306
- const tokenEvents = events.filter((event) => event.type === "token");
1307
- expect(tokenEvents.map((event) => event.text)).toEqual([
1308
- "Hello ",
1309
- "world",
1310
- ]);
1311
-
1312
- const doneEvent = events.find((event) => event.type === "done");
1313
- expect(doneEvent?.fullText).toBe("Hello world");
1314
- expect(doneEvent?.agentName).toBe("ChatStreamAgent");
1315
- } finally {
1316
- await streamServer.close();
1317
- }
1318
- });
1319
-
1320
- it("POST /api/chat/stream emits token events from runtime onStreamChunk", async () => {
1321
- const runtime = createRuntimeForChatSseTests({
1322
- handleMessage: async (
1323
- _runtime,
1324
- _message,
1325
- onResponse,
1326
- messageOptions,
1327
- ) => {
1328
- await messageOptions?.onStreamChunk?.("Hello ");
1329
- await messageOptions?.onStreamChunk?.("world");
1330
- await onResponse({ text: "Hello world" } as Content);
1331
- return {
1332
- responseContent: {
1333
- text: "Hello world",
1334
- },
1335
- };
1336
- },
1337
- });
1338
- const streamServer = await startApiServer({ port: 0, runtime });
1339
- try {
1340
- const { status, events } = await reqSse(
1341
- streamServer.port,
1342
- "/api/chat/stream",
1343
- { text: "hello", mode: "power" },
1344
- );
1345
-
1346
- expect(status).toBe(200);
1347
- const tokenEvents = events.filter((event) => event.type === "token");
1348
- expect(tokenEvents.map((event) => event.text)).toEqual([
1349
- "Hello ",
1350
- "world",
1351
- ]);
1352
- expect(tokenEvents.map((event) => event.fullText)).toEqual([
1353
- "Hello ",
1354
- "Hello world",
1355
- ]);
1356
-
1357
- const doneEvent = events.find((event) => event.type === "done");
1358
- expect(doneEvent?.fullText).toBe("Hello world");
1359
- expect(doneEvent?.agentName).toBe("ChatStreamAgent");
1360
- } finally {
1361
- await streamServer.close();
1362
- }
1363
- });
1364
-
1365
- it("POST /api/chat/stream avoids mixed-source duplication when callback text arrives before onStreamChunk", async () => {
1366
- const runtime = createRuntimeForChatSseTests({
1367
- handleMessage: async (
1368
- _runtime,
1369
- _message,
1370
- onResponse,
1371
- messageOptions,
1372
- ) => {
1373
- await onResponse({ text: "Hello world" } as Content);
1374
- await messageOptions?.onStreamChunk?.("Hello ");
1375
- await messageOptions?.onStreamChunk?.("world");
1376
- return {
1377
- responseContent: {
1378
- text: "Hello world",
1379
- },
1380
- };
1381
- },
1382
- });
1383
- const streamServer = await startApiServer({ port: 0, runtime });
1384
- try {
1385
- const { status, events } = await reqSse(
1386
- streamServer.port,
1387
- "/api/chat/stream",
1388
- { text: "hello", mode: "power" },
1389
- );
1390
-
1391
- expect(status).toBe(200);
1392
- const tokenEvents = events.filter((event) => event.type === "token");
1393
- expect(tokenEvents.map((event) => event.text)).toEqual(["Hello world"]);
1394
-
1395
- const doneEvent = events.find((event) => event.type === "done");
1396
- expect(doneEvent?.fullText).toBe("Hello world");
1397
- expect(doneEvent?.agentName).toBe("ChatStreamAgent");
1398
- } finally {
1399
- await streamServer.close();
1400
- }
1401
- });
1402
-
1403
- it("POST /api/chat/stream de-duplicates cumulative callback text updates", async () => {
1404
- const runtime = createRuntimeForChatSseTests({
1405
- handleMessage: async (_runtime, _message, onResponse) => {
1406
- await onResponse({ text: "Hello " } as Content);
1407
- await onResponse({ text: "Hello world" } as Content);
1408
- return {
1409
- responseContent: {
1410
- text: "Hello world",
1411
- },
1412
- };
1413
- },
1414
- });
1415
- const streamServer = await startApiServer({ port: 0, runtime });
1416
- try {
1417
- const { status, events } = await reqSse(
1418
- streamServer.port,
1419
- "/api/chat/stream",
1420
- { text: "hello", mode: "power" },
1421
- );
1422
-
1423
- expect(status).toBe(200);
1424
- const tokenEvents = events.filter((event) => event.type === "token");
1425
- expect(tokenEvents.map((event) => event.text)).toEqual([
1426
- "Hello ",
1427
- "world",
1428
- ]);
1429
-
1430
- const doneEvent = events.find((event) => event.type === "done");
1431
- expect(doneEvent?.fullText).toBe("Hello world");
1432
- expect(doneEvent?.agentName).toBe("ChatStreamAgent");
1433
- } finally {
1434
- await streamServer.close();
1435
- }
1436
- });
1437
-
1438
- it("POST /api/chat/stream emits replacement snapshots for corrected callback text", async () => {
1439
- const runtime = createRuntimeForChatSseTests({
1440
- handleMessage: async (_runtime, _message, onResponse) => {
1441
- await onResponse({ text: "Hello wrld" } as Content);
1442
- await onResponse({ text: "Hello world" } as Content);
1443
- await onResponse({ text: "Hello world!" } as Content);
1444
- return {
1445
- responseContent: {
1446
- text: "Hello world!",
1447
- },
1448
- };
1449
- },
1450
- });
1451
- const streamServer = await startApiServer({ port: 0, runtime });
1452
- try {
1453
- const { status, events } = await reqSse(
1454
- streamServer.port,
1455
- "/api/chat/stream",
1456
- { text: "hello", mode: "power" },
1457
- );
1458
-
1459
- expect(status).toBe(200);
1460
- const tokenEvents = events.filter((event) => event.type === "token");
1461
- expect(tokenEvents.map((event) => event.text)).toEqual([
1462
- "Hello wrld",
1463
- "Hello world",
1464
- "!",
1465
- ]);
1466
- expect(tokenEvents.map((event) => event.fullText)).toEqual([
1467
- "Hello wrld",
1468
- "Hello world",
1469
- "Hello world!",
1470
- ]);
1471
-
1472
- const doneEvent = events.find((event) => event.type === "done");
1473
- expect(doneEvent?.fullText).toBe("Hello world!");
1474
- expect(doneEvent?.agentName).toBe("ChatStreamAgent");
1475
- } finally {
1476
- await streamServer.close();
1477
- }
1478
- });
1479
-
1480
- it("POST /api/chat/stream preserves repeated characters in incremental callback tokens", async () => {
1481
- const runtime = createRuntimeForChatSseTests({
1482
- handleMessage: async (_runtime, _message, onResponse) => {
1483
- for (const token of [
1484
- "H",
1485
- "e",
1486
- "l",
1487
- "l",
1488
- "o",
1489
- " ",
1490
- "w",
1491
- "o",
1492
- "r",
1493
- "l",
1494
- "d",
1495
- ]) {
1496
- await onResponse({ text: token } as Content);
1497
- }
1498
- return {
1499
- responseContent: {
1500
- text: "Hello world",
1501
- },
1502
- };
1503
- },
1504
- });
1505
- const streamServer = await startApiServer({ port: 0, runtime });
1506
- try {
1507
- const { status, events } = await reqSse(
1508
- streamServer.port,
1509
- "/api/chat/stream",
1510
- { text: "hello", mode: "power" },
1511
- );
1512
-
1513
- expect(status).toBe(200);
1514
- const tokenText = events
1515
- .filter((event) => event.type === "token")
1516
- .map((event) => event.text ?? "")
1517
- .join("");
1518
- expect(tokenText).toBe("Hello world");
1519
-
1520
- const doneEvent = events.find((event) => event.type === "done");
1521
- expect(doneEvent?.fullText).toBe("Hello world");
1522
- expect(doneEvent?.agentName).toBe("ChatStreamAgent");
1523
- } finally {
1524
- await streamServer.close();
1525
- }
1526
- });
1527
-
1528
- it("GET /api/conversations waits for a pending restore before reporting the list", async () => {
1529
- const restoreGate =
1530
- createDeferred<Array<{ id: UUID; channelId: string; name: string }>>();
1531
- const restoredConversationId = "11111111-1111-4111-8111-111111111111";
1532
- const restoredRoomId = "00000000-0000-0000-0000-00000000c001" as UUID;
1533
- const restoredAt = Date.parse("2026-02-01T12:00:00.000Z");
1534
- const runtime = {
1535
- agentId: "restore-list-agent",
1536
- character: { name: "RestoreListAgent" } as AgentRuntime["character"],
1537
- getService: () => null,
1538
- getRoomsByWorld: async () => restoreGate.promise,
1539
- getMemories: async (query: { count?: number }) =>
1540
- query.count === 1 ? ([{ createdAt: restoredAt }] as Array<{ createdAt: number }>) : [],
1541
- getCache: async () => null,
1542
- setCache: async () => {},
1543
- } as unknown as AgentRuntime;
1544
-
1545
- const streamServer = await startApiServer({ port: 0, runtime });
1546
- try {
1547
- const listPromise = req(streamServer.port, "GET", "/api/conversations");
1548
- const earlyState = await Promise.race([
1549
- listPromise.then(() => "resolved" as const),
1550
- new Promise<"pending">((resolve) =>
1551
- setTimeout(() => resolve("pending"), 25),
1552
- ),
1553
- ]);
1554
- expect(earlyState).toBe("pending");
1555
-
1556
- restoreGate.resolve([
1557
- {
1558
- id: restoredRoomId,
1559
- channelId: `web-conv-${restoredConversationId}`,
1560
- name: "Restored Chat",
1561
- },
1562
- ]);
1563
-
1564
- const response = await listPromise;
1565
- expect(response.status).toBe(200);
1566
- expect(response.data.conversations).toEqual([
1567
- expect.objectContaining({
1568
- id: restoredConversationId,
1569
- title: "Restored Chat",
1570
- }),
1571
- ]);
1572
- } finally {
1573
- await streamServer.close();
1574
- }
1575
- });
1576
-
1577
- it("GET /api/conversations/:id/messages waits for a pending restore before 404ing", async () => {
1578
- const restoreGate =
1579
- createDeferred<Array<{ id: UUID; channelId: string; name: string }>>();
1580
- const restoredConversationId = "22222222-2222-4222-8222-222222222222";
1581
- const restoredRoomId = "00000000-0000-0000-0000-00000000c002" as UUID;
1582
- const restoredAt = Date.parse("2026-02-02T12:00:00.000Z");
1583
- const runtime = {
1584
- agentId: "restore-messages-agent",
1585
- character: {
1586
- name: "RestoreMessagesAgent",
1587
- } as AgentRuntime["character"],
1588
- getService: () => null,
1589
- getRoomsByWorld: async () => restoreGate.promise,
1590
- getMemories: async (query: { count?: number }) =>
1591
- query.count === 1 ? ([{ createdAt: restoredAt }] as Array<{ createdAt: number }>) : [],
1592
- getCache: async () => null,
1593
- setCache: async () => {},
1594
- } as unknown as AgentRuntime;
1595
-
1596
- const streamServer = await startApiServer({ port: 0, runtime });
1597
- try {
1598
- const messagesPromise = req(
1599
- streamServer.port,
1600
- "GET",
1601
- `/api/conversations/${restoredConversationId}/messages`,
1602
- );
1603
- const earlyState = await Promise.race([
1604
- messagesPromise.then(() => "resolved" as const),
1605
- new Promise<"pending">((resolve) =>
1606
- setTimeout(() => resolve("pending"), 25),
1607
- ),
1608
- ]);
1609
- expect(earlyState).toBe("pending");
1610
-
1611
- restoreGate.resolve([
1612
- {
1613
- id: restoredRoomId,
1614
- channelId: `web-conv-${restoredConversationId}`,
1615
- name: "Restored Chat",
1616
- },
1617
- ]);
1618
-
1619
- const response = await messagesPromise;
1620
- expect(response.status).toBe(200);
1621
- expect(response.data.messages).toEqual([]);
1622
- } finally {
1623
- await streamServer.close();
1624
- }
1625
- });
1626
-
1627
- it("POST /api/conversations/:id/messages/stream emits token events from runtime onStreamChunk", async () => {
1628
- const runtime = createRuntimeForChatSseTests({
1629
- handleMessage: async (
1630
- _runtime,
1631
- _message,
1632
- onResponse,
1633
- messageOptions,
1634
- ) => {
1635
- await messageOptions?.onStreamChunk?.("Hello ");
1636
- await messageOptions?.onStreamChunk?.("world");
1637
- await onResponse({ text: "Hello world" } as Content);
1638
- return {
1639
- responseContent: {
1640
- text: "Hello world",
1641
- },
1642
- };
1643
- },
1644
- });
1645
- const streamServer = await startApiServer({ port: 0, runtime });
1646
- try {
1647
- const create = await req(
1648
- streamServer.port,
1649
- "POST",
1650
- "/api/conversations",
1651
- {
1652
- title: "SSE onStreamChunk conversation",
1653
- },
1654
- );
1655
- expect(create.status).toBe(200);
1656
- const conversation = create.data.conversation as { id?: string };
1657
- const conversationId = conversation.id ?? "";
1658
- expect(conversationId.length).toBeGreaterThan(0);
1659
-
1660
- const { status, events } = await reqSse(
1661
- streamServer.port,
1662
- `/api/conversations/${conversationId}/messages/stream`,
1663
- { text: "hello", mode: "power" },
1664
- );
1665
-
1666
- expect(status).toBe(200);
1667
- const tokenEvents = events.filter((event) => event.type === "token");
1668
- expect(tokenEvents.map((event) => event.text)).toEqual([
1669
- "Hello ",
1670
- "world",
1671
- ]);
1672
- expect(tokenEvents.map((event) => event.fullText)).toEqual([
1673
- "Hello ",
1674
- "Hello world",
1675
- ]);
1676
-
1677
- const doneEvent = events.find((event) => event.type === "done");
1678
- expect(doneEvent?.fullText).toBe("Hello world");
1679
- expect(doneEvent?.agentName).toBe("ChatStreamAgent");
1680
- } finally {
1681
- await streamServer.close();
1682
- }
1683
- });
1684
-
1685
- it("POST /api/conversations/:id/messages/stream emits token and done events", async () => {
1686
- const runtime = createRuntimeForChatSseTests();
1687
- const streamServer = await startApiServer({ port: 0, runtime });
1688
- try {
1689
- const create = await req(
1690
- streamServer.port,
1691
- "POST",
1692
- "/api/conversations",
1693
- {
1694
- title: "SSE conversation",
1695
- },
1696
- );
1697
- expect(create.status).toBe(200);
1698
- const conversation = create.data.conversation as { id?: string };
1699
- const conversationId = conversation.id ?? "";
1700
- expect(conversationId.length).toBeGreaterThan(0);
1701
-
1702
- const { status, events } = await reqSse(
1703
- streamServer.port,
1704
- `/api/conversations/${conversationId}/messages/stream`,
1705
- { text: "hello", mode: "simple" },
1706
- );
1707
-
1708
- expect(status).toBe(200);
1709
- const tokenEvents = events.filter((event) => event.type === "token");
1710
- expect(tokenEvents.map((event) => event.text)).toEqual([
1711
- "Hello ",
1712
- "world",
1713
- ]);
1714
- const doneEvent = events.find((event) => event.type === "done");
1715
- expect(doneEvent?.fullText).toBe("Hello world");
1716
- expect(doneEvent?.agentName).toBe("ChatStreamAgent");
1717
- } finally {
1718
- await streamServer.close();
1719
- }
1720
- });
1721
-
1722
- it("POST /api/conversations/:id/messages/stream emits replacement snapshots for corrected callback text", async () => {
1723
- const runtime = createRuntimeForChatSseTests({
1724
- handleMessage: async (_runtime, _message, onResponse) => {
1725
- await onResponse({ text: "Hello wrld" } as Content);
1726
- await onResponse({ text: "Hello world" } as Content);
1727
- await onResponse({ text: "Hello world!" } as Content);
1728
- return {
1729
- responseContent: {
1730
- text: "Hello world!",
1731
- },
1732
- };
1733
- },
1734
- });
1735
- const streamServer = await startApiServer({ port: 0, runtime });
1736
- try {
1737
- const create = await req(
1738
- streamServer.port,
1739
- "POST",
1740
- "/api/conversations",
1741
- {
1742
- title: "Corrected snapshot conversation",
1743
- },
1744
- );
1745
- expect(create.status).toBe(200);
1746
- const conversation = create.data.conversation as { id?: string };
1747
- const conversationId = conversation.id ?? "";
1748
- expect(conversationId.length).toBeGreaterThan(0);
1749
-
1750
- const { status, events } = await reqSse(
1751
- streamServer.port,
1752
- `/api/conversations/${conversationId}/messages/stream`,
1753
- { text: "hello", mode: "power" },
1754
- );
1755
-
1756
- expect(status).toBe(200);
1757
- const tokenEvents = events.filter((event) => event.type === "token");
1758
- expect(tokenEvents.map((event) => event.text)).toEqual([
1759
- "Hello wrld",
1760
- "Hello world",
1761
- "!",
1762
- ]);
1763
- expect(tokenEvents.map((event) => event.fullText)).toEqual([
1764
- "Hello wrld",
1765
- "Hello world",
1766
- "Hello world!",
1767
- ]);
1768
-
1769
- const doneEvent = events.find((event) => event.type === "done");
1770
- expect(doneEvent?.fullText).toBe("Hello world!");
1771
- expect(doneEvent?.agentName).toBe("ChatStreamAgent");
1772
- } finally {
1773
- await streamServer.close();
1774
- }
1775
- });
1776
-
1777
- it("persists greeting and streamed turn messages to conversation memory", async () => {
1778
- const runtime = createRuntimeForChatSseTests();
1779
- const streamServer = await startApiServer({ port: 0, runtime });
1780
- try {
1781
- const create = await req(
1782
- streamServer.port,
1783
- "POST",
1784
- "/api/conversations",
1785
- {
1786
- title: "Persistence test",
1787
- },
1788
- );
1789
- expect(create.status).toBe(200);
1790
- const conversation = create.data.conversation as { id?: string };
1791
- const conversationId = conversation.id ?? "";
1792
- expect(conversationId.length).toBeGreaterThan(0);
1793
-
1794
- const greeting = await req(
1795
- streamServer.port,
1796
- "POST",
1797
- `/api/conversations/${conversationId}/greeting`,
1798
- );
1799
- expect(greeting.status).toBe(200);
1800
- const greetingText = String(greeting.data.text ?? "");
1801
- expect(greetingText.length).toBeGreaterThan(0);
1802
-
1803
- const stream = await reqSse(
1804
- streamServer.port,
1805
- `/api/conversations/${conversationId}/messages/stream`,
1806
- { text: "hello", mode: "simple" },
1807
- );
1808
- expect(stream.status).toBe(200);
1809
-
1810
- const messagesResponse = await req(
1811
- streamServer.port,
1812
- "GET",
1813
- `/api/conversations/${conversationId}/messages`,
1814
- );
1815
- expect(messagesResponse.status).toBe(200);
1816
- const messages = (messagesResponse.data.messages ?? []) as Array<
1817
- Record<string, unknown>
1818
- >;
1819
- expect(messages.length).toBeGreaterThanOrEqual(3);
1820
-
1821
- const greetingPersisted = messages.some(
1822
- (message) =>
1823
- message.role === "assistant" && message.text === greetingText,
1824
- );
1825
- const userPersisted = messages.some(
1826
- (message) => message.role === "user" && message.text === "hello",
1827
- );
1828
- const assistantPersisted = messages.some(
1829
- (message) =>
1830
- message.role === "assistant" && message.text === "Hello world",
1831
- );
1832
-
1833
- expect(greetingPersisted).toBe(true);
1834
- expect(userPersisted).toBe(true);
1835
- expect(assistantPersisted).toBe(true);
1836
- } finally {
1837
- await streamServer.close();
1838
- }
1839
- });
1840
-
1841
- it("POST /api/conversations can init the intro greeting atomically", async () => {
1842
- const runtime = createRuntimeForChatSseTests();
1843
- const streamServer = await startApiServer({ port: 0, runtime });
1844
- try {
1845
- const create = await req(
1846
- streamServer.port,
1847
- "POST",
1848
- "/api/conversations",
1849
- {
1850
- title: "Init greeting test",
1851
- initGreeting: true,
1852
- lang: "en",
1853
- },
1854
- );
1855
- expect(create.status).toBe(200);
1856
- const conversation = create.data.conversation as { id?: string };
1857
- const conversationId = conversation.id ?? "";
1858
- expect(conversationId.length).toBeGreaterThan(0);
1859
- expect(create.data.greeting).toMatchObject({
1860
- text: "Welcome to the conversation.",
1861
- agentName: "ChatStreamAgent",
1862
- generated: true,
1863
- });
1864
-
1865
- const messagesResponse = await req(
1866
- streamServer.port,
1867
- "GET",
1868
- `/api/conversations/${conversationId}/messages`,
1869
- );
1870
- expect(messagesResponse.status).toBe(200);
1871
- const messages = (messagesResponse.data.messages ?? []) as Array<
1872
- Record<string, unknown>
1873
- >;
1874
- expect(messages).toEqual([
1875
- expect.objectContaining({
1876
- role: "assistant",
1877
- text: "Welcome to the conversation.",
1878
- source: "agent_greeting",
1879
- }),
1880
- ]);
1881
- } finally {
1882
- await streamServer.close();
1883
- }
1884
- });
1885
-
1886
- it("POST /api/conversations/:id/greeting is idempotent after the intro is stored", async () => {
1887
- const runtime = createRuntimeForChatSseTests();
1888
- const streamServer = await startApiServer({ port: 0, runtime });
1889
- try {
1890
- const create = await req(
1891
- streamServer.port,
1892
- "POST",
1893
- "/api/conversations",
1894
- {
1895
- title: "Idempotent greeting test",
1896
- initGreeting: true,
1897
- lang: "en",
1898
- },
1899
- );
1900
- expect(create.status).toBe(200);
1901
- const conversation = create.data.conversation as { id?: string };
1902
- const conversationId = conversation.id ?? "";
1903
- expect(conversationId.length).toBeGreaterThan(0);
1904
-
1905
- const greeting = await req(
1906
- streamServer.port,
1907
- "POST",
1908
- `/api/conversations/${conversationId}/greeting?lang=en`,
1909
- );
1910
- expect(greeting.status).toBe(200);
1911
- expect(greeting.data).toMatchObject({
1912
- text: "Welcome to the conversation.",
1913
- agentName: "ChatStreamAgent",
1914
- generated: true,
1915
- });
1916
-
1917
- const messagesResponse = await req(
1918
- streamServer.port,
1919
- "GET",
1920
- `/api/conversations/${conversationId}/messages`,
1921
- );
1922
- expect(messagesResponse.status).toBe(200);
1923
- const messages = (messagesResponse.data.messages ?? []) as Array<
1924
- Record<string, unknown>
1925
- >;
1926
- const greetings = messages.filter(
1927
- (message) =>
1928
- message.role === "assistant" &&
1929
- message.source === "agent_greeting" &&
1930
- message.text === "Welcome to the conversation.",
1931
- );
1932
- expect(greetings).toHaveLength(1);
1933
- } finally {
1934
- await streamServer.close();
1935
- }
1936
- });
1937
-
1938
- it("GET /api/conversations/:id/messages returns an empty messages array on runtime read failure", async () => {
1939
- const runtime = createRuntimeForChatSseTests();
1940
- runtime.getMemories = async () => {
1941
- throw new Error("forced-memories-failure");
1942
- };
1943
-
1944
- const streamServer = await startApiServer({ port: 0, runtime });
1945
- try {
1946
- const create = await req(
1947
- streamServer.port,
1948
- "POST",
1949
- "/api/conversations",
1950
- {
1951
- title: "Conversation messages failure fallback",
1952
- },
1953
- );
1954
- expect(create.status).toBe(200);
1955
- const conversation = create.data.conversation as { id?: string };
1956
- const conversationId = conversation.id ?? "";
1957
- expect(conversationId.length).toBeGreaterThan(0);
1958
-
1959
- const response = await req(
1960
- streamServer.port,
1961
- "GET",
1962
- `/api/conversations/${conversationId}/messages`,
1963
- );
1964
-
1965
- expect(response.status).toBe(500);
1966
- expect(Array.isArray(response.data.messages)).toBe(true);
1967
- expect((response.data.messages as unknown[]).length).toBe(0);
1968
- expect(typeof response.data.error).toBe("string");
1969
- } finally {
1970
- await streamServer.close();
1971
- }
1972
- });
1973
- });
1974
-
1975
- describe("trajectory endpoints (runtime stub)", () => {
1976
- it("GET /api/trajectories/:id returns llm calls from plugin detail payload", async () => {
1977
- const trajectoryId = "trajectory-array-shape";
1978
- const startTime = Date.now() - 2_000;
1979
- const endTime = startTime + 1_200;
1980
- const callTimestamp = startTime + 400;
1981
- const rawSteps = [
1982
- {
1983
- stepId: "step-1",
1984
- stepNumber: 1,
1985
- timestamp: startTime + 100,
1986
- llmCalls: [
1987
- {
1988
- callId: "call-1",
1989
- timestamp: callTimestamp,
1990
- model: "unit-test-model",
1991
- systemPrompt: "system",
1992
- userPrompt: "hello from fallback",
1993
- response: "fallback response",
1994
- temperature: 0.1,
1995
- maxTokens: 512,
1996
- purpose: "response",
1997
- promptTokens: 12,
1998
- completionTokens: 18,
1999
- latencyMs: 33,
2000
- },
2001
- ],
2002
- providerAccesses: [],
2003
- },
2004
- ];
2005
-
2006
- const trajectoryLogger = {
2007
- isEnabled: () => true,
2008
- setEnabled: () => {},
2009
- listTrajectories: async () => ({
2010
- trajectories: [
2011
- {
2012
- id: trajectoryId,
2013
- agentId: "chat-stream-agent",
2014
- source: "client_chat",
2015
- status: "completed",
2016
- startTime,
2017
- endTime,
2018
- durationMs: endTime - startTime,
2019
- stepCount: 1,
2020
- llmCallCount: 1,
2021
- totalPromptTokens: 12,
2022
- totalCompletionTokens: 18,
2023
- totalReward: 0,
2024
- scenarioId: null,
2025
- batchId: null,
2026
- createdAt: new Date(startTime).toISOString(),
2027
- },
2028
- ],
2029
- total: 1,
2030
- offset: 0,
2031
- limit: 50,
2032
- }),
2033
- getTrajectoryDetail: async () => ({
2034
- trajectoryId,
2035
- agentId: "chat-stream-agent",
2036
- startTime,
2037
- endTime,
2038
- durationMs: endTime - startTime,
2039
- steps: rawSteps,
2040
- totalReward: 0,
2041
- metrics: {
2042
- episodeLength: 1,
2043
- finalStatus: "completed",
2044
- },
2045
- metadata: {
2046
- source: "client_chat",
2047
- },
2048
- }),
2049
- getStats: async () => ({
2050
- totalTrajectories: 1,
2051
- totalSteps: 1,
2052
- totalLlmCalls: 1,
2053
- totalPromptTokens: 12,
2054
- totalCompletionTokens: 18,
2055
- averageDurationMs: endTime - startTime,
2056
- averageReward: 0,
2057
- bySource: { client_chat: 1 },
2058
- byStatus: { completed: 1 },
2059
- byScenario: {},
2060
- }),
2061
- deleteTrajectories: async () => 0,
2062
- clearAllTrajectories: async () => 0,
2063
- exportTrajectories: async () => ({
2064
- data: "[]",
2065
- filename: "trajectories.json",
2066
- mimeType: "application/json",
2067
- }),
2068
- };
2069
-
2070
- const runtime = createRuntimeForChatSseTests({
2071
- getService: (serviceType) =>
2072
- serviceType === "trajectory_logger" ? trajectoryLogger : null,
2073
- getServicesByType: (serviceType) =>
2074
- serviceType === "trajectory_logger" ? [trajectoryLogger] : [],
2075
- }) as AgentRuntime & { adapter?: unknown };
2076
- runtime.adapter = {};
2077
-
2078
- const streamServer = await startApiServer({ port: 0, runtime });
2079
- try {
2080
- const list = await req(
2081
- streamServer.port,
2082
- "GET",
2083
- "/api/trajectories?limit=10",
2084
- );
2085
- expect(list.status).toBe(200);
2086
- const listRows = list.data.trajectories as Array<
2087
- Record<string, unknown>
2088
- >;
2089
- expect(Array.isArray(listRows)).toBe(true);
2090
- expect(listRows[0]?.llmCallCount).toBe(1);
2091
-
2092
- const detail = await req(
2093
- streamServer.port,
2094
- "GET",
2095
- `/api/trajectories/${encodeURIComponent(trajectoryId)}`,
2096
- );
2097
- expect(detail.status).toBe(200);
2098
- const llmCalls = detail.data.llmCalls as Array<Record<string, unknown>>;
2099
- expect(Array.isArray(llmCalls)).toBe(true);
2100
- expect(llmCalls).toHaveLength(1);
2101
- expect(llmCalls[0]?.userPrompt).toBe("hello from fallback");
2102
- expect(llmCalls[0]?.response).toBe("fallback response");
2103
- expect(llmCalls[0]?.promptTokens).toBe(12);
2104
- expect(llmCalls[0]?.completionTokens).toBe(18);
2105
- } finally {
2106
- await streamServer.close();
2107
- }
2108
- });
2109
-
2110
- it("POST /api/trajectories/export returns a zip with trajectory folders", async () => {
2111
- const trajectoryId = "trajectory-zip-export";
2112
- const startTime = Date.now() - 2_000;
2113
- const endTime = startTime + 1_100;
2114
-
2115
- const trajectoryLogger = {
2116
- isEnabled: () => true,
2117
- setEnabled: () => {},
2118
- listTrajectories: async () => ({
2119
- trajectories: [
2120
- {
2121
- id: trajectoryId,
2122
- agentId: "chat-stream-agent",
2123
- source: "client_chat",
2124
- status: "completed",
2125
- startTime,
2126
- endTime,
2127
- durationMs: endTime - startTime,
2128
- stepCount: 1,
2129
- llmCallCount: 1,
2130
- totalPromptTokens: 10,
2131
- totalCompletionTokens: 20,
2132
- totalReward: 0,
2133
- scenarioId: null,
2134
- batchId: null,
2135
- createdAt: new Date(startTime).toISOString(),
2136
- },
2137
- ],
2138
- total: 1,
2139
- offset: 0,
2140
- limit: 50,
2141
- }),
2142
- getTrajectoryDetail: async () => ({
2143
- trajectoryId,
2144
- agentId: "chat-stream-agent",
2145
- startTime,
2146
- endTime,
2147
- durationMs: endTime - startTime,
2148
- steps: [
2149
- {
2150
- stepId: "step-1",
2151
- stepNumber: 1,
2152
- timestamp: startTime + 100,
2153
- llmCalls: [
2154
- {
2155
- callId: "call-1",
2156
- timestamp: startTime + 200,
2157
- model: "test-model",
2158
- systemPrompt: "system",
2159
- userPrompt: "hello",
2160
- response: "world",
2161
- temperature: 0.1,
2162
- maxTokens: 200,
2163
- purpose: "response",
2164
- promptTokens: 10,
2165
- completionTokens: 20,
2166
- latencyMs: 12,
2167
- },
2168
- ],
2169
- providerAccesses: [],
2170
- },
2171
- ],
2172
- totalReward: 0,
2173
- metrics: {
2174
- episodeLength: 1,
2175
- finalStatus: "completed",
2176
- },
2177
- metadata: {
2178
- source: "client_chat",
2179
- },
2180
- }),
2181
- getStats: async () => ({
2182
- totalTrajectories: 1,
2183
- totalSteps: 1,
2184
- totalLlmCalls: 1,
2185
- totalPromptTokens: 10,
2186
- totalCompletionTokens: 20,
2187
- averageDurationMs: endTime - startTime,
2188
- averageReward: 0,
2189
- bySource: { client_chat: 1 },
2190
- byStatus: { completed: 1 },
2191
- byScenario: {},
2192
- }),
2193
- deleteTrajectories: async () => 0,
2194
- clearAllTrajectories: async () => 0,
2195
- exportTrajectories: async () => ({
2196
- data: "[]",
2197
- filename: "trajectories.json",
2198
- mimeType: "application/json",
2199
- }),
2200
- exportTrajectoriesZip: async () => ({
2201
- filename: "trajectories-export.zip",
2202
- entries: [
2203
- { name: "manifest.json", data: "{}" },
2204
- { name: `${trajectoryId}/summary.json`, data: "{}" },
2205
- { name: `${trajectoryId}/trajectory.json`, data: "{}" },
2206
- ],
2207
- }),
2208
- };
2209
-
2210
- const runtime = createRuntimeForChatSseTests({
2211
- getService: (serviceType) =>
2212
- serviceType === "trajectory_logger" ? trajectoryLogger : null,
2213
- getServicesByType: (serviceType) =>
2214
- serviceType === "trajectory_logger" ? [trajectoryLogger] : [],
2215
- }) as AgentRuntime & { adapter?: unknown };
2216
- runtime.adapter = {};
2217
-
2218
- const streamServer = await startApiServer({ port: 0, runtime });
2219
- try {
2220
- const zipRes = await reqRaw(
2221
- streamServer.port,
2222
- "POST",
2223
- "/api/trajectories/export",
2224
- { format: "zip" },
2225
- );
2226
- expect(zipRes.status).toBe(200);
2227
- expect(String(zipRes.headers["content-type"] ?? "")).toContain(
2228
- "application/zip",
2229
- );
2230
- expect(String(zipRes.headers["content-disposition"] ?? "")).toContain(
2231
- ".zip",
2232
- );
2233
- expect(zipRes.data.subarray(0, 2).toString("utf-8")).toBe("PK");
2234
- const zipText = zipRes.data.toString("utf-8");
2235
- expect(zipText).toContain("manifest.json");
2236
- expect(zipText).toContain(`${trajectoryId}/summary.json`);
2237
- } finally {
2238
- await streamServer.close();
2239
- }
2240
- });
2241
-
2242
- it("GET/PUT /api/trajectories/config reflects plugin logger enabled state", async () => {
2243
- let enabled = false;
2244
- const setEnabledCalls: boolean[] = [];
2245
-
2246
- const trajectoryLogger = {
2247
- isEnabled: () => enabled,
2248
- setEnabled: (next: boolean) => {
2249
- setEnabledCalls.push(next);
2250
- enabled = next;
2251
- },
2252
- listTrajectories: async () => ({
2253
- trajectories: [],
2254
- total: 0,
2255
- offset: 0,
2256
- limit: 50,
2257
- }),
2258
- getTrajectoryDetail: async () => null,
2259
- getStats: async () => ({
2260
- totalTrajectories: 0,
2261
- totalSteps: 0,
2262
- totalLlmCalls: 0,
2263
- totalPromptTokens: 0,
2264
- totalCompletionTokens: 0,
2265
- averageDurationMs: 0,
2266
- averageReward: 0,
2267
- bySource: {},
2268
- byStatus: {},
2269
- byScenario: {},
2270
- }),
2271
- deleteTrajectories: async () => 0,
2272
- clearAllTrajectories: async () => 0,
2273
- exportTrajectories: async () => ({
2274
- data: "[]",
2275
- filename: "trajectories.json",
2276
- mimeType: "application/json",
2277
- }),
2278
- };
2279
-
2280
- const runtime = createRuntimeForChatSseTests({
2281
- getService: (serviceType) =>
2282
- serviceType === "trajectory_logger" ? trajectoryLogger : null,
2283
- getServicesByType: (serviceType) =>
2284
- serviceType === "trajectory_logger" ? [trajectoryLogger] : [],
2285
- }) as AgentRuntime & { adapter?: unknown };
2286
- runtime.adapter = {};
2287
-
2288
- const streamServer = await startApiServer({ port: 0, runtime });
2289
- try {
2290
- const before = await req(
2291
- streamServer.port,
2292
- "GET",
2293
- "/api/trajectories/config",
2294
- );
2295
- expect(before.status).toBe(200);
2296
- expect(before.data.enabled).toBe(false);
2297
-
2298
- const enabledUpdate = await req(
2299
- streamServer.port,
2300
- "PUT",
2301
- "/api/trajectories/config",
2302
- { enabled: true },
2303
- );
2304
- expect(enabledUpdate.status).toBe(200);
2305
- expect(enabledUpdate.data.enabled).toBe(true);
2306
- expect(enabled).toBe(true);
2307
-
2308
- const disabledUpdate = await req(
2309
- streamServer.port,
2310
- "PUT",
2311
- "/api/trajectories/config",
2312
- { enabled: false },
2313
- );
2314
- expect(disabledUpdate.status).toBe(200);
2315
- expect(disabledUpdate.data.enabled).toBe(false);
2316
- expect(enabled).toBe(false);
2317
- expect(setEnabledCalls).toEqual([true, false]);
2318
- } finally {
2319
- await streamServer.close();
2320
- }
2321
- });
2322
-
2323
- it.skip("persists core trajectory rows to DB and loads them after restart", async () => {
2324
- type RawSqlQuery = {
2325
- queryChunks?: Array<{
2326
- value?: string[];
2327
- }>;
2328
- };
2329
-
2330
- const readSqlText = (query: RawSqlQuery): string => {
2331
- const chunks = query.queryChunks ?? [];
2332
- return chunks
2333
- .map((chunk) =>
2334
- Array.isArray(chunk.value) ? chunk.value.join("") : "",
2335
- )
2336
- .join("")
2337
- .trim();
2338
- };
2339
-
2340
- const splitSqlTuple = (valueList: string): string[] => {
2341
- const values: string[] = [];
2342
- let current = "";
2343
- let inString = false;
2344
- for (let i = 0; i < valueList.length; i += 1) {
2345
- const char = valueList[i];
2346
- if (char === "'") {
2347
- current += char;
2348
- if (inString && valueList[i + 1] === "'") {
2349
- current += "'";
2350
- i += 1;
2351
- continue;
2352
- }
2353
- inString = !inString;
2354
- continue;
2355
- }
2356
- if (char === "," && !inString) {
2357
- values.push(current.trim());
2358
- current = "";
2359
- continue;
2360
- }
2361
- current += char;
2362
- }
2363
- if (current.trim().length > 0) values.push(current.trim());
2364
- return values;
2365
- };
2366
-
2367
- const parseSqlScalar = (token: string): string | number | null => {
2368
- if (token.toUpperCase() === "NULL") return null;
2369
- if (token.startsWith("'") && token.endsWith("'")) {
2370
- return token.slice(1, -1).replace(/''/g, "'");
2371
- }
2372
- const asNumber = Number(token);
2373
- return Number.isFinite(asNumber) ? asNumber : token;
2374
- };
2375
-
2376
- class InMemoryTrajectoryDb {
2377
- private rows = new Map<string, Record<string, unknown>>();
2378
-
2379
- async execute(query: RawSqlQuery): Promise<{ rows: unknown[] }> {
2380
- const sql = readSqlText(query);
2381
- const normalized = sql.toLowerCase().replace(/\s+/g, " ").trim();
2382
-
2383
- if (
2384
- normalized.startsWith("create table if not exists trajectories")
2385
- ) {
2386
- return { rows: [] };
2387
- }
2388
-
2389
- if (normalized.startsWith("insert into trajectories")) {
2390
- const match =
2391
- /insert into trajectories\s*\(([\s\S]+?)\)\s*values\s*\(([\s\S]+?)\)\s*on conflict/i.exec(
2392
- sql,
2393
- );
2394
- if (!match) return { rows: [] };
2395
- const columns = splitSqlTuple(match[1]).map((col) => col.trim());
2396
- const values = splitSqlTuple(match[2]).map(parseSqlScalar);
2397
- const row: Record<string, unknown> = {};
2398
- for (let i = 0; i < columns.length; i += 1) {
2399
- row[columns[i]] = values[i] ?? null;
2400
- }
2401
- const id = String(row.id ?? "");
2402
- if (id) {
2403
- const existing = this.rows.get(id) ?? {};
2404
- this.rows.set(id, { ...existing, ...row });
2405
- }
2406
- return { rows: [] };
2407
- }
2408
-
2409
- if (normalized.startsWith("select * from trajectories")) {
2410
- const limitMatch = /limit\s+(\d+)/i.exec(sql);
2411
- const limit = limitMatch ? Number(limitMatch[1]) : 5000;
2412
- const rows = Array.from(this.rows.values()).sort((a, b) =>
2413
- String(b.created_at ?? "").localeCompare(
2414
- String(a.created_at ?? ""),
2415
- ),
2416
- );
2417
- return { rows: rows.slice(0, limit) };
2418
- }
2419
-
2420
- if (
2421
- normalized.startsWith("select count(*) as total from trajectories")
2422
- ) {
2423
- return { rows: [{ total: this.rows.size }] };
2424
- }
2425
-
2426
- if (normalized.startsWith("delete from trajectories where id in")) {
2427
- const inMatch = /where id in \(([\s\S]+)\)/i.exec(sql);
2428
- const deleted: Array<Record<string, unknown>> = [];
2429
- if (inMatch) {
2430
- const ids = splitSqlTuple(inMatch[1])
2431
- .map(parseSqlScalar)
2432
- .filter((id): id is string => typeof id === "string");
2433
- for (const id of ids) {
2434
- if (this.rows.delete(id)) deleted.push({ id });
2435
- }
2436
- }
2437
- return normalized.includes("returning id")
2438
- ? { rows: deleted }
2439
- : { rows: [] };
2440
- }
2441
-
2442
- if (normalized.startsWith("delete from trajectories")) {
2443
- this.rows.clear();
2444
- return { rows: [] };
2445
- }
2446
-
2447
- return { rows: [] };
2448
- }
2449
- }
2450
-
2451
- const db = new InMemoryTrajectoryDb();
2452
-
2453
- const createCoreLogger = () => {
2454
- const llmCalls: Array<Record<string, unknown>> = [];
2455
- const providerAccess: Array<Record<string, unknown>> = [];
2456
- return {
2457
- logLlmCall: (params: Record<string, unknown>) => {
2458
- llmCalls.push({
2459
- ...params,
2460
- timestamp:
2461
- typeof params.timestamp === "number"
2462
- ? params.timestamp
2463
- : Date.now(),
2464
- });
2465
- },
2466
- logProviderAccess: (params: Record<string, unknown>) => {
2467
- providerAccess.push({
2468
- ...params,
2469
- timestamp:
2470
- typeof params.timestamp === "number"
2471
- ? params.timestamp
2472
- : Date.now(),
2473
- });
2474
- },
2475
- getLlmCallLogs: () => llmCalls,
2476
- getProviderAccessLogs: () => providerAccess,
2477
- };
2478
- };
2479
-
2480
- const createRuntime = () => {
2481
- const coreLogger = createCoreLogger();
2482
- const runtime = createRuntimeForChatSseTests({
2483
- getService: (serviceType) =>
2484
- serviceType === "trajectory_logger" ? coreLogger : null,
2485
- getServicesByType: (serviceType) =>
2486
- serviceType === "trajectory_logger" ? [coreLogger] : [],
2487
- handleMessage: async (runtimeArg, message, onResponse) => {
2488
- const metadata =
2489
- message && typeof message === "object" && "metadata" in message
2490
- ? (message as { metadata?: { trajectoryStepId?: string } })
2491
- .metadata
2492
- : undefined;
2493
- const stepId = metadata?.trajectoryStepId;
2494
- if (stepId) {
2495
- const logger = runtimeArg.getService("trajectory_logger") as {
2496
- logLlmCall?: (params: Record<string, unknown>) => void;
2497
- } | null;
2498
- logger?.logLlmCall?.({
2499
- stepId,
2500
- model: "unit-test-model",
2501
- systemPrompt: "system",
2502
- userPrompt: "persist me",
2503
- response: "persisted",
2504
- temperature: 0,
2505
- maxTokens: 32,
2506
- purpose: "response",
2507
- actionType: "test",
2508
- promptTokens: 3,
2509
- completionTokens: 4,
2510
- latencyMs: 10,
2511
- });
2512
- }
2513
- await onResponse({ text: "persisted" } as Content);
2514
- return {
2515
- responseContent: {
2516
- text: "persisted",
2517
- },
2518
- };
2519
- },
2520
- }) as AgentRuntime & {
2521
- adapter?: {
2522
- db: { execute: (query: RawSqlQuery) => Promise<unknown> };
2523
- };
2524
- };
2525
- runtime.adapter = { db };
2526
- return runtime;
2527
- };
2528
-
2529
- const runtimeA = createRuntime();
2530
- const serverA = await startApiServer({ port: 0, runtime: runtimeA });
2531
- let firstTrajectoryId: string | null = null;
2532
- try {
2533
- const chat = await req(serverA.port, "POST", "/api/chat", {
2534
- text: "persist this trajectory",
2535
- mode: "simple",
2536
- });
2537
- expect(chat.status).toBe(200);
2538
-
2539
- const list = await req(serverA.port, "GET", "/api/trajectories");
2540
- expect(list.status).toBe(200);
2541
- const rows = list.data.trajectories as Array<Record<string, unknown>>;
2542
- expect(Array.isArray(rows)).toBe(true);
2543
- expect(rows.length).toBeGreaterThan(0);
2544
- firstTrajectoryId = String(rows[0]?.id ?? "");
2545
- expect(firstTrajectoryId.length).toBeGreaterThan(0);
2546
- } finally {
2547
- await serverA.close();
2548
- }
2549
-
2550
- const runtimeB = createRuntime();
2551
- const serverB = await startApiServer({ port: 0, runtime: runtimeB });
2552
- try {
2553
- const listAfterRestart = await req(
2554
- serverB.port,
2555
- "GET",
2556
- "/api/trajectories",
2557
- );
2558
- expect(listAfterRestart.status).toBe(200);
2559
- const rows = listAfterRestart.data.trajectories as Array<
2560
- Record<string, unknown>
2561
- >;
2562
- expect(Array.isArray(rows)).toBe(true);
2563
- expect(rows.length).toBeGreaterThan(0);
2564
- const ids = rows.map((row) => String(row.id ?? ""));
2565
- expect(ids).toContain(firstTrajectoryId);
2566
- } finally {
2567
- await serverB.close();
2568
- }
2569
- });
2570
- });
2571
-
2572
- describe("insufficient credits fallback", () => {
2573
- it("POST /api/chat replaces '(no response)' with a top-up message", async () => {
2574
- const runtime = createRuntimeForCreditNoResponseTests();
2575
- const streamServer = await startApiServer({ port: 0, runtime });
2576
- try {
2577
- const { status, data } = await req(
2578
- streamServer.port,
2579
- "POST",
2580
- "/api/chat",
2581
- {
2582
- text: "hello",
2583
- mode: "power",
2584
- },
2585
- );
2586
- expect(status).toBe(200);
2587
- expect(String(data.text)).toMatch(/top up your credits/i);
2588
- expect(String(data.text)).not.toBe("(no response)");
2589
- } finally {
2590
- await streamServer.close();
2591
- }
2592
- });
2593
-
2594
- it("POST /api/chat/stream emits a done event with top-up text", async () => {
2595
- const runtime = createRuntimeForCreditNoResponseTests();
2596
- const streamServer = await startApiServer({ port: 0, runtime });
2597
- try {
2598
- const { status, events } = await reqSse(
2599
- streamServer.port,
2600
- "/api/chat/stream",
2601
- { text: "hello", mode: "power" },
2602
- );
2603
- expect(status).toBe(200);
2604
- const doneEvent = events.find((event) => event.type === "done");
2605
- expect(doneEvent).toBeDefined();
2606
- expect(String(doneEvent?.fullText ?? "")).toMatch(
2607
- /top up your credits/i,
2608
- );
2609
- } finally {
2610
- await streamServer.close();
2611
- }
2612
- });
2613
-
2614
- it("POST /api/chat returns a top-up message when the provider throws insufficient credits", async () => {
2615
- const runtime = createRuntimeForCreditErrorTests();
2616
- const streamServer = await startApiServer({ port: 0, runtime });
2617
- try {
2618
- const { status, data } = await req(
2619
- streamServer.port,
2620
- "POST",
2621
- "/api/chat",
2622
- {
2623
- text: "hello",
2624
- mode: "power",
2625
- },
2626
- );
2627
- expect(status).toBe(200);
2628
- expect(String(data.text)).toMatch(/top up your credits/i);
2629
- } finally {
2630
- await streamServer.close();
2631
- }
2632
- });
2633
-
2634
- it("POST /api/chat replaces literal '(no response)' payloads with a top-up message", async () => {
2635
- const runtime = createRuntimeForCreditLiteralNoResponseTests();
2636
- const streamServer = await startApiServer({ port: 0, runtime });
2637
- try {
2638
- const { status, data } = await req(
2639
- streamServer.port,
2640
- "POST",
2641
- "/api/chat",
2642
- {
2643
- text: "hello",
2644
- mode: "power",
2645
- },
2646
- );
2647
- expect(status).toBe(200);
2648
- expect(String(data.text)).toMatch(/top up your credits/i);
2649
- expect(String(data.text)).not.toBe("(no response)");
2650
- } finally {
2651
- await streamServer.close();
2652
- }
2653
- });
2654
-
2655
- it("GET /api/trajectories prefers route-compatible logger when byType contains core logger", async () => {
2656
- const coreLogger = {
2657
- logLlmCall: () => {},
2658
- };
2659
-
2660
- const fullLogger = {
2661
- isEnabled: () => true,
2662
- setEnabled: () => {},
2663
- listTrajectories: async () => ({
2664
- trajectories: [
2665
- {
2666
- id: "trajectory-1",
2667
- agentId: "chat-stream-agent",
2668
- source: "client_chat",
2669
- status: "completed",
2670
- startTime: Date.now() - 1000,
2671
- endTime: Date.now(),
2672
- durationMs: 1000,
2673
- stepCount: 1,
2674
- llmCallCount: 1,
2675
- totalPromptTokens: 10,
2676
- totalCompletionTokens: 20,
2677
- totalReward: 0,
2678
- scenarioId: null,
2679
- batchId: null,
2680
- createdAt: new Date().toISOString(),
2681
- },
2682
- ],
2683
- total: 1,
2684
- offset: 0,
2685
- limit: 50,
2686
- }),
2687
- getTrajectoryDetail: async () => null,
2688
- getStats: async () => ({
2689
- totalTrajectories: 1,
2690
- totalSteps: 1,
2691
- totalLlmCalls: 1,
2692
- totalPromptTokens: 10,
2693
- totalCompletionTokens: 20,
2694
- averageDurationMs: 1000,
2695
- averageReward: 0,
2696
- bySource: { client_chat: 1 },
2697
- byStatus: { completed: 1 },
2698
- byScenario: {},
2699
- }),
2700
- deleteTrajectories: async () => 0,
2701
- clearAllTrajectories: async () => 0,
2702
- exportTrajectories: async () => ({
2703
- data: "[]",
2704
- filename: "trajectories.json",
2705
- mimeType: "application/json",
2706
- }),
2707
- };
2708
-
2709
- const runtime = createRuntimeForChatSseTests({
2710
- getServicesByType: (serviceType) =>
2711
- serviceType === "trajectory_logger" ? [coreLogger] : [],
2712
- getService: (serviceType) =>
2713
- serviceType === "trajectory_logger" ? fullLogger : null,
2714
- }) as AgentRuntime & { adapter?: unknown };
2715
- runtime.adapter = {};
2716
-
2717
- const streamServer = await startApiServer({ port: 0, runtime });
2718
- try {
2719
- const res = await req(streamServer.port, "GET", "/api/trajectories");
2720
- expect(res.status).toBe(200);
2721
- const rows = res.data.trajectories as Array<Record<string, unknown>>;
2722
- expect(Array.isArray(rows)).toBe(true);
2723
- expect(rows).toHaveLength(1);
2724
- expect(rows[0]?.llmCallCount).toBe(1);
2725
- } finally {
2726
- await streamServer.close();
2727
- }
2728
- });
2729
-
2730
- it("GET /api/trajectories returns 503 when no route-compatible logger is available", async () => {
2731
- const runtime = createRuntimeForChatSseTests({
2732
- getServicesByType: (serviceType) =>
2733
- serviceType === "trajectory_logger" ? [{ logLlmCall: () => {} }] : [],
2734
- getService: (serviceType) =>
2735
- serviceType === "trajectory_logger" ? { logLlmCall: () => {} } : null,
2736
- }) as AgentRuntime & { adapter?: unknown };
2737
- runtime.adapter = {};
2738
-
2739
- const streamServer = await startApiServer({ port: 0, runtime });
2740
- try {
2741
- const res = await req(streamServer.port, "GET", "/api/trajectories");
2742
- expect(res.status).toBe(503);
2743
- expect(String(res.data.error)).toContain(
2744
- "Trajectory logger service not available",
2745
- );
2746
- } finally {
2747
- await streamServer.close();
2748
- }
2749
- });
2750
- });
2751
-
2752
- describe("trigger endpoints (no runtime)", () => {
2753
- it("GET /api/triggers returns 503", async () => {
2754
- const { status, data } = await req(port, "GET", "/api/triggers");
2755
- expect(status).toBe(503);
2756
- expect(String(data.error)).toContain("not running");
2757
- });
2758
-
2759
- it("POST /api/triggers returns 503", async () => {
2760
- const { status } = await req(port, "POST", "/api/triggers", {
2761
- displayName: "Heartbeat",
2762
- instructions: "Status heartbeat",
2763
- triggerType: "interval",
2764
- intervalMs: 120000,
2765
- });
2766
- expect(status).toBe(503);
2767
- });
2768
-
2769
- it("GET /api/triggers/health returns 503", async () => {
2770
- const { status } = await req(port, "GET", "/api/triggers/health");
2771
- expect(status).toBe(503);
2772
- });
2773
- });
2774
-
2775
- // -- Fine-tuning endpoints --
2776
-
2777
- describe("GET /api/training/* (no runtime)", () => {
2778
- it("returns training status with runtimeUnavailable", async () => {
2779
- const { status, data } = await req(port, "GET", "/api/training/status");
2780
- expect(status).toBe(200);
2781
- expect(data.runtimeAvailable).toBe(false);
2782
- expect(typeof data.runningJobs).toBe("number");
2783
- expect(typeof data.datasetCount).toBe("number");
2784
- expect(typeof data.modelCount).toBe("number");
2785
- });
2786
-
2787
- it("returns unavailable trajectories when runtime is missing", async () => {
2788
- const { status, data } = await req(
2789
- port,
2790
- "GET",
2791
- "/api/training/trajectories?limit=10&offset=0",
2792
- );
2793
- expect(status).toBe(200);
2794
- expect(data.available).toBe(false);
2795
- expect(data.reason).toBe("runtime_not_started");
2796
- });
2797
-
2798
- it("returns datasets, jobs, and models lists", async () => {
2799
- const datasets = await req(port, "GET", "/api/training/datasets");
2800
- const jobs = await req(port, "GET", "/api/training/jobs");
2801
- const models = await req(port, "GET", "/api/training/models");
2802
-
2803
- expect(datasets.status).toBe(200);
2804
- expect(jobs.status).toBe(200);
2805
- expect(models.status).toBe(200);
2806
- expect(Array.isArray(datasets.data.datasets)).toBe(true);
2807
- expect(Array.isArray(jobs.data.jobs)).toBe(true);
2808
- expect(Array.isArray(models.data.models)).toBe(true);
2809
- });
2810
-
2811
- it("returns 404 for missing trajectory and missing job", async () => {
2812
- const trajectory = await req(
2813
- port,
2814
- "GET",
2815
- "/api/training/trajectories/not-found",
2816
- );
2817
- const job = await req(port, "GET", "/api/training/jobs/not-found");
2818
- expect(trajectory.status).toBe(404);
2819
- expect(job.status).toBe(404);
2820
- });
2821
-
2822
- it("streams dataset build events over websocket", async () => {
2823
- const ws = new WebSocket(`ws://127.0.0.1:${port}/ws`);
2824
- try {
2825
- await waitForWsMessage(ws, (message) => message.type === "status");
2826
- const waitForDatasetBuilt = waitForWsMessage(
2827
- ws,
2828
- (message) =>
2829
- message.type === "training_event" &&
2830
- ((message.payload as Record<string, unknown>)?.kind as string) ===
2831
- "dataset_built",
2832
- );
2833
-
2834
- const response = await req(
2835
- port,
2836
- "POST",
2837
- "/api/training/datasets/build",
2838
- {
2839
- limit: 5,
2840
- minLlmCallsPerTrajectory: 1,
2841
- },
2842
- );
2843
- expect(response.status).toBe(201);
2844
-
2845
- const message = await waitForDatasetBuilt;
2846
- expect(message.type).toBe("training_event");
2847
- expect((message.payload as Record<string, unknown>)?.kind).toBe(
2848
- "dataset_built",
2849
- );
2850
- } finally {
2851
- ws.close();
2852
- }
2853
- });
2854
-
2855
- it("returns 400 for invalid job/model mutation requests", async () => {
2856
- const startJob = await req(port, "POST", "/api/training/jobs", {
2857
- datasetId: "dataset-does-not-exist",
2858
- });
2859
- const importModel = await req(
2860
- port,
2861
- "POST",
2862
- "/api/training/models/model-does-not-exist/import-ollama",
2863
- {},
2864
- );
2865
- const activateModel = await req(
2866
- port,
2867
- "POST",
2868
- "/api/training/models/model-does-not-exist/activate",
2869
- {},
2870
- );
2871
- const benchmarkModel = await req(
2872
- port,
2873
- "POST",
2874
- "/api/training/models/model-does-not-exist/benchmark",
2875
- {},
2876
- );
2877
-
2878
- expect(startJob.status).toBe(400);
2879
- expect(importModel.status).toBe(400);
2880
- expect(activateModel.status).toBe(400);
2881
- expect(benchmarkModel.status).toBe(400);
2882
- });
2883
-
2884
- it("returns 404 when cancelling unknown training job", async () => {
2885
- const response = await req(
2886
- port,
2887
- "POST",
2888
- "/api/training/jobs/job-does-not-exist/cancel",
2889
- {},
2890
- );
2891
- expect(response.status).toBe(404);
2892
- });
2893
- });
2894
-
2895
- // -- Plugin discovery (real filesystem) --
2896
-
2897
- describe("GET /api/plugins", () => {
2898
- it("returns a plugins array from real filesystem scan", async () => {
2899
- const { status, data } = await req(port, "GET", "/api/plugins");
2900
- expect(status).toBe(200);
2901
- expect(Array.isArray(data.plugins)).toBe(true);
2902
- });
2903
-
2904
- it("plugins have correct shape", async () => {
2905
- const { data } = await req(port, "GET", "/api/plugins");
2906
- const plugins = data.plugins as Array<Record<string, unknown>>;
2907
- if (plugins.length > 0) {
2908
- const p = plugins[0];
2909
- expect(typeof p.id).toBe("string");
2910
- expect(typeof p.name).toBe("string");
2911
- expect(typeof p.description).toBe("string");
2912
- expect(typeof p.enabled).toBe("boolean");
2913
- expect(typeof p.configured).toBe("boolean");
2914
- expect(["ai-provider", "connector", "database", "feature"]).toContain(
2915
- p.category,
2916
- );
2917
- expect(Array.isArray(p.configKeys)).toBe(true);
2918
- }
2919
- });
2920
-
2921
- it("hides Vercel OIDC token key from plugin metadata", async () => {
2922
- const { data } = await req(port, "GET", "/api/plugins");
2923
- const plugins = data.plugins as Array<Record<string, unknown>>;
2924
- const vercel = plugins.find((p) => p.id === "vercel-ai-gateway");
2925
- if (!vercel) return;
2926
-
2927
- const configKeys = Array.isArray(vercel.configKeys)
2928
- ? (vercel.configKeys as string[])
2929
- : [];
2930
- expect(configKeys).not.toContain("VERCEL_OIDC_TOKEN");
2931
-
2932
- const parameters = Array.isArray(vercel.parameters)
2933
- ? (vercel.parameters as Array<Record<string, unknown>>)
2934
- : [];
2935
- const parameterKeys = parameters.map((param) => param.key);
2936
- expect(parameterKeys).not.toContain("VERCEL_OIDC_TOKEN");
2937
- });
2938
- });
2939
-
2940
- // -- Skills discovery --
2941
-
2942
- describe("GET /api/skills", () => {
2943
- it("returns a skills array", async () => {
2944
- const { status, data } = await req(port, "GET", "/api/skills");
2945
- expect(status).toBe(200);
2946
- expect(Array.isArray(data.skills)).toBe(true);
2947
- });
2948
-
2949
- it("includes marketplace-installed skills from the hidden .marketplace directory", async () => {
2950
- const marketplaceSkillDir = path.join(
2951
- _e2eTempDir,
2952
- "workspace",
2953
- "skills",
2954
- ".marketplace",
2955
- "remote-skill",
2956
- );
2957
- await fs.mkdir(marketplaceSkillDir, { recursive: true });
2958
- await fs.writeFile(
2959
- path.join(marketplaceSkillDir, "SKILL.md"),
2960
- [
2961
- "---",
2962
- "name: Remote Skill",
2963
- "description: Installed from marketplace",
2964
- "---",
2965
- "",
2966
- "# Remote skill",
2967
- ].join("\n"),
2968
- "utf-8",
2969
- );
2970
-
2971
- try {
2972
- const refreshed = await req(port, "POST", "/api/skills/refresh", {});
2973
- expect(refreshed.status).toBe(200);
2974
- const skills = refreshed.data.skills as Array<{ id?: string }>;
2975
- expect(skills.some((skill) => skill.id === "remote-skill")).toBe(true);
2976
- } finally {
2977
- await fs.rm(path.join(_e2eTempDir, "workspace", "skills"), {
2978
- recursive: true,
2979
- force: true,
2980
- });
2981
- await req(port, "POST", "/api/skills/refresh", {});
2982
- }
2983
- });
2984
-
2985
- it("falls back to runtime-provided skill directories when AgentSkillsService is empty", async () => {
2986
- const tempRoot = await fs.mkdtemp(
2987
- path.join(os.tmpdir(), "eliza-skills-"),
2988
- );
2989
- const bundledDir = path.join(tempRoot, "bundled-skills");
2990
- const skillDir = path.join(bundledDir, "fallback-skill");
2991
- await fs.mkdir(skillDir, { recursive: true });
2992
- await fs.writeFile(
2993
- path.join(skillDir, "SKILL.md"),
2994
- [
2995
- "---",
2996
- "name: Fallback Skill",
2997
- "description: Loads when catalog sync fails",
2998
- "---",
2999
- "",
3000
- "# Fallback skill",
3001
- ].join("\n"),
3002
- "utf-8",
3003
- );
3004
-
3005
- const runtime = {
3006
- agentId: "skills-fallback-agent",
3007
- character: { name: "SkillsFallbackAgent" },
3008
- getService: (serviceType: string) => {
3009
- if (serviceType === "AGENT_SKILLS_SERVICE") {
3010
- return {
3011
- getLoadedSkills: () => [],
3012
- };
3013
- }
3014
- return null;
3015
- },
3016
- getSetting: (key: string) => {
3017
- if (key === "BUNDLED_SKILLS_DIRS") return bundledDir;
3018
- return undefined;
3019
- },
3020
- getRoomsByWorld: async () => [],
3021
- getTasks: async () => [],
3022
- getTask: async () => null,
3023
- createTask: async () => crypto.randomUUID() as UUID,
3024
- updateTask: async () => {},
3025
- deleteTask: async () => {},
3026
- } as unknown as unknown as AgentRuntime;
3027
-
3028
- const streamServer = await startApiServer({ port: 0, runtime });
3029
- const streamPort = streamServer.port;
3030
-
3031
- try {
3032
- const refreshed = await req(
3033
- streamPort,
3034
- "POST",
3035
- "/api/skills/refresh",
3036
- {},
3037
- );
3038
- expect(refreshed.status).toBe(200);
3039
- const skills = refreshed.data.skills as Array<{ id?: string }>;
3040
- expect(skills.some((skill) => skill.id === "fallback-skill")).toBe(
3041
- true,
3042
- );
3043
- } finally {
3044
- await streamServer.close();
3045
- await fs.rm(tempRoot, { recursive: true, force: true });
3046
- }
3047
- });
3048
-
3049
- it("discovers managed skills from the state dir", async () => {
3050
- const managedSkillDir = path.join(_e2eTempDir, "skills", "managed-skill");
3051
- await fs.mkdir(managedSkillDir, { recursive: true });
3052
- await fs.writeFile(
3053
- path.join(managedSkillDir, "SKILL.md"),
3054
- [
3055
- "---",
3056
- "name: managed-skill",
3057
- "description: Seeded from the managed skills store",
3058
- "---",
3059
- "",
3060
- "# Managed skill",
3061
- ].join("\n"),
3062
- "utf-8",
3063
- );
3064
-
3065
- try {
3066
- const refreshed = await req(port, "POST", "/api/skills/refresh", {});
3067
- expect(refreshed.status).toBe(200);
3068
- const skills = refreshed.data.skills as Array<{ id?: string }>;
3069
- expect(skills.some((skill) => skill.id === "managed-skill")).toBe(true);
3070
- } finally {
3071
- await fs.rm(path.join(_e2eTempDir, "skills"), {
3072
- recursive: true,
3073
- force: true,
3074
- });
3075
- await req(port, "POST", "/api/skills/refresh", {});
3076
- }
3077
- });
3078
- });
3079
-
3080
- describe("skills marketplace endpoints", () => {
3081
- it("GET /api/skills/marketplace/search requires query", async () => {
3082
- const { status, data } = await req(
3083
- port,
3084
- "GET",
3085
- "/api/skills/marketplace/search",
3086
- );
3087
- expect(status).toBe(400);
3088
- expect(String(data.error)).toContain("Query");
3089
- });
3090
-
3091
- it("GET /api/skills/marketplace/installed returns array", async () => {
3092
- const { status, data } = await req(
3093
- port,
3094
- "GET",
3095
- "/api/skills/marketplace/installed",
3096
- );
3097
- expect(status).toBe(200);
3098
- expect(Array.isArray(data.skills)).toBe(true);
3099
- });
3100
-
3101
- it("GET /api/skills/marketplace/search reports upstream network failures", async () => {
3102
- const savedRegistry = process.env.SKILLS_REGISTRY;
3103
- try {
3104
- process.env.SKILLS_REGISTRY = "http://127.0.0.1:1";
3105
- const { status, data } = await req(
3106
- port,
3107
- "GET",
3108
- "/api/skills/marketplace/search?q=agent",
3109
- );
3110
- expect(status).toBe(502);
3111
- expect(String(data.error).toLowerCase()).toContain("network");
3112
- } finally {
3113
- if (savedRegistry === undefined) delete process.env.SKILLS_REGISTRY;
3114
- else process.env.SKILLS_REGISTRY = savedRegistry;
3115
- }
3116
- });
3117
-
3118
- it("POST /api/skills/marketplace/install validates source input", async () => {
3119
- const { status, data } = await req(
3120
- port,
3121
- "POST",
3122
- "/api/skills/marketplace/install",
3123
- { name: "test" },
3124
- );
3125
- expect(status).toBe(400);
3126
- expect(String(data.error)).toContain("githubUrl");
3127
- });
3128
-
3129
- it("POST /api/skills/marketplace/uninstall validates id input", async () => {
3130
- const { status, data } = await req(
3131
- port,
3132
- "POST",
3133
- "/api/skills/marketplace/uninstall",
3134
- {},
3135
- );
3136
- expect(status).toBe(400);
3137
- expect(String(data.error)).toContain("id");
3138
- });
3139
- });
3140
-
3141
- // -- Logs --
3142
-
3143
- describe("GET /api/logs", () => {
3144
- it("returns entries array with at least the startup log", async () => {
3145
- const { status, data } = await req(port, "GET", "/api/logs");
3146
- expect(status).toBe(200);
3147
- expect(Array.isArray(data.entries)).toBe(true);
3148
- const entries = data.entries as Array<Record<string, unknown>>;
3149
- expect(entries.length).toBeGreaterThan(0);
3150
- // Verify log entry shape
3151
- expect(typeof entries[0].timestamp).toBe("number");
3152
- expect(typeof entries[0].level).toBe("string");
3153
- expect(typeof entries[0].message).toBe("string");
3154
- });
3155
- });
3156
-
3157
- describe("GET /api/agent/events", () => {
3158
- it("returns replay response shape", async () => {
3159
- const { status, data } = await req(port, "GET", "/api/agent/events");
3160
- expect(status).toBe(200);
3161
- expect(Array.isArray(data.events)).toBe(true);
3162
- expect(typeof data.replayed).toBe("boolean");
3163
- expect(typeof data.totalBuffered).toBe("number");
3164
- expect(
3165
- data.latestEventId === null || typeof data.latestEventId === "string",
3166
- ).toBe(true);
3167
- });
3168
-
3169
- it("captures runtime AGENT_EVENT emissions in replay buffer", async () => {
3170
- const eventService = new TestAgentEventService();
3171
- const runtime = createRuntimeForStreamTests({
3172
- eventService,
3173
- loopRunning: false,
3174
- });
3175
- const streamServer = await startApiServer({ port: 0, runtime });
3176
- try {
3177
- eventService.emit({
3178
- runId: "run-stream",
3179
- seq: 1,
3180
- stream: "assistant",
3181
- ts: Date.now(),
3182
- data: { text: "stream-check" },
3183
- agentId: "test-agent-id",
3184
- });
3185
-
3186
- const { status, data } = await req(
3187
- streamServer.port,
3188
- "GET",
3189
- "/api/agent/events",
3190
- );
3191
- expect(status).toBe(200);
3192
- const events = data.events as Array<Record<string, unknown>>;
3193
- const hasExpectedEvent = events.some((event) => {
3194
- const payload = event.payload as Record<string, unknown>;
3195
- return (
3196
- event.type === "agent_event" && payload.text === "stream-check"
3197
- );
3198
- });
3199
- expect(hasExpectedEvent).toBe(true);
3200
- } finally {
3201
- await streamServer.close();
3202
- }
3203
- });
3204
-
3205
- it("streams AGENT_EVENT over websocket clients", async () => {
3206
- const eventService = new TestAgentEventService();
3207
- const runtime = createRuntimeForStreamTests({
3208
- eventService,
3209
- loopRunning: false,
3210
- });
3211
- const streamServer = await startApiServer({ port: 0, runtime });
3212
- const ws = new WebSocket(`ws://127.0.0.1:${streamServer.port}/ws`);
3213
- try {
3214
- await waitForWsMessage(ws, (message) => message.type === "status");
3215
-
3216
- const waitForAgentEvent = waitForWsMessage(
3217
- ws,
3218
- (message) =>
3219
- message.type === "agent_event" &&
3220
- ((message.payload as Record<string, unknown>)?.text as string) ===
3221
- "ws-stream-check",
3222
- );
3223
-
3224
- eventService.emit({
3225
- runId: "run-stream-ws",
3226
- seq: 1,
3227
- stream: "assistant",
3228
- ts: Date.now(),
3229
- data: { text: "ws-stream-check" },
3230
- agentId: "test-agent-id",
3231
- });
3232
-
3233
- const message = await waitForAgentEvent;
3234
- expect(message.type).toBe("agent_event");
3235
- } finally {
3236
- ws.close();
3237
- await streamServer.close();
3238
- }
3239
- }, 30_000);
3240
-
3241
- it("routes proactive autonomy output to active chat and exposes matching overview/event surfaces", async () => {
3242
- const eventService = new TestAgentEventService();
3243
- const runtime = createRuntimeForAutonomySurfaceTests({
3244
- eventService,
3245
- loopRunning: true,
3246
- });
3247
- const streamServer = await startApiServer({ port: 0, runtime });
3248
- const ws = new WebSocket(`ws://127.0.0.1:${streamServer.port}/ws`);
3249
- try {
3250
- await waitForWsMessage(ws, (message) => message.type === "status");
3251
-
3252
- const createConversation = await req(
3253
- streamServer.port,
3254
- "POST",
3255
- "/api/conversations",
3256
- {
3257
- title: "Autonomy routing test",
3258
- },
3259
- );
3260
- expect(createConversation.status).toBe(200);
3261
- const conversation = createConversation.data.conversation as {
3262
- id?: string;
3263
- };
3264
- const conversationId = conversation.id ?? "";
3265
- expect(conversationId.length).toBeGreaterThan(0);
3266
-
3267
- ws.send(
3268
- JSON.stringify({
3269
- type: "active-conversation",
3270
- conversationId,
3271
- }),
3272
- );
3273
-
3274
- const waitForThought = waitForWsMessage(
3275
- ws,
3276
- (message) =>
3277
- message.type === "agent_event" &&
3278
- ((message.payload as Record<string, unknown>)?.text as string) ===
3279
- "autonomy-thought",
3280
- );
3281
- const waitForAction = waitForWsMessage(
3282
- ws,
3283
- (message) =>
3284
- message.type === "agent_event" &&
3285
- ((message.payload as Record<string, unknown>)?.text as string) ===
3286
- "autonomy-action",
3287
- );
3288
- const waitForProactive = waitForWsMessage(
3289
- ws,
3290
- (message) =>
3291
- message.type === "proactive-message" &&
3292
- message.conversationId === conversationId,
3293
- 6000,
3294
- );
3295
-
3296
- eventService.emit({
3297
- runId: "run-autonomy-surface",
3298
- seq: 1,
3299
- stream: "provider",
3300
- ts: Date.now() - 5,
3301
- data: { text: "autonomy-thought" },
3302
- agentId: "autonomy-surface-agent",
3303
- });
3304
- eventService.emit({
3305
- runId: "run-autonomy-surface",
3306
- seq: 2,
3307
- stream: "provider",
3308
- ts: Date.now() - 1,
3309
- data: { text: "autonomy-action" },
3310
- agentId: "autonomy-surface-agent",
3311
- });
3312
- eventService.emit({
3313
- runId: "run-autonomy-surface",
3314
- seq: 3,
3315
- stream: "assistant",
3316
- ts: Date.now(),
3317
- data: {
3318
- text: "Autonomy says: trigger follow-up",
3319
- source: "trigger-dispatch",
3320
- },
3321
- agentId: "autonomy-surface-agent",
3322
- roomId: "00000000-0000-0000-0000-00000000a999" as UUID,
3323
- });
3324
-
3325
- await waitForThought;
3326
- await waitForAction;
3327
- const proactive = await waitForProactive;
3328
- const proactiveMessage = proactive.message as Record<string, unknown>;
3329
- expect(proactiveMessage.source).toBe("trigger-dispatch");
3330
- expect(String(proactiveMessage.text ?? "")).toContain("Autonomy says:");
3331
-
3332
- const messagesResponse = await req(
3333
- streamServer.port,
3334
- "GET",
3335
- `/api/conversations/${encodeURIComponent(conversationId)}/messages`,
3336
- );
3337
- expect(messagesResponse.status).toBe(200);
3338
- const messages = messagesResponse.data.messages as Array<
3339
- Record<string, unknown>
3340
- >;
3341
- const routed = messages.find(
3342
- (message) =>
3343
- message.role === "assistant" &&
3344
- message.source === "trigger-dispatch",
3345
- );
3346
- expect(routed).toBeDefined();
3347
- expect(String(routed?.text ?? "")).toContain("Autonomy says:");
3348
-
3349
- const replayResponse = await req(
3350
- streamServer.port,
3351
- "GET",
3352
- "/api/agent/events?limit=50",
3353
- );
3354
- expect(replayResponse.status).toBe(200);
3355
- const replayEvents = replayResponse.data.events as Array<
3356
- Record<string, unknown>
3357
- >;
3358
- const replayPayloads = replayEvents
3359
- .filter((event) => event.type === "agent_event")
3360
- .map((event) => event.payload as Record<string, unknown>);
3361
- expect(
3362
- replayPayloads.some((payload) => payload.text === "autonomy-thought"),
3363
- ).toBe(true);
3364
- expect(
3365
- replayPayloads.some((payload) => payload.text === "autonomy-action"),
3366
- ).toBe(true);
3367
-
3368
- const overviewResponse = await req(
3369
- streamServer.port,
3370
- "GET",
3371
- "/api/workbench/overview",
3372
- );
3373
- expect(overviewResponse.status).toBe(200);
3374
- const tasks = (overviewResponse.data.tasks ?? []) as Array<
3375
- Record<string, unknown>
3376
- >;
3377
- const triggers = (overviewResponse.data.triggers ?? []) as Array<
3378
- Record<string, unknown>
3379
- >;
3380
- expect(
3381
- tasks.some((task) => task.name === "Autonomy surface task"),
3382
- ).toBe(true);
3383
- expect(
3384
- triggers.some(
3385
- (trigger) => trigger.displayName === "Autonomy surface trigger",
3386
- ),
3387
- ).toBe(true);
3388
- } finally {
3389
- ws.close();
3390
- await streamServer.close();
3391
- }
3392
- }, 30_000);
3393
-
3394
- it("does not route client_chat assistant events into proactive messages", async () => {
3395
- const eventService = new TestAgentEventService();
3396
- const runtime = createRuntimeForAutonomySurfaceTests({
3397
- eventService,
3398
- loopRunning: true,
3399
- });
3400
- const streamServer = await startApiServer({ port: 0, runtime });
3401
- const ws = new WebSocket(`ws://127.0.0.1:${streamServer.port}/ws`);
3402
- try {
3403
- await waitForWsMessage(ws, (message) => message.type === "status");
3404
-
3405
- const createConversation = await req(
3406
- streamServer.port,
3407
- "POST",
3408
- "/api/conversations",
3409
- {
3410
- title: "No client_chat proactive routing",
3411
- },
3412
- );
3413
- expect(createConversation.status).toBe(200);
3414
- const conversation = createConversation.data.conversation as {
3415
- id?: string;
3416
- };
3417
- const conversationId = conversation.id ?? "";
3418
- expect(conversationId.length).toBeGreaterThan(0);
3419
-
3420
- ws.send(
3421
- JSON.stringify({
3422
- type: "active-conversation",
3423
- conversationId,
3424
- }),
3425
- );
3426
-
3427
- eventService.emit({
3428
- runId: "run-client-chat-no-proactive",
3429
- seq: 1,
3430
- stream: "assistant",
3431
- ts: Date.now(),
3432
- data: {
3433
- text: "should-not-route-to-proactive",
3434
- source: "client_chat",
3435
- },
3436
- agentId: "autonomy-surface-agent",
3437
- });
3438
-
3439
- await expect(
3440
- waitForWsMessage(
3441
- ws,
3442
- (message) =>
3443
- message.type === "proactive-message" &&
3444
- message.conversationId === conversationId,
3445
- 900,
3446
- ),
3447
- ).rejects.toThrow("Timed out waiting for websocket message");
3448
-
3449
- const messagesResponse = await req(
3450
- streamServer.port,
3451
- "GET",
3452
- `/api/conversations/${encodeURIComponent(conversationId)}/messages`,
3453
- );
3454
- expect(messagesResponse.status).toBe(200);
3455
- const messages = messagesResponse.data.messages as Array<
3456
- Record<string, unknown>
3457
- >;
3458
- const routed = messages.find(
3459
- (message) =>
3460
- String(message.text ?? "") === "should-not-route-to-proactive",
3461
- );
3462
- expect(routed).toBeUndefined();
3463
- } finally {
3464
- ws.close();
3465
- await streamServer.close();
3466
- }
3467
- }, 30_000);
3468
-
3469
- it("does not route ambiguous assistant events without source or room metadata", async () => {
3470
- const eventService = new TestAgentEventService();
3471
- const runtime = createRuntimeForAutonomySurfaceTests({
3472
- eventService,
3473
- loopRunning: true,
3474
- });
3475
- const streamServer = await startApiServer({ port: 0, runtime });
3476
- const ws = new WebSocket(`ws://127.0.0.1:${streamServer.port}/ws`);
3477
- try {
3478
- await waitForWsMessage(ws, (message) => message.type === "status");
3479
-
3480
- const createConversation = await req(
3481
- streamServer.port,
3482
- "POST",
3483
- "/api/conversations",
3484
- {
3485
- title: "No ambiguous proactive routing",
3486
- },
3487
- );
3488
- expect(createConversation.status).toBe(200);
3489
- const conversation = createConversation.data.conversation as {
3490
- id?: string;
3491
- };
3492
- const conversationId = conversation.id ?? "";
3493
- expect(conversationId.length).toBeGreaterThan(0);
3494
-
3495
- ws.send(
3496
- JSON.stringify({
3497
- type: "active-conversation",
3498
- conversationId,
3499
- }),
3500
- );
3501
-
3502
- eventService.emit({
3503
- runId: "run-ambiguous-no-proactive",
3504
- seq: 1,
3505
- stream: "assistant",
3506
- ts: Date.now(),
3507
- data: {
3508
- text: "ambiguous-should-not-route",
3509
- },
3510
- agentId: "autonomy-surface-agent",
3511
- });
3512
-
3513
- await expect(
3514
- waitForWsMessage(
3515
- ws,
3516
- (message) =>
3517
- message.type === "proactive-message" &&
3518
- message.conversationId === conversationId,
3519
- 900,
3520
- ),
3521
- ).rejects.toThrow("Timed out waiting for websocket message");
3522
-
3523
- const messagesResponse = await req(
3524
- streamServer.port,
3525
- "GET",
3526
- `/api/conversations/${encodeURIComponent(conversationId)}/messages`,
3527
- );
3528
- expect(messagesResponse.status).toBe(200);
3529
- const messages = messagesResponse.data.messages as Array<
3530
- Record<string, unknown>
3531
- >;
3532
- const routed = messages.find(
3533
- (message) =>
3534
- String(message.text ?? "") === "ambiguous-should-not-route",
3535
- );
3536
- expect(routed).toBeUndefined();
3537
- } finally {
3538
- ws.close();
3539
- await streamServer.close();
3540
- }
3541
- }, 30_000);
3542
- });
3543
-
3544
- // -- Onboarding --
3545
-
3546
- describe("onboarding endpoints", () => {
3547
- it("GET /api/onboarding/status returns complete flag", async () => {
3548
- const { status, data } = await req(port, "GET", "/api/onboarding/status");
3549
- expect(status).toBe(200);
3550
- expect(typeof data.complete).toBe("boolean");
3551
- });
3552
-
3553
- it("GET /api/onboarding/options returns real presets", async () => {
3554
- const { status, data } = await req(
3555
- port,
3556
- "GET",
3557
- "/api/onboarding/options",
3558
- );
3559
- expect(status).toBe(200);
3560
- const names = data.names as string[];
3561
- const styles = data.styles as unknown[];
3562
- const providers = data.providers as unknown[];
3563
-
3564
- expect(names.length).toBeGreaterThan(0);
3565
- expect(styles.length).toBeGreaterThan(0);
3566
- expect(providers.length).toBeGreaterThan(0);
3567
-
3568
- // Verify names come from the real preset pool (random subset)
3569
- for (const name of names) {
3570
- expect(AGENT_NAME_POOL).toContain(name);
3571
- }
3572
- // Ensure names are unique
3573
- expect(new Set(names).size).toBe(names.length);
3574
- });
3575
-
3576
- it("POST /api/onboarding stores adminEntityId in defaults", async () => {
3577
- const res = await req(port, "POST", "/api/onboarding", {
3578
- name: "AdminAgent",
3579
- connection: {
3580
- kind: "local-provider",
3581
- provider: "anthropic",
3582
- },
3583
- runMode: "local",
3584
- });
3585
- expect(res.status).toBe(200);
3586
-
3587
- const cfg = await req(port, "GET", "/api/config");
3588
- const defaults = (
3589
- cfg.data as {
3590
- agents?: { defaults?: { adminEntityId?: string } };
3591
- }
3592
- ).agents?.defaults;
3593
- const adminEntityId = defaults?.adminEntityId ?? "";
3594
- expect(typeof adminEntityId).toBe("string");
3595
- expect(adminEntityId).toMatch(
3596
- /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,
3597
- );
3598
- });
3599
- });
3600
-
3601
- // -- Config --
3602
-
3603
- describe("config endpoints", () => {
3604
- it("GET /api/config returns config object", async () => {
3605
- const { status, data } = await req(port, "GET", "/api/config");
3606
- expect(status).toBe(200);
3607
- expect(typeof data).toBe("object");
3608
- });
3609
-
3610
- it("PUT /api/config → GET /api/config round-trips", async () => {
3611
- const original = (await req(port, "GET", "/api/config")).data;
3612
-
3613
- // Write new config — use "features" (an allowed top-level key)
3614
- await req(port, "PUT", "/api/config", {
3615
- features: { roundTrip: { enabled: true } },
3616
- });
3617
- const { data } = await req(port, "GET", "/api/config");
3618
- expect(
3619
- (data as Record<string, Record<string, Record<string, boolean>>>)
3620
- .features?.roundTrip?.enabled,
3621
- ).toBe(true);
3622
-
3623
- // Restore
3624
- await req(port, "PUT", "/api/config", original);
3625
- });
3626
- });
3627
-
3628
- // -- Autonomy --
3629
-
3630
- // -- Workbench --
3631
-
3632
- describe("workbench endpoints", () => {
3633
- it("GET /api/workbench/overview returns summary + arrays", async () => {
3634
- const { status, data } = await req(
3635
- port,
3636
- "GET",
3637
- "/api/workbench/overview",
3638
- );
3639
- expect(status).toBe(200);
3640
- expect(Array.isArray(data.tasks)).toBe(true);
3641
- expect(Array.isArray(data.triggers)).toBe(true);
3642
- expect(Array.isArray(data.todos)).toBe(true);
3643
- expect(typeof data.summary).toBe("object");
3644
- });
3645
-
3646
- it("GET /api/workbench/tasks returns 503 when runtime is absent", async () => {
3647
- const { status } = await req(port, "GET", "/api/workbench/tasks");
3648
- expect(status).toBe(503);
3649
- });
3650
-
3651
- it("POST /api/workbench/tasks returns 503 when runtime is absent", async () => {
3652
- const { status } = await req(port, "POST", "/api/workbench/tasks", {
3653
- name: "test task",
3654
- });
3655
- expect(status).toBe(503);
3656
- });
3657
-
3658
- it("PUT /api/workbench/todos/:id returns 503 when runtime is absent", async () => {
3659
- const { status } = await req(port, "PUT", "/api/workbench/todos/fake", {
3660
- isCompleted: true,
3661
- });
3662
- expect(status).toBe(503);
3663
- });
3664
-
3665
- it("POST /api/workbench/todos returns 503 when runtime is absent", async () => {
3666
- const { status } = await req(port, "POST", "/api/workbench/todos", {
3667
- name: "test todo",
3668
- });
3669
- expect(status).toBe(503);
3670
- });
3671
- });
3672
-
3673
- describe("share ingest endpoints", () => {
3674
- it("POST /api/ingest/share accepts payload", async () => {
3675
- const { status, data } = await req(port, "POST", "/api/ingest/share", {
3676
- source: "e2e-test",
3677
- title: "Shared article",
3678
- url: "https://example.com/story",
3679
- });
3680
- expect(status).toBe(200);
3681
- expect(data.ok).toBe(true);
3682
- expect(typeof data.item).toBe("object");
3683
- expect(
3684
- typeof (data.item as Record<string, unknown>).suggestedPrompt,
3685
- ).toBe("string");
3686
- });
3687
-
3688
- it("GET /api/ingest/share?consume=1 drains queued items", async () => {
3689
- await req(port, "POST", "/api/ingest/share", {
3690
- source: "e2e-test",
3691
- text: "something to analyze",
3692
- });
3693
- const first = await req(port, "GET", "/api/ingest/share?consume=1");
3694
- expect(first.status).toBe(200);
3695
- expect(Array.isArray(first.data.items)).toBe(true);
3696
- expect((first.data.items as unknown[]).length).toBeGreaterThan(0);
3697
-
3698
- const second = await req(port, "GET", "/api/ingest/share?consume=1");
3699
- expect(second.status).toBe(200);
3700
- expect(Array.isArray(second.data.items)).toBe(true);
3701
- expect((second.data.items as unknown[]).length).toBe(0);
3702
- });
3703
- });
3704
-
3705
- // -- CORS --
3706
-
3707
- describe("CORS", () => {
3708
- it("OPTIONS returns 204", async () => {
3709
- const { status } = await req(port, "OPTIONS", "/api/status");
3710
- expect(status).toBe(204);
3711
- });
3712
-
3713
- it("localhost origin echoed back in CORS header", async () => {
3714
- const origin = `http://localhost:${port}`;
3715
- const { status, headers } = await new Promise<{
3716
- status: number;
3717
- headers: http.IncomingHttpHeaders;
3718
- }>((resolve, reject) => {
3719
- const r = http.request(
3720
- {
3721
- hostname: "127.0.0.1",
3722
- port,
3723
- path: "/api/status",
3724
- method: "GET",
3725
- headers: { Origin: origin },
3726
- },
3727
- (res) => {
3728
- res.resume();
3729
- resolve({ status: res.statusCode ?? 0, headers: res.headers });
3730
- },
3731
- );
3732
- r.on("error", reject);
3733
- r.end();
3734
- });
3735
- expect(status).toBe(200);
3736
- expect(headers["access-control-allow-origin"]).toBe(origin);
3737
- });
3738
-
3739
- it("non-local origin is rejected", async () => {
3740
- const { status } = await new Promise<{ status: number }>(
3741
- (resolve, reject) => {
3742
- const r = http.request(
3743
- {
3744
- hostname: "127.0.0.1",
3745
- port,
3746
- path: "/api/status",
3747
- method: "GET",
3748
- headers: { Origin: "https://evil.example.com" },
3749
- },
3750
- (res) => {
3751
- res.resume();
3752
- resolve({ status: res.statusCode ?? 0 });
3753
- },
3754
- );
3755
- r.on("error", reject);
3756
- r.end();
3757
- },
3758
- );
3759
- expect(status).toBe(403);
3760
- });
3761
- });
3762
-
3763
- // -- Error handling --
3764
-
3765
- describe("error handling", () => {
3766
- it("non-JSON POST body → 400", async () => {
3767
- const { status } = await new Promise<{ status: number }>(
3768
- (resolve, reject) => {
3769
- const r = http.request(
3770
- {
3771
- hostname: "127.0.0.1",
3772
- port,
3773
- path: "/api/chat",
3774
- method: "POST",
3775
- headers: {
3776
- "Content-Type": "application/json",
3777
- "Content-Length": 11,
3778
- },
3779
- },
3780
- (res) => {
3781
- res.resume();
3782
- resolve({ status: res.statusCode ?? 0 });
3783
- },
3784
- );
3785
- r.on("error", reject);
3786
- r.write("not-json!!!");
3787
- r.end();
3788
- },
3789
- );
3790
- expect(status).toBe(400);
3791
- });
3792
-
3793
- it("unknown route → 404", async () => {
3794
- expect((await req(port, "GET", "/api/does-not-exist")).status).toBe(404);
3795
- });
3796
-
3797
- it("PUT /api/plugins/nonexistent → 404", async () => {
3798
- expect(
3799
- (
3800
- await req(port, "PUT", "/api/plugins/nonexistent-plugin", {
3801
- enabled: true,
3802
- })
3803
- ).status,
3804
- ).toBe(404);
3805
- });
3806
- });
3807
-
3808
- // -- SPA asset fallback guard --
3809
-
3810
- describe("SPA asset fallback guard", () => {
3811
- it("GET /nonexistent-file.vrm does not return 200 with text/html", async () => {
3812
- const { status, headers } = await reqRaw(
3813
- port,
3814
- "GET",
3815
- "/nonexistent-file.vrm",
3816
- );
3817
- // The SPA fallback must never serve index.html for asset extension requests.
3818
- // Before the fix, missing .vrm files were incorrectly returned as 200 text/html.
3819
- expect(status).not.toBe(200);
3820
- expect(String(headers["content-type"] ?? "")).not.toContain("text/html");
3821
- });
3822
-
3823
- it("GET /some-unknown-route (no extension) is not blocked by the asset extension guard", async () => {
3824
- const { status, headers } = await reqRaw(
3825
- port,
3826
- "GET",
3827
- "/some-unknown-route",
3828
- );
3829
- // Extensionless paths must pass through the SPA fallback guard unchanged.
3830
- // Possible outcomes depending on environment:
3831
- // 200 — SPA fallback served index.html (production build with UI)
3832
- // 401 — auth gate intercepted (auth-enabled config)
3833
- // 404 — no built UI available, no matching route (CI/test environment)
3834
- // All are acceptable; the test only checks this was NOT blocked by the
3835
- // asset extension guard (which rejects paths like .vrm, .glb, .png).
3836
- expect([200, 401, 404]).toContain(status);
3837
- if (status === 200) {
3838
- const contentType = String(headers["content-type"] ?? "");
3839
- expect(contentType).toContain("text/html");
3840
- }
3841
- });
3842
- });
3843
-
3844
- // -- MCP Marketplace & Config --
3845
-
3846
- describe("MCP marketplace endpoints", () => {
3847
- it("GET /api/mcp/marketplace/search returns results array", async () => {
3848
- const { status, data } = await req(
3849
- port,
3850
- "GET",
3851
- "/api/mcp/marketplace/search?q=test&limit=5",
3852
- );
3853
- expect(status).toBe(200);
3854
- expect(data.ok).toBe(true);
3855
- expect(Array.isArray(data.results)).toBe(true);
3856
- });
3857
-
3858
- it("GET /api/mcp/marketplace/search works with empty query", async () => {
3859
- const { status, data } = await req(
3860
- port,
3861
- "GET",
3862
- "/api/mcp/marketplace/search",
3863
- );
3864
- expect(status).toBe(200);
3865
- expect(data.ok).toBe(true);
3866
- expect(Array.isArray(data.results)).toBe(true);
3867
- });
3868
-
3869
- it("GET /api/mcp/marketplace/details/:name returns 404 for nonexistent server", async () => {
3870
- const { status, data } = await req(
3871
- port,
3872
- "GET",
3873
- "/api/mcp/marketplace/details/nonexistent-server-xyz-123",
3874
- );
3875
- expect(status).toBe(404);
3876
- expect(typeof data.error).toBe("string");
3877
- });
3878
-
3879
- it("GET /api/mcp/marketplace/details requires name parameter", async () => {
3880
- const { status } = await req(
3881
- port,
3882
- "GET",
3883
- "/api/mcp/marketplace/details/",
3884
- );
3885
- expect(status).toBe(400);
3886
- });
3887
- });
3888
-
3889
- describe("MCP config endpoints", () => {
3890
- it("GET /api/mcp/config returns servers object", async () => {
3891
- const { status, data } = await req(port, "GET", "/api/mcp/config");
3892
- expect(status).toBe(200);
3893
- expect(data.ok).toBe(true);
3894
- expect(typeof data.servers).toBe("object");
3895
- });
3896
-
3897
- it("POST /api/mcp/config/server adds a server and returns requiresRestart", async () => {
3898
- const { status, data } = await req(
3899
- port,
3900
- "POST",
3901
- "/api/mcp/config/server",
3902
- {
3903
- name: "test-server",
3904
- config: {
3905
- type: "stdio",
3906
- command: "npx",
3907
- args: ["-y", "@test/mcp-server"],
3908
- },
3909
- },
3910
- );
3911
- expect(status).toBe(200);
3912
- expect(data.ok).toBe(true);
3913
- expect(data.name).toBe("test-server");
3914
- expect(data.requiresRestart).toBe(true);
3915
-
3916
- // Verify it persisted
3917
- const { data: configData } = await req(port, "GET", "/api/mcp/config");
3918
- const servers = configData.servers as Record<
3919
- string,
3920
- Record<string, unknown>
3921
- >;
3922
- expect(servers["test-server"]).toBeDefined();
3923
- expect(servers["test-server"].type).toBe("stdio");
3924
- expect(servers["test-server"].command).toBe("npx");
3925
- });
3926
-
3927
- it("POST /api/mcp/config/server validates name", async () => {
3928
- const { status } = await req(port, "POST", "/api/mcp/config/server", {
3929
- name: "",
3930
- config: { type: "stdio", command: "npx" },
3931
- });
3932
- expect(status).toBe(400);
3933
- });
3934
-
3935
- it("POST /api/mcp/config/server rejects reserved server names", async () => {
3936
- const { status } = await req(port, "POST", "/api/mcp/config/server", {
3937
- name: "__proto__",
3938
- config: { type: "stdio", command: "npx" },
3939
- });
3940
- expect(status).toBe(400);
3941
- });
3942
-
3943
- it("POST /api/mcp/config/server validates config type", async () => {
3944
- const { status } = await req(port, "POST", "/api/mcp/config/server", {
3945
- name: "bad-type",
3946
- config: { type: "invalid" },
3947
- });
3948
- expect(status).toBe(400);
3949
- });
3950
-
3951
- it("POST /api/mcp/config/server validates command for stdio", async () => {
3952
- const { status } = await req(port, "POST", "/api/mcp/config/server", {
3953
- name: "no-cmd",
3954
- config: { type: "stdio" },
3955
- });
3956
- expect(status).toBe(400);
3957
- });
3958
-
3959
- it("POST /api/mcp/config/server validates url for remote servers", async () => {
3960
- const { status } = await req(port, "POST", "/api/mcp/config/server", {
3961
- name: "no-url",
3962
- config: { type: "streamable-http" },
3963
- });
3964
- expect(status).toBe(400);
3965
- });
3966
-
3967
- it("POST /api/mcp/config/server rejects reserved keys in nested config", async () => {
3968
- const { status } = await req(port, "POST", "/api/mcp/config/server", {
3969
- name: "bad-nested-keys",
3970
- config: {
3971
- type: "stdio",
3972
- command: "npx",
3973
- env: {
3974
- constructor: { polluted: "yes" },
3975
- },
3976
- },
3977
- });
3978
- expect(status).toBe(400);
3979
- });
3980
-
3981
- it("POST /api/mcp/config/server adds remote server with url", async () => {
3982
- const { status, data } = await req(
3983
- port,
3984
- "POST",
3985
- "/api/mcp/config/server",
3986
- {
3987
- name: "test-remote",
3988
- config: {
3989
- type: "streamable-http",
3990
- url: "https://93.184.216.34/api",
3991
- },
3992
- },
3993
- );
3994
- expect(status).toBe(200);
3995
- expect(data.ok).toBe(true);
3996
- expect(data.requiresRestart).toBe(true);
3997
- });
3998
-
3999
- it("DELETE /api/mcp/config/server/:name removes and returns requiresRestart", async () => {
4000
- // First add
4001
- await req(port, "POST", "/api/mcp/config/server", {
4002
- name: "to-delete",
4003
- config: {
4004
- type: "stdio",
4005
- command: "npx",
4006
- args: ["-y", "@test/mcp-server"],
4007
- },
4008
- });
4009
-
4010
- // Then remove
4011
- const { status, data } = await req(
4012
- port,
4013
- "DELETE",
4014
- "/api/mcp/config/server/to-delete",
4015
- );
4016
- expect(status).toBe(200);
4017
- expect(data.ok).toBe(true);
4018
- expect(data.requiresRestart).toBe(true);
4019
-
4020
- // Verify removed
4021
- const { data: configData } = await req(port, "GET", "/api/mcp/config");
4022
- const servers = configData.servers as Record<string, unknown>;
4023
- expect(servers["to-delete"]).toBeUndefined();
4024
- });
4025
-
4026
- it("DELETE /api/mcp/config/server/:name is idempotent for nonexistent", async () => {
4027
- const { status, data } = await req(
4028
- port,
4029
- "DELETE",
4030
- "/api/mcp/config/server/does-not-exist",
4031
- );
4032
- expect(status).toBe(200);
4033
- expect(data.ok).toBe(true);
4034
- });
4035
-
4036
- it("DELETE /api/mcp/config/server/:name returns 400 for malformed encoding", async () => {
4037
- const { status, data } = await req(
4038
- port,
4039
- "DELETE",
4040
- "/api/mcp/config/server/%E0%A4%A",
4041
- );
4042
- expect(status).toBe(400);
4043
- expect(typeof data.error).toBe("string");
4044
- });
4045
-
4046
- it("PUT /api/mcp/config replaces entire config", async () => {
4047
- const newServers = {
4048
- "bulk-a": { type: "stdio", command: "npx", args: ["-y", "@test/a"] },
4049
- "bulk-b": { type: "streamable-http", url: "https://93.184.216.34/mcp" },
4050
- };
4051
-
4052
- const { status, data } = await req(port, "PUT", "/api/mcp/config", {
4053
- servers: newServers,
4054
- });
4055
- expect(status).toBe(200);
4056
- expect(data.ok).toBe(true);
4057
-
4058
- const { data: configData } = await req(port, "GET", "/api/mcp/config");
4059
- const servers = configData.servers as Record<string, unknown>;
4060
- expect(servers["bulk-a"]).toBeDefined();
4061
- expect(servers["bulk-b"]).toBeDefined();
4062
- });
4063
-
4064
- it("PUT /api/mcp/config rejects reserved keys in servers payload", async () => {
4065
- const { status } = await req(port, "PUT", "/api/mcp/config", {
4066
- servers: {
4067
- constructor: {
4068
- type: "stdio",
4069
- command: "npx",
4070
- },
4071
- },
4072
- });
4073
- expect(status).toBe(400);
4074
- });
4075
-
4076
- it("DELETE /api/mcp/config/server/:name rejects reserved server names", async () => {
4077
- const { status } = await req(
4078
- port,
4079
- "DELETE",
4080
- "/api/mcp/config/server/__proto__",
4081
- );
4082
- expect(status).toBe(400);
4083
- });
4084
- });
4085
-
4086
- describe("MCP status endpoint", () => {
4087
- it("GET /api/mcp/status returns servers array (empty without runtime MCP service)", async () => {
4088
- const { status, data } = await req(port, "GET", "/api/mcp/status");
4089
- expect(status).toBe(200);
4090
- expect(data.ok).toBe(true);
4091
- expect(Array.isArray(data.servers)).toBe(true);
4092
- });
4093
-
4094
- it("GET /api/mcp/status server entries have correct shape when present", async () => {
4095
- const { data } = await req(port, "GET", "/api/mcp/status");
4096
- const servers = data.servers as Array<Record<string, unknown>>;
4097
- // With no runtime, it returns empty — but shape is valid
4098
- for (const server of servers) {
4099
- expect(typeof server.name).toBe("string");
4100
- expect(typeof server.status).toBe("string");
4101
- expect(typeof server.toolCount).toBe("number");
4102
- expect(typeof server.resourceCount).toBe("number");
4103
- }
4104
- });
4105
- });
4106
- });
4107
-
4108
- describe("API Server E2E (workbench CRUD)", () => {
4109
- let port: number;
4110
- let close: () => Promise<void>;
4111
-
4112
- beforeAll(async () => {
4113
- const server = await startApiServer({
4114
- port: 0,
4115
- runtime: createRuntimeForWorkbenchCrudTests({ loopRunning: true }),
4116
- });
4117
- port = server.port;
4118
- close = server.close;
4119
- }, 30_000);
4120
-
4121
- afterAll(async () => {
4122
- await close();
4123
- });
4124
-
4125
- it("supports full CRUD for workbench tasks", async () => {
4126
- const create = await req(port, "POST", "/api/workbench/tasks", {
4127
- name: "Task CRUD Alpha",
4128
- description: "Initial task description",
4129
- tags: ["ops"],
4130
- });
4131
- expect(create.status).toBe(201);
4132
- const createdTask = create.data.task as Record<string, unknown>;
4133
- const taskId = createdTask.id as string;
4134
- expect(typeof taskId).toBe("string");
4135
-
4136
- const list = await req(port, "GET", "/api/workbench/tasks");
4137
- expect(list.status).toBe(200);
4138
- expect(Array.isArray(list.data.tasks)).toBe(true);
4139
- expect(
4140
- (list.data.tasks as Array<Record<string, unknown>>).some(
4141
- (task) => task.id === taskId,
4142
- ),
4143
- ).toBe(true);
4144
-
4145
- const read = await req(
4146
- port,
4147
- "GET",
4148
- `/api/workbench/tasks/${encodeURIComponent(taskId)}`,
4149
- );
4150
- expect(read.status).toBe(200);
4151
- expect((read.data.task as Record<string, unknown>).name).toBe(
4152
- "Task CRUD Alpha",
4153
- );
4154
-
4155
- const update = await req(
4156
- port,
4157
- "PUT",
4158
- `/api/workbench/tasks/${encodeURIComponent(taskId)}`,
4159
- {
4160
- name: "Task CRUD Beta",
4161
- isCompleted: true,
4162
- },
4163
- );
4164
- expect(update.status).toBe(200);
4165
- expect((update.data.task as Record<string, unknown>).name).toBe(
4166
- "Task CRUD Beta",
4167
- );
4168
- expect((update.data.task as Record<string, unknown>).isCompleted).toBe(
4169
- true,
4170
- );
4171
-
4172
- const del = await req(
4173
- port,
4174
- "DELETE",
4175
- `/api/workbench/tasks/${encodeURIComponent(taskId)}`,
4176
- );
4177
- expect(del.status).toBe(200);
4178
- expect(del.data.ok).toBe(true);
4179
-
4180
- const readAfterDelete = await req(
4181
- port,
4182
- "GET",
4183
- `/api/workbench/tasks/${encodeURIComponent(taskId)}`,
4184
- );
4185
- expect(readAfterDelete.status).toBe(404);
4186
- });
4187
-
4188
- it("supports full CRUD for triggers", async () => {
4189
- const create = await req(port, "POST", "/api/triggers", {
4190
- displayName: "Trigger CRUD Alpha",
4191
- instructions: "Run trigger CRUD test",
4192
- triggerType: "interval",
4193
- intervalMs: 60_000,
4194
- });
4195
- expect(create.status).toBe(201);
4196
- const createdTrigger = create.data.trigger as Record<string, unknown>;
4197
- const triggerId = createdTrigger.id as string;
4198
- expect(typeof triggerId).toBe("string");
4199
-
4200
- const list = await req(port, "GET", "/api/triggers");
4201
- expect(list.status).toBe(200);
4202
- expect(Array.isArray(list.data.triggers)).toBe(true);
4203
- expect(
4204
- (list.data.triggers as Array<Record<string, unknown>>).some(
4205
- (trigger) => trigger.id === triggerId,
4206
- ),
4207
- ).toBe(true);
4208
-
4209
- const read = await req(
4210
- port,
4211
- "GET",
4212
- `/api/triggers/${encodeURIComponent(triggerId)}`,
4213
- );
4214
- expect(read.status).toBe(200);
4215
- expect((read.data.trigger as Record<string, unknown>).displayName).toBe(
4216
- "Trigger CRUD Alpha",
4217
- );
4218
-
4219
- const update = await req(
4220
- port,
4221
- "PUT",
4222
- `/api/triggers/${encodeURIComponent(triggerId)}`,
4223
- {
4224
- displayName: "Trigger CRUD Beta",
4225
- enabled: false,
4226
- },
4227
- );
4228
- expect(update.status).toBe(200);
4229
- expect((update.data.trigger as Record<string, unknown>).displayName).toBe(
4230
- "Trigger CRUD Beta",
4231
- );
4232
- expect((update.data.trigger as Record<string, unknown>).enabled).toBe(
4233
- false,
4234
- );
4235
-
4236
- const del = await req(
4237
- port,
4238
- "DELETE",
4239
- `/api/triggers/${encodeURIComponent(triggerId)}`,
4240
- );
4241
- expect(del.status).toBe(200);
4242
- expect(del.data.ok).toBe(true);
4243
-
4244
- const readAfterDelete = await req(
4245
- port,
4246
- "GET",
4247
- `/api/triggers/${encodeURIComponent(triggerId)}`,
4248
- );
4249
- expect(readAfterDelete.status).toBe(404);
4250
- });
4251
-
4252
- it("supports full CRUD for todos", async () => {
4253
- const create = await req(port, "POST", "/api/workbench/todos", {
4254
- name: "Todo CRUD Alpha",
4255
- description: "Initial todo description",
4256
- priority: 3,
4257
- isUrgent: true,
4258
- type: "task",
4259
- });
4260
- expect(create.status).toBe(201);
4261
- const createdTodo = create.data.todo as Record<string, unknown>;
4262
- const todoId = createdTodo.id as string;
4263
- expect(typeof todoId).toBe("string");
4264
-
4265
- const list = await req(port, "GET", "/api/workbench/todos");
4266
- expect(list.status).toBe(200);
4267
- expect(Array.isArray(list.data.todos)).toBe(true);
4268
- expect(
4269
- (list.data.todos as Array<Record<string, unknown>>).some(
4270
- (todo) => todo.id === todoId,
4271
- ),
4272
- ).toBe(true);
4273
-
4274
- const read = await req(
4275
- port,
4276
- "GET",
4277
- `/api/workbench/todos/${encodeURIComponent(todoId)}`,
4278
- );
4279
- expect(read.status).toBe(200);
4280
- expect((read.data.todo as Record<string, unknown>).name).toBe(
4281
- "Todo CRUD Alpha",
4282
- );
4283
-
4284
- const update = await req(
4285
- port,
4286
- "PUT",
4287
- `/api/workbench/todos/${encodeURIComponent(todoId)}`,
4288
- {
4289
- name: "Todo CRUD Beta",
4290
- priority: 1,
4291
- isUrgent: false,
4292
- },
4293
- );
4294
- expect(update.status).toBe(200);
4295
- expect((update.data.todo as Record<string, unknown>).name).toBe(
4296
- "Todo CRUD Beta",
4297
- );
4298
- expect((update.data.todo as Record<string, unknown>).priority).toBe(1);
4299
- expect((update.data.todo as Record<string, unknown>).isUrgent).toBe(false);
4300
-
4301
- const complete = await req(
4302
- port,
4303
- "POST",
4304
- `/api/workbench/todos/${encodeURIComponent(todoId)}/complete`,
4305
- {
4306
- isCompleted: true,
4307
- },
4308
- );
4309
- expect(complete.status).toBe(200);
4310
- expect(complete.data.ok).toBe(true);
4311
-
4312
- const readCompleted = await req(
4313
- port,
4314
- "GET",
4315
- `/api/workbench/todos/${encodeURIComponent(todoId)}`,
4316
- );
4317
- expect(readCompleted.status).toBe(200);
4318
- expect(
4319
- (readCompleted.data.todo as Record<string, unknown>).isCompleted,
4320
- ).toBe(true);
4321
-
4322
- const del = await req(
4323
- port,
4324
- "DELETE",
4325
- `/api/workbench/todos/${encodeURIComponent(todoId)}`,
4326
- );
4327
- expect(del.status).toBe(200);
4328
- expect(del.data.ok).toBe(true);
4329
-
4330
- const readAfterDelete = await req(
4331
- port,
4332
- "GET",
4333
- `/api/workbench/todos/${encodeURIComponent(todoId)}`,
4334
- );
4335
- expect(readAfterDelete.status).toBe(404);
4336
- });
4337
- });
4338
-
4339
- describe("API Server E2E (compat endpoints)", () => {
4340
- let port: number;
4341
- let close: () => Promise<void>;
4342
-
4343
- beforeAll(async () => {
4344
- const server = await startApiServer({
4345
- port: 0,
4346
- runtime: createRuntimeForCompatEndpointTests(),
4347
- });
4348
- port = server.port;
4349
- close = server.close;
4350
- }, 30_000);
4351
-
4352
- afterAll(async () => {
4353
- await close();
4354
- });
4355
-
4356
- it("GET /v1/models returns OpenAI-compatible model list", async () => {
4357
- const { status, data } = await req(port, "GET", "/v1/models");
4358
- expect(status).toBe(200);
4359
- expect(data.object).toBe("list");
4360
- const models = data.data as Array<Record<string, unknown>>;
4361
- expect(models.length).toBeGreaterThan(0);
4362
- expect(models.some((item) => item.id === "eliza")).toBe(true);
4363
- expect(models.some((item) => item.id === "CompatAgent")).toBe(true);
4364
- });
4365
-
4366
- it("GET /v1/models/:id returns OpenAI-compatible model detail", async () => {
4367
- const { status, data } = await req(
4368
- port,
4369
- "GET",
4370
- "/v1/models/compat-model-id",
4371
- );
4372
- expect(status).toBe(200);
4373
- expect(data.object).toBe("model");
4374
- expect(data.id).toBe("compat-model-id");
4375
- expect(data.owned_by).toBe("eliza");
4376
- });
4377
-
4378
- it("POST /v1/chat/completions returns OpenAI-compatible completion", async () => {
4379
- const { status, data } = await req(port, "POST", "/v1/chat/completions", {
4380
- model: "eliza",
4381
- user: "compat-e2e",
4382
- messages: [
4383
- { role: "system", content: "You are concise." },
4384
- { role: "user", content: "Say hi." },
4385
- ],
4386
- });
4387
- expect(status).toBe(200);
4388
- expect(data.object).toBe("chat.completion");
4389
- expect(typeof data.id).toBe("string");
4390
- const choices = data.choices as Array<Record<string, unknown>>;
4391
- expect(Array.isArray(choices)).toBe(true);
4392
- const firstChoice = choices[0] as Record<string, unknown>;
4393
- const message = firstChoice.message as Record<string, unknown>;
4394
- expect(message.role).toBe("assistant");
4395
- expect(message.content).toBe("Compat reply");
4396
- expect(firstChoice.finish_reason).toBe("stop");
4397
- });
4398
-
4399
- it("POST /v1/chat/completions streams OpenAI-compatible SSE chunks", async () => {
4400
- const { status, headers, events } = await reqSse(
4401
- port,
4402
- "/v1/chat/completions",
4403
- {
4404
- model: "eliza",
4405
- stream: true,
4406
- user: "compat-sse-e2e",
4407
- messages: [{ role: "user", content: "Stream a short answer." }],
4408
- },
4409
- );
4410
-
4411
- expect(status).toBe(200);
4412
- expect(String(headers["content-type"])).toContain("text/event-stream");
4413
-
4414
- const chunks = events.filter(
4415
- (event) =>
4416
- (event as Record<string, unknown>).object === "chat.completion.chunk",
4417
- ) as Array<Record<string, unknown>>;
4418
- expect(chunks.length).toBeGreaterThan(0);
4419
-
4420
- const hasRoleChunk = chunks.some((chunk) => {
4421
- const choices = chunk.choices;
4422
- if (!Array.isArray(choices) || choices.length === 0) return false;
4423
- const firstChoice = choices[0] as Record<string, unknown>;
4424
- const delta = firstChoice.delta as Record<string, unknown> | undefined;
4425
- return delta?.role === "assistant";
4426
- });
4427
- expect(hasRoleChunk).toBe(true);
4428
-
4429
- const content = chunks
4430
- .map((chunk) => {
4431
- const choices = chunk.choices;
4432
- if (!Array.isArray(choices) || choices.length === 0) return "";
4433
- const firstChoice = choices[0] as Record<string, unknown>;
4434
- const delta = firstChoice.delta as Record<string, unknown> | undefined;
4435
- return typeof delta?.content === "string" ? delta.content : "";
4436
- })
4437
- .join("");
4438
- expect(content).toContain("Compat reply");
4439
- });
4440
-
4441
- it("POST /v1/messages returns Anthropic-compatible message", async () => {
4442
- const { status, data } = await req(port, "POST", "/v1/messages", {
4443
- model: "eliza",
4444
- system: "You are concise.",
4445
- metadata: { conversation_id: "compat-room-1" },
4446
- messages: [{ role: "user", content: "Say hi." }],
4447
- });
4448
- expect(status).toBe(200);
4449
- expect(data.type).toBe("message");
4450
- expect(data.role).toBe("assistant");
4451
- const content = data.content as Array<Record<string, unknown>>;
4452
- expect(Array.isArray(content)).toBe(true);
4453
- const first = content[0] as Record<string, unknown>;
4454
- expect(first.type).toBe("text");
4455
- expect(first.text).toBe("Compat reply");
4456
- expect(data.stop_reason).toBe("end_turn");
4457
- });
4458
-
4459
- it("POST /v1/messages streams Anthropic-compatible SSE events", async () => {
4460
- const { status, headers, events } = await reqSse(port, "/v1/messages", {
4461
- model: "eliza",
4462
- stream: true,
4463
- metadata: { conversation_id: "compat-room-2" },
4464
- messages: [{ role: "user", content: "Stream a short answer." }],
4465
- });
4466
-
4467
- expect(status).toBe(200);
4468
- expect(String(headers["content-type"])).toContain("text/event-stream");
4469
-
4470
- const eventTypes = events
4471
- .map((event) => event.type)
4472
- .filter((value): value is string => typeof value === "string");
4473
- expect(eventTypes).toContain("message_start");
4474
- expect(eventTypes).toContain("content_block_start");
4475
- expect(eventTypes).toContain("content_block_delta");
4476
- expect(eventTypes).toContain("content_block_stop");
4477
- expect(eventTypes).toContain("message_delta");
4478
- expect(eventTypes).toContain("message_stop");
4479
-
4480
- const streamedText = events
4481
- .filter((event) => event.type === "content_block_delta")
4482
- .map((event) => {
4483
- const delta = (event as Record<string, unknown>).delta as
4484
- | Record<string, unknown>
4485
- | undefined;
4486
- return typeof delta?.text === "string" ? delta.text : "";
4487
- })
4488
- .join("");
4489
- expect(streamedText).toContain("Compat reply");
4490
- });
4491
- });
4492
-
4493
- describe("API Server E2E (chat SSE)", () => {
4494
- let port: number;
4495
- let close: () => Promise<void>;
4496
-
4497
- beforeAll(async () => {
4498
- const server = await startApiServer({
4499
- port: 0,
4500
- runtime: createRuntimeForChatSseTests(),
4501
- });
4502
- port = server.port;
4503
- close = server.close;
4504
- }, 30_000);
4505
-
4506
- afterAll(async () => {
4507
- await close();
4508
- });
4509
-
4510
- it("POST /api/chat/stream emits token and done events", async () => {
4511
- const { status, headers, events } = await reqSse(port, "/api/chat/stream", {
4512
- text: "hello",
4513
- mode: "simple",
4514
- });
4515
-
4516
- expect(status).toBe(200);
4517
- expect(String(headers["content-type"])).toContain("text/event-stream");
4518
- expect(events).toContainEqual(
4519
- expect.objectContaining({
4520
- type: "token",
4521
- text: "Hello ",
4522
- fullText: "Hello ",
4523
- }),
4524
- );
4525
- expect(events).toContainEqual(
4526
- expect.objectContaining({
4527
- type: "token",
4528
- text: "world",
4529
- fullText: "Hello world",
4530
- }),
4531
- );
4532
- expect(events).toContainEqual(
4533
- expect.objectContaining({
4534
- type: "done",
4535
- fullText: "Hello world",
4536
- agentName: "ChatStreamAgent",
4537
- }),
4538
- );
4539
- });
4540
-
4541
- it("POST /api/conversations/:id/messages/stream emits token and done events", async () => {
4542
- const create = await req(port, "POST", "/api/conversations", {
4543
- title: "SSE Conversation",
4544
- });
4545
- expect(create.status).toBe(200);
4546
- const createdConversation = create.data.conversation as { id?: string };
4547
- const conversationId = createdConversation.id ?? "";
4548
- expect(conversationId.length).toBeGreaterThan(0);
4549
-
4550
- const { status, events } = await reqSse(
4551
- port,
4552
- `/api/conversations/${conversationId}/messages/stream`,
4553
- {
4554
- text: "hello",
4555
- mode: "power",
4556
- },
4557
- );
4558
-
4559
- expect(status).toBe(200);
4560
- expect(events).toContainEqual(
4561
- expect.objectContaining({
4562
- type: "token",
4563
- text: "Hello ",
4564
- fullText: "Hello ",
4565
- }),
4566
- );
4567
- expect(events).toContainEqual(
4568
- expect.objectContaining({
4569
- type: "token",
4570
- text: "world",
4571
- fullText: "Hello world",
4572
- }),
4573
- );
4574
- expect(events).toContainEqual(
4575
- expect.objectContaining({
4576
- type: "done",
4577
- fullText: "Hello world",
4578
- agentName: "ChatStreamAgent",
4579
- }),
4580
- );
4581
- });
4582
- });