@oracle-agent/oracle 0.10.0 → 0.12.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 (424) hide show
  1. package/LICENSE +115 -201
  2. package/README.md +82 -91
  3. package/SECURITY.md +37 -12
  4. package/SETUP.md +207 -272
  5. package/dist/action-receipts.mjs +1 -0
  6. package/dist/action-semantics.mjs +1 -0
  7. package/dist/address-book.mjs +2 -0
  8. package/dist/bin/desk-server.mjs +14 -0
  9. package/dist/bin/oracle-data-mcp.mjs +8 -0
  10. package/dist/bin/oracle-init.mjs +24 -0
  11. package/dist/bin/oracle-public-server.mjs +5 -0
  12. package/dist/bin/oracle-route.mjs +22 -0
  13. package/dist/bin/oracle-scan.mjs +18 -0
  14. package/dist/bin/oracle-upgrade.mjs +21 -0
  15. package/dist/bin/oracle.mjs +68 -0
  16. package/dist/chains.mjs +1 -0
  17. package/dist/cli/commands/auth.mjs +16 -0
  18. package/dist/cli/commands/bootstrap.mjs +18 -0
  19. package/dist/cli/commands/chain.mjs +21 -0
  20. package/dist/cli/commands/chat.mjs +35 -0
  21. package/dist/cli/commands/credential.mjs +1 -0
  22. package/dist/cli/commands/data-mcp.mjs +2 -0
  23. package/dist/cli/commands/data.mjs +12 -0
  24. package/dist/cli/commands/doctor.mjs +5 -0
  25. package/dist/cli/commands/gate.mjs +13 -0
  26. package/dist/cli/commands/help.mjs +1 -0
  27. package/dist/cli/commands/init.mjs +3 -0
  28. package/dist/cli/commands/mcp.mjs +33 -0
  29. package/dist/cli/commands/model.mjs +44 -0
  30. package/dist/cli/commands/prepare.mjs +2 -0
  31. package/dist/cli/commands/public.mjs +3 -0
  32. package/dist/cli/commands/route.mjs +2 -0
  33. package/dist/cli/commands/runner.mjs +1 -0
  34. package/dist/cli/commands/scan.mjs +2 -0
  35. package/dist/cli/commands/setup.mjs +34 -0
  36. package/dist/cli/commands/sign.mjs +4 -0
  37. package/dist/cli/commands/signer.mjs +1 -0
  38. package/dist/cli/commands/upgrade.mjs +2 -0
  39. package/dist/cli/commands/vault.mjs +1 -0
  40. package/dist/cli/commands/version.mjs +2 -0
  41. package/dist/data/desk-data.mjs +12 -0
  42. package/dist/index.mjs +17 -0
  43. package/dist/nft-gas-war-guard.mjs +1 -0
  44. package/dist/onboarding/harness-configs.mjs +4 -0
  45. package/dist/portfolio-risk.mjs +1 -0
  46. package/dist/prepare-envelope.mjs +1 -0
  47. package/dist/public-control/policy-schema.mjs +1 -0
  48. package/dist/router/index.mjs +2 -0
  49. package/dist/scanner/index.mjs +4 -0
  50. package/dist/signals/index.mjs +1 -0
  51. package/dist/watch-preferences.mjs +1 -0
  52. package/package.json +27 -65
  53. package/public/oracle-splash/assets/cli-chain-hyperliquid.jpg +0 -0
  54. package/public/oracle-splash/brand/aave.webp +0 -0
  55. package/public/oracle-splash/brand/aavev2.webp +0 -0
  56. package/public/oracle-splash/brand/aborean.webp +0 -0
  57. package/public/oracle-splash/brand/across.webp +0 -0
  58. package/public/oracle-splash/brand/aerodrome.webp +0 -0
  59. package/public/oracle-splash/brand/afi.webp +0 -0
  60. package/public/oracle-splash/brand/arcus.webp +0 -0
  61. package/public/oracle-splash/brand/aster.webp +0 -0
  62. package/public/oracle-splash/brand/avant.webp +0 -0
  63. package/public/oracle-splash/brand/balancer.webp +0 -0
  64. package/public/oracle-splash/brand/beefy.webp +0 -0
  65. package/public/oracle-splash/brand/benqi.webp +0 -0
  66. package/public/oracle-splash/brand/bestinslot.ico +0 -0
  67. package/public/oracle-splash/brand/bitfi.webp +0 -0
  68. package/public/oracle-splash/brand/bonkswap.webp +0 -0
  69. package/public/oracle-splash/brand/bouncebit.webp +0 -0
  70. package/public/oracle-splash/brand/camelot.webp +0 -0
  71. package/public/oracle-splash/brand/compound.webp +0 -0
  72. package/public/oracle-splash/brand/concrete.webp +0 -0
  73. package/public/oracle-splash/brand/cow.webp +0 -0
  74. package/public/oracle-splash/brand/curve.webp +0 -0
  75. package/public/oracle-splash/brand/derive.webp +0 -0
  76. package/public/oracle-splash/brand/dolomite.webp +0 -0
  77. package/public/oracle-splash/brand/eigenlayer.webp +0 -0
  78. package/public/oracle-splash/brand/ekubo.webp +0 -0
  79. package/public/oracle-splash/brand/ethena.webp +0 -0
  80. package/public/oracle-splash/brand/etherfi.webp +0 -0
  81. package/public/oracle-splash/brand/etherfiborrow.webp +0 -0
  82. package/public/oracle-splash/brand/felix.webp +0 -0
  83. package/public/oracle-splash/brand/fluid.webp +0 -0
  84. package/public/oracle-splash/brand/fluxbeam.webp +0 -0
  85. package/public/oracle-splash/brand/folks.webp +0 -0
  86. package/public/oracle-splash/brand/fortyacres.webp +0 -0
  87. package/public/oracle-splash/brand/gainsnetwork.webp +0 -0
  88. package/public/oracle-splash/brand/gassss.webp +0 -0
  89. package/public/oracle-splash/brand/gmx.webp +0 -0
  90. package/public/oracle-splash/brand/harmonix.webp +0 -0
  91. package/public/oracle-splash/brand/hlorderbook.webp +0 -0
  92. package/public/oracle-splash/brand/hlp.webp +0 -0
  93. package/public/oracle-splash/brand/hop.webp +0 -0
  94. package/public/oracle-splash/brand/hyperbeat.webp +0 -0
  95. package/public/oracle-splash/brand/hyperlend.webp +0 -0
  96. package/public/oracle-splash/brand/hyperliquid.webp +0 -0
  97. package/public/oracle-splash/brand/hyperliquidhpl.webp +0 -0
  98. package/public/oracle-splash/brand/hyperliquidspot.webp +0 -0
  99. package/public/oracle-splash/brand/hyperswap.webp +0 -0
  100. package/public/oracle-splash/brand/hypha.webp +0 -0
  101. package/public/oracle-splash/brand/joedex.webp +0 -0
  102. package/public/oracle-splash/brand/jupiter.webp +0 -0
  103. package/public/oracle-splash/brand/kelp.webp +0 -0
  104. package/public/oracle-splash/brand/kinetiq.webp +0 -0
  105. package/public/oracle-splash/brand/kmhype.webp +0 -0
  106. package/public/oracle-splash/brand/kona.webp +0 -0
  107. package/public/oracle-splash/brand/konalend.webp +0 -0
  108. package/public/oracle-splash/brand/lfj.webp +0 -0
  109. package/public/oracle-splash/brand/lido.webp +0 -0
  110. package/public/oracle-splash/brand/lifi.webp +0 -0
  111. package/public/oracle-splash/brand/lighter.webp +0 -0
  112. package/public/oracle-splash/brand/lista.webp +0 -0
  113. package/public/oracle-splash/brand/loopedhype.webp +0 -0
  114. package/public/oracle-splash/brand/lorenzo.webp +0 -0
  115. package/public/oracle-splash/brand/magic-eden.webp +0 -0
  116. package/public/oracle-splash/brand/magiceden.webp +0 -0
  117. package/public/oracle-splash/brand/mempool.png +0 -0
  118. package/public/oracle-splash/brand/meteora.webp +0 -0
  119. package/public/oracle-splash/brand/morpho.webp +0 -0
  120. package/public/oracle-splash/brand/myriad.webp +0 -0
  121. package/public/oracle-splash/brand/noxa.webp +0 -0
  122. package/public/oracle-splash/brand/odos.webp +0 -0
  123. package/public/oracle-splash/brand/oneinch.webp +0 -0
  124. package/public/oracle-splash/brand/openbook.webp +0 -0
  125. package/public/oracle-splash/brand/opensea.webp +0 -0
  126. package/public/oracle-splash/brand/orca.webp +0 -0
  127. package/public/oracle-splash/brand/ordinals.png +0 -0
  128. package/public/oracle-splash/brand/ostium.webp +0 -0
  129. package/public/oracle-splash/brand/pancakeswap.webp +0 -0
  130. package/public/oracle-splash/brand/pendle.webp +0 -0
  131. package/public/oracle-splash/brand/perena.webp +0 -0
  132. package/public/oracle-splash/brand/pharaoh.webp +0 -0
  133. package/public/oracle-splash/brand/phoenix.webp +0 -0
  134. package/public/oracle-splash/brand/polymarket.webp +0 -0
  135. package/public/oracle-splash/brand/polynomial.webp +0 -0
  136. package/public/oracle-splash/brand/projectx.webp +0 -0
  137. package/public/oracle-splash/brand/pumpfun.webp +0 -0
  138. package/public/oracle-splash/brand/quickswap.webp +0 -0
  139. package/public/oracle-splash/brand/rain.webp +0 -0
  140. package/public/oracle-splash/brand/raydium.webp +0 -0
  141. package/public/oracle-splash/brand/relay.webp +0 -0
  142. package/public/oracle-splash/brand/rocketpool.webp +0 -0
  143. package/public/oracle-splash/brand/saber.webp +0 -0
  144. package/public/oracle-splash/brand/sakuraswap.webp +0 -0
  145. package/public/oracle-splash/brand/sanctum.webp +0 -0
  146. package/public/oracle-splash/brand/satflow.png +0 -0
  147. package/public/oracle-splash/brand/sierra.webp +0 -0
  148. package/public/oracle-splash/brand/sky.webp +0 -0
  149. package/public/oracle-splash/brand/solv.webp +0 -0
  150. package/public/oracle-splash/brand/spark.webp +0 -0
  151. package/public/oracle-splash/brand/sparksavings.webp +0 -0
  152. package/public/oracle-splash/brand/sphere.webp +0 -0
  153. package/public/oracle-splash/brand/ssv.webp +0 -0
  154. package/public/oracle-splash/brand/stabble.webp +0 -0
  155. package/public/oracle-splash/brand/stableswap.webp +0 -0
  156. package/public/oracle-splash/brand/stakewise.webp +0 -0
  157. package/public/oracle-splash/brand/stargate.webp +0 -0
  158. package/public/oracle-splash/brand/sthype.webp +0 -0
  159. package/public/oracle-splash/brand/sushiswap.webp +0 -0
  160. package/public/oracle-splash/brand/unisat.png +0 -0
  161. package/public/oracle-splash/brand/uniswap.webp +0 -0
  162. package/public/oracle-splash/brand/uniswapv2.webp +0 -0
  163. package/public/oracle-splash/brand/uniswapv4.webp +0 -0
  164. package/public/oracle-splash/brand/unit.webp +0 -0
  165. package/public/oracle-splash/brand/velodrome.webp +0 -0
  166. package/public/oracle-splash/brand/velora.webp +0 -0
  167. package/public/oracle-splash/brand/venus.webp +0 -0
  168. package/public/oracle-splash/brand/wbeth.webp +0 -0
  169. package/public/oracle-splash/brand/xsy.webp +0 -0
  170. package/public/oracle-splash/brand/yieldyak.webp +0 -0
  171. package/public/oracle-splash/brand/zerobase.webp +0 -0
  172. package/public/oracle-splash/brand/zerox.webp +0 -0
  173. package/public/oracle-splash/index.html +246 -169
  174. package/CONTRIBUTING.md +0 -98
  175. package/bin/desk-server.mjs +0 -440
  176. package/bin/oracle-data-mcp.mjs +0 -1010
  177. package/bin/oracle-init.mjs +0 -496
  178. package/bin/oracle-public-server.mjs +0 -36
  179. package/bin/oracle-route.mjs +0 -254
  180. package/bin/oracle-scan.mjs +0 -192
  181. package/bin/oracle-upgrade.mjs +0 -42
  182. package/bin/oracle.mjs +0 -33
  183. package/docs/adding-a-chain.md +0 -229
  184. package/docs/architecture.md +0 -136
  185. package/docs/cli.md +0 -47
  186. package/docs/connectors.md +0 -13
  187. package/docs/oracle-pack-standard.md +0 -29
  188. package/docs/profiles.md +0 -154
  189. package/examples/add-a-chain.mjs +0 -65
  190. package/examples/oracle-pack-template.mjs +0 -38
  191. package/examples/research-a-token.mjs +0 -70
  192. package/plugins/oracle-owner-gate/__init__.py +0 -227
  193. package/plugins/oracle-owner-gate/plugin.yaml +0 -9
  194. package/profiles/_template/SOUL.md +0 -54
  195. package/profiles/_template/profile.json +0 -22
  196. package/profiles/bitcoin-agent/SOUL.md +0 -31
  197. package/profiles/bitcoin-agent/profile.json +0 -32
  198. package/profiles/hyperliquid-agent/SOUL.md +0 -34
  199. package/profiles/hyperliquid-agent/profile.json +0 -37
  200. package/profiles/oracle/SOUL.md +0 -107
  201. package/profiles/oracle/profile.json +0 -39
  202. package/profiles/polymarket-agent/SOUL.md +0 -35
  203. package/profiles/polymarket-agent/profile.json +0 -34
  204. package/profiles/profile.schema.json +0 -90
  205. package/profiles/protocol-builder/SOUL.md +0 -57
  206. package/profiles/protocol-builder/profile.json +0 -39
  207. package/profiles/robinhood-agent/SOUL.md +0 -53
  208. package/profiles/robinhood-agent/profile.json +0 -40
  209. package/profiles/solana-agent/SOUL.md +0 -37
  210. package/profiles/solana-agent/profile.json +0 -37
  211. package/profiles/stable-agent/SOUL.md +0 -43
  212. package/profiles/stable-agent/profile.json +0 -37
  213. package/protocols/templates/safe-erc20/SECURITY.md +0 -16
  214. package/protocols/templates/safe-erc20/foundry.toml +0 -12
  215. package/protocols/templates/safe-erc20/remappings.txt +0 -2
  216. package/protocols/templates/safe-erc20/src/SafeERC20.sol +0 -53
  217. package/protocols/templates/safe-erc20/test/SafeERC20.t.sol +0 -72
  218. package/scripts/adversarial-bench.mjs +0 -114
  219. package/scripts/build-inscription.py +0 -230
  220. package/scripts/check-doc-drift.mjs +0 -112
  221. package/scripts/check-test-count.mjs +0 -105
  222. package/scripts/e2e-hl-markets.mjs +0 -21
  223. package/scripts/e2e-hl-perps.mjs +0 -48
  224. package/scripts/e2e-hypercore-staking.mjs +0 -128
  225. package/scripts/e2e-solana-bitcoin.mjs +0 -183
  226. package/scripts/protocol-template-gate.mjs +0 -15
  227. package/scripts/public-api-scan.mjs +0 -23
  228. package/scripts/secret-scan.mjs +0 -181
  229. package/scripts/verify-v3-venues.mjs +0 -192
  230. package/skills/balance/SKILL.md +0 -176
  231. package/skills/oracle-action-semantics/SKILL.md +0 -40
  232. package/skills/oracle-best-execution/SKILL.md +0 -127
  233. package/skills/oracle-bitcoin/SKILL.md +0 -53
  234. package/skills/oracle-chain-graphs-telegram-cards/SKILL.md +0 -59
  235. package/skills/oracle-chat/SKILL.md +0 -61
  236. package/skills/oracle-chat/chain.SKILL.md +0 -31
  237. package/skills/oracle-chat/setup.SKILL.md +0 -37
  238. package/skills/oracle-circuit-breaker/SKILL.md +0 -51
  239. package/skills/oracle-contract-research/SKILL.md +0 -55
  240. package/skills/oracle-desk/SKILL.md +0 -58
  241. package/skills/oracle-dex-launch/SKILL.md +0 -38
  242. package/skills/oracle-grants/SKILL.md +0 -69
  243. package/skills/oracle-hypercore-staking/SKILL.md +0 -57
  244. package/skills/oracle-hyperliquid/SKILL.md +0 -56
  245. package/skills/oracle-meme-token-sniper/SKILL.md +0 -73
  246. package/skills/oracle-multichain-nft-launch/SKILL.md +0 -338
  247. package/skills/oracle-multichain-token-launch/SKILL.md +0 -300
  248. package/skills/oracle-nft-gacha-launch/SKILL.md +0 -48
  249. package/skills/oracle-nft-mint-gas-war/SKILL.md +0 -63
  250. package/skills/oracle-polymarket/SKILL.md +0 -60
  251. package/skills/oracle-protocol-builder/SKILL.md +0 -59
  252. package/skills/oracle-protocol-security/SKILL.md +0 -60
  253. package/skills/oracle-public-product/SKILL.md +0 -44
  254. package/skills/oracle-receipts/SKILL.md +0 -52
  255. package/skills/oracle-rfq-tokenized-assets/SKILL.md +0 -69
  256. package/skills/oracle-smart-wallet-scanner/SKILL.md +0 -49
  257. package/skills/oracle-solana/SKILL.md +0 -65
  258. package/skills/oracle-solana-nft/SKILL.md +0 -54
  259. package/skills/oracle-token-research/SKILL.md +0 -67
  260. package/skins/oracle.yaml +0 -56
  261. package/src/action-receipts.mjs +0 -168
  262. package/src/action-semantics.mjs +0 -62
  263. package/src/address-book.mjs +0 -208
  264. package/src/agent-auth.mjs +0 -206
  265. package/src/approval-guard.mjs +0 -282
  266. package/src/attestation-secret.mjs +0 -88
  267. package/src/audit-log.mjs +0 -196
  268. package/src/auth/oauth.mjs +0 -672
  269. package/src/auto-slippage.mjs +0 -378
  270. package/src/capability-posture.mjs +0 -125
  271. package/src/chains.mjs +0 -62
  272. package/src/cli/chain-catalog.mjs +0 -215
  273. package/src/cli/chain-state.mjs +0 -74
  274. package/src/cli/commands/auth.mjs +0 -193
  275. package/src/cli/commands/bootstrap.mjs +0 -87
  276. package/src/cli/commands/chain.mjs +0 -143
  277. package/src/cli/commands/chat.mjs +0 -434
  278. package/src/cli/commands/credential.mjs +0 -9
  279. package/src/cli/commands/data-mcp.mjs +0 -18
  280. package/src/cli/commands/data.mjs +0 -73
  281. package/src/cli/commands/doctor.mjs +0 -126
  282. package/src/cli/commands/help.mjs +0 -7
  283. package/src/cli/commands/init.mjs +0 -27
  284. package/src/cli/commands/mcp.mjs +0 -142
  285. package/src/cli/commands/model.mjs +0 -99
  286. package/src/cli/commands/prepare.mjs +0 -12
  287. package/src/cli/commands/public.mjs +0 -20
  288. package/src/cli/commands/route.mjs +0 -12
  289. package/src/cli/commands/runner.mjs +0 -9
  290. package/src/cli/commands/scan.mjs +0 -12
  291. package/src/cli/commands/setup.mjs +0 -275
  292. package/src/cli/commands/sign.mjs +0 -21
  293. package/src/cli/commands/signer.mjs +0 -9
  294. package/src/cli/commands/upgrade.mjs +0 -12
  295. package/src/cli/commands/vault.mjs +0 -9
  296. package/src/cli/commands/version.mjs +0 -22
  297. package/src/cli/first-run.mjs +0 -23
  298. package/src/cli/kernel.mjs +0 -239
  299. package/src/cli/mcp-targets/chatgpt.mjs +0 -51
  300. package/src/cli/mcp-targets/claude-code.mjs +0 -39
  301. package/src/cli/mcp-targets/claude-desktop.mjs +0 -24
  302. package/src/cli/mcp-targets/codex.mjs +0 -41
  303. package/src/cli/mcp-targets/shared.mjs +0 -61
  304. package/src/cli/messaging-platforms.mjs +0 -209
  305. package/src/cli/model-config.mjs +0 -70
  306. package/src/cli/operator-dispatch.mjs +0 -258
  307. package/src/cli/oracle-harness.py +0 -415
  308. package/src/cli/paths.mjs +0 -83
  309. package/src/cli/runtime.mjs +0 -351
  310. package/src/cli/setup-state.mjs +0 -168
  311. package/src/cli/spawn-child.mjs +0 -43
  312. package/src/data/catalog.mjs +0 -554
  313. package/src/data/desk-data.mjs +0 -683
  314. package/src/data/http.mjs +0 -253
  315. package/src/data/provider-endpoint.mjs +0 -94
  316. package/src/data/providers/aerodrome.mjs +0 -245
  317. package/src/data/providers/balancer.mjs +0 -209
  318. package/src/data/providers/bitcoin-esplora.mjs +0 -216
  319. package/src/data/providers/bitcoin-meta.mjs +0 -378
  320. package/src/data/providers/blockscout.mjs +0 -14
  321. package/src/data/providers/bridges.mjs +0 -242
  322. package/src/data/providers/cowswap.mjs +0 -415
  323. package/src/data/providers/curve.mjs +0 -201
  324. package/src/data/providers/defillama.mjs +0 -88
  325. package/src/data/providers/dexscreener.mjs +0 -43
  326. package/src/data/providers/evm-rpc.mjs +0 -222
  327. package/src/data/providers/geckoterminal.mjs +0 -34
  328. package/src/data/providers/gmx.mjs +0 -496
  329. package/src/data/providers/hl-assets.mjs +0 -165
  330. package/src/data/providers/hl-info.mjs +0 -108
  331. package/src/data/providers/hl-markets.mjs +0 -210
  332. package/src/data/providers/hl-outcome.mjs +0 -61
  333. package/src/data/providers/hl-perps.mjs +0 -387
  334. package/src/data/providers/hl-staking.mjs +0 -353
  335. package/src/data/providers/hl-ws.mjs +0 -119
  336. package/src/data/providers/hyperevm-dex.mjs +0 -49
  337. package/src/data/providers/jupiter.mjs +0 -183
  338. package/src/data/providers/lifi.mjs +0 -151
  339. package/src/data/providers/magiceden-sol.mjs +0 -393
  340. package/src/data/providers/morpho.mjs +0 -173
  341. package/src/data/providers/nft-gallery.mjs +0 -163
  342. package/src/data/providers/nft-portfolio.mjs +0 -494
  343. package/src/data/providers/odos.mjs +0 -156
  344. package/src/data/providers/oneinch.mjs +0 -174
  345. package/src/data/providers/opensea-multichain.mjs +0 -136
  346. package/src/data/providers/opensea-nft.mjs +0 -371
  347. package/src/data/providers/paraswap.mjs +0 -118
  348. package/src/data/providers/pendle.mjs +0 -187
  349. package/src/data/providers/poly-clob.mjs +0 -283
  350. package/src/data/providers/poly-public.mjs +0 -96
  351. package/src/data/providers/poly-ws.mjs +0 -103
  352. package/src/data/providers/portfolio-history.mjs +0 -394
  353. package/src/data/providers/portfolio.mjs +0 -594
  354. package/src/data/providers/rfq.mjs +0 -15
  355. package/src/data/providers/rh-agent.mjs +0 -59
  356. package/src/data/providers/satflow.mjs +0 -338
  357. package/src/data/providers/solana-rpc.mjs +0 -197
  358. package/src/data/providers/uniswap-v3.mjs +0 -320
  359. package/src/data/providers/zerox.mjs +0 -167
  360. package/src/data/public-api-scan.mjs +0 -61
  361. package/src/data/quote-placeholder.mjs +0 -31
  362. package/src/exact-integer.mjs +0 -72
  363. package/src/exec-policy.mjs +0 -455
  364. package/src/flags.mjs +0 -15
  365. package/src/fresh-window.mjs +0 -76
  366. package/src/gmx-attestation.mjs +0 -176
  367. package/src/index.mjs +0 -100
  368. package/src/nft-gas-war-guard.mjs +0 -139
  369. package/src/onboarding/agent-keys.mjs +0 -161
  370. package/src/onboarding/harness-configs.mjs +0 -102
  371. package/src/onboarding/index.mjs +0 -18
  372. package/src/onboarding/tiers.mjs +0 -139
  373. package/src/oracle-env.mjs +0 -47
  374. package/src/portfolio-risk.mjs +0 -170
  375. package/src/prepare-envelope.mjs +0 -186
  376. package/src/profile-upgrade.mjs +0 -277
  377. package/src/protocol-execution.mjs +0 -84
  378. package/src/protocol-templates/gate.mjs +0 -179
  379. package/src/protocol-templates/prepare-deploy.mjs +0 -81
  380. package/src/public-api/buzz-integration.mjs +0 -256
  381. package/src/public-api/connect-agent.mjs +0 -416
  382. package/src/public-api/grants.mjs +0 -142
  383. package/src/public-api/http.mjs +0 -389
  384. package/src/public-control/aa-adapter.mjs +0 -402
  385. package/src/public-control/build-registry.mjs +0 -227
  386. package/src/public-control/bundler-client.mjs +0 -357
  387. package/src/public-control/grant-indexer.mjs +0 -296
  388. package/src/public-control/policy-render.mjs +0 -69
  389. package/src/public-control/policy-schema.mjs +0 -318
  390. package/src/public-control/runtime-config.mjs +0 -275
  391. package/src/public-control/session-key-model.mjs +0 -374
  392. package/src/public-control/session-orchestrator.mjs +0 -412
  393. package/src/rfq/intent.mjs +0 -180
  394. package/src/rfq/sources.mjs +0 -181
  395. package/src/route-attestation.mjs +0 -132
  396. package/src/router/best-execution.mjs +0 -326
  397. package/src/router/index.mjs +0 -226
  398. package/src/router/prepare-bridge.mjs +0 -289
  399. package/src/router/prepare-route.mjs +0 -381
  400. package/src/router/proposal.mjs +0 -311
  401. package/src/router/risk-classifier.mjs +0 -119
  402. package/src/router/route-sources.mjs +0 -329
  403. package/src/scanner/chains.config.mjs +0 -430
  404. package/src/scanner/contract.mjs +0 -270
  405. package/src/scanner/evm-scanner.mjs +0 -394
  406. package/src/scanner/index.mjs +0 -9
  407. package/src/scanner/v2-venue.mjs +0 -335
  408. package/src/scanner/v3-venue.mjs +0 -290
  409. package/src/scopes.mjs +0 -44
  410. package/src/sell-simulation.mjs +0 -167
  411. package/src/signals/engine.mjs +0 -146
  412. package/src/signals/index.mjs +0 -1
  413. package/src/token-transfer-guard.mjs +0 -188
  414. package/src/tui/app.mjs +0 -438
  415. package/src/tui/backend.mjs +0 -145
  416. package/src/tui/format.mjs +0 -272
  417. package/src/tui/gateway-client.mjs +0 -177
  418. package/src/tui/input.mjs +0 -501
  419. package/src/tui/renderer.mjs +0 -443
  420. package/src/tui/standalone-client.mjs +0 -666
  421. package/src/tui/theme.mjs +0 -81
  422. package/src/vault-attestation.mjs +0 -146
  423. package/src/venues.mjs +0 -206
  424. package/src/watch-preferences.mjs +0 -85
@@ -1,88 +0,0 @@
1
- // DeFiLlama public prices — protocol pack D3 (no API key).
2
-
3
- import { httpJson } from "../http.mjs";
4
-
5
- export const DEFILLAMA_COINS = "https://coins.llama.fi";
6
- export const DEFILLAMA_API = "https://api.llama.fi";
7
- export const DEFILLAMA_YIELDS = "https://yields.llama.fi";
8
- export const DEFILLAMA_STABLECOINS = "https://stablecoins.llama.fi";
9
-
10
- function coinsBase(opts = {}) {
11
- return (opts.baseUrl || process.env.DEFILLAMA_COINS_URL || DEFILLAMA_COINS).replace(/\/$/, "");
12
- }
13
-
14
- function apiBase(opts = {}) {
15
- return (opts.baseUrl || process.env.DEFILLAMA_API_URL || DEFILLAMA_API).replace(/\/$/, "");
16
- }
17
-
18
- /** @param {string[]} coins e.g. ['coingecko:ethereum','coingecko:bitcoin'] */
19
- export async function llamaPrices(coins, opts = {}) {
20
- if (!Array.isArray(coins) || !coins.length) throw new Error("llamaPrices requires coins[]");
21
- const path = coins.map(encodeURIComponent).join(",");
22
- return httpJson(`${coinsBase(opts)}/prices/current/${path}`, {
23
- fetchImpl: opts.fetchImpl,
24
- timeoutMs: opts.timeoutMs,
25
- });
26
- }
27
-
28
- export async function llamaHealth(opts = {}) {
29
- const data = await llamaPrices(["coingecko:ethereum"], opts);
30
- const eth = data?.coins?.["coingecko:ethereum"];
31
- return { ok: !!eth?.price, ethUsd: eth?.price ?? null };
32
- }
33
-
34
- export async function llamaProtocols(opts = {}) {
35
- return httpJson(`${apiBase(opts)}/protocols`, {
36
- fetchImpl: opts.fetchImpl,
37
- timeoutMs: opts.timeoutMs ?? 20_000,
38
- });
39
- }
40
-
41
- export async function llamaYields(args = {}, opts = {}) {
42
- const base = (opts.yieldsBaseUrl || process.env.DEFILLAMA_YIELDS_URL || DEFILLAMA_YIELDS).replace(/\/$/, "");
43
- const result = await httpJson(`${base}/pools`, {
44
- fetchImpl: opts.fetchImpl,
45
- timeoutMs: opts.timeoutMs ?? 30_000,
46
- });
47
- let rows = Array.isArray(result?.data) ? result.data : [];
48
- if (args.chain) rows = rows.filter((x) => String(x.chain).toLowerCase() === String(args.chain).toLowerCase());
49
- if (args.project) rows = rows.filter((x) => String(x.project).toLowerCase() === String(args.project).toLowerCase());
50
- if (args.stablecoin != null) rows = rows.filter((x) => Boolean(x.stablecoin) === Boolean(args.stablecoin));
51
- rows.sort((a, b) => Number(b.tvlUsd || 0) - Number(a.tvlUsd || 0));
52
- const limit = Math.min(5000, Math.max(1, Number(args.limit || rows.length || 1)));
53
- return { ...result, data: rows.slice(0, limit) };
54
- }
55
-
56
- export async function llamaStablecoins(args = {}, opts = {}) {
57
- const base = (opts.stablecoinsBaseUrl || process.env.DEFILLAMA_STABLECOINS_URL || DEFILLAMA_STABLECOINS).replace(/\/$/, "");
58
- const includePrices = args.includePrices !== false;
59
- return httpJson(`${base}/stablecoins?includePrices=${includePrices}`, {
60
- fetchImpl: opts.fetchImpl,
61
- timeoutMs: opts.timeoutMs ?? 30_000,
62
- });
63
- }
64
-
65
- export async function llamaDexVolumes(args = {}, opts = {}) {
66
- const chain = encodeURIComponent(String(args.chain || "Ethereum"));
67
- const params = new URLSearchParams({
68
- excludeTotalDataChart: String(args.includeChart !== true),
69
- excludeTotalDataChartBreakdown: String(args.includeBreakdown !== true),
70
- dataType: "dailyVolume",
71
- });
72
- return httpJson(`${apiBase(opts)}/overview/dexs/${chain}?${params}`, {
73
- fetchImpl: opts.fetchImpl,
74
- timeoutMs: opts.timeoutMs ?? 30_000,
75
- });
76
- }
77
-
78
- /** Convenience: map symbols via coingecko ids */
79
- export async function llamaPricesBySymbol(symbols = ["ethereum", "bitcoin", "solana"], opts = {}) {
80
- const coins = symbols.map((s) => `coingecko:${String(s).toLowerCase()}`);
81
- const data = await llamaPrices(coins, opts);
82
- const out = {};
83
- for (const s of symbols) {
84
- const key = `coingecko:${String(s).toLowerCase()}`;
85
- out[s] = data?.coins?.[key] || null;
86
- }
87
- return out;
88
- }
@@ -1,43 +0,0 @@
1
- // DexScreener public API — token/pair discovery, no key.
2
-
3
- import { httpJson } from "../http.mjs";
4
-
5
- export const DEXSCREENER_API = "https://api.dexscreener.com";
6
-
7
- function base(opts = {}) {
8
- return (opts.baseUrl || process.env.DEXSCREENER_API_URL || DEXSCREENER_API).replace(/\/$/, "");
9
- }
10
-
11
- export async function dexscreenerHealth(opts = {}) {
12
- // tokenless root sometimes 404 — use a known stablecoin query
13
- const data = await httpJson(
14
- `${base(opts)}/latest/dex/search?q=USDC`,
15
- { fetchImpl: opts.fetchImpl, timeoutMs: opts.timeoutMs ?? 12_000 }
16
- );
17
- const n = data?.pairs?.length || 0;
18
- return { ok: n > 0, pairSample: n };
19
- }
20
-
21
- export async function dexscreenerToken(tokenAddress, opts = {}) {
22
- if (!tokenAddress) throw new Error("tokenAddress required");
23
- return httpJson(`${base(opts)}/latest/dex/tokens/${tokenAddress}`, {
24
- fetchImpl: opts.fetchImpl,
25
- timeoutMs: opts.timeoutMs ?? 12_000,
26
- });
27
- }
28
-
29
- export async function dexscreenerSearch(q, opts = {}) {
30
- if (!q) throw new Error("query required");
31
- return httpJson(`${base(opts)}/latest/dex/search?q=${encodeURIComponent(q)}`, {
32
- fetchImpl: opts.fetchImpl,
33
- timeoutMs: opts.timeoutMs ?? 12_000,
34
- });
35
- }
36
-
37
- export async function dexscreenerPair(chainId, pairAddress, opts = {}) {
38
- if (!chainId || !pairAddress) throw new Error("chainId and pairAddress required");
39
- return httpJson(`${base(opts)}/latest/dex/pairs/${chainId}/${pairAddress}`, {
40
- fetchImpl: opts.fetchImpl,
41
- timeoutMs: opts.timeoutMs ?? 12_000,
42
- });
43
- }
@@ -1,222 +0,0 @@
1
- // EVM JSON-RPC read pack — multi-chain balances/blocks via public or env RPCs.
2
- // No wallet keys. Uses chain registry rpcEnv + optional public fallbacks.
3
-
4
- import { httpJson } from "../http.mjs";
5
- import { CHAINS, chainById, rpcUrlFor, isSupportedChain } from "../../chains.mjs";
6
- import { Interface, getAddress } from "ethers";
7
-
8
- const ERC20 = new Interface([
9
- "function allowance(address owner,address spender) view returns (uint256)",
10
- "function balanceOf(address account) view returns (uint256)",
11
- ]);
12
-
13
- function normalizeAddress(value, label) {
14
- try {
15
- return getAddress(value).toLowerCase();
16
- } catch {
17
- throw new Error(`${label} must be a valid EVM address`);
18
- }
19
- }
20
-
21
- function normalizeTxHash(value) {
22
- const hash = String(value || "").trim();
23
- if (!/^0x[0-9a-fA-F]{64}$/.test(hash)) throw new Error("txHash must be a 32-byte hex transaction hash");
24
- return hash.toLowerCase();
25
- }
26
-
27
- function parseHexInt(value) {
28
- if (value == null) return null;
29
- return Number.parseInt(String(value), 16);
30
- }
31
-
32
- /** Public fallbacks when env RPC unset — rate-limited, fine for health/read. */
33
- export const PUBLIC_RPC_FALLBACKS = {
34
- 1: "https://ethereum.publicnode.com",
35
- 137: "https://polygon-bor-rpc.publicnode.com",
36
- 42161: "https://arbitrum-one-rpc.publicnode.com",
37
- 8453: "https://base-rpc.publicnode.com",
38
- 10: "https://optimism-rpc.publicnode.com",
39
- 988: "https://rpc.stable.xyz",
40
- 56: "https://bsc-rpc.publicnode.com",
41
- 43114: "https://avalanche-c-chain-rpc.publicnode.com",
42
- 999: "https://rpc.hyperliquid.xyz/evm",
43
- 2741: "https://api.mainnet.abs.xyz",
44
- 4663: "https://rpc.mainnet.chain.robinhood.com",
45
- };
46
-
47
- /**
48
- * Resolve RPC URL for a chainId: explicit > env (registry) > public fallback.
49
- */
50
- export function resolveRpcUrl(chainId, { rpcUrl, env = process.env } = {}) {
51
- if (rpcUrl) return rpcUrl;
52
- const fromEnv = rpcUrlFor(chainId, env);
53
- if (fromEnv) return fromEnv;
54
- return PUBLIC_RPC_FALLBACKS[Number(chainId)] || null;
55
- }
56
-
57
- /**
58
- * JSON-RPC call
59
- * @param {number} chainId
60
- * @param {string} method
61
- * @param {any[]} [params]
62
- */
63
-
64
- /** Prepare-only: write/settle JSON-RPC methods are hard-refused even on deep import. */
65
- const EVM_WRITE_RPC = new Set([
66
- "eth_sendTransaction",
67
- "eth_sendRawTransaction",
68
- "eth_sign",
69
- "eth_signTransaction",
70
- "eth_signTypedData",
71
- "eth_signTypedData_v4",
72
- "personal_sign",
73
- ]);
74
-
75
- export async function rpcCall(chainId, method, params = [], opts = {}) {
76
- const methodName = String(method || "");
77
- if (EVM_WRITE_RPC.has(methodName) || /send|sign/i.test(methodName) && !/^eth_get|^eth_call|^eth_block|^eth_chain|^eth_fee|^eth_gas|^eth_max|^eth_sync|^net_|^web3_/.test(methodName)) {
78
- // allowlist is positive for common reads; anything send/sign-shaped dies.
79
- if (EVM_WRITE_RPC.has(methodName) || methodName.startsWith("eth_send") || methodName.includes("sign")) {
80
- throw new Error(`evm-rpc: ${methodName} refused — @oracle-agent/oracle is prepare-only (no broadcast/sign)`);
81
- }
82
- }
83
- const url = resolveRpcUrl(chainId, opts);
84
- if (!url) {
85
- throw new Error(
86
- `No RPC URL for chainId ${chainId} (set env from chain registry rpcEnv or pass rpcUrl)`
87
- );
88
- }
89
- const body = { jsonrpc: "2.0", id: 1, method, params };
90
- const res = await httpJson(url, {
91
- method: "POST",
92
- body,
93
- fetchImpl: opts.fetchImpl,
94
- timeoutMs: opts.timeoutMs ?? 12_000,
95
- });
96
- if (res?.error) {
97
- const err = new Error(res.error.message || JSON.stringify(res.error));
98
- err.code = res.error.code;
99
- throw err;
100
- }
101
- return res.result;
102
- }
103
-
104
- export async function rpcHealth(chainId, opts = {}) {
105
- const blockHex = await rpcCall(chainId, "eth_blockNumber", [], opts);
106
- const block = parseInt(blockHex, 16);
107
- const idHex = await rpcCall(chainId, "eth_chainId", [], opts);
108
- const reported = parseInt(idHex, 16);
109
- return {
110
- ok: Number.isFinite(block) && reported === Number(chainId),
111
- chainId: Number(chainId),
112
- reportedChainId: reported,
113
- blockNumber: block,
114
- name: chainById(chainId)?.name || null,
115
- };
116
- }
117
-
118
- export async function rpcBlockNumber(chainId, opts = {}) {
119
- const hex = await rpcCall(chainId, "eth_blockNumber", [], opts);
120
- return parseInt(hex, 16);
121
- }
122
-
123
- export async function rpcChainId(chainId, opts = {}) {
124
- const hex = await rpcCall(chainId, "eth_chainId", [], opts);
125
- return parseInt(hex, 16);
126
- }
127
-
128
- export async function rpcGetBalance(chainId, address, opts = {}) {
129
- if (!address) throw new Error("rpcGetBalance requires address");
130
- const hex = await rpcCall(chainId, "eth_getBalance", [address, "latest"], opts);
131
- return { chainId: Number(chainId), address, balanceWei: BigInt(hex).toString(), balanceHex: hex };
132
- }
133
-
134
- export async function erc20Allowance(args = {}, opts = {}) {
135
- const chainId = Number(args.chainId ?? opts.chainId ?? 1);
136
- const token = normalizeAddress(args.token || args.tokenAddress, "token");
137
- const owner = normalizeAddress(args.owner, "owner");
138
- const spender = normalizeAddress(args.spender, "spender");
139
- const data = ERC20.encodeFunctionData("allowance", [owner, spender]);
140
- const result = await rpcCall(chainId, "eth_call", [{ to: token, data }, args.blockTag || "latest"], opts);
141
- const decoded = ERC20.decodeFunctionResult("allowance", result);
142
- const allowance = BigInt(decoded[0]);
143
- return {
144
- chainId,
145
- token,
146
- owner,
147
- spender,
148
- allowance: allowance.toString(),
149
- allowanceHex: `0x${allowance.toString(16)}`,
150
- blockTag: args.blockTag || "latest",
151
- };
152
- }
153
-
154
- export async function erc20BalanceOf(args = {}, opts = {}) {
155
- const chainId = Number(args.chainId ?? opts.chainId ?? 1);
156
- const token = normalizeAddress(args.token || args.tokenAddress, "token");
157
- const account = normalizeAddress(args.account || args.owner || args.address, "account");
158
- const data = ERC20.encodeFunctionData("balanceOf", [account]);
159
- const result = await rpcCall(chainId, "eth_call", [{ to: token, data }, args.blockTag || "latest"], opts);
160
- const decoded = ERC20.decodeFunctionResult("balanceOf", result);
161
- const balance = BigInt(decoded[0]);
162
- return {
163
- chainId,
164
- token,
165
- account,
166
- balance: balance.toString(),
167
- balanceHex: `0x${balance.toString(16)}`,
168
- blockTag: args.blockTag || "latest",
169
- };
170
- }
171
-
172
- export async function transactionReceipt(args = {}, opts = {}) {
173
- const chainId = Number(args.chainId ?? opts.chainId ?? 1);
174
- const txHash = normalizeTxHash(args.txHash || args.hash || args.transactionHash);
175
- const receipt = await rpcCall(chainId, "eth_getTransactionReceipt", [txHash], opts);
176
- if (!receipt) {
177
- return { ok: false, chainId, txHash, status: "pending", receipt: null, reason: "receipt pending" };
178
- }
179
- const statusNumber = parseHexInt(receipt.status);
180
- let ok = statusNumber === 1;
181
- const status = statusNumber === 1 ? "success" : statusNumber === 0 ? "reverted" : "unknown";
182
- let reason = ok ? null : status === "reverted" ? "transaction reverted" : "unknown receipt status";
183
- const expectedTo = args.expectedTo ? normalizeAddress(args.expectedTo, "expectedTo") : null;
184
- const actualTo = receipt.to ? normalizeAddress(receipt.to, "receipt.to") : null;
185
- if (expectedTo && actualTo !== expectedTo) {
186
- ok = false;
187
- reason = `to mismatch: expected ${expectedTo}, got ${actualTo || "null"}`;
188
- }
189
- return {
190
- ok,
191
- chainId,
192
- txHash,
193
- status,
194
- reason,
195
- statusCode: statusNumber,
196
- to: actualTo,
197
- from: receipt.from ? normalizeAddress(receipt.from, "receipt.from") : null,
198
- blockNumber: parseHexInt(receipt.blockNumber),
199
- transactionIndex: parseHexInt(receipt.transactionIndex),
200
- logs: Array.isArray(receipt.logs) ? receipt.logs : [],
201
- receipt,
202
- };
203
- }
204
-
205
- export async function rpcHealthAll(opts = {}) {
206
- const ids = opts.chainIds || Object.values(CHAINS).map((c) => c.chainId);
207
- const out = {};
208
- await Promise.all(
209
- ids.map(async (id) => {
210
- if (!isSupportedChain(id) && !PUBLIC_RPC_FALLBACKS[id] && !resolveRpcUrl(id, opts)) {
211
- out[id] = { ok: false, error: "no rpc configured", chainId: id };
212
- return;
213
- }
214
- try {
215
- out[id] = await rpcHealth(id, opts);
216
- } catch (e) {
217
- out[id] = { ok: false, chainId: id, error: String(e.message || e) };
218
- }
219
- })
220
- );
221
- return out;
222
- }
@@ -1,34 +0,0 @@
1
- // GeckoTerminal public market-data API — no key.
2
- import { httpJson } from "../http.mjs";
3
-
4
- export const GECKOTERMINAL_API = "https://api.geckoterminal.com/api/v2";
5
- const base = (o={}) => (o.baseUrl || process.env.GECKOTERMINAL_API_URL || GECKOTERMINAL_API).replace(/\/$/, "");
6
- const enc = (v) => encodeURIComponent(String(v));
7
-
8
- export async function geckoNetworks(args = {}, opts = {}) {
9
- const page = Math.max(1, Number(args.page || 1));
10
- return httpJson(`${base(opts)}/networks?page=${page}`, { fetchImpl: opts.fetchImpl, timeoutMs: opts.timeoutMs });
11
- }
12
- export async function geckoPool(args = {}, opts = {}) {
13
- if (!args.network || !args.poolAddress) throw new Error("network and poolAddress required");
14
- return httpJson(`${base(opts)}/networks/${enc(args.network)}/pools/${enc(args.poolAddress)}`, { fetchImpl: opts.fetchImpl, timeoutMs: opts.timeoutMs });
15
- }
16
- export async function geckoToken(args = {}, opts = {}) {
17
- if (!args.network || !(args.address || args.tokenAddress)) throw new Error("network and token address required");
18
- return httpJson(`${base(opts)}/networks/${enc(args.network)}/tokens/${enc(args.address || args.tokenAddress)}`, { fetchImpl: opts.fetchImpl, timeoutMs: opts.timeoutMs });
19
- }
20
- export async function geckoPoolOhlcv(args = {}, opts = {}) {
21
- if (!args.network || !args.poolAddress) throw new Error("network and poolAddress required");
22
- const timeframe = ["minute","hour","day"].includes(args.timeframe) ? args.timeframe : "hour";
23
- const p = new URLSearchParams();
24
- p.set("aggregate", String(Math.max(1, Number(args.aggregate || 1))));
25
- p.set("limit", String(Math.min(1000, Math.max(1, Number(args.limit || 168)))));
26
- if (args.beforeTimestamp != null) p.set("before_timestamp", String(args.beforeTimestamp));
27
- if (args.currency) p.set("currency", String(args.currency));
28
- if (args.token) p.set("token", String(args.token));
29
- return httpJson(`${base(opts)}/networks/${enc(args.network)}/pools/${enc(args.poolAddress)}/ohlcv/${timeframe}?${p}`, { fetchImpl: opts.fetchImpl, timeoutMs: opts.timeoutMs });
30
- }
31
- export async function geckoHealth(opts = {}) {
32
- const data = await geckoNetworks({ page: 1 }, opts);
33
- return { ok: Array.isArray(data?.data) && data.data.length > 0, networkSample: data?.data?.length || 0 };
34
- }