@oracle-agent/oracle 0.13.0 → 0.14.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 (629) hide show
  1. package/CONTRIBUTING.md +99 -0
  2. package/README.md +531 -13
  3. package/SECURITY.md +112 -0
  4. package/SETUP.md +317 -0
  5. package/artifacts/inscription/oracle-was-here-preview.png +0 -0
  6. package/artifacts/inscription/oracle-was-here.svg +1 -0
  7. package/artifacts/specialist-packs/oracle-full-crypto.json +298 -0
  8. package/bin/desk-server.mjs +473 -0
  9. package/bin/oracle-data-mcp.mjs +1252 -0
  10. package/bin/oracle-equities.mjs +168 -0
  11. package/bin/oracle-init.mjs +525 -0
  12. package/bin/oracle-public-server.mjs +36 -0
  13. package/bin/oracle-route.mjs +254 -0
  14. package/bin/oracle-scan.mjs +192 -0
  15. package/bin/oracle-upgrade.mjs +42 -0
  16. package/bin/oracle.mjs +28 -19
  17. package/docs/adding-a-chain.md +229 -0
  18. package/docs/architecture.md +139 -0
  19. package/docs/buzz-integration.md +115 -0
  20. package/docs/cli.md +143 -0
  21. package/docs/connectors.md +13 -0
  22. package/docs/hyperliquid-builder-code.md +50 -0
  23. package/docs/locals-only-fee-waiver.md +34 -0
  24. package/docs/oracle-pack-standard.md +29 -0
  25. package/docs/profiles.md +151 -0
  26. package/docs/public-surface.md +206 -0
  27. package/examples/add-a-chain.mjs +65 -0
  28. package/examples/oracle-pack-template.mjs +38 -0
  29. package/examples/research-a-token.mjs +70 -0
  30. package/package.json +110 -14
  31. package/plugins/oracle-owner-gate/__init__.py +288 -0
  32. package/plugins/oracle-owner-gate/plugin.yaml +9 -0
  33. package/profiles/_template/SOUL.md +54 -0
  34. package/profiles/_template/profile.json +22 -0
  35. package/profiles/bitcoin-agent/SOUL.md +31 -0
  36. package/profiles/bitcoin-agent/profile.json +32 -0
  37. package/profiles/hyperliquid-agent/SOUL.md +34 -0
  38. package/profiles/hyperliquid-agent/profile.json +38 -0
  39. package/profiles/oracle/SOUL.md +120 -0
  40. package/profiles/oracle/profile.json +40 -0
  41. package/profiles/polymarket-agent/SOUL.md +35 -0
  42. package/profiles/polymarket-agent/profile.json +34 -0
  43. package/profiles/profile.schema.json +90 -0
  44. package/profiles/protocol-builder/SOUL.md +57 -0
  45. package/profiles/protocol-builder/profile.json +39 -0
  46. package/profiles/robinhood-agent/SOUL.md +53 -0
  47. package/profiles/robinhood-agent/profile.json +41 -0
  48. package/profiles/solana-agent/SOUL.md +37 -0
  49. package/profiles/solana-agent/profile.json +38 -0
  50. package/profiles/stable-agent/SOUL.md +43 -0
  51. package/profiles/stable-agent/profile.json +38 -0
  52. package/protocols/templates/safe-erc20/SECURITY.md +16 -0
  53. package/protocols/templates/safe-erc20/foundry.toml +12 -0
  54. package/protocols/templates/safe-erc20/remappings.txt +2 -0
  55. package/protocols/templates/safe-erc20/src/SafeERC20.sol +53 -0
  56. package/protocols/templates/safe-erc20/test/SafeERC20.t.sol +72 -0
  57. package/public/agent-connect/app.js +84 -0
  58. package/public/agent-connect/index.html +83 -0
  59. package/public/agent-connect/styles.css +70 -0
  60. package/public/index.html +12 -0
  61. package/public/oracle-console/app.js +272 -0
  62. package/public/oracle-console/bitcoin-wallets.js +206 -0
  63. package/public/oracle-console/index.html +91 -0
  64. package/public/oracle-console/styles.css +239 -0
  65. package/public/oracle-splash/_variants/ice.html +2073 -0
  66. package/public/oracle-splash/_variants/ivory.html +2075 -0
  67. package/public/oracle-splash/assets/agents/claude.png +0 -0
  68. package/public/oracle-splash/assets/agents/codex.png +0 -0
  69. package/public/oracle-splash/assets/cli-chain-hyperliquid.jpg +0 -0
  70. package/public/oracle-splash/assets/desktop-app.jpg +0 -0
  71. package/public/oracle-splash/assets/hero/cli-session-poster.jpg +0 -0
  72. package/public/oracle-splash/assets/hero/cli-session.mp4 +0 -0
  73. package/public/oracle-splash/assets/hero/cli-session.webm +0 -0
  74. package/public/oracle-splash/assets/hero/orb-poster.jpg +0 -0
  75. package/public/oracle-splash/assets/hero/orb.avif +0 -0
  76. package/public/oracle-splash/assets/hero/orb.webm +0 -0
  77. package/public/oracle-splash/assets/hero/risk-session-poster.jpg +0 -0
  78. package/public/oracle-splash/assets/hero/risk-session.mp4 +0 -0
  79. package/public/oracle-splash/assets/hero/risk-session.webm +0 -0
  80. package/public/oracle-splash/assets/hero/route-session-poster.jpg +0 -0
  81. package/public/oracle-splash/assets/hero/route-session.mp4 +0 -0
  82. package/public/oracle-splash/assets/hero/route-session.webm +0 -0
  83. package/public/oracle-splash/assets/llms/claude.svg +1 -0
  84. package/public/oracle-splash/assets/llms/codex-icon.svg +1 -0
  85. package/public/oracle-splash/assets/llms/codex.svg +1 -0
  86. package/public/oracle-splash/assets/llms/cursor-icon.svg +12 -0
  87. package/public/oracle-splash/assets/llms/cursor.svg +17 -0
  88. package/public/oracle-splash/assets/llms/deepseek.svg +1 -0
  89. package/public/oracle-splash/assets/llms/gemini-icon.svg +1 -0
  90. package/public/oracle-splash/assets/llms/gemini.svg +1 -0
  91. package/public/oracle-splash/assets/llms/grok.svg +8 -0
  92. package/public/oracle-splash/assets/llms/hermes.png +0 -0
  93. package/public/oracle-splash/assets/llms/kimi-icon.svg +1 -0
  94. package/public/oracle-splash/assets/llms/kimi.svg +1 -0
  95. package/public/oracle-splash/assets/llms/manus.svg +18 -0
  96. package/public/oracle-splash/assets/llms/openclaw.svg +22 -0
  97. package/public/oracle-splash/assets/llms/perplexity.svg +1 -0
  98. package/public/oracle-splash/assets/llms/qwen.svg +1 -0
  99. package/public/oracle-splash/assets/llms/windsurf.svg +1 -0
  100. package/public/oracle-splash/assets/protocols/abcdex.png +0 -0
  101. package/public/oracle-splash/assets/protocols/across.png +0 -0
  102. package/public/oracle-splash/assets/protocols/aerodrome.png +0 -0
  103. package/public/oracle-splash/assets/protocols/balancer.png +0 -0
  104. package/public/oracle-splash/assets/protocols/cowswap.png +0 -0
  105. package/public/oracle-splash/assets/protocols/curve.png +0 -0
  106. package/public/oracle-splash/assets/protocols/dreamcash.png +0 -0
  107. package/public/oracle-splash/assets/protocols/felix.png +0 -0
  108. package/public/oracle-splash/assets/protocols/gmx.png +0 -0
  109. package/public/oracle-splash/assets/protocols/hyena.png +0 -0
  110. package/public/oracle-splash/assets/protocols/hyperbeat.png +0 -0
  111. package/public/oracle-splash/assets/protocols/hyperliquid.png +0 -0
  112. package/public/oracle-splash/assets/protocols/hyperswap.png +0 -0
  113. package/public/oracle-splash/assets/protocols/jupiter.png +0 -0
  114. package/public/oracle-splash/assets/protocols/kinetiq.png +0 -0
  115. package/public/oracle-splash/assets/protocols/lfj.png +0 -0
  116. package/public/oracle-splash/assets/protocols/lifi.png +0 -0
  117. package/public/oracle-splash/assets/protocols/magic-eden.png +0 -0
  118. package/public/oracle-splash/assets/protocols/morpho.png +0 -0
  119. package/public/oracle-splash/assets/protocols/odos.png +0 -0
  120. package/public/oracle-splash/assets/protocols/oneinch.png +0 -0
  121. package/public/oracle-splash/assets/protocols/opensea.png +0 -0
  122. package/public/oracle-splash/assets/protocols/pancakeswap.png +0 -0
  123. package/public/oracle-splash/assets/protocols/paragon.png +0 -0
  124. package/public/oracle-splash/assets/protocols/paraswap.png +0 -0
  125. package/public/oracle-splash/assets/protocols/pendle.png +0 -0
  126. package/public/oracle-splash/assets/protocols/polymarket.png +0 -0
  127. package/public/oracle-splash/assets/protocols/quickswap.png +0 -0
  128. package/public/oracle-splash/assets/protocols/relay.png +0 -0
  129. package/public/oracle-splash/assets/protocols/stargate.png +0 -0
  130. package/public/oracle-splash/assets/protocols/tradexyz.png +0 -0
  131. package/public/oracle-splash/assets/protocols/uniswap.png +0 -0
  132. package/public/oracle-splash/assets/protocols/velodrome.png +0 -0
  133. package/public/oracle-splash/assets/protocols/ventuals.png +0 -0
  134. package/public/oracle-splash/assets/wordmarks/across-icon.webp +0 -0
  135. package/public/oracle-splash/assets/wordmarks/across.svg +4 -0
  136. package/public/oracle-splash/assets/wordmarks/aerodrome.svg +23 -0
  137. package/public/oracle-splash/assets/wordmarks/balancer.svg +3 -0
  138. package/public/oracle-splash/assets/wordmarks/cowswap.svg +1 -0
  139. package/public/oracle-splash/assets/wordmarks/curve.png +0 -0
  140. package/public/oracle-splash/assets/wordmarks/gmx.svg +13 -0
  141. package/public/oracle-splash/assets/wordmarks/hop-icon.webp +0 -0
  142. package/public/oracle-splash/assets/wordmarks/hyena.svg +7 -0
  143. package/public/oracle-splash/assets/wordmarks/hyperliquid.svg +21 -0
  144. package/public/oracle-splash/assets/wordmarks/hyperswap.svg +13 -0
  145. package/public/oracle-splash/assets/wordmarks/jupiter.svg +35 -0
  146. package/public/oracle-splash/assets/wordmarks/kinetiq.svg +1 -0
  147. package/public/oracle-splash/assets/wordmarks/lfj.webp +0 -0
  148. package/public/oracle-splash/assets/wordmarks/lifi.png +0 -0
  149. package/public/oracle-splash/assets/wordmarks/magic-eden.svg +1 -0
  150. package/public/oracle-splash/assets/wordmarks/markets.svg +1 -0
  151. package/public/oracle-splash/assets/wordmarks/morpho.svg +1 -0
  152. package/public/oracle-splash/assets/wordmarks/odos.svg +3 -0
  153. package/public/oracle-splash/assets/wordmarks/oneinch-icon.webp +0 -0
  154. package/public/oracle-splash/assets/wordmarks/oneinch.svg +6 -0
  155. package/public/oracle-splash/assets/wordmarks/opensea-icon.svg +17 -0
  156. package/public/oracle-splash/assets/wordmarks/opensea.svg +1 -0
  157. package/public/oracle-splash/assets/wordmarks/outcome.svg +16 -0
  158. package/public/oracle-splash/assets/wordmarks/pancakeswap.svg +18 -0
  159. package/public/oracle-splash/assets/wordmarks/paragon.svg +9 -0
  160. package/public/oracle-splash/assets/wordmarks/paraswap.svg +16 -0
  161. package/public/oracle-splash/assets/wordmarks/pendle.png +0 -0
  162. package/public/oracle-splash/assets/wordmarks/polymarket.png +0 -0
  163. package/public/oracle-splash/assets/wordmarks/quickswap.png +0 -0
  164. package/public/oracle-splash/assets/wordmarks/relay.svg +8 -0
  165. package/public/oracle-splash/assets/wordmarks/satflow-icon.png +0 -0
  166. package/public/oracle-splash/assets/wordmarks/stargate-icon.webp +0 -0
  167. package/public/oracle-splash/assets/wordmarks/stargate.svg +15 -0
  168. package/public/oracle-splash/assets/wordmarks/uniswap.svg +18 -0
  169. package/public/oracle-splash/assets/wordmarks/velodrome.svg +84 -0
  170. package/public/oracle-splash/assets/wordmarks/xyz.svg +12 -0
  171. package/public/oracle-splash/assets/wordmarks/zerox-icon.webp +0 -0
  172. package/public/oracle-splash/brand/aave.webp +0 -0
  173. package/public/oracle-splash/brand/aavev2.webp +0 -0
  174. package/public/oracle-splash/brand/aborean.webp +0 -0
  175. package/public/oracle-splash/brand/across.webp +0 -0
  176. package/public/oracle-splash/brand/aerodrome.webp +0 -0
  177. package/public/oracle-splash/brand/afi.webp +0 -0
  178. package/public/oracle-splash/brand/arcus.webp +0 -0
  179. package/public/oracle-splash/brand/aster.webp +0 -0
  180. package/public/oracle-splash/brand/avant.webp +0 -0
  181. package/public/oracle-splash/brand/balancer.webp +0 -0
  182. package/public/oracle-splash/brand/beefy.webp +0 -0
  183. package/public/oracle-splash/brand/benqi.webp +0 -0
  184. package/public/oracle-splash/brand/bestinslot.ico +0 -0
  185. package/public/oracle-splash/brand/bitfi.webp +0 -0
  186. package/public/oracle-splash/brand/bonkswap.webp +0 -0
  187. package/public/oracle-splash/brand/bouncebit.webp +0 -0
  188. package/public/oracle-splash/brand/camelot.webp +0 -0
  189. package/public/oracle-splash/brand/compound.webp +0 -0
  190. package/public/oracle-splash/brand/concrete.webp +0 -0
  191. package/public/oracle-splash/brand/cow.webp +0 -0
  192. package/public/oracle-splash/brand/curve.webp +0 -0
  193. package/public/oracle-splash/brand/derive.webp +0 -0
  194. package/public/oracle-splash/brand/dolomite.webp +0 -0
  195. package/public/oracle-splash/brand/eigenlayer.webp +0 -0
  196. package/public/oracle-splash/brand/ekubo.webp +0 -0
  197. package/public/oracle-splash/brand/ethena.webp +0 -0
  198. package/public/oracle-splash/brand/etherfi.webp +0 -0
  199. package/public/oracle-splash/brand/etherfiborrow.webp +0 -0
  200. package/public/oracle-splash/brand/felix.webp +0 -0
  201. package/public/oracle-splash/brand/fluid.webp +0 -0
  202. package/public/oracle-splash/brand/fluxbeam.webp +0 -0
  203. package/public/oracle-splash/brand/folks.webp +0 -0
  204. package/public/oracle-splash/brand/fortyacres.webp +0 -0
  205. package/public/oracle-splash/brand/gainsnetwork.webp +0 -0
  206. package/public/oracle-splash/brand/gassss.webp +0 -0
  207. package/public/oracle-splash/brand/gmx.webp +0 -0
  208. package/public/oracle-splash/brand/harmonix.webp +0 -0
  209. package/public/oracle-splash/brand/hlorderbook.webp +0 -0
  210. package/public/oracle-splash/brand/hlp.webp +0 -0
  211. package/public/oracle-splash/brand/hop.webp +0 -0
  212. package/public/oracle-splash/brand/hyperbeat.webp +0 -0
  213. package/public/oracle-splash/brand/hyperlend.webp +0 -0
  214. package/public/oracle-splash/brand/hyperliquid.webp +0 -0
  215. package/public/oracle-splash/brand/hyperliquidhpl.webp +0 -0
  216. package/public/oracle-splash/brand/hyperliquidspot.webp +0 -0
  217. package/public/oracle-splash/brand/hyperswap.webp +0 -0
  218. package/public/oracle-splash/brand/hypha.webp +0 -0
  219. package/public/oracle-splash/brand/joedex.webp +0 -0
  220. package/public/oracle-splash/brand/jupiter.webp +0 -0
  221. package/public/oracle-splash/brand/kelp.webp +0 -0
  222. package/public/oracle-splash/brand/kinetiq.webp +0 -0
  223. package/public/oracle-splash/brand/kmhype.webp +0 -0
  224. package/public/oracle-splash/brand/kona.webp +0 -0
  225. package/public/oracle-splash/brand/konalend.webp +0 -0
  226. package/public/oracle-splash/brand/lfj.webp +0 -0
  227. package/public/oracle-splash/brand/lido.webp +0 -0
  228. package/public/oracle-splash/brand/lifi.webp +0 -0
  229. package/public/oracle-splash/brand/lighter.webp +0 -0
  230. package/public/oracle-splash/brand/lista.webp +0 -0
  231. package/public/oracle-splash/brand/loopedhype.webp +0 -0
  232. package/public/oracle-splash/brand/lorenzo.webp +0 -0
  233. package/public/oracle-splash/brand/magic-eden.webp +0 -0
  234. package/public/oracle-splash/brand/magiceden.webp +0 -0
  235. package/public/oracle-splash/brand/mempool.png +0 -0
  236. package/public/oracle-splash/brand/meteora.webp +0 -0
  237. package/public/oracle-splash/brand/morpho.webp +0 -0
  238. package/public/oracle-splash/brand/myriad.webp +0 -0
  239. package/public/oracle-splash/brand/noxa.webp +0 -0
  240. package/public/oracle-splash/brand/odos.webp +0 -0
  241. package/public/oracle-splash/brand/oneinch.webp +0 -0
  242. package/public/oracle-splash/brand/openbook.webp +0 -0
  243. package/public/oracle-splash/brand/opensea.webp +0 -0
  244. package/public/oracle-splash/brand/orca.webp +0 -0
  245. package/public/oracle-splash/brand/ordinals.png +0 -0
  246. package/public/oracle-splash/brand/ostium.webp +0 -0
  247. package/public/oracle-splash/brand/pancakeswap.webp +0 -0
  248. package/public/oracle-splash/brand/pendle.webp +0 -0
  249. package/public/oracle-splash/brand/perena.webp +0 -0
  250. package/public/oracle-splash/brand/pharaoh.webp +0 -0
  251. package/public/oracle-splash/brand/phoenix.webp +0 -0
  252. package/public/oracle-splash/brand/polymarket.webp +0 -0
  253. package/public/oracle-splash/brand/polynomial.webp +0 -0
  254. package/public/oracle-splash/brand/projectx.webp +0 -0
  255. package/public/oracle-splash/brand/pumpfun.webp +0 -0
  256. package/public/oracle-splash/brand/quickswap.webp +0 -0
  257. package/public/oracle-splash/brand/rain.webp +0 -0
  258. package/public/oracle-splash/brand/raydium.webp +0 -0
  259. package/public/oracle-splash/brand/relay.webp +0 -0
  260. package/public/oracle-splash/brand/rocketpool.webp +0 -0
  261. package/public/oracle-splash/brand/saber.webp +0 -0
  262. package/public/oracle-splash/brand/sakuraswap.webp +0 -0
  263. package/public/oracle-splash/brand/sanctum.webp +0 -0
  264. package/public/oracle-splash/brand/satflow.png +0 -0
  265. package/public/oracle-splash/brand/sierra.webp +0 -0
  266. package/public/oracle-splash/brand/sky.webp +0 -0
  267. package/public/oracle-splash/brand/solv.webp +0 -0
  268. package/public/oracle-splash/brand/spark.webp +0 -0
  269. package/public/oracle-splash/brand/sparksavings.webp +0 -0
  270. package/public/oracle-splash/brand/sphere.webp +0 -0
  271. package/public/oracle-splash/brand/ssv.webp +0 -0
  272. package/public/oracle-splash/brand/stabble.webp +0 -0
  273. package/public/oracle-splash/brand/stableswap.webp +0 -0
  274. package/public/oracle-splash/brand/stakewise.webp +0 -0
  275. package/public/oracle-splash/brand/stargate.webp +0 -0
  276. package/public/oracle-splash/brand/sthype.webp +0 -0
  277. package/public/oracle-splash/brand/sushiswap.webp +0 -0
  278. package/public/oracle-splash/brand/unisat.png +0 -0
  279. package/public/oracle-splash/brand/uniswap.webp +0 -0
  280. package/public/oracle-splash/brand/uniswapv2.webp +0 -0
  281. package/public/oracle-splash/brand/uniswapv4.webp +0 -0
  282. package/public/oracle-splash/brand/unit.webp +0 -0
  283. package/public/oracle-splash/brand/velodrome.webp +0 -0
  284. package/public/oracle-splash/brand/velora.webp +0 -0
  285. package/public/oracle-splash/brand/venus.webp +0 -0
  286. package/public/oracle-splash/brand/wbeth.webp +0 -0
  287. package/public/oracle-splash/brand/xsy.webp +0 -0
  288. package/public/oracle-splash/brand/yieldyak.webp +0 -0
  289. package/public/oracle-splash/brand/zerobase.webp +0 -0
  290. package/public/oracle-splash/brand/zerox.webp +0 -0
  291. package/public/oracle-splash/downloads/index.html +52 -0
  292. package/public/oracle-splash/favicon.ico +0 -0
  293. package/public/oracle-splash/favicon.svg +6 -0
  294. package/public/oracle-splash/index.html +2537 -0
  295. package/public/oracle-splash/mesh-graph.png +0 -0
  296. package/public/oracle-splash/mesh-graph.svg +216 -0
  297. package/scripts/adversarial-bench.mjs +114 -0
  298. package/scripts/build-dist.mjs +119 -0
  299. package/scripts/build-inscription.py +230 -0
  300. package/scripts/check-doc-drift.mjs +123 -0
  301. package/scripts/check-test-count.mjs +105 -0
  302. package/scripts/e2e-hl-markets.mjs +21 -0
  303. package/scripts/e2e-hl-perps.mjs +48 -0
  304. package/scripts/e2e-hypercore-staking.mjs +128 -0
  305. package/scripts/e2e-solana-bitcoin.mjs +183 -0
  306. package/scripts/guard-publish.mjs +22 -0
  307. package/scripts/protocol-template-gate.mjs +15 -0
  308. package/scripts/public-api-scan.mjs +23 -0
  309. package/scripts/publish-dist.mjs +67 -0
  310. package/scripts/record-hero-cli.sh +80 -0
  311. package/scripts/secret-scan.mjs +168 -0
  312. package/scripts/smoke-dist-bins.mjs +89 -0
  313. package/scripts/verify-dist.mjs +29 -0
  314. package/scripts/verify-v3-venues.mjs +233 -0
  315. package/skills/balance/SKILL.md +176 -0
  316. package/skills/bitcoin-l1.md +33 -0
  317. package/skills/chain-defi-ecosystem-profiling.md +27 -0
  318. package/skills/evm-contract-research.md +27 -0
  319. package/skills/hyperliquid.md +26 -0
  320. package/skills/multichain-exec-desk.md +33 -0
  321. package/skills/oracle-action-semantics/SKILL.md +40 -0
  322. package/skills/oracle-best-execution/SKILL.md +127 -0
  323. package/skills/oracle-best-execution.md +27 -0
  324. package/skills/oracle-bitcoin/SKILL.md +53 -0
  325. package/skills/oracle-chain-graphs-telegram-cards/SKILL.md +59 -0
  326. package/skills/oracle-chat/SKILL.md +61 -0
  327. package/skills/oracle-chat/chain.SKILL.md +31 -0
  328. package/skills/oracle-chat/setup.SKILL.md +37 -0
  329. package/skills/oracle-circuit-breaker/SKILL.md +51 -0
  330. package/skills/oracle-contract-research/SKILL.md +55 -0
  331. package/skills/oracle-desk/SKILL.md +58 -0
  332. package/skills/oracle-desk.md +27 -0
  333. package/skills/oracle-dex-launch/SKILL.md +38 -0
  334. package/skills/oracle-equities/SKILL.md +62 -0
  335. package/skills/oracle-grants/SKILL.md +69 -0
  336. package/skills/oracle-hypercore-staking/SKILL.md +57 -0
  337. package/skills/oracle-hyperliquid/SKILL.md +56 -0
  338. package/skills/oracle-meme-token-sniper/SKILL.md +73 -0
  339. package/skills/oracle-multichain-nft-launch/SKILL.md +338 -0
  340. package/skills/oracle-multichain-token-launch/SKILL.md +300 -0
  341. package/skills/oracle-nft-gacha-launch/SKILL.md +48 -0
  342. package/skills/oracle-nft-mint-gas-war/SKILL.md +63 -0
  343. package/skills/oracle-polymarket/SKILL.md +60 -0
  344. package/skills/oracle-protocol-builder/SKILL.md +59 -0
  345. package/skills/oracle-protocol-security/SKILL.md +60 -0
  346. package/skills/oracle-public-product/SKILL.md +44 -0
  347. package/skills/oracle-receipts/SKILL.md +52 -0
  348. package/skills/oracle-receipts.md +29 -0
  349. package/skills/oracle-rfq-tokenized-assets/SKILL.md +69 -0
  350. package/skills/oracle-smart-wallet-scanner/SKILL.md +49 -0
  351. package/skills/oracle-solana/SKILL.md +65 -0
  352. package/skills/oracle-solana-nft/SKILL.md +54 -0
  353. package/skills/oracle-token-research/SKILL.md +67 -0
  354. package/skills/solana.md +22 -0
  355. package/skins/oracle.yaml +56 -0
  356. package/src/action-receipts.mjs +265 -0
  357. package/src/action-semantics.mjs +62 -0
  358. package/src/address-book.mjs +208 -0
  359. package/src/agent-auth.mjs +206 -0
  360. package/src/approval-guard.mjs +282 -0
  361. package/src/attestation-secret.mjs +94 -0
  362. package/src/audit-log.mjs +196 -0
  363. package/src/auth/oauth.mjs +672 -0
  364. package/src/auto-slippage.mjs +378 -0
  365. package/src/capability-posture.mjs +125 -0
  366. package/src/cards.mjs +422 -0
  367. package/src/chains.mjs +62 -0
  368. package/src/cli/chain-catalog.mjs +215 -0
  369. package/src/cli/chain-state.mjs +74 -0
  370. package/src/cli/commands/auth.mjs +193 -0
  371. package/src/cli/commands/bootstrap.mjs +87 -0
  372. package/src/cli/commands/chain.mjs +143 -0
  373. package/src/cli/commands/chat.mjs +465 -0
  374. package/src/cli/commands/credential.mjs +9 -0
  375. package/src/cli/commands/data-mcp.mjs +18 -0
  376. package/src/cli/commands/data.mjs +75 -0
  377. package/src/cli/commands/doctor.mjs +136 -0
  378. package/src/cli/commands/equities.mjs +41 -0
  379. package/src/cli/commands/farm.mjs +129 -0
  380. package/src/cli/commands/fees.mjs +109 -0
  381. package/src/cli/commands/follow.mjs +130 -0
  382. package/src/cli/commands/harness.mjs +63 -0
  383. package/src/cli/commands/help.mjs +7 -0
  384. package/src/cli/commands/init.mjs +27 -0
  385. package/src/cli/commands/mcp.mjs +154 -0
  386. package/src/cli/commands/model.mjs +106 -0
  387. package/src/cli/commands/plugins.mjs +241 -0
  388. package/src/cli/commands/prepare.mjs +12 -0
  389. package/src/cli/commands/public.mjs +20 -0
  390. package/src/cli/commands/resolve.mjs +64 -0
  391. package/src/cli/commands/route.mjs +12 -0
  392. package/src/cli/commands/runner.mjs +9 -0
  393. package/src/cli/commands/scan.mjs +12 -0
  394. package/src/cli/commands/setup.mjs +294 -0
  395. package/src/cli/commands/sign.mjs +21 -0
  396. package/src/cli/commands/signer.mjs +9 -0
  397. package/src/cli/commands/swap.mjs +102 -0
  398. package/src/cli/commands/upgrade.mjs +12 -0
  399. package/src/cli/commands/vault.mjs +9 -0
  400. package/src/cli/commands/version.mjs +22 -0
  401. package/src/cli/first-run.mjs +23 -0
  402. package/src/cli/kernel.mjs +262 -0
  403. package/src/cli/mcp-targets/chatgpt.mjs +51 -0
  404. package/src/cli/mcp-targets/claude-code.mjs +39 -0
  405. package/src/cli/mcp-targets/claude-desktop.mjs +24 -0
  406. package/src/cli/mcp-targets/codex.mjs +41 -0
  407. package/src/cli/mcp-targets/cursor.mjs +32 -0
  408. package/src/cli/mcp-targets/shared.mjs +71 -0
  409. package/src/cli/mcp-targets/vscode.mjs +39 -0
  410. package/src/cli/messaging-platforms.mjs +217 -0
  411. package/src/cli/model-config.mjs +78 -0
  412. package/src/cli/operator-dispatch.mjs +257 -0
  413. package/src/cli/oracle-harness.py +415 -0
  414. package/src/cli/paths.mjs +107 -0
  415. package/src/cli/runtime.mjs +351 -0
  416. package/src/cli/setup-state.mjs +168 -0
  417. package/src/cli/spawn-child.mjs +43 -0
  418. package/src/data/catalog.mjs +858 -0
  419. package/src/data/desk-data.mjs +877 -0
  420. package/src/data/http.mjs +253 -0
  421. package/src/data/names.mjs +188 -0
  422. package/src/data/provider-endpoint.mjs +94 -0
  423. package/src/data/providers/aave-v3.mjs +139 -0
  424. package/src/data/providers/across-bridge.mjs +41 -0
  425. package/src/data/providers/aerodrome.mjs +245 -0
  426. package/src/data/providers/aevo.mjs +33 -0
  427. package/src/data/providers/approval-indexer.mjs +133 -0
  428. package/src/data/providers/approvals.mjs +594 -0
  429. package/src/data/providers/babylon-staking.mjs +149 -0
  430. package/src/data/providers/balancer.mjs +209 -0
  431. package/src/data/providers/beefy-yields.mjs +45 -0
  432. package/src/data/providers/birdeye-tokens.mjs +33 -0
  433. package/src/data/providers/bisq-markets.mjs +145 -0
  434. package/src/data/providers/bitcoin-esplora.mjs +216 -0
  435. package/src/data/providers/bitcoin-meta.mjs +378 -0
  436. package/src/data/providers/blockscout.mjs +14 -0
  437. package/src/data/providers/bob-rootstock.mjs +198 -0
  438. package/src/data/providers/braiins-insights.mjs +103 -0
  439. package/src/data/providers/bridge-aggregator.mjs +259 -0
  440. package/src/data/providers/bridges.mjs +242 -0
  441. package/src/data/providers/bungee.mjs +29 -0
  442. package/src/data/providers/celestia-da.mjs +38 -0
  443. package/src/data/providers/changenow.mjs +135 -0
  444. package/src/data/providers/compound.mjs +32 -0
  445. package/src/data/providers/connext.mjs +28 -0
  446. package/src/data/providers/convex.mjs +30 -0
  447. package/src/data/providers/cow-protocol.mjs +110 -0
  448. package/src/data/providers/cowswap.mjs +415 -0
  449. package/src/data/providers/curve.mjs +201 -0
  450. package/src/data/providers/das-assets.mjs +59 -0
  451. package/src/data/providers/debridge.mjs +109 -0
  452. package/src/data/providers/defillama.mjs +88 -0
  453. package/src/data/providers/dexscreener.mjs +43 -0
  454. package/src/data/providers/drift.mjs +32 -0
  455. package/src/data/providers/dydx.mjs +41 -0
  456. package/src/data/providers/evm-rpc.mjs +225 -0
  457. package/src/data/providers/farming.mjs +291 -0
  458. package/src/data/providers/geckoterminal.mjs +34 -0
  459. package/src/data/providers/gmx.mjs +496 -0
  460. package/src/data/providers/hiro-stacks.mjs +150 -0
  461. package/src/data/providers/hl-assets.mjs +165 -0
  462. package/src/data/providers/hl-info.mjs +108 -0
  463. package/src/data/providers/hl-markets.mjs +210 -0
  464. package/src/data/providers/hl-outcome.mjs +61 -0
  465. package/src/data/providers/hl-perps.mjs +419 -0
  466. package/src/data/providers/hl-staking.mjs +353 -0
  467. package/src/data/providers/hl-ws.mjs +119 -0
  468. package/src/data/providers/hyperevm-dex.mjs +49 -0
  469. package/src/data/providers/jito-mev.mjs +117 -0
  470. package/src/data/providers/jupiter-venues.mjs +119 -0
  471. package/src/data/providers/jupiter.mjs +315 -0
  472. package/src/data/providers/kamino-strategies.mjs +143 -0
  473. package/src/data/providers/l2beat-tvl.mjs +42 -0
  474. package/src/data/providers/lifi.mjs +166 -0
  475. package/src/data/providers/liquid-esplora.mjs +152 -0
  476. package/src/data/providers/magiceden-ordinals.mjs +141 -0
  477. package/src/data/providers/magiceden-sol.mjs +406 -0
  478. package/src/data/providers/mempool-lightning.mjs +144 -0
  479. package/src/data/providers/mempool-mining.mjs +142 -0
  480. package/src/data/providers/meteora-dlmm.mjs +168 -0
  481. package/src/data/providers/morpho.mjs +177 -0
  482. package/src/data/providers/nft-gallery.mjs +163 -0
  483. package/src/data/providers/nft-portfolio.mjs +494 -0
  484. package/src/data/providers/odos.mjs +156 -0
  485. package/src/data/providers/ondo.mjs +31 -0
  486. package/src/data/providers/oneinch.mjs +174 -0
  487. package/src/data/providers/opensea-multichain.mjs +136 -0
  488. package/src/data/providers/opensea-nft.mjs +371 -0
  489. package/src/data/providers/orca.mjs +29 -0
  490. package/src/data/providers/ordinals-runes.mjs +180 -0
  491. package/src/data/providers/pancakeswap.mjs +28 -0
  492. package/src/data/providers/paraswap.mjs +125 -0
  493. package/src/data/providers/pendle.mjs +188 -0
  494. package/src/data/providers/poly-clob.mjs +283 -0
  495. package/src/data/providers/poly-public.mjs +96 -0
  496. package/src/data/providers/poly-ws.mjs +103 -0
  497. package/src/data/providers/polygon-staking.mjs +227 -0
  498. package/src/data/providers/portfolio-history.mjs +394 -0
  499. package/src/data/providers/portfolio.mjs +600 -0
  500. package/src/data/providers/pyth-price-feeds.mjs +172 -0
  501. package/src/data/providers/raydium.mjs +35 -0
  502. package/src/data/providers/relayscan-mev.mjs +72 -0
  503. package/src/data/providers/rfq.mjs +15 -0
  504. package/src/data/providers/rh-agent.mjs +59 -0
  505. package/src/data/providers/sanctum-lst.mjs +180 -0
  506. package/src/data/providers/satflow.mjs +341 -0
  507. package/src/data/providers/signed-material-guard.mjs +108 -0
  508. package/src/data/providers/solana-rpc.mjs +197 -0
  509. package/src/data/providers/solend-lending.mjs +166 -0
  510. package/src/data/providers/spark-lend.mjs +42 -0
  511. package/src/data/providers/squid-router.mjs +29 -0
  512. package/src/data/providers/stargate.mjs +29 -0
  513. package/src/data/providers/sushiswap.mjs +30 -0
  514. package/src/data/providers/symbiotic-restaking.mjs +41 -0
  515. package/src/data/providers/thorchain.mjs +36 -0
  516. package/src/data/providers/traderjoe.mjs +28 -0
  517. package/src/data/providers/twap.mjs +152 -0
  518. package/src/data/providers/uniswap-v3.mjs +457 -0
  519. package/src/data/providers/uniswap-v4.mjs +414 -0
  520. package/src/data/providers/vertex.mjs +41 -0
  521. package/src/data/providers/wallet-watch.mjs +264 -0
  522. package/src/data/providers/wormhole.mjs +28 -0
  523. package/src/data/providers/yearn.mjs +31 -0
  524. package/src/data/providers/zerox.mjs +167 -0
  525. package/src/data/public-api-scan.mjs +61 -0
  526. package/src/data/quote-placeholder.mjs +31 -0
  527. package/src/desk/swap-prepare.mjs +194 -0
  528. package/src/equities/bridge.mjs +388 -0
  529. package/src/equities/fixtures/bridge_routes.json +159 -0
  530. package/src/equities/fixtures/dst_transitions.json +29 -0
  531. package/src/equities/fixtures/equity_dex_pools.json +154 -0
  532. package/src/equities/fixtures/hip3_l2books.json +2711 -0
  533. package/src/equities/fixtures/nyse_holidays.json +1 -0
  534. package/src/equities/fixtures/oracles.json +100 -0
  535. package/src/equities/fixtures/rh_pool_state.json +244 -0
  536. package/src/equities/fixtures/solana_xstocks.json +704 -0
  537. package/src/equities/fixtures/ton_xstocks.json +35 -0
  538. package/src/equities/fixtures/universe.json +411 -0
  539. package/src/equities/fixtures/venues.json +3542 -0
  540. package/src/equities/fixtures.mjs +405 -0
  541. package/src/equities/funding.mjs +142 -0
  542. package/src/equities/index.mjs +166 -0
  543. package/src/equities/liveness.mjs +148 -0
  544. package/src/equities/marketHours.mjs +249 -0
  545. package/src/equities/normalize.mjs +295 -0
  546. package/src/equities/num.mjs +146 -0
  547. package/src/equities/prepare.mjs +95 -0
  548. package/src/equities/rank.mjs +260 -0
  549. package/src/equities/sourceNum.mjs +69 -0
  550. package/src/equities/types.mjs +220 -0
  551. package/src/equities/venues/arcus-perp.mjs +84 -0
  552. package/src/equities/venues/arcus-spot.mjs +105 -0
  553. package/src/equities/venues/hyperliquid-hip3.mjs +224 -0
  554. package/src/equities/venues/rh-uniswap.mjs +216 -0
  555. package/src/equities/venues/solana-xstocks.mjs +139 -0
  556. package/src/equities/venues/ton-stonfi.mjs +139 -0
  557. package/src/exact-integer.mjs +72 -0
  558. package/src/exec-policy.mjs +419 -0
  559. package/src/flags.mjs +15 -0
  560. package/src/fresh-window.mjs +76 -0
  561. package/src/gmx-attestation.mjs +176 -0
  562. package/src/index.mjs +107 -0
  563. package/src/licensing/locals-only.mjs +25 -0
  564. package/src/nft-gas-war-guard.mjs +139 -0
  565. package/src/onboarding/agent-keys.mjs +161 -0
  566. package/src/onboarding/harness-configs.mjs +102 -0
  567. package/src/onboarding/index.mjs +18 -0
  568. package/src/onboarding/tiers.mjs +139 -0
  569. package/src/oracle-env.mjs +55 -0
  570. package/src/package-manifest.mjs +42 -0
  571. package/src/plugins/agent-plugin-loader.mjs +225 -0
  572. package/src/portfolio-risk.mjs +170 -0
  573. package/src/prepare-envelope.mjs +204 -0
  574. package/src/profile-upgrade.mjs +277 -0
  575. package/src/protocol-execution.mjs +84 -0
  576. package/src/protocol-templates/gate.mjs +179 -0
  577. package/src/protocol-templates/prepare-deploy.mjs +81 -0
  578. package/src/public-api/agent-grants.mjs +57 -0
  579. package/src/public-api/buzz-integration.mjs +267 -0
  580. package/src/public-api/connect-agent.mjs +424 -0
  581. package/src/public-api/grants.mjs +142 -0
  582. package/src/public-api/http.mjs +707 -0
  583. package/src/public-api/metering.mjs +111 -0
  584. package/src/public-control/aa-adapter.mjs +402 -0
  585. package/src/public-control/build-registry.mjs +227 -0
  586. package/src/public-control/bundler-client.mjs +357 -0
  587. package/src/public-control/grant-indexer.mjs +296 -0
  588. package/src/public-control/policy-render.mjs +69 -0
  589. package/src/public-control/policy-schema.mjs +322 -0
  590. package/src/public-control/runtime-config.mjs +275 -0
  591. package/src/public-control/session-key-model.mjs +379 -0
  592. package/src/public-control/session-orchestrator.mjs +418 -0
  593. package/src/rfq/intent.mjs +180 -0
  594. package/src/rfq/sources.mjs +181 -0
  595. package/src/route-attestation.mjs +132 -0
  596. package/src/router/best-execution.mjs +326 -0
  597. package/src/router/index.mjs +250 -0
  598. package/src/router/integrator-fee.mjs +135 -0
  599. package/src/router/prepare-bridge.mjs +293 -0
  600. package/src/router/prepare-route.mjs +398 -0
  601. package/src/router/proposal.mjs +311 -0
  602. package/src/router/risk-classifier.mjs +119 -0
  603. package/src/router/route-sources.mjs +364 -0
  604. package/src/scanner/chains.config.mjs +543 -0
  605. package/src/scanner/contract.mjs +270 -0
  606. package/src/scanner/evm-scanner.mjs +394 -0
  607. package/src/scanner/index.mjs +9 -0
  608. package/src/scanner/v2-venue.mjs +351 -0
  609. package/src/scanner/v3-venue.mjs +308 -0
  610. package/src/scopes.mjs +44 -0
  611. package/src/sell-simulation.mjs +167 -0
  612. package/src/signals/engine.mjs +146 -0
  613. package/src/signals/index.mjs +1 -0
  614. package/src/token-transfer-guard.mjs +188 -0
  615. package/src/tui/app.mjs +438 -0
  616. package/src/tui/backend.mjs +215 -0
  617. package/src/tui/format.mjs +272 -0
  618. package/src/tui/gateway-client.mjs +177 -0
  619. package/src/tui/input.mjs +501 -0
  620. package/src/tui/memory.mjs +105 -0
  621. package/src/tui/meta-learn.mjs +85 -0
  622. package/src/tui/renderer.mjs +443 -0
  623. package/src/tui/scheduler.mjs +205 -0
  624. package/src/tui/skills-loader.mjs +140 -0
  625. package/src/tui/standalone-client.mjs +752 -0
  626. package/src/tui/theme.mjs +81 -0
  627. package/src/vault-attestation.mjs +146 -0
  628. package/src/venues.mjs +206 -0
  629. package/src/watch-preferences.mjs +85 -0
@@ -0,0 +1,62 @@
1
+ ---
2
+ name: oracle-equities
3
+ description: Use when comparing on-chain equity venues (HIP-3, Arcus, RH Uniswap, Solana xStocks, TON). Cross-chain best execution for tokenized equities, prepare-only.
4
+ ---
5
+
6
+ # Crossbook (on-chain equities best execution)
7
+
8
+ On-chain equities are not one venue. HIP-3 builder DEXes discover price, Arcus/RH list spot and perps on Robinhood Chain 4663, Solana xStocks and TON ston.fi list tokenized spots. Rank **net of known costs**, never the loudest mid.
9
+
10
+ ## Get the comparison
11
+
12
+ MCP (data plane, in-process, no desk required):
13
+
14
+ ```
15
+ equity_venues
16
+ equity_quote { ticker, sizeUsd?, horizonHours? }
17
+ equity_prepare { ticker, recipient, sizeUsd? }
18
+ ```
19
+
20
+ CLI:
21
+
22
+ ```bash
23
+ oracle equities venues
24
+ oracle equities quote NVDA --size 1000
25
+ oracle equities quote SPY --size 500 --json
26
+ oracle equities prepare NVDA --recipient 0xYourWallet
27
+ ```
28
+
29
+ Library:
30
+
31
+ ```js
32
+ import { bestEquityRoute, equityVenues, prepareEquityRoute } from "@oracle-agent/oracle/equities";
33
+ ```
34
+
35
+ ## Read the result properly
36
+
37
+ - **`rankedOn`** — `net-of-cost` only when fees/gas/impact are known. Usually `gross` today because HIP-3 fees/gas and DexScreener floats are unmeasured. Say so.
38
+ - **`costAccounted`** per route — `false` means that route is flattered by missing costs.
39
+ - **`improvementBps`** — `null` when no honest same-class costed pair exists. Do not invent one.
40
+ - **`bestPreparable`** is independent of `winner`. A quote-only HIP-3 or Solana mid can win discovery without being actionable here.
41
+ - **`excluded[]`** is not `failed[]`. Dormant HIP-3 dexs and crossed Arcus books land in excluded with reasons.
42
+ - **`darkWindow`** — outside NYSE core hours, marks are not real price discovery. Surface it.
43
+
44
+ ## Tiers
45
+
46
+ | Venue | Tier | Can prepare? |
47
+ | --- | --- | --- |
48
+ | hyperliquid_hip3 | quote-only | no |
49
+ | arcus_perp / arcus_spot | quote-only | no |
50
+ | solana_xstocks | quote-only | no |
51
+ | ton_stonfi | quote-only | no |
52
+ | rh_uniswap | prepare | yes, unsigned only |
53
+
54
+ v1 only prepares RH Uniswap on chain 4663. Everything else is discovery and carry comparison.
55
+
56
+ ## Rules
57
+
58
+ - Never present a quote-only winner as something the user can sign here.
59
+ - Never treat unknown gas/fees as zero.
60
+ - Horizon mode compares spot vs perp with funding carry held constant and labeled as an estimate.
61
+ - Prepare requires the real wallet as `recipient`. Placeholders are rejected by the RH prepare path when applicable.
62
+ - A comparison is not an execution. Preparing is separate. Signing is the user's wallet.
@@ -0,0 +1,69 @@
1
+ ---
2
+ name: oracle-grants
3
+ description: Use when arming, widening, or refusing an agent action against a bound grant. Defines what authorization means on this desk.
4
+ ---
5
+
6
+ # Bound grants
7
+
8
+ The model proposes. The owner authorizes. A grant is the authorization.
9
+
10
+ ## What a grant is
11
+
12
+ An owner-signed permission with hard bounds:
13
+
14
+ ```
15
+ chain which chain id, exactly one
16
+ actions read:chain | simulate:tx | prepare:* — never "broadcast:*"
17
+ targets destination allowlist: the addresses value may reach
18
+ maxValueWei spend cap
19
+ maxGasWei gas cap — gas is separate money
20
+ expiresAt unix timestamp; after this the grant is dead
21
+ ```
22
+
23
+ Your reasoning is not authorization. A convincing argument that an action is safe
24
+ does not widen a grant.
25
+
26
+ ## Refusing correctly
27
+
28
+ When an action falls outside the grant, refuse and **name the bound that broke**:
29
+
30
+ > Refused. Grant covers chain 8453; this route settles on 42161.
31
+
32
+ > Refused. Destination 0xabc… is not in the allowlist for chain 8453.
33
+
34
+ > Refused. Grant expired 14 minutes ago.
35
+
36
+ A vague "I can't do that" teaches the user nothing. A specific refusal tells them
37
+ exactly what to change if they still want it.
38
+
39
+ ## Fail closed, always
40
+
41
+ An **empty** destination allowlist means *refuse everything*. It never means
42
+ "nothing specified, so allow anything." This inverts under pressure — a partially
43
+ configured chain looks like an unconfigured one. Fail closed.
44
+
45
+ ## Gas is separate money
46
+
47
+ A grant that caps `value` but not gas is not capped. Unbounded gas limit or fee
48
+ drains the wallet outside the value ceiling. Both caps or neither is meaningful.
49
+
50
+ ## The caps are not negotiable mid-task
51
+
52
+ If a route needs more slippage than the cap allows, the answer is block, requote,
53
+ or split — **not** widen. A cap that yields under pressure is decoration.
54
+
55
+ Likewise a hard ceiling stays hard: a caller-supplied tolerance is a *maximum*, not
56
+ the selected value.
57
+
58
+ ## Authorization expires
59
+
60
+ Prefer short TTLs. A permanent broad grant is a hot wallet with extra steps. When a
61
+ grant lapses, the lane returns to reading — that is the system working, not a
62
+ regression to route around.
63
+
64
+ ## Re-check at the boundary
65
+
66
+ Validate the grant at **sign time and broadcast time**, not only when the plan was
67
+ made. State can change between planning and execution: a stale check is not a
68
+ check. Reject a guard that is missing, stale, wrong-chain, wrong-venue, or
69
+ over-cap.
@@ -0,0 +1,57 @@
1
+ ---
2
+ name: oracle-hypercore-staking
3
+ description: Stake, delegate, undelegate, and unstake HYPE on Hyperliquid HyperCore. Prepare-only, user wallet signs.
4
+ ---
5
+
6
+ # HyperCore HYPE staking
7
+
8
+ Use when someone asks Oracle to stake HYPE, delegate to a validator, undelegate,
9
+ or unstake back to spot on Hyperliquid.
10
+
11
+ ## The four moves, in order
12
+
13
+ HyperCore keeps staking in two buckets. Know which one holds the HYPE before
14
+ preparing anything.
15
+
16
+ | Move | Action | From -> To | Timing |
17
+ |---|---|---|---|
18
+ | Stake | `cDeposit` | spot -> staking balance | instant |
19
+ | Delegate | `tokenDelegate` isUndelegate=false | staking balance -> validator | 1 day validator lockup |
20
+ | Undelegate | `tokenDelegate` isUndelegate=true | validator -> staking balance | instant after lockup |
21
+ | Unstake | `cWithdraw` | staking balance -> spot | 7 day queue |
22
+
23
+ Staking balance earns nothing until it is delegated. "Unstake" almost always
24
+ means two steps: undelegate first, then withdraw.
25
+
26
+ ## Flow
27
+
28
+ 1. `desk.hl.staking.preflight(user)` - read delegated, undelegated, and pending
29
+ withdrawal balances plus the queue and lockup constants.
30
+ 2. `desk.hl.staking.validators()` - pick a validator. Reject jailed ones and
31
+ surface commission before recommending.
32
+ 3. Prepare exactly one move:
33
+ - `desk.hl.staking.prepareStake({ amountHype, maxHype })`
34
+ - `desk.hl.staking.prepareDelegate({ validator, amountHype, isUndelegate })`
35
+ - `desk.hl.staking.prepareUnstake({ amountHype })`
36
+ 4. Hand back the EIP-712 typed data. The user's wallet signs and submits.
37
+
38
+ ## Rules
39
+
40
+ - Amounts are decimal HYPE strings at 8 decimals. `hypeToWei("1.5")` is
41
+ `150000000`. More than 8 decimals is rejected, not rounded.
42
+ - `maxHype` is a hard cap checked before anything is built. No cap, no size
43
+ discipline on an agent path.
44
+ - Never claim a stake happened. These functions return `broadcastReady: false`
45
+ and `requiresUserSignature: true`. There is no submit function in the module
46
+ on purpose.
47
+ - Warn about the 7 day unstaking queue every time you prepare a `cWithdraw`.
48
+ The HYPE is illiquid for the whole queue.
49
+ - Warn about the 1 day validator lockup before a delegate.
50
+ - Check `undelegated` balance before preparing a withdraw. Withdrawing more than
51
+ the undelegated bucket fails on chain, and the failure costs the user a round
52
+ trip.
53
+
54
+ ## Verification
55
+
56
+ `npm run e2e:hypercore-staking` hits live validator/delegator reads and asserts
57
+ every prepare path stays unsigned with caps enforced.
@@ -0,0 +1,56 @@
1
+ ---
2
+ name: oracle-hyperliquid
3
+ description: Use for Hyperliquid perps and spot — funding, books, positions, liquidation distance via the public info API.
4
+ ---
5
+
6
+ # Hyperliquid
7
+
8
+ Read through Oracle's data plane (`hl-info` provider, public `/info` endpoint). No
9
+ key required for reads.
10
+
11
+ ## Ops worth knowing
12
+
13
+ | Need | Op |
14
+ |---|---|
15
+ | all mids | `allMids` |
16
+ | order book | `l2Book` |
17
+ | perp metadata + live ctx | `metaAndAssetCtxs` |
18
+ | spot metadata | `spotMeta` |
19
+ | account state | `clearinghouse` / `userState` |
20
+ | fills | `userFills` |
21
+ | open orders | `openOrders` / `frontendOpenOrders` |
22
+ | candles | `candleSnapshot` |
23
+
24
+ `metaAndAssetCtxs` is the efficient one: it returns funding, open interest, mark and
25
+ oracle price for every asset in a single call. Prefer it over per-asset loops.
26
+
27
+ ## The three numbers that matter
28
+
29
+ **Liquidation distance.** In percent. Always state it for a leveraged position. A
30
+ "20x position" is really "a 5% adverse move ends this."
31
+
32
+ **Funding.** Annualize it. A position paying 40% annualized is losing steadily even
33
+ when directionally right. Funding flips sign — check the current rate, not the
34
+ average.
35
+
36
+ **Depth at your size.** The mid is a fiction for anything but the smallest clip.
37
+ Walk the `l2Book` to your notional and quote the real average fill.
38
+
39
+ ## Mark vs oracle price
40
+
41
+ Liquidations reference the **oracle** price; PnL references the **mark**. They
42
+ diverge during volatility, which is exactly when it matters. Say which one you used.
43
+
44
+ ## Spot and perps are different assets
45
+
46
+ The same ticker exists in both with different liquidity and no automatic
47
+ relationship. Never quote a perp book for a spot question.
48
+
49
+ ## Hard rules
50
+
51
+ 1. State liquidation distance for every leveraged position — not optional.
52
+ 2. Annualize funding, always.
53
+ 3. Quote fills from book depth, not the mid.
54
+ 4. Never size to "max leverage" without naming the wipeout move.
55
+ 5. You prepare; the user's wallet signs.
56
+ 6. Receipts or it didn't happen.
@@ -0,0 +1,73 @@
1
+ ---
2
+ name: oracle-meme-token-sniper
3
+ description: Scan and prepare guarded meme-token launch/sniping trades across configured chains; fail-closed, user-signed, sell-sim first.
4
+ ---
5
+
6
+ # Oracle meme-token sniper
7
+
8
+ Use when a user asks Oracle to find, monitor, or prepare buys for meme tokens,
9
+ new launches, liquidity adds, bonding curves, or "snipe" opportunities on any
10
+ supported chain.
11
+
12
+ ## Scope
13
+
14
+ Oracle may scan every configured venue/chain for meme-token launch signals:
15
+
16
+ - EVM factory/pair/pool creation logs across configured chains.
17
+ - Liquidity additions, first swaps, tax/owner-risk changes, holder distribution.
18
+ - Solana SPL/token-launch feeds and Jupiter-route availability when configured.
19
+ - Chain-specific launchpads/bonding curves only after the venue is verified.
20
+ - Smart-wallet early-entry overlap and repeat deployer history.
21
+
22
+ Unsupported chain/venue means `UNAVAILABLE`, not fake coverage. A chain with no
23
+ verified executable route can still be analyzed, but cannot be prepared for buy.
24
+
25
+ ## Required gate before any prepared buy
26
+
27
+ 1. Resolve exact chain, token mint/contract, pool, quote asset, router/venue.
28
+ 2. Verify token identity from live chain data, not only a ticker/social link.
29
+ 3. Check deployer/owner controls, mint/freeze/blacklist/tax/proxy risks where
30
+ the chain exposes them.
31
+ 4. Confirm liquidity exists and is not only a fake/self pool.
32
+ 5. Run sellability / reverse-route simulation when the chain/venue supports it.
33
+ 6. Quote fresh, net of gas, and bind slippage/deadline to the prepared artifact.
34
+ 7. Enforce user caps: per-trade spend, chain, venue, token, max fee, and TTL.
35
+ 8. Return unsigned/user-signable transaction only. No model-authored calldata
36
+ bypass, no raw user calldata, no backend custody by default.
37
+
38
+ ## Autonomous mode
39
+
40
+ Autonomous meme sniping is allowed only as a capped local-user signer loop:
41
+
42
+ - separate burner/session key, never main wallet
43
+ - explicit user opt-in and scope
44
+ - max spend per token and per day
45
+ - denylist/allowlist support
46
+ - retry ceiling and kill switch
47
+ - first-run paper/shadow mode
48
+ - receipt/balance reconciliation after every fill
49
+
50
+ Default public posture is advisory/prepare-only. "Snipe" in UI copy means fast
51
+ scan + prepared ticket; it does not mean blind broadcast.
52
+
53
+ ## Output contract
54
+
55
+ For every candidate, return:
56
+
57
+ - `chain`, `token`, `pool`, `venue`
58
+ - `signal`: launch/liquidity/smart-wallet/social/etc.
59
+ - `risk`: PASS/WARN/BLOCK/UNKNOWN with evidence
60
+ - `sellability`: PASS/FAIL/UNKNOWN/UNAVAILABLE
61
+ - `route`: quote source and freshness
62
+ - `prepared`: true only if a guarded unsigned artifact exists
63
+ - `whyBlocked` when not prepared
64
+
65
+ ## Pitfalls
66
+
67
+ - Treating ticker match as identity.
68
+ - Buying before sell-sim/reverse-route proof.
69
+ - Using scanner membership as an execution allowlist.
70
+ - Calling a launchpool real when reserves are virtual/stale.
71
+ - Ignoring gas: on small meme trades, gas can dominate edge.
72
+ - Letting "every chain" become "every venue is executable". Coverage must be
73
+ capability-labeled per chain.
@@ -0,0 +1,338 @@
1
+ ---
2
+ name: oracle-multichain-nft-launch
3
+ description: Use when planning, building, reviewing, or preparing an NFT collection launch across EVM, Solana, Bitcoin Ordinals, Cosmos, Move, HyperEVM, or another chain family. Fail closed on unsupported adapters; preserve metadata provenance; prepare only; the user signs every side effect.
4
+ ---
5
+
6
+ # Multichain NFT collection launch
7
+
8
+ ## Contract
9
+
10
+ Use this skill for collection contracts or programs, metadata and media manifests,
11
+ allowlists, public mints, royalties, reveals, editions, inscriptions, and collection
12
+ verification.
13
+
14
+ "Every chain" means classify the chain family and use a verified native standard.
15
+ There is no universal NFT transaction. An ERC-721, a Metaplex collection, a Bitcoin
16
+ parent inscription, a CW721 contract, and a Move object are different products.
17
+
18
+ Oracle researches, scaffolds, tests, simulates, and prepares unsigned actions. The
19
+ user signs collection creation, mint, metadata, authority, treasury, marketplace,
20
+ and reveal actions separately. Never broadcast from this skill.
21
+
22
+ When loaded by the `oracle` router, use this skill to classify the request, then
23
+ route chain research to the relevant specialist and build/prepare work to
24
+ `protocol-builder`. The router remains read and simulate only.
25
+
26
+ If the launch uses randomized packs or loot mechanics, load
27
+ `oracle-nft-gacha-launch` as an additional safety layer.
28
+
29
+ ## Support status language
30
+
31
+ Use exactly one status before building:
32
+
33
+ | Status | Meaning |
34
+ |---|---|
35
+ | `TEMPLATE_READY` | Oracle ships a gated collection template and prepare adapter for the exact standard. |
36
+ | `ADAPTER_READY` | A chain-specific creation/mint encoder exists and passed simulation or testnet verification. |
37
+ | `GUIDED_BUILD` | Oracle can scaffold and test the project, but no generic transaction adapter is shipped. |
38
+ | `RESEARCH_ONLY` | Oracle can verify standards and produce a launch plan, not a deployable bundle. |
39
+ | `UNSUPPORTED` | Required primitives or trustworthy tooling cannot be verified. Stop. |
40
+
41
+ Do not call marketplace read or mint-bot support a collection-deployment adapter.
42
+ Buying an NFT, minting from an existing contract, and creating a collection are
43
+ three separate capabilities.
44
+
45
+ ## Current family matrix
46
+
47
+ | Family | Collection primitive | Default status | Required path |
48
+ |---|---|---|---|
49
+ | EVM | ERC-721, ERC-1155, ERC-2981 | `GUIDED_BUILD` until a gated Oracle collection template ships | Foundry tests, metadata/reveal tests, fork simulation, unsigned deploy |
50
+ | Solana | Metaplex Core, Token Metadata collection, Candy Machine/drop programs | `GUIDED_BUILD` | Select one standard, validate authorities, simulate ordered unsigned transactions |
51
+ | Bitcoin | Ordinals parent/child inscriptions and indexer collection manifests | `GUIDED_BUILD` for content and commit/reveal planning; adapter evidence required for `ADAPTER_READY` | Provenance manifest, parent link, UTXO/fee/reveal safety |
52
+ | Cosmos | CW721 or chain-native NFT module | `RESEARCH_ONLY` by default | Verify chain-specific instantiate/execute messages and migration admin |
53
+ | Sui | object-based collection and kiosk ecosystem | `RESEARCH_ONLY` by default | Move package, object capabilities, display metadata, testnet publish |
54
+ | Aptos | Digital Asset standard or chain-native collection objects | `RESEARCH_ONLY` by default | Collection/mint refs, mutation permissions, testnet publish |
55
+ | HyperEVM | ERC-721 or ERC-1155 | EVM status | Exact HyperEVM chain id and verified RPC/toolchain |
56
+ | Hyperliquid L1 | no generic NFT contract path assumed | `UNSUPPORTED` unless an official native primitive is verified | Route to HyperEVM when the product is EVM-native |
57
+ | Other | chain-native | `UNSUPPORTED` until classified | Add and verify a dedicated adapter before preparing transactions |
58
+
59
+ ## 1. Build the collection manifest
60
+
61
+ Do not generate contract or metadata artifacts until this manifest is complete:
62
+
63
+ ```yaml
64
+ collection:
65
+ name: ""
66
+ symbol: ""
67
+ chain_family: ""
68
+ chain_name: ""
69
+ chain_id_or_genesis: ""
70
+ network: mainnet|testnet|devnet|local
71
+ standard: ""
72
+ supply: 0
73
+ edition_size: 1
74
+ onchain_media: false
75
+ license: ""
76
+ content_rating: ""
77
+ mint:
78
+ price: ""
79
+ currency: ""
80
+ treasury: ""
81
+ per_wallet: 0
82
+ allowlist_root: none
83
+ allowlist_start: null
84
+ public_start: null
85
+ public_end: null
86
+ reveal: immediate|delayed|commit-reveal|vrf
87
+ metadata:
88
+ base_uri: ""
89
+ storage: ipfs|arweave|onchain|other
90
+ mutable: false
91
+ provenance_root: ""
92
+ placeholder_uri: none
93
+ royalties:
94
+ bps: 0
95
+ recipients: []
96
+ authorities:
97
+ owner: ""
98
+ mint: ""
99
+ metadata_update: none
100
+ freeze: none
101
+ pause: none
102
+ withdraw: ""
103
+ upgrade: none
104
+ ```
105
+
106
+ Validate supply against generated metadata count. Record raw payment units and
107
+ human-readable units. Royalty splits must reconcile exactly.
108
+
109
+ ## 2. Set rights, metadata, and provenance first
110
+
111
+ 1. State who owns the media and which license collectors receive.
112
+ 2. Hash every final media and metadata file.
113
+ 3. Validate token IDs or asset indexes are unique and contiguous when required.
114
+ 4. Pin or upload content only after the user approves that side effect.
115
+ 5. Build a deterministic provenance root over the final ordered assets.
116
+ 6. Separate placeholder metadata from final metadata.
117
+ 7. State whether metadata can change, who can change it, and how that authority is
118
+ transferred or revoked.
119
+ 8. Never promise immutable media when the JSON points to mutable HTTP storage.
120
+
121
+ Metadata upload, contract deployment, first mint, reveal, marketplace verification,
122
+ and authority revocation are separate actions.
123
+
124
+ ## 3. Force an authority and economics review
125
+
126
+ Before preparing transactions, print a table for:
127
+
128
+ - contract, package, or program upgrade authority
129
+ - collection owner
130
+ - mint authority
131
+ - freeze or transfer-restriction authority
132
+ - metadata update authority
133
+ - reveal authority
134
+ - pause authority
135
+ - treasury withdrawal authority
136
+ - royalty recipient and royalty update authority
137
+ - allowlist root setter
138
+ - supply increase or edition authority
139
+
140
+ For each, state initial holder, mutability, transfer/revoke action, and operational
141
+ consequence of revocation.
142
+
143
+ Also disclose:
144
+
145
+ - total supply and reserved supply
146
+ - mint phases and wallet caps
147
+ - mint price and payment token
148
+ - treasury destination
149
+ - creator/team allocation
150
+ - royalties and whether marketplaces can ignore them
151
+ - upgradeability
152
+ - delayed reveal and randomness assumptions
153
+ - estimated deploy, storage, mint, and reveal costs
154
+
155
+ Never market royalties as guaranteed income. Many marketplaces treat them as
156
+ optional.
157
+
158
+ ## 4. Family-specific build paths
159
+
160
+ ### EVM
161
+
162
+ Choose ERC-721 for unique items and ERC-1155 for editions or mixed fungibility.
163
+ Add ERC-2981 only as a royalty signal, not enforcement.
164
+
165
+ Prefer reviewed OpenZeppelin bases and minimal immutable deployment. If a proxy is
166
+ required, show proxy admin, implementation upgrade authority, and timelock.
167
+
168
+ Required Foundry coverage:
169
+
170
+ - maximum supply and reserved supply cannot be exceeded
171
+ - per-wallet and per-phase caps
172
+ - exact payment and refund behavior
173
+ - treasury withdrawal and reentrancy resistance
174
+ - allowlist proof validation and replay boundaries
175
+ - reveal ordering and provenance
176
+ - metadata freeze or update permissions
177
+ - royalty values and recipients
178
+ - pause behavior
179
+ - owner cannot mint hidden supply
180
+ - ERC-721 or ERC-1155 interface conformance
181
+
182
+ Run `forge test`, static analysis when available, fork or RPC simulation, and dry-run
183
+ deploy. Prepare contract verification separately. Initial mint, public mint opening,
184
+ base URI change, reveal, and ownership transfer are separate unsigned actions.
185
+
186
+ ### Solana
187
+
188
+ Choose one product shape before code:
189
+
190
+ - Metaplex Core for a modern asset/collection model
191
+ - Token Metadata collection for compatibility with legacy NFT tooling
192
+ - Candy Machine or another audited drop program for staged public mints
193
+
194
+ Do not mix models casually. Print all collection, update, freeze/delegate, mint,
195
+ rule-set, and candy-machine authorities.
196
+
197
+ Prepare ordered unsigned transactions for:
198
+
199
+ 1. create the collection asset or collection mint
200
+ 2. create and verify collection metadata
201
+ 3. create drop/mint configuration when used
202
+ 4. fund storage/rent accounts
203
+ 5. mint or reserve initial assets
204
+ 6. verify items into the collection
205
+ 7. transfer or revoke update/mint authorities
206
+
207
+ Simulate against the intended cluster. Validate account owners, rent, compute units,
208
+ address lookup tables, and transaction size. Rebuild expired blockhashes rather than
209
+ editing signed data.
210
+
211
+ ### Bitcoin Ordinals
212
+
213
+ A Bitcoin collection is normally an indexer-recognized group of inscriptions, not a
214
+ collection smart contract. Build:
215
+
216
+ - canonical collection metadata and provenance manifest
217
+ - parent inscription plan
218
+ - child inscription relationships when supported
219
+ - exact content type and content hash for every item
220
+ - deterministic inscription order
221
+ - commit and reveal PSBT plan
222
+ - postage, fee rate, reveal destinations, and recovery addresses
223
+
224
+ Protect commit UTXOs from accidental spends. Account for fee changes, reorgs,
225
+ inscription ordering, and cursed/unbound outcomes. Do not promise stable inscription
226
+ numbers before confirmation. Collection listing with an indexer or marketplace is a
227
+ separate side effect after confirmed inscription IDs exist.
228
+
229
+ ### Cosmos
230
+
231
+ First identify the target's actual NFT primitive. CW721, a chain-native NFT module,
232
+ and an EVM runtime are not interchangeable.
233
+
234
+ For CW721, verify the exact code artifact, checksum, instantiate message, minter,
235
+ metadata extension schema, royalty extension if any, migration admin, and chain gas
236
+ model. For a native module, verify current protobuf messages and authority behavior
237
+ from the running chain version. Use the EVM path only for a proven EVM runtime.
238
+
239
+ ### Sui
240
+
241
+ Model collection, item objects, treasury or publisher capabilities, display
242
+ metadata, transfer policy, royalties/kiosk behavior, package upgrade policy, and
243
+ shared versus owned objects. Test package publish, collection creation, mint,
244
+ transfer, and authority transfer on testnet before any mainnet prepare.
245
+
246
+ ### Aptos
247
+
248
+ Use the current Digital Asset or chain-native collection standard verified against
249
+ the target network. Define collection mutability, token mutability, mint refs,
250
+ burn/transfer refs, royalty data, supply caps, and module upgrade policy. Publish and
251
+ exercise the lifecycle on testnet first.
252
+
253
+ ### Hyperliquid
254
+
255
+ HyperEVM NFT launches use the EVM path. Do not assume Hyperliquid L1 has a generic
256
+ NFT collection primitive because HyperCore supports spot, perps, staking, or outcome
257
+ markets. Without a verified official L1 standard and adapter, mark it `UNSUPPORTED`.
258
+
259
+ ## 5. Mint phases and randomness
260
+
261
+ For allowlists:
262
+
263
+ - bind proofs to chain, contract/program, phase, wallet, allowance, price, and expiry
264
+ - publish the snapshot method and Merkle root
265
+ - prevent proof reuse across phases or contracts
266
+ - test wallet caps across allowlist and public phases together
267
+
268
+ For delayed reveal or randomized assignment:
269
+
270
+ - commit the final provenance before mint
271
+ - do not use timestamp, recent block hash, predictable block fields, or validator
272
+ discretion as sole randomness
273
+ - use a verified randomness source or a deterministic disclosed assignment
274
+ - show who can trigger reveal and whether they can reroll
275
+ - publish gacha odds when rarity is randomized
276
+
277
+ Load `oracle-nft-gacha-launch` for packs, loot boxes, or paid random outcomes.
278
+
279
+ ## 6. Marketplace and launch-page setup
280
+
281
+ Marketplace listing is not deployment. Only prepare it after contract/program or
282
+ inscription identifiers are final.
283
+
284
+ Before a mint page can claim ready:
285
+
286
+ - wallet and network switching work
287
+ - contract/program and payment destinations are exact
288
+ - total and per-wallet cost include gas/fees
289
+ - sold-out and phase transitions read chain state
290
+ - failed/rejected transactions surface clearly
291
+ - mint count cannot exceed the approved cap
292
+ - metadata preview comes from the pinned manifest
293
+ - no private key or seed phrase is requested
294
+
295
+ Never fabricate floor price, bids, volume, rarity, or sold count.
296
+
297
+ ## 7. Required artifacts
298
+
299
+ A completed prepare run returns:
300
+
301
+ 1. `collection-manifest.yaml`
302
+ 2. ordered metadata/media checksums and provenance root
303
+ 3. rights/license statement
304
+ 4. authority and mutability table
305
+ 5. source/package hash and dependency lock
306
+ 6. test and static-analysis results
307
+ 7. target-chain simulation or an explicit missing-capability note
308
+ 8. fee, rent, postage, and treasury estimate as applicable
309
+ 9. ordered unsigned transaction or PSBT bundle with payload hashes
310
+ 10. source/program verification payload
311
+ 11. separate metadata upload, marketplace, reveal, and authority-revoke actions
312
+ 12. final user approval checklist, one side effect per line
313
+
314
+ Do not emit signed transactions, private keys, seed phrases, keystore passwords, or
315
+ broadcast commands with signing enabled.
316
+
317
+ ## Refusals
318
+
319
+ Refuse stolen media, hidden supply, owner-only rerolls, fake randomness, metadata
320
+ rugs, undisclosed upgrades, wash trading, fake floor/volume, deceptive rarity,
321
+ royalty claims presented as guaranteed, and wallet-draining mint pages.
322
+
323
+ ## Completion gate
324
+
325
+ A collection is only `PREPARED` when:
326
+
327
+ - chain and standard are exact
328
+ - support status is honest
329
+ - supply matches metadata
330
+ - rights and storage are explicit
331
+ - all authorities and mutable fields are disclosed
332
+ - tests pass
333
+ - simulation passes or the missing capability is explicit
334
+ - every destination and payload hash is recorded
335
+ - no signing, upload, marketplace listing, or broadcast occurred without separate
336
+ user approval
337
+
338
+ Anything less is `DRAFT`, `RESEARCH_ONLY`, or `UNSUPPORTED`.