@elizaos/agent 0.25.9 → 2.0.0-alpha.84

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 (607) hide show
  1. package/package.json +994 -34
  2. package/packages/agent/src/actions/emote.d.ts +14 -0
  3. package/packages/agent/src/actions/emote.d.ts.map +1 -0
  4. package/packages/agent/src/actions/emote.js +91 -0
  5. package/packages/agent/src/actions/restart.d.ts +19 -0
  6. package/packages/agent/src/actions/restart.d.ts.map +1 -0
  7. package/packages/agent/src/actions/restart.js +86 -0
  8. package/packages/agent/src/actions/send-message.d.ts +3 -0
  9. package/packages/agent/src/actions/send-message.d.ts.map +1 -0
  10. package/packages/agent/src/actions/send-message.js +144 -0
  11. package/packages/agent/src/actions/stream-control.d.ts +15 -0
  12. package/packages/agent/src/actions/stream-control.d.ts.map +1 -0
  13. package/packages/agent/src/actions/stream-control.js +357 -0
  14. package/packages/agent/src/actions/switch-stream-source.d.ts +16 -0
  15. package/packages/agent/src/actions/switch-stream-source.d.ts.map +1 -0
  16. package/packages/agent/src/actions/switch-stream-source.js +94 -0
  17. package/packages/agent/src/actions/terminal.d.ts +14 -0
  18. package/packages/agent/src/actions/terminal.d.ts.map +1 -0
  19. package/packages/agent/src/actions/terminal.js +154 -0
  20. package/packages/agent/src/api/agent-admin-routes.d.ts +38 -0
  21. package/packages/agent/src/api/agent-admin-routes.d.ts.map +1 -0
  22. package/packages/agent/src/api/agent-admin-routes.js +93 -0
  23. package/packages/agent/src/api/agent-lifecycle-routes.d.ts +16 -0
  24. package/packages/agent/src/api/agent-lifecycle-routes.d.ts.map +1 -0
  25. package/packages/agent/src/api/agent-lifecycle-routes.js +80 -0
  26. package/packages/agent/src/api/agent-model.d.ts +12 -0
  27. package/packages/agent/src/api/agent-model.d.ts.map +1 -0
  28. package/packages/agent/src/api/agent-model.js +123 -0
  29. package/packages/agent/src/api/agent-transfer-routes.d.ts +16 -0
  30. package/packages/agent/src/api/agent-transfer-routes.d.ts.map +1 -0
  31. package/packages/agent/src/api/agent-transfer-routes.js +124 -0
  32. package/packages/agent/src/api/apps-routes.d.ts +19 -0
  33. package/packages/agent/src/api/apps-routes.d.ts.map +1 -0
  34. package/packages/agent/src/api/apps-routes.js +128 -0
  35. package/packages/agent/src/api/auth-routes.d.ts +11 -0
  36. package/packages/agent/src/api/auth-routes.d.ts.map +1 -0
  37. package/packages/agent/src/api/auth-routes.js +54 -0
  38. package/packages/agent/src/api/bsc-trade.d.ts +34 -0
  39. package/packages/agent/src/api/bsc-trade.d.ts.map +1 -0
  40. package/packages/agent/src/api/bsc-trade.js +567 -0
  41. package/packages/agent/src/api/bug-report-routes.d.ts +7 -0
  42. package/packages/agent/src/api/bug-report-routes.d.ts.map +1 -0
  43. package/packages/agent/src/api/bug-report-routes.js +124 -0
  44. package/packages/agent/src/api/character-routes.d.ts +50 -0
  45. package/packages/agent/src/api/character-routes.d.ts.map +1 -0
  46. package/packages/agent/src/api/character-routes.js +302 -0
  47. package/packages/agent/src/api/cloud-billing-routes.d.ts +14 -0
  48. package/packages/agent/src/api/cloud-billing-routes.d.ts.map +1 -0
  49. package/packages/agent/src/api/cloud-billing-routes.js +400 -0
  50. package/packages/agent/src/api/cloud-compat-routes.d.ts +15 -0
  51. package/packages/agent/src/api/cloud-compat-routes.d.ts.map +1 -0
  52. package/packages/agent/src/api/cloud-compat-routes.js +131 -0
  53. package/packages/agent/src/api/cloud-routes.d.ts +62 -0
  54. package/packages/agent/src/api/cloud-routes.d.ts.map +1 -0
  55. package/packages/agent/src/api/cloud-routes.js +339 -0
  56. package/packages/agent/src/api/cloud-status-routes.d.ts +15 -0
  57. package/packages/agent/src/api/cloud-status-routes.d.ts.map +1 -0
  58. package/packages/agent/src/api/cloud-status-routes.js +165 -0
  59. package/packages/agent/src/api/compat-utils.d.ts +49 -0
  60. package/packages/agent/src/api/compat-utils.d.ts.map +1 -0
  61. package/packages/agent/src/api/compat-utils.js +126 -0
  62. package/packages/agent/src/api/connector-health.d.ts +34 -0
  63. package/packages/agent/src/api/connector-health.d.ts.map +1 -0
  64. package/packages/agent/src/api/connector-health.js +109 -0
  65. package/packages/agent/src/api/coordinator-wiring.d.ts +46 -0
  66. package/packages/agent/src/api/coordinator-wiring.d.ts.map +1 -0
  67. package/packages/agent/src/api/coordinator-wiring.js +101 -0
  68. package/packages/agent/src/api/credit-detection.d.ts +9 -0
  69. package/packages/agent/src/api/credit-detection.d.ts.map +1 -0
  70. package/packages/agent/src/api/credit-detection.js +41 -0
  71. package/packages/agent/src/api/database.d.ts +33 -0
  72. package/packages/agent/src/api/database.d.ts.map +1 -0
  73. package/packages/agent/src/api/database.js +1019 -0
  74. package/packages/agent/src/api/diagnostics-routes.d.ts +46 -0
  75. package/packages/agent/src/api/diagnostics-routes.d.ts.map +1 -0
  76. package/packages/agent/src/api/diagnostics-routes.js +241 -0
  77. package/packages/agent/src/api/drop-service.d.ts +26 -0
  78. package/packages/agent/src/api/drop-service.d.ts.map +1 -0
  79. package/packages/agent/src/api/drop-service.js +134 -0
  80. package/packages/agent/src/api/early-logs.d.ts +29 -0
  81. package/packages/agent/src/api/early-logs.d.ts.map +1 -0
  82. package/packages/agent/src/api/early-logs.js +96 -0
  83. package/packages/agent/src/api/http-helpers.d.ts +50 -0
  84. package/packages/agent/src/api/http-helpers.d.ts.map +1 -0
  85. package/packages/agent/src/api/http-helpers.js +145 -0
  86. package/packages/agent/src/api/index.d.ts +61 -0
  87. package/packages/agent/src/api/index.d.ts.map +1 -0
  88. package/packages/agent/src/api/index.js +59 -0
  89. package/packages/agent/src/api/knowledge-routes.d.ts +23 -0
  90. package/packages/agent/src/api/knowledge-routes.d.ts.map +1 -0
  91. package/packages/agent/src/api/knowledge-routes.js +931 -0
  92. package/packages/agent/src/api/knowledge-service-loader.d.ts +51 -0
  93. package/packages/agent/src/api/knowledge-service-loader.d.ts.map +1 -0
  94. package/packages/agent/src/api/knowledge-service-loader.js +34 -0
  95. package/packages/agent/src/api/memory-bounds.d.ts +51 -0
  96. package/packages/agent/src/api/memory-bounds.d.ts.map +1 -0
  97. package/packages/agent/src/api/memory-bounds.js +81 -0
  98. package/packages/agent/src/api/memory-routes.d.ts +9 -0
  99. package/packages/agent/src/api/memory-routes.d.ts.map +1 -0
  100. package/packages/agent/src/api/memory-routes.js +241 -0
  101. package/packages/agent/src/api/merkle-tree.d.ts +90 -0
  102. package/packages/agent/src/api/merkle-tree.d.ts.map +1 -0
  103. package/packages/agent/src/api/merkle-tree.js +174 -0
  104. package/packages/agent/src/api/models-routes.d.ts +14 -0
  105. package/packages/agent/src/api/models-routes.d.ts.map +1 -0
  106. package/packages/agent/src/api/models-routes.js +37 -0
  107. package/packages/agent/src/api/nfa-routes.d.ts +5 -0
  108. package/packages/agent/src/api/nfa-routes.d.ts.map +1 -0
  109. package/packages/agent/src/api/nfa-routes.js +125 -0
  110. package/packages/agent/src/api/og-tracker.d.ts +28 -0
  111. package/packages/agent/src/api/og-tracker.d.ts.map +1 -0
  112. package/packages/agent/src/api/og-tracker.js +60 -0
  113. package/packages/agent/src/api/parse-action-block.d.ts +36 -0
  114. package/packages/agent/src/api/parse-action-block.d.ts.map +1 -0
  115. package/packages/agent/src/api/parse-action-block.js +110 -0
  116. package/packages/agent/src/api/permissions-routes.d.ts +32 -0
  117. package/packages/agent/src/api/permissions-routes.d.ts.map +1 -0
  118. package/packages/agent/src/api/permissions-routes.js +149 -0
  119. package/packages/agent/src/api/plugin-validation.d.ts +86 -0
  120. package/packages/agent/src/api/plugin-validation.d.ts.map +1 -0
  121. package/packages/agent/src/api/plugin-validation.js +259 -0
  122. package/packages/agent/src/api/provider-switch-config.d.ts +37 -0
  123. package/packages/agent/src/api/provider-switch-config.d.ts.map +1 -0
  124. package/packages/agent/src/api/provider-switch-config.js +317 -0
  125. package/packages/agent/src/api/registry-routes.d.ts +26 -0
  126. package/packages/agent/src/api/registry-routes.d.ts.map +1 -0
  127. package/packages/agent/src/api/registry-routes.js +90 -0
  128. package/packages/agent/src/api/registry-service.d.ts +77 -0
  129. package/packages/agent/src/api/registry-service.d.ts.map +1 -0
  130. package/packages/agent/src/api/registry-service.js +190 -0
  131. package/packages/agent/src/api/route-helpers.d.ts +16 -0
  132. package/packages/agent/src/api/route-helpers.d.ts.map +1 -0
  133. package/packages/agent/src/api/route-helpers.js +1 -0
  134. package/packages/agent/src/api/sandbox-routes.d.ts +12 -0
  135. package/packages/agent/src/api/sandbox-routes.d.ts.map +1 -0
  136. package/packages/agent/src/api/sandbox-routes.js +1334 -0
  137. package/packages/agent/src/api/server.d.ts +418 -0
  138. package/packages/agent/src/api/server.d.ts.map +1 -0
  139. package/packages/agent/src/api/server.js +13614 -0
  140. package/packages/agent/src/api/signal-routes.d.ts +39 -0
  141. package/packages/agent/src/api/signal-routes.d.ts.map +1 -0
  142. package/packages/agent/src/api/signal-routes.js +168 -0
  143. package/packages/agent/src/api/stream-persistence.d.ts +64 -0
  144. package/packages/agent/src/api/stream-persistence.d.ts.map +1 -0
  145. package/packages/agent/src/api/stream-persistence.js +231 -0
  146. package/packages/agent/src/api/stream-route-state.d.ts +50 -0
  147. package/packages/agent/src/api/stream-route-state.d.ts.map +1 -0
  148. package/packages/agent/src/api/stream-route-state.js +1 -0
  149. package/packages/agent/src/api/stream-routes.d.ts +45 -0
  150. package/packages/agent/src/api/stream-routes.d.ts.map +1 -0
  151. package/packages/agent/src/api/stream-routes.js +809 -0
  152. package/packages/agent/src/api/stream-voice-routes.d.ts +36 -0
  153. package/packages/agent/src/api/stream-voice-routes.d.ts.map +1 -0
  154. package/packages/agent/src/api/stream-voice-routes.js +133 -0
  155. package/packages/agent/src/api/streaming-text.d.ts +9 -0
  156. package/packages/agent/src/api/streaming-text.d.ts.map +1 -0
  157. package/packages/agent/src/api/streaming-text.js +85 -0
  158. package/packages/agent/src/api/streaming-types.d.ts +30 -0
  159. package/packages/agent/src/api/streaming-types.d.ts.map +1 -0
  160. package/packages/agent/src/api/streaming-types.js +1 -0
  161. package/packages/agent/src/api/subscription-routes.d.ts +20 -0
  162. package/packages/agent/src/api/subscription-routes.d.ts.map +1 -0
  163. package/packages/agent/src/api/subscription-routes.js +191 -0
  164. package/packages/agent/src/api/terminal-run-limits.d.ts +5 -0
  165. package/packages/agent/src/api/terminal-run-limits.d.ts.map +1 -0
  166. package/packages/agent/src/api/terminal-run-limits.js +22 -0
  167. package/packages/agent/src/api/training-backend-check.d.ts +8 -0
  168. package/packages/agent/src/api/training-backend-check.d.ts.map +1 -0
  169. package/packages/agent/src/api/training-backend-check.js +28 -0
  170. package/packages/agent/src/api/training-routes.d.ts +44 -0
  171. package/packages/agent/src/api/training-routes.d.ts.map +1 -0
  172. package/packages/agent/src/api/training-routes.js +195 -0
  173. package/packages/agent/src/api/training-service-like.d.ts +38 -0
  174. package/packages/agent/src/api/training-service-like.d.ts.map +1 -0
  175. package/packages/agent/src/api/training-service-like.js +1 -0
  176. package/packages/agent/src/api/trajectory-routes.d.ts +17 -0
  177. package/packages/agent/src/api/trajectory-routes.d.ts.map +1 -0
  178. package/packages/agent/src/api/trajectory-routes.js +405 -0
  179. package/packages/agent/src/api/trigger-routes.d.ts +72 -0
  180. package/packages/agent/src/api/trigger-routes.d.ts.map +1 -0
  181. package/packages/agent/src/api/trigger-routes.js +268 -0
  182. package/packages/agent/src/api/twitter-verify.d.ts +25 -0
  183. package/packages/agent/src/api/twitter-verify.d.ts.map +1 -0
  184. package/packages/agent/src/api/twitter-verify.js +168 -0
  185. package/packages/agent/src/api/tx-service.d.ts +47 -0
  186. package/packages/agent/src/api/tx-service.d.ts.map +1 -0
  187. package/packages/agent/src/api/tx-service.js +156 -0
  188. package/packages/agent/src/api/wallet-dex-prices.d.ts +43 -0
  189. package/packages/agent/src/api/wallet-dex-prices.d.ts.map +1 -0
  190. package/packages/agent/src/api/wallet-dex-prices.js +149 -0
  191. package/packages/agent/src/api/wallet-evm-balance.d.ts +65 -0
  192. package/packages/agent/src/api/wallet-evm-balance.d.ts.map +1 -0
  193. package/packages/agent/src/api/wallet-evm-balance.js +663 -0
  194. package/packages/agent/src/api/wallet-routes.d.ts +33 -0
  195. package/packages/agent/src/api/wallet-routes.d.ts.map +1 -0
  196. package/packages/agent/src/api/wallet-routes.js +292 -0
  197. package/packages/agent/src/api/wallet-rpc.d.ts +61 -0
  198. package/packages/agent/src/api/wallet-rpc.d.ts.map +1 -0
  199. package/packages/agent/src/api/wallet-rpc.js +367 -0
  200. package/packages/agent/src/api/wallet-trading-profile.d.ts +51 -0
  201. package/packages/agent/src/api/wallet-trading-profile.d.ts.map +1 -0
  202. package/packages/agent/src/api/wallet-trading-profile.js +547 -0
  203. package/packages/agent/src/api/wallet.d.ts +31 -0
  204. package/packages/agent/src/api/wallet.d.ts.map +1 -0
  205. package/packages/agent/src/api/wallet.js +513 -0
  206. package/packages/agent/src/api/whatsapp-routes.d.ts +39 -0
  207. package/packages/agent/src/api/whatsapp-routes.d.ts.map +1 -0
  208. package/packages/agent/src/api/whatsapp-routes.js +182 -0
  209. package/packages/agent/src/api/zip-utils.d.ts +8 -0
  210. package/packages/agent/src/api/zip-utils.d.ts.map +1 -0
  211. package/packages/agent/src/api/zip-utils.js +115 -0
  212. package/packages/agent/src/auth/anthropic.d.ts +25 -0
  213. package/packages/agent/src/auth/anthropic.d.ts.map +1 -0
  214. package/packages/agent/src/auth/anthropic.js +40 -0
  215. package/packages/agent/src/auth/apply-stealth.d.ts +8 -0
  216. package/packages/agent/src/auth/apply-stealth.d.ts.map +1 -0
  217. package/packages/agent/src/auth/apply-stealth.js +35 -0
  218. package/packages/agent/src/auth/claude-code-stealth.d.ts +2 -0
  219. package/packages/agent/src/auth/claude-code-stealth.d.ts.map +1 -0
  220. package/packages/agent/src/auth/claude-code-stealth.js +104 -0
  221. package/packages/agent/src/auth/credentials.d.ts +55 -0
  222. package/packages/agent/src/auth/credentials.d.ts.map +1 -0
  223. package/packages/agent/src/auth/credentials.js +182 -0
  224. package/packages/agent/src/auth/index.d.ts +7 -0
  225. package/packages/agent/src/auth/index.d.ts.map +1 -0
  226. package/packages/agent/src/auth/index.js +3 -0
  227. package/packages/agent/src/auth/openai-codex.d.ts +27 -0
  228. package/packages/agent/src/auth/openai-codex.d.ts.map +1 -0
  229. package/packages/agent/src/auth/openai-codex.js +72 -0
  230. package/packages/agent/src/auth/types.d.ts +18 -0
  231. package/packages/agent/src/auth/types.d.ts.map +1 -0
  232. package/packages/agent/src/auth/types.js +8 -0
  233. package/packages/agent/src/awareness/registry.d.ts +27 -0
  234. package/packages/agent/src/awareness/registry.d.ts.map +1 -0
  235. package/packages/agent/src/awareness/registry.js +161 -0
  236. package/packages/agent/src/benchmark-server.d.ts +2 -0
  237. package/packages/agent/src/benchmark-server.d.ts.map +1 -0
  238. package/packages/agent/src/benchmark-server.js +773 -0
  239. package/packages/agent/src/bin.d.ts +3 -0
  240. package/packages/agent/src/bin.d.ts.map +1 -0
  241. package/packages/agent/src/bin.js +6 -0
  242. package/packages/agent/src/cli/index.d.ts +2 -0
  243. package/packages/agent/src/cli/index.d.ts.map +1 -0
  244. package/packages/agent/src/cli/index.js +40 -0
  245. package/packages/agent/src/cli/parse-duration.d.ts +5 -0
  246. package/packages/agent/src/cli/parse-duration.d.ts.map +1 -0
  247. package/packages/agent/src/cli/parse-duration.js +27 -0
  248. package/packages/agent/src/cloud/auth.d.ts +19 -0
  249. package/packages/agent/src/cloud/auth.d.ts.map +1 -0
  250. package/packages/agent/src/cloud/auth.js +107 -0
  251. package/packages/agent/src/cloud/backup.d.ts +18 -0
  252. package/packages/agent/src/cloud/backup.d.ts.map +1 -0
  253. package/packages/agent/src/cloud/backup.js +42 -0
  254. package/packages/agent/src/cloud/base-url.d.ts +3 -0
  255. package/packages/agent/src/cloud/base-url.d.ts.map +1 -0
  256. package/packages/agent/src/cloud/base-url.js +40 -0
  257. package/packages/agent/src/cloud/bridge-client.d.ts +56 -0
  258. package/packages/agent/src/cloud/bridge-client.d.ts.map +1 -0
  259. package/packages/agent/src/cloud/bridge-client.js +190 -0
  260. package/packages/agent/src/cloud/cloud-manager.d.ts +32 -0
  261. package/packages/agent/src/cloud/cloud-manager.d.ts.map +1 -0
  262. package/packages/agent/src/cloud/cloud-manager.js +119 -0
  263. package/packages/agent/src/cloud/cloud-proxy.d.ts +20 -0
  264. package/packages/agent/src/cloud/cloud-proxy.d.ts.map +1 -0
  265. package/packages/agent/src/cloud/cloud-proxy.js +34 -0
  266. package/packages/agent/src/cloud/index.d.ts +7 -0
  267. package/packages/agent/src/cloud/index.d.ts.map +1 -0
  268. package/packages/agent/src/cloud/index.js +6 -0
  269. package/packages/agent/src/cloud/reconnect.d.ts +26 -0
  270. package/packages/agent/src/cloud/reconnect.d.ts.map +1 -0
  271. package/packages/agent/src/cloud/reconnect.js +86 -0
  272. package/packages/agent/src/cloud/validate-url.d.ts +2 -0
  273. package/packages/agent/src/cloud/validate-url.d.ts.map +1 -0
  274. package/packages/agent/src/cloud/validate-url.js +162 -0
  275. package/packages/agent/src/config/character-schema.d.ts +25 -0
  276. package/packages/agent/src/config/character-schema.d.ts.map +1 -0
  277. package/packages/agent/src/config/character-schema.js +39 -0
  278. package/packages/agent/src/config/config.d.ts +6 -0
  279. package/packages/agent/src/config/config.d.ts.map +1 -0
  280. package/packages/agent/src/config/config.js +118 -0
  281. package/packages/agent/src/config/env-vars.d.ts +3 -0
  282. package/packages/agent/src/config/env-vars.d.ts.map +1 -0
  283. package/packages/agent/src/config/env-vars.js +76 -0
  284. package/packages/agent/src/config/includes.d.ts +26 -0
  285. package/packages/agent/src/config/includes.d.ts.map +1 -0
  286. package/packages/agent/src/config/includes.js +148 -0
  287. package/packages/agent/src/config/index.d.ts +16 -0
  288. package/packages/agent/src/config/index.d.ts.map +1 -0
  289. package/packages/agent/src/config/index.js +15 -0
  290. package/packages/agent/src/config/object-utils.d.ts +2 -0
  291. package/packages/agent/src/config/object-utils.d.ts.map +1 -0
  292. package/packages/agent/src/config/object-utils.js +6 -0
  293. package/packages/agent/src/config/paths.d.ts +13 -0
  294. package/packages/agent/src/config/paths.d.ts.map +1 -0
  295. package/packages/agent/src/config/paths.js +67 -0
  296. package/packages/agent/src/config/plugin-auto-enable.d.ts +16 -0
  297. package/packages/agent/src/config/plugin-auto-enable.d.ts.map +1 -0
  298. package/packages/agent/src/config/plugin-auto-enable.js +384 -0
  299. package/packages/agent/src/config/schema.d.ts +87 -0
  300. package/packages/agent/src/config/schema.d.ts.map +1 -0
  301. package/packages/agent/src/config/schema.js +928 -0
  302. package/packages/agent/src/config/telegram-custom-commands.d.ts +25 -0
  303. package/packages/agent/src/config/telegram-custom-commands.d.ts.map +1 -0
  304. package/packages/agent/src/config/telegram-custom-commands.js +71 -0
  305. package/packages/agent/src/config/types.agent-defaults.d.ts +331 -0
  306. package/packages/agent/src/config/types.agent-defaults.d.ts.map +1 -0
  307. package/packages/agent/src/config/types.agent-defaults.js +1 -0
  308. package/packages/agent/src/config/types.agents.d.ts +110 -0
  309. package/packages/agent/src/config/types.agents.d.ts.map +1 -0
  310. package/packages/agent/src/config/types.agents.js +1 -0
  311. package/packages/agent/src/config/types.d.ts +8 -0
  312. package/packages/agent/src/config/types.d.ts.map +1 -0
  313. package/packages/agent/src/config/types.eliza.d.ts +636 -0
  314. package/packages/agent/src/config/types.eliza.d.ts.map +1 -0
  315. package/packages/agent/src/config/types.eliza.js +1 -0
  316. package/packages/agent/src/config/types.gateway.d.ts +216 -0
  317. package/packages/agent/src/config/types.gateway.d.ts.map +1 -0
  318. package/packages/agent/src/config/types.gateway.js +1 -0
  319. package/packages/agent/src/config/types.hooks.d.ts +107 -0
  320. package/packages/agent/src/config/types.hooks.d.ts.map +1 -0
  321. package/packages/agent/src/config/types.hooks.js +1 -0
  322. package/packages/agent/src/config/types.js +7 -0
  323. package/packages/agent/src/config/types.messages.d.ts +176 -0
  324. package/packages/agent/src/config/types.messages.d.ts.map +1 -0
  325. package/packages/agent/src/config/types.messages.js +1 -0
  326. package/packages/agent/src/config/types.tools.d.ts +400 -0
  327. package/packages/agent/src/config/types.tools.d.ts.map +1 -0
  328. package/packages/agent/src/config/types.tools.js +1 -0
  329. package/packages/agent/src/config/zod-schema.agent-runtime.d.ts +1062 -0
  330. package/packages/agent/src/config/zod-schema.agent-runtime.d.ts.map +1 -0
  331. package/packages/agent/src/config/zod-schema.agent-runtime.js +721 -0
  332. package/packages/agent/src/config/zod-schema.core.d.ts +1021 -0
  333. package/packages/agent/src/config/zod-schema.core.d.ts.map +1 -0
  334. package/packages/agent/src/config/zod-schema.core.js +694 -0
  335. package/packages/agent/src/config/zod-schema.d.ts +4817 -0
  336. package/packages/agent/src/config/zod-schema.d.ts.map +1 -0
  337. package/packages/agent/src/config/zod-schema.hooks.d.ts +88 -0
  338. package/packages/agent/src/config/zod-schema.hooks.d.ts.map +1 -0
  339. package/packages/agent/src/config/zod-schema.hooks.js +133 -0
  340. package/packages/agent/src/config/zod-schema.js +778 -0
  341. package/packages/agent/src/config/zod-schema.providers-core.d.ts +2976 -0
  342. package/packages/agent/src/config/zod-schema.providers-core.d.ts.map +1 -0
  343. package/packages/agent/src/config/zod-schema.providers-core.js +1006 -0
  344. package/packages/agent/src/config/zod-schema.session.d.ts +183 -0
  345. package/packages/agent/src/config/zod-schema.session.d.ts.map +1 -0
  346. package/packages/agent/src/config/zod-schema.session.js +86 -0
  347. package/packages/agent/src/contracts/apps.d.ts +42 -0
  348. package/packages/agent/src/contracts/apps.d.ts.map +1 -0
  349. package/packages/agent/src/contracts/apps.js +4 -0
  350. package/packages/agent/src/contracts/awareness.d.ts +38 -0
  351. package/packages/agent/src/contracts/awareness.d.ts.map +1 -0
  352. package/packages/agent/src/contracts/awareness.js +7 -0
  353. package/packages/agent/src/contracts/config.d.ts +146 -0
  354. package/packages/agent/src/contracts/config.d.ts.map +1 -0
  355. package/packages/agent/src/contracts/config.js +4 -0
  356. package/packages/agent/src/contracts/drop.d.ts +20 -0
  357. package/packages/agent/src/contracts/drop.d.ts.map +1 -0
  358. package/packages/agent/src/contracts/drop.js +4 -0
  359. package/packages/agent/src/contracts/index.d.ts +9 -0
  360. package/packages/agent/src/contracts/index.d.ts.map +1 -0
  361. package/packages/agent/src/contracts/index.js +8 -0
  362. package/packages/agent/src/contracts/onboarding.d.ts +379 -0
  363. package/packages/agent/src/contracts/onboarding.d.ts.map +1 -0
  364. package/packages/agent/src/contracts/onboarding.js +290 -0
  365. package/packages/agent/src/contracts/permissions.d.ts +35 -0
  366. package/packages/agent/src/contracts/permissions.d.ts.map +1 -0
  367. package/packages/agent/src/contracts/permissions.js +4 -0
  368. package/packages/agent/src/contracts/verification.d.ts +9 -0
  369. package/packages/agent/src/contracts/verification.d.ts.map +1 -0
  370. package/packages/agent/src/contracts/verification.js +4 -0
  371. package/packages/agent/src/contracts/wallet.d.ts +409 -0
  372. package/packages/agent/src/contracts/wallet.d.ts.map +1 -0
  373. package/packages/agent/src/contracts/wallet.js +60 -0
  374. package/packages/agent/src/diagnostics/integration-observability.d.ts +40 -0
  375. package/packages/agent/src/diagnostics/integration-observability.d.ts.map +1 -0
  376. package/packages/agent/src/diagnostics/integration-observability.js +68 -0
  377. package/packages/agent/src/emotes/catalog.d.ts +31 -0
  378. package/packages/agent/src/emotes/catalog.d.ts.map +1 -0
  379. package/packages/agent/src/emotes/catalog.js +618 -0
  380. package/packages/agent/src/hooks/discovery.d.ts +13 -0
  381. package/packages/agent/src/hooks/discovery.d.ts.map +1 -0
  382. package/packages/agent/src/hooks/discovery.js +184 -0
  383. package/packages/agent/src/hooks/eligibility.d.ts +12 -0
  384. package/packages/agent/src/hooks/eligibility.d.ts.map +1 -0
  385. package/packages/agent/src/hooks/eligibility.js +100 -0
  386. package/packages/agent/src/hooks/index.d.ts +3 -0
  387. package/packages/agent/src/hooks/index.d.ts.map +1 -0
  388. package/packages/agent/src/hooks/index.js +2 -0
  389. package/packages/agent/src/hooks/loader.d.ts +34 -0
  390. package/packages/agent/src/hooks/loader.d.ts.map +1 -0
  391. package/packages/agent/src/hooks/loader.js +176 -0
  392. package/packages/agent/src/hooks/registry.d.ts +11 -0
  393. package/packages/agent/src/hooks/registry.d.ts.map +1 -0
  394. package/packages/agent/src/hooks/registry.js +58 -0
  395. package/packages/agent/src/hooks/types.d.ts +104 -0
  396. package/packages/agent/src/hooks/types.d.ts.map +1 -0
  397. package/packages/agent/src/hooks/types.js +8 -0
  398. package/packages/agent/src/index.d.ts +20 -0
  399. package/packages/agent/src/index.d.ts.map +1 -0
  400. package/packages/agent/src/index.js +19 -0
  401. package/packages/agent/src/onboarding-presets.d.ts +78 -0
  402. package/packages/agent/src/onboarding-presets.d.ts.map +1 -0
  403. package/packages/agent/src/onboarding-presets.js +1352 -0
  404. package/packages/agent/src/plugins/custom-rtmp/index.d.ts +12 -0
  405. package/packages/agent/src/plugins/custom-rtmp/index.d.ts.map +1 -0
  406. package/packages/agent/src/plugins/custom-rtmp/index.js +26 -0
  407. package/packages/agent/src/providers/admin-trust.d.ts +4 -0
  408. package/packages/agent/src/providers/admin-trust.d.ts.map +1 -0
  409. package/packages/agent/src/providers/admin-trust.js +53 -0
  410. package/packages/agent/src/providers/session-bridge.d.ts +24 -0
  411. package/packages/agent/src/providers/session-bridge.d.ts.map +1 -0
  412. package/packages/agent/src/providers/session-bridge.js +85 -0
  413. package/packages/agent/src/providers/session-utils.d.ts +20 -0
  414. package/packages/agent/src/providers/session-utils.d.ts.map +1 -0
  415. package/packages/agent/src/providers/session-utils.js +33 -0
  416. package/packages/agent/src/providers/simple-mode.d.ts +4 -0
  417. package/packages/agent/src/providers/simple-mode.d.ts.map +1 -0
  418. package/packages/agent/src/providers/simple-mode.js +85 -0
  419. package/packages/agent/src/providers/ui-catalog.d.ts +3 -0
  420. package/packages/agent/src/providers/ui-catalog.d.ts.map +1 -0
  421. package/packages/agent/src/providers/ui-catalog.js +123 -0
  422. package/packages/agent/src/providers/workspace-provider.d.ts +22 -0
  423. package/packages/agent/src/providers/workspace-provider.d.ts.map +1 -0
  424. package/packages/agent/src/providers/workspace-provider.js +167 -0
  425. package/packages/agent/src/providers/workspace.d.ts +54 -0
  426. package/packages/agent/src/providers/workspace.d.ts.map +1 -0
  427. package/packages/agent/src/providers/workspace.js +405 -0
  428. package/packages/agent/src/runtime/agent-event-service.d.ts +35 -0
  429. package/packages/agent/src/runtime/agent-event-service.d.ts.map +1 -0
  430. package/packages/agent/src/runtime/agent-event-service.js +16 -0
  431. package/packages/agent/src/runtime/cloud-onboarding.d.ts +55 -0
  432. package/packages/agent/src/runtime/cloud-onboarding.d.ts.map +1 -0
  433. package/packages/agent/src/runtime/cloud-onboarding.js +279 -0
  434. package/packages/agent/src/runtime/core-plugins.d.ts +14 -0
  435. package/packages/agent/src/runtime/core-plugins.d.ts.map +1 -0
  436. package/packages/agent/src/runtime/core-plugins.js +51 -0
  437. package/packages/agent/src/runtime/custom-actions.d.ts +40 -0
  438. package/packages/agent/src/runtime/custom-actions.d.ts.map +1 -0
  439. package/packages/agent/src/runtime/custom-actions.js +454 -0
  440. package/packages/agent/src/runtime/eliza-plugin.d.ts +16 -0
  441. package/packages/agent/src/runtime/eliza-plugin.d.ts.map +1 -0
  442. package/packages/agent/src/runtime/eliza-plugin.js +108 -0
  443. package/packages/agent/src/runtime/eliza.d.ts +205 -0
  444. package/packages/agent/src/runtime/eliza.d.ts.map +1 -0
  445. package/packages/agent/src/runtime/eliza.js +3935 -0
  446. package/packages/agent/src/runtime/embedding-presets.d.ts +19 -0
  447. package/packages/agent/src/runtime/embedding-presets.d.ts.map +1 -0
  448. package/packages/agent/src/runtime/embedding-presets.js +53 -0
  449. package/packages/agent/src/runtime/index.d.ts +9 -0
  450. package/packages/agent/src/runtime/index.d.ts.map +1 -0
  451. package/packages/agent/src/runtime/index.js +8 -0
  452. package/packages/agent/src/runtime/onboarding-names.d.ts +11 -0
  453. package/packages/agent/src/runtime/onboarding-names.d.ts.map +1 -0
  454. package/packages/agent/src/runtime/onboarding-names.js +74 -0
  455. package/packages/agent/src/runtime/release-plugin-policy.d.ts +20 -0
  456. package/packages/agent/src/runtime/release-plugin-policy.d.ts.map +1 -0
  457. package/packages/agent/src/runtime/release-plugin-policy.js +87 -0
  458. package/packages/agent/src/runtime/restart.d.ts +45 -0
  459. package/packages/agent/src/runtime/restart.d.ts.map +1 -0
  460. package/packages/agent/src/runtime/restart.js +45 -0
  461. package/packages/agent/src/runtime/trajectory-persistence.d.ts +214 -0
  462. package/packages/agent/src/runtime/trajectory-persistence.d.ts.map +1 -0
  463. package/packages/agent/src/runtime/trajectory-persistence.js +1957 -0
  464. package/packages/agent/src/runtime/version.d.ts +2 -0
  465. package/packages/agent/src/runtime/version.d.ts.map +1 -0
  466. package/packages/agent/src/runtime/version.js +5 -0
  467. package/packages/agent/src/security/audit-log.d.ts +49 -0
  468. package/packages/agent/src/security/audit-log.d.ts.map +1 -0
  469. package/packages/agent/src/security/audit-log.js +161 -0
  470. package/packages/agent/src/security/network-policy.d.ts +6 -0
  471. package/packages/agent/src/security/network-policy.d.ts.map +1 -0
  472. package/packages/agent/src/security/network-policy.js +85 -0
  473. package/packages/agent/src/server/index.d.ts +3 -0
  474. package/packages/agent/src/server/index.d.ts.map +1 -0
  475. package/packages/agent/src/server/index.js +1 -0
  476. package/packages/agent/src/services/agent-export.d.ts +100 -0
  477. package/packages/agent/src/services/agent-export.d.ts.map +1 -0
  478. package/packages/agent/src/services/agent-export.js +729 -0
  479. package/packages/agent/src/services/app-manager.d.ts +34 -0
  480. package/packages/agent/src/services/app-manager.d.ts.map +1 -0
  481. package/packages/agent/src/services/app-manager.js +425 -0
  482. package/packages/agent/src/services/browser-capture.d.ts +39 -0
  483. package/packages/agent/src/services/browser-capture.d.ts.map +1 -0
  484. package/packages/agent/src/services/browser-capture.js +162 -0
  485. package/packages/agent/src/services/coding-agent-context.d.ts +310 -0
  486. package/packages/agent/src/services/coding-agent-context.d.ts.map +1 -0
  487. package/packages/agent/src/services/coding-agent-context.js +281 -0
  488. package/packages/agent/src/services/fallback-training-service.d.ts +78 -0
  489. package/packages/agent/src/services/fallback-training-service.d.ts.map +1 -0
  490. package/packages/agent/src/services/fallback-training-service.js +126 -0
  491. package/packages/agent/src/services/index.d.ts +18 -0
  492. package/packages/agent/src/services/index.d.ts.map +1 -0
  493. package/packages/agent/src/services/index.js +17 -0
  494. package/packages/agent/src/services/mcp-marketplace.d.ts +89 -0
  495. package/packages/agent/src/services/mcp-marketplace.d.ts.map +1 -0
  496. package/packages/agent/src/services/mcp-marketplace.js +200 -0
  497. package/packages/agent/src/services/plugin-manager-types.d.ts +139 -0
  498. package/packages/agent/src/services/plugin-manager-types.d.ts.map +1 -0
  499. package/packages/agent/src/services/plugin-manager-types.js +18 -0
  500. package/packages/agent/src/services/privy-wallets.d.ts +18 -0
  501. package/packages/agent/src/services/privy-wallets.d.ts.map +1 -0
  502. package/packages/agent/src/services/privy-wallets.js +225 -0
  503. package/packages/agent/src/services/registry-client-app-meta.d.ts +6 -0
  504. package/packages/agent/src/services/registry-client-app-meta.d.ts.map +1 -0
  505. package/packages/agent/src/services/registry-client-app-meta.js +147 -0
  506. package/packages/agent/src/services/registry-client-endpoints.d.ts +7 -0
  507. package/packages/agent/src/services/registry-client-endpoints.d.ts.map +1 -0
  508. package/packages/agent/src/services/registry-client-endpoints.js +183 -0
  509. package/packages/agent/src/services/registry-client-local.d.ts +4 -0
  510. package/packages/agent/src/services/registry-client-local.d.ts.map +1 -0
  511. package/packages/agent/src/services/registry-client-local.js +377 -0
  512. package/packages/agent/src/services/registry-client-network.d.ts +9 -0
  513. package/packages/agent/src/services/registry-client-network.d.ts.map +1 -0
  514. package/packages/agent/src/services/registry-client-network.js +109 -0
  515. package/packages/agent/src/services/registry-client-queries.d.ts +15 -0
  516. package/packages/agent/src/services/registry-client-queries.d.ts.map +1 -0
  517. package/packages/agent/src/services/registry-client-queries.js +150 -0
  518. package/packages/agent/src/services/registry-client-types.d.ts +115 -0
  519. package/packages/agent/src/services/registry-client-types.d.ts.map +1 -0
  520. package/packages/agent/src/services/registry-client-types.js +1 -0
  521. package/packages/agent/src/services/registry-client.d.ts +39 -0
  522. package/packages/agent/src/services/registry-client.d.ts.map +1 -0
  523. package/packages/agent/src/services/registry-client.js +249 -0
  524. package/packages/agent/src/services/remote-signing-service.d.ts +58 -0
  525. package/packages/agent/src/services/remote-signing-service.d.ts.map +1 -0
  526. package/packages/agent/src/services/remote-signing-service.js +185 -0
  527. package/packages/agent/src/services/sandbox-engine.d.ts +96 -0
  528. package/packages/agent/src/services/sandbox-engine.d.ts.map +1 -0
  529. package/packages/agent/src/services/sandbox-engine.js +604 -0
  530. package/packages/agent/src/services/sandbox-manager.d.ts +104 -0
  531. package/packages/agent/src/services/sandbox-manager.d.ts.map +1 -0
  532. package/packages/agent/src/services/sandbox-manager.js +353 -0
  533. package/packages/agent/src/services/self-updater.d.ts +21 -0
  534. package/packages/agent/src/services/self-updater.d.ts.map +1 -0
  535. package/packages/agent/src/services/self-updater.js +162 -0
  536. package/packages/agent/src/services/signal-pairing.d.ts +37 -0
  537. package/packages/agent/src/services/signal-pairing.d.ts.map +1 -0
  538. package/packages/agent/src/services/signal-pairing.js +124 -0
  539. package/packages/agent/src/services/signing-policy.d.ts +44 -0
  540. package/packages/agent/src/services/signing-policy.d.ts.map +1 -0
  541. package/packages/agent/src/services/signing-policy.js +165 -0
  542. package/packages/agent/src/services/skill-catalog-client.d.ts +47 -0
  543. package/packages/agent/src/services/skill-catalog-client.d.ts.map +1 -0
  544. package/packages/agent/src/services/skill-catalog-client.js +130 -0
  545. package/packages/agent/src/services/skill-marketplace.d.ts +42 -0
  546. package/packages/agent/src/services/skill-marketplace.d.ts.map +1 -0
  547. package/packages/agent/src/services/skill-marketplace.js +680 -0
  548. package/packages/agent/src/services/stream-manager.d.ts +121 -0
  549. package/packages/agent/src/services/stream-manager.d.ts.map +1 -0
  550. package/packages/agent/src/services/stream-manager.js +604 -0
  551. package/packages/agent/src/services/tts-stream-bridge.d.ts +83 -0
  552. package/packages/agent/src/services/tts-stream-bridge.d.ts.map +1 -0
  553. package/packages/agent/src/services/tts-stream-bridge.js +349 -0
  554. package/packages/agent/src/services/update-checker.d.ts +29 -0
  555. package/packages/agent/src/services/update-checker.d.ts.map +1 -0
  556. package/packages/agent/src/services/update-checker.js +134 -0
  557. package/packages/agent/src/services/version-compat.d.ts +99 -0
  558. package/packages/agent/src/services/version-compat.d.ts.map +1 -0
  559. package/packages/agent/src/services/version-compat.js +195 -0
  560. package/packages/agent/src/services/whatsapp-pairing.d.ts +41 -0
  561. package/packages/agent/src/services/whatsapp-pairing.d.ts.map +1 -0
  562. package/packages/agent/src/services/whatsapp-pairing.js +209 -0
  563. package/packages/agent/src/shared/ui-catalog-prompt.d.ts +52 -0
  564. package/packages/agent/src/shared/ui-catalog-prompt.d.ts.map +1 -0
  565. package/packages/agent/src/shared/ui-catalog-prompt.js +1028 -0
  566. package/packages/agent/src/test-support/process-helpers.d.ts +13 -0
  567. package/packages/agent/src/test-support/process-helpers.d.ts.map +1 -0
  568. package/packages/agent/src/test-support/process-helpers.js +23 -0
  569. package/packages/agent/src/test-support/route-test-helpers.d.ts +37 -0
  570. package/packages/agent/src/test-support/route-test-helpers.d.ts.map +1 -0
  571. package/packages/agent/src/test-support/route-test-helpers.js +54 -0
  572. package/packages/agent/src/test-support/test-helpers.d.ts +77 -0
  573. package/packages/agent/src/test-support/test-helpers.d.ts.map +1 -0
  574. package/packages/agent/src/test-support/test-helpers.js +210 -0
  575. package/packages/agent/src/testing/index.d.ts +4 -0
  576. package/packages/agent/src/testing/index.d.ts.map +1 -0
  577. package/packages/agent/src/testing/index.js +3 -0
  578. package/packages/agent/src/triggers/action.d.ts +3 -0
  579. package/packages/agent/src/triggers/action.d.ts.map +1 -0
  580. package/packages/agent/src/triggers/action.js +267 -0
  581. package/packages/agent/src/triggers/runtime.d.ts +24 -0
  582. package/packages/agent/src/triggers/runtime.d.ts.map +1 -0
  583. package/packages/agent/src/triggers/runtime.js +322 -0
  584. package/packages/agent/src/triggers/scheduling.d.ts +70 -0
  585. package/packages/agent/src/triggers/scheduling.d.ts.map +1 -0
  586. package/packages/agent/src/triggers/scheduling.js +355 -0
  587. package/packages/agent/src/triggers/types.d.ts +115 -0
  588. package/packages/agent/src/triggers/types.d.ts.map +1 -0
  589. package/packages/agent/src/triggers/types.js +1 -0
  590. package/packages/agent/src/utils/exec-safety.d.ts +2 -0
  591. package/packages/agent/src/utils/exec-safety.d.ts.map +1 -0
  592. package/packages/agent/src/utils/exec-safety.js +21 -0
  593. package/packages/agent/src/utils/number-parsing.d.ts +26 -0
  594. package/packages/agent/src/utils/number-parsing.d.ts.map +1 -0
  595. package/packages/agent/src/utils/number-parsing.js +52 -0
  596. package/packages/agent/src/utils/spoken-text.d.ts +2 -0
  597. package/packages/agent/src/utils/spoken-text.d.ts.map +1 -0
  598. package/packages/agent/src/utils/spoken-text.js +56 -0
  599. package/packages/agent/src/version-resolver.d.ts +3 -0
  600. package/packages/agent/src/version-resolver.d.ts.map +1 -0
  601. package/packages/agent/src/version-resolver.js +51 -0
  602. package/LICENSE +0 -21
  603. package/jest.config.js +0 -17
  604. package/src/__tests__/client-type-identification.test.ts +0 -59
  605. package/src/defaultCharacter.ts +0 -530
  606. package/src/index.ts +0 -911
  607. package/tsconfig.json +0 -16
@@ -0,0 +1,195 @@
1
+ import { parsePositiveInteger } from "../utils/number-parsing";
2
+ import { detectAvailableBackends } from "./training-backend-check";
3
+ function resolveOllamaUrlRejection(rawUrl, isLoopbackHost) {
4
+ const trimmed = rawUrl.trim();
5
+ if (!trimmed)
6
+ return null;
7
+ let parsed;
8
+ try {
9
+ parsed = new URL(trimmed);
10
+ }
11
+ catch {
12
+ return "ollamaUrl must be a valid URL";
13
+ }
14
+ if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
15
+ return "ollamaUrl must use http:// or https://";
16
+ }
17
+ if (!isLoopbackHost(parsed.hostname)) {
18
+ return "ollamaUrl must target a loopback host (localhost, 127.0.0.1, or ::1)";
19
+ }
20
+ return null;
21
+ }
22
+ export async function handleTrainingRoutes(ctx) {
23
+ const { req, res, method, pathname, runtime, trainingService, json, error, readJsonBody, isLoopbackHost, } = ctx;
24
+ if (!pathname.startsWith("/api/training"))
25
+ return false;
26
+ if (method === "GET" && pathname === "/api/training/status") {
27
+ const status = trainingService.getStatus();
28
+ json(res, {
29
+ ...status,
30
+ runtimeAvailable: runtime !== null,
31
+ });
32
+ return true;
33
+ }
34
+ if (method === "GET" && pathname === "/api/training/trajectories") {
35
+ const url = new URL(req.url ?? "/", `http://${req.headers.host ?? "localhost"}`);
36
+ const limit = parsePositiveInteger(url.searchParams.get("limit"), 100);
37
+ const offset = Math.max(0, Number(url.searchParams.get("offset") ?? "0"));
38
+ const result = await trainingService.listTrajectories({ limit, offset });
39
+ json(res, result);
40
+ return true;
41
+ }
42
+ const trajectoryMatch = /^\/api\/training\/trajectories\/([^/]+)$/.exec(pathname);
43
+ if (method === "GET" && trajectoryMatch) {
44
+ const trajectoryId = decodeURIComponent(trajectoryMatch[1]);
45
+ const detail = await trainingService.getTrajectoryById(trajectoryId);
46
+ if (!detail) {
47
+ error(res, "Trajectory not found", 404);
48
+ return true;
49
+ }
50
+ json(res, { trajectory: detail });
51
+ return true;
52
+ }
53
+ if (method === "GET" && pathname === "/api/training/datasets") {
54
+ json(res, { datasets: trainingService.listDatasets() });
55
+ return true;
56
+ }
57
+ if (method === "POST" && pathname === "/api/training/datasets/build") {
58
+ const body = await readJsonBody(req, res);
59
+ if (!body)
60
+ return true;
61
+ const dataset = await trainingService.buildDataset({
62
+ limit: body.limit,
63
+ minLlmCallsPerTrajectory: body.minLlmCallsPerTrajectory,
64
+ });
65
+ json(res, { dataset }, 201);
66
+ return true;
67
+ }
68
+ if (method === "GET" && pathname === "/api/training/backends") {
69
+ const backends = await detectAvailableBackends();
70
+ json(res, { backends });
71
+ return true;
72
+ }
73
+ if (method === "GET" && pathname === "/api/training/jobs") {
74
+ json(res, { jobs: trainingService.listJobs() });
75
+ return true;
76
+ }
77
+ if (method === "POST" && pathname === "/api/training/jobs") {
78
+ const body = await readJsonBody(req, res);
79
+ if (!body)
80
+ return true;
81
+ if (body.backend && body.backend !== "cpu") {
82
+ const backends = await detectAvailableBackends();
83
+ if (!backends[body.backend]) {
84
+ const available = Object.entries(backends)
85
+ .filter(([, ok]) => ok)
86
+ .map(([name]) => name)
87
+ .join(", ");
88
+ error(res, `Backend '${body.backend}' is not available on this system. Available backends: ${available}`, 400);
89
+ return true;
90
+ }
91
+ }
92
+ try {
93
+ const job = await trainingService.startTrainingJob({
94
+ datasetId: body.datasetId,
95
+ maxTrajectories: body.maxTrajectories,
96
+ backend: body.backend,
97
+ model: body.model,
98
+ iterations: body.iterations,
99
+ batchSize: body.batchSize,
100
+ learningRate: body.learningRate,
101
+ });
102
+ json(res, { job }, 201);
103
+ }
104
+ catch (err) {
105
+ const message = err instanceof Error ? err.message : String(err);
106
+ error(res, message, 400);
107
+ }
108
+ return true;
109
+ }
110
+ const jobMatch = /^\/api\/training\/jobs\/([^/]+)$/.exec(pathname);
111
+ if (method === "GET" && jobMatch) {
112
+ const jobId = decodeURIComponent(jobMatch[1]);
113
+ const job = trainingService.getJob(jobId);
114
+ if (!job) {
115
+ error(res, "Training job not found", 404);
116
+ return true;
117
+ }
118
+ json(res, { job });
119
+ return true;
120
+ }
121
+ const cancelMatch = /^\/api\/training\/jobs\/([^/]+)\/cancel$/.exec(pathname);
122
+ if (method === "POST" && cancelMatch) {
123
+ const jobId = decodeURIComponent(cancelMatch[1]);
124
+ try {
125
+ const job = await trainingService.cancelJob(jobId);
126
+ json(res, { job });
127
+ }
128
+ catch (err) {
129
+ const message = err instanceof Error ? err.message : String(err);
130
+ error(res, message, 404);
131
+ }
132
+ return true;
133
+ }
134
+ if (method === "GET" && pathname === "/api/training/models") {
135
+ json(res, { models: trainingService.listModels() });
136
+ return true;
137
+ }
138
+ const importMatch = /^\/api\/training\/models\/([^/]+)\/import-ollama$/.exec(pathname);
139
+ if (method === "POST" && importMatch) {
140
+ const modelId = decodeURIComponent(importMatch[1]);
141
+ const body = await readJsonBody(req, res);
142
+ if (!body)
143
+ return true;
144
+ if (body.ollamaUrl !== undefined && typeof body.ollamaUrl !== "string") {
145
+ error(res, "ollamaUrl must be a string", 400);
146
+ return true;
147
+ }
148
+ if (typeof body.ollamaUrl === "string") {
149
+ const ollamaUrlRejection = resolveOllamaUrlRejection(body.ollamaUrl, isLoopbackHost);
150
+ if (ollamaUrlRejection) {
151
+ error(res, ollamaUrlRejection, 400);
152
+ return true;
153
+ }
154
+ }
155
+ try {
156
+ const model = await trainingService.importModelToOllama(modelId, body);
157
+ json(res, { model });
158
+ }
159
+ catch (err) {
160
+ const message = err instanceof Error ? err.message : String(err);
161
+ error(res, message, 400);
162
+ }
163
+ return true;
164
+ }
165
+ const activateMatch = /^\/api\/training\/models\/([^/]+)\/activate$/.exec(pathname);
166
+ if (method === "POST" && activateMatch) {
167
+ const modelId = decodeURIComponent(activateMatch[1]);
168
+ const body = await readJsonBody(req, res);
169
+ if (!body)
170
+ return true;
171
+ try {
172
+ const result = await trainingService.activateModel(modelId, body.providerModel);
173
+ json(res, result);
174
+ }
175
+ catch (err) {
176
+ const message = err instanceof Error ? err.message : String(err);
177
+ error(res, message, 400);
178
+ }
179
+ return true;
180
+ }
181
+ const benchmarkMatch = /^\/api\/training\/models\/([^/]+)\/benchmark$/.exec(pathname);
182
+ if (method === "POST" && benchmarkMatch) {
183
+ const modelId = decodeURIComponent(benchmarkMatch[1]);
184
+ try {
185
+ const result = await trainingService.benchmarkModel(modelId);
186
+ json(res, result);
187
+ }
188
+ catch (err) {
189
+ const message = err instanceof Error ? err.message : String(err);
190
+ error(res, message, 400);
191
+ }
192
+ return true;
193
+ }
194
+ return false;
195
+ }
@@ -0,0 +1,38 @@
1
+ export interface TrainingServiceLike {
2
+ getStatus(): Record<string, unknown>;
3
+ listTrajectories(options: {
4
+ limit?: number;
5
+ offset?: number;
6
+ }): Promise<Record<string, unknown>>;
7
+ getTrajectoryById(trajectoryId: string): Promise<Record<string, unknown> | null>;
8
+ listDatasets(): Record<string, unknown>[];
9
+ buildDataset(options: {
10
+ limit?: number;
11
+ minLlmCallsPerTrajectory?: number;
12
+ }): Promise<Record<string, unknown>>;
13
+ listJobs(): Record<string, unknown>[];
14
+ startTrainingJob(options: {
15
+ datasetId?: string;
16
+ maxTrajectories?: number;
17
+ backend?: "mlx" | "cuda" | "cpu";
18
+ model?: string;
19
+ iterations?: number;
20
+ batchSize?: number;
21
+ learningRate?: number;
22
+ }): Promise<Record<string, unknown>>;
23
+ getJob(jobId: string): Record<string, unknown> | null;
24
+ cancelJob(jobId: string): Promise<Record<string, unknown>>;
25
+ listModels(): Record<string, unknown>[];
26
+ importModelToOllama(modelId: string, body: {
27
+ modelName?: string;
28
+ baseModel?: string;
29
+ ollamaUrl?: string;
30
+ }): Promise<Record<string, unknown>>;
31
+ activateModel(modelId: string, providerModel?: string): Promise<Record<string, unknown>>;
32
+ benchmarkModel(modelId: string): Promise<Record<string, unknown>>;
33
+ }
34
+ export interface TrainingServiceWithRuntime extends TrainingServiceLike {
35
+ initialize(): Promise<void>;
36
+ subscribe(listener: (event: unknown) => void): () => void;
37
+ }
38
+ //# sourceMappingURL=training-service-like.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"training-service-like.d.ts","sourceRoot":"","sources":["../../../../../src/api/training-service-like.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,gBAAgB,CAAC,OAAO,EAAE;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrC,iBAAiB,CACf,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAC3C,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAC1C,YAAY,CAAC,OAAO,EAAE;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,wBAAwB,CAAC,EAAE,MAAM,CAAC;KACnC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrC,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACtC,gBAAgB,CAAC,OAAO,EAAE;QACxB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,OAAO,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;QACjC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACtD,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3D,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACxC,mBAAmB,CACjB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;QACJ,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GACA,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACpC,aAAa,CACX,OAAO,EAAE,MAAM,EACf,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACpC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACnE;AAED,MAAM,WAAW,0BAA2B,SAAQ,mBAAmB;IACrE,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CAC3D"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Trajectory API routes for the Eliza Control UI.
3
+ *
4
+ * Provides endpoints for:
5
+ * - Listing and searching trajectories
6
+ * - Viewing trajectory details with LLM calls and provider accesses
7
+ * - Exporting trajectories to JSON, CSV, or ZIP
8
+ * - Deleting trajectories
9
+ * - Getting trajectory statistics
10
+ * - Enabling/disabling trajectory logging
11
+ *
12
+ * Uses the @elizaos/plugin-trajectory-logger service for data access.
13
+ */
14
+ import type http from "node:http";
15
+ import type { AgentRuntime } from "@elizaos/core";
16
+ export declare function handleTrajectoryRoute(req: http.IncomingMessage, res: http.ServerResponse, runtime: AgentRuntime, pathname: string, method: string): Promise<boolean>;
17
+ //# sourceMappingURL=trajectory-routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trajectory-routes.d.ts","sourceRoot":"","sources":["../../../../../src/api/trajectory-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAirBlD,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CA+ClB"}
@@ -0,0 +1,405 @@
1
+ /**
2
+ * Trajectory API routes for the Eliza Control UI.
3
+ *
4
+ * Provides endpoints for:
5
+ * - Listing and searching trajectories
6
+ * - Viewing trajectory details with LLM calls and provider accesses
7
+ * - Exporting trajectories to JSON, CSV, or ZIP
8
+ * - Deleting trajectories
9
+ * - Getting trajectory statistics
10
+ * - Enabling/disabling trajectory logging
11
+ *
12
+ * Uses the @elizaos/plugin-trajectory-logger service for data access.
13
+ */
14
+ import { readJsonBody as parseJsonBody, sendJson, sendJsonError, } from "./http-helpers";
15
+ import { createZipArchive } from "./zip-utils";
16
+ // ============================================================================
17
+ // Helpers
18
+ // ============================================================================
19
+ function isRouteCompatibleTrajectoryLogger(candidate) {
20
+ if (!candidate || typeof candidate !== "object")
21
+ return false;
22
+ const logger = candidate;
23
+ return (typeof logger.isEnabled === "function" &&
24
+ typeof logger.setEnabled === "function" &&
25
+ typeof logger.listTrajectories === "function" &&
26
+ typeof logger.getTrajectoryDetail === "function" &&
27
+ typeof logger.getStats === "function" &&
28
+ typeof logger.deleteTrajectories === "function" &&
29
+ typeof logger.clearAllTrajectories === "function" &&
30
+ typeof logger.exportTrajectories === "function");
31
+ }
32
+ function collectCandidates(runtimeLike) {
33
+ const seen = new Set();
34
+ const candidates = [];
35
+ const add = (candidate) => {
36
+ if (!candidate || seen.has(candidate))
37
+ return;
38
+ seen.add(candidate);
39
+ candidates.push(candidate);
40
+ };
41
+ if (typeof runtimeLike.getServicesByType === "function") {
42
+ const byType = runtimeLike.getServicesByType("trajectory_logger");
43
+ if (Array.isArray(byType)) {
44
+ for (const candidate of byType) {
45
+ add(candidate);
46
+ }
47
+ }
48
+ else {
49
+ add(byType);
50
+ }
51
+ }
52
+ if (typeof runtimeLike.getService === "function") {
53
+ add(runtimeLike.getService("trajectory_logger"));
54
+ }
55
+ return candidates;
56
+ }
57
+ function findCompatibleLogger(candidates) {
58
+ for (const candidate of candidates) {
59
+ if (isRouteCompatibleTrajectoryLogger(candidate)) {
60
+ return candidate;
61
+ }
62
+ }
63
+ return null;
64
+ }
65
+ async function getTrajectoryLogger(runtime) {
66
+ const runtimeLike = runtime;
67
+ // Fast path: service already available.
68
+ const immediate = findCompatibleLogger(collectCandidates(runtimeLike));
69
+ if (immediate)
70
+ return immediate;
71
+ // The service may still be starting — wait for it if the runtime supports it.
72
+ const status = typeof runtimeLike.getServiceRegistrationStatus === "function"
73
+ ? runtimeLike.getServiceRegistrationStatus("trajectory_logger")
74
+ : "unknown";
75
+ if ((status === "pending" || status === "registering") &&
76
+ typeof runtimeLike.getServiceLoadPromise === "function") {
77
+ try {
78
+ await Promise.race([
79
+ runtimeLike.getServiceLoadPromise("trajectory_logger"),
80
+ new Promise((resolve) => setTimeout(resolve, 5000)),
81
+ ]);
82
+ }
83
+ catch {
84
+ // Service failed to start — fall through to return null.
85
+ }
86
+ // Re-check after waiting.
87
+ return findCompatibleLogger(collectCandidates(runtimeLike));
88
+ }
89
+ return null;
90
+ }
91
+ function toNullableString(value) {
92
+ return typeof value === "string" ? value : null;
93
+ }
94
+ function listItemToUIRecord(item) {
95
+ const status = item.status === "timeout" || item.status === "error"
96
+ ? "error"
97
+ : item.status;
98
+ return {
99
+ id: item.id,
100
+ agentId: item.agentId,
101
+ roomId: null,
102
+ entityId: null,
103
+ conversationId: null,
104
+ source: item.source,
105
+ status: status,
106
+ startTime: item.startTime,
107
+ endTime: item.endTime,
108
+ durationMs: item.durationMs,
109
+ llmCallCount: item.llmCallCount,
110
+ providerAccessCount: 0,
111
+ totalPromptTokens: item.totalPromptTokens,
112
+ totalCompletionTokens: item.totalCompletionTokens,
113
+ metadata: {},
114
+ createdAt: item.createdAt,
115
+ updatedAt: item.createdAt,
116
+ };
117
+ }
118
+ function trajectoryToUIDetail(traj) {
119
+ const finalStatus = traj.metrics?.finalStatus ?? "completed";
120
+ const normalizedEndTime = typeof traj.endTime === "number" && traj.endTime > 0 ? traj.endTime : null;
121
+ const status = finalStatus === "timeout" ||
122
+ finalStatus === "terminated" ||
123
+ finalStatus === "error"
124
+ ? "error"
125
+ : finalStatus === "completed"
126
+ ? "completed"
127
+ : normalizedEndTime
128
+ ? "completed"
129
+ : "active";
130
+ const llmCalls = [];
131
+ const providerAccesses = [];
132
+ let totalPromptTokens = 0;
133
+ let totalCompletionTokens = 0;
134
+ const steps = traj.steps || [];
135
+ const trajectoryId = String(traj.trajectoryId);
136
+ for (let i = 0; i < steps.length; i++) {
137
+ const step = steps[i];
138
+ const stepId = typeof step.stepId === "string" ? step.stepId : `step-${i}`;
139
+ // Process LLM Calls
140
+ const calls = step.llmCalls || [];
141
+ for (let j = 0; j < calls.length; j++) {
142
+ const call = calls[j];
143
+ llmCalls.push({
144
+ id: call.callId || `${stepId}-call-${j}`,
145
+ trajectoryId,
146
+ stepId,
147
+ model: call.model || "unknown",
148
+ systemPrompt: call.systemPrompt || "",
149
+ userPrompt: call.userPrompt || "",
150
+ response: call.response || "",
151
+ temperature: typeof call.temperature === "number" ? call.temperature : 0,
152
+ maxTokens: typeof call.maxTokens === "number" ? call.maxTokens : 0,
153
+ purpose: call.purpose || "",
154
+ actionType: call.actionType || "",
155
+ latencyMs: call.latencyMs || 0,
156
+ promptTokens: call.promptTokens,
157
+ completionTokens: call.completionTokens,
158
+ timestamp: call.timestamp || step.timestamp,
159
+ createdAt: new Date(call.timestamp || step.timestamp).toISOString(),
160
+ });
161
+ totalPromptTokens += call.promptTokens || 0;
162
+ totalCompletionTokens += call.completionTokens || 0;
163
+ }
164
+ // Process Provider Accesses
165
+ const accesses = step.providerAccesses || [];
166
+ for (let k = 0; k < accesses.length; k++) {
167
+ const access = accesses[k];
168
+ providerAccesses.push({
169
+ id: access.providerId || `${stepId}-provider-${k}`,
170
+ trajectoryId,
171
+ stepId,
172
+ providerName: access.providerName || "unknown",
173
+ purpose: access.purpose || "",
174
+ data: access.data || {},
175
+ query: access.query,
176
+ timestamp: access.timestamp || step.timestamp,
177
+ createdAt: new Date(access.timestamp || step.timestamp).toISOString(),
178
+ });
179
+ }
180
+ }
181
+ const metadata = (traj.metadata ?? {});
182
+ const normalizedDurationMs = status === "active"
183
+ ? null
184
+ : typeof traj.durationMs === "number"
185
+ ? traj.durationMs
186
+ : null;
187
+ const updatedAtMs = normalizedEndTime ?? (traj.startTime || Date.now());
188
+ const trajectory = {
189
+ id: trajectoryId,
190
+ agentId: String(traj.agentId),
191
+ roomId: toNullableString(metadata.roomId),
192
+ entityId: toNullableString(metadata.entityId),
193
+ conversationId: toNullableString(metadata.conversationId),
194
+ source: toNullableString(metadata.source) ?? "chat",
195
+ status,
196
+ startTime: traj.startTime,
197
+ endTime: normalizedEndTime,
198
+ durationMs: normalizedDurationMs,
199
+ llmCallCount: llmCalls.length,
200
+ providerAccessCount: providerAccesses.length,
201
+ totalPromptTokens,
202
+ totalCompletionTokens,
203
+ metadata,
204
+ createdAt: new Date(traj.startTime).toISOString(),
205
+ updatedAt: new Date(updatedAtMs).toISOString(),
206
+ };
207
+ return { trajectory, llmCalls, providerAccesses };
208
+ }
209
+ // ============================================================================
210
+ // Handlers
211
+ // ============================================================================
212
+ async function handleGetTrajectories(req, res, runtime) {
213
+ const logger = await getTrajectoryLogger(runtime);
214
+ if (!logger) {
215
+ sendJsonError(res, "Trajectory logger service not available", 503);
216
+ return;
217
+ }
218
+ const url = new URL(req.url ?? "/", `http://${req.headers.host ?? "localhost"}`);
219
+ const options = {
220
+ limit: Math.min(500, Math.max(1, Number(url.searchParams.get("limit")) || 50)),
221
+ offset: Math.max(0, Number(url.searchParams.get("offset")) || 0),
222
+ source: url.searchParams.get("source") || undefined,
223
+ status: url.searchParams.get("status") || undefined,
224
+ startDate: url.searchParams.get("startDate") || undefined,
225
+ endDate: url.searchParams.get("endDate") || undefined,
226
+ search: url.searchParams.get("search") || undefined,
227
+ scenarioId: url.searchParams.get("scenarioId") || undefined,
228
+ batchId: url.searchParams.get("batchId") || undefined,
229
+ isTrainingData: url.searchParams.has("isTrainingData")
230
+ ? url.searchParams.get("isTrainingData") === "true"
231
+ : undefined,
232
+ };
233
+ const result = await logger.listTrajectories(options);
234
+ const uiResult = {
235
+ trajectories: result.trajectories.map(listItemToUIRecord),
236
+ total: result.total,
237
+ offset: result.offset,
238
+ limit: result.limit,
239
+ };
240
+ sendJson(res, uiResult);
241
+ }
242
+ async function handleGetTrajectoryDetail(_req, res, runtime, trajectoryId) {
243
+ const logger = await getTrajectoryLogger(runtime);
244
+ if (!logger) {
245
+ sendJsonError(res, "Trajectory logger service not available", 503);
246
+ return;
247
+ }
248
+ const trajectory = await logger.getTrajectoryDetail(trajectoryId);
249
+ if (!trajectory) {
250
+ sendJsonError(res, `Trajectory "${trajectoryId}" not found`, 404);
251
+ return;
252
+ }
253
+ const uiDetail = trajectoryToUIDetail(trajectory);
254
+ sendJson(res, uiDetail);
255
+ }
256
+ async function handleGetStats(_req, res, runtime) {
257
+ const logger = await getTrajectoryLogger(runtime);
258
+ if (!logger) {
259
+ sendJsonError(res, "Trajectory logger service not available", 503);
260
+ return;
261
+ }
262
+ const stats = await logger.getStats();
263
+ sendJson(res, stats);
264
+ }
265
+ async function handleGetConfig(_req, res, runtime) {
266
+ const logger = await getTrajectoryLogger(runtime);
267
+ if (!logger) {
268
+ sendJsonError(res, "Trajectory logger service not available", 503);
269
+ return;
270
+ }
271
+ sendJson(res, {
272
+ enabled: logger.isEnabled(),
273
+ });
274
+ }
275
+ async function handlePutConfig(req, res, runtime) {
276
+ const logger = await getTrajectoryLogger(runtime);
277
+ if (!logger) {
278
+ sendJsonError(res, "Trajectory logger service not available", 503);
279
+ return;
280
+ }
281
+ const body = await parseJsonBody(req, res);
282
+ if (!body)
283
+ return;
284
+ if (typeof body.enabled === "boolean") {
285
+ logger.setEnabled(body.enabled);
286
+ }
287
+ sendJson(res, {
288
+ enabled: logger.isEnabled(),
289
+ });
290
+ }
291
+ async function handleExportTrajectories(req, res, runtime) {
292
+ const logger = await getTrajectoryLogger(runtime);
293
+ if (!logger) {
294
+ sendJsonError(res, "Trajectory logger service not available", 503);
295
+ return;
296
+ }
297
+ const body = await parseJsonBody(req, res);
298
+ if (!body)
299
+ return;
300
+ if (body.format === "zip") {
301
+ if (typeof logger.exportTrajectoriesZip !== "function") {
302
+ sendJsonError(res, "Trajectory ZIP export is unavailable in the active logger", 503);
303
+ return;
304
+ }
305
+ const zipOptions = {
306
+ includePrompts: body.includePrompts,
307
+ trajectoryIds: body.trajectoryIds,
308
+ startDate: body.startDate,
309
+ endDate: body.endDate,
310
+ scenarioId: body.scenarioId,
311
+ batchId: body.batchId,
312
+ };
313
+ const zipResult = await logger.exportTrajectoriesZip(zipOptions);
314
+ const archive = createZipArchive(zipResult.entries);
315
+ res.statusCode = 200;
316
+ res.setHeader("Content-Type", "application/zip");
317
+ res.setHeader("Content-Disposition", `attachment; filename="${zipResult.filename}"`);
318
+ res.end(archive);
319
+ return;
320
+ }
321
+ if (body.format !== "json" &&
322
+ body.format !== "csv" &&
323
+ body.format !== "art") {
324
+ sendJsonError(res, "Format must be 'json', 'csv', 'art', or 'zip'", 400);
325
+ return;
326
+ }
327
+ const result = await logger.exportTrajectories({
328
+ format: body.format,
329
+ includePrompts: body.includePrompts,
330
+ trajectoryIds: body.trajectoryIds,
331
+ startDate: body.startDate,
332
+ endDate: body.endDate,
333
+ scenarioId: body.scenarioId,
334
+ batchId: body.batchId,
335
+ });
336
+ res.statusCode = 200;
337
+ res.setHeader("Content-Type", result.mimeType);
338
+ res.setHeader("Content-Disposition", `attachment; filename="${result.filename}"`);
339
+ res.end(result.data);
340
+ }
341
+ async function handleDeleteTrajectories(req, res, runtime) {
342
+ const logger = await getTrajectoryLogger(runtime);
343
+ if (!logger) {
344
+ sendJsonError(res, "Trajectory logger service not available", 503);
345
+ return;
346
+ }
347
+ const body = await parseJsonBody(req, res);
348
+ if (!body)
349
+ return;
350
+ if (body.all) {
351
+ const deletedCount = await logger.clearAllTrajectories();
352
+ sendJson(res, { deleted: deletedCount });
353
+ return;
354
+ }
355
+ if (Array.isArray(body.trajectoryIds) && body.trajectoryIds.length > 0) {
356
+ const deletedCount = await logger.deleteTrajectories(body.trajectoryIds);
357
+ sendJson(res, { deleted: deletedCount });
358
+ return;
359
+ }
360
+ sendJson(res, { deleted: 0 });
361
+ }
362
+ // ============================================================================
363
+ // Main Router
364
+ // ============================================================================
365
+ export async function handleTrajectoryRoute(req, res, runtime, pathname, method) {
366
+ if (!pathname.startsWith("/api/trajectories"))
367
+ return false;
368
+ // GET /api/trajectories/config
369
+ if (pathname === "/api/trajectories/config" && method === "GET") {
370
+ await handleGetConfig(req, res, runtime);
371
+ return true;
372
+ }
373
+ // PUT /api/trajectories/config
374
+ if (pathname === "/api/trajectories/config" && method === "PUT") {
375
+ await handlePutConfig(req, res, runtime);
376
+ return true;
377
+ }
378
+ // POST /api/trajectories/export
379
+ if (pathname === "/api/trajectories/export" && method === "POST") {
380
+ await handleExportTrajectories(req, res, runtime);
381
+ return true;
382
+ }
383
+ // DELETE /api/trajectories
384
+ if (pathname === "/api/trajectories" && method === "DELETE") {
385
+ await handleDeleteTrajectories(req, res, runtime);
386
+ return true;
387
+ }
388
+ // GET /api/trajectories/stats
389
+ if (pathname === "/api/trajectories/stats" && method === "GET") {
390
+ await handleGetStats(req, res, runtime);
391
+ return true;
392
+ }
393
+ // GET /api/trajectories/:id
394
+ const detailMatch = pathname.match(/^\/api\/trajectories\/([^/]+)$/);
395
+ if (detailMatch && method === "GET") {
396
+ await handleGetTrajectoryDetail(req, res, runtime, detailMatch[1]);
397
+ return true;
398
+ }
399
+ // GET /api/trajectories
400
+ if (pathname === "/api/trajectories" && method === "GET") {
401
+ await handleGetTrajectories(req, res, runtime);
402
+ return true;
403
+ }
404
+ return false;
405
+ }