clodds 1.1.0

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 (1719) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +468 -0
  3. package/dist/acp/agreement.d.ts +110 -0
  4. package/dist/acp/agreement.js +514 -0
  5. package/dist/acp/agreement.js.map +1 -0
  6. package/dist/acp/discovery.d.ts +84 -0
  7. package/dist/acp/discovery.js +332 -0
  8. package/dist/acp/discovery.js.map +1 -0
  9. package/dist/acp/escrow.d.ts +139 -0
  10. package/dist/acp/escrow.js +880 -0
  11. package/dist/acp/escrow.js.map +1 -0
  12. package/dist/acp/identity.d.ts +135 -0
  13. package/dist/acp/identity.js +716 -0
  14. package/dist/acp/identity.js.map +1 -0
  15. package/dist/acp/index.d.ts +205 -0
  16. package/dist/acp/index.js +583 -0
  17. package/dist/acp/index.js.map +1 -0
  18. package/dist/acp/persistence.d.ts +59 -0
  19. package/dist/acp/persistence.js +590 -0
  20. package/dist/acp/persistence.js.map +1 -0
  21. package/dist/acp/predictions.d.ts +89 -0
  22. package/dist/acp/predictions.js +417 -0
  23. package/dist/acp/predictions.js.map +1 -0
  24. package/dist/acp/registry.d.ts +143 -0
  25. package/dist/acp/registry.js +584 -0
  26. package/dist/acp/registry.js.map +1 -0
  27. package/dist/agents/handlers/acp.d.ts +12 -0
  28. package/dist/agents/handlers/acp.js +987 -0
  29. package/dist/agents/handlers/acp.js.map +1 -0
  30. package/dist/agents/handlers/agentbets.d.ts +8 -0
  31. package/dist/agents/handlers/agentbets.js +63 -0
  32. package/dist/agents/handlers/agentbets.js.map +1 -0
  33. package/dist/agents/handlers/arbitrage.d.ts +16 -0
  34. package/dist/agents/handlers/arbitrage.js +187 -0
  35. package/dist/agents/handlers/arbitrage.js.map +1 -0
  36. package/dist/agents/handlers/betfair.d.ts +11 -0
  37. package/dist/agents/handlers/betfair.js +214 -0
  38. package/dist/agents/handlers/betfair.js.map +1 -0
  39. package/dist/agents/handlers/binance.d.ts +9 -0
  40. package/dist/agents/handlers/binance.js +227 -0
  41. package/dist/agents/handlers/binance.js.map +1 -0
  42. package/dist/agents/handlers/bittensor.d.ts +10 -0
  43. package/dist/agents/handlers/bittensor.js +90 -0
  44. package/dist/agents/handlers/bittensor.js.map +1 -0
  45. package/dist/agents/handlers/bybit.d.ts +9 -0
  46. package/dist/agents/handlers/bybit.js +226 -0
  47. package/dist/agents/handlers/bybit.js.map +1 -0
  48. package/dist/agents/handlers/credentials.d.ts +8 -0
  49. package/dist/agents/handlers/credentials.js +103 -0
  50. package/dist/agents/handlers/credentials.js.map +1 -0
  51. package/dist/agents/handlers/hyperliquid.d.ts +9 -0
  52. package/dist/agents/handlers/hyperliquid.js +326 -0
  53. package/dist/agents/handlers/hyperliquid.js.map +1 -0
  54. package/dist/agents/handlers/index.d.ts +82 -0
  55. package/dist/agents/handlers/index.js +143 -0
  56. package/dist/agents/handlers/index.js.map +1 -0
  57. package/dist/agents/handlers/kalshi.d.ts +10 -0
  58. package/dist/agents/handlers/kalshi.js +1377 -0
  59. package/dist/agents/handlers/kalshi.js.map +1 -0
  60. package/dist/agents/handlers/manifold.d.ts +9 -0
  61. package/dist/agents/handlers/manifold.js +1001 -0
  62. package/dist/agents/handlers/manifold.js.map +1 -0
  63. package/dist/agents/handlers/markets.d.ts +8 -0
  64. package/dist/agents/handlers/markets.js +321 -0
  65. package/dist/agents/handlers/markets.js.map +1 -0
  66. package/dist/agents/handlers/opinion.d.ts +11 -0
  67. package/dist/agents/handlers/opinion.js +374 -0
  68. package/dist/agents/handlers/opinion.js.map +1 -0
  69. package/dist/agents/handlers/paper-trading.d.ts +8 -0
  70. package/dist/agents/handlers/paper-trading.js +124 -0
  71. package/dist/agents/handlers/paper-trading.js.map +1 -0
  72. package/dist/agents/handlers/polymarket.d.ts +17 -0
  73. package/dist/agents/handlers/polymarket.js +455 -0
  74. package/dist/agents/handlers/polymarket.js.map +1 -0
  75. package/dist/agents/handlers/predictfun.d.ts +9 -0
  76. package/dist/agents/handlers/predictfun.js +488 -0
  77. package/dist/agents/handlers/predictfun.js.map +1 -0
  78. package/dist/agents/handlers/smarkets.d.ts +11 -0
  79. package/dist/agents/handlers/smarkets.js +205 -0
  80. package/dist/agents/handlers/smarkets.js.map +1 -0
  81. package/dist/agents/handlers/solana.d.ts +14 -0
  82. package/dist/agents/handlers/solana.js +1530 -0
  83. package/dist/agents/handlers/solana.js.map +1 -0
  84. package/dist/agents/handlers/types.d.ts +58 -0
  85. package/dist/agents/handlers/types.js +34 -0
  86. package/dist/agents/handlers/types.js.map +1 -0
  87. package/dist/agents/handlers/virtuals.d.ts +11 -0
  88. package/dist/agents/handlers/virtuals.js +135 -0
  89. package/dist/agents/handlers/virtuals.js.map +1 -0
  90. package/dist/agents/handlers/wallets.d.ts +9 -0
  91. package/dist/agents/handlers/wallets.js +222 -0
  92. package/dist/agents/handlers/wallets.js.map +1 -0
  93. package/dist/agents/index.d.ts +79 -0
  94. package/dist/agents/index.js +16690 -0
  95. package/dist/agents/index.js.map +1 -0
  96. package/dist/agents/subagents.d.ts +219 -0
  97. package/dist/agents/subagents.js +736 -0
  98. package/dist/agents/subagents.js.map +1 -0
  99. package/dist/alerts/index.d.ts +110 -0
  100. package/dist/alerts/index.js +421 -0
  101. package/dist/alerts/index.js.map +1 -0
  102. package/dist/alerts/realtime.d.ts +114 -0
  103. package/dist/alerts/realtime.js +262 -0
  104. package/dist/alerts/realtime.js.map +1 -0
  105. package/dist/api/apikeys.d.ts +74 -0
  106. package/dist/api/apikeys.js +319 -0
  107. package/dist/api/apikeys.js.map +1 -0
  108. package/dist/api/compute/code.d.ts +28 -0
  109. package/dist/api/compute/code.js +257 -0
  110. package/dist/api/compute/code.js.map +1 -0
  111. package/dist/api/compute/data.d.ts +72 -0
  112. package/dist/api/compute/data.js +264 -0
  113. package/dist/api/compute/data.js.map +1 -0
  114. package/dist/api/compute/gateway.d.ts +185 -0
  115. package/dist/api/compute/gateway.js +958 -0
  116. package/dist/api/compute/gateway.js.map +1 -0
  117. package/dist/api/compute/index.d.ts +21 -0
  118. package/dist/api/compute/index.js +46 -0
  119. package/dist/api/compute/index.js.map +1 -0
  120. package/dist/api/compute/llm.d.ts +64 -0
  121. package/dist/api/compute/llm.js +602 -0
  122. package/dist/api/compute/llm.js.map +1 -0
  123. package/dist/api/compute/persistence.d.ts +77 -0
  124. package/dist/api/compute/persistence.js +251 -0
  125. package/dist/api/compute/persistence.js.map +1 -0
  126. package/dist/api/compute/storage.d.ts +48 -0
  127. package/dist/api/compute/storage.js +283 -0
  128. package/dist/api/compute/storage.js.map +1 -0
  129. package/dist/api/compute/trade.d.ts +69 -0
  130. package/dist/api/compute/trade.js +460 -0
  131. package/dist/api/compute/trade.js.map +1 -0
  132. package/dist/api/compute/types.d.ts +271 -0
  133. package/dist/api/compute/types.js +87 -0
  134. package/dist/api/compute/types.js.map +1 -0
  135. package/dist/api/compute/web.d.ts +29 -0
  136. package/dist/api/compute/web.js +255 -0
  137. package/dist/api/compute/web.js.map +1 -0
  138. package/dist/api/custody.d.ts +48 -0
  139. package/dist/api/custody.js +272 -0
  140. package/dist/api/custody.js.map +1 -0
  141. package/dist/api/fees.d.ts +91 -0
  142. package/dist/api/fees.js +155 -0
  143. package/dist/api/fees.js.map +1 -0
  144. package/dist/api/gateway.d.ts +40 -0
  145. package/dist/api/gateway.js +569 -0
  146. package/dist/api/gateway.js.map +1 -0
  147. package/dist/api/index.d.ts +29 -0
  148. package/dist/api/index.js +55 -0
  149. package/dist/api/index.js.map +1 -0
  150. package/dist/api/jobs.d.ts +59 -0
  151. package/dist/api/jobs.js +362 -0
  152. package/dist/api/jobs.js.map +1 -0
  153. package/dist/api/middleware.d.ts +60 -0
  154. package/dist/api/middleware.js +315 -0
  155. package/dist/api/middleware.js.map +1 -0
  156. package/dist/api/prompt.d.ts +44 -0
  157. package/dist/api/prompt.js +345 -0
  158. package/dist/api/prompt.js.map +1 -0
  159. package/dist/api/sdk.d.ts +258 -0
  160. package/dist/api/sdk.js +341 -0
  161. package/dist/api/sdk.js.map +1 -0
  162. package/dist/api/server.d.ts +17 -0
  163. package/dist/api/server.js +852 -0
  164. package/dist/api/server.js.map +1 -0
  165. package/dist/api/types.d.ts +307 -0
  166. package/dist/api/types.js +64 -0
  167. package/dist/api/types.js.map +1 -0
  168. package/dist/arbitrage/index.d.ts +124 -0
  169. package/dist/arbitrage/index.js +482 -0
  170. package/dist/arbitrage/index.js.map +1 -0
  171. package/dist/auth/copilot.d.ts +87 -0
  172. package/dist/auth/copilot.js +328 -0
  173. package/dist/auth/copilot.js.map +1 -0
  174. package/dist/auth/google.d.ts +121 -0
  175. package/dist/auth/google.js +479 -0
  176. package/dist/auth/google.js.map +1 -0
  177. package/dist/auth/index.d.ts +8 -0
  178. package/dist/auth/index.js +25 -0
  179. package/dist/auth/index.js.map +1 -0
  180. package/dist/auth/oauth.d.ts +94 -0
  181. package/dist/auth/oauth.js +502 -0
  182. package/dist/auth/oauth.js.map +1 -0
  183. package/dist/auth/qwen.d.ts +110 -0
  184. package/dist/auth/qwen.js +351 -0
  185. package/dist/auth/qwen.js.map +1 -0
  186. package/dist/auto-reply/index.d.ts +143 -0
  187. package/dist/auto-reply/index.js +391 -0
  188. package/dist/auto-reply/index.js.map +1 -0
  189. package/dist/automation/cron.d.ts +66 -0
  190. package/dist/automation/cron.js +226 -0
  191. package/dist/automation/cron.js.map +1 -0
  192. package/dist/automation/heartbeats.d.ts +63 -0
  193. package/dist/automation/heartbeats.js +144 -0
  194. package/dist/automation/heartbeats.js.map +1 -0
  195. package/dist/automation/index.d.ts +9 -0
  196. package/dist/automation/index.js +15 -0
  197. package/dist/automation/index.js.map +1 -0
  198. package/dist/automation/webhooks.d.ts +60 -0
  199. package/dist/automation/webhooks.js +225 -0
  200. package/dist/automation/webhooks.js.map +1 -0
  201. package/dist/bankr/client.d.ts +86 -0
  202. package/dist/bankr/client.js +177 -0
  203. package/dist/bankr/client.js.map +1 -0
  204. package/dist/bankr/index.d.ts +6 -0
  205. package/dist/bankr/index.js +23 -0
  206. package/dist/bankr/index.js.map +1 -0
  207. package/dist/base/index.d.ts +6 -0
  208. package/dist/base/index.js +23 -0
  209. package/dist/base/index.js.map +1 -0
  210. package/dist/base/provider.d.ts +27 -0
  211. package/dist/base/provider.js +128 -0
  212. package/dist/base/provider.js.map +1 -0
  213. package/dist/bin/worker.d.ts +31 -0
  214. package/dist/bin/worker.js +127 -0
  215. package/dist/bin/worker.js.map +1 -0
  216. package/dist/bittensor/chutes.d.ts +14 -0
  217. package/dist/bittensor/chutes.js +141 -0
  218. package/dist/bittensor/chutes.js.map +1 -0
  219. package/dist/bittensor/index.d.ts +7 -0
  220. package/dist/bittensor/index.js +13 -0
  221. package/dist/bittensor/index.js.map +1 -0
  222. package/dist/bittensor/persistence.d.ts +8 -0
  223. package/dist/bittensor/persistence.js +188 -0
  224. package/dist/bittensor/persistence.js.map +1 -0
  225. package/dist/bittensor/plugin.d.ts +30 -0
  226. package/dist/bittensor/plugin.js +134 -0
  227. package/dist/bittensor/plugin.js.map +1 -0
  228. package/dist/bittensor/python-runner.d.ts +7 -0
  229. package/dist/bittensor/python-runner.js +83 -0
  230. package/dist/bittensor/python-runner.js.map +1 -0
  231. package/dist/bittensor/server.d.ts +7 -0
  232. package/dist/bittensor/server.js +110 -0
  233. package/dist/bittensor/server.js.map +1 -0
  234. package/dist/bittensor/service.d.ts +7 -0
  235. package/dist/bittensor/service.js +291 -0
  236. package/dist/bittensor/service.js.map +1 -0
  237. package/dist/bittensor/tool.d.ts +45 -0
  238. package/dist/bittensor/tool.js +147 -0
  239. package/dist/bittensor/tool.js.map +1 -0
  240. package/dist/bittensor/types.d.ts +188 -0
  241. package/dist/bittensor/types.js +6 -0
  242. package/dist/bittensor/types.js.map +1 -0
  243. package/dist/bittensor/wallet.d.ts +18 -0
  244. package/dist/bittensor/wallet.js +192 -0
  245. package/dist/bittensor/wallet.js.map +1 -0
  246. package/dist/bridge/wormhole.d.ts +239 -0
  247. package/dist/bridge/wormhole.js +404 -0
  248. package/dist/bridge/wormhole.js.map +1 -0
  249. package/dist/browser/index.d.ts +67 -0
  250. package/dist/browser/index.js +458 -0
  251. package/dist/browser/index.js.map +1 -0
  252. package/dist/cache/index.d.ts +105 -0
  253. package/dist/cache/index.js +306 -0
  254. package/dist/cache/index.js.map +1 -0
  255. package/dist/canvas/index.d.ts +66 -0
  256. package/dist/canvas/index.js +391 -0
  257. package/dist/canvas/index.js.map +1 -0
  258. package/dist/channels/base-adapter.d.ts +126 -0
  259. package/dist/channels/base-adapter.js +416 -0
  260. package/dist/channels/base-adapter.js.map +1 -0
  261. package/dist/channels/bluebubbles/index.d.ts +23 -0
  262. package/dist/channels/bluebubbles/index.js +182 -0
  263. package/dist/channels/bluebubbles/index.js.map +1 -0
  264. package/dist/channels/discord/index.d.ts +25 -0
  265. package/dist/channels/discord/index.js +419 -0
  266. package/dist/channels/discord/index.js.map +1 -0
  267. package/dist/channels/googlechat/index.d.ts +35 -0
  268. package/dist/channels/googlechat/index.js +223 -0
  269. package/dist/channels/googlechat/index.js.map +1 -0
  270. package/dist/channels/imessage/index.d.ts +28 -0
  271. package/dist/channels/imessage/index.js +340 -0
  272. package/dist/channels/imessage/index.js.map +1 -0
  273. package/dist/channels/index.d.ts +58 -0
  274. package/dist/channels/index.js +382 -0
  275. package/dist/channels/index.js.map +1 -0
  276. package/dist/channels/line/index.d.ts +307 -0
  277. package/dist/channels/line/index.js +760 -0
  278. package/dist/channels/line/index.js.map +1 -0
  279. package/dist/channels/matrix/index.d.ts +35 -0
  280. package/dist/channels/matrix/index.js +328 -0
  281. package/dist/channels/matrix/index.js.map +1 -0
  282. package/dist/channels/mattermost/index.d.ts +25 -0
  283. package/dist/channels/mattermost/index.js +239 -0
  284. package/dist/channels/mattermost/index.js.map +1 -0
  285. package/dist/channels/nextcloud-talk/index.d.ts +25 -0
  286. package/dist/channels/nextcloud-talk/index.js +175 -0
  287. package/dist/channels/nextcloud-talk/index.js.map +1 -0
  288. package/dist/channels/nostr/index.d.ts +21 -0
  289. package/dist/channels/nostr/index.js +278 -0
  290. package/dist/channels/nostr/index.js.map +1 -0
  291. package/dist/channels/signal/index.d.ts +33 -0
  292. package/dist/channels/signal/index.js +333 -0
  293. package/dist/channels/signal/index.js.map +1 -0
  294. package/dist/channels/slack/index.d.ts +26 -0
  295. package/dist/channels/slack/index.js +266 -0
  296. package/dist/channels/slack/index.js.map +1 -0
  297. package/dist/channels/teams/index.d.ts +42 -0
  298. package/dist/channels/teams/index.js +312 -0
  299. package/dist/channels/teams/index.js.map +1 -0
  300. package/dist/channels/telegram/index.d.ts +9 -0
  301. package/dist/channels/telegram/index.js +761 -0
  302. package/dist/channels/telegram/index.js.map +1 -0
  303. package/dist/channels/tlon/index.d.ts +25 -0
  304. package/dist/channels/tlon/index.js +236 -0
  305. package/dist/channels/tlon/index.js.map +1 -0
  306. package/dist/channels/twitch/index.d.ts +25 -0
  307. package/dist/channels/twitch/index.js +182 -0
  308. package/dist/channels/twitch/index.js.map +1 -0
  309. package/dist/channels/voice/index.d.ts +31 -0
  310. package/dist/channels/voice/index.js +208 -0
  311. package/dist/channels/voice/index.js.map +1 -0
  312. package/dist/channels/webchat/index.d.ts +29 -0
  313. package/dist/channels/webchat/index.js +366 -0
  314. package/dist/channels/webchat/index.js.map +1 -0
  315. package/dist/channels/whatsapp/index.d.ts +72 -0
  316. package/dist/channels/whatsapp/index.js +767 -0
  317. package/dist/channels/whatsapp/index.js.map +1 -0
  318. package/dist/channels/zalo/index.d.ts +45 -0
  319. package/dist/channels/zalo/index.js +285 -0
  320. package/dist/channels/zalo/index.js.map +1 -0
  321. package/dist/cli/commands/doctor.d.ts +23 -0
  322. package/dist/cli/commands/doctor.js +649 -0
  323. package/dist/cli/commands/doctor.js.map +1 -0
  324. package/dist/cli/commands/gateway.d.ts +6 -0
  325. package/dist/cli/commands/gateway.js +32 -0
  326. package/dist/cli/commands/gateway.js.map +1 -0
  327. package/dist/cli/commands/index.d.ts +31 -0
  328. package/dist/cli/commands/index.js +3743 -0
  329. package/dist/cli/commands/index.js.map +1 -0
  330. package/dist/cli/commands/onboard.d.ts +4 -0
  331. package/dist/cli/commands/onboard.js +334 -0
  332. package/dist/cli/commands/onboard.js.map +1 -0
  333. package/dist/cli/commands/repl.d.ts +11 -0
  334. package/dist/cli/commands/repl.js +185 -0
  335. package/dist/cli/commands/repl.js.map +1 -0
  336. package/dist/cli/commands/skills.d.ts +29 -0
  337. package/dist/cli/commands/skills.js +297 -0
  338. package/dist/cli/commands/skills.js.map +1 -0
  339. package/dist/cli/index.d.ts +12 -0
  340. package/dist/cli/index.js +449 -0
  341. package/dist/cli/index.js.map +1 -0
  342. package/dist/cli/secure.d.ts +14 -0
  343. package/dist/cli/secure.js +626 -0
  344. package/dist/cli/secure.js.map +1 -0
  345. package/dist/commands/index.d.ts +61 -0
  346. package/dist/commands/index.js +290 -0
  347. package/dist/commands/index.js.map +1 -0
  348. package/dist/commands/registry.d.ts +69 -0
  349. package/dist/commands/registry.js +3142 -0
  350. package/dist/commands/registry.js.map +1 -0
  351. package/dist/config/index.d.ts +465 -0
  352. package/dist/config/index.js +1451 -0
  353. package/dist/config/index.js.map +1 -0
  354. package/dist/credentials/index.d.ts +51 -0
  355. package/dist/credentials/index.js +270 -0
  356. package/dist/credentials/index.js.map +1 -0
  357. package/dist/cron/index.d.ts +151 -0
  358. package/dist/cron/index.js +1283 -0
  359. package/dist/cron/index.js.map +1 -0
  360. package/dist/cron/types.d.ts +102 -0
  361. package/dist/cron/types.js +6 -0
  362. package/dist/cron/types.js.map +1 -0
  363. package/dist/daemon/index.d.ts +23 -0
  364. package/dist/daemon/index.js +159 -0
  365. package/dist/daemon/index.js.map +1 -0
  366. package/dist/db/index.d.ts +825 -0
  367. package/dist/db/index.js +3382 -0
  368. package/dist/db/index.js.map +1 -0
  369. package/dist/db/migrations.d.ts +70 -0
  370. package/dist/db/migrations.js +1373 -0
  371. package/dist/db/migrations.js.map +1 -0
  372. package/dist/docker/index.d.ts +188 -0
  373. package/dist/docker/index.js +571 -0
  374. package/dist/docker/index.js.map +1 -0
  375. package/dist/doctor/index.d.ts +47 -0
  376. package/dist/doctor/index.js +379 -0
  377. package/dist/doctor/index.js.map +1 -0
  378. package/dist/embeddings/index.d.ts +65 -0
  379. package/dist/embeddings/index.js +399 -0
  380. package/dist/embeddings/index.js.map +1 -0
  381. package/dist/evm/contracts.d.ts +112 -0
  382. package/dist/evm/contracts.js +332 -0
  383. package/dist/evm/contracts.js.map +1 -0
  384. package/dist/evm/index.d.ts +21 -0
  385. package/dist/evm/index.js +45 -0
  386. package/dist/evm/index.js.map +1 -0
  387. package/dist/evm/multichain.d.ts +87 -0
  388. package/dist/evm/multichain.js +308 -0
  389. package/dist/evm/multichain.js.map +1 -0
  390. package/dist/evm/odos.d.ts +62 -0
  391. package/dist/evm/odos.js +261 -0
  392. package/dist/evm/odos.js.map +1 -0
  393. package/dist/evm/oneinch.d.ts +55 -0
  394. package/dist/evm/oneinch.js +324 -0
  395. package/dist/evm/oneinch.js.map +1 -0
  396. package/dist/evm/transfers.d.ts +83 -0
  397. package/dist/evm/transfers.js +393 -0
  398. package/dist/evm/transfers.js.map +1 -0
  399. package/dist/evm/uniswap.d.ts +56 -0
  400. package/dist/evm/uniswap.js +307 -0
  401. package/dist/evm/uniswap.js.map +1 -0
  402. package/dist/evm/virtuals.d.ts +220 -0
  403. package/dist/evm/virtuals.js +735 -0
  404. package/dist/evm/virtuals.js.map +1 -0
  405. package/dist/evm/wallet.d.ts +96 -0
  406. package/dist/evm/wallet.js +258 -0
  407. package/dist/evm/wallet.js.map +1 -0
  408. package/dist/exchanges/binance-futures/index.d.ts +83 -0
  409. package/dist/exchanges/binance-futures/index.js +394 -0
  410. package/dist/exchanges/binance-futures/index.js.map +1 -0
  411. package/dist/exchanges/bybit/index.d.ts +78 -0
  412. package/dist/exchanges/bybit/index.js +379 -0
  413. package/dist/exchanges/bybit/index.js.map +1 -0
  414. package/dist/exchanges/hyperliquid/index.d.ts +594 -0
  415. package/dist/exchanges/hyperliquid/index.js +1101 -0
  416. package/dist/exchanges/hyperliquid/index.js.map +1 -0
  417. package/dist/exchanges/mexc/index.d.ts +80 -0
  418. package/dist/exchanges/mexc/index.js +389 -0
  419. package/dist/exchanges/mexc/index.js.map +1 -0
  420. package/dist/exchanges/opinion/index.d.ts +128 -0
  421. package/dist/exchanges/opinion/index.js +443 -0
  422. package/dist/exchanges/opinion/index.js.map +1 -0
  423. package/dist/exchanges/predictfun/index.d.ts +107 -0
  424. package/dist/exchanges/predictfun/index.js +398 -0
  425. package/dist/exchanges/predictfun/index.js.map +1 -0
  426. package/dist/execution/auto-redeem.d.ts +55 -0
  427. package/dist/execution/auto-redeem.js +324 -0
  428. package/dist/execution/auto-redeem.js.map +1 -0
  429. package/dist/execution/bracket-orders.d.ts +84 -0
  430. package/dist/execution/bracket-orders.js +387 -0
  431. package/dist/execution/bracket-orders.js.map +1 -0
  432. package/dist/execution/circuit-breaker.d.ts +87 -0
  433. package/dist/execution/circuit-breaker.js +274 -0
  434. package/dist/execution/circuit-breaker.js.map +1 -0
  435. package/dist/execution/dca-persistence.d.ts +47 -0
  436. package/dist/execution/dca-persistence.js +159 -0
  437. package/dist/execution/dca-persistence.js.map +1 -0
  438. package/dist/execution/dca.d.ts +60 -0
  439. package/dist/execution/dca.js +273 -0
  440. package/dist/execution/dca.js.map +1 -0
  441. package/dist/execution/futures.d.ts +162 -0
  442. package/dist/execution/futures.js +1336 -0
  443. package/dist/execution/futures.js.map +1 -0
  444. package/dist/execution/index.d.ts +346 -0
  445. package/dist/execution/index.js +2532 -0
  446. package/dist/execution/index.js.map +1 -0
  447. package/dist/execution/mev-protection.d.ts +150 -0
  448. package/dist/execution/mev-protection.js +377 -0
  449. package/dist/execution/mev-protection.js.map +1 -0
  450. package/dist/execution/order-persistence.d.ts +81 -0
  451. package/dist/execution/order-persistence.js +350 -0
  452. package/dist/execution/order-persistence.js.map +1 -0
  453. package/dist/execution/position-manager.d.ts +142 -0
  454. package/dist/execution/position-manager.js +404 -0
  455. package/dist/execution/position-manager.js.map +1 -0
  456. package/dist/execution/smart-router.d.ts +90 -0
  457. package/dist/execution/smart-router.js +323 -0
  458. package/dist/execution/smart-router.js.map +1 -0
  459. package/dist/execution/trigger-orders.d.ts +81 -0
  460. package/dist/execution/trigger-orders.js +266 -0
  461. package/dist/execution/trigger-orders.js.map +1 -0
  462. package/dist/execution/twap.d.ts +87 -0
  463. package/dist/execution/twap.js +405 -0
  464. package/dist/execution/twap.js.map +1 -0
  465. package/dist/extensions/copilot-proxy/index.d.ts +49 -0
  466. package/dist/extensions/copilot-proxy/index.js +204 -0
  467. package/dist/extensions/copilot-proxy/index.js.map +1 -0
  468. package/dist/extensions/diagnostics-otel/index.d.ts +54 -0
  469. package/dist/extensions/diagnostics-otel/index.js +290 -0
  470. package/dist/extensions/diagnostics-otel/index.js.map +1 -0
  471. package/dist/extensions/google-auth/index.d.ts +71 -0
  472. package/dist/extensions/google-auth/index.js +350 -0
  473. package/dist/extensions/google-auth/index.js.map +1 -0
  474. package/dist/extensions/index.d.ts +11 -0
  475. package/dist/extensions/index.js +29 -0
  476. package/dist/extensions/index.js.map +1 -0
  477. package/dist/extensions/llm-task/index.d.ts +80 -0
  478. package/dist/extensions/llm-task/index.js +248 -0
  479. package/dist/extensions/llm-task/index.js.map +1 -0
  480. package/dist/extensions/lobster/index.d.ts +69 -0
  481. package/dist/extensions/lobster/index.js +178 -0
  482. package/dist/extensions/lobster/index.js.map +1 -0
  483. package/dist/extensions/memory-lancedb/index.d.ts +62 -0
  484. package/dist/extensions/memory-lancedb/index.js +343 -0
  485. package/dist/extensions/memory-lancedb/index.js.map +1 -0
  486. package/dist/extensions/open-prose/index.d.ts +82 -0
  487. package/dist/extensions/open-prose/index.js +565 -0
  488. package/dist/extensions/open-prose/index.js.map +1 -0
  489. package/dist/extensions/qwen-portal/index.d.ts +48 -0
  490. package/dist/extensions/qwen-portal/index.js +161 -0
  491. package/dist/extensions/qwen-portal/index.js.map +1 -0
  492. package/dist/extensions/task-runner/index.d.ts +121 -0
  493. package/dist/extensions/task-runner/index.js +640 -0
  494. package/dist/extensions/task-runner/index.js.map +1 -0
  495. package/dist/farcaster/client.d.ts +101 -0
  496. package/dist/farcaster/client.js +282 -0
  497. package/dist/farcaster/client.js.map +1 -0
  498. package/dist/farcaster/index.d.ts +4 -0
  499. package/dist/farcaster/index.js +21 -0
  500. package/dist/farcaster/index.js.map +1 -0
  501. package/dist/feeds/acled/index.d.ts +86 -0
  502. package/dist/feeds/acled/index.js +215 -0
  503. package/dist/feeds/acled/index.js.map +1 -0
  504. package/dist/feeds/agentbets/index.d.ts +17 -0
  505. package/dist/feeds/agentbets/index.js +137 -0
  506. package/dist/feeds/agentbets/index.js.map +1 -0
  507. package/dist/feeds/betfair/index.d.ts +132 -0
  508. package/dist/feeds/betfair/index.js +640 -0
  509. package/dist/feeds/betfair/index.js.map +1 -0
  510. package/dist/feeds/crypto/index.d.ts +101 -0
  511. package/dist/feeds/crypto/index.js +506 -0
  512. package/dist/feeds/crypto/index.js.map +1 -0
  513. package/dist/feeds/crypto/whale-tracker.d.ts +138 -0
  514. package/dist/feeds/crypto/whale-tracker.js +685 -0
  515. package/dist/feeds/crypto/whale-tracker.js.map +1 -0
  516. package/dist/feeds/descriptors.d.ts +14 -0
  517. package/dist/feeds/descriptors.js +582 -0
  518. package/dist/feeds/descriptors.js.map +1 -0
  519. package/dist/feeds/drift/index.d.ts +23 -0
  520. package/dist/feeds/drift/index.js +182 -0
  521. package/dist/feeds/drift/index.js.map +1 -0
  522. package/dist/feeds/drift/trading.d.ts +75 -0
  523. package/dist/feeds/drift/trading.js +457 -0
  524. package/dist/feeds/drift/trading.js.map +1 -0
  525. package/dist/feeds/external/index.d.ts +48 -0
  526. package/dist/feeds/external/index.js +575 -0
  527. package/dist/feeds/external/index.js.map +1 -0
  528. package/dist/feeds/fred/index.d.ts +134 -0
  529. package/dist/feeds/fred/index.js +263 -0
  530. package/dist/feeds/fred/index.js.map +1 -0
  531. package/dist/feeds/freshness.d.ts +79 -0
  532. package/dist/feeds/freshness.js +259 -0
  533. package/dist/feeds/freshness.js.map +1 -0
  534. package/dist/feeds/hedgehog/index.d.ts +24 -0
  535. package/dist/feeds/hedgehog/index.js +589 -0
  536. package/dist/feeds/hedgehog/index.js.map +1 -0
  537. package/dist/feeds/hedgehog/types.d.ts +215 -0
  538. package/dist/feeds/hedgehog/types.js +7 -0
  539. package/dist/feeds/hedgehog/types.js.map +1 -0
  540. package/dist/feeds/index.d.ts +38 -0
  541. package/dist/feeds/index.js +469 -0
  542. package/dist/feeds/index.js.map +1 -0
  543. package/dist/feeds/kalshi/index.d.ts +116 -0
  544. package/dist/feeds/kalshi/index.js +970 -0
  545. package/dist/feeds/kalshi/index.js.map +1 -0
  546. package/dist/feeds/manifold/index.d.ts +15 -0
  547. package/dist/feeds/manifold/index.js +269 -0
  548. package/dist/feeds/manifold/index.js.map +1 -0
  549. package/dist/feeds/metaculus/index.d.ts +22 -0
  550. package/dist/feeds/metaculus/index.js +149 -0
  551. package/dist/feeds/metaculus/index.js.map +1 -0
  552. package/dist/feeds/news/index.d.ts +20 -0
  553. package/dist/feeds/news/index.js +308 -0
  554. package/dist/feeds/news/index.js.map +1 -0
  555. package/dist/feeds/opinion/index.d.ts +31 -0
  556. package/dist/feeds/opinion/index.js +389 -0
  557. package/dist/feeds/opinion/index.js.map +1 -0
  558. package/dist/feeds/polymarket/index.d.ts +21 -0
  559. package/dist/feeds/polymarket/index.js +501 -0
  560. package/dist/feeds/polymarket/index.js.map +1 -0
  561. package/dist/feeds/polymarket/rtds.d.ts +40 -0
  562. package/dist/feeds/polymarket/rtds.js +159 -0
  563. package/dist/feeds/polymarket/rtds.js.map +1 -0
  564. package/dist/feeds/polymarket/user-ws.d.ts +64 -0
  565. package/dist/feeds/polymarket/user-ws.js +230 -0
  566. package/dist/feeds/polymarket/user-ws.js.map +1 -0
  567. package/dist/feeds/polymarket/whale-tracker.d.ts +152 -0
  568. package/dist/feeds/polymarket/whale-tracker.js +709 -0
  569. package/dist/feeds/polymarket/whale-tracker.js.map +1 -0
  570. package/dist/feeds/predictfun/index.d.ts +24 -0
  571. package/dist/feeds/predictfun/index.js +234 -0
  572. package/dist/feeds/predictfun/index.js.map +1 -0
  573. package/dist/feeds/predictit/index.d.ts +14 -0
  574. package/dist/feeds/predictit/index.js +88 -0
  575. package/dist/feeds/predictit/index.js.map +1 -0
  576. package/dist/feeds/registry.d.ts +148 -0
  577. package/dist/feeds/registry.js +197 -0
  578. package/dist/feeds/registry.js.map +1 -0
  579. package/dist/feeds/smarkets/index.d.ts +76 -0
  580. package/dist/feeds/smarkets/index.js +415 -0
  581. package/dist/feeds/smarkets/index.js.map +1 -0
  582. package/dist/feeds/virtuals/index.d.ts +92 -0
  583. package/dist/feeds/virtuals/index.js +341 -0
  584. package/dist/feeds/virtuals/index.js.map +1 -0
  585. package/dist/feeds/weather-nws/index.d.ts +73 -0
  586. package/dist/feeds/weather-nws/index.js +162 -0
  587. package/dist/feeds/weather-nws/index.js.map +1 -0
  588. package/dist/feeds/weather-openmeteo/index.d.ts +80 -0
  589. package/dist/feeds/weather-openmeteo/index.js +197 -0
  590. package/dist/feeds/weather-openmeteo/index.js.map +1 -0
  591. package/dist/gateway/alerts-routes.d.ts +15 -0
  592. package/dist/gateway/alerts-routes.js +188 -0
  593. package/dist/gateway/alerts-routes.js.map +1 -0
  594. package/dist/gateway/alt-data-routes.d.ts +15 -0
  595. package/dist/gateway/alt-data-routes.js +67 -0
  596. package/dist/gateway/alt-data-routes.js.map +1 -0
  597. package/dist/gateway/api-routes.d.ts +39 -0
  598. package/dist/gateway/api-routes.js +1028 -0
  599. package/dist/gateway/api-routes.js.map +1 -0
  600. package/dist/gateway/audit-routes.d.ts +8 -0
  601. package/dist/gateway/audit-routes.js +61 -0
  602. package/dist/gateway/audit-routes.js.map +1 -0
  603. package/dist/gateway/bracket-routes.d.ts +12 -0
  604. package/dist/gateway/bracket-routes.js +122 -0
  605. package/dist/gateway/bracket-routes.js.map +1 -0
  606. package/dist/gateway/control-ui.d.ts +45 -0
  607. package/dist/gateway/control-ui.js +301 -0
  608. package/dist/gateway/control-ui.js.map +1 -0
  609. package/dist/gateway/copy-trading-routes.d.ts +12 -0
  610. package/dist/gateway/copy-trading-routes.js +159 -0
  611. package/dist/gateway/copy-trading-routes.js.map +1 -0
  612. package/dist/gateway/cron-routes.d.ts +14 -0
  613. package/dist/gateway/cron-routes.js +132 -0
  614. package/dist/gateway/cron-routes.js.map +1 -0
  615. package/dist/gateway/dca-routes.d.ts +8 -0
  616. package/dist/gateway/dca-routes.js +179 -0
  617. package/dist/gateway/dca-routes.js.map +1 -0
  618. package/dist/gateway/embeddings-routes.d.ts +12 -0
  619. package/dist/gateway/embeddings-routes.js +102 -0
  620. package/dist/gateway/embeddings-routes.js.map +1 -0
  621. package/dist/gateway/feeds-routes.d.ts +34 -0
  622. package/dist/gateway/feeds-routes.js +167 -0
  623. package/dist/gateway/feeds-routes.js.map +1 -0
  624. package/dist/gateway/index.d.ts +100 -0
  625. package/dist/gateway/index.js +2321 -0
  626. package/dist/gateway/index.js.map +1 -0
  627. package/dist/gateway/monitoring-routes.d.ts +12 -0
  628. package/dist/gateway/monitoring-routes.js +73 -0
  629. package/dist/gateway/monitoring-routes.js.map +1 -0
  630. package/dist/gateway/opportunity-routes.d.ts +12 -0
  631. package/dist/gateway/opportunity-routes.js +238 -0
  632. package/dist/gateway/opportunity-routes.js.map +1 -0
  633. package/dist/gateway/payments-routes.d.ts +14 -0
  634. package/dist/gateway/payments-routes.js +82 -0
  635. package/dist/gateway/payments-routes.js.map +1 -0
  636. package/dist/gateway/percolator-routes.d.ts +16 -0
  637. package/dist/gateway/percolator-routes.js +139 -0
  638. package/dist/gateway/percolator-routes.js.map +1 -0
  639. package/dist/gateway/queue-routes.d.ts +12 -0
  640. package/dist/gateway/queue-routes.js +47 -0
  641. package/dist/gateway/queue-routes.js.map +1 -0
  642. package/dist/gateway/risk-routes.d.ts +12 -0
  643. package/dist/gateway/risk-routes.js +119 -0
  644. package/dist/gateway/risk-routes.js.map +1 -0
  645. package/dist/gateway/routing-routes.d.ts +12 -0
  646. package/dist/gateway/routing-routes.js +86 -0
  647. package/dist/gateway/routing-routes.js.map +1 -0
  648. package/dist/gateway/server.d.ts +215 -0
  649. package/dist/gateway/server.js +2287 -0
  650. package/dist/gateway/server.js.map +1 -0
  651. package/dist/gateway/shield-routes.d.ts +8 -0
  652. package/dist/gateway/shield-routes.js +88 -0
  653. package/dist/gateway/shield-routes.js.map +1 -0
  654. package/dist/gateway/signal-bus.d.ts +51 -0
  655. package/dist/gateway/signal-bus.js +64 -0
  656. package/dist/gateway/signal-bus.js.map +1 -0
  657. package/dist/gateway/trigger-routes.d.ts +12 -0
  658. package/dist/gateway/trigger-routes.js +127 -0
  659. package/dist/gateway/trigger-routes.js.map +1 -0
  660. package/dist/gateway/twap-routes.d.ts +12 -0
  661. package/dist/gateway/twap-routes.js +142 -0
  662. package/dist/gateway/twap-routes.js.map +1 -0
  663. package/dist/gateway/webhooks-routes.d.ts +31 -0
  664. package/dist/gateway/webhooks-routes.js +107 -0
  665. package/dist/gateway/webhooks-routes.js.map +1 -0
  666. package/dist/gateway/whale-routes.d.ts +12 -0
  667. package/dist/gateway/whale-routes.js +204 -0
  668. package/dist/gateway/whale-routes.js.map +1 -0
  669. package/dist/history/index.d.ts +81 -0
  670. package/dist/history/index.js +362 -0
  671. package/dist/history/index.js.map +1 -0
  672. package/dist/hooks/index.d.ts +279 -0
  673. package/dist/hooks/index.js +739 -0
  674. package/dist/hooks/index.js.map +1 -0
  675. package/dist/i18n/index.d.ts +65 -0
  676. package/dist/i18n/index.js +183 -0
  677. package/dist/i18n/index.js.map +1 -0
  678. package/dist/identity/erc8004.d.ts +104 -0
  679. package/dist/identity/erc8004.js +493 -0
  680. package/dist/identity/erc8004.js.map +1 -0
  681. package/dist/identity/index.d.ts +1 -0
  682. package/dist/identity/index.js +18 -0
  683. package/dist/identity/index.js.map +1 -0
  684. package/dist/index.d.ts +7 -0
  685. package/dist/index.js +240 -0
  686. package/dist/index.js.map +1 -0
  687. package/dist/infra/index.d.ts +133 -0
  688. package/dist/infra/index.js +481 -0
  689. package/dist/infra/index.js.map +1 -0
  690. package/dist/infra/retry.d.ts +132 -0
  691. package/dist/infra/retry.js +450 -0
  692. package/dist/infra/retry.js.map +1 -0
  693. package/dist/ledger/anchor.d.ts +45 -0
  694. package/dist/ledger/anchor.js +271 -0
  695. package/dist/ledger/anchor.js.map +1 -0
  696. package/dist/ledger/hash.d.ts +26 -0
  697. package/dist/ledger/hash.js +69 -0
  698. package/dist/ledger/hash.js.map +1 -0
  699. package/dist/ledger/hooks.d.ts +107 -0
  700. package/dist/ledger/hooks.js +314 -0
  701. package/dist/ledger/hooks.js.map +1 -0
  702. package/dist/ledger/index.d.ts +67 -0
  703. package/dist/ledger/index.js +221 -0
  704. package/dist/ledger/index.js.map +1 -0
  705. package/dist/ledger/storage.d.ts +57 -0
  706. package/dist/ledger/storage.js +368 -0
  707. package/dist/ledger/storage.js.map +1 -0
  708. package/dist/ledger/types.d.ts +138 -0
  709. package/dist/ledger/types.js +16 -0
  710. package/dist/ledger/types.js.map +1 -0
  711. package/dist/link-understanding/index.d.ts +61 -0
  712. package/dist/link-understanding/index.js +320 -0
  713. package/dist/link-understanding/index.js.map +1 -0
  714. package/dist/logging/index.d.ts +50 -0
  715. package/dist/logging/index.js +255 -0
  716. package/dist/logging/index.js.map +1 -0
  717. package/dist/macos/index.d.ts +143 -0
  718. package/dist/macos/index.js +587 -0
  719. package/dist/macos/index.js.map +1 -0
  720. package/dist/markdown/index.d.ts +43 -0
  721. package/dist/markdown/index.js +305 -0
  722. package/dist/markdown/index.js.map +1 -0
  723. package/dist/market-index/index.d.ts +51 -0
  724. package/dist/market-index/index.js +553 -0
  725. package/dist/market-index/index.js.map +1 -0
  726. package/dist/mcp/index.d.ts +263 -0
  727. package/dist/mcp/index.js +940 -0
  728. package/dist/mcp/index.js.map +1 -0
  729. package/dist/mcp/installer.d.ts +11 -0
  730. package/dist/mcp/installer.js +128 -0
  731. package/dist/mcp/installer.js.map +1 -0
  732. package/dist/mcp/server.d.ts +7 -0
  733. package/dist/mcp/server.js +172 -0
  734. package/dist/mcp/server.js.map +1 -0
  735. package/dist/media/index.d.ts +119 -0
  736. package/dist/media/index.js +740 -0
  737. package/dist/media/index.js.map +1 -0
  738. package/dist/memory/context.d.ts +189 -0
  739. package/dist/memory/context.js +541 -0
  740. package/dist/memory/context.js.map +1 -0
  741. package/dist/memory/index.d.ts +74 -0
  742. package/dist/memory/index.js +352 -0
  743. package/dist/memory/index.js.map +1 -0
  744. package/dist/memory/summarizer.d.ts +10 -0
  745. package/dist/memory/summarizer.js +51 -0
  746. package/dist/memory/summarizer.js.map +1 -0
  747. package/dist/memory/tokenizer.d.ts +4 -0
  748. package/dist/memory/tokenizer.js +61 -0
  749. package/dist/memory/tokenizer.js.map +1 -0
  750. package/dist/messages/unified.d.ts +7 -0
  751. package/dist/messages/unified.js +77 -0
  752. package/dist/messages/unified.js.map +1 -0
  753. package/dist/ml-pipeline/collector.d.ts +23 -0
  754. package/dist/ml-pipeline/collector.js +176 -0
  755. package/dist/ml-pipeline/collector.js.map +1 -0
  756. package/dist/ml-pipeline/index.d.ts +21 -0
  757. package/dist/ml-pipeline/index.js +72 -0
  758. package/dist/ml-pipeline/index.js.map +1 -0
  759. package/dist/ml-pipeline/trainer.d.ts +32 -0
  760. package/dist/ml-pipeline/trainer.js +228 -0
  761. package/dist/ml-pipeline/trainer.js.map +1 -0
  762. package/dist/ml-pipeline/types.d.ts +51 -0
  763. package/dist/ml-pipeline/types.js +23 -0
  764. package/dist/ml-pipeline/types.js.map +1 -0
  765. package/dist/models/adaptive.d.ts +11 -0
  766. package/dist/models/adaptive.js +64 -0
  767. package/dist/models/adaptive.js.map +1 -0
  768. package/dist/models/failover.d.ts +51 -0
  769. package/dist/models/failover.js +151 -0
  770. package/dist/models/failover.js.map +1 -0
  771. package/dist/models/index.d.ts +7 -0
  772. package/dist/models/index.js +13 -0
  773. package/dist/models/index.js.map +1 -0
  774. package/dist/monitoring/alerts.d.ts +185 -0
  775. package/dist/monitoring/alerts.js +565 -0
  776. package/dist/monitoring/alerts.js.map +1 -0
  777. package/dist/monitoring/health.d.ts +151 -0
  778. package/dist/monitoring/health.js +423 -0
  779. package/dist/monitoring/health.js.map +1 -0
  780. package/dist/monitoring/index.d.ts +25 -0
  781. package/dist/monitoring/index.js +258 -0
  782. package/dist/monitoring/index.js.map +1 -0
  783. package/dist/monitoring/metrics.d.ts +147 -0
  784. package/dist/monitoring/metrics.js +519 -0
  785. package/dist/monitoring/metrics.js.map +1 -0
  786. package/dist/nodes/index.d.ts +81 -0
  787. package/dist/nodes/index.js +475 -0
  788. package/dist/nodes/index.js.map +1 -0
  789. package/dist/opportunity/analytics.d.ts +221 -0
  790. package/dist/opportunity/analytics.js +678 -0
  791. package/dist/opportunity/analytics.js.map +1 -0
  792. package/dist/opportunity/combinatorial.d.ts +147 -0
  793. package/dist/opportunity/combinatorial.js +765 -0
  794. package/dist/opportunity/combinatorial.js.map +1 -0
  795. package/dist/opportunity/correlation.d.ts +107 -0
  796. package/dist/opportunity/correlation.js +410 -0
  797. package/dist/opportunity/correlation.js.map +1 -0
  798. package/dist/opportunity/executor.d.ts +108 -0
  799. package/dist/opportunity/executor.js +356 -0
  800. package/dist/opportunity/executor.js.map +1 -0
  801. package/dist/opportunity/index.d.ts +285 -0
  802. package/dist/opportunity/index.js +839 -0
  803. package/dist/opportunity/index.js.map +1 -0
  804. package/dist/opportunity/links.d.ts +87 -0
  805. package/dist/opportunity/links.js +344 -0
  806. package/dist/opportunity/links.js.map +1 -0
  807. package/dist/opportunity/matching.d.ts +101 -0
  808. package/dist/opportunity/matching.js +551 -0
  809. package/dist/opportunity/matching.js.map +1 -0
  810. package/dist/opportunity/outcomes.d.ts +74 -0
  811. package/dist/opportunity/outcomes.js +321 -0
  812. package/dist/opportunity/outcomes.js.map +1 -0
  813. package/dist/opportunity/risk.d.ts +128 -0
  814. package/dist/opportunity/risk.js +381 -0
  815. package/dist/opportunity/risk.js.map +1 -0
  816. package/dist/opportunity/scoring.d.ts +151 -0
  817. package/dist/opportunity/scoring.js +421 -0
  818. package/dist/opportunity/scoring.js.map +1 -0
  819. package/dist/pairing/index.d.ts +108 -0
  820. package/dist/pairing/index.js +431 -0
  821. package/dist/pairing/index.js.map +1 -0
  822. package/dist/payments/index.d.ts +12 -0
  823. package/dist/payments/index.js +34 -0
  824. package/dist/payments/index.js.map +1 -0
  825. package/dist/payments/x402/evm.d.ts +53 -0
  826. package/dist/payments/x402/evm.js +282 -0
  827. package/dist/payments/x402/evm.js.map +1 -0
  828. package/dist/payments/x402/index.d.ts +158 -0
  829. package/dist/payments/x402/index.js +531 -0
  830. package/dist/payments/x402/index.js.map +1 -0
  831. package/dist/payments/x402/solana.d.ts +51 -0
  832. package/dist/payments/x402/solana.js +397 -0
  833. package/dist/payments/x402/solana.js.map +1 -0
  834. package/dist/percolator/accounts.d.ts +21 -0
  835. package/dist/percolator/accounts.js +76 -0
  836. package/dist/percolator/accounts.js.map +1 -0
  837. package/dist/percolator/encode.d.ts +14 -0
  838. package/dist/percolator/encode.js +90 -0
  839. package/dist/percolator/encode.js.map +1 -0
  840. package/dist/percolator/execution.d.ts +29 -0
  841. package/dist/percolator/execution.js +239 -0
  842. package/dist/percolator/execution.js.map +1 -0
  843. package/dist/percolator/feed.d.ts +15 -0
  844. package/dist/percolator/feed.js +160 -0
  845. package/dist/percolator/feed.js.map +1 -0
  846. package/dist/percolator/index.d.ts +20 -0
  847. package/dist/percolator/index.js +24 -0
  848. package/dist/percolator/index.js.map +1 -0
  849. package/dist/percolator/instructions.d.ts +29 -0
  850. package/dist/percolator/instructions.js +52 -0
  851. package/dist/percolator/instructions.js.map +1 -0
  852. package/dist/percolator/keeper.d.ts +11 -0
  853. package/dist/percolator/keeper.js +83 -0
  854. package/dist/percolator/keeper.js.map +1 -0
  855. package/dist/percolator/pda.d.ts +15 -0
  856. package/dist/percolator/pda.js +26 -0
  857. package/dist/percolator/pda.js.map +1 -0
  858. package/dist/percolator/slab.d.ts +122 -0
  859. package/dist/percolator/slab.js +325 -0
  860. package/dist/percolator/slab.js.map +1 -0
  861. package/dist/percolator/tx.d.ts +27 -0
  862. package/dist/percolator/tx.js +77 -0
  863. package/dist/percolator/tx.js.map +1 -0
  864. package/dist/percolator/types.d.ts +51 -0
  865. package/dist/percolator/types.js +9 -0
  866. package/dist/percolator/types.js.map +1 -0
  867. package/dist/permissions/index.d.ts +262 -0
  868. package/dist/permissions/index.js +929 -0
  869. package/dist/permissions/index.js.map +1 -0
  870. package/dist/plugins/index.d.ts +158 -0
  871. package/dist/plugins/index.js +444 -0
  872. package/dist/plugins/index.js.map +1 -0
  873. package/dist/portfolio/index.d.ts +170 -0
  874. package/dist/portfolio/index.js +970 -0
  875. package/dist/portfolio/index.js.map +1 -0
  876. package/dist/presence/index.d.ts +34 -0
  877. package/dist/presence/index.js +124 -0
  878. package/dist/presence/index.js.map +1 -0
  879. package/dist/process/index.d.ts +82 -0
  880. package/dist/process/index.js +402 -0
  881. package/dist/process/index.js.map +1 -0
  882. package/dist/providers/discovery.d.ts +209 -0
  883. package/dist/providers/discovery.js +751 -0
  884. package/dist/providers/discovery.js.map +1 -0
  885. package/dist/providers/health.d.ts +27 -0
  886. package/dist/providers/health.js +80 -0
  887. package/dist/providers/health.js.map +1 -0
  888. package/dist/providers/index.d.ts +154 -0
  889. package/dist/providers/index.js +897 -0
  890. package/dist/providers/index.js.map +1 -0
  891. package/dist/queue/index.d.ts +36 -0
  892. package/dist/queue/index.js +146 -0
  893. package/dist/queue/index.js.map +1 -0
  894. package/dist/queue/jobs/index.d.ts +11 -0
  895. package/dist/queue/jobs/index.js +32 -0
  896. package/dist/queue/jobs/index.js.map +1 -0
  897. package/dist/queue/jobs/producer.d.ts +43 -0
  898. package/dist/queue/jobs/producer.js +233 -0
  899. package/dist/queue/jobs/producer.js.map +1 -0
  900. package/dist/queue/jobs/types.d.ts +128 -0
  901. package/dist/queue/jobs/types.js +14 -0
  902. package/dist/queue/jobs/types.js.map +1 -0
  903. package/dist/queue/jobs/worker.d.ts +22 -0
  904. package/dist/queue/jobs/worker.js +220 -0
  905. package/dist/queue/jobs/worker.js.map +1 -0
  906. package/dist/remote/index.d.ts +136 -0
  907. package/dist/remote/index.js +456 -0
  908. package/dist/remote/index.js.map +1 -0
  909. package/dist/risk/circuit-breaker.d.ts +99 -0
  910. package/dist/risk/circuit-breaker.js +300 -0
  911. package/dist/risk/circuit-breaker.js.map +1 -0
  912. package/dist/risk/dashboard.d.ts +69 -0
  913. package/dist/risk/dashboard.js +127 -0
  914. package/dist/risk/dashboard.js.map +1 -0
  915. package/dist/risk/engine.d.ts +128 -0
  916. package/dist/risk/engine.js +311 -0
  917. package/dist/risk/engine.js.map +1 -0
  918. package/dist/risk/index.d.ts +10 -0
  919. package/dist/risk/index.js +38 -0
  920. package/dist/risk/index.js.map +1 -0
  921. package/dist/risk/stress.d.ts +70 -0
  922. package/dist/risk/stress.js +215 -0
  923. package/dist/risk/stress.js.map +1 -0
  924. package/dist/risk/var.d.ts +72 -0
  925. package/dist/risk/var.js +173 -0
  926. package/dist/risk/var.js.map +1 -0
  927. package/dist/risk/volatility.d.ts +61 -0
  928. package/dist/risk/volatility.js +132 -0
  929. package/dist/risk/volatility.js.map +1 -0
  930. package/dist/routing/index.d.ts +116 -0
  931. package/dist/routing/index.js +371 -0
  932. package/dist/routing/index.js.map +1 -0
  933. package/dist/search/index.d.ts +30 -0
  934. package/dist/search/index.js +129 -0
  935. package/dist/search/index.js.map +1 -0
  936. package/dist/security/address-checker.d.ts +6 -0
  937. package/dist/security/address-checker.js +213 -0
  938. package/dist/security/address-checker.js.map +1 -0
  939. package/dist/security/code-scanner.d.ts +3 -0
  940. package/dist/security/code-scanner.js +190 -0
  941. package/dist/security/code-scanner.js.map +1 -0
  942. package/dist/security/index.d.ts +176 -0
  943. package/dist/security/index.js +498 -0
  944. package/dist/security/index.js.map +1 -0
  945. package/dist/security/sanitizer.d.ts +2 -0
  946. package/dist/security/sanitizer.js +135 -0
  947. package/dist/security/sanitizer.js.map +1 -0
  948. package/dist/security/scam-db.d.ts +5 -0
  949. package/dist/security/scam-db.js +116 -0
  950. package/dist/security/scam-db.js.map +1 -0
  951. package/dist/security/shield.d.ts +12 -0
  952. package/dist/security/shield.js +80 -0
  953. package/dist/security/shield.js.map +1 -0
  954. package/dist/security/tx-validator.d.ts +5 -0
  955. package/dist/security/tx-validator.js +115 -0
  956. package/dist/security/tx-validator.js.map +1 -0
  957. package/dist/security/types.d.ts +84 -0
  958. package/dist/security/types.js +6 -0
  959. package/dist/security/types.js.map +1 -0
  960. package/dist/services/alt-data/feeds/fear-greed.d.ts +14 -0
  961. package/dist/services/alt-data/feeds/fear-greed.js +81 -0
  962. package/dist/services/alt-data/feeds/fear-greed.js.map +1 -0
  963. package/dist/services/alt-data/feeds/funding-rates.d.ts +13 -0
  964. package/dist/services/alt-data/feeds/funding-rates.js +90 -0
  965. package/dist/services/alt-data/feeds/funding-rates.js.map +1 -0
  966. package/dist/services/alt-data/feeds/reddit.d.ts +13 -0
  967. package/dist/services/alt-data/feeds/reddit.js +112 -0
  968. package/dist/services/alt-data/feeds/reddit.js.map +1 -0
  969. package/dist/services/alt-data/index.d.ts +31 -0
  970. package/dist/services/alt-data/index.js +278 -0
  971. package/dist/services/alt-data/index.js.map +1 -0
  972. package/dist/services/alt-data/market-matcher.d.ts +29 -0
  973. package/dist/services/alt-data/market-matcher.js +157 -0
  974. package/dist/services/alt-data/market-matcher.js.map +1 -0
  975. package/dist/services/alt-data/sentiment.d.ts +11 -0
  976. package/dist/services/alt-data/sentiment.js +277 -0
  977. package/dist/services/alt-data/sentiment.js.map +1 -0
  978. package/dist/services/alt-data/types.d.ts +86 -0
  979. package/dist/services/alt-data/types.js +9 -0
  980. package/dist/services/alt-data/types.js.map +1 -0
  981. package/dist/services/feature-engineering/accessor.d.ts +19 -0
  982. package/dist/services/feature-engineering/accessor.js +31 -0
  983. package/dist/services/feature-engineering/accessor.js.map +1 -0
  984. package/dist/services/feature-engineering/index.d.ts +15 -0
  985. package/dist/services/feature-engineering/index.js +345 -0
  986. package/dist/services/feature-engineering/index.js.map +1 -0
  987. package/dist/services/feature-engineering/indicators.d.ts +90 -0
  988. package/dist/services/feature-engineering/indicators.js +254 -0
  989. package/dist/services/feature-engineering/indicators.js.map +1 -0
  990. package/dist/services/feature-engineering/rolling-window.d.ts +89 -0
  991. package/dist/services/feature-engineering/rolling-window.js +173 -0
  992. package/dist/services/feature-engineering/rolling-window.js.map +1 -0
  993. package/dist/services/feature-engineering/thresholds.d.ts +137 -0
  994. package/dist/services/feature-engineering/thresholds.js +280 -0
  995. package/dist/services/feature-engineering/thresholds.js.map +1 -0
  996. package/dist/services/feature-engineering/types.d.ts +138 -0
  997. package/dist/services/feature-engineering/types.js +6 -0
  998. package/dist/services/feature-engineering/types.js.map +1 -0
  999. package/dist/services/tick-recorder/index.d.ts +12 -0
  1000. package/dist/services/tick-recorder/index.js +200 -0
  1001. package/dist/services/tick-recorder/index.js.map +1 -0
  1002. package/dist/services/tick-recorder/queries.d.ts +46 -0
  1003. package/dist/services/tick-recorder/queries.js +291 -0
  1004. package/dist/services/tick-recorder/queries.js.map +1 -0
  1005. package/dist/services/tick-recorder/schema.d.ts +27 -0
  1006. package/dist/services/tick-recorder/schema.js +185 -0
  1007. package/dist/services/tick-recorder/schema.js.map +1 -0
  1008. package/dist/services/tick-recorder/timescale.d.ts +27 -0
  1009. package/dist/services/tick-recorder/timescale.js +105 -0
  1010. package/dist/services/tick-recorder/timescale.js.map +1 -0
  1011. package/dist/services/tick-recorder/types.d.ts +113 -0
  1012. package/dist/services/tick-recorder/types.js +7 -0
  1013. package/dist/services/tick-recorder/types.js.map +1 -0
  1014. package/dist/services/tick-streamer/index.d.ts +12 -0
  1015. package/dist/services/tick-streamer/index.js +317 -0
  1016. package/dist/services/tick-streamer/index.js.map +1 -0
  1017. package/dist/services/tick-streamer/types.d.ts +134 -0
  1018. package/dist/services/tick-streamer/types.js +6 -0
  1019. package/dist/services/tick-streamer/types.js.map +1 -0
  1020. package/dist/session/index.d.ts +147 -0
  1021. package/dist/session/index.js +429 -0
  1022. package/dist/session/index.js.map +1 -0
  1023. package/dist/sessions/index.d.ts +69 -0
  1024. package/dist/sessions/index.js +447 -0
  1025. package/dist/sessions/index.js.map +1 -0
  1026. package/dist/signal-router/index.d.ts +2 -0
  1027. package/dist/signal-router/index.js +6 -0
  1028. package/dist/signal-router/index.js.map +1 -0
  1029. package/dist/signal-router/router.d.ts +25 -0
  1030. package/dist/signal-router/router.js +391 -0
  1031. package/dist/signal-router/router.js.map +1 -0
  1032. package/dist/signal-router/types.d.ts +64 -0
  1033. package/dist/signal-router/types.js +9 -0
  1034. package/dist/signal-router/types.js.map +1 -0
  1035. package/dist/skills/bundled/acp/index.d.ts +25 -0
  1036. package/dist/skills/bundled/acp/index.js +472 -0
  1037. package/dist/skills/bundled/acp/index.js.map +1 -0
  1038. package/dist/skills/bundled/agentbets/index.d.ts +15 -0
  1039. package/dist/skills/bundled/agentbets/index.js +168 -0
  1040. package/dist/skills/bundled/agentbets/index.js.map +1 -0
  1041. package/dist/skills/bundled/ai-strategy/index.d.ts +21 -0
  1042. package/dist/skills/bundled/ai-strategy/index.js +647 -0
  1043. package/dist/skills/bundled/ai-strategy/index.js.map +1 -0
  1044. package/dist/skills/bundled/alerts/index.d.ts +20 -0
  1045. package/dist/skills/bundled/alerts/index.js +249 -0
  1046. package/dist/skills/bundled/alerts/index.js.map +1 -0
  1047. package/dist/skills/bundled/analytics/index.d.ts +17 -0
  1048. package/dist/skills/bundled/analytics/index.js +112 -0
  1049. package/dist/skills/bundled/analytics/index.js.map +1 -0
  1050. package/dist/skills/bundled/arbitrage/index.d.ts +24 -0
  1051. package/dist/skills/bundled/arbitrage/index.js +253 -0
  1052. package/dist/skills/bundled/arbitrage/index.js.map +1 -0
  1053. package/dist/skills/bundled/auto-reply/index.d.ts +18 -0
  1054. package/dist/skills/bundled/auto-reply/index.js +215 -0
  1055. package/dist/skills/bundled/auto-reply/index.js.map +1 -0
  1056. package/dist/skills/bundled/automation/index.d.ts +19 -0
  1057. package/dist/skills/bundled/automation/index.js +160 -0
  1058. package/dist/skills/bundled/automation/index.js.map +1 -0
  1059. package/dist/skills/bundled/backtest/index.d.ts +18 -0
  1060. package/dist/skills/bundled/backtest/index.js +250 -0
  1061. package/dist/skills/bundled/backtest/index.js.map +1 -0
  1062. package/dist/skills/bundled/bags/index.d.ts +49 -0
  1063. package/dist/skills/bundled/bags/index.js +1069 -0
  1064. package/dist/skills/bundled/bags/index.js.map +1 -0
  1065. package/dist/skills/bundled/bankr/index.d.ts +161 -0
  1066. package/dist/skills/bundled/bankr/index.js +271 -0
  1067. package/dist/skills/bundled/bankr/index.js.map +1 -0
  1068. package/dist/skills/bundled/betfair/index.d.ts +24 -0
  1069. package/dist/skills/bundled/betfair/index.js +511 -0
  1070. package/dist/skills/bundled/betfair/index.js.map +1 -0
  1071. package/dist/skills/bundled/binance-futures/index.d.ts +15 -0
  1072. package/dist/skills/bundled/binance-futures/index.js +485 -0
  1073. package/dist/skills/bundled/binance-futures/index.js.map +1 -0
  1074. package/dist/skills/bundled/botchan/index.d.ts +130 -0
  1075. package/dist/skills/bundled/botchan/index.js +427 -0
  1076. package/dist/skills/bundled/botchan/index.js.map +1 -0
  1077. package/dist/skills/bundled/bridge/index.d.ts +17 -0
  1078. package/dist/skills/bundled/bridge/index.js +297 -0
  1079. package/dist/skills/bundled/bridge/index.js.map +1 -0
  1080. package/dist/skills/bundled/bybit-futures/index.d.ts +15 -0
  1081. package/dist/skills/bundled/bybit-futures/index.js +380 -0
  1082. package/dist/skills/bundled/bybit-futures/index.js.map +1 -0
  1083. package/dist/skills/bundled/clanker/index.d.ts +236 -0
  1084. package/dist/skills/bundled/clanker/index.js +759 -0
  1085. package/dist/skills/bundled/clanker/index.js.map +1 -0
  1086. package/dist/skills/bundled/copy-trading/index.d.ts +20 -0
  1087. package/dist/skills/bundled/copy-trading/index.js +213 -0
  1088. package/dist/skills/bundled/copy-trading/index.js.map +1 -0
  1089. package/dist/skills/bundled/copy-trading-solana/index.d.ts +21 -0
  1090. package/dist/skills/bundled/copy-trading-solana/index.js +421 -0
  1091. package/dist/skills/bundled/copy-trading-solana/index.js.map +1 -0
  1092. package/dist/skills/bundled/credentials/index.d.ts +17 -0
  1093. package/dist/skills/bundled/credentials/index.js +137 -0
  1094. package/dist/skills/bundled/credentials/index.js.map +1 -0
  1095. package/dist/skills/bundled/crypto-hft/index.d.ts +26 -0
  1096. package/dist/skills/bundled/crypto-hft/index.js +361 -0
  1097. package/dist/skills/bundled/crypto-hft/index.js.map +1 -0
  1098. package/dist/skills/bundled/dca/index.d.ts +26 -0
  1099. package/dist/skills/bundled/dca/index.js +1342 -0
  1100. package/dist/skills/bundled/dca/index.js.map +1 -0
  1101. package/dist/skills/bundled/divergence/index.d.ts +19 -0
  1102. package/dist/skills/bundled/divergence/index.js +272 -0
  1103. package/dist/skills/bundled/divergence/index.js.map +1 -0
  1104. package/dist/skills/bundled/doctor/index.d.ts +18 -0
  1105. package/dist/skills/bundled/doctor/index.js +78 -0
  1106. package/dist/skills/bundled/doctor/index.js.map +1 -0
  1107. package/dist/skills/bundled/drift/index.d.ts +13 -0
  1108. package/dist/skills/bundled/drift/index.js +378 -0
  1109. package/dist/skills/bundled/drift/index.js.map +1 -0
  1110. package/dist/skills/bundled/drift-sdk/index.d.ts +17 -0
  1111. package/dist/skills/bundled/drift-sdk/index.js +501 -0
  1112. package/dist/skills/bundled/drift-sdk/index.js.map +1 -0
  1113. package/dist/skills/bundled/edge/index.d.ts +16 -0
  1114. package/dist/skills/bundled/edge/index.js +91 -0
  1115. package/dist/skills/bundled/edge/index.js.map +1 -0
  1116. package/dist/skills/bundled/embeddings/index.d.ts +19 -0
  1117. package/dist/skills/bundled/embeddings/index.js +215 -0
  1118. package/dist/skills/bundled/embeddings/index.js.map +1 -0
  1119. package/dist/skills/bundled/endaoment/index.d.ts +105 -0
  1120. package/dist/skills/bundled/endaoment/index.js +285 -0
  1121. package/dist/skills/bundled/endaoment/index.js.map +1 -0
  1122. package/dist/skills/bundled/ens/index.d.ts +151 -0
  1123. package/dist/skills/bundled/ens/index.js +278 -0
  1124. package/dist/skills/bundled/ens/index.js.map +1 -0
  1125. package/dist/skills/bundled/erc8004/index.d.ts +123 -0
  1126. package/dist/skills/bundled/erc8004/index.js +301 -0
  1127. package/dist/skills/bundled/erc8004/index.js.map +1 -0
  1128. package/dist/skills/bundled/execution/index.d.ts +18 -0
  1129. package/dist/skills/bundled/execution/index.js +358 -0
  1130. package/dist/skills/bundled/execution/index.js.map +1 -0
  1131. package/dist/skills/bundled/farcaster/index.d.ts +121 -0
  1132. package/dist/skills/bundled/farcaster/index.js +314 -0
  1133. package/dist/skills/bundled/farcaster/index.js.map +1 -0
  1134. package/dist/skills/bundled/features/index.d.ts +17 -0
  1135. package/dist/skills/bundled/features/index.js +305 -0
  1136. package/dist/skills/bundled/features/index.js.map +1 -0
  1137. package/dist/skills/bundled/feeds/index.d.ts +26 -0
  1138. package/dist/skills/bundled/feeds/index.js +462 -0
  1139. package/dist/skills/bundled/feeds/index.js.map +1 -0
  1140. package/dist/skills/bundled/harden/index.d.ts +55 -0
  1141. package/dist/skills/bundled/harden/index.js +510 -0
  1142. package/dist/skills/bundled/harden/index.js.map +1 -0
  1143. package/dist/skills/bundled/history/index.d.ts +21 -0
  1144. package/dist/skills/bundled/history/index.js +195 -0
  1145. package/dist/skills/bundled/history/index.js.map +1 -0
  1146. package/dist/skills/bundled/hyperliquid/index.d.ts +19 -0
  1147. package/dist/skills/bundled/hyperliquid/index.js +1280 -0
  1148. package/dist/skills/bundled/hyperliquid/index.js.map +1 -0
  1149. package/dist/skills/bundled/identity/index.d.ts +17 -0
  1150. package/dist/skills/bundled/identity/index.js +223 -0
  1151. package/dist/skills/bundled/identity/index.js.map +1 -0
  1152. package/dist/skills/bundled/integrations/index.d.ts +17 -0
  1153. package/dist/skills/bundled/integrations/index.js +138 -0
  1154. package/dist/skills/bundled/integrations/index.js.map +1 -0
  1155. package/dist/skills/bundled/jupiter/index.d.ts +41 -0
  1156. package/dist/skills/bundled/jupiter/index.js +872 -0
  1157. package/dist/skills/bundled/jupiter/index.js.map +1 -0
  1158. package/dist/skills/bundled/kamino/index.d.ts +33 -0
  1159. package/dist/skills/bundled/kamino/index.js +578 -0
  1160. package/dist/skills/bundled/kamino/index.js.map +1 -0
  1161. package/dist/skills/bundled/ledger/index.d.ts +14 -0
  1162. package/dist/skills/bundled/ledger/index.js +186 -0
  1163. package/dist/skills/bundled/ledger/index.js.map +1 -0
  1164. package/dist/skills/bundled/market-index/index.d.ts +18 -0
  1165. package/dist/skills/bundled/market-index/index.js +182 -0
  1166. package/dist/skills/bundled/market-index/index.js.map +1 -0
  1167. package/dist/skills/bundled/markets/index.d.ts +16 -0
  1168. package/dist/skills/bundled/markets/index.js +95 -0
  1169. package/dist/skills/bundled/markets/index.js.map +1 -0
  1170. package/dist/skills/bundled/mcp/index.d.ts +19 -0
  1171. package/dist/skills/bundled/mcp/index.js +212 -0
  1172. package/dist/skills/bundled/mcp/index.js.map +1 -0
  1173. package/dist/skills/bundled/memory/index.d.ts +20 -0
  1174. package/dist/skills/bundled/memory/index.js +210 -0
  1175. package/dist/skills/bundled/memory/index.js.map +1 -0
  1176. package/dist/skills/bundled/metaculus/index.d.ts +17 -0
  1177. package/dist/skills/bundled/metaculus/index.js +168 -0
  1178. package/dist/skills/bundled/metaculus/index.js.map +1 -0
  1179. package/dist/skills/bundled/meteora/index.d.ts +39 -0
  1180. package/dist/skills/bundled/meteora/index.js +837 -0
  1181. package/dist/skills/bundled/meteora/index.js.map +1 -0
  1182. package/dist/skills/bundled/meteora-dbc/index.d.ts +33 -0
  1183. package/dist/skills/bundled/meteora-dbc/index.js +993 -0
  1184. package/dist/skills/bundled/meteora-dbc/index.js.map +1 -0
  1185. package/dist/skills/bundled/metrics/index.d.ts +18 -0
  1186. package/dist/skills/bundled/metrics/index.js +91 -0
  1187. package/dist/skills/bundled/metrics/index.js.map +1 -0
  1188. package/dist/skills/bundled/mev/index.d.ts +17 -0
  1189. package/dist/skills/bundled/mev/index.js +108 -0
  1190. package/dist/skills/bundled/mev/index.js.map +1 -0
  1191. package/dist/skills/bundled/mexc-futures/index.d.ts +16 -0
  1192. package/dist/skills/bundled/mexc-futures/index.js +389 -0
  1193. package/dist/skills/bundled/mexc-futures/index.js.map +1 -0
  1194. package/dist/skills/bundled/mm/index.d.ts +18 -0
  1195. package/dist/skills/bundled/mm/index.js +315 -0
  1196. package/dist/skills/bundled/mm/index.js.map +1 -0
  1197. package/dist/skills/bundled/monitoring/index.d.ts +18 -0
  1198. package/dist/skills/bundled/monitoring/index.js +146 -0
  1199. package/dist/skills/bundled/monitoring/index.js.map +1 -0
  1200. package/dist/skills/bundled/news/index.d.ts +17 -0
  1201. package/dist/skills/bundled/news/index.js +161 -0
  1202. package/dist/skills/bundled/news/index.js.map +1 -0
  1203. package/dist/skills/bundled/onchainkit/index.d.ts +92 -0
  1204. package/dist/skills/bundled/onchainkit/index.js +429 -0
  1205. package/dist/skills/bundled/onchainkit/index.js.map +1 -0
  1206. package/dist/skills/bundled/opinion/index.d.ts +12 -0
  1207. package/dist/skills/bundled/opinion/index.js +429 -0
  1208. package/dist/skills/bundled/opinion/index.js.map +1 -0
  1209. package/dist/skills/bundled/opportunity/index.d.ts +25 -0
  1210. package/dist/skills/bundled/opportunity/index.js +289 -0
  1211. package/dist/skills/bundled/opportunity/index.js.map +1 -0
  1212. package/dist/skills/bundled/orca/index.d.ts +12 -0
  1213. package/dist/skills/bundled/orca/index.js +663 -0
  1214. package/dist/skills/bundled/orca/index.js.map +1 -0
  1215. package/dist/skills/bundled/pairing/index.d.ts +24 -0
  1216. package/dist/skills/bundled/pairing/index.js +228 -0
  1217. package/dist/skills/bundled/pairing/index.js.map +1 -0
  1218. package/dist/skills/bundled/percolator/index.d.ts +20 -0
  1219. package/dist/skills/bundled/percolator/index.js +229 -0
  1220. package/dist/skills/bundled/percolator/index.js.map +1 -0
  1221. package/dist/skills/bundled/permissions/index.d.ts +21 -0
  1222. package/dist/skills/bundled/permissions/index.js +204 -0
  1223. package/dist/skills/bundled/permissions/index.js.map +1 -0
  1224. package/dist/skills/bundled/plugins/index.d.ts +20 -0
  1225. package/dist/skills/bundled/plugins/index.js +209 -0
  1226. package/dist/skills/bundled/plugins/index.js.map +1 -0
  1227. package/dist/skills/bundled/portfolio/index.d.ts +20 -0
  1228. package/dist/skills/bundled/portfolio/index.js +367 -0
  1229. package/dist/skills/bundled/portfolio/index.js.map +1 -0
  1230. package/dist/skills/bundled/portfolio-sync/index.d.ts +17 -0
  1231. package/dist/skills/bundled/portfolio-sync/index.js +116 -0
  1232. package/dist/skills/bundled/portfolio-sync/index.js.map +1 -0
  1233. package/dist/skills/bundled/positions/index.d.ts +18 -0
  1234. package/dist/skills/bundled/positions/index.js +161 -0
  1235. package/dist/skills/bundled/positions/index.js.map +1 -0
  1236. package/dist/skills/bundled/predictfun/index.d.ts +13 -0
  1237. package/dist/skills/bundled/predictfun/index.js +612 -0
  1238. package/dist/skills/bundled/predictfun/index.js.map +1 -0
  1239. package/dist/skills/bundled/predictit/index.d.ts +16 -0
  1240. package/dist/skills/bundled/predictit/index.js +138 -0
  1241. package/dist/skills/bundled/predictit/index.js.map +1 -0
  1242. package/dist/skills/bundled/presence/index.d.ts +18 -0
  1243. package/dist/skills/bundled/presence/index.js +151 -0
  1244. package/dist/skills/bundled/presence/index.js.map +1 -0
  1245. package/dist/skills/bundled/processes/index.d.ts +17 -0
  1246. package/dist/skills/bundled/processes/index.js +121 -0
  1247. package/dist/skills/bundled/processes/index.js.map +1 -0
  1248. package/dist/skills/bundled/pump-swarm/index.d.ts +16 -0
  1249. package/dist/skills/bundled/pump-swarm/index.js +2235 -0
  1250. package/dist/skills/bundled/pump-swarm/index.js.map +1 -0
  1251. package/dist/skills/bundled/pumpfun/index.d.ts +47 -0
  1252. package/dist/skills/bundled/pumpfun/index.js +1400 -0
  1253. package/dist/skills/bundled/pumpfun/index.js.map +1 -0
  1254. package/dist/skills/bundled/qmd/index.d.ts +18 -0
  1255. package/dist/skills/bundled/qmd/index.js +116 -0
  1256. package/dist/skills/bundled/qmd/index.js.map +1 -0
  1257. package/dist/skills/bundled/qrcoin/index.d.ts +92 -0
  1258. package/dist/skills/bundled/qrcoin/index.js +328 -0
  1259. package/dist/skills/bundled/qrcoin/index.js.map +1 -0
  1260. package/dist/skills/bundled/raydium/index.d.ts +35 -0
  1261. package/dist/skills/bundled/raydium/index.js +695 -0
  1262. package/dist/skills/bundled/raydium/index.js.map +1 -0
  1263. package/dist/skills/bundled/remote/index.d.ts +19 -0
  1264. package/dist/skills/bundled/remote/index.js +186 -0
  1265. package/dist/skills/bundled/remote/index.js.map +1 -0
  1266. package/dist/skills/bundled/research/index.d.ts +17 -0
  1267. package/dist/skills/bundled/research/index.js +185 -0
  1268. package/dist/skills/bundled/research/index.js.map +1 -0
  1269. package/dist/skills/bundled/risk/index.d.ts +31 -0
  1270. package/dist/skills/bundled/risk/index.js +379 -0
  1271. package/dist/skills/bundled/risk/index.js.map +1 -0
  1272. package/dist/skills/bundled/router/index.d.ts +17 -0
  1273. package/dist/skills/bundled/router/index.js +160 -0
  1274. package/dist/skills/bundled/router/index.js.map +1 -0
  1275. package/dist/skills/bundled/routing/index.d.ts +23 -0
  1276. package/dist/skills/bundled/routing/index.js +257 -0
  1277. package/dist/skills/bundled/routing/index.js.map +1 -0
  1278. package/dist/skills/bundled/sandbox/index.d.ts +18 -0
  1279. package/dist/skills/bundled/sandbox/index.js +119 -0
  1280. package/dist/skills/bundled/sandbox/index.js.map +1 -0
  1281. package/dist/skills/bundled/search-config/index.d.ts +18 -0
  1282. package/dist/skills/bundled/search-config/index.js +170 -0
  1283. package/dist/skills/bundled/search-config/index.js.map +1 -0
  1284. package/dist/skills/bundled/sessions/index.d.ts +29 -0
  1285. package/dist/skills/bundled/sessions/index.js +193 -0
  1286. package/dist/skills/bundled/sessions/index.js.map +1 -0
  1287. package/dist/skills/bundled/shield/index.d.ts +22 -0
  1288. package/dist/skills/bundled/shield/index.js +245 -0
  1289. package/dist/skills/bundled/shield/index.js.map +1 -0
  1290. package/dist/skills/bundled/signals/index.d.ts +24 -0
  1291. package/dist/skills/bundled/signals/index.js +776 -0
  1292. package/dist/skills/bundled/signals/index.js.map +1 -0
  1293. package/dist/skills/bundled/sizing/index.d.ts +16 -0
  1294. package/dist/skills/bundled/sizing/index.js +168 -0
  1295. package/dist/skills/bundled/sizing/index.js.map +1 -0
  1296. package/dist/skills/bundled/slippage/index.d.ts +16 -0
  1297. package/dist/skills/bundled/slippage/index.js +111 -0
  1298. package/dist/skills/bundled/slippage/index.js.map +1 -0
  1299. package/dist/skills/bundled/smarkets/index.d.ts +23 -0
  1300. package/dist/skills/bundled/smarkets/index.js +473 -0
  1301. package/dist/skills/bundled/smarkets/index.js.map +1 -0
  1302. package/dist/skills/bundled/strategy/index.d.ts +18 -0
  1303. package/dist/skills/bundled/strategy/index.js +168 -0
  1304. package/dist/skills/bundled/strategy/index.js.map +1 -0
  1305. package/dist/skills/bundled/streaming/index.d.ts +19 -0
  1306. package/dist/skills/bundled/streaming/index.js +147 -0
  1307. package/dist/skills/bundled/streaming/index.js.map +1 -0
  1308. package/dist/skills/bundled/tailscale/index.d.ts +18 -0
  1309. package/dist/skills/bundled/tailscale/index.js +173 -0
  1310. package/dist/skills/bundled/tailscale/index.js.map +1 -0
  1311. package/dist/skills/bundled/ticks/index.d.ts +17 -0
  1312. package/dist/skills/bundled/ticks/index.js +287 -0
  1313. package/dist/skills/bundled/ticks/index.js.map +1 -0
  1314. package/dist/skills/bundled/token-security/index.d.ts +19 -0
  1315. package/dist/skills/bundled/token-security/index.js +138 -0
  1316. package/dist/skills/bundled/token-security/index.js.map +1 -0
  1317. package/dist/skills/bundled/trading-evm/index.d.ts +19 -0
  1318. package/dist/skills/bundled/trading-evm/index.js +302 -0
  1319. package/dist/skills/bundled/trading-evm/index.js.map +1 -0
  1320. package/dist/skills/bundled/trading-futures/index.d.ts +14 -0
  1321. package/dist/skills/bundled/trading-futures/index.js +874 -0
  1322. package/dist/skills/bundled/trading-futures/index.js.map +1 -0
  1323. package/dist/skills/bundled/trading-kalshi/index.d.ts +36 -0
  1324. package/dist/skills/bundled/trading-kalshi/index.js +1199 -0
  1325. package/dist/skills/bundled/trading-kalshi/index.js.map +1 -0
  1326. package/dist/skills/bundled/trading-manifold/index.d.ts +23 -0
  1327. package/dist/skills/bundled/trading-manifold/index.js +391 -0
  1328. package/dist/skills/bundled/trading-manifold/index.js.map +1 -0
  1329. package/dist/skills/bundled/trading-polymarket/index.d.ts +27 -0
  1330. package/dist/skills/bundled/trading-polymarket/index.js +1321 -0
  1331. package/dist/skills/bundled/trading-polymarket/index.js.map +1 -0
  1332. package/dist/skills/bundled/trading-solana/index.d.ts +19 -0
  1333. package/dist/skills/bundled/trading-solana/index.js +383 -0
  1334. package/dist/skills/bundled/trading-solana/index.js.map +1 -0
  1335. package/dist/skills/bundled/trading-system/index.d.ts +22 -0
  1336. package/dist/skills/bundled/trading-system/index.js +355 -0
  1337. package/dist/skills/bundled/trading-system/index.js.map +1 -0
  1338. package/dist/skills/bundled/triggers/index.d.ts +18 -0
  1339. package/dist/skills/bundled/triggers/index.js +172 -0
  1340. package/dist/skills/bundled/triggers/index.js.map +1 -0
  1341. package/dist/skills/bundled/tts/index.d.ts +16 -0
  1342. package/dist/skills/bundled/tts/index.js +150 -0
  1343. package/dist/skills/bundled/tts/index.js.map +1 -0
  1344. package/dist/skills/bundled/tweet-ideas/index.d.ts +20 -0
  1345. package/dist/skills/bundled/tweet-ideas/index.js +470 -0
  1346. package/dist/skills/bundled/tweet-ideas/index.js.map +1 -0
  1347. package/dist/skills/bundled/usage/index.d.ts +17 -0
  1348. package/dist/skills/bundled/usage/index.js +145 -0
  1349. package/dist/skills/bundled/usage/index.js.map +1 -0
  1350. package/dist/skills/bundled/veil/index.d.ts +79 -0
  1351. package/dist/skills/bundled/veil/index.js +322 -0
  1352. package/dist/skills/bundled/veil/index.js.map +1 -0
  1353. package/dist/skills/bundled/verify/index.d.ts +20 -0
  1354. package/dist/skills/bundled/verify/index.js +157 -0
  1355. package/dist/skills/bundled/verify/index.js.map +1 -0
  1356. package/dist/skills/bundled/virtuals/index.d.ts +20 -0
  1357. package/dist/skills/bundled/virtuals/index.js +255 -0
  1358. package/dist/skills/bundled/virtuals/index.js.map +1 -0
  1359. package/dist/skills/bundled/voice/index.d.ts +18 -0
  1360. package/dist/skills/bundled/voice/index.js +190 -0
  1361. package/dist/skills/bundled/voice/index.js.map +1 -0
  1362. package/dist/skills/bundled/weather/index.d.ts +20 -0
  1363. package/dist/skills/bundled/weather/index.js +475 -0
  1364. package/dist/skills/bundled/weather/index.js.map +1 -0
  1365. package/dist/skills/bundled/webhooks/index.d.ts +18 -0
  1366. package/dist/skills/bundled/webhooks/index.js +136 -0
  1367. package/dist/skills/bundled/webhooks/index.js.map +1 -0
  1368. package/dist/skills/bundled/whale-tracking/index.d.ts +18 -0
  1369. package/dist/skills/bundled/whale-tracking/index.js +441 -0
  1370. package/dist/skills/bundled/whale-tracking/index.js.map +1 -0
  1371. package/dist/skills/bundled/yoink/index.d.ts +78 -0
  1372. package/dist/skills/bundled/yoink/index.js +236 -0
  1373. package/dist/skills/bundled/yoink/index.js.map +1 -0
  1374. package/dist/skills/executor.d.ts +117 -0
  1375. package/dist/skills/executor.js +469 -0
  1376. package/dist/skills/executor.js.map +1 -0
  1377. package/dist/skills/frontmatter.d.ts +69 -0
  1378. package/dist/skills/frontmatter.js +187 -0
  1379. package/dist/skills/frontmatter.js.map +1 -0
  1380. package/dist/skills/index.d.ts +150 -0
  1381. package/dist/skills/index.js +531 -0
  1382. package/dist/skills/index.js.map +1 -0
  1383. package/dist/skills/loader.d.ts +48 -0
  1384. package/dist/skills/loader.js +594 -0
  1385. package/dist/skills/loader.js.map +1 -0
  1386. package/dist/skills/registry.d.ts +94 -0
  1387. package/dist/skills/registry.js +308 -0
  1388. package/dist/skills/registry.js.map +1 -0
  1389. package/dist/solana/copytrade.d.ts +116 -0
  1390. package/dist/solana/copytrade.js +493 -0
  1391. package/dist/solana/copytrade.js.map +1 -0
  1392. package/dist/solana/drift.d.ts +154 -0
  1393. package/dist/solana/drift.js +599 -0
  1394. package/dist/solana/drift.js.map +1 -0
  1395. package/dist/solana/jupiter.d.ts +283 -0
  1396. package/dist/solana/jupiter.js +553 -0
  1397. package/dist/solana/jupiter.js.map +1 -0
  1398. package/dist/solana/kamino.d.ts +206 -0
  1399. package/dist/solana/kamino.js +546 -0
  1400. package/dist/solana/kamino.js.map +1 -0
  1401. package/dist/solana/meteora-dbc.d.ts +430 -0
  1402. package/dist/solana/meteora-dbc.js +1105 -0
  1403. package/dist/solana/meteora-dbc.js.map +1 -0
  1404. package/dist/solana/meteora.d.ts +232 -0
  1405. package/dist/solana/meteora.js +682 -0
  1406. package/dist/solana/meteora.js.map +1 -0
  1407. package/dist/solana/orca.d.ts +163 -0
  1408. package/dist/solana/orca.js +378 -0
  1409. package/dist/solana/orca.js.map +1 -0
  1410. package/dist/solana/pools.d.ts +26 -0
  1411. package/dist/solana/pools.js +96 -0
  1412. package/dist/solana/pools.js.map +1 -0
  1413. package/dist/solana/pump-swarm.d.ts +349 -0
  1414. package/dist/solana/pump-swarm.js +1663 -0
  1415. package/dist/solana/pump-swarm.js.map +1 -0
  1416. package/dist/solana/pumpapi.d.ts +196 -0
  1417. package/dist/solana/pumpapi.js +462 -0
  1418. package/dist/solana/pumpapi.js.map +1 -0
  1419. package/dist/solana/raydium.d.ts +170 -0
  1420. package/dist/solana/raydium.js +673 -0
  1421. package/dist/solana/raydium.js.map +1 -0
  1422. package/dist/solana/swarm-ai-builder.d.ts +97 -0
  1423. package/dist/solana/swarm-ai-builder.js +571 -0
  1424. package/dist/solana/swarm-ai-builder.js.map +1 -0
  1425. package/dist/solana/swarm-arbitrage.d.ts +111 -0
  1426. package/dist/solana/swarm-arbitrage.js +437 -0
  1427. package/dist/solana/swarm-arbitrage.js.map +1 -0
  1428. package/dist/solana/swarm-builders.d.ts +71 -0
  1429. package/dist/solana/swarm-builders.js +402 -0
  1430. package/dist/solana/swarm-builders.js.map +1 -0
  1431. package/dist/solana/swarm-copytrade.d.ts +103 -0
  1432. package/dist/solana/swarm-copytrade.js +420 -0
  1433. package/dist/solana/swarm-copytrade.js.map +1 -0
  1434. package/dist/solana/swarm-presets.d.ts +49 -0
  1435. package/dist/solana/swarm-presets.js +282 -0
  1436. package/dist/solana/swarm-presets.js.map +1 -0
  1437. package/dist/solana/swarm-signals.d.ts +128 -0
  1438. package/dist/solana/swarm-signals.js +529 -0
  1439. package/dist/solana/swarm-signals.js.map +1 -0
  1440. package/dist/solana/swarm-strategies.d.ts +230 -0
  1441. package/dist/solana/swarm-strategies.js +611 -0
  1442. package/dist/solana/swarm-strategies.js.map +1 -0
  1443. package/dist/solana/tokenlist.d.ts +10 -0
  1444. package/dist/solana/tokenlist.js +54 -0
  1445. package/dist/solana/tokenlist.js.map +1 -0
  1446. package/dist/solana/wallet.d.ts +12 -0
  1447. package/dist/solana/wallet.js +90 -0
  1448. package/dist/solana/wallet.js.map +1 -0
  1449. package/dist/strategies/crypto-hft/index.d.ts +46 -0
  1450. package/dist/strategies/crypto-hft/index.js +469 -0
  1451. package/dist/strategies/crypto-hft/index.js.map +1 -0
  1452. package/dist/strategies/crypto-hft/market-scanner.d.ts +26 -0
  1453. package/dist/strategies/crypto-hft/market-scanner.js +177 -0
  1454. package/dist/strategies/crypto-hft/market-scanner.js.map +1 -0
  1455. package/dist/strategies/crypto-hft/orderbook.d.ts +37 -0
  1456. package/dist/strategies/crypto-hft/orderbook.js +184 -0
  1457. package/dist/strategies/crypto-hft/orderbook.js.map +1 -0
  1458. package/dist/strategies/crypto-hft/positions.d.ts +49 -0
  1459. package/dist/strategies/crypto-hft/positions.js +376 -0
  1460. package/dist/strategies/crypto-hft/positions.js.map +1 -0
  1461. package/dist/strategies/crypto-hft/presets.d.ts +11 -0
  1462. package/dist/strategies/crypto-hft/presets.js +164 -0
  1463. package/dist/strategies/crypto-hft/presets.js.map +1 -0
  1464. package/dist/strategies/crypto-hft/strategies.d.ts +96 -0
  1465. package/dist/strategies/crypto-hft/strategies.js +330 -0
  1466. package/dist/strategies/crypto-hft/strategies.js.map +1 -0
  1467. package/dist/strategies/crypto-hft/types.d.ts +196 -0
  1468. package/dist/strategies/crypto-hft/types.js +32 -0
  1469. package/dist/strategies/crypto-hft/types.js.map +1 -0
  1470. package/dist/strategies/hft-divergence/detector.d.ts +29 -0
  1471. package/dist/strategies/hft-divergence/detector.js +182 -0
  1472. package/dist/strategies/hft-divergence/detector.js.map +1 -0
  1473. package/dist/strategies/hft-divergence/index.d.ts +12 -0
  1474. package/dist/strategies/hft-divergence/index.js +19 -0
  1475. package/dist/strategies/hft-divergence/index.js.map +1 -0
  1476. package/dist/strategies/hft-divergence/market-rotator.d.ts +17 -0
  1477. package/dist/strategies/hft-divergence/market-rotator.js +128 -0
  1478. package/dist/strategies/hft-divergence/market-rotator.js.map +1 -0
  1479. package/dist/strategies/hft-divergence/position-manager.d.ts +35 -0
  1480. package/dist/strategies/hft-divergence/position-manager.js +188 -0
  1481. package/dist/strategies/hft-divergence/position-manager.js.map +1 -0
  1482. package/dist/strategies/hft-divergence/strategy.d.ts +31 -0
  1483. package/dist/strategies/hft-divergence/strategy.js +295 -0
  1484. package/dist/strategies/hft-divergence/strategy.js.map +1 -0
  1485. package/dist/strategies/hft-divergence/types.d.ts +114 -0
  1486. package/dist/strategies/hft-divergence/types.js +10 -0
  1487. package/dist/strategies/hft-divergence/types.js.map +1 -0
  1488. package/dist/streaming/index.d.ts +70 -0
  1489. package/dist/streaming/index.js +296 -0
  1490. package/dist/streaming/index.js.map +1 -0
  1491. package/dist/tailscale/index.d.ts +139 -0
  1492. package/dist/tailscale/index.js +345 -0
  1493. package/dist/tailscale/index.js.map +1 -0
  1494. package/dist/telemetry/index.d.ts +143 -0
  1495. package/dist/telemetry/index.js +535 -0
  1496. package/dist/telemetry/index.js.map +1 -0
  1497. package/dist/terminal/index.d.ts +121 -0
  1498. package/dist/terminal/index.js +548 -0
  1499. package/dist/terminal/index.js.map +1 -0
  1500. package/dist/token-security/index.d.ts +36 -0
  1501. package/dist/token-security/index.js +253 -0
  1502. package/dist/token-security/index.js.map +1 -0
  1503. package/dist/tools/browser.d.ts +128 -0
  1504. package/dist/tools/browser.js +459 -0
  1505. package/dist/tools/browser.js.map +1 -0
  1506. package/dist/tools/canvas.d.ts +93 -0
  1507. package/dist/tools/canvas.js +349 -0
  1508. package/dist/tools/canvas.js.map +1 -0
  1509. package/dist/tools/docker.d.ts +59 -0
  1510. package/dist/tools/docker.js +191 -0
  1511. package/dist/tools/docker.js.map +1 -0
  1512. package/dist/tools/email.d.ts +25 -0
  1513. package/dist/tools/email.js +131 -0
  1514. package/dist/tools/email.js.map +1 -0
  1515. package/dist/tools/exec.d.ts +81 -0
  1516. package/dist/tools/exec.js +373 -0
  1517. package/dist/tools/exec.js.map +1 -0
  1518. package/dist/tools/files.d.ts +46 -0
  1519. package/dist/tools/files.js +185 -0
  1520. package/dist/tools/files.js.map +1 -0
  1521. package/dist/tools/git.d.ts +29 -0
  1522. package/dist/tools/git.js +105 -0
  1523. package/dist/tools/git.js.map +1 -0
  1524. package/dist/tools/image.d.ts +57 -0
  1525. package/dist/tools/image.js +308 -0
  1526. package/dist/tools/image.js.map +1 -0
  1527. package/dist/tools/index.d.ts +39 -0
  1528. package/dist/tools/index.js +46 -0
  1529. package/dist/tools/index.js.map +1 -0
  1530. package/dist/tools/message.d.ts +99 -0
  1531. package/dist/tools/message.js +200 -0
  1532. package/dist/tools/message.js.map +1 -0
  1533. package/dist/tools/nodes.d.ts +134 -0
  1534. package/dist/tools/nodes.js +357 -0
  1535. package/dist/tools/nodes.js.map +1 -0
  1536. package/dist/tools/sessions.d.ts +60 -0
  1537. package/dist/tools/sessions.js +119 -0
  1538. package/dist/tools/sessions.js.map +1 -0
  1539. package/dist/tools/shell-history.d.ts +17 -0
  1540. package/dist/tools/shell-history.js +118 -0
  1541. package/dist/tools/shell-history.js.map +1 -0
  1542. package/dist/tools/sms.d.ts +18 -0
  1543. package/dist/tools/sms.js +66 -0
  1544. package/dist/tools/sms.js.map +1 -0
  1545. package/dist/tools/sql.d.ts +19 -0
  1546. package/dist/tools/sql.js +91 -0
  1547. package/dist/tools/sql.js.map +1 -0
  1548. package/dist/tools/transcription.d.ts +13 -0
  1549. package/dist/tools/transcription.js +99 -0
  1550. package/dist/tools/transcription.js.map +1 -0
  1551. package/dist/tools/web-fetch.d.ts +69 -0
  1552. package/dist/tools/web-fetch.js +251 -0
  1553. package/dist/tools/web-fetch.js.map +1 -0
  1554. package/dist/tools/web-search.d.ts +58 -0
  1555. package/dist/tools/web-search.js +204 -0
  1556. package/dist/tools/web-search.js.map +1 -0
  1557. package/dist/tools/webhooks.d.ts +74 -0
  1558. package/dist/tools/webhooks.js +165 -0
  1559. package/dist/tools/webhooks.js.map +1 -0
  1560. package/dist/trading/accounts.d.ts +167 -0
  1561. package/dist/trading/accounts.js +394 -0
  1562. package/dist/trading/accounts.js.map +1 -0
  1563. package/dist/trading/adapters/index.d.ts +27 -0
  1564. package/dist/trading/adapters/index.js +165 -0
  1565. package/dist/trading/adapters/index.js.map +1 -0
  1566. package/dist/trading/backtest.d.ts +161 -0
  1567. package/dist/trading/backtest.js +665 -0
  1568. package/dist/trading/backtest.js.map +1 -0
  1569. package/dist/trading/bots/index.d.ts +196 -0
  1570. package/dist/trading/bots/index.js +688 -0
  1571. package/dist/trading/bots/index.js.map +1 -0
  1572. package/dist/trading/bridge.d.ts +33 -0
  1573. package/dist/trading/bridge.js +121 -0
  1574. package/dist/trading/bridge.js.map +1 -0
  1575. package/dist/trading/builder.d.ts +102 -0
  1576. package/dist/trading/builder.js +430 -0
  1577. package/dist/trading/builder.js.map +1 -0
  1578. package/dist/trading/copy-trading.d.ts +125 -0
  1579. package/dist/trading/copy-trading.js +611 -0
  1580. package/dist/trading/copy-trading.js.map +1 -0
  1581. package/dist/trading/devtools.d.ts +172 -0
  1582. package/dist/trading/devtools.js +425 -0
  1583. package/dist/trading/devtools.js.map +1 -0
  1584. package/dist/trading/futures/index.d.ts +981 -0
  1585. package/dist/trading/futures/index.js +4011 -0
  1586. package/dist/trading/futures/index.js.map +1 -0
  1587. package/dist/trading/index.d.ts +102 -0
  1588. package/dist/trading/index.js +310 -0
  1589. package/dist/trading/index.js.map +1 -0
  1590. package/dist/trading/kelly.d.ts +137 -0
  1591. package/dist/trading/kelly.js +328 -0
  1592. package/dist/trading/kelly.js.map +1 -0
  1593. package/dist/trading/logger.d.ts +163 -0
  1594. package/dist/trading/logger.js +424 -0
  1595. package/dist/trading/logger.js.map +1 -0
  1596. package/dist/trading/market-making/engine.d.ts +44 -0
  1597. package/dist/trading/market-making/engine.js +165 -0
  1598. package/dist/trading/market-making/engine.js.map +1 -0
  1599. package/dist/trading/market-making/index.d.ts +10 -0
  1600. package/dist/trading/market-making/index.js +29 -0
  1601. package/dist/trading/market-making/index.js.map +1 -0
  1602. package/dist/trading/market-making/strategy.d.ts +25 -0
  1603. package/dist/trading/market-making/strategy.js +250 -0
  1604. package/dist/trading/market-making/strategy.js.map +1 -0
  1605. package/dist/trading/market-making/types.d.ts +92 -0
  1606. package/dist/trading/market-making/types.js +6 -0
  1607. package/dist/trading/market-making/types.js.map +1 -0
  1608. package/dist/trading/ml-signals.d.ts +175 -0
  1609. package/dist/trading/ml-signals.js +548 -0
  1610. package/dist/trading/ml-signals.js.map +1 -0
  1611. package/dist/trading/orchestrator.d.ts +59 -0
  1612. package/dist/trading/orchestrator.js +199 -0
  1613. package/dist/trading/orchestrator.js.map +1 -0
  1614. package/dist/trading/position-bridge.d.ts +41 -0
  1615. package/dist/trading/position-bridge.js +178 -0
  1616. package/dist/trading/position-bridge.js.map +1 -0
  1617. package/dist/trading/resilience.d.ts +81 -0
  1618. package/dist/trading/resilience.js +257 -0
  1619. package/dist/trading/resilience.js.map +1 -0
  1620. package/dist/trading/risk.d.ts +18 -0
  1621. package/dist/trading/risk.js +91 -0
  1622. package/dist/trading/risk.js.map +1 -0
  1623. package/dist/trading/safety.d.ts +114 -0
  1624. package/dist/trading/safety.js +372 -0
  1625. package/dist/trading/safety.js.map +1 -0
  1626. package/dist/trading/secrets.d.ts +48 -0
  1627. package/dist/trading/secrets.js +243 -0
  1628. package/dist/trading/secrets.js.map +1 -0
  1629. package/dist/trading/state.d.ts +88 -0
  1630. package/dist/trading/state.js +221 -0
  1631. package/dist/trading/state.js.map +1 -0
  1632. package/dist/trading/stream.d.ts +121 -0
  1633. package/dist/trading/stream.js +396 -0
  1634. package/dist/trading/stream.js.map +1 -0
  1635. package/dist/trading/tracking.d.ts +136 -0
  1636. package/dist/trading/tracking.js +512 -0
  1637. package/dist/trading/tracking.js.map +1 -0
  1638. package/dist/tts/index.d.ts +28 -0
  1639. package/dist/tts/index.js +64 -0
  1640. package/dist/tts/index.js.map +1 -0
  1641. package/dist/tui/index.d.ts +159 -0
  1642. package/dist/tui/index.js +580 -0
  1643. package/dist/tui/index.js.map +1 -0
  1644. package/dist/types.d.ts +1373 -0
  1645. package/dist/types.js +7 -0
  1646. package/dist/types.js.map +1 -0
  1647. package/dist/usage/index.d.ts +57 -0
  1648. package/dist/usage/index.js +191 -0
  1649. package/dist/usage/index.js.map +1 -0
  1650. package/dist/utils/attachments.d.ts +12 -0
  1651. package/dist/utils/attachments.js +104 -0
  1652. package/dist/utils/attachments.js.map +1 -0
  1653. package/dist/utils/config.d.ts +14 -0
  1654. package/dist/utils/config.js +474 -0
  1655. package/dist/utils/config.js.map +1 -0
  1656. package/dist/utils/http.d.ts +22 -0
  1657. package/dist/utils/http.js +191 -0
  1658. package/dist/utils/http.js.map +1 -0
  1659. package/dist/utils/id.d.ts +21 -0
  1660. package/dist/utils/id.js +41 -0
  1661. package/dist/utils/id.js.map +1 -0
  1662. package/dist/utils/json-utils.d.ts +201 -0
  1663. package/dist/utils/json-utils.js +151 -0
  1664. package/dist/utils/json-utils.js.map +1 -0
  1665. package/dist/utils/kalshi-auth.d.ts +10 -0
  1666. package/dist/utils/kalshi-auth.js +48 -0
  1667. package/dist/utils/kalshi-auth.js.map +1 -0
  1668. package/dist/utils/kelly.d.ts +153 -0
  1669. package/dist/utils/kelly.js +322 -0
  1670. package/dist/utils/kelly.js.map +1 -0
  1671. package/dist/utils/logger.d.ts +7 -0
  1672. package/dist/utils/logger.js +26 -0
  1673. package/dist/utils/logger.js.map +1 -0
  1674. package/dist/utils/opinion-auth.d.ts +17 -0
  1675. package/dist/utils/opinion-auth.js +25 -0
  1676. package/dist/utils/opinion-auth.js.map +1 -0
  1677. package/dist/utils/polymarket-auth.d.ts +11 -0
  1678. package/dist/utils/polymarket-auth.js +32 -0
  1679. package/dist/utils/polymarket-auth.js.map +1 -0
  1680. package/dist/utils/polymarket-order-signer.d.ts +118 -0
  1681. package/dist/utils/polymarket-order-signer.js +329 -0
  1682. package/dist/utils/polymarket-order-signer.js.map +1 -0
  1683. package/dist/utils/polymarket-setup.d.ts +70 -0
  1684. package/dist/utils/polymarket-setup.js +288 -0
  1685. package/dist/utils/polymarket-setup.js.map +1 -0
  1686. package/dist/utils/production.d.ts +112 -0
  1687. package/dist/utils/production.js +294 -0
  1688. package/dist/utils/production.js.map +1 -0
  1689. package/dist/utils/rate-limiter.d.ts +77 -0
  1690. package/dist/utils/rate-limiter.js +271 -0
  1691. package/dist/utils/rate-limiter.js.map +1 -0
  1692. package/dist/utils/webhook-security.d.ts +63 -0
  1693. package/dist/utils/webhook-security.js +183 -0
  1694. package/dist/utils/webhook-security.js.map +1 -0
  1695. package/dist/voice/index.d.ts +125 -0
  1696. package/dist/voice/index.js +557 -0
  1697. package/dist/voice/index.js.map +1 -0
  1698. package/dist/weather/edge.d.ts +70 -0
  1699. package/dist/weather/edge.js +281 -0
  1700. package/dist/weather/edge.js.map +1 -0
  1701. package/dist/weather/index.d.ts +6 -0
  1702. package/dist/weather/index.js +23 -0
  1703. package/dist/weather/index.js.map +1 -0
  1704. package/dist/weather/markets.d.ts +84 -0
  1705. package/dist/weather/markets.js +320 -0
  1706. package/dist/weather/markets.js.map +1 -0
  1707. package/dist/weather/noaa.d.ts +113 -0
  1708. package/dist/weather/noaa.js +287 -0
  1709. package/dist/weather/noaa.js.map +1 -0
  1710. package/dist/web/index.d.ts +112 -0
  1711. package/dist/web/index.js +639 -0
  1712. package/dist/web/index.js.map +1 -0
  1713. package/dist/wizard/index.d.ts +27 -0
  1714. package/dist/wizard/index.js +186 -0
  1715. package/dist/wizard/index.js.map +1 -0
  1716. package/dist/workspace/index.d.ts +73 -0
  1717. package/dist/workspace/index.js +403 -0
  1718. package/dist/workspace/index.js.map +1 -0
  1719. package/package.json +168 -0
@@ -0,0 +1,2321 @@
1
+ "use strict";
2
+ /**
3
+ * Gateway Module - Clawdbot-style WebSocket gateway protocol
4
+ *
5
+ * Features:
6
+ * - WebSocket server for remote connections
7
+ * - Binary and JSON message support
8
+ * - Connection authentication
9
+ * - Heartbeat/keepalive
10
+ * - Message routing
11
+ * - Session management
12
+ */
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || (function () {
30
+ var ownKeys = function(o) {
31
+ ownKeys = Object.getOwnPropertyNames || function (o) {
32
+ var ar = [];
33
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
34
+ return ar;
35
+ };
36
+ return ownKeys(o);
37
+ };
38
+ return function (mod) {
39
+ if (mod && mod.__esModule) return mod;
40
+ var result = {};
41
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
42
+ __setModuleDefault(result, mod);
43
+ return result;
44
+ };
45
+ })();
46
+ var __importDefault = (this && this.__importDefault) || function (mod) {
47
+ return (mod && mod.__esModule) ? mod : { "default": mod };
48
+ };
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.GatewayServer = exports.GatewayOpcodes = void 0;
51
+ exports.createGatewayServer = createGatewayServer;
52
+ exports.createGateway = createGateway;
53
+ const ws_1 = require("ws");
54
+ const http = __importStar(require("http"));
55
+ const https = __importStar(require("https"));
56
+ const events_1 = require("events");
57
+ const crypto_1 = require("crypto");
58
+ const logger_1 = require("../utils/logger");
59
+ const security_1 = require("../security");
60
+ const server_1 = require("./server");
61
+ const x402_1 = require("../payments/x402");
62
+ const db_1 = require("../db");
63
+ const migrations_1 = require("../db/migrations");
64
+ const acp_1 = require("../acp");
65
+ const order_persistence_1 = require("../execution/order-persistence");
66
+ const dca_persistence_1 = require("../execution/dca-persistence");
67
+ const feeds_1 = require("../feeds");
68
+ const sessions_1 = require("../sessions");
69
+ const agents_1 = require("../agents");
70
+ const channels_1 = require("../channels");
71
+ const pairing_1 = require("../pairing");
72
+ const memory_1 = require("../memory");
73
+ const cron_1 = require("../cron");
74
+ const credentials_1 = require("../credentials");
75
+ const registry_1 = require("../commands/registry");
76
+ const automation_1 = require("../automation");
77
+ const webhooks_1 = require("../tools/webhooks");
78
+ const providers_1 = require("../providers");
79
+ const monitoring_1 = require("../monitoring");
80
+ const embeddings_1 = require("../embeddings");
81
+ const market_index_1 = require("../market-index");
82
+ const opportunity_1 = require("../opportunity");
83
+ const whale_tracker_1 = require("../feeds/polymarket/whale-tracker");
84
+ const copy_trading_1 = require("../trading/copy-trading");
85
+ const smart_router_1 = require("../execution/smart-router");
86
+ const execution_1 = require("../execution");
87
+ const alerts_1 = require("../alerts");
88
+ const executor_1 = require("../opportunity/executor");
89
+ const tick_recorder_1 = require("../services/tick-recorder");
90
+ const tick_streamer_1 = require("../services/tick-streamer");
91
+ const bittensor_1 = require("../bittensor");
92
+ const server_2 = require("../bittensor/server");
93
+ const bittensor_2 = require("../agents/handlers/bittensor");
94
+ const feature_engineering_1 = require("../services/feature-engineering");
95
+ const alt_data_1 = require("../services/alt-data");
96
+ const signal_router_1 = require("../signal-router");
97
+ const ml_pipeline_1 = require("../ml-pipeline");
98
+ const jobs_1 = require("../queue/jobs");
99
+ const chokidar_1 = __importDefault(require("chokidar"));
100
+ const path_1 = __importDefault(require("path"));
101
+ const config_1 = require("../utils/config");
102
+ const http_1 = require("../utils/http");
103
+ const unified_1 = require("../messages/unified");
104
+ const production_1 = require("../utils/production");
105
+ const signal_bus_1 = require("./signal-bus");
106
+ const orchestrator_1 = require("../trading/orchestrator");
107
+ const safety_1 = require("../trading/safety");
108
+ const circuit_breaker_1 = require("../execution/circuit-breaker");
109
+ const api_routes_1 = require("./api-routes");
110
+ const position_manager_1 = require("../execution/position-manager");
111
+ const position_bridge_1 = require("../trading/position-bridge");
112
+ const backtest_1 = require("../trading/backtest");
113
+ const bots_1 = require("../trading/bots");
114
+ const builder_1 = require("../trading/builder");
115
+ const logger_2 = require("../trading/logger");
116
+ const market_making_1 = require("../trading/market-making");
117
+ exports.GatewayOpcodes = {
118
+ DISPATCH: 0,
119
+ HEARTBEAT: 1,
120
+ IDENTIFY: 2,
121
+ RESUME: 3,
122
+ RECONNECT: 7,
123
+ INVALID_SESSION: 9,
124
+ HELLO: 10,
125
+ HEARTBEAT_ACK: 11,
126
+ };
127
+ // =============================================================================
128
+ // GATEWAY SERVER
129
+ // =============================================================================
130
+ class GatewayServer extends events_1.EventEmitter {
131
+ config;
132
+ server = null;
133
+ wss = null;
134
+ clients = new Map();
135
+ heartbeatChecker = null;
136
+ sequence = 0;
137
+ constructor(config = {}) {
138
+ super();
139
+ this.config = {
140
+ port: config.port ?? 8080,
141
+ host: config.host ?? '0.0.0.0',
142
+ path: config.path ?? '/gateway',
143
+ heartbeatInterval: config.heartbeatInterval ?? 45000,
144
+ maxClients: config.maxClients ?? 1000,
145
+ auth: config.auth ?? { type: 'none' },
146
+ ...config,
147
+ };
148
+ }
149
+ /** Start the gateway server */
150
+ async start() {
151
+ return new Promise((resolve) => {
152
+ // Create HTTP(S) server
153
+ if (this.config.ssl) {
154
+ const fs = require('fs');
155
+ this.server = https.createServer({
156
+ cert: fs.readFileSync(this.config.ssl.cert),
157
+ key: fs.readFileSync(this.config.ssl.key),
158
+ });
159
+ }
160
+ else {
161
+ this.server = http.createServer();
162
+ }
163
+ // Create WebSocket server
164
+ this.wss = new ws_1.WebSocketServer({
165
+ server: this.server,
166
+ path: this.config.path,
167
+ });
168
+ this.wss.on('connection', (socket, request) => {
169
+ this.handleConnection(socket, request);
170
+ });
171
+ // Start heartbeat checker
172
+ this.heartbeatChecker = setInterval(() => {
173
+ this.checkHeartbeats();
174
+ }, this.config.heartbeatInterval);
175
+ // Start listening
176
+ this.server.listen(this.config.port, this.config.host, () => {
177
+ const protocol = this.config.ssl ? 'wss' : 'ws';
178
+ logger_1.logger.info({
179
+ url: `${protocol}://${this.config.host}:${this.config.port}${this.config.path}`,
180
+ }, 'Gateway server started');
181
+ resolve();
182
+ });
183
+ });
184
+ }
185
+ /** Stop the gateway server */
186
+ async stop() {
187
+ if (this.heartbeatChecker) {
188
+ clearInterval(this.heartbeatChecker);
189
+ this.heartbeatChecker = null;
190
+ }
191
+ for (const client of this.clients.values()) {
192
+ this.send(client, { op: exports.GatewayOpcodes.RECONNECT });
193
+ client.socket.close(1001, 'Server shutting down');
194
+ }
195
+ this.clients.clear();
196
+ return new Promise((resolve) => {
197
+ if (this.wss) {
198
+ this.wss.close(() => {
199
+ if (this.server) {
200
+ this.server.close(() => {
201
+ logger_1.logger.info('Gateway server stopped');
202
+ resolve();
203
+ });
204
+ }
205
+ else {
206
+ resolve();
207
+ }
208
+ });
209
+ }
210
+ else {
211
+ resolve();
212
+ }
213
+ });
214
+ }
215
+ /** Send message to a client */
216
+ send(client, message) {
217
+ if (client.socket.readyState === ws_1.WebSocket.OPEN) {
218
+ client.socket.send(JSON.stringify(message));
219
+ }
220
+ }
221
+ /** Broadcast to all authenticated clients */
222
+ broadcast(message, filter) {
223
+ for (const client of this.clients.values()) {
224
+ if (client.authenticated && (!filter || filter(client))) {
225
+ this.send(client, message);
226
+ }
227
+ }
228
+ }
229
+ /** Dispatch an event to all clients */
230
+ dispatch(event, data) {
231
+ this.sequence++;
232
+ this.broadcast({
233
+ op: exports.GatewayOpcodes.DISPATCH,
234
+ t: event,
235
+ d: data,
236
+ s: this.sequence,
237
+ });
238
+ }
239
+ /** Get connected clients */
240
+ getClients() {
241
+ return Array.from(this.clients.values());
242
+ }
243
+ /** Get client by ID */
244
+ getClient(id) {
245
+ return this.clients.get(id);
246
+ }
247
+ /** Disconnect a client */
248
+ disconnect(id, code = 1000, reason = '') {
249
+ const client = this.clients.get(id);
250
+ if (client) {
251
+ client.socket.close(code, reason);
252
+ this.clients.delete(id);
253
+ }
254
+ }
255
+ handleConnection(socket, request) {
256
+ if (this.clients.size >= this.config.maxClients) {
257
+ socket.close(1013, 'Server at capacity');
258
+ return;
259
+ }
260
+ const clientId = this.generateClientId();
261
+ const client = {
262
+ id: clientId,
263
+ socket,
264
+ authenticated: this.config.auth?.type === 'none',
265
+ metadata: {},
266
+ connectedAt: new Date(),
267
+ lastHeartbeat: new Date(),
268
+ };
269
+ this.clients.set(clientId, client);
270
+ logger_1.logger.debug({ clientId }, 'Gateway client connected');
271
+ this.send(client, {
272
+ op: exports.GatewayOpcodes.HELLO,
273
+ d: {
274
+ heartbeat_interval: this.config.heartbeatInterval,
275
+ session_id: clientId,
276
+ },
277
+ });
278
+ socket.on('message', (data) => {
279
+ this.handleMessage(client, data);
280
+ });
281
+ socket.on('close', (code, reason) => {
282
+ this.clients.delete(clientId);
283
+ this.emit('disconnect', { clientId, code, reason: reason.toString() });
284
+ logger_1.logger.debug({ clientId, code }, 'Gateway client disconnected');
285
+ });
286
+ socket.on('error', (error) => {
287
+ logger_1.logger.error({ clientId, error }, 'Gateway client error');
288
+ });
289
+ this.emit('connection', client);
290
+ }
291
+ handleMessage(client, data) {
292
+ try {
293
+ const message = JSON.parse(data.toString());
294
+ switch (message.op) {
295
+ case exports.GatewayOpcodes.HEARTBEAT:
296
+ client.lastHeartbeat = new Date();
297
+ this.send(client, { op: exports.GatewayOpcodes.HEARTBEAT_ACK });
298
+ break;
299
+ case exports.GatewayOpcodes.IDENTIFY:
300
+ this.handleIdentify(client, message.d);
301
+ break;
302
+ case exports.GatewayOpcodes.RESUME:
303
+ client.authenticated = true;
304
+ this.emit('resume', { client, data: message.d });
305
+ break;
306
+ case exports.GatewayOpcodes.DISPATCH:
307
+ if (client.authenticated) {
308
+ this.emit('message', {
309
+ client,
310
+ event: message.t,
311
+ data: message.d,
312
+ });
313
+ }
314
+ break;
315
+ }
316
+ }
317
+ catch (error) {
318
+ logger_1.logger.warn({ clientId: client.id, error }, 'Invalid gateway message');
319
+ }
320
+ }
321
+ handleIdentify(client, data = {}) {
322
+ let authenticated = false;
323
+ switch (this.config.auth?.type) {
324
+ case 'none':
325
+ authenticated = true;
326
+ break;
327
+ case 'token':
328
+ authenticated = this.config.auth.tokens?.includes(data.token || '') ?? false;
329
+ break;
330
+ case 'basic':
331
+ if (data.username && data.password) {
332
+ authenticated = this.config.auth.users?.[data.username] === data.password;
333
+ }
334
+ break;
335
+ }
336
+ if (authenticated) {
337
+ client.authenticated = true;
338
+ client.metadata = { ...data, password: undefined };
339
+ this.emit('identify', client);
340
+ this.dispatch('READY', { session_id: client.id });
341
+ }
342
+ else {
343
+ this.send(client, { op: exports.GatewayOpcodes.INVALID_SESSION, d: false });
344
+ client.socket.close(4001, 'Authentication failed');
345
+ }
346
+ }
347
+ checkHeartbeats() {
348
+ const timeout = this.config.heartbeatInterval * 2;
349
+ const now = Date.now();
350
+ for (const [id, client] of this.clients) {
351
+ if (now - client.lastHeartbeat.getTime() > timeout) {
352
+ logger_1.logger.debug({ clientId: id }, 'Client heartbeat timeout');
353
+ client.socket.close(4009, 'Heartbeat timeout');
354
+ this.clients.delete(id);
355
+ }
356
+ }
357
+ }
358
+ generateClientId() {
359
+ return (0, crypto_1.randomBytes)(16).toString('hex');
360
+ }
361
+ }
362
+ exports.GatewayServer = GatewayServer;
363
+ // =============================================================================
364
+ // FACTORY
365
+ // =============================================================================
366
+ function createGatewayServer(config) {
367
+ return new GatewayServer(config);
368
+ }
369
+ /**
370
+ * Create the full application gateway (HTTP + channels + agent).
371
+ *
372
+ * This wires together:
373
+ * - HTTP/WebSocket server (for webchat + health)
374
+ * - Channel manager (Telegram/Slack/etc)
375
+ * - Sessions, feeds, DB, memory
376
+ * - Command registry and command handling
377
+ * - Agent manager for non-command messages
378
+ */
379
+ async function createGateway(config) {
380
+ let currentConfig = config;
381
+ (0, http_1.configureHttpClient)(currentConfig.http);
382
+ const configPath = process.env.CLODDS_CONFIG_PATH || config_1.CONFIG_FILE;
383
+ const db = await (0, db_1.initDatabase)();
384
+ try {
385
+ const runner = (0, migrations_1.createMigrationRunner)(db);
386
+ runner.migrate();
387
+ }
388
+ catch (error) {
389
+ logger_1.logger.error({ error }, 'Database migration failed');
390
+ throw error;
391
+ }
392
+ // Initialize ACP (Agent Commerce Protocol) with database
393
+ (0, acp_1.initACP)(db);
394
+ // Initialize order persistence for TWAP and bracket orders
395
+ (0, order_persistence_1.initOrderPersistence)(db);
396
+ (0, dca_persistence_1.initDCAPersistence)(db);
397
+ let feeds = await (0, feeds_1.createFeedManager)(config.feeds);
398
+ const sessions = (0, sessions_1.createSessionManager)(db, config.session);
399
+ const memory = (0, memory_1.createMemoryService)(db);
400
+ const pairing = (0, pairing_1.createPairingService)(db);
401
+ const webhookManager = (0, automation_1.createWebhookManager)();
402
+ const providerManager = (0, providers_1.createProviders)({
403
+ anthropicKey: process.env.ANTHROPIC_API_KEY,
404
+ openaiKey: process.env.OPENAI_API_KEY,
405
+ ollamaUrl: process.env.OLLAMA_URL,
406
+ groqKey: process.env.GROQ_API_KEY,
407
+ togetherKey: process.env.TOGETHER_API_KEY,
408
+ fireworksKey: process.env.FIREWORKS_API_KEY,
409
+ geminiKey: process.env.GEMINI_API_KEY,
410
+ });
411
+ const providerHealth = providerManager.list().length > 0
412
+ ? (0, providers_1.createProviderHealthMonitor)(providerManager)
413
+ : null;
414
+ let monitoring = null;
415
+ const commands = (0, registry_1.createCommandRegistry)();
416
+ commands.registerMany((0, registry_1.createDefaultCommands)());
417
+ const httpGateway = (0, server_1.createServer)({ ...config.gateway, x402: config.x402 }, webhookManager, db);
418
+ let channels = null;
419
+ const watchers = [];
420
+ let started = false;
421
+ let reloadInFlight = null;
422
+ let pendingReload = false;
423
+ let channelRateLimitCleanupInterval = null;
424
+ let positionPriceUpdateInterval = null;
425
+ let marketCacheCleanupInterval = null;
426
+ let marketIndexSyncInterval = null;
427
+ const channelRateLimiters = new Map();
428
+ const embeddings = (0, embeddings_1.createEmbeddingsService)(db);
429
+ const marketIndex = (0, market_index_1.createMarketIndexService)(db, embeddings, {
430
+ platformWeights: config.marketIndex?.platformWeights,
431
+ });
432
+ const cronCredentials = (0, credentials_1.createCredentialsManager)(db);
433
+ let cronService = null;
434
+ // Create opportunity finder for cross-platform arbitrage detection
435
+ const opportunityFinder = config.opportunityFinder?.enabled !== false
436
+ ? (0, opportunity_1.createOpportunityFinder)(db, feeds, embeddings, {
437
+ minEdge: config.opportunityFinder?.minEdge ?? 0.5,
438
+ minLiquidity: config.opportunityFinder?.minLiquidity ?? 100,
439
+ platforms: config.opportunityFinder?.platforms,
440
+ realtime: config.opportunityFinder?.realtime ?? false,
441
+ scanIntervalMs: config.opportunityFinder?.scanIntervalMs ?? 10000,
442
+ semanticMatching: config.opportunityFinder?.semanticMatching ?? true,
443
+ similarityThreshold: config.opportunityFinder?.similarityThreshold ?? 0.85,
444
+ includeInternal: config.opportunityFinder?.includeInternal ?? true,
445
+ includeCross: config.opportunityFinder?.includeCross ?? true,
446
+ includeEdge: config.opportunityFinder?.includeEdge ?? true,
447
+ })
448
+ : null;
449
+ // Create whale tracker for monitoring large trades
450
+ let whaleTracker = config.whaleTracking?.enabled
451
+ ? (0, whale_tracker_1.createWhaleTracker)({
452
+ minTradeSize: config.whaleTracking?.minTradeSize ?? 10000,
453
+ minPositionSize: config.whaleTracking?.minPositionSize ?? 50000,
454
+ enableRealtime: config.whaleTracking?.realtime ?? true,
455
+ })
456
+ : null;
457
+ // Create Bittensor mining service if enabled
458
+ let bittensorService = null;
459
+ if (config.bittensor?.enabled) {
460
+ const btConfig = {
461
+ enabled: true,
462
+ network: config.bittensor.network ?? 'mainnet',
463
+ subtensorUrl: config.bittensor.subtensorUrl,
464
+ coldkeyPath: config.bittensor.coldkeyPath,
465
+ coldkeyPassword: config.bittensor.coldkeyPassword,
466
+ pythonPath: config.bittensor.pythonPath,
467
+ subnets: config.bittensor.subnets,
468
+ earningsPollIntervalMs: config.bittensor.earningsPollIntervalMs,
469
+ taoPriceUsd: config.bittensor.taoPriceUsd,
470
+ };
471
+ bittensorService = (0, bittensor_1.createBittensorService)(btConfig, db);
472
+ (0, bittensor_2.setBittensorService)(bittensorService);
473
+ const bittensorRouter = (0, server_2.createBittensorRouter)(bittensorService);
474
+ httpGateway.setBittensorRouter(bittensorRouter);
475
+ logger_1.logger.info({ network: btConfig.network }, 'Bittensor service created');
476
+ }
477
+ // Create Percolator on-chain perps service if enabled
478
+ let percolatorService = null;
479
+ if (config.feeds?.percolator?.enabled) {
480
+ const { createPercolatorService } = await Promise.resolve().then(() => __importStar(require('../percolator/index.js')));
481
+ percolatorService = createPercolatorService(config.feeds.percolator);
482
+ // Wire Percolator HTTP API router
483
+ const { createPercolatorRouter } = await Promise.resolve().then(() => __importStar(require('./percolator-routes.js')));
484
+ httpGateway.setPercolatorRouter(createPercolatorRouter(percolatorService));
485
+ logger_1.logger.info({ slab: config.feeds.percolator.slabAddress }, 'Percolator service created');
486
+ }
487
+ // Wire Shield HTTP API router (always available — no credentials needed)
488
+ {
489
+ const { createShieldRouter } = await Promise.resolve().then(() => __importStar(require('./shield-routes.js')));
490
+ httpGateway.setShieldRouter(createShieldRouter());
491
+ }
492
+ // Wire Token Audit HTTP API router (always available — GoPlus is free)
493
+ {
494
+ const { createAuditRouter } = await Promise.resolve().then(() => __importStar(require('./audit-routes.js')));
495
+ httpGateway.setAuditRouter(createAuditRouter());
496
+ }
497
+ // Wire DCA HTTP API router (DCA persistence already initialized above)
498
+ {
499
+ const { createDCARouter } = await Promise.resolve().then(() => __importStar(require('./dca-routes.js')));
500
+ httpGateway.setDCARouter(createDCARouter());
501
+ }
502
+ // Create alt-data sentiment pipeline if enabled
503
+ let altDataService = null;
504
+ // Create execution service for real trading
505
+ let executionService = null;
506
+ if (config.trading?.enabled) {
507
+ const poly = config.trading.polymarket;
508
+ const kalshi = config.trading.kalshi;
509
+ const opinionCfg = config.trading.opinion;
510
+ const hasPolymarketCreds = poly?.address && poly?.apiKey && poly?.apiSecret && poly?.apiPassphrase;
511
+ const hasKalshiCreds = kalshi?.apiKeyId && kalshi?.privateKeyPem;
512
+ const hasOpinionCreds = opinionCfg?.apiKey && opinionCfg?.privateKey && opinionCfg?.vaultAddress;
513
+ const predictfunCfg = config.trading?.predictfun;
514
+ const hasPredictFunCreds = !!predictfunCfg?.privateKey;
515
+ if (hasPolymarketCreds || hasKalshiCreds || hasOpinionCreds || hasPredictFunCreds) {
516
+ executionService = (0, execution_1.createExecutionService)({
517
+ polymarket: hasPolymarketCreds ? {
518
+ address: poly.address,
519
+ apiKey: poly.apiKey,
520
+ apiSecret: poly.apiSecret,
521
+ apiPassphrase: poly.apiPassphrase,
522
+ privateKey: poly.privateKey,
523
+ funderAddress: poly?.funderAddress || poly.address,
524
+ signatureType: poly?.signatureType,
525
+ } : undefined,
526
+ kalshi: hasKalshiCreds ? {
527
+ apiKeyId: kalshi.apiKeyId,
528
+ privateKeyPem: kalshi.privateKeyPem,
529
+ } : undefined,
530
+ opinion: hasOpinionCreds ? {
531
+ apiKey: opinionCfg.apiKey,
532
+ privateKey: opinionCfg.privateKey,
533
+ multiSigAddress: opinionCfg.vaultAddress,
534
+ rpcUrl: opinionCfg.rpcUrl,
535
+ } : undefined,
536
+ predictfun: hasPredictFunCreds ? {
537
+ privateKey: predictfunCfg.privateKey,
538
+ predictAccount: predictfunCfg.predictAccount,
539
+ rpcUrl: predictfunCfg.rpcUrl,
540
+ apiKey: predictfunCfg.apiKey,
541
+ } : undefined,
542
+ maxOrderSize: config.trading.maxOrderSize ?? 1000,
543
+ dryRun: config.trading.dryRun ?? false,
544
+ });
545
+ logger_1.logger.info({
546
+ dryRun: config.trading.dryRun ?? false,
547
+ polymarket: !!hasPolymarketCreds,
548
+ kalshi: !!hasKalshiCreds,
549
+ opinion: !!hasOpinionCreds,
550
+ predictfun: !!hasPredictFunCreds,
551
+ }, 'Execution service initialized');
552
+ }
553
+ else {
554
+ logger_1.logger.warn('Trading enabled but no platform credentials configured');
555
+ }
556
+ }
557
+ // Wire safety + circuit breaker + orchestrator around execution service.
558
+ // By reassigning executionService, all downstream consumers (signal router,
559
+ // copy trading, arbitrage executor) automatically get safety-checked execution.
560
+ let orchestrator = null;
561
+ let safetyManager = null;
562
+ if (executionService) {
563
+ // Circuit breaker: execution-level error rate + loss tracking
564
+ const circuitBreaker = (0, circuit_breaker_1.createCircuitBreaker)({
565
+ maxLossUsd: config.trading?.maxDailyLoss ?? 1000,
566
+ maxConsecutiveLosses: 5,
567
+ maxErrorRate: 0.5,
568
+ resetTimeoutMs: 3600_000,
569
+ });
570
+ executionService.setCircuitBreaker(circuitBreaker);
571
+ // Safety manager: daily loss limits, drawdown, concentration checks
572
+ safetyManager = (0, safety_1.createSafetyManager)(db, {
573
+ dailyLossLimit: config.trading?.maxDailyLoss ?? 500,
574
+ maxDrawdownPct: 20,
575
+ maxConcentrationPct: 25,
576
+ maxSameDirectionPositions: 5,
577
+ });
578
+ // Orchestrator wraps execution with pre-trade safety validation
579
+ orchestrator = (0, orchestrator_1.createTradingOrchestrator)({
580
+ execution: executionService,
581
+ safety: safetyManager,
582
+ db,
583
+ });
584
+ // Replace raw execution with guarded version for all downstream consumers
585
+ executionService = orchestrator.execution;
586
+ logger_1.logger.info('Trading orchestrator wired: safety manager + circuit breaker active');
587
+ }
588
+ // Position manager + bridge: automated TP/SL/trailing stop exits.
589
+ // executeClose callback is created first, then passed to the PM config,
590
+ // so triggers fire close orders through the (guarded) execution service.
591
+ let positionManager = null;
592
+ let positionBridge = null;
593
+ if (executionService) {
594
+ const executeClose = (0, position_bridge_1.createPositionCloseCallback)(executionService);
595
+ positionManager = (0, position_manager_1.createPositionManager)({ executeClose });
596
+ logger_1.logger.info('Position manager created with auto-close callback');
597
+ }
598
+ // Execution queue setup — reads from config.queue or env vars.
599
+ // Decouples gateway from execution: orders go through BullMQ.
600
+ // Only agent tool handlers use the queued wrapper; other services
601
+ // (copy trading, arbitrage executor) keep using the direct service
602
+ // since they need the full ExecutionService interface.
603
+ let executionProducer = null;
604
+ let queuedExecutionRef = null;
605
+ const queueRedisHost = config.queue?.redis?.host || process.env.REDIS_HOST;
606
+ const queueEnabled = config.queue?.enabled ?? !!queueRedisHost;
607
+ if (queueEnabled && queueRedisHost && executionService) {
608
+ try {
609
+ const queueRedisPort = config.queue?.redis?.port
610
+ ?? parseInt(process.env.REDIS_PORT || '6379', 10);
611
+ const queueRedisPassword = config.queue?.redis?.password
612
+ || process.env.REDIS_PASSWORD || undefined;
613
+ const queueTimeoutMs = config.queue?.timeoutMs
614
+ ?? parseInt(process.env.EXECUTION_QUEUE_TIMEOUT_MS || '30000', 10);
615
+ executionProducer = (0, jobs_1.createExecutionProducer)({
616
+ redis: {
617
+ host: queueRedisHost,
618
+ port: queueRedisPort,
619
+ password: queueRedisPassword,
620
+ maxRetriesPerRequest: null,
621
+ },
622
+ defaultTimeoutMs: queueTimeoutMs,
623
+ });
624
+ // Create queue-based wrapper for agent tool handlers only
625
+ queuedExecutionRef = (0, jobs_1.createQueuedExecutionService)(executionProducer);
626
+ logger_1.logger.info({ redisHost: queueRedisHost, redisPort: queueRedisPort }, 'Execution queue enabled - agent orders will be processed via BullMQ worker');
627
+ }
628
+ catch (error) {
629
+ logger_1.logger.warn({ error }, 'Failed to create execution queue producer - falling back to direct execution');
630
+ }
631
+ }
632
+ // Create copy trading service
633
+ let copyTrading = null;
634
+ if (config.copyTrading?.enabled && whaleTracker) {
635
+ copyTrading = (0, copy_trading_1.createCopyTradingService)(whaleTracker, executionService, {
636
+ followedAddresses: config.copyTrading?.followedAddresses ?? [],
637
+ sizingMode: config.copyTrading?.sizingMode ?? 'fixed',
638
+ fixedSize: config.copyTrading?.fixedSize ?? 100,
639
+ proportionMultiplier: config.copyTrading?.proportionalMultiplier ?? 0.1,
640
+ portfolioPercentage: config.copyTrading?.portfolioPercentage ?? 1,
641
+ maxPositionSize: config.copyTrading?.maxPositionSize ?? 500,
642
+ copyDelayMs: config.copyTrading?.copyDelayMs ?? 5000,
643
+ dryRun: executionService ? (config.copyTrading?.dryRun ?? false) : true,
644
+ });
645
+ }
646
+ // Create smart router for order routing
647
+ const smartRouter = config.smartRouting?.enabled !== false
648
+ ? (0, smart_router_1.createSmartRouter)(feeds, {
649
+ mode: config.smartRouting?.mode ?? 'balanced',
650
+ enabledPlatforms: config.smartRouting?.platforms ?? ['polymarket', 'kalshi'],
651
+ maxSlippage: config.smartRouting?.maxSlippage ?? 1,
652
+ preferMaker: config.smartRouting?.preferMaker ?? true,
653
+ allowSplitting: config.smartRouting?.allowSplitting ?? false,
654
+ })
655
+ : null;
656
+ // Wire TWAP + Bracket + Trigger order routers (require executionService)
657
+ if (executionService) {
658
+ const { createTwapRouter } = await Promise.resolve().then(() => __importStar(require('./twap-routes.js')));
659
+ httpGateway.setTwapRouter(createTwapRouter({ execution: executionService }));
660
+ const { createBracketRouter } = await Promise.resolve().then(() => __importStar(require('./bracket-routes.js')));
661
+ httpGateway.setBracketRouter(createBracketRouter({ execution: executionService }));
662
+ const { createTriggerOrderManager } = await Promise.resolve().then(() => __importStar(require('../execution/trigger-orders.js')));
663
+ const triggerManager = createTriggerOrderManager(executionService, feeds);
664
+ const { createTriggerRouter } = await Promise.resolve().then(() => __importStar(require('./trigger-routes.js')));
665
+ httpGateway.setTriggerRouter(createTriggerRouter({ manager: triggerManager }));
666
+ triggerManager.start();
667
+ logger_1.logger.info('TWAP, Bracket, Trigger order APIs wired');
668
+ }
669
+ // Wire Copy Trading router (requires copyTrading service)
670
+ if (copyTrading) {
671
+ const { createCopyTradingRouter } = await Promise.resolve().then(() => __importStar(require('./copy-trading-routes.js')));
672
+ httpGateway.setCopyTradingRouter(createCopyTradingRouter({ service: copyTrading }));
673
+ logger_1.logger.info('Copy Trading API wired');
674
+ }
675
+ // Wire Opportunity Finder router
676
+ if (opportunityFinder) {
677
+ const { createOpportunityRouter } = await Promise.resolve().then(() => __importStar(require('./opportunity-routes.js')));
678
+ httpGateway.setOpportunityRouter(createOpportunityRouter({ finder: opportunityFinder }));
679
+ logger_1.logger.info('Opportunity Finder API wired');
680
+ }
681
+ // Wire Whale Tracker router
682
+ if (whaleTracker) {
683
+ const { createWhaleRouter } = await Promise.resolve().then(() => __importStar(require('./whale-routes.js')));
684
+ httpGateway.setWhaleRouter(createWhaleRouter({ tracker: whaleTracker }));
685
+ logger_1.logger.info('Whale Tracker API wired');
686
+ }
687
+ // Wire Risk Engine router (requires safetyManager for risk context)
688
+ if (executionService && safetyManager) {
689
+ const { createRiskEngine } = await Promise.resolve().then(() => __importStar(require('../risk/engine.js')));
690
+ const riskContext = {
691
+ tradingContext: { maxOrderSize: config.trading?.maxOrderSize ?? 1000 },
692
+ db: {
693
+ getUser: (userId) => db.getUser(userId),
694
+ getPositions: (userId) => db.getPositions(userId),
695
+ },
696
+ };
697
+ const riskEngine = createRiskEngine({ initialBankroll: 10000 }, { riskContext, safetyManager });
698
+ const { createRiskRouter } = await Promise.resolve().then(() => __importStar(require('./risk-routes.js')));
699
+ httpGateway.setRiskRouter(createRiskRouter({ engine: riskEngine }));
700
+ logger_1.logger.info('Risk Engine API wired');
701
+ }
702
+ // Wire Smart Router API (requires smartRouter)
703
+ if (smartRouter) {
704
+ const { createRoutingRouter } = await Promise.resolve().then(() => __importStar(require('./routing-routes.js')));
705
+ httpGateway.setRoutingRouter(createRoutingRouter({ router: smartRouter }));
706
+ logger_1.logger.info('Smart Router API wired');
707
+ }
708
+ // Wire Feeds Manager API (always available)
709
+ {
710
+ const { createFeedsRouter } = await Promise.resolve().then(() => __importStar(require('./feeds-routes.js')));
711
+ httpGateway.setFeedsRouter(createFeedsRouter({ feeds: feeds }));
712
+ logger_1.logger.info('Feeds Manager API wired');
713
+ }
714
+ // Wire Monitoring API (providerHealth may be null)
715
+ {
716
+ const { createMonitoringRouter } = await Promise.resolve().then(() => __importStar(require('./monitoring-routes.js')));
717
+ httpGateway.setMonitoringRouter(createMonitoringRouter({ providerHealth }));
718
+ logger_1.logger.info('Monitoring API wired');
719
+ }
720
+ // Wire Alt Data API (lazy — altDataService created later in start())
721
+ {
722
+ const { createAltDataRouter } = await Promise.resolve().then(() => __importStar(require('./alt-data-routes.js')));
723
+ httpGateway.setAltDataRouter(createAltDataRouter({ getService: () => altDataService }));
724
+ logger_1.logger.info('Alt Data API wired');
725
+ }
726
+ // Wire Alerts API (lazy — alertService may not be instantiated)
727
+ {
728
+ const { createAlertsRouter } = await Promise.resolve().then(() => __importStar(require('./alerts-routes.js')));
729
+ httpGateway.setAlertsRouter(createAlertsRouter({ getService: () => null }));
730
+ logger_1.logger.info('Alerts API wired (service injected when available)');
731
+ }
732
+ // Wire Execution Queue API (requires Redis / executionProducer)
733
+ if (executionProducer) {
734
+ const { createQueueRouter } = await Promise.resolve().then(() => __importStar(require('./queue-routes.js')));
735
+ httpGateway.setQueueRouter(createQueueRouter({ producer: executionProducer }));
736
+ logger_1.logger.info('Execution Queue API wired');
737
+ }
738
+ // Wire Webhooks API
739
+ {
740
+ const { createWebhooksRouter } = await Promise.resolve().then(() => __importStar(require('./webhooks-routes.js')));
741
+ httpGateway.setWebhooksRouter(createWebhooksRouter({ manager: webhookManager }));
742
+ logger_1.logger.info('Webhooks API wired');
743
+ }
744
+ // Wire Payments/x402 API (lazy — x402Client created later)
745
+ {
746
+ const { createPaymentsRouter } = await Promise.resolve().then(() => __importStar(require('./payments-routes.js')));
747
+ httpGateway.setPaymentsRouter(createPaymentsRouter({ getClient: () => x402Client }));
748
+ logger_1.logger.info('Payments API wired');
749
+ }
750
+ // Wire Embeddings API (always available)
751
+ {
752
+ const { createEmbeddingsRouter } = await Promise.resolve().then(() => __importStar(require('./embeddings-routes.js')));
753
+ httpGateway.setEmbeddingsRouter(createEmbeddingsRouter({ embeddings }));
754
+ logger_1.logger.info('Embeddings API wired');
755
+ }
756
+ // Wire Cron Service API (lazy — cronService created in startCronService())
757
+ {
758
+ const { createCronRouter } = await Promise.resolve().then(() => __importStar(require('./cron-routes.js')));
759
+ httpGateway.setCronRouter(createCronRouter({ getService: () => cronService }));
760
+ logger_1.logger.info('Cron Service API wired');
761
+ }
762
+ // Realtime alerts service (created after sendMessage is defined)
763
+ let realtimeAlerts = null;
764
+ let whaleTrackerCleanup = null;
765
+ let opportunityFinderCleanup = null;
766
+ // Auto-arbitrage executor
767
+ let arbitrageExecutor = null;
768
+ // Signal router — routes signals to execution
769
+ let signalRouter = null;
770
+ // ML training pipeline — learn from signal outcomes
771
+ let mlPipeline = null;
772
+ // Tick recorder for historical data
773
+ let tickRecorder = null;
774
+ // Tick streamer for real-time WebSocket streaming
775
+ let tickStreamer = null;
776
+ // Feature engineering for computing trading indicators
777
+ let featureEngine = null;
778
+ // Bot manager — strategy lifecycle (start/stop/pause/resume)
779
+ let botManager = null;
780
+ // Trade logger — records fills and PnL
781
+ let tradeLogger = null;
782
+ // Strategy builder — template-based + NL strategy creation
783
+ let strategyBuilder = null;
784
+ const sendMessage = async (message) => {
785
+ if (!channels) {
786
+ logger_1.logger.warn({ platform: message.platform }, 'Channel manager not ready; dropping message');
787
+ return null;
788
+ }
789
+ return channels.send(message);
790
+ };
791
+ const editMessage = async (message) => {
792
+ if (!channels) {
793
+ logger_1.logger.warn({ platform: message.platform }, 'Channel manager not ready; dropping edit');
794
+ return;
795
+ }
796
+ await channels.edit(message);
797
+ };
798
+ const deleteMessage = async (message) => {
799
+ if (!channels) {
800
+ logger_1.logger.warn({ platform: message.platform }, 'Channel manager not ready; dropping delete');
801
+ return;
802
+ }
803
+ await channels.delete(message);
804
+ };
805
+ const reactMessage = async (message) => {
806
+ if (!channels) {
807
+ logger_1.logger.warn({ platform: message.platform }, 'Channel manager not ready; dropping reaction');
808
+ return;
809
+ }
810
+ await channels.react(message);
811
+ };
812
+ const createPoll = async (message) => {
813
+ if (!channels) {
814
+ logger_1.logger.warn({ platform: message.platform }, 'Channel manager not ready; dropping poll');
815
+ return null;
816
+ }
817
+ return channels.sendPoll(message);
818
+ };
819
+ // Initialize realtime alerts if enabled
820
+ if (config.realtimeAlerts?.enabled) {
821
+ realtimeAlerts = (0, alerts_1.createRealtimeAlertsService)(sendMessage, {
822
+ enabled: true,
823
+ targets: config.realtimeAlerts.targets?.map(t => ({
824
+ platform: t.platform,
825
+ chatId: t.chatId,
826
+ accountId: t.accountId,
827
+ })),
828
+ whaleTrades: config.realtimeAlerts.whaleTrades,
829
+ arbitrage: config.realtimeAlerts.arbitrage,
830
+ priceMovement: config.realtimeAlerts.priceMovement,
831
+ copyTrading: config.realtimeAlerts.copyTrading,
832
+ });
833
+ // Connect to whale tracker if available
834
+ if (whaleTracker) {
835
+ whaleTrackerCleanup = (0, alerts_1.connectWhaleTracker)(realtimeAlerts, whaleTracker);
836
+ }
837
+ // Connect to opportunity finder if available
838
+ if (opportunityFinder) {
839
+ opportunityFinderCleanup = (0, alerts_1.connectOpportunityFinder)(realtimeAlerts, opportunityFinder);
840
+ }
841
+ logger_1.logger.info({ targets: config.realtimeAlerts.targets?.length ?? 0 }, 'Realtime alerts service initialized');
842
+ }
843
+ // Initialize auto-arbitrage executor if enabled
844
+ if (config.arbitrageExecution?.enabled && opportunityFinder) {
845
+ const wantsDryRun = config.arbitrageExecution?.dryRun ?? false;
846
+ const effectiveDryRun = executionService ? wantsDryRun : true;
847
+ if (!executionService && !wantsDryRun) {
848
+ logger_1.logger.warn('arbitrageExecution.dryRun=false but no execution service available - forcing dry run');
849
+ }
850
+ arbitrageExecutor = (0, executor_1.createOpportunityExecutor)(opportunityFinder, executionService, {
851
+ dryRun: effectiveDryRun,
852
+ minEdge: config.arbitrageExecution?.minEdge ?? 1.0,
853
+ minLiquidity: config.arbitrageExecution?.minLiquidity ?? 500,
854
+ maxPositionSize: config.arbitrageExecution?.maxPositionSize ?? 100,
855
+ maxDailyLoss: config.arbitrageExecution?.maxDailyLoss ?? 500,
856
+ maxConcurrentPositions: config.arbitrageExecution?.maxConcurrentPositions ?? 3,
857
+ enabledPlatforms: config.arbitrageExecution?.platforms ?? ['polymarket', 'kalshi'],
858
+ preferMakerOrders: config.arbitrageExecution?.preferMakerOrders ?? true,
859
+ confirmationDelayMs: config.arbitrageExecution?.confirmationDelayMs ?? 0,
860
+ }, smartRouter);
861
+ logger_1.logger.info({ dryRun: effectiveDryRun, hasExecutionService: !!executionService }, 'Arbitrage executor initialized');
862
+ }
863
+ // Initialize ML pipeline if enabled (before signal router so model is available)
864
+ if (config.mlPipeline?.enabled) {
865
+ mlPipeline = (0, ml_pipeline_1.createMLPipeline)(db, config.mlPipeline);
866
+ logger_1.logger.info('ML training pipeline initialized');
867
+ }
868
+ // Initialize signal router if enabled
869
+ const signalRouterCfg = config.signalRouter;
870
+ if (signalRouterCfg?.enabled) {
871
+ const mlModel = (config.mlPipeline?.useMLConfidence !== false && mlPipeline)
872
+ ? mlPipeline.getModel()
873
+ : null;
874
+ signalRouter = (0, signal_router_1.createSignalRouter)(executionService, signalRouterCfg, smartRouter, mlModel);
875
+ logger_1.logger.info({ dryRun: signalRouterCfg.dryRun ?? true, mlEnabled: !!mlModel }, 'Signal router initialized');
876
+ }
877
+ // Initialize tick recorder if enabled
878
+ if (config.tickRecorder?.enabled && config.tickRecorder.connectionString) {
879
+ tickRecorder = (0, tick_recorder_1.createTickRecorder)({
880
+ enabled: true,
881
+ connectionString: config.tickRecorder.connectionString,
882
+ batchSize: config.tickRecorder.batchSize,
883
+ flushIntervalMs: config.tickRecorder.flushIntervalMs,
884
+ retentionDays: config.tickRecorder.retentionDays,
885
+ platforms: config.tickRecorder.platforms,
886
+ });
887
+ logger_1.logger.info({ platforms: config.tickRecorder.platforms ?? 'all' }, 'Tick recorder initialized (will start with gateway)');
888
+ }
889
+ // Initialize tick streamer for real-time WebSocket streaming
890
+ tickStreamer = (0, tick_streamer_1.createTickStreamer)({
891
+ maxSubscriptionsPerClient: 100,
892
+ pingIntervalMs: 30000,
893
+ connectionTimeoutMs: 60000,
894
+ });
895
+ // Initialize feature engineering for computing trading indicators
896
+ featureEngine = (0, feature_engineering_1.createFeatureEngineering)({
897
+ tickWindowSize: 100,
898
+ orderbookWindowSize: 50,
899
+ momentumLookback: 20,
900
+ volatilityLookback: 50,
901
+ });
902
+ // Make feature engine available globally for other services
903
+ (0, feature_engineering_1.setFeatureEngine)(featureEngine);
904
+ // ── Signal Bus: single subscription point for all feed consumers ──────────
905
+ const signalBus = (0, signal_bus_1.createSignalBus)();
906
+ // Tick consumers (error-isolated via signal bus)
907
+ signalBus.onTick((update) => tickRecorder?.recordTick(update));
908
+ signalBus.onTick((update) => {
909
+ if (tickStreamer && update.outcomeId) {
910
+ tickStreamer.broadcastTick({
911
+ platform: update.platform,
912
+ marketId: update.marketId,
913
+ outcomeId: update.outcomeId,
914
+ price: update.price,
915
+ prevPrice: update.prevPrice ?? null,
916
+ timestamp: update.timestamp,
917
+ });
918
+ }
919
+ });
920
+ signalBus.onTick((update) => {
921
+ if (featureEngine && update.outcomeId) {
922
+ featureEngine.processTick({
923
+ platform: update.platform,
924
+ marketId: update.marketId,
925
+ outcomeId: update.outcomeId,
926
+ price: update.price,
927
+ prevPrice: update.prevPrice ?? null,
928
+ timestamp: update.timestamp,
929
+ });
930
+ }
931
+ });
932
+ // Orderbook consumers
933
+ signalBus.onOrderbook((update) => tickRecorder?.recordOrderbook(update));
934
+ signalBus.onOrderbook((update) => {
935
+ if (tickStreamer) {
936
+ tickStreamer.broadcastOrderbook({
937
+ platform: update.platform,
938
+ marketId: update.marketId,
939
+ outcomeId: update.outcomeId,
940
+ bids: update.bids,
941
+ asks: update.asks,
942
+ spread: update.spread ?? null,
943
+ midPrice: update.midPrice ?? null,
944
+ timestamp: update.timestamp,
945
+ });
946
+ }
947
+ });
948
+ signalBus.onOrderbook((update) => {
949
+ if (featureEngine) {
950
+ featureEngine.processOrderbook({
951
+ platform: update.platform,
952
+ marketId: update.marketId,
953
+ outcomeId: update.outcomeId,
954
+ bids: update.bids,
955
+ asks: update.asks,
956
+ timestamp: update.timestamp,
957
+ });
958
+ }
959
+ });
960
+ // Log feature signals for observability (consumers can subscribe via signalBus.onSignal)
961
+ signalBus.onSignal((signal) => {
962
+ logger_1.logger.debug({ type: signal.type, platform: signal.platform, market: signal.marketId, strength: signal.strength, direction: signal.direction }, 'Trading signal emitted');
963
+ });
964
+ // Connect feature engine signal output → signal bus
965
+ featureEngine.setEmitter(signalBus);
966
+ // Connect feeds → signal bus (single subscription point)
967
+ signalBus.connectFeeds(feeds);
968
+ logger_1.logger.info('Signal bus wired: feeds → tick/orderbook/signal consumers');
969
+ // Create position bridge (wires signal bus ticks → PM price updates,
970
+ // signal router fills → PM position tracking, PM close events → cleanup)
971
+ if (positionManager) {
972
+ positionBridge = (0, position_bridge_1.createPositionBridge)({
973
+ positionManager,
974
+ signalBus,
975
+ signalRouter,
976
+ });
977
+ logger_1.logger.info('Position bridge created');
978
+ }
979
+ // Initialize x402 client for outbound payments (agent-to-agent)
980
+ let x402Client = null;
981
+ if (config.x402?.enabled && (config.x402.evmPrivateKey || config.x402.solanaPrivateKey)) {
982
+ x402Client = (0, x402_1.createX402Client)({
983
+ network: config.x402.network,
984
+ evmPrivateKey: config.x402.evmPrivateKey,
985
+ solanaPrivateKey: config.x402.solanaPrivateKey,
986
+ autoApproveLimit: config.x402.autoApproveLimit,
987
+ dryRun: config.x402.dryRun,
988
+ });
989
+ logger_1.logger.info('x402 client initialized for outbound payments');
990
+ }
991
+ const startMonitoring = () => {
992
+ monitoring?.stop();
993
+ monitoring = (0, monitoring_1.createMonitoringService)({
994
+ config: currentConfig.monitoring,
995
+ providerHealth,
996
+ sendMessage,
997
+ resolveAccountId: (target) => {
998
+ if (target.accountId)
999
+ return target.accountId;
1000
+ if (!target.platform || !target.chatId)
1001
+ return undefined;
1002
+ const session = db.getLatestSessionForChat(target.platform, target.chatId);
1003
+ return session?.accountId;
1004
+ },
1005
+ });
1006
+ monitoring.start();
1007
+ };
1008
+ async function startCronService() {
1009
+ const cronEnabled = currentConfig.cron?.enabled !== false;
1010
+ if (!cronEnabled) {
1011
+ cronService?.stop();
1012
+ cronService = null;
1013
+ logger_1.logger.info('Cron service disabled');
1014
+ return;
1015
+ }
1016
+ cronService?.stop();
1017
+ cronService = (0, cron_1.createCronService)({
1018
+ db,
1019
+ feeds,
1020
+ sendMessage,
1021
+ credentials: cronCredentials,
1022
+ config: currentConfig,
1023
+ });
1024
+ await cronService.start();
1025
+ }
1026
+ async function updatePositionPrices() {
1027
+ const positions = db.listPositionsForPricing();
1028
+ if (positions.length === 0)
1029
+ return;
1030
+ const grouped = new Map();
1031
+ for (const position of positions) {
1032
+ const key = `${position.platform}:${position.marketId}`;
1033
+ const list = grouped.get(key) || [];
1034
+ list.push(position);
1035
+ grouped.set(key, list);
1036
+ }
1037
+ for (const [key, entries] of grouped.entries()) {
1038
+ const [platform, marketId] = key.split(':');
1039
+ try {
1040
+ const market = await feeds.getMarket(marketId, platform);
1041
+ if (!market)
1042
+ continue;
1043
+ for (const position of entries) {
1044
+ const outcome = market.outcomes.find((o) => o.id === position.outcomeId ||
1045
+ o.name.toLowerCase() === position.outcome.toLowerCase());
1046
+ if (!outcome)
1047
+ continue;
1048
+ if (Number.isFinite(outcome.price)) {
1049
+ db.updatePositionPrice(position.id, outcome.price);
1050
+ }
1051
+ }
1052
+ }
1053
+ catch (error) {
1054
+ logger_1.logger.warn({ error, platform, marketId }, 'Failed to update position prices for market');
1055
+ }
1056
+ }
1057
+ const positionConfig = currentConfig.positions ?? {};
1058
+ if (positionConfig.pnlSnapshotsEnabled !== false) {
1059
+ const userIds = new Set(positions.map((pos) => pos.userId));
1060
+ for (const userId of userIds) {
1061
+ const userPositions = db.getPositions(userId);
1062
+ if (userPositions.length === 0)
1063
+ continue;
1064
+ let totalValue = 0;
1065
+ let totalPnl = 0;
1066
+ let totalCostBasis = 0;
1067
+ const byPlatform = {};
1068
+ for (const pos of userPositions) {
1069
+ const value = pos.shares * pos.currentPrice;
1070
+ const costBasis = pos.shares * pos.avgPrice;
1071
+ const pnl = value - costBasis;
1072
+ totalValue += value;
1073
+ totalPnl += pnl;
1074
+ totalCostBasis += costBasis;
1075
+ const agg = byPlatform[pos.platform] || { value: 0, pnl: 0 };
1076
+ agg.value += value;
1077
+ agg.pnl += pnl;
1078
+ byPlatform[pos.platform] = agg;
1079
+ }
1080
+ const totalPnlPct = totalCostBasis > 0 ? totalPnl / totalCostBasis : 0;
1081
+ db.createPortfolioSnapshot({
1082
+ userId,
1083
+ totalValue,
1084
+ totalPnl,
1085
+ totalPnlPct,
1086
+ totalCostBasis,
1087
+ positionsCount: userPositions.length,
1088
+ byPlatform,
1089
+ });
1090
+ }
1091
+ const historyDays = positionConfig.pnlHistoryDays ?? 90;
1092
+ if (historyDays > 0) {
1093
+ const cutoffMs = Date.now() - historyDays * 24 * 60 * 60 * 1000;
1094
+ db.deletePortfolioSnapshotsBefore(cutoffMs);
1095
+ }
1096
+ }
1097
+ }
1098
+ function startMarketCacheCleanup() {
1099
+ const cacheConfig = currentConfig.marketCache ?? {};
1100
+ if (cacheConfig.enabled === false)
1101
+ return;
1102
+ const ttlMs = cacheConfig.ttlMs ?? 30 * 60 * 1000;
1103
+ const intervalMs = cacheConfig.cleanupIntervalMs ?? 15 * 60 * 1000;
1104
+ const runCleanup = () => {
1105
+ const cutoff = Date.now() - ttlMs;
1106
+ const removed = db.pruneMarketCache(cutoff);
1107
+ if (removed > 0) {
1108
+ logger_1.logger.info({ removed, cutoff }, 'Market cache cleanup completed');
1109
+ }
1110
+ };
1111
+ runCleanup();
1112
+ if (!marketCacheCleanupInterval) {
1113
+ marketCacheCleanupInterval = setInterval(() => {
1114
+ runCleanup();
1115
+ }, intervalMs);
1116
+ logger_1.logger.info({ ttlMs, intervalMs }, 'Market cache cleanup started');
1117
+ }
1118
+ }
1119
+ function startMarketIndexSync() {
1120
+ const indexConfig = currentConfig.marketIndex ?? {};
1121
+ if (indexConfig.enabled === false)
1122
+ return;
1123
+ const intervalMs = indexConfig.syncIntervalMs ?? 6 * 60 * 60 * 1000;
1124
+ const staleAfterMs = indexConfig.staleAfterMs ?? 7 * 24 * 60 * 60 * 1000;
1125
+ const limitPerPlatform = indexConfig.limitPerPlatform ?? 300;
1126
+ const status = indexConfig.status ?? 'open';
1127
+ const excludeSports = indexConfig.excludeSports ?? true;
1128
+ const platforms = indexConfig.platforms ?? ['polymarket', 'kalshi', 'manifold', 'metaculus'];
1129
+ const minVolume24h = indexConfig.minVolume24h ?? 0;
1130
+ const minLiquidity = indexConfig.minLiquidity ?? 0;
1131
+ const minOpenInterest = indexConfig.minOpenInterest ?? 0;
1132
+ const minPredictions = indexConfig.minPredictions ?? 0;
1133
+ const excludeResolved = indexConfig.excludeResolved ?? false;
1134
+ const runSync = async () => {
1135
+ try {
1136
+ const result = await marketIndex.sync({
1137
+ platforms,
1138
+ limitPerPlatform,
1139
+ status,
1140
+ excludeSports,
1141
+ minVolume24h,
1142
+ minLiquidity,
1143
+ minOpenInterest,
1144
+ minPredictions,
1145
+ excludeResolved,
1146
+ prune: true,
1147
+ staleAfterMs,
1148
+ });
1149
+ logger_1.logger.info({ result }, 'Market index sync completed');
1150
+ }
1151
+ catch (error) {
1152
+ logger_1.logger.warn({ error }, 'Market index sync failed');
1153
+ }
1154
+ };
1155
+ void runSync();
1156
+ if (!marketIndexSyncInterval) {
1157
+ marketIndexSyncInterval = setInterval(() => {
1158
+ void runSync();
1159
+ }, intervalMs);
1160
+ logger_1.logger.info({
1161
+ intervalMs,
1162
+ platforms,
1163
+ limitPerPlatform,
1164
+ status,
1165
+ minVolume24h,
1166
+ minLiquidity,
1167
+ minOpenInterest,
1168
+ minPredictions,
1169
+ staleAfterMs,
1170
+ }, 'Market index sync scheduled');
1171
+ }
1172
+ }
1173
+ const getConfig = () => currentConfig;
1174
+ let webhookTool;
1175
+ // Pass queued wrapper to agents when available; fall back to direct service
1176
+ let agents = await (0, agents_1.createAgentManager)(currentConfig, feeds, db, sessions, sendMessage, editMessage, deleteMessage, reactMessage, createPoll, memory, getConfig, () => webhookTool, queuedExecutionRef ?? executionService);
1177
+ // Wire command palette for webchat — merges registry commands + skill commands
1178
+ httpGateway.setCommandListHandler(() => {
1179
+ const registryCommands = commands.listAll();
1180
+ const registryNames = new Set(registryCommands.map(c => c.name));
1181
+ const skillEntries = [];
1182
+ for (const s of agents.getSkillCommands()) {
1183
+ const normalized = s.name.toLowerCase().replace(/\s+/g, '-');
1184
+ if (registryNames.has(`/${normalized}`))
1185
+ continue;
1186
+ const cats = registry_1.COMMAND_CATEGORIES[s.name] || registry_1.COMMAND_CATEGORIES[normalized] || 'Other';
1187
+ const catList = Array.isArray(cats) ? cats : [cats];
1188
+ for (const category of catList) {
1189
+ skillEntries.push({
1190
+ name: `/${normalized}`,
1191
+ description: s.description,
1192
+ category,
1193
+ subcommands: s.subcommands || [],
1194
+ });
1195
+ }
1196
+ }
1197
+ return [...registryCommands, ...skillEntries]
1198
+ .sort((a, b) => a.category.localeCompare(b.category) || a.name.localeCompare(b.name));
1199
+ });
1200
+ webhookTool = (0, webhooks_1.createWebhookTool)({
1201
+ manager: webhookManager,
1202
+ gatewayPort: currentConfig.gateway.port,
1203
+ sessions,
1204
+ commands,
1205
+ feeds,
1206
+ db,
1207
+ memory,
1208
+ sendMessage,
1209
+ handleAgentMessage: (message, session) => agents.handleMessage(message, session),
1210
+ });
1211
+ let skillWatcher = null;
1212
+ let skillReloadTimer = null;
1213
+ let configReloadTimer = null;
1214
+ function getSkillWatchPaths(cfg) {
1215
+ const bundledDir = path_1.default.join(__dirname, '..', 'skills', 'bundled');
1216
+ const managedDir = path_1.default.join(process.cwd(), '.clodds', 'skills');
1217
+ const workspaceDir = path_1.default.join(cfg.agents.defaults.workspace, 'skills');
1218
+ return [bundledDir, managedDir, workspaceDir];
1219
+ }
1220
+ function scheduleSkillReload(trigger) {
1221
+ if (skillReloadTimer) {
1222
+ clearTimeout(skillReloadTimer);
1223
+ }
1224
+ skillReloadTimer = setTimeout(() => {
1225
+ logger_1.logger.info({ trigger }, 'Reloading skills');
1226
+ agents.reloadSkills();
1227
+ }, 150);
1228
+ }
1229
+ function setupSkillWatcher() {
1230
+ if (skillWatcher) {
1231
+ skillWatcher.close().catch((err) => {
1232
+ logger_1.logger.debug({ err }, 'Error closing skill watcher during reset');
1233
+ });
1234
+ }
1235
+ const paths = getSkillWatchPaths(currentConfig);
1236
+ skillWatcher = chokidar_1.default.watch(paths, {
1237
+ ignoreInitial: true,
1238
+ awaitWriteFinish: { stabilityThreshold: 200, pollInterval: 50 },
1239
+ });
1240
+ skillWatcher.on('add', () => scheduleSkillReload('add'));
1241
+ skillWatcher.on('change', () => scheduleSkillReload('change'));
1242
+ skillWatcher.on('unlink', () => scheduleSkillReload('unlink'));
1243
+ watchers.push(skillWatcher);
1244
+ logger_1.logger.info({ paths }, 'Skill hot-reload watcher started');
1245
+ }
1246
+ async function rebuildRuntime(reason, workspaceChanged) {
1247
+ if (!started)
1248
+ return;
1249
+ if (reloadInFlight) {
1250
+ pendingReload = true;
1251
+ logger_1.logger.info({ reason }, 'Reload already in progress; queued follow-up reload');
1252
+ await reloadInFlight;
1253
+ return;
1254
+ }
1255
+ reloadInFlight = (async () => {
1256
+ logger_1.logger.info({ reason }, 'Rebuilding feeds/channels/agent from updated config');
1257
+ const oldChannels = channels;
1258
+ const oldFeeds = feeds;
1259
+ const oldAgents = agents;
1260
+ monitoring?.stop();
1261
+ monitoring = null;
1262
+ try {
1263
+ await oldChannels?.stop();
1264
+ }
1265
+ catch (error) {
1266
+ logger_1.logger.warn({ error }, 'Failed to stop old channels during reload');
1267
+ }
1268
+ // Stop alt-data service before rebuilding feeds
1269
+ if (altDataService) {
1270
+ altDataService.stop();
1271
+ altDataService = null;
1272
+ }
1273
+ // Stop percolator before rebuild (recreated after if still enabled)
1274
+ if (percolatorService) {
1275
+ if (percolatorService.keeper)
1276
+ percolatorService.keeper.stop();
1277
+ percolatorService.feed.disconnect();
1278
+ percolatorService = null;
1279
+ }
1280
+ try {
1281
+ await oldFeeds.stop();
1282
+ }
1283
+ catch (error) {
1284
+ logger_1.logger.warn({ error }, 'Failed to stop old feeds during reload');
1285
+ }
1286
+ try {
1287
+ oldAgents.dispose();
1288
+ }
1289
+ catch (error) {
1290
+ logger_1.logger.warn({ error }, 'Failed to dispose old agent during reload');
1291
+ }
1292
+ feeds = await (0, feeds_1.createFeedManager)(currentConfig.feeds);
1293
+ // Reconnect signal bus to new feeds (consumers keep their state)
1294
+ signalBus.disconnectFeeds();
1295
+ signalBus.connectFeeds(feeds);
1296
+ agents = await (0, agents_1.createAgentManager)(currentConfig, feeds, db, sessions, sendMessage, editMessage, deleteMessage, reactMessage, createPoll, memory, getConfig, () => webhookTool, queuedExecutionRef ?? executionService);
1297
+ channels = await (0, channels_1.createChannelManager)(currentConfig.channels, {
1298
+ onMessage: handleIncomingMessage,
1299
+ pairing,
1300
+ commands,
1301
+ }, { offlineQueue: currentConfig.messages?.offlineQueue });
1302
+ httpGateway.setChannelWebhookHandler(async (platform, event, req) => {
1303
+ if (!channels) {
1304
+ logger_1.logger.warn({ platform }, 'Channel webhook received before channels initialized');
1305
+ return null;
1306
+ }
1307
+ const adapter = channels.getAdapters()[platform];
1308
+ if (!adapter?.handleEvent) {
1309
+ logger_1.logger.warn({ platform }, 'Channel webhook handler not registered');
1310
+ return null;
1311
+ }
1312
+ return adapter.handleEvent(event, req);
1313
+ });
1314
+ const wss = httpGateway.getWebSocketServer();
1315
+ if (wss) {
1316
+ channels.attachWebSocket(wss);
1317
+ }
1318
+ await feeds.start();
1319
+ await channels.start();
1320
+ await startCronService();
1321
+ startMonitoring();
1322
+ // Recreate percolator service if still enabled
1323
+ if (currentConfig.feeds?.percolator?.enabled) {
1324
+ const { createPercolatorService } = await Promise.resolve().then(() => __importStar(require('../percolator/index.js')));
1325
+ percolatorService = createPercolatorService(currentConfig.feeds.percolator);
1326
+ await percolatorService.feed.connect();
1327
+ if (percolatorService.keeper)
1328
+ percolatorService.keeper.start();
1329
+ }
1330
+ // Recreate alt-data service with fresh feeds
1331
+ const rebuildAltDataCfg = currentConfig.altData;
1332
+ if (rebuildAltDataCfg?.enabled !== false) {
1333
+ altDataService = (0, alt_data_1.createAltDataService)({
1334
+ config: rebuildAltDataCfg ?? {},
1335
+ signalBus,
1336
+ feeds: feeds,
1337
+ embeddings: embeddings,
1338
+ });
1339
+ await altDataService.start();
1340
+ }
1341
+ // Recreate ML pipeline with current config
1342
+ if (currentConfig.mlPipeline?.enabled) {
1343
+ mlPipeline = (0, ml_pipeline_1.createMLPipeline)(db, currentConfig.mlPipeline);
1344
+ }
1345
+ // Recreate signal router with current config
1346
+ const rebuildSignalRouterCfg = currentConfig.signalRouter;
1347
+ if (rebuildSignalRouterCfg?.enabled) {
1348
+ const mlModel = (currentConfig.mlPipeline?.useMLConfidence !== false && mlPipeline)
1349
+ ? mlPipeline.getModel()
1350
+ : null;
1351
+ signalRouter = (0, signal_router_1.createSignalRouter)(executionService, rebuildSignalRouterCfg, smartRouter, mlModel);
1352
+ signalRouter.start(signalBus);
1353
+ // Start ML pipeline after signal router
1354
+ if (mlPipeline) {
1355
+ mlPipeline.start(signalRouter, null);
1356
+ }
1357
+ }
1358
+ // Reconnect position bridge to new signal router
1359
+ if (positionBridge) {
1360
+ positionBridge.stop();
1361
+ }
1362
+ if (positionManager) {
1363
+ positionBridge = (0, position_bridge_1.createPositionBridge)({
1364
+ positionManager,
1365
+ signalBus,
1366
+ signalRouter,
1367
+ });
1368
+ positionBridge.start();
1369
+ }
1370
+ if (workspaceChanged) {
1371
+ setupSkillWatcher();
1372
+ }
1373
+ else {
1374
+ scheduleSkillReload('config');
1375
+ }
1376
+ logger_1.logger.info('Runtime rebuild complete');
1377
+ })()
1378
+ .catch((error) => {
1379
+ logger_1.logger.error({ error }, 'Runtime rebuild failed');
1380
+ })
1381
+ .finally(async () => {
1382
+ reloadInFlight = null;
1383
+ if (pendingReload) {
1384
+ pendingReload = false;
1385
+ await rebuildRuntime('pending reload', true);
1386
+ }
1387
+ });
1388
+ await reloadInFlight;
1389
+ }
1390
+ function setupConfigWatcher() {
1391
+ const watcher = chokidar_1.default.watch(configPath, {
1392
+ ignoreInitial: true,
1393
+ awaitWriteFinish: { stabilityThreshold: 200, pollInterval: 50 },
1394
+ });
1395
+ const scheduleConfigReload = () => {
1396
+ if (configReloadTimer) {
1397
+ clearTimeout(configReloadTimer);
1398
+ }
1399
+ configReloadTimer = setTimeout(async () => {
1400
+ try {
1401
+ const previousWorkspace = currentConfig.agents.defaults.workspace;
1402
+ const next = await (0, config_1.loadConfig)(configPath);
1403
+ currentConfig = next;
1404
+ (0, http_1.configureHttpClient)(currentConfig.http);
1405
+ const workspaceChanged = next.agents.defaults.workspace !== previousWorkspace;
1406
+ agents.reloadConfig(next);
1407
+ await rebuildRuntime('config change', workspaceChanged);
1408
+ logger_1.logger.info({ configPath }, 'Config hot-reloaded');
1409
+ }
1410
+ catch (error) {
1411
+ logger_1.logger.error({ error, configPath }, 'Failed to hot-reload config');
1412
+ }
1413
+ }, 250);
1414
+ };
1415
+ watcher.on('add', scheduleConfigReload);
1416
+ watcher.on('change', scheduleConfigReload);
1417
+ watcher.on('unlink', scheduleConfigReload);
1418
+ watchers.push(watcher);
1419
+ logger_1.logger.info({ configPath }, 'Config hot-reload watcher started');
1420
+ }
1421
+ function getChannelRateLimitConfig(platform) {
1422
+ const channelConfig = currentConfig.channels?.[platform];
1423
+ if (!channelConfig?.rateLimit)
1424
+ return null;
1425
+ return channelConfig.rateLimit;
1426
+ }
1427
+ function getChannelRateLimiter(platform, config) {
1428
+ const existing = channelRateLimiters.get(platform);
1429
+ if (existing &&
1430
+ existing.config.maxRequests === config.maxRequests &&
1431
+ existing.config.windowMs === config.windowMs &&
1432
+ existing.config.perUser === config.perUser) {
1433
+ return existing;
1434
+ }
1435
+ const limiter = new security_1.RateLimiter(config);
1436
+ const entry = { config, limiter };
1437
+ channelRateLimiters.set(platform, entry);
1438
+ return entry;
1439
+ }
1440
+ const handleIncomingMessage = async (message) => {
1441
+ const normalized = (0, unified_1.normalizeIncomingMessage)(message);
1442
+ const channelRateLimit = getChannelRateLimitConfig(normalized.platform);
1443
+ if (channelRateLimit) {
1444
+ const limiterEntry = getChannelRateLimiter(normalized.platform, channelRateLimit);
1445
+ const rateLimitKey = channelRateLimit.perUser
1446
+ ? `${normalized.platform}:${normalized.userId}`
1447
+ : `${normalized.platform}:global`;
1448
+ const rateLimitResult = limiterEntry.limiter.check(rateLimitKey);
1449
+ if (!rateLimitResult.allowed) {
1450
+ const resetInSeconds = Math.ceil(rateLimitResult.resetIn / 1000);
1451
+ logger_1.logger.warn({ platform: normalized.platform, userId: normalized.userId, resetInSeconds }, 'Channel rate limit exceeded');
1452
+ await sendMessage({
1453
+ platform: normalized.platform,
1454
+ chatId: normalized.chatId,
1455
+ text: `Rate limit exceeded for ${normalized.platform}. Try again in ${resetInSeconds}s.`,
1456
+ parseMode: 'Markdown',
1457
+ thread: normalized.thread,
1458
+ });
1459
+ return;
1460
+ }
1461
+ }
1462
+ const session = await sessions.getOrCreateSession(normalized);
1463
+ const commandResponse = await commands.handle(normalized, {
1464
+ session,
1465
+ sessions,
1466
+ feeds,
1467
+ db,
1468
+ memory,
1469
+ opportunityFinder: opportunityFinder ?? undefined,
1470
+ bittensorService: bittensorService ?? undefined,
1471
+ send: sendMessage,
1472
+ });
1473
+ if (commandResponse) {
1474
+ await sendMessage({
1475
+ platform: normalized.platform,
1476
+ chatId: normalized.chatId,
1477
+ text: commandResponse,
1478
+ parseMode: 'Markdown',
1479
+ thread: normalized.thread,
1480
+ });
1481
+ return;
1482
+ }
1483
+ const responseText = await agents.handleMessage(normalized, session);
1484
+ if (responseText !== null) {
1485
+ await sendMessage({
1486
+ platform: normalized.platform,
1487
+ chatId: normalized.chatId,
1488
+ text: responseText,
1489
+ parseMode: 'Markdown',
1490
+ thread: normalized.thread,
1491
+ });
1492
+ }
1493
+ };
1494
+ channels = await (0, channels_1.createChannelManager)(config.channels, {
1495
+ onMessage: handleIncomingMessage,
1496
+ pairing,
1497
+ commands,
1498
+ }, { offlineQueue: config.messages?.offlineQueue });
1499
+ httpGateway.setChannelWebhookHandler(async (platform, event, req) => {
1500
+ if (!channels) {
1501
+ logger_1.logger.warn({ platform }, 'Channel webhook received before channels initialized');
1502
+ return null;
1503
+ }
1504
+ const adapter = channels.getAdapters()[platform];
1505
+ if (!adapter?.handleEvent) {
1506
+ logger_1.logger.warn({ platform }, 'Channel webhook handler not registered');
1507
+ return null;
1508
+ }
1509
+ return adapter.handleEvent(event, req);
1510
+ });
1511
+ httpGateway.setMarketIndexHandler(async (req) => {
1512
+ if (!currentConfig.marketIndex || currentConfig.marketIndex.enabled === false) {
1513
+ return { error: 'Market index disabled', status: 503 };
1514
+ }
1515
+ const query = typeof req.query.q === 'string' ? req.query.q.trim() : '';
1516
+ if (!query) {
1517
+ return { error: 'Missing query parameter: q', status: 400 };
1518
+ }
1519
+ const platform = typeof req.query.platform === 'string' ? req.query.platform : undefined;
1520
+ const limit = req.query.limit ? Number.parseInt(String(req.query.limit), 10) : undefined;
1521
+ const maxCandidates = req.query.maxCandidates
1522
+ ? Number.parseInt(String(req.query.maxCandidates), 10)
1523
+ : undefined;
1524
+ const minScore = req.query.minScore ? Number.parseFloat(String(req.query.minScore)) : undefined;
1525
+ let platformWeights;
1526
+ if (typeof req.query.platformWeights === 'string') {
1527
+ try {
1528
+ platformWeights = JSON.parse(req.query.platformWeights);
1529
+ }
1530
+ catch {
1531
+ return { error: 'Invalid platformWeights JSON', status: 400 };
1532
+ }
1533
+ }
1534
+ const results = await marketIndex.search({
1535
+ query,
1536
+ platform: platform,
1537
+ limit,
1538
+ maxCandidates,
1539
+ minScore,
1540
+ platformWeights: platformWeights,
1541
+ });
1542
+ return {
1543
+ results: results.map((r) => ({
1544
+ score: Number(r.score.toFixed(4)),
1545
+ market: {
1546
+ platform: r.item.platform,
1547
+ id: r.item.marketId,
1548
+ slug: r.item.slug,
1549
+ question: r.item.question,
1550
+ description: r.item.description,
1551
+ url: r.item.url,
1552
+ status: r.item.status,
1553
+ endDate: r.item.endDate,
1554
+ resolved: r.item.resolved,
1555
+ volume24h: r.item.volume24h,
1556
+ liquidity: r.item.liquidity,
1557
+ openInterest: r.item.openInterest,
1558
+ predictions: r.item.predictions,
1559
+ },
1560
+ })),
1561
+ };
1562
+ });
1563
+ httpGateway.setMarketIndexStatsHandler(async (req) => {
1564
+ if (!currentConfig.marketIndex || currentConfig.marketIndex.enabled === false) {
1565
+ return { error: 'Market index disabled', status: 503 };
1566
+ }
1567
+ const platforms = typeof req.query.platforms === 'string'
1568
+ ? req.query.platforms.split(',').map((p) => p.trim()).filter(Boolean)
1569
+ : undefined;
1570
+ const stats = marketIndex.stats(platforms);
1571
+ return { stats };
1572
+ });
1573
+ httpGateway.setMarketIndexSyncHandler(async (req) => {
1574
+ if (!currentConfig.marketIndex || currentConfig.marketIndex.enabled === false) {
1575
+ return { error: 'Market index disabled', status: 503 };
1576
+ }
1577
+ const body = (req.body || {});
1578
+ const platforms = Array.isArray(body.platforms)
1579
+ ? body.platforms
1580
+ : typeof body.platforms === 'string'
1581
+ ? body.platforms.split(',').map((p) => p.trim()).filter(Boolean)
1582
+ : undefined;
1583
+ const limitPerPlatform = typeof body.limitPerPlatform === 'number' ? body.limitPerPlatform : undefined;
1584
+ const status = typeof body.status === 'string' ? body.status : undefined;
1585
+ const excludeSports = typeof body.excludeSports === 'boolean' ? body.excludeSports : undefined;
1586
+ const minVolume24h = typeof body.minVolume24h === 'number' ? body.minVolume24h : undefined;
1587
+ const minLiquidity = typeof body.minLiquidity === 'number' ? body.minLiquidity : undefined;
1588
+ const minOpenInterest = typeof body.minOpenInterest === 'number' ? body.minOpenInterest : undefined;
1589
+ const minPredictions = typeof body.minPredictions === 'number' ? body.minPredictions : undefined;
1590
+ const excludeResolved = typeof body.excludeResolved === 'boolean' ? body.excludeResolved : undefined;
1591
+ const prune = typeof body.prune === 'boolean' ? body.prune : undefined;
1592
+ const staleAfterMs = typeof body.staleAfterMs === 'number' ? body.staleAfterMs : undefined;
1593
+ const result = await marketIndex.sync({
1594
+ platforms: platforms,
1595
+ limitPerPlatform,
1596
+ status: status,
1597
+ excludeSports,
1598
+ minVolume24h,
1599
+ minLiquidity,
1600
+ minOpenInterest,
1601
+ minPredictions,
1602
+ excludeResolved,
1603
+ prune,
1604
+ staleAfterMs,
1605
+ });
1606
+ return { result };
1607
+ });
1608
+ // Performance dashboard handler
1609
+ httpGateway.setPerformanceDashboardHandler(async (_req) => {
1610
+ // Get trade statistics from database
1611
+ const trades = db.query(`
1612
+ SELECT
1613
+ id,
1614
+ created_at as timestamp,
1615
+ COALESCE(market_question, market_id) as market,
1616
+ side,
1617
+ size,
1618
+ entry_price as entryPrice,
1619
+ exit_price as exitPrice,
1620
+ pnl,
1621
+ pnl_pct as pnlPct,
1622
+ status,
1623
+ strategy
1624
+ FROM trades
1625
+ ORDER BY created_at DESC
1626
+ LIMIT 100
1627
+ `);
1628
+ // Calculate stats
1629
+ const closedTrades = trades.filter(t => t.status === 'closed' && t.pnl != null);
1630
+ const winningTrades = closedTrades.filter(t => (t.pnl ?? 0) > 0);
1631
+ const totalPnl = closedTrades.reduce((sum, t) => sum + (t.pnl ?? 0), 0);
1632
+ const avgPnlPct = closedTrades.length > 0
1633
+ ? closedTrades.reduce((sum, t) => sum + (t.pnlPct ?? 0), 0) / closedTrades.length
1634
+ : 0;
1635
+ // Calculate Sharpe ratio (simplified - daily returns)
1636
+ const dailyPnl = {};
1637
+ for (const t of closedTrades) {
1638
+ const date = t.timestamp.split('T')[0];
1639
+ dailyPnl[date] = (dailyPnl[date] ?? 0) + (t.pnl ?? 0);
1640
+ }
1641
+ const dailyReturns = Object.values(dailyPnl);
1642
+ const avgReturn = dailyReturns.length > 0
1643
+ ? dailyReturns.reduce((a, b) => a + b, 0) / dailyReturns.length
1644
+ : 0;
1645
+ const stdDev = dailyReturns.length > 1
1646
+ ? Math.sqrt(dailyReturns.reduce((sum, r) => sum + Math.pow(r - avgReturn, 2), 0) / (dailyReturns.length - 1))
1647
+ : 1;
1648
+ const sharpeRatio = stdDev > 0 ? (avgReturn / stdDev) * Math.sqrt(252) : 0;
1649
+ // Calculate max drawdown
1650
+ let peak = 0;
1651
+ let maxDrawdown = 0;
1652
+ let cumulative = 0;
1653
+ const dailyData = [];
1654
+ const sortedDates = Object.keys(dailyPnl).sort();
1655
+ for (const date of sortedDates) {
1656
+ cumulative += dailyPnl[date];
1657
+ peak = Math.max(peak, cumulative);
1658
+ const drawdown = peak > 0 ? (peak - cumulative) / peak : 0;
1659
+ maxDrawdown = Math.max(maxDrawdown, drawdown);
1660
+ dailyData.push({ date, pnl: dailyPnl[date], cumulative });
1661
+ }
1662
+ // Group by strategy
1663
+ const strategyMap = {};
1664
+ for (const t of closedTrades) {
1665
+ const strat = t.strategy ?? 'Unknown';
1666
+ if (!strategyMap[strat]) {
1667
+ strategyMap[strat] = { trades: 0, wins: 0, pnl: 0 };
1668
+ }
1669
+ strategyMap[strat].trades++;
1670
+ if ((t.pnl ?? 0) > 0)
1671
+ strategyMap[strat].wins++;
1672
+ strategyMap[strat].pnl += t.pnl ?? 0;
1673
+ }
1674
+ const byStrategy = Object.entries(strategyMap).map(([strategy, data]) => ({
1675
+ strategy,
1676
+ trades: data.trades,
1677
+ winRate: data.trades > 0 ? (data.wins / data.trades) * 100 : 0,
1678
+ pnl: data.pnl,
1679
+ }));
1680
+ // Format recent trades
1681
+ const recentTrades = trades.slice(0, 20).map(t => ({
1682
+ id: t.id,
1683
+ timestamp: t.timestamp,
1684
+ market: t.market,
1685
+ side: t.side,
1686
+ size: t.size,
1687
+ entryPrice: t.entryPrice,
1688
+ exitPrice: t.exitPrice ?? undefined,
1689
+ pnl: t.pnl ?? undefined,
1690
+ pnlPct: t.pnlPct ?? undefined,
1691
+ status: t.status === 'closed'
1692
+ ? ((t.pnl ?? 0) > 0 ? 'win' : 'loss')
1693
+ : t.status,
1694
+ }));
1695
+ return {
1696
+ stats: {
1697
+ totalTrades: trades.length,
1698
+ winRate: closedTrades.length > 0 ? (winningTrades.length / closedTrades.length) * 100 : 0,
1699
+ totalPnl,
1700
+ avgPnlPct,
1701
+ sharpeRatio,
1702
+ maxDrawdown: maxDrawdown * 100,
1703
+ },
1704
+ recentTrades,
1705
+ dailyPnl: dailyData,
1706
+ byStrategy,
1707
+ };
1708
+ });
1709
+ // Backtest handler - runs backtest on historical trade data
1710
+ httpGateway.setBacktestHandler(async (req) => {
1711
+ const body = req.body;
1712
+ // Get historical trades for analysis
1713
+ const startDate = body.startDate ? new Date(body.startDate) : new Date(Date.now() - 30 * 24 * 60 * 60 * 1000);
1714
+ const endDate = body.endDate ? new Date(body.endDate) : new Date();
1715
+ const initialCapital = body.initialCapital ?? 10000;
1716
+ // Query historical trades
1717
+ const trades = db.query(`
1718
+ SELECT created_at, side, size, entry_price, exit_price, pnl, pnl_pct, status
1719
+ FROM trades
1720
+ WHERE created_at >= ? AND created_at <= ?
1721
+ ${body.platform ? 'AND platform = ?' : ''}
1722
+ ${body.marketId ? 'AND market_id = ?' : ''}
1723
+ ORDER BY created_at
1724
+ `, [
1725
+ startDate.toISOString(),
1726
+ endDate.toISOString(),
1727
+ ...(body.platform ? [body.platform] : []),
1728
+ ...(body.marketId ? [body.marketId] : []),
1729
+ ]);
1730
+ // Build equity curve from trades
1731
+ let equity = initialCapital;
1732
+ const equityCurve = [
1733
+ { timestamp: startDate.toISOString(), equity: initialCapital }
1734
+ ];
1735
+ const dailyPnl = {};
1736
+ const closedTrades = trades.filter(t => t.status === 'closed' && t.pnl != null);
1737
+ for (const trade of closedTrades) {
1738
+ equity += trade.pnl ?? 0;
1739
+ equityCurve.push({ timestamp: trade.created_at, equity });
1740
+ const date = trade.created_at.split('T')[0];
1741
+ dailyPnl[date] = (dailyPnl[date] ?? 0) + (trade.pnl ?? 0);
1742
+ }
1743
+ // Calculate metrics
1744
+ const wins = closedTrades.filter(t => (t.pnl ?? 0) > 0);
1745
+ const losses = closedTrades.filter(t => (t.pnl ?? 0) < 0);
1746
+ const totalPnl = closedTrades.reduce((sum, t) => sum + (t.pnl ?? 0), 0);
1747
+ const totalReturnPct = (totalPnl / initialCapital) * 100;
1748
+ const days = (endDate.getTime() - startDate.getTime()) / (24 * 60 * 60 * 1000);
1749
+ const annualizedReturnPct = totalReturnPct * (365 / Math.max(1, days));
1750
+ // Sharpe & Sortino
1751
+ const dailyReturns = Object.values(dailyPnl).map(pnl => pnl / initialCapital);
1752
+ const avgReturn = dailyReturns.length > 0 ? dailyReturns.reduce((a, b) => a + b, 0) / dailyReturns.length : 0;
1753
+ const stdDev = dailyReturns.length > 1 ? Math.sqrt(dailyReturns.reduce((sum, r) => sum + Math.pow(r - avgReturn, 2), 0) / (dailyReturns.length - 1)) : 1;
1754
+ const sharpeRatio = stdDev > 0 ? (avgReturn / stdDev) * Math.sqrt(252) : 0;
1755
+ const negReturns = dailyReturns.filter(r => r < 0);
1756
+ const downsideDev = negReturns.length > 0 ? Math.sqrt(negReturns.reduce((sum, r) => sum + r * r, 0) / negReturns.length) : 1;
1757
+ const sortinoRatio = downsideDev > 0 ? (avgReturn / downsideDev) * Math.sqrt(252) : 0;
1758
+ // Max drawdown
1759
+ let peak = initialCapital;
1760
+ let maxDrawdownPct = 0;
1761
+ for (const point of equityCurve) {
1762
+ if (point.equity > peak)
1763
+ peak = point.equity;
1764
+ const dd = ((peak - point.equity) / peak) * 100;
1765
+ if (dd > maxDrawdownPct)
1766
+ maxDrawdownPct = dd;
1767
+ }
1768
+ // Profit factor
1769
+ const grossProfit = wins.reduce((sum, t) => sum + (t.pnl ?? 0), 0);
1770
+ const grossLoss = Math.abs(losses.reduce((sum, t) => sum + (t.pnl ?? 0), 0));
1771
+ const profitFactor = grossLoss > 0 ? grossProfit / grossLoss : grossProfit > 0 ? Infinity : 0;
1772
+ return {
1773
+ result: {
1774
+ strategyId: body.strategyId || 'historical',
1775
+ metrics: {
1776
+ totalReturnPct,
1777
+ annualizedReturnPct,
1778
+ totalTrades: trades.length,
1779
+ winRate: closedTrades.length > 0 ? (wins.length / closedTrades.length) * 100 : 0,
1780
+ sharpeRatio,
1781
+ sortinoRatio,
1782
+ maxDrawdownPct,
1783
+ profitFactor: profitFactor === Infinity ? 999 : profitFactor,
1784
+ },
1785
+ trades: trades.slice(0, 50).map(t => ({
1786
+ timestamp: t.created_at,
1787
+ side: t.side,
1788
+ size: t.size,
1789
+ entryPrice: t.entry_price,
1790
+ exitPrice: t.exit_price,
1791
+ pnl: t.pnl,
1792
+ })),
1793
+ equityCurve,
1794
+ dailyReturns: Object.entries(dailyPnl).map(([date, pnl]) => ({ date, return: pnl / initialCapital })),
1795
+ },
1796
+ };
1797
+ });
1798
+ // Tick recorder handlers
1799
+ httpGateway.setTicksHandler(async (req) => {
1800
+ if (!tickRecorder) {
1801
+ return { error: 'Tick recorder not enabled', status: 503 };
1802
+ }
1803
+ const platform = req.params.platform;
1804
+ const marketId = req.params.marketId;
1805
+ const outcomeId = typeof req.query.outcomeId === 'string' ? req.query.outcomeId : undefined;
1806
+ const startTime = req.query.startTime ? Number(req.query.startTime) : Date.now() - 24 * 60 * 60 * 1000;
1807
+ const endTime = req.query.endTime ? Number(req.query.endTime) : Date.now();
1808
+ const limit = req.query.limit ? Number(req.query.limit) : 1000;
1809
+ const ticks = await tickRecorder.getTicks({
1810
+ platform,
1811
+ marketId,
1812
+ outcomeId,
1813
+ startTime,
1814
+ endTime,
1815
+ limit,
1816
+ });
1817
+ return {
1818
+ ticks: ticks.map((t) => ({
1819
+ time: t.time.toISOString(),
1820
+ platform: t.platform,
1821
+ marketId: t.marketId,
1822
+ outcomeId: t.outcomeId,
1823
+ price: t.price,
1824
+ prevPrice: t.prevPrice,
1825
+ })),
1826
+ };
1827
+ });
1828
+ httpGateway.setOHLCHandler(async (req) => {
1829
+ if (!tickRecorder) {
1830
+ return { error: 'Tick recorder not enabled', status: 503 };
1831
+ }
1832
+ const platform = req.params.platform;
1833
+ const marketId = req.params.marketId;
1834
+ const outcomeId = typeof req.query.outcomeId === 'string' ? req.query.outcomeId : undefined;
1835
+ const interval = (typeof req.query.interval === 'string' ? req.query.interval : '1h');
1836
+ const startTime = req.query.startTime ? Number(req.query.startTime) : Date.now() - 7 * 24 * 60 * 60 * 1000;
1837
+ const endTime = req.query.endTime ? Number(req.query.endTime) : Date.now();
1838
+ if (!outcomeId) {
1839
+ return { error: 'Missing required query parameter: outcomeId', status: 400 };
1840
+ }
1841
+ const candles = await tickRecorder.getOHLC({
1842
+ platform,
1843
+ marketId,
1844
+ outcomeId,
1845
+ interval,
1846
+ startTime,
1847
+ endTime,
1848
+ });
1849
+ return { candles };
1850
+ });
1851
+ httpGateway.setOrderbookHistoryHandler(async (req) => {
1852
+ if (!tickRecorder) {
1853
+ return { error: 'Tick recorder not enabled', status: 503 };
1854
+ }
1855
+ const platform = req.params.platform;
1856
+ const marketId = req.params.marketId;
1857
+ const outcomeId = typeof req.query.outcomeId === 'string' ? req.query.outcomeId : undefined;
1858
+ const startTime = req.query.startTime ? Number(req.query.startTime) : Date.now() - 60 * 60 * 1000;
1859
+ const endTime = req.query.endTime ? Number(req.query.endTime) : Date.now();
1860
+ const limit = req.query.limit ? Number(req.query.limit) : 100;
1861
+ const snapshots = await tickRecorder.getOrderbookSnapshots({
1862
+ platform,
1863
+ marketId,
1864
+ outcomeId,
1865
+ startTime,
1866
+ endTime,
1867
+ limit,
1868
+ });
1869
+ return {
1870
+ snapshots: snapshots.map((s) => ({
1871
+ time: s.time.toISOString(),
1872
+ platform: s.platform,
1873
+ marketId: s.marketId,
1874
+ outcomeId: s.outcomeId,
1875
+ bids: s.bids,
1876
+ asks: s.asks,
1877
+ spread: s.spread,
1878
+ midPrice: s.midPrice,
1879
+ })),
1880
+ };
1881
+ });
1882
+ httpGateway.setTickRecorderStatsHandler(async (_req) => {
1883
+ if (!tickRecorder) {
1884
+ return { error: 'Tick recorder not enabled', status: 503 };
1885
+ }
1886
+ const stats = tickRecorder.getStats();
1887
+ return { stats };
1888
+ });
1889
+ // Set tick streamer for WebSocket streaming endpoint
1890
+ httpGateway.setTickStreamer(tickStreamer);
1891
+ // Set feature engineering for REST API
1892
+ httpGateway.setFeatureEngineering(featureEngine);
1893
+ // Create trade logger first (shared with bot manager)
1894
+ tradeLogger = (0, logger_2.createTradeLogger)(db);
1895
+ // Create bot manager with execution callbacks
1896
+ botManager = (0, bots_1.createBotManager)(db, {
1897
+ tradeLogger,
1898
+ executeOrder: executionService
1899
+ ? async (signal, strategyId) => {
1900
+ const side = signal.type === 'buy' ? 'buy' : 'sell';
1901
+ const orderReq = {
1902
+ platform: signal.platform,
1903
+ marketId: signal.marketId,
1904
+ outcome: signal.outcome,
1905
+ price: signal.price || 0.5,
1906
+ size: signal.size || 100,
1907
+ };
1908
+ const result = side === 'buy'
1909
+ ? await executionService.buyLimit(orderReq)
1910
+ : await executionService.sellLimit(orderReq);
1911
+ if (!result.success)
1912
+ return null;
1913
+ return tradeLogger.logTrade({
1914
+ platform: signal.platform,
1915
+ marketId: signal.marketId,
1916
+ outcome: signal.outcome,
1917
+ side,
1918
+ orderType: 'limit',
1919
+ price: result.avgFillPrice ?? signal.price ?? 0.5,
1920
+ size: result.filledSize ?? signal.size ?? 100,
1921
+ filled: result.filledSize ?? 0,
1922
+ cost: (result.avgFillPrice ?? signal.price ?? 0.5) * (result.filledSize ?? signal.size ?? 100),
1923
+ status: result.filledSize ? 'filled' : 'pending',
1924
+ strategyId,
1925
+ orderId: result.orderId,
1926
+ });
1927
+ }
1928
+ : undefined,
1929
+ getPrice: async (platform, marketId) => {
1930
+ const market = await feeds.getMarket(marketId, platform);
1931
+ if (!market)
1932
+ return null;
1933
+ const outcome = market.outcomes[0];
1934
+ return outcome?.price ?? null;
1935
+ },
1936
+ getMarket: async (platform, marketId) => {
1937
+ return feeds.getMarket(marketId, platform);
1938
+ },
1939
+ getPortfolio: async () => {
1940
+ const positions = db.getPositions('default');
1941
+ let totalValue = 0;
1942
+ const mapped = positions.map((p) => {
1943
+ const value = p.shares * (p.currentPrice || p.avgPrice);
1944
+ totalValue += value;
1945
+ return { platform: p.platform, marketId: p.marketId, outcome: p.outcome, shares: p.shares, avgPrice: p.avgPrice, currentPrice: p.currentPrice || p.avgPrice };
1946
+ });
1947
+ return { value: totalValue, balance: totalValue * 0.2, positions: mapped };
1948
+ },
1949
+ });
1950
+ strategyBuilder = (0, builder_1.createStrategyBuilder)(db);
1951
+ // Register built-in strategies
1952
+ botManager.registerStrategy((0, bots_1.createMeanReversionStrategy)());
1953
+ botManager.registerStrategy((0, bots_1.createMomentumStrategy)());
1954
+ botManager.registerStrategy((0, bots_1.createArbitrageStrategy)());
1955
+ // Register MM strategy if configured
1956
+ if (config.trading?.marketMaking?.enabled && executionService) {
1957
+ const mmConfig = config.trading.marketMaking;
1958
+ const mmStrategy = (0, market_making_1.createMMStrategy)(mmConfig, {
1959
+ execution: executionService,
1960
+ feeds,
1961
+ });
1962
+ botManager.registerStrategy(mmStrategy);
1963
+ logger_1.logger.info('Market making strategy registered');
1964
+ }
1965
+ // Register crypto HFT adapter if configured
1966
+ if (config.trading?.cryptoHft?.enabled) {
1967
+ try {
1968
+ const { createCryptoFeed } = await Promise.resolve().then(() => __importStar(require('../feeds/crypto/index.js')));
1969
+ const { createCryptoHftAdapter } = await Promise.resolve().then(() => __importStar(require('../trading/adapters/index.js')));
1970
+ const cryptoFeed = createCryptoFeed();
1971
+ const hftStrategy = createCryptoHftAdapter({
1972
+ feed: cryptoFeed,
1973
+ execution: executionService,
1974
+ config: config.trading.cryptoHft,
1975
+ });
1976
+ botManager.registerStrategy(hftStrategy);
1977
+ logger_1.logger.info('Crypto HFT adapter registered');
1978
+ }
1979
+ catch (err) {
1980
+ logger_1.logger.warn({ err }, 'Failed to load crypto HFT adapter');
1981
+ }
1982
+ }
1983
+ // Register HFT divergence adapter if configured
1984
+ if (config.trading?.hftDivergence?.enabled) {
1985
+ try {
1986
+ const { createCryptoFeed } = await Promise.resolve().then(() => __importStar(require('../feeds/crypto/index.js')));
1987
+ const { createDivergenceAdapter } = await Promise.resolve().then(() => __importStar(require('../trading/adapters/index.js')));
1988
+ const cryptoFeed = createCryptoFeed();
1989
+ const divStrategy = createDivergenceAdapter({
1990
+ feed: cryptoFeed,
1991
+ execution: executionService,
1992
+ config: config.trading.hftDivergence,
1993
+ });
1994
+ botManager.registerStrategy(divStrategy);
1995
+ logger_1.logger.info('HFT divergence adapter registered');
1996
+ }
1997
+ catch (err) {
1998
+ logger_1.logger.warn({ err }, 'Failed to load HFT divergence adapter');
1999
+ }
2000
+ }
2001
+ logger_1.logger.info({ strategies: botManager.getStrategies().length }, 'Bot manager initialized with built-in strategies');
2002
+ // Wire trading API endpoints (positions, portfolio, orders, signals, orchestrator)
2003
+ const backtestEngine = (0, backtest_1.createBacktestEngine)(db);
2004
+ const tradingApiRouter = (0, api_routes_1.createTradingApiRouter)({
2005
+ db,
2006
+ execution: executionService,
2007
+ orchestrator,
2008
+ safety: safetyManager,
2009
+ signalRouter,
2010
+ botManager,
2011
+ tradeLogger,
2012
+ tickRecorder,
2013
+ backtestEngine,
2014
+ strategyBuilder,
2015
+ signalBus,
2016
+ featureEngine,
2017
+ positionManager,
2018
+ mlPipeline,
2019
+ });
2020
+ httpGateway.setTradingApiRouter(tradingApiRouter);
2021
+ return {
2022
+ async start() {
2023
+ logger_1.logger.info('Starting gateway services');
2024
+ // Setup graceful shutdown handlers
2025
+ (0, production_1.setupShutdownHandlers)();
2026
+ // Register shutdown cleanup
2027
+ (0, production_1.onShutdown)(async () => {
2028
+ logger_1.logger.info('Shutting down gateway services');
2029
+ if (executionProducer)
2030
+ await executionProducer.close();
2031
+ if (botManager) {
2032
+ for (const s of botManager.getAllBotStatuses()) {
2033
+ if (s.status === 'running' || s.status === 'paused') {
2034
+ await botManager.stopBot(s.id);
2035
+ }
2036
+ }
2037
+ }
2038
+ if (whaleTracker)
2039
+ whaleTracker.stop();
2040
+ if (copyTrading)
2041
+ copyTrading.stop();
2042
+ if (realtimeAlerts)
2043
+ realtimeAlerts.stop();
2044
+ if (arbitrageExecutor)
2045
+ arbitrageExecutor.stop();
2046
+ if (mlPipeline)
2047
+ mlPipeline.stop();
2048
+ if (positionBridge)
2049
+ positionBridge.stop();
2050
+ if (signalRouter)
2051
+ signalRouter.stop();
2052
+ // Stop event flow first, then flush pending writes
2053
+ signalBus.disconnectFeeds();
2054
+ if (tickRecorder)
2055
+ await tickRecorder.stop();
2056
+ if (tickStreamer)
2057
+ tickStreamer.stop();
2058
+ if (cronService)
2059
+ await cronService.stop();
2060
+ if (monitoring)
2061
+ monitoring.stop();
2062
+ providerHealth?.stop();
2063
+ await feeds.stop();
2064
+ if (channels)
2065
+ await channels.stop();
2066
+ await httpGateway.stop();
2067
+ db.close();
2068
+ });
2069
+ await httpGateway.start();
2070
+ const wss = httpGateway.getWebSocketServer();
2071
+ if (wss) {
2072
+ channels.attachWebSocket(wss);
2073
+ }
2074
+ await feeds.start();
2075
+ await channels.start();
2076
+ providerHealth?.start();
2077
+ await startCronService();
2078
+ startMonitoring();
2079
+ // Start whale tracker if enabled
2080
+ if (whaleTracker) {
2081
+ await whaleTracker.start();
2082
+ logger_1.logger.info('Whale tracker started');
2083
+ }
2084
+ // Start copy trading if enabled
2085
+ if (copyTrading) {
2086
+ copyTrading.start();
2087
+ logger_1.logger.info('Copy trading service started');
2088
+ }
2089
+ // Start realtime alerts if enabled
2090
+ if (realtimeAlerts) {
2091
+ realtimeAlerts.start();
2092
+ logger_1.logger.info('Realtime alerts service started');
2093
+ }
2094
+ // Start arbitrage executor if enabled
2095
+ if (arbitrageExecutor) {
2096
+ arbitrageExecutor.start();
2097
+ logger_1.logger.info('Arbitrage executor started');
2098
+ }
2099
+ // Start signal router if enabled
2100
+ if (signalRouter) {
2101
+ signalRouter.start(signalBus);
2102
+ logger_1.logger.info('Signal router started');
2103
+ }
2104
+ // Start ML pipeline if enabled (after signal router so it can subscribe)
2105
+ if (mlPipeline && signalRouter) {
2106
+ mlPipeline.start(signalRouter, null);
2107
+ logger_1.logger.info('ML training pipeline started');
2108
+ }
2109
+ // Start position bridge (subscribes to ticks, fills, and close events)
2110
+ if (positionBridge) {
2111
+ positionBridge.start();
2112
+ logger_1.logger.info('Position bridge started');
2113
+ }
2114
+ // Start tick recorder if enabled
2115
+ if (tickRecorder) {
2116
+ await tickRecorder.start();
2117
+ logger_1.logger.info('Tick recorder started');
2118
+ }
2119
+ // Start Percolator feed + keeper if enabled
2120
+ if (percolatorService) {
2121
+ await percolatorService.feed.connect();
2122
+ if (percolatorService.keeper) {
2123
+ percolatorService.keeper.start();
2124
+ }
2125
+ logger_1.logger.info('Percolator service started');
2126
+ }
2127
+ // Start Bittensor mining service if enabled
2128
+ if (bittensorService) {
2129
+ await bittensorService.start();
2130
+ logger_1.logger.info('Bittensor mining service started');
2131
+ }
2132
+ // Start alt-data sentiment pipeline if enabled
2133
+ const altDataCfg = currentConfig.altData;
2134
+ if (altDataCfg?.enabled !== false) {
2135
+ altDataService = (0, alt_data_1.createAltDataService)({
2136
+ config: altDataCfg ?? {},
2137
+ signalBus,
2138
+ feeds: feeds,
2139
+ embeddings: embeddings,
2140
+ });
2141
+ await altDataService.start();
2142
+ logger_1.logger.info({ feeds: altDataService.getStats().activeFeeds }, 'Alt-data service started');
2143
+ }
2144
+ started = true;
2145
+ if (!channelRateLimitCleanupInterval) {
2146
+ channelRateLimitCleanupInterval = setInterval(() => {
2147
+ for (const entry of channelRateLimiters.values()) {
2148
+ entry.limiter.cleanup();
2149
+ }
2150
+ }, 5 * 60 * 1000);
2151
+ }
2152
+ startMarketCacheCleanup();
2153
+ startMarketIndexSync();
2154
+ const positionConfig = currentConfig.positions ?? {};
2155
+ const positionUpdatesEnabled = positionConfig.enabled !== false;
2156
+ if (positionUpdatesEnabled) {
2157
+ const intervalMs = positionConfig.priceUpdateIntervalMs ?? 5 * 60 * 1000;
2158
+ if (!positionPriceUpdateInterval) {
2159
+ updatePositionPrices().catch((error) => {
2160
+ logger_1.logger.warn({ error }, 'Initial position price update failed');
2161
+ });
2162
+ positionPriceUpdateInterval = setInterval(() => {
2163
+ updatePositionPrices().catch((error) => {
2164
+ logger_1.logger.warn({ error }, 'Position price update failed');
2165
+ });
2166
+ }, intervalMs);
2167
+ logger_1.logger.info({ intervalMs }, 'Position price updater started');
2168
+ }
2169
+ }
2170
+ setupSkillWatcher();
2171
+ setupConfigWatcher();
2172
+ logger_1.logger.info({ port: currentConfig.gateway.port }, 'Gateway started');
2173
+ },
2174
+ async stop() {
2175
+ logger_1.logger.info('Stopping gateway services');
2176
+ if (cronService) {
2177
+ cronService.stop();
2178
+ cronService = null;
2179
+ }
2180
+ for (const watcher of watchers) {
2181
+ try {
2182
+ await watcher.close();
2183
+ }
2184
+ catch (error) {
2185
+ logger_1.logger.warn({ error }, 'Failed to close watcher cleanly');
2186
+ }
2187
+ }
2188
+ if (skillReloadTimer) {
2189
+ clearTimeout(skillReloadTimer);
2190
+ skillReloadTimer = null;
2191
+ }
2192
+ if (configReloadTimer) {
2193
+ clearTimeout(configReloadTimer);
2194
+ configReloadTimer = null;
2195
+ }
2196
+ if (reloadInFlight) {
2197
+ await reloadInFlight;
2198
+ }
2199
+ if (channelRateLimitCleanupInterval) {
2200
+ clearInterval(channelRateLimitCleanupInterval);
2201
+ channelRateLimitCleanupInterval = null;
2202
+ }
2203
+ if (positionPriceUpdateInterval) {
2204
+ clearInterval(positionPriceUpdateInterval);
2205
+ positionPriceUpdateInterval = null;
2206
+ }
2207
+ if (marketCacheCleanupInterval) {
2208
+ clearInterval(marketCacheCleanupInterval);
2209
+ marketCacheCleanupInterval = null;
2210
+ }
2211
+ if (marketIndexSyncInterval) {
2212
+ clearInterval(marketIndexSyncInterval);
2213
+ marketIndexSyncInterval = null;
2214
+ }
2215
+ agents.dispose();
2216
+ providerHealth?.stop();
2217
+ monitoring?.stop();
2218
+ monitoring = null;
2219
+ // Stop Percolator service
2220
+ if (percolatorService) {
2221
+ if (percolatorService.keeper)
2222
+ percolatorService.keeper.stop();
2223
+ percolatorService.feed.disconnect();
2224
+ percolatorService = null;
2225
+ }
2226
+ // Stop Bittensor mining service
2227
+ if (bittensorService) {
2228
+ await bittensorService.stop();
2229
+ (0, bittensor_2.setBittensorService)(null);
2230
+ bittensorService = null;
2231
+ }
2232
+ // Stop alt-data service
2233
+ if (altDataService) {
2234
+ altDataService.stop();
2235
+ altDataService = null;
2236
+ }
2237
+ // Stop arbitrage executor
2238
+ if (arbitrageExecutor) {
2239
+ arbitrageExecutor.stop();
2240
+ arbitrageExecutor = null;
2241
+ }
2242
+ // Stop bot manager (stops all running bots)
2243
+ if (botManager) {
2244
+ for (const s of botManager.getAllBotStatuses()) {
2245
+ if (s.status === 'running' || s.status === 'paused') {
2246
+ await botManager.stopBot(s.id);
2247
+ }
2248
+ }
2249
+ botManager = null;
2250
+ }
2251
+ tradeLogger = null;
2252
+ strategyBuilder = null;
2253
+ // Stop ML pipeline (before signal router, since it subscribes to router events)
2254
+ if (mlPipeline) {
2255
+ mlPipeline.stop();
2256
+ mlPipeline = null;
2257
+ }
2258
+ // Stop position bridge (before signal router, since it subscribes to router events)
2259
+ if (positionBridge) {
2260
+ positionBridge.stop();
2261
+ positionBridge = null;
2262
+ }
2263
+ // Stop signal router
2264
+ if (signalRouter) {
2265
+ signalRouter.stop();
2266
+ signalRouter = null;
2267
+ }
2268
+ // Stop event flow first, then flush pending writes
2269
+ signalBus.disconnectFeeds();
2270
+ if (tickRecorder) {
2271
+ await tickRecorder.stop();
2272
+ tickRecorder = null;
2273
+ }
2274
+ if (tickStreamer) {
2275
+ tickStreamer.stop();
2276
+ tickStreamer = null;
2277
+ }
2278
+ // Stop realtime alerts and cleanup subscriptions
2279
+ if (realtimeAlerts) {
2280
+ if (whaleTrackerCleanup) {
2281
+ whaleTrackerCleanup();
2282
+ whaleTrackerCleanup = null;
2283
+ }
2284
+ if (opportunityFinderCleanup) {
2285
+ opportunityFinderCleanup();
2286
+ opportunityFinderCleanup = null;
2287
+ }
2288
+ realtimeAlerts.stop();
2289
+ realtimeAlerts = null;
2290
+ }
2291
+ // Stop copy trading and whale tracker
2292
+ if (copyTrading) {
2293
+ copyTrading.stop();
2294
+ copyTrading = null;
2295
+ }
2296
+ if (whaleTracker) {
2297
+ whaleTracker.stop();
2298
+ whaleTracker = null;
2299
+ }
2300
+ // Close execution queue producer
2301
+ if (executionProducer) {
2302
+ await executionProducer.close();
2303
+ executionProducer = null;
2304
+ }
2305
+ await channels?.stop();
2306
+ await feeds.stop();
2307
+ await httpGateway.stop();
2308
+ sessions.dispose();
2309
+ started = false;
2310
+ // Close DB if it exposes a close method
2311
+ try {
2312
+ await db.close();
2313
+ }
2314
+ catch (error) {
2315
+ logger_1.logger.warn({ error }, 'Failed to close database cleanly');
2316
+ }
2317
+ logger_1.logger.info('Gateway stopped');
2318
+ },
2319
+ };
2320
+ }
2321
+ //# sourceMappingURL=index.js.map