@oracle-agent/oracle 0.10.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (424) hide show
  1. package/LICENSE +115 -201
  2. package/README.md +82 -91
  3. package/SECURITY.md +37 -12
  4. package/SETUP.md +207 -272
  5. package/dist/action-receipts.mjs +1 -0
  6. package/dist/action-semantics.mjs +1 -0
  7. package/dist/address-book.mjs +2 -0
  8. package/dist/bin/desk-server.mjs +14 -0
  9. package/dist/bin/oracle-data-mcp.mjs +8 -0
  10. package/dist/bin/oracle-init.mjs +24 -0
  11. package/dist/bin/oracle-public-server.mjs +5 -0
  12. package/dist/bin/oracle-route.mjs +22 -0
  13. package/dist/bin/oracle-scan.mjs +18 -0
  14. package/dist/bin/oracle-upgrade.mjs +21 -0
  15. package/dist/bin/oracle.mjs +68 -0
  16. package/dist/chains.mjs +1 -0
  17. package/dist/cli/commands/auth.mjs +16 -0
  18. package/dist/cli/commands/bootstrap.mjs +18 -0
  19. package/dist/cli/commands/chain.mjs +21 -0
  20. package/dist/cli/commands/chat.mjs +35 -0
  21. package/dist/cli/commands/credential.mjs +1 -0
  22. package/dist/cli/commands/data-mcp.mjs +2 -0
  23. package/dist/cli/commands/data.mjs +12 -0
  24. package/dist/cli/commands/doctor.mjs +5 -0
  25. package/dist/cli/commands/gate.mjs +13 -0
  26. package/dist/cli/commands/help.mjs +1 -0
  27. package/dist/cli/commands/init.mjs +3 -0
  28. package/dist/cli/commands/mcp.mjs +33 -0
  29. package/dist/cli/commands/model.mjs +44 -0
  30. package/dist/cli/commands/prepare.mjs +2 -0
  31. package/dist/cli/commands/public.mjs +3 -0
  32. package/dist/cli/commands/route.mjs +2 -0
  33. package/dist/cli/commands/runner.mjs +1 -0
  34. package/dist/cli/commands/scan.mjs +2 -0
  35. package/dist/cli/commands/setup.mjs +34 -0
  36. package/dist/cli/commands/sign.mjs +4 -0
  37. package/dist/cli/commands/signer.mjs +1 -0
  38. package/dist/cli/commands/upgrade.mjs +2 -0
  39. package/dist/cli/commands/vault.mjs +1 -0
  40. package/dist/cli/commands/version.mjs +2 -0
  41. package/dist/data/desk-data.mjs +12 -0
  42. package/dist/index.mjs +17 -0
  43. package/dist/nft-gas-war-guard.mjs +1 -0
  44. package/dist/onboarding/harness-configs.mjs +4 -0
  45. package/dist/portfolio-risk.mjs +1 -0
  46. package/dist/prepare-envelope.mjs +1 -0
  47. package/dist/public-control/policy-schema.mjs +1 -0
  48. package/dist/router/index.mjs +2 -0
  49. package/dist/scanner/index.mjs +4 -0
  50. package/dist/signals/index.mjs +1 -0
  51. package/dist/watch-preferences.mjs +1 -0
  52. package/package.json +27 -65
  53. package/public/oracle-splash/assets/cli-chain-hyperliquid.jpg +0 -0
  54. package/public/oracle-splash/brand/aave.webp +0 -0
  55. package/public/oracle-splash/brand/aavev2.webp +0 -0
  56. package/public/oracle-splash/brand/aborean.webp +0 -0
  57. package/public/oracle-splash/brand/across.webp +0 -0
  58. package/public/oracle-splash/brand/aerodrome.webp +0 -0
  59. package/public/oracle-splash/brand/afi.webp +0 -0
  60. package/public/oracle-splash/brand/arcus.webp +0 -0
  61. package/public/oracle-splash/brand/aster.webp +0 -0
  62. package/public/oracle-splash/brand/avant.webp +0 -0
  63. package/public/oracle-splash/brand/balancer.webp +0 -0
  64. package/public/oracle-splash/brand/beefy.webp +0 -0
  65. package/public/oracle-splash/brand/benqi.webp +0 -0
  66. package/public/oracle-splash/brand/bestinslot.ico +0 -0
  67. package/public/oracle-splash/brand/bitfi.webp +0 -0
  68. package/public/oracle-splash/brand/bonkswap.webp +0 -0
  69. package/public/oracle-splash/brand/bouncebit.webp +0 -0
  70. package/public/oracle-splash/brand/camelot.webp +0 -0
  71. package/public/oracle-splash/brand/compound.webp +0 -0
  72. package/public/oracle-splash/brand/concrete.webp +0 -0
  73. package/public/oracle-splash/brand/cow.webp +0 -0
  74. package/public/oracle-splash/brand/curve.webp +0 -0
  75. package/public/oracle-splash/brand/derive.webp +0 -0
  76. package/public/oracle-splash/brand/dolomite.webp +0 -0
  77. package/public/oracle-splash/brand/eigenlayer.webp +0 -0
  78. package/public/oracle-splash/brand/ekubo.webp +0 -0
  79. package/public/oracle-splash/brand/ethena.webp +0 -0
  80. package/public/oracle-splash/brand/etherfi.webp +0 -0
  81. package/public/oracle-splash/brand/etherfiborrow.webp +0 -0
  82. package/public/oracle-splash/brand/felix.webp +0 -0
  83. package/public/oracle-splash/brand/fluid.webp +0 -0
  84. package/public/oracle-splash/brand/fluxbeam.webp +0 -0
  85. package/public/oracle-splash/brand/folks.webp +0 -0
  86. package/public/oracle-splash/brand/fortyacres.webp +0 -0
  87. package/public/oracle-splash/brand/gainsnetwork.webp +0 -0
  88. package/public/oracle-splash/brand/gassss.webp +0 -0
  89. package/public/oracle-splash/brand/gmx.webp +0 -0
  90. package/public/oracle-splash/brand/harmonix.webp +0 -0
  91. package/public/oracle-splash/brand/hlorderbook.webp +0 -0
  92. package/public/oracle-splash/brand/hlp.webp +0 -0
  93. package/public/oracle-splash/brand/hop.webp +0 -0
  94. package/public/oracle-splash/brand/hyperbeat.webp +0 -0
  95. package/public/oracle-splash/brand/hyperlend.webp +0 -0
  96. package/public/oracle-splash/brand/hyperliquid.webp +0 -0
  97. package/public/oracle-splash/brand/hyperliquidhpl.webp +0 -0
  98. package/public/oracle-splash/brand/hyperliquidspot.webp +0 -0
  99. package/public/oracle-splash/brand/hyperswap.webp +0 -0
  100. package/public/oracle-splash/brand/hypha.webp +0 -0
  101. package/public/oracle-splash/brand/joedex.webp +0 -0
  102. package/public/oracle-splash/brand/jupiter.webp +0 -0
  103. package/public/oracle-splash/brand/kelp.webp +0 -0
  104. package/public/oracle-splash/brand/kinetiq.webp +0 -0
  105. package/public/oracle-splash/brand/kmhype.webp +0 -0
  106. package/public/oracle-splash/brand/kona.webp +0 -0
  107. package/public/oracle-splash/brand/konalend.webp +0 -0
  108. package/public/oracle-splash/brand/lfj.webp +0 -0
  109. package/public/oracle-splash/brand/lido.webp +0 -0
  110. package/public/oracle-splash/brand/lifi.webp +0 -0
  111. package/public/oracle-splash/brand/lighter.webp +0 -0
  112. package/public/oracle-splash/brand/lista.webp +0 -0
  113. package/public/oracle-splash/brand/loopedhype.webp +0 -0
  114. package/public/oracle-splash/brand/lorenzo.webp +0 -0
  115. package/public/oracle-splash/brand/magic-eden.webp +0 -0
  116. package/public/oracle-splash/brand/magiceden.webp +0 -0
  117. package/public/oracle-splash/brand/mempool.png +0 -0
  118. package/public/oracle-splash/brand/meteora.webp +0 -0
  119. package/public/oracle-splash/brand/morpho.webp +0 -0
  120. package/public/oracle-splash/brand/myriad.webp +0 -0
  121. package/public/oracle-splash/brand/noxa.webp +0 -0
  122. package/public/oracle-splash/brand/odos.webp +0 -0
  123. package/public/oracle-splash/brand/oneinch.webp +0 -0
  124. package/public/oracle-splash/brand/openbook.webp +0 -0
  125. package/public/oracle-splash/brand/opensea.webp +0 -0
  126. package/public/oracle-splash/brand/orca.webp +0 -0
  127. package/public/oracle-splash/brand/ordinals.png +0 -0
  128. package/public/oracle-splash/brand/ostium.webp +0 -0
  129. package/public/oracle-splash/brand/pancakeswap.webp +0 -0
  130. package/public/oracle-splash/brand/pendle.webp +0 -0
  131. package/public/oracle-splash/brand/perena.webp +0 -0
  132. package/public/oracle-splash/brand/pharaoh.webp +0 -0
  133. package/public/oracle-splash/brand/phoenix.webp +0 -0
  134. package/public/oracle-splash/brand/polymarket.webp +0 -0
  135. package/public/oracle-splash/brand/polynomial.webp +0 -0
  136. package/public/oracle-splash/brand/projectx.webp +0 -0
  137. package/public/oracle-splash/brand/pumpfun.webp +0 -0
  138. package/public/oracle-splash/brand/quickswap.webp +0 -0
  139. package/public/oracle-splash/brand/rain.webp +0 -0
  140. package/public/oracle-splash/brand/raydium.webp +0 -0
  141. package/public/oracle-splash/brand/relay.webp +0 -0
  142. package/public/oracle-splash/brand/rocketpool.webp +0 -0
  143. package/public/oracle-splash/brand/saber.webp +0 -0
  144. package/public/oracle-splash/brand/sakuraswap.webp +0 -0
  145. package/public/oracle-splash/brand/sanctum.webp +0 -0
  146. package/public/oracle-splash/brand/satflow.png +0 -0
  147. package/public/oracle-splash/brand/sierra.webp +0 -0
  148. package/public/oracle-splash/brand/sky.webp +0 -0
  149. package/public/oracle-splash/brand/solv.webp +0 -0
  150. package/public/oracle-splash/brand/spark.webp +0 -0
  151. package/public/oracle-splash/brand/sparksavings.webp +0 -0
  152. package/public/oracle-splash/brand/sphere.webp +0 -0
  153. package/public/oracle-splash/brand/ssv.webp +0 -0
  154. package/public/oracle-splash/brand/stabble.webp +0 -0
  155. package/public/oracle-splash/brand/stableswap.webp +0 -0
  156. package/public/oracle-splash/brand/stakewise.webp +0 -0
  157. package/public/oracle-splash/brand/stargate.webp +0 -0
  158. package/public/oracle-splash/brand/sthype.webp +0 -0
  159. package/public/oracle-splash/brand/sushiswap.webp +0 -0
  160. package/public/oracle-splash/brand/unisat.png +0 -0
  161. package/public/oracle-splash/brand/uniswap.webp +0 -0
  162. package/public/oracle-splash/brand/uniswapv2.webp +0 -0
  163. package/public/oracle-splash/brand/uniswapv4.webp +0 -0
  164. package/public/oracle-splash/brand/unit.webp +0 -0
  165. package/public/oracle-splash/brand/velodrome.webp +0 -0
  166. package/public/oracle-splash/brand/velora.webp +0 -0
  167. package/public/oracle-splash/brand/venus.webp +0 -0
  168. package/public/oracle-splash/brand/wbeth.webp +0 -0
  169. package/public/oracle-splash/brand/xsy.webp +0 -0
  170. package/public/oracle-splash/brand/yieldyak.webp +0 -0
  171. package/public/oracle-splash/brand/zerobase.webp +0 -0
  172. package/public/oracle-splash/brand/zerox.webp +0 -0
  173. package/public/oracle-splash/index.html +246 -169
  174. package/CONTRIBUTING.md +0 -98
  175. package/bin/desk-server.mjs +0 -440
  176. package/bin/oracle-data-mcp.mjs +0 -1010
  177. package/bin/oracle-init.mjs +0 -496
  178. package/bin/oracle-public-server.mjs +0 -36
  179. package/bin/oracle-route.mjs +0 -254
  180. package/bin/oracle-scan.mjs +0 -192
  181. package/bin/oracle-upgrade.mjs +0 -42
  182. package/bin/oracle.mjs +0 -33
  183. package/docs/adding-a-chain.md +0 -229
  184. package/docs/architecture.md +0 -136
  185. package/docs/cli.md +0 -47
  186. package/docs/connectors.md +0 -13
  187. package/docs/oracle-pack-standard.md +0 -29
  188. package/docs/profiles.md +0 -154
  189. package/examples/add-a-chain.mjs +0 -65
  190. package/examples/oracle-pack-template.mjs +0 -38
  191. package/examples/research-a-token.mjs +0 -70
  192. package/plugins/oracle-owner-gate/__init__.py +0 -227
  193. package/plugins/oracle-owner-gate/plugin.yaml +0 -9
  194. package/profiles/_template/SOUL.md +0 -54
  195. package/profiles/_template/profile.json +0 -22
  196. package/profiles/bitcoin-agent/SOUL.md +0 -31
  197. package/profiles/bitcoin-agent/profile.json +0 -32
  198. package/profiles/hyperliquid-agent/SOUL.md +0 -34
  199. package/profiles/hyperliquid-agent/profile.json +0 -37
  200. package/profiles/oracle/SOUL.md +0 -107
  201. package/profiles/oracle/profile.json +0 -39
  202. package/profiles/polymarket-agent/SOUL.md +0 -35
  203. package/profiles/polymarket-agent/profile.json +0 -34
  204. package/profiles/profile.schema.json +0 -90
  205. package/profiles/protocol-builder/SOUL.md +0 -57
  206. package/profiles/protocol-builder/profile.json +0 -39
  207. package/profiles/robinhood-agent/SOUL.md +0 -53
  208. package/profiles/robinhood-agent/profile.json +0 -40
  209. package/profiles/solana-agent/SOUL.md +0 -37
  210. package/profiles/solana-agent/profile.json +0 -37
  211. package/profiles/stable-agent/SOUL.md +0 -43
  212. package/profiles/stable-agent/profile.json +0 -37
  213. package/protocols/templates/safe-erc20/SECURITY.md +0 -16
  214. package/protocols/templates/safe-erc20/foundry.toml +0 -12
  215. package/protocols/templates/safe-erc20/remappings.txt +0 -2
  216. package/protocols/templates/safe-erc20/src/SafeERC20.sol +0 -53
  217. package/protocols/templates/safe-erc20/test/SafeERC20.t.sol +0 -72
  218. package/scripts/adversarial-bench.mjs +0 -114
  219. package/scripts/build-inscription.py +0 -230
  220. package/scripts/check-doc-drift.mjs +0 -112
  221. package/scripts/check-test-count.mjs +0 -105
  222. package/scripts/e2e-hl-markets.mjs +0 -21
  223. package/scripts/e2e-hl-perps.mjs +0 -48
  224. package/scripts/e2e-hypercore-staking.mjs +0 -128
  225. package/scripts/e2e-solana-bitcoin.mjs +0 -183
  226. package/scripts/protocol-template-gate.mjs +0 -15
  227. package/scripts/public-api-scan.mjs +0 -23
  228. package/scripts/secret-scan.mjs +0 -181
  229. package/scripts/verify-v3-venues.mjs +0 -192
  230. package/skills/balance/SKILL.md +0 -176
  231. package/skills/oracle-action-semantics/SKILL.md +0 -40
  232. package/skills/oracle-best-execution/SKILL.md +0 -127
  233. package/skills/oracle-bitcoin/SKILL.md +0 -53
  234. package/skills/oracle-chain-graphs-telegram-cards/SKILL.md +0 -59
  235. package/skills/oracle-chat/SKILL.md +0 -61
  236. package/skills/oracle-chat/chain.SKILL.md +0 -31
  237. package/skills/oracle-chat/setup.SKILL.md +0 -37
  238. package/skills/oracle-circuit-breaker/SKILL.md +0 -51
  239. package/skills/oracle-contract-research/SKILL.md +0 -55
  240. package/skills/oracle-desk/SKILL.md +0 -58
  241. package/skills/oracle-dex-launch/SKILL.md +0 -38
  242. package/skills/oracle-grants/SKILL.md +0 -69
  243. package/skills/oracle-hypercore-staking/SKILL.md +0 -57
  244. package/skills/oracle-hyperliquid/SKILL.md +0 -56
  245. package/skills/oracle-meme-token-sniper/SKILL.md +0 -73
  246. package/skills/oracle-multichain-nft-launch/SKILL.md +0 -338
  247. package/skills/oracle-multichain-token-launch/SKILL.md +0 -300
  248. package/skills/oracle-nft-gacha-launch/SKILL.md +0 -48
  249. package/skills/oracle-nft-mint-gas-war/SKILL.md +0 -63
  250. package/skills/oracle-polymarket/SKILL.md +0 -60
  251. package/skills/oracle-protocol-builder/SKILL.md +0 -59
  252. package/skills/oracle-protocol-security/SKILL.md +0 -60
  253. package/skills/oracle-public-product/SKILL.md +0 -44
  254. package/skills/oracle-receipts/SKILL.md +0 -52
  255. package/skills/oracle-rfq-tokenized-assets/SKILL.md +0 -69
  256. package/skills/oracle-smart-wallet-scanner/SKILL.md +0 -49
  257. package/skills/oracle-solana/SKILL.md +0 -65
  258. package/skills/oracle-solana-nft/SKILL.md +0 -54
  259. package/skills/oracle-token-research/SKILL.md +0 -67
  260. package/skins/oracle.yaml +0 -56
  261. package/src/action-receipts.mjs +0 -168
  262. package/src/action-semantics.mjs +0 -62
  263. package/src/address-book.mjs +0 -208
  264. package/src/agent-auth.mjs +0 -206
  265. package/src/approval-guard.mjs +0 -282
  266. package/src/attestation-secret.mjs +0 -88
  267. package/src/audit-log.mjs +0 -196
  268. package/src/auth/oauth.mjs +0 -672
  269. package/src/auto-slippage.mjs +0 -378
  270. package/src/capability-posture.mjs +0 -125
  271. package/src/chains.mjs +0 -62
  272. package/src/cli/chain-catalog.mjs +0 -215
  273. package/src/cli/chain-state.mjs +0 -74
  274. package/src/cli/commands/auth.mjs +0 -193
  275. package/src/cli/commands/bootstrap.mjs +0 -87
  276. package/src/cli/commands/chain.mjs +0 -143
  277. package/src/cli/commands/chat.mjs +0 -434
  278. package/src/cli/commands/credential.mjs +0 -9
  279. package/src/cli/commands/data-mcp.mjs +0 -18
  280. package/src/cli/commands/data.mjs +0 -73
  281. package/src/cli/commands/doctor.mjs +0 -126
  282. package/src/cli/commands/help.mjs +0 -7
  283. package/src/cli/commands/init.mjs +0 -27
  284. package/src/cli/commands/mcp.mjs +0 -142
  285. package/src/cli/commands/model.mjs +0 -99
  286. package/src/cli/commands/prepare.mjs +0 -12
  287. package/src/cli/commands/public.mjs +0 -20
  288. package/src/cli/commands/route.mjs +0 -12
  289. package/src/cli/commands/runner.mjs +0 -9
  290. package/src/cli/commands/scan.mjs +0 -12
  291. package/src/cli/commands/setup.mjs +0 -275
  292. package/src/cli/commands/sign.mjs +0 -21
  293. package/src/cli/commands/signer.mjs +0 -9
  294. package/src/cli/commands/upgrade.mjs +0 -12
  295. package/src/cli/commands/vault.mjs +0 -9
  296. package/src/cli/commands/version.mjs +0 -22
  297. package/src/cli/first-run.mjs +0 -23
  298. package/src/cli/kernel.mjs +0 -239
  299. package/src/cli/mcp-targets/chatgpt.mjs +0 -51
  300. package/src/cli/mcp-targets/claude-code.mjs +0 -39
  301. package/src/cli/mcp-targets/claude-desktop.mjs +0 -24
  302. package/src/cli/mcp-targets/codex.mjs +0 -41
  303. package/src/cli/mcp-targets/shared.mjs +0 -61
  304. package/src/cli/messaging-platforms.mjs +0 -209
  305. package/src/cli/model-config.mjs +0 -70
  306. package/src/cli/operator-dispatch.mjs +0 -258
  307. package/src/cli/oracle-harness.py +0 -415
  308. package/src/cli/paths.mjs +0 -83
  309. package/src/cli/runtime.mjs +0 -351
  310. package/src/cli/setup-state.mjs +0 -168
  311. package/src/cli/spawn-child.mjs +0 -43
  312. package/src/data/catalog.mjs +0 -554
  313. package/src/data/desk-data.mjs +0 -683
  314. package/src/data/http.mjs +0 -253
  315. package/src/data/provider-endpoint.mjs +0 -94
  316. package/src/data/providers/aerodrome.mjs +0 -245
  317. package/src/data/providers/balancer.mjs +0 -209
  318. package/src/data/providers/bitcoin-esplora.mjs +0 -216
  319. package/src/data/providers/bitcoin-meta.mjs +0 -378
  320. package/src/data/providers/blockscout.mjs +0 -14
  321. package/src/data/providers/bridges.mjs +0 -242
  322. package/src/data/providers/cowswap.mjs +0 -415
  323. package/src/data/providers/curve.mjs +0 -201
  324. package/src/data/providers/defillama.mjs +0 -88
  325. package/src/data/providers/dexscreener.mjs +0 -43
  326. package/src/data/providers/evm-rpc.mjs +0 -222
  327. package/src/data/providers/geckoterminal.mjs +0 -34
  328. package/src/data/providers/gmx.mjs +0 -496
  329. package/src/data/providers/hl-assets.mjs +0 -165
  330. package/src/data/providers/hl-info.mjs +0 -108
  331. package/src/data/providers/hl-markets.mjs +0 -210
  332. package/src/data/providers/hl-outcome.mjs +0 -61
  333. package/src/data/providers/hl-perps.mjs +0 -387
  334. package/src/data/providers/hl-staking.mjs +0 -353
  335. package/src/data/providers/hl-ws.mjs +0 -119
  336. package/src/data/providers/hyperevm-dex.mjs +0 -49
  337. package/src/data/providers/jupiter.mjs +0 -183
  338. package/src/data/providers/lifi.mjs +0 -151
  339. package/src/data/providers/magiceden-sol.mjs +0 -393
  340. package/src/data/providers/morpho.mjs +0 -173
  341. package/src/data/providers/nft-gallery.mjs +0 -163
  342. package/src/data/providers/nft-portfolio.mjs +0 -494
  343. package/src/data/providers/odos.mjs +0 -156
  344. package/src/data/providers/oneinch.mjs +0 -174
  345. package/src/data/providers/opensea-multichain.mjs +0 -136
  346. package/src/data/providers/opensea-nft.mjs +0 -371
  347. package/src/data/providers/paraswap.mjs +0 -118
  348. package/src/data/providers/pendle.mjs +0 -187
  349. package/src/data/providers/poly-clob.mjs +0 -283
  350. package/src/data/providers/poly-public.mjs +0 -96
  351. package/src/data/providers/poly-ws.mjs +0 -103
  352. package/src/data/providers/portfolio-history.mjs +0 -394
  353. package/src/data/providers/portfolio.mjs +0 -594
  354. package/src/data/providers/rfq.mjs +0 -15
  355. package/src/data/providers/rh-agent.mjs +0 -59
  356. package/src/data/providers/satflow.mjs +0 -338
  357. package/src/data/providers/solana-rpc.mjs +0 -197
  358. package/src/data/providers/uniswap-v3.mjs +0 -320
  359. package/src/data/providers/zerox.mjs +0 -167
  360. package/src/data/public-api-scan.mjs +0 -61
  361. package/src/data/quote-placeholder.mjs +0 -31
  362. package/src/exact-integer.mjs +0 -72
  363. package/src/exec-policy.mjs +0 -455
  364. package/src/flags.mjs +0 -15
  365. package/src/fresh-window.mjs +0 -76
  366. package/src/gmx-attestation.mjs +0 -176
  367. package/src/index.mjs +0 -100
  368. package/src/nft-gas-war-guard.mjs +0 -139
  369. package/src/onboarding/agent-keys.mjs +0 -161
  370. package/src/onboarding/harness-configs.mjs +0 -102
  371. package/src/onboarding/index.mjs +0 -18
  372. package/src/onboarding/tiers.mjs +0 -139
  373. package/src/oracle-env.mjs +0 -47
  374. package/src/portfolio-risk.mjs +0 -170
  375. package/src/prepare-envelope.mjs +0 -186
  376. package/src/profile-upgrade.mjs +0 -277
  377. package/src/protocol-execution.mjs +0 -84
  378. package/src/protocol-templates/gate.mjs +0 -179
  379. package/src/protocol-templates/prepare-deploy.mjs +0 -81
  380. package/src/public-api/buzz-integration.mjs +0 -256
  381. package/src/public-api/connect-agent.mjs +0 -416
  382. package/src/public-api/grants.mjs +0 -142
  383. package/src/public-api/http.mjs +0 -389
  384. package/src/public-control/aa-adapter.mjs +0 -402
  385. package/src/public-control/build-registry.mjs +0 -227
  386. package/src/public-control/bundler-client.mjs +0 -357
  387. package/src/public-control/grant-indexer.mjs +0 -296
  388. package/src/public-control/policy-render.mjs +0 -69
  389. package/src/public-control/policy-schema.mjs +0 -318
  390. package/src/public-control/runtime-config.mjs +0 -275
  391. package/src/public-control/session-key-model.mjs +0 -374
  392. package/src/public-control/session-orchestrator.mjs +0 -412
  393. package/src/rfq/intent.mjs +0 -180
  394. package/src/rfq/sources.mjs +0 -181
  395. package/src/route-attestation.mjs +0 -132
  396. package/src/router/best-execution.mjs +0 -326
  397. package/src/router/index.mjs +0 -226
  398. package/src/router/prepare-bridge.mjs +0 -289
  399. package/src/router/prepare-route.mjs +0 -381
  400. package/src/router/proposal.mjs +0 -311
  401. package/src/router/risk-classifier.mjs +0 -119
  402. package/src/router/route-sources.mjs +0 -329
  403. package/src/scanner/chains.config.mjs +0 -430
  404. package/src/scanner/contract.mjs +0 -270
  405. package/src/scanner/evm-scanner.mjs +0 -394
  406. package/src/scanner/index.mjs +0 -9
  407. package/src/scanner/v2-venue.mjs +0 -335
  408. package/src/scanner/v3-venue.mjs +0 -290
  409. package/src/scopes.mjs +0 -44
  410. package/src/sell-simulation.mjs +0 -167
  411. package/src/signals/engine.mjs +0 -146
  412. package/src/signals/index.mjs +0 -1
  413. package/src/token-transfer-guard.mjs +0 -188
  414. package/src/tui/app.mjs +0 -438
  415. package/src/tui/backend.mjs +0 -145
  416. package/src/tui/format.mjs +0 -272
  417. package/src/tui/gateway-client.mjs +0 -177
  418. package/src/tui/input.mjs +0 -501
  419. package/src/tui/renderer.mjs +0 -443
  420. package/src/tui/standalone-client.mjs +0 -666
  421. package/src/tui/theme.mjs +0 -81
  422. package/src/vault-attestation.mjs +0 -146
  423. package/src/venues.mjs +0 -206
  424. package/src/watch-preferences.mjs +0 -85
@@ -1,61 +0,0 @@
1
- ---
2
- name: oracle-chat
3
- description: "Use when opening the one oracle chat surface, selecting chains with /chain, or configuring messaging with /setup."
4
- version: 1.0.0
5
- ---
6
-
7
- # oracle chat surface
8
-
9
- You are **oracle** — one lowercase persona. Models can change underneath via `/model`. Branding stays oracle.
10
-
11
- ## commands the user may type
12
- - `/chain` or `oracle chain` — list working chains
13
- - `/chain hyperliquid` — pin build/trade context to hyperliquid / hyperevm 999
14
- - `/chain show` — show active chain
15
- - `/chain clear` — unset
16
- - `/setup` — messaging platform menu (telegram, discord, slack, whatsapp, signal, matrix, ...)
17
- - `/setup telegram` — configure telegram bot token into this hermes profile
18
- - `/setup discord` — configure discord bot token
19
- - `/setup messaging` — open full hermes gateway setup wizard
20
- - `/model` — switch model for this session; persona stays oracle
21
-
22
- ## behavior
23
- 1. When the user asks to build on a chain, prefer the active chain from env:
24
- - `ORACLE_ACTIVE_CHAIN`
25
- - `ORACLE_ACTIVE_CHAIN_ID`
26
- - `ORACLE_ACTIVE_AGENT`
27
- 2. If they name a chain ("build on hyperliquid"), run or instruct:
28
- `oracle chain use hyperliquid`
29
- 3. Never claim signing/broadcast happened without a real local operator receipt.
30
- 4. Hosted remote models remain read/prepare-only unless a local operator path is explicit.
31
- 5. Keep replies lowercase-friendly and terse. No glaze.
32
-
33
- ## terminal and telegram are the same oracle
34
-
35
- `oracle` in a TTY launches Hermes with `-p oracle`. Telegram is wired to that
36
- same profile. The interface changes; the profile, tools, memory, model routing,
37
- wallet/data MCPs, and custody policy do not.
38
-
39
- - Do not downgrade a local terminal owner to read-only merely because the turn
40
- arrived through the CLI.
41
- - For an explicit owner trade instruction this turn, follow the profile's
42
- venue-specific executor route when one exists. Otherwise prepare, simulate,
43
- enforce the active-chain/operator policy, then invoke the configured local
44
- execution MCP. The signer/operator remains authoritative.
45
- - If confirmation is not explicit, show the exact action and wait for it.
46
- - `arm` is a chat action for one exact intent and TTL. Never tell the owner to
47
- flip an execution environment variable.
48
- - A tool refusal is a real policy wall. Report the exact refusal instead of
49
- bypassing it.
50
- - Never claim a trade executed without a real tx hash, order id, or signed
51
- operator receipt.
52
-
53
- ## shell helpers
54
- ```bash
55
- oracle chain list
56
- oracle chain use hyperliquid
57
- oracle setup status
58
- oracle setup telegram --token <BOT_TOKEN>
59
- oracle setup gateway restart
60
- oracle chat
61
- ```
@@ -1,31 +0,0 @@
1
- ---
2
- name: chain
3
- description: "Use when the user types /chain or wants to list/select oracle working chains (hyperliquid, base, solana, bitcoin, ...)."
4
- version: 1.0.0
5
- disable-model-invocation: true
6
- ---
7
-
8
- # /chain
9
-
10
- Run the local oracle chain selector. Do not invent chains.
11
-
12
- ```bash
13
- # list
14
- oracle chain list
15
-
16
- # select build surface
17
- oracle chain use {{arg1}}
18
-
19
- # show / clear
20
- oracle chain show
21
- oracle chain clear
22
- ```
23
-
24
- If `{{arg1}}` is empty, run `oracle chain list`.
25
- If `{{arg1}}` is `show`, `status`, `clear`, `list`, or a chain key, pass it through:
26
-
27
- ```bash
28
- oracle chain {{arg1}} {{arg2}}
29
- ```
30
-
31
- After selection, confirm active chain key + id + agent in lowercase.
@@ -1,37 +0,0 @@
1
- ---
2
- name: setup
3
- description: "Use when the user types /setup or wants to connect telegram, discord, slack, or another messaging platform to oracle."
4
- version: 1.0.0
5
- disable-model-invocation: true
6
- ---
7
-
8
- # /setup
9
-
10
- Configure messaging for the oracle profile. Secrets stay local.
11
-
12
- ```bash
13
- # menu + status (never prints tokens)
14
- oracle setup status
15
-
16
- # open full hermes wizard
17
- oracle setup messaging
18
-
19
- # platform shortcuts
20
- oracle setup telegram
21
- oracle setup discord
22
- oracle setup slack
23
- oracle setup whatsapp
24
-
25
- # gateway control
26
- oracle setup gateway status
27
- oracle setup gateway restart
28
- ```
29
-
30
- If the user passed args after `/setup`, forward them:
31
-
32
- ```bash
33
- oracle setup {{arg1}} {{arg2}} {{arg3}}
34
- ```
35
-
36
- If no args, show `oracle setup status`.
37
- Never echo bot tokens, app tokens, or passwords back into chat.
@@ -1,51 +0,0 @@
1
- ---
2
- name: oracle-circuit-breaker
3
- description: Use before any repeated, automated, or loop-driven trading action. Mandatory guardrails so a broken loop cannot drain a wallet.
4
- ---
5
-
6
- # Circuit breakers
7
-
8
- A loop that trades is a loop that can lose money at machine speed. Every automated
9
- or repeated action needs these before it runs once.
10
-
11
- ## Mandatory guardrails
12
-
13
- 1. **Max iterations.** A hard count, not a "should converge" argument. Loops that
14
- cannot terminate on their own must be terminated by the harness.
15
- 2. **Consecutive-failure stop.** N failures in a row halts the loop. A loop that
16
- retries a failing action forever burns gas to no effect.
17
- 3. **Cumulative spend ceiling** across the whole run, not per action. Twenty
18
- trades at the per-trade cap can exceed the intended risk by 20x.
19
- 4. **Cooldown between actions.** Prevents a same-block hammer and gives state time
20
- to settle.
21
- 5. **Kill switch checked immediately before each action**, not once at start. A
22
- switch read at t=0 and acted on at t=60s is stale.
23
- 6. **Halt on unexpected state.** Balance moved when it shouldn't have? Stop and
24
- report. Do not "adapt."
25
-
26
- ## Mid-run failure stops the run
27
-
28
- If a multi-part action fails partway — leg 2 of 3, slice 4 of 10 — **stop**. Do not
29
- continue to the remaining legs. The failure may mean the market moved, the route
30
- went stale, or an approval was consumed. Continuing turns one bad fill into
31
- several.
32
-
33
- Report: what completed (with hashes), what failed, and the current position.
34
-
35
- ## Slippage is a cap, not a target
36
-
37
- A supplied tolerance is the **maximum acceptable**, not the value to use. Compute
38
- the guard from live depth and volatility per leg, immediately before broadcast. If
39
- the required guard exceeds the cap, **block** — requote or split. Never widen to
40
- force a fill.
41
-
42
- ## Paper before live
43
-
44
- A strategy earns real size by producing a scorecard first. Shadow it, measure the
45
- markout, then size. "It looked right in backtest" is not a scorecard.
46
-
47
- ## The bright line
48
-
49
- An automated loop may **prepare**. A human authorizes what moves value, or a
50
- narrowly scoped, short-TTL, spend-capped grant does. There is no third option
51
- where the loop decides it has permission.
@@ -1,55 +0,0 @@
1
- ---
2
- name: oracle-contract-research
3
- description: Use when verifying a contract, router, factory, or venue address before trusting it with value.
4
- ---
5
-
6
- # Contract research
7
-
8
- The destination allowlist is the highest-leverage control on this desk. Allowlisting
9
- a spoofed router defeats every other protection. So verification is not a formality.
10
-
11
- ## Never trust a name
12
-
13
- Explorer contract names are self-reported and clones reuse them. "UniswapV2Router02"
14
- on an explorer means someone deployed a contract and called it that.
15
-
16
- Verify instead:
17
-
18
- 1. **Bytecode exists** — `eth_getCode` must return real code. `0x` means nothing is
19
- deployed. A 2-byte result is an empty stub.
20
- 2. **The protocol's own API or docs** name that address, on that chain, today. For
21
- aggregators, query their API (e.g. LI.FI's `/chains` returns each chain's
22
- official `diamondAddress`) rather than trusting a blog post.
23
- 3. **Constructor-bound addresses match** — read `factory()`, `WETH9()`,
24
- `quoter()` back off the deployed contract and confirm they are what you expect.
25
- 4. **Per chain, separately.** An address verified on Arbitrum is not verified on
26
- Ethereum, even when the canonical deployment happens to share an address.
27
-
28
- Record **how and when** you verified, in a comment next to the entry. The audit
29
- trail has to outlive your session.
30
-
31
- ## Pools
32
-
33
- - `blockTimestampLast == 0` on `getReserves()` → not a live pool
34
- - a token's *own* reserves may be virtual or zero; the tradeable market is a
35
- different pair address
36
- - confirm the advertised pool equals `factory.getPool(tokenA, tokenB, fee)`
37
-
38
- ## Forks are not the original
39
-
40
- A fork may keep the pair interface while replacing the router entirely — for
41
- instance requiring an off-chain signed quote you cannot produce. Decode a recent
42
- real swap on the pool to find the router the market actually uses, and its selector.
43
-
44
- A non-standard selector is a signal, not a curiosity.
45
-
46
- ## Approvals
47
-
48
- Approve the **exact amount**. Never default to unlimited. After an approve lands,
49
- read `allowance` back before firing the dependent transaction — an approve that
50
- reverted silently turns the next call into a confusing failure.
51
-
52
- ## Fail closed
53
-
54
- An unverified chain or venue stays blocked. That is a safe state, not a gap to route
55
- around. Never allowlist an address you found only from a model's answer.
@@ -1,58 +0,0 @@
1
- ---
2
- name: oracle-desk
3
- description: Use when routing a crypto request to the right lane or comparing options across chains. The router's operating manual.
4
- ---
5
-
6
- # Routing the desk
7
-
8
- ## Decide the lane before doing the work
9
-
10
- Every crypto request gets a routing decision first:
11
-
12
- 1. **Which chain?** If the request names a token but not a chain, resolve the
13
- token's home chain (DexScreener search via the data plane). Do not guess.
14
- 2. **Which lane owns it?** Venue lanes own their venue. Cross-chain comparison is
15
- yours.
16
- 3. **Is it multi-chain?** Then quote each option yourself and synthesize. Do not
17
- ask one venue lane to opine on another's chain.
18
- 4. **Still ambiguous?** Ask. A wrong chain assumption produces confidently wrong
19
- numbers.
20
-
21
- ## Comparing chains honestly
22
-
23
- When asked "which is cheaper" or "where should this go," the comparison must be
24
- like-for-like:
25
-
26
- - quote the **same notional** on each chain, not the same token amount
27
- - include **gas in the same unit** (USD), because 0.001 ETH means different things
28
- on mainnet and an L2
29
- - include **bridge cost and time** if the funds aren't already there
30
- - include **price impact at that size**, not the headline mid
31
- - note **liquidity depth** — the cheapest venue at $100 is often not cheapest at
32
- $50k
33
-
34
- A comparison that ignores bridging or impact is a wrong answer dressed as a table.
35
-
36
- ## Capability tiers are not interchangeable
37
-
38
- The data catalog labels each provider honestly. Respect the label:
39
-
40
- | Tier | Means |
41
- |---|---|
42
- | `read-only` | data only, no execution claim whatsoever |
43
- | `quote-only` | can price a route; no reviewed transaction builder |
44
- | `prepare` | returns a policy-bound unsigned transaction |
45
- | `intent` | returns a typed-data order to sign, not a transaction |
46
-
47
- **API coverage ≠ execution support ≠ live trading support.** When asked "can we
48
- trade X," answer with the tier, not yes/no.
49
-
50
- ## Don't invent chain facts
51
-
52
- If a number did not come from a live read this turn, it is `unknown`. Not "roughly,"
53
- not "typically." Stale liquidity and stale gas are how people get filled badly.
54
-
55
- ## Synthesis
56
-
57
- Lead with the recommendation and the number. Then the two or three facts that drove
58
- it. Then the risk that would change the answer. State confidence explicitly.
@@ -1,38 +0,0 @@
1
- ---
2
- name: oracle-dex-launch
3
- description: Use when designing, reviewing, or preparing a DEX, AMM pool, router/factory fork, token launch, or liquidity bootstrap.
4
- ---
5
-
6
- # DEX / AMM launch builder
7
-
8
- Use this for launching or auditing token markets, DEX forks, pools, routing surfaces,
9
- liquidity bootstraps, and trading UIs.
10
-
11
- ## Decide the AMM shape
12
-
13
- - V2 constant-product pair: factory, router, WETH/wrapped native, fee, LP token.
14
- - V3 concentrated liquidity: factory, position manager, quoter, router, fee tiers.
15
- - Stable-swap / Curve-like: pool invariant, amplification, coins, router.
16
- - Aggregator frontend: quote source, destination allowlist, minOut/deadline guard.
17
-
18
- Do not bend one adapter to fit another shape. V2, V3, stable-swap, and aggregator
19
- routes need separate encoders and tests.
20
-
21
- ## Launch checklist
22
-
23
- 1. Verify canonical factory/router/quoter addresses from official sources and live
24
- functional probes, not names or codesize alone.
25
- 2. Define initial liquidity, starting price, lock/burn policy, and treasury role.
26
- 3. Simulate buy and sell, including exact approval path and round-trip retention.
27
- 4. Enforce nonzero minOut, short deadlines, route attestation, and gas caps.
28
- 5. Record per-chain provenance next to any allowlisted venue address.
29
- 6. Publish honest risk labels: `LIVE`, `UNKNOWN`, `UNAVAILABLE`, or `FAIL`.
30
-
31
- ## Hard rules
32
-
33
- - No fake TVL, wash-volume instructions, hidden tax switches, or owner-only sell
34
- bypasses.
35
- - A successful buy quote does not prove sellability. Test exits first.
36
- - A router on one chain is not verified on another chain.
37
- - Preparing a pool deploy is not live support; live support needs simulation,
38
- allowlist, signer-bound policy, receipt verification, and docs.
@@ -1,69 +0,0 @@
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.
@@ -1,57 +0,0 @@
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.
@@ -1,56 +0,0 @@
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.
@@ -1,73 +0,0 @@
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.