@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
@@ -143,7 +143,8 @@ main{position:relative;z-index:2;padding-top:84px}
143
143
  background:linear-gradient(180deg, rgba(124,196,255,.65), transparent);
144
144
  transform-origin:50% 0;animation:drop-line 2.8s var(--ease) infinite;
145
145
  }
146
- .home-inner{max-width:min(1100px,100%);width:100%;margin:0 auto;position:relative;display:flex;flex-direction:column;align-items:center}
146
+ .home-inner{max-width:min(920px,100%);width:100%;margin:0 auto;position:relative}
147
+ .hero-primary{min-width:0;display:flex;flex-direction:column;align-items:center}
147
148
  .home-kicker{
148
149
  font-family:var(--mono);font-size:10px;letter-spacing:.34em;text-transform:uppercase;color:var(--blue);
149
150
  margin-bottom:6px;position:relative;z-index:3;
@@ -192,7 +193,7 @@ main{position:relative;z-index:2;padding-top:84px}
192
193
  .hero-orb .orbit-dot{position:absolute;width:9px;height:9px;border-radius:50%;background:radial-gradient(circle at 38% 34%, #fff, var(--blue2) 55%, rgba(124,196,255,.5));box-shadow:0 0 22px rgba(167,216,255,.95), 0 0 44px rgba(124,196,255,.4);left:calc(50% - 4.5px);top:calc(50% - 4.5px);transform-style:preserve-3d;animation:orbit-travel 14s linear infinite}
193
194
  .home-title{
194
195
  position:relative;z-index:2;
195
- font-family:var(--display);font-weight:300;font-size:clamp(96px,17vw,230px);line-height:.9;letter-spacing:-.045em;
196
+ font-family:var(--display);font-weight:300;font-size:clamp(72px,10vw,150px);line-height:.9;letter-spacing:-.045em;
196
197
  text-transform:uppercase;color:var(--ink);
197
198
  text-shadow:0 2px 30px rgba(0,0,0,.6);
198
199
  }
@@ -391,6 +392,47 @@ main{position:relative;z-index:2;padding-top:84px}
391
392
  .moat-card h3{font-family:var(--display);font-weight:400;font-size:clamp(20px,2.2vw,26px)}
392
393
  .moat-card p{color:#C9DAEC;font-size:15px;line-height:1.55;max-width:44ch}
393
394
  @media (max-width:860px){.moat-grid{grid-template-columns:1fr}}
395
+
396
+ .strategy-surface{
397
+ margin-top:clamp(30px,5vw,52px);border:1px solid var(--line);border-radius:20px;overflow:hidden;
398
+ background:linear-gradient(145deg,rgba(124,196,255,.07),rgba(17,25,37,.92) 40%,rgba(11,16,24,.98));
399
+ }
400
+ .strategy-head{display:flex;align-items:end;justify-content:space-between;gap:20px;padding:clamp(22px,3vw,34px);border-bottom:1px solid var(--line)}
401
+ .strategy-kicker{font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--blue)}
402
+ .strategy-head h3{font-family:var(--display);font-weight:400;font-size:clamp(28px,4vw,42px);line-height:1.05;margin-top:8px}
403
+ .strategy-head p{max-width:50ch;color:#C9DAEC;font-size:14px;line-height:1.6}
404
+ .strategy-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1px;background:var(--line)}
405
+ .strategy-card{min-height:205px;padding:clamp(20px,2.6vw,28px);background:rgba(11,16,24,.96);display:flex;flex-direction:column;gap:11px}
406
+ .strategy-card .mode{font-family:var(--mono);font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--blue2)}
407
+ .strategy-card h4{font-family:var(--display);font-weight:400;font-size:clamp(23px,2.5vw,30px)}
408
+ .strategy-card p{color:#C9DAEC;font-size:14px;line-height:1.6}
409
+ .strategy-posture{padding:14px clamp(20px,3vw,34px);border-top:1px solid var(--line);font-family:var(--mono);font-size:9px;line-height:1.6;letter-spacing:.11em;text-transform:uppercase;color:var(--mute)}
410
+ .strategy-posture b{color:var(--blue2);font-weight:500}
411
+ @media (max-width:1180px){.strategy-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
412
+ @media (max-width:980px){.strategy-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.strategy-head{align-items:start;flex-direction:column}}
413
+ @media (max-width:620px){.strategy-grid{grid-template-columns:1fr}.strategy-card{min-height:0}}
414
+
415
+ /* actual Oracle CLI */
416
+ .convert-grid{display:grid;grid-template-columns:1fr;gap:clamp(18px,3vw,28px);align-items:stretch;margin-top:8px}
417
+ .convert-copy{display:flex;flex-direction:column;gap:14px;text-align:left;max-width:780px}
418
+ .convert-copy h3{font-family:var(--display);font-weight:400;font-size:clamp(26px,3vw,34px);line-height:1.1}
419
+ .convert-copy p{color:#C9DAEC;font-size:15px;line-height:1.65;max-width:54ch}
420
+ .convert-pills{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
421
+ .convert-pills span{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;border:1px solid rgba(124,196,255,.28);border-radius:999px;padding:8px 12px;color:var(--blue2)}
422
+ .platform-beta{display:inline-flex;align-items:center;gap:10px;width:max-content;max-width:100%;font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:var(--cool)}
423
+ .platform-beta b{font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:#071018;background:var(--blue2);border-radius:999px;padding:5px 8px}
424
+ .cli-install{margin:0 0 22px;display:flex;flex-direction:column;gap:12px;align-items:flex-start}
425
+ .cli-install-cmd{padding:16px 20px;border-radius:12px;border:1px solid rgba(124,196,255,.34);background:rgba(17,25,37,.9);max-width:100%;overflow-x:auto}
426
+ .cli-install-cmd code{font-family:var(--mono);font-size:15px;letter-spacing:.02em;color:var(--blue2);white-space:nowrap}
427
+ .cli-install-gate{display:flex;align-items:center;flex-wrap:wrap;gap:10px;font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--cool);margin:0;max-width:62ch;line-height:1.7}
428
+ .cli-install-gate b{font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:#071018;background:var(--blue2);border-radius:999px;padding:5px 8px;white-space:nowrap}
429
+ .cli-install-gate a{color:var(--blue2);text-decoration:underline;text-underline-offset:3px}
430
+ .cli-frame{border:1px solid var(--line);border-radius:16px;overflow:hidden;background:#0d1420;box-shadow:0 24px 60px rgba(0,0,0,.35)}
431
+ .cli-frame img{display:block;width:100%;height:auto}
432
+ .cli-cap{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--mute);margin-top:10px;text-align:left}
433
+ .cli-code{margin-top:14px;padding:14px 16px;border-radius:12px;border:1px solid var(--line);background:rgba(17,25,37,.9);font-family:var(--mono);font-size:12px;line-height:1.55;color:var(--cool);overflow-x:auto;text-align:left}
434
+ .cli-code b{color:var(--blue2);font-weight:500}
435
+
394
436
  .evolve-rail{
395
437
  display:flex;flex-wrap:wrap;gap:8px;justify-content:center;
396
438
  padding:14px 16px 4px;
@@ -498,8 +540,8 @@ main{position:relative;z-index:2;padding-top:84px}
498
540
  .marquee{overflow:hidden;white-space:nowrap;mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
499
541
  .marquee:hover .track{animation-play-state:paused}
500
542
  .marquee + .marquee{border-top:1px solid rgba(124,196,255,.08)}
501
- .track{display:inline-flex;gap:26px;padding:12px 0;animation:scroll 240s linear infinite;will-change:transform;transform:translate3d(0,0,0);backface-visibility:hidden;perspective:1000px}
502
- .marquee.rev .track{animation-direction:reverse;animation-duration:255s}
543
+ .track{display:inline-flex;gap:26px;padding:12px 0;animation:scroll var(--marquee-duration,240s) linear infinite;will-change:transform;transform:translate3d(0,0,0);backface-visibility:hidden;perspective:1000px}
544
+ .marquee.rev .track{animation-direction:reverse}
503
545
  a.chip{text-decoration:none;color:inherit}
504
546
  .chip{
505
547
  display:inline-flex;align-items:center;gap:10px;
@@ -516,9 +558,6 @@ a.chip:hover{border-color:rgba(124,196,255,.3);background:rgba(21,32,49,.6);tran
516
558
  .chip img.wm.mono{filter:brightness(0) invert(1)}
517
559
 
518
560
  .chip .wordmark{font-family:var(--proto-font,var(--sans));font-weight:var(--proto-weight,750);font-style:var(--proto-style,normal);text-transform:var(--proto-transform,none);letter-spacing:var(--proto-track,-.025em);line-height:1.2}
519
- .chip .cap{font-family:var(--mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--mute);padding-left:8px;border-left:1px solid rgba(124,196,255,.14)}
520
- .chip .cap.t4{color:var(--blue)}
521
- .chip .cap.t3{color:var(--cool)}
522
561
  .proto-uniswap{--proto-font:"Inter",var(--sans);--proto-color:#ff4dcb;--proto-weight:850}
523
562
  .proto-hyperliquid{--proto-font:var(--display);--proto-style:italic;--proto-color:#50d2c1;--proto-weight:500;--proto-track:.01em}
524
563
  .proto-polymarket{--proto-font:"Manrope",var(--sans);--proto-color:#7aa7ff;--proto-weight:800;--proto-track:-.035em}
@@ -572,6 +611,7 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
572
611
  .js .rv.done{transform:none;will-change:auto}
573
612
 
574
613
  @media (max-width:960px){
614
+ .home-inner{max-width:760px}
575
615
  .hero-stage{min-height:clamp(300px,44vh,460px)}.home-title{font-size:clamp(80px,20vw,150px)}
576
616
  .nav-chip{display:none}
577
617
  .nav-links .hide-sm{display:none}
@@ -683,7 +723,9 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
683
723
  </span>
684
724
  oracle</a>
685
725
  <nav class="nav-links" aria-label="Primary">
686
- <a class="hide-sm" href="#orchestration">How it works</a>
726
+ <a class="hide-sm" href="#cli">CLI</a>
727
+ <a class="hide-sm" href="#orchestration">Profiles</a>
728
+ <a class="hide-sm" href="#strategies">Strategies</a>
687
729
  <a class="hide-sm" href="#chains">Chains</a>
688
730
  </nav>
689
731
  </header>
@@ -694,37 +736,73 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
694
736
 
695
737
  <section class="home" id="home">
696
738
  <div class="home-inner">
697
- <div class="hero-stage">
698
- <div class="hero-art" aria-hidden="true">
699
- <video id="orb-vid" muted loop playsinline preload="none" hidden>
700
- <source src="assets/hero/orb.webm" type="video/webm">
701
- </video>
702
- <div class="hero-orb" id="hero-orb">
703
- <span class="lat l1"></span><span class="lat l2"></span><span class="lat l3"></span><span class="lat l4"></span>
704
- <span class="par p1"></span><span class="par p2"></span><span class="par p3"></span>
705
- <span class="eq"></span>
706
- <span class="core-glow"></span>
707
- <span class="orbit-dot"></span>
739
+ <div class="hero-primary">
740
+ <div class="hero-stage">
741
+ <div class="hero-art" aria-hidden="true">
742
+ <video id="orb-vid" muted loop playsinline preload="none" hidden>
743
+ <source src="assets/hero/orb.webm" type="video/webm">
744
+ </video>
745
+ <div class="hero-orb" id="hero-orb">
746
+ <span class="lat l1"></span><span class="lat l2"></span><span class="lat l3"></span><span class="lat l4"></span>
747
+ <span class="par p1"></span><span class="par p2"></span><span class="par p3"></span>
748
+ <span class="eq"></span>
749
+ <span class="core-glow"></span>
750
+ <span class="orbit-dot"></span>
751
+ </div>
752
+ </div>
753
+ <div class="hero-lockup" id="hero-title">
754
+ <h1 class="home-title">OR<em>ACLE</em></h1>
708
755
  </div>
709
756
  </div>
710
- <div class="hero-lockup" id="hero-title">
711
- <h1 class="home-title">OR<em>ACLE</em></h1>
757
+ <div class="home-copy">
758
+ <p class="home-kicker">self-custody agent control</p>
759
+ <p>One control plane for Hyperliquid, Polymarket, EVM, Bitcoin, Solana, Stable, Robinhood Chain, and new protocol builds. Cross-chain research, trade, protocol interactions, NFT listing and buying. The all-in-one crypto agent. The future is agentic.</p>
760
+ <div class="home-actions">
761
+ <a class="enter-cta" href="#cli">See the CLI</a>
762
+ <a class="enter-cta" href="#orchestration" style="margin-left:10px;opacity:.85">See profiles</a>
763
+ </div>
712
764
  </div>
713
765
  </div>
714
- <div class="home-copy">
715
- <p class="home-kicker">self-custody agent control</p>
716
- <p>One control plane for Hyperliquid, Polymarket, EVM, Bitcoin, Solana, Stable, Robinhood Chain, and new protocol builds. Cross-chain research, trade, protocol interactions, NFT listing and buying. The all-in-one crypto agent. The future is agentic.</p>
717
- <div class="home-actions">
718
- <a class="enter-cta" href="#orchestration">Enter oracle</a>
766
+ </div>
767
+ </section>
768
+
769
+ <section class="section cli-section" id="cli">
770
+ <p class="section-label rv">Oracle CLI</p>
771
+ <h2 class="section-title rv">One surface. <em>Every chain.</em></h2>
772
+ <div class="cli-install rv">
773
+ <div class="cli-install-cmd"><code>npm i -g @oracle-agent/oracle</code></div>
774
+ <p class="cli-install-gate"><b>Locals Only access</b> Oracle unlocks when your agent wallet, or a wallet you import, holds a <a href="https://opensea.io/collection/locals-only-hyperevm" target="_blank" rel="noopener noreferrer">Locals Only</a> NFT.</p>
775
+ </div>
776
+ <p class="section-lede rv">The real Oracle shell, isolated from desktop chrome. Pin the active surface with <code style="color:var(--blue2)">/chain hyperliquid</code>, switch models with <code style="color:var(--blue2)">/model</code>, then ask naturally.</p>
777
+ <div class="convert-grid rv">
778
+ <div>
779
+ <figure class="cli-frame">
780
+ <img src="assets/cli-chain-hyperliquid.jpg?v=cli-visible" alt="Oracle CLI selecting Hyperliquid with the /chain hyperliquid command" width="1600" height="900" loading="eager" fetchpriority="high" />
781
+ </figure>
782
+ <p class="cli-cap">actual oracle shell // /chain hyperliquid</p>
783
+ </div>
784
+ <div class="convert-copy">
785
+ <h3>The actual Oracle CLI</h3>
786
+ <p>The active chain follows each read, quote, prepare, and bounded execution path.</p>
787
+ <div class="convert-pills">
788
+ <span>HyperCore + HyperEVM</span>
789
+ <span>multichain routing</span>
790
+ <span>self-custody</span>
791
+ </div>
792
+ <p class="platform-beta"><b>Beta</b> Linux, Windows, and macOS desktop apps are in beta and not yet downloadable. The CLI runs on all three today.</p>
793
+ <div class="cli-code">
794
+ <div><b>oracle ›</b> /chain hyperliquid</div>
795
+ <div><b>oracle ›</b> /chain show</div>
796
+ <div><b>oracle ›</b> what can you do on hyperliquid?</div>
719
797
  </div>
720
798
  </div>
721
799
  </div>
722
800
  </section>
723
801
 
724
802
  <section class="section" id="orchestration">
725
- <p class="section-label rv">How it works</p>
803
+ <p class="section-label rv">Profiles</p>
726
804
  <h2 class="section-title rv">Multi-profile. <em>Customizable.</em></h2>
727
- <p class="section-lede rv">Not one bot. A mesh with profile routing via Hermes: Input / Command hits the oracle control plane, then fans out across venue profiles, multi-chain EVM, Bitcoin, Solana, and a protocol builder. Any MCP harness can drive a single agent.</p>
805
+ <p class="section-lede rv">Input / Command hits the Oracle control plane, then routes across venue profiles, multi-chain EVM, Bitcoin, Solana, and the protocol builder. Any MCP harness can drive a single agent.</p>
728
806
 
729
807
  <div class="graph-shell rv">
730
808
  <div class="graph-top">
@@ -737,98 +815,6 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
737
815
  <span class="evolve-pill on">more chains</span>
738
816
  </div>
739
817
 
740
- <div class="venue-rail-head">solana venues routed · <b id="sol-count">101</b> programs verified on-chain · 88 venues</div>
741
- <div class="evolve-rail venue-rail" id="sol-venue-rail">
742
- <span class="evolve-pill on">1DEX</span>
743
- <span class="evolve-pill on">Aldrin</span>
744
- <span class="evolve-pill on">AlphaQ</span>
745
- <span class="evolve-pill on">Aquifer</span>
746
- <span class="evolve-pill on">BinaryFi</span>
747
- <span class="evolve-pill on">BisonFi</span>
748
- <span class="evolve-pill on">Bonkswap</span>
749
- <span class="evolve-pill on">Boop.fun</span>
750
- <span class="evolve-pill on">Byreal</span>
751
- <span class="evolve-pill on">Carrot</span>
752
- <span class="evolve-pill on">Crema</span>
753
- <span class="evolve-pill on">Cropper</span>
754
- <span class="evolve-pill on">DefiTuna</span>
755
- <span class="evolve-pill on">Denali</span>
756
- <span class="evolve-pill on">Deriverse</span>
757
- <span class="evolve-pill on">DexLab</span>
758
- <span class="evolve-pill on">Dynamic Bonding Curve</span>
759
- <span class="evolve-pill on">Flint</span>
760
- <span class="evolve-pill on">Flux</span>
761
- <span class="evolve-pill on">FluxBeam</span>
762
- <span class="evolve-pill on">GatorSwap</span>
763
- <span class="evolve-pill on">Gavel</span>
764
- <span class="evolve-pill on">GoonFi</span>
765
- <span class="evolve-pill on">GooseFX GAMMA</span>
766
- <span class="evolve-pill on">Guacswap</span>
767
- <span class="evolve-pill on">Hadron</span>
768
- <span class="evolve-pill on">Heaven</span>
769
- <span class="evolve-pill on">Helium Network</span>
770
- <span class="evolve-pill on">Huma</span>
771
- <span class="evolve-pill on">HumidiFi</span>
772
- <span class="evolve-pill on">Hylo Exchange</span>
773
- <span class="evolve-pill on">Hylo Stability</span>
774
- <span class="evolve-pill on">Invariant</span>
775
- <span class="evolve-pill on">Jupiter Lend</span>
776
- <span class="evolve-pill on">JupiterRfqV2</span>
777
- <span class="evolve-pill on">JupLend</span>
778
- <span class="evolve-pill on">Kipseli</span>
779
- <span class="evolve-pill on">LemmingsFi</span>
780
- <span class="evolve-pill on">M Swap</span>
781
- <span class="evolve-pill on">Manifest</span>
782
- <span class="evolve-pill on">Mercurial</span>
783
- <span class="evolve-pill on">MetaDAO</span>
784
- <span class="evolve-pill on">Meteora</span>
785
- <span class="evolve-pill on">Meteora DAMM</span>
786
- <span class="evolve-pill on">Metric</span>
787
- <span class="evolve-pill on">Moonit</span>
788
- <span class="evolve-pill on">Obric</span>
789
- <span class="evolve-pill on">Obsidian</span>
790
- <span class="evolve-pill on">Omnipair</span>
791
- <span class="evolve-pill on">OpenBook</span>
792
- <span class="evolve-pill on">Orca</span>
793
- <span class="evolve-pill on">PancakeSwap</span>
794
- <span class="evolve-pill on">Penguin</span>
795
- <span class="evolve-pill on">Perena</span>
796
- <span class="evolve-pill on">Perena Star</span>
797
- <span class="evolve-pill on">Perps</span>
798
- <span class="evolve-pill on">Phoenix</span>
799
- <span class="evolve-pill on">Pump.fun</span>
800
- <span class="evolve-pill on">Quantum</span>
801
- <span class="evolve-pill on">Raydium</span>
802
- <span class="evolve-pill on">Riptide</span>
803
- <span class="evolve-pill on">RunnerRodeo</span>
804
- <span class="evolve-pill on">Saber</span>
805
- <span class="evolve-pill on">Saber (Decimals)</span>
806
- <span class="evolve-pill on">Sanctum</span>
807
- <span class="evolve-pill on">Sanctum Infinity</span>
808
- <span class="evolve-pill on">Saros</span>
809
- <span class="evolve-pill on">Scale</span>
810
- <span class="evolve-pill on">Scale Vmm</span>
811
- <span class="evolve-pill on">Scorch</span>
812
- <span class="evolve-pill on">Solayer</span>
813
- <span class="evolve-pill on">SolFi</span>
814
- <span class="evolve-pill on">Stabble</span>
815
- <span class="evolve-pill on">Stabble Stable Swap</span>
816
- <span class="evolve-pill on">Stabble Weighted Swap</span>
817
- <span class="evolve-pill on">StepN</span>
818
- <span class="evolve-pill on">TaurusFi</span>
819
- <span class="evolve-pill on">TesseraV</span>
820
- <span class="evolve-pill on">Token Swap</span>
821
- <span class="evolve-pill on">Trends</span>
822
- <span class="evolve-pill on">VaultLiquidUnstake</span>
823
- <span class="evolve-pill on">Virtuals</span>
824
- <span class="evolve-pill on">Voltr</span>
825
- <span class="evolve-pill on">WhaleStreet</span>
826
- <span class="evolve-pill on">Whirlpool</span>
827
- <span class="evolve-pill on">Woofi</span>
828
- <span class="evolve-pill on">XOrca</span>
829
- <span class="evolve-pill on">ZeroFi</span>
830
- </div>
831
-
832
818
  <div class="graph-canvas">
833
819
  <div class="orch" aria-label="Oracle multi-profile graph">
834
820
  <div class="row">
@@ -901,7 +887,7 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
901
887
  <div class="tag">profile</div>
902
888
  <div class="name">solana agent</div>
903
889
  <div class="sub">jup · nfts · dexs</div>
904
- <div class="chains"><span class="ch">Solana <img src="https://icons.llamao.fi/icons/chains/rsz_solana?w=24&h=24" alt="" loading="lazy"></span><span class="ch" id="sol-venue-count">88 venues routed</span></div>
890
+ <div class="chains"><span class="ch">Solana <img src="https://icons.llamao.fi/icons/chains/rsz_solana?w=24&h=24" alt="" loading="lazy"></span></div>
905
891
  </div>
906
892
  <div class="node route p-btc">
907
893
  <div class="tag">profile</div>
@@ -921,12 +907,6 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
921
907
  <div class="sub">launches · memecoins</div>
922
908
  <div class="chains"><span class="ch">Stable <img src="https://icons.llamao.fi/icons/chains/rsz_stable?w=24&h=24" alt="" loading="lazy"></span></div>
923
909
  </div>
924
- <div class="node add">
925
- <div class="tag">open slot</div>
926
- <div class="name">+ add agent</div>
927
- <div class="sub">new chain · new venue · your rules</div>
928
- <div class="chains" style="margin-top:12px;font-family:var(--mono);font-size:10px;color:var(--blue2)">sits beside stable · same custody</div>
929
- </div>
930
910
  </div>
931
911
 
932
912
  <div class="wires funnel" aria-hidden="true">
@@ -1047,20 +1027,10 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1047
1027
  <span class="chip-s">unsigned deploy</span>
1048
1028
  </div>
1049
1029
  </article>
1050
- <article class="route-card p-add">
1051
- <div class="where">+ add agent →</div>
1052
- <h3>Next chain</h3>
1053
- <p>Drop in another profile for a new chain or venue. Same custody model, your wallet, your limits, your revoke.</p>
1054
- <div class="chips">
1055
- <span class="chip-s">custom profile</span>
1056
- <span class="chip-s">more chains</span>
1057
- <span class="chip-s">same custody</span>
1058
- </div>
1059
- </article>
1060
1030
  </div>
1061
1031
 
1062
1032
  <div class="why-band">
1063
- <p>The model proposes. Policy bounds. You own signatures. Multi-profile desks, not one omniscient chatbot. Vaults, perps, bridges, and protocol scaffolds, not just swaps. Empty allowlists refuse everything until you configure them.</p>
1033
+ <p>The model proposes. Policy bounds. You own signatures. Multi-profile desks route each request to the right surface. Vaults, perps, bridges, and protocol scaffolds, not just swaps. Empty allowlists refuse everything until you configure them.</p>
1064
1034
  </div>
1065
1035
  </div>
1066
1036
 
@@ -1096,7 +1066,45 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1096
1066
  <p>A fresh install signs nothing. Every lane refuses while its allowlists are empty, so nothing moves until you set the bounds.</p>
1097
1067
  </article>
1098
1068
  </div>
1099
- </section>
1069
+
1070
+ <div class="strategy-surface rv" id="strategies" aria-labelledby="strategies-title">
1071
+ <div class="strategy-head">
1072
+ <div>
1073
+ <div class="strategy-kicker">Agentic strategies</div>
1074
+ <h3 id="strategies-title">Move liquidity. Bound the risk.</h3>
1075
+ </div>
1076
+ <p>Oracle reads the position, models the route and costs, then prepares only the steps the selected lane can actually support.</p>
1077
+ </div>
1078
+ <div class="strategy-grid">
1079
+ <article class="strategy-card">
1080
+ <div class="mode">read · model · prepare</div>
1081
+ <h4>LP rebalancing</h4>
1082
+ <p>Read concentrated-liquidity positions, model new ranges and fee drag, then prepare collect, swap and redeploy steps on supported venues. You sign each step.</p>
1083
+ </article>
1084
+ <article class="strategy-card">
1085
+ <div class="mode">monitor · shadow · simulate</div>
1086
+ <h4>MEV</h4>
1087
+ <p>Monitor cross-venue divergence and simulate net edge after gas, slippage and lender costs. Public mode is shadow analysis, not autonomous execution.</p>
1088
+ </article>
1089
+ <article class="strategy-card">
1090
+ <div class="mode">simulate · policy-check</div>
1091
+ <h4>Flash loans</h4>
1092
+ <p>Build bounded atomic loan routes and test premium, calldata, gas and minimum-profit gates. Public live execution remains disabled.</p>
1093
+ </article>
1094
+ <article class="strategy-card">
1095
+ <div class="mode">read · quote · prepare</div>
1096
+ <h4>Staking</h4>
1097
+ <p>Compare validators, staking vaults, rewards and unlock periods, then prepare supported stake, withdraw and delegate actions for your signature.</p>
1098
+ </article>
1099
+ <article class="strategy-card">
1100
+ <div class="mode">discover · compare · prepare</div>
1101
+ <h4>Yield</h4>
1102
+ <p>Rank lending, staking, vault and LP opportunities by net APY after fees, liquidity, lockups and smart-contract risk, then prepare supported deposits or migrations for your signature.</p>
1103
+ </article>
1104
+ </div>
1105
+ <div class="strategy-posture"><b>Public posture:</b> research, simulation and unsigned preparation. MEV and flash-loan broadcast stays off; supported staking, LP and yield actions require the user wallet to sign.</div>
1106
+ </div>
1107
+ </section>
1100
1108
 
1101
1109
  <section class="section" id="chains">
1102
1110
  <p class="section-label rv">Chains</p>
@@ -1115,7 +1123,7 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1115
1123
  </div>
1116
1124
  </div>
1117
1125
  <div class="venues rv">
1118
- <div class="venues-head"><span>protocols // venues</span><span><b>exact proven rungs</b> · read + quote does not mean live submit</span></div>
1126
+ <div class="venues-head"><span>protocols // venues</span></div>
1119
1127
  <div class="marquee"><div class="track" id="proto-track-a"></div></div>
1120
1128
  <div class="marquee rev"><div class="track" id="proto-track-b"></div></div>
1121
1129
  </div>
@@ -1187,15 +1195,15 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
1187
1195
  var WM = "assets/wordmarks/";
1188
1196
  var BRAND = "brand/";
1189
1197
  var PROTOS_A = [
1190
- { n: "Uniswap V3", img: "uniswap", cap: "read + quote + prepare + policy", u: "https://app.uniswap.org/" },
1191
- { n: "Aerodrome Slipstream", img: "aerodrome", cap: "read + quote + prepare", u: "https://aerodrome.finance/" },
1192
- { n: "Pancake V3", img: "pancakeswap", cap: "read + quote", u: "https://pancakeswap.finance/swap" },
1198
+ { n: "Uniswap V3", wm: "uniswap.svg", cap: "read + quote + prepare + policy", u: "https://app.uniswap.org/" },
1199
+ { n: "Aerodrome Slipstream", wm: "aerodrome.svg", cap: "read + quote + prepare", u: "https://aerodrome.finance/" },
1200
+ { n: "Pancake V3", wm: "pancakeswap.svg", cap: "read + quote", u: "https://pancakeswap.finance/swap" },
1193
1201
  { n: "LFJ Liquidity Book", img: "lfj", cap: "read + quote", u: "https://lfj.gg/avalanche/trade" },
1194
1202
  { n: "Curve RouterNG", img: "curve", cap: "read + quote + prepare + policy", u: "https://curve.finance" },
1195
1203
  { n: "Pendle Router", img: "pendle", cap: "read + quote + prepare + policy", u: "https://pendle.finance/" },
1196
- { n: "Morpho vaults", img: "morpho", cap: "read + deposit prepare", u: "https://app.morpho.org/" },
1204
+ { n: "Morpho vaults", wm: "morpho.svg", cap: "read + deposit prepare", u: "https://app.morpho.org/" },
1197
1205
  { n: "Lido stETH", img: "lido", cap: "read + stake prepare + policy", u: "https://lido.fi/" },
1198
- { n: "Kinetiq kHYPE", img: "kinetiq", cap: "read + quote + stake prepare + policy", u: "https://kinetiq.xyz/stake" },
1206
+ { n: "Kinetiq kHYPE", wm: "kinetiq.svg", tall: 1, cap: "read + quote + stake prepare + policy", u: "https://kinetiq.xyz/stake" },
1199
1207
  { n: "Project X", img: "projectx", cap: "read", u: "https://www.prjx.com" },
1200
1208
  { n: "Uniswap V4", img: "uniswapv4", cap: "read + quote", u: "https://app.uniswap.org/" },
1201
1209
  { n: "Aborean CL", img: "aborean", cap: "read + quote", u: "https://aborean.finance/" },
@@ -1219,9 +1227,9 @@ var BRAND = "brand/";
1219
1227
  { n: "Pharaoh V3", img: "pharaoh", cap: "read + quote", u: "https://www.phar.gg/" },
1220
1228
  { n: "Polymarket", img: "polymarket", cap: "read", u: "https://polymarket.com/" },
1221
1229
  { n: "XSY", img: "xsy", cap: "read", u: "https://xsy.fi" },
1222
- { n: "Balancer V2", img: "balancer", cap: "read + quote", u: "https://balancer.fi/" },
1230
+ { n: "Balancer V2", wm: "balancer.svg", cap: "read + quote", u: "https://balancer.fi/" },
1223
1231
  { n: "Harmonix", img: "harmonix", cap: "read + quote", u: "https://app.harmonix.fi/" },
1224
- { n: "Hyperliquid HLP", img: "hyperliquidhpl", cap: "read", u: "https://app.hyperliquid.xyz" },
1232
+ { n: "Hyperliquid HLP", wm: "hyperliquid.svg", cap: "read", u: "https://app.hyperliquid.xyz" },
1225
1233
  { n: "stHYPE + wstHYPE", img: "sthype", cap: "read + quote", u: "https://app.valantis.xyz" },
1226
1234
  { n: "Arcus Perps", img: "arcus", cap: "read", u: "https://arcus.xyz/" },
1227
1235
  { n: "NOXA Fun", img: "noxa", cap: "read + quote", u: "https://fun.noxa.eth.limo/" },
@@ -1238,17 +1246,17 @@ var BRAND = "brand/";
1238
1246
  { n: "Hypha", img: "hypha", cap: "read + quote", u: "https://www.hypha.sh/" },
1239
1247
  { n: "40 Acres", img: "fortyacres", cap: "read + quote", u: "https://www.40acres.finance/" },
1240
1248
  { n: "Hyperbeat", img: "hyperbeat", cap: "read + quote", u: "https://app.hyperbeat.org/" },
1241
- { n: "GMX V2", img: "gmx", cap: "read + order attestation", u: "https://gmx.io/" },
1242
- { n: "Relay", img: "relay", cap: "route source", u: "https://relay.link/" },
1243
- { n: "Odos", img: "odos", cap: "read + route source", u: "https://app.odos.xyz" },
1244
- { n: "Jupiter", img: "jupiter", cap: "solana route source", u: "https://jup.ag/" },
1245
- { n: "Stargate", img: "stargate", cap: "read + bridge route", u: "https://stargate.finance/" }
1249
+ { n: "GMX V2", wm: "gmx.svg", cap: "read + order attestation", u: "https://gmx.io/" },
1250
+ { n: "Relay", wm: "relay.svg", cap: "route source", u: "https://relay.link/" },
1251
+ { n: "Odos", wm: "odos.svg", cap: "read + route source", u: "https://app.odos.xyz" },
1252
+ { n: "Jupiter", wm: "jupiter.svg", cap: "solana route source", u: "https://jup.ag/" },
1253
+ { n: "Stargate", wm: "stargate.svg", cap: "read + bridge route", u: "https://stargate.finance/" }
1246
1254
  ];
1247
1255
  var PROTOS_B = [
1248
1256
  { n: "Uniswap V3 LP", img: "uniswap", cap: "preview + mint/collect prepare", u: "https://app.uniswap.org/" },
1249
- { n: "Velodrome V2", img: "velodrome", cap: "read + quote", u: "https://velodrome.finance/" },
1257
+ { n: "Velodrome V2", wm: "velodrome.svg", cap: "read + quote", u: "https://velodrome.finance/" },
1250
1258
  { n: "QuickSwap", img: "quickswap", cap: "read + quote", u: "https://quickswap.exchange/" },
1251
- { n: "HyperSwap V3", img: "hyperswap", cap: "read + quote", u: "https://app.hyperswap.exchange/" },
1259
+ { n: "HyperSwap V3", wm: "hyperswap.svg", cap: "read + quote", u: "https://app.hyperswap.exchange/" },
1252
1260
  { n: "Balancer V3", img: "balancer", cap: "read + quote + prepare + policy", u: "https://balancer.fi/" },
1253
1261
  { n: "Aave V3", img: "aave", cap: "read + supply/withdraw prepare + policy", u: "https://aave.com/" },
1254
1262
  { n: "Morpho Blue", img: "morpho", cap: "read", u: "https://app.morpho.org" },
@@ -1297,8 +1305,8 @@ var PROTOS_B = [
1297
1305
  { n: "Looped Hype", img: "loopedhype", cap: "read + quote", u: "https://www.loopingcollective.org/" },
1298
1306
  { n: "LI.FI", img: "lifi", cap: "read + route source", u: "https://li.fi/" },
1299
1307
  { n: "Velora", img: "velora", cap: "read + route source", u: "https://app.velora.xyz" },
1300
- { n: "CoW Swap", img: "cow", cap: "read + route source", u: "https://cow.fi/" },
1301
- { n: "Across", img: "across", cap: "read + bridge route", u: "https://across.to" }
1308
+ { n: "CoW Swap", wm: "cowswap.svg", cap: "read + route source", u: "https://cow.fi/" },
1309
+ { n: "Across", wm: "across.svg", cap: "read + bridge route", u: "https://across.to" }
1302
1310
  ];
1303
1311
 
1304
1312
  // Equalize optical weight: constant target area, clamped, then width-capped.
@@ -1311,29 +1319,91 @@ var PROTOS_B = [
1311
1319
  img.style.height = h.toFixed(1) + "px";
1312
1320
  }
1313
1321
  function wireMarks(root) {
1314
- root.querySelectorAll("img.wm:not(.tall)").forEach(function (img) {
1315
- if (img.complete && img.naturalWidth) normalizeMark(img);
1316
- else img.addEventListener("load", function () { normalizeMark(img); }, { once: true });
1322
+ root.querySelectorAll("img.wm").forEach(function (img) {
1323
+ if (img.complete) {
1324
+ if (!img.classList.contains("tall") && img.naturalWidth) normalizeMark(img);
1325
+ return;
1326
+ }
1327
+ img.addEventListener("load", function () {
1328
+ if (!img.classList.contains("tall")) normalizeMark(img);
1329
+ syncMarqueeVelocity();
1330
+ }, { once: true });
1331
+ });
1332
+ }
1333
+
1334
+ var MARQUEE_PX_PER_SECOND = 20;
1335
+ var marqueeResizeTimer = 0;
1336
+ function syncMarqueeVelocity() {
1337
+ document.querySelectorAll(".track").forEach(function (track) {
1338
+ var distance = track.scrollWidth / 2;
1339
+ if (distance > 0) {
1340
+ track.style.setProperty("--marquee-duration", Math.max(30, distance / MARQUEE_PX_PER_SECOND).toFixed(2) + "s");
1341
+ }
1317
1342
  });
1318
1343
  }
1319
1344
 
1345
+ function protocolName(name) {
1346
+ var label = name.replace(/\s+(?:DEX\s+)?V\d+(?:\s+LP)?\b/gi, "").trim();
1347
+ var aliases = [
1348
+ [/^Aerodrome\b/i, "Aerodrome"],
1349
+ [/^Pancake(?:Swap)?\b/i, "PancakeSwap"],
1350
+ [/^LFJ\b/i, "LFJ"],
1351
+ [/^Curve\b/i, "Curve"],
1352
+ [/^Pendle\b/i, "Pendle"],
1353
+ [/^Morpho\b/i, "Morpho"],
1354
+ [/^Lido\b/i, "Lido"],
1355
+ [/^Kinetiq\b/i, "Kinetiq"],
1356
+ [/^Aborean\b/i, "Aborean"],
1357
+ [/^Stable Swap\b/i, "Stable"],
1358
+ [/^Ethena\b/i, "Ethena"],
1359
+ [/^Benqi\b/i, "Benqi"],
1360
+ [/^Fluid\b/i, "Fluid"],
1361
+ [/^Lista\b/i, "Lista"],
1362
+ [/^Hyperliquid\b/i, "Hyperliquid"],
1363
+ [/^Arcus\b/i, "Arcus"],
1364
+ [/^NOXA\b/i, "NOXA"],
1365
+ [/^Kona\b/i, "Kona"],
1366
+ [/^Velodrome\b/i, "Velodrome"],
1367
+ [/^SakuraSwap\b/i, "SakuraSwap"],
1368
+ [/^Spark(?:Lend|\b)/i, "Spark"],
1369
+ [/^(?:ether\.fi|EtherFi)\b/i, "EtherFi"],
1370
+ [/^Sky\b/i, "Sky"],
1371
+ [/^Binance\b/i, "Binance"],
1372
+ [/^Avant\b/i, "Avant"],
1373
+ [/^Aster\b/i, "Aster"],
1374
+ [/^Lighter\b/i, "Lighter"],
1375
+ [/^stHYPE \+ wstHYPE$/i, "Valantis"]
1376
+ ];
1377
+ for (var i = 0; i < aliases.length; i++) {
1378
+ if (aliases[i][0].test(label)) return aliases[i][1];
1379
+ }
1380
+ return label;
1381
+ }
1382
+ function uniqueProtocols(list, seen) {
1383
+ return list.filter(function (x) {
1384
+ var label = protocolName(x.n);
1385
+ if (seen[label]) return false;
1386
+ seen[label] = true;
1387
+ return true;
1388
+ });
1389
+ }
1320
1390
  function chipRow(list) {
1321
1391
  var seq = list.concat(list);
1322
1392
  return seq.map(function (x) {
1323
- var tier = /policy/.test(x.cap || "") ? " t4" : /prepare/.test(x.cap || "") ? " t3" : "";
1393
+ var label = protocolName(x.n);
1324
1394
  var body = x.img
1325
- ? '<img class="wm tall" src="' + BRAND + x.img + '.webp" alt="' + x.n + '" decoding="async">' +
1326
- '<span class="wordmark">' + x.n + '</span>' +
1327
- '<span class="cap' + tier + '">' + x.cap + '</span>'
1395
+ ? '<img class="wm tall" src="' + BRAND + x.img + '.webp" alt="' + label + '" decoding="async">' +
1396
+ '<span class="wordmark">' + label + '</span>'
1328
1397
  : x.wm
1329
- ? '<img class="' + (x.tall ? 'wm tall' : 'wm') + (x.mono ? ' mono' : '') + '" src="' + WM + x.wm + '" alt="' + x.n + '" decoding="async">' +
1330
- (x.tall ? '<span class="wordmark">' + x.n + '</span>' : '')
1331
- : '<span class="wordmark">' + x.n + '</span>';
1332
- return '<a class="chip wm-chip" href="' + x.u + '" target="_blank" rel="noopener noreferrer" aria-label="' + x.n + '">' + body + '</a>';
1398
+ ? '<img class="' + (x.tall ? 'wm tall' : 'wm') + (x.mono ? ' mono' : '') + '" src="' + WM + x.wm + '" alt="' + label + '" decoding="async">' +
1399
+ (x.tall ? '<span class="wordmark">' + label + '</span>' : '')
1400
+ : '<span class="wordmark">' + label + '</span>';
1401
+ return '<a class="chip wm-chip" href="' + x.u + '" target="_blank" rel="noopener noreferrer" aria-label="' + label + '">' + body + '</a>';
1333
1402
  }).join("");
1334
1403
  }
1335
- document.getElementById("proto-track-a").innerHTML = chipRow(PROTOS_A);
1336
- document.getElementById("proto-track-b").innerHTML = chipRow(PROTOS_B);
1404
+ var visibleProtocols = Object.create(null);
1405
+ document.getElementById("proto-track-a").innerHTML = chipRow(uniqueProtocols(PROTOS_A, visibleProtocols));
1406
+ document.getElementById("proto-track-b").innerHTML = chipRow(uniqueProtocols(PROTOS_B, visibleProtocols));
1337
1407
 
1338
1408
  var LM = "assets/llms/";
1339
1409
  var LLMS = [
@@ -1359,6 +1429,13 @@ var PROTOS_B = [
1359
1429
  wireMarks(document.getElementById("proto-track-a"));
1360
1430
  wireMarks(document.getElementById("proto-track-b"));
1361
1431
  wireMarks(document.getElementById("llm-track"));
1432
+ syncMarqueeVelocity();
1433
+ if (document.fonts && document.fonts.ready) document.fonts.ready.then(syncMarqueeVelocity);
1434
+ window.addEventListener("load", syncMarqueeVelocity);
1435
+ window.addEventListener("resize", function () {
1436
+ clearTimeout(marqueeResizeTimer);
1437
+ marqueeResizeTimer = setTimeout(syncMarqueeVelocity, 120);
1438
+ });
1362
1439
 
1363
1440
  var loader = document.getElementById("loader");
1364
1441
  var fill = document.getElementById("loader-fill");