@oracle-agent/oracle 0.11.0 → 0.13.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 (487) hide show
  1. package/LICENSE +115 -201
  2. package/README.md +13 -516
  3. package/bin/oracle.mjs +19 -27
  4. package/package.json +15 -98
  5. package/CONTRIBUTING.md +0 -98
  6. package/SECURITY.md +0 -89
  7. package/SETUP.md +0 -381
  8. package/artifacts/inscription/oracle-was-here-preview.png +0 -0
  9. package/artifacts/inscription/oracle-was-here.svg +0 -1
  10. package/artifacts/specialist-packs/oracle-full-crypto.json +0 -295
  11. package/bin/desk-server.mjs +0 -440
  12. package/bin/oracle-data-mcp.mjs +0 -1019
  13. package/bin/oracle-init.mjs +0 -496
  14. package/bin/oracle-public-server.mjs +0 -36
  15. package/bin/oracle-route.mjs +0 -254
  16. package/bin/oracle-scan.mjs +0 -192
  17. package/bin/oracle-upgrade.mjs +0 -42
  18. package/docs/adding-a-chain.md +0 -229
  19. package/docs/architecture.md +0 -138
  20. package/docs/cli.md +0 -47
  21. package/docs/connectors.md +0 -13
  22. package/docs/oracle-pack-standard.md +0 -29
  23. package/docs/profiles.md +0 -151
  24. package/docs/public-surface.md +0 -133
  25. package/examples/add-a-chain.mjs +0 -65
  26. package/examples/oracle-pack-template.mjs +0 -38
  27. package/examples/research-a-token.mjs +0 -70
  28. package/plugins/oracle-owner-gate/__init__.py +0 -227
  29. package/plugins/oracle-owner-gate/plugin.yaml +0 -9
  30. package/profiles/_template/SOUL.md +0 -54
  31. package/profiles/_template/profile.json +0 -22
  32. package/profiles/bitcoin-agent/SOUL.md +0 -31
  33. package/profiles/bitcoin-agent/profile.json +0 -32
  34. package/profiles/hyperliquid-agent/SOUL.md +0 -34
  35. package/profiles/hyperliquid-agent/profile.json +0 -37
  36. package/profiles/oracle/SOUL.md +0 -107
  37. package/profiles/oracle/profile.json +0 -39
  38. package/profiles/polymarket-agent/SOUL.md +0 -35
  39. package/profiles/polymarket-agent/profile.json +0 -34
  40. package/profiles/profile.schema.json +0 -90
  41. package/profiles/protocol-builder/SOUL.md +0 -57
  42. package/profiles/protocol-builder/profile.json +0 -39
  43. package/profiles/robinhood-agent/SOUL.md +0 -53
  44. package/profiles/robinhood-agent/profile.json +0 -40
  45. package/profiles/solana-agent/SOUL.md +0 -37
  46. package/profiles/solana-agent/profile.json +0 -37
  47. package/profiles/stable-agent/SOUL.md +0 -43
  48. package/profiles/stable-agent/profile.json +0 -37
  49. package/protocols/templates/safe-erc20/SECURITY.md +0 -16
  50. package/protocols/templates/safe-erc20/foundry.toml +0 -12
  51. package/protocols/templates/safe-erc20/remappings.txt +0 -2
  52. package/protocols/templates/safe-erc20/src/SafeERC20.sol +0 -53
  53. package/protocols/templates/safe-erc20/test/SafeERC20.t.sol +0 -72
  54. package/public/agent-connect/app.js +0 -84
  55. package/public/agent-connect/index.html +0 -83
  56. package/public/agent-connect/styles.css +0 -70
  57. package/public/index.html +0 -12
  58. package/public/oracle-console/app.js +0 -272
  59. package/public/oracle-console/bitcoin-wallets.js +0 -206
  60. package/public/oracle-console/index.html +0 -91
  61. package/public/oracle-console/styles.css +0 -239
  62. package/public/oracle-splash/assets/cli-chain-hyperliquid.jpg +0 -0
  63. package/public/oracle-splash/assets/hero/orb.avif +0 -0
  64. package/public/oracle-splash/assets/hero/orb.webm +0 -0
  65. package/public/oracle-splash/assets/llms/claude.svg +0 -1
  66. package/public/oracle-splash/assets/llms/codex-icon.svg +0 -1
  67. package/public/oracle-splash/assets/llms/codex.svg +0 -1
  68. package/public/oracle-splash/assets/llms/cursor-icon.svg +0 -12
  69. package/public/oracle-splash/assets/llms/cursor.svg +0 -17
  70. package/public/oracle-splash/assets/llms/deepseek.svg +0 -1
  71. package/public/oracle-splash/assets/llms/gemini-icon.svg +0 -1
  72. package/public/oracle-splash/assets/llms/gemini.svg +0 -1
  73. package/public/oracle-splash/assets/llms/grok.svg +0 -8
  74. package/public/oracle-splash/assets/llms/hermes.png +0 -0
  75. package/public/oracle-splash/assets/llms/kimi-icon.svg +0 -1
  76. package/public/oracle-splash/assets/llms/kimi.svg +0 -1
  77. package/public/oracle-splash/assets/llms/manus.svg +0 -18
  78. package/public/oracle-splash/assets/llms/openclaw.svg +0 -22
  79. package/public/oracle-splash/assets/llms/perplexity.svg +0 -1
  80. package/public/oracle-splash/assets/llms/qwen.svg +0 -1
  81. package/public/oracle-splash/assets/llms/windsurf.svg +0 -1
  82. package/public/oracle-splash/assets/protocols/abcdex.png +0 -0
  83. package/public/oracle-splash/assets/protocols/across.png +0 -0
  84. package/public/oracle-splash/assets/protocols/aerodrome.png +0 -0
  85. package/public/oracle-splash/assets/protocols/balancer.png +0 -0
  86. package/public/oracle-splash/assets/protocols/cowswap.png +0 -0
  87. package/public/oracle-splash/assets/protocols/curve.png +0 -0
  88. package/public/oracle-splash/assets/protocols/dreamcash.png +0 -0
  89. package/public/oracle-splash/assets/protocols/felix.png +0 -0
  90. package/public/oracle-splash/assets/protocols/gmx.png +0 -0
  91. package/public/oracle-splash/assets/protocols/hyena.png +0 -0
  92. package/public/oracle-splash/assets/protocols/hyperbeat.png +0 -0
  93. package/public/oracle-splash/assets/protocols/hyperliquid.png +0 -0
  94. package/public/oracle-splash/assets/protocols/hyperswap.png +0 -0
  95. package/public/oracle-splash/assets/protocols/jupiter.png +0 -0
  96. package/public/oracle-splash/assets/protocols/kinetiq.png +0 -0
  97. package/public/oracle-splash/assets/protocols/lfj.png +0 -0
  98. package/public/oracle-splash/assets/protocols/lifi.png +0 -0
  99. package/public/oracle-splash/assets/protocols/magic-eden.png +0 -0
  100. package/public/oracle-splash/assets/protocols/morpho.png +0 -0
  101. package/public/oracle-splash/assets/protocols/odos.png +0 -0
  102. package/public/oracle-splash/assets/protocols/oneinch.png +0 -0
  103. package/public/oracle-splash/assets/protocols/opensea.png +0 -0
  104. package/public/oracle-splash/assets/protocols/pancakeswap.png +0 -0
  105. package/public/oracle-splash/assets/protocols/paragon.png +0 -0
  106. package/public/oracle-splash/assets/protocols/paraswap.png +0 -0
  107. package/public/oracle-splash/assets/protocols/pendle.png +0 -0
  108. package/public/oracle-splash/assets/protocols/polymarket.png +0 -0
  109. package/public/oracle-splash/assets/protocols/quickswap.png +0 -0
  110. package/public/oracle-splash/assets/protocols/relay.png +0 -0
  111. package/public/oracle-splash/assets/protocols/stargate.png +0 -0
  112. package/public/oracle-splash/assets/protocols/tradexyz.png +0 -0
  113. package/public/oracle-splash/assets/protocols/uniswap.png +0 -0
  114. package/public/oracle-splash/assets/protocols/velodrome.png +0 -0
  115. package/public/oracle-splash/assets/protocols/ventuals.png +0 -0
  116. package/public/oracle-splash/assets/wordmarks/across-icon.webp +0 -0
  117. package/public/oracle-splash/assets/wordmarks/across.svg +0 -4
  118. package/public/oracle-splash/assets/wordmarks/aerodrome.svg +0 -23
  119. package/public/oracle-splash/assets/wordmarks/balancer.svg +0 -3
  120. package/public/oracle-splash/assets/wordmarks/cowswap.svg +0 -1
  121. package/public/oracle-splash/assets/wordmarks/curve.png +0 -0
  122. package/public/oracle-splash/assets/wordmarks/gmx.svg +0 -13
  123. package/public/oracle-splash/assets/wordmarks/hop-icon.webp +0 -0
  124. package/public/oracle-splash/assets/wordmarks/hyena.svg +0 -7
  125. package/public/oracle-splash/assets/wordmarks/hyperliquid.svg +0 -21
  126. package/public/oracle-splash/assets/wordmarks/hyperswap.svg +0 -13
  127. package/public/oracle-splash/assets/wordmarks/jupiter.svg +0 -35
  128. package/public/oracle-splash/assets/wordmarks/kinetiq.svg +0 -1
  129. package/public/oracle-splash/assets/wordmarks/lfj.webp +0 -0
  130. package/public/oracle-splash/assets/wordmarks/lifi.png +0 -0
  131. package/public/oracle-splash/assets/wordmarks/magic-eden.svg +0 -1
  132. package/public/oracle-splash/assets/wordmarks/markets.svg +0 -1
  133. package/public/oracle-splash/assets/wordmarks/morpho.svg +0 -1
  134. package/public/oracle-splash/assets/wordmarks/odos.svg +0 -3
  135. package/public/oracle-splash/assets/wordmarks/oneinch-icon.webp +0 -0
  136. package/public/oracle-splash/assets/wordmarks/oneinch.svg +0 -6
  137. package/public/oracle-splash/assets/wordmarks/opensea-icon.svg +0 -17
  138. package/public/oracle-splash/assets/wordmarks/opensea.svg +0 -1
  139. package/public/oracle-splash/assets/wordmarks/outcome.svg +0 -16
  140. package/public/oracle-splash/assets/wordmarks/pancakeswap.svg +0 -18
  141. package/public/oracle-splash/assets/wordmarks/paragon.svg +0 -9
  142. package/public/oracle-splash/assets/wordmarks/paraswap.svg +0 -16
  143. package/public/oracle-splash/assets/wordmarks/pendle.png +0 -0
  144. package/public/oracle-splash/assets/wordmarks/polymarket.png +0 -0
  145. package/public/oracle-splash/assets/wordmarks/quickswap.png +0 -0
  146. package/public/oracle-splash/assets/wordmarks/relay.svg +0 -8
  147. package/public/oracle-splash/assets/wordmarks/satflow-icon.png +0 -0
  148. package/public/oracle-splash/assets/wordmarks/stargate-icon.webp +0 -0
  149. package/public/oracle-splash/assets/wordmarks/stargate.svg +0 -15
  150. package/public/oracle-splash/assets/wordmarks/uniswap.svg +0 -18
  151. package/public/oracle-splash/assets/wordmarks/velodrome.svg +0 -84
  152. package/public/oracle-splash/assets/wordmarks/xyz.svg +0 -12
  153. package/public/oracle-splash/assets/wordmarks/zerox-icon.webp +0 -0
  154. package/public/oracle-splash/brand/aave.webp +0 -0
  155. package/public/oracle-splash/brand/aavev2.webp +0 -0
  156. package/public/oracle-splash/brand/aborean.webp +0 -0
  157. package/public/oracle-splash/brand/across.webp +0 -0
  158. package/public/oracle-splash/brand/aerodrome.webp +0 -0
  159. package/public/oracle-splash/brand/afi.webp +0 -0
  160. package/public/oracle-splash/brand/arcus.webp +0 -0
  161. package/public/oracle-splash/brand/aster.webp +0 -0
  162. package/public/oracle-splash/brand/avant.webp +0 -0
  163. package/public/oracle-splash/brand/balancer.webp +0 -0
  164. package/public/oracle-splash/brand/beefy.webp +0 -0
  165. package/public/oracle-splash/brand/benqi.webp +0 -0
  166. package/public/oracle-splash/brand/bestinslot.ico +0 -0
  167. package/public/oracle-splash/brand/bitfi.webp +0 -0
  168. package/public/oracle-splash/brand/bonkswap.webp +0 -0
  169. package/public/oracle-splash/brand/bouncebit.webp +0 -0
  170. package/public/oracle-splash/brand/camelot.webp +0 -0
  171. package/public/oracle-splash/brand/compound.webp +0 -0
  172. package/public/oracle-splash/brand/concrete.webp +0 -0
  173. package/public/oracle-splash/brand/cow.webp +0 -0
  174. package/public/oracle-splash/brand/curve.webp +0 -0
  175. package/public/oracle-splash/brand/derive.webp +0 -0
  176. package/public/oracle-splash/brand/dolomite.webp +0 -0
  177. package/public/oracle-splash/brand/eigenlayer.webp +0 -0
  178. package/public/oracle-splash/brand/ekubo.webp +0 -0
  179. package/public/oracle-splash/brand/ethena.webp +0 -0
  180. package/public/oracle-splash/brand/etherfi.webp +0 -0
  181. package/public/oracle-splash/brand/etherfiborrow.webp +0 -0
  182. package/public/oracle-splash/brand/felix.webp +0 -0
  183. package/public/oracle-splash/brand/fluid.webp +0 -0
  184. package/public/oracle-splash/brand/fluxbeam.webp +0 -0
  185. package/public/oracle-splash/brand/folks.webp +0 -0
  186. package/public/oracle-splash/brand/fortyacres.webp +0 -0
  187. package/public/oracle-splash/brand/gainsnetwork.webp +0 -0
  188. package/public/oracle-splash/brand/gassss.webp +0 -0
  189. package/public/oracle-splash/brand/gmx.webp +0 -0
  190. package/public/oracle-splash/brand/harmonix.webp +0 -0
  191. package/public/oracle-splash/brand/hlorderbook.webp +0 -0
  192. package/public/oracle-splash/brand/hlp.webp +0 -0
  193. package/public/oracle-splash/brand/hop.webp +0 -0
  194. package/public/oracle-splash/brand/hyperbeat.webp +0 -0
  195. package/public/oracle-splash/brand/hyperlend.webp +0 -0
  196. package/public/oracle-splash/brand/hyperliquid.webp +0 -0
  197. package/public/oracle-splash/brand/hyperliquidhpl.webp +0 -0
  198. package/public/oracle-splash/brand/hyperliquidspot.webp +0 -0
  199. package/public/oracle-splash/brand/hyperswap.webp +0 -0
  200. package/public/oracle-splash/brand/hypha.webp +0 -0
  201. package/public/oracle-splash/brand/joedex.webp +0 -0
  202. package/public/oracle-splash/brand/jupiter.webp +0 -0
  203. package/public/oracle-splash/brand/kelp.webp +0 -0
  204. package/public/oracle-splash/brand/kinetiq.webp +0 -0
  205. package/public/oracle-splash/brand/kmhype.webp +0 -0
  206. package/public/oracle-splash/brand/kona.webp +0 -0
  207. package/public/oracle-splash/brand/konalend.webp +0 -0
  208. package/public/oracle-splash/brand/lfj.webp +0 -0
  209. package/public/oracle-splash/brand/lido.webp +0 -0
  210. package/public/oracle-splash/brand/lifi.webp +0 -0
  211. package/public/oracle-splash/brand/lighter.webp +0 -0
  212. package/public/oracle-splash/brand/lista.webp +0 -0
  213. package/public/oracle-splash/brand/loopedhype.webp +0 -0
  214. package/public/oracle-splash/brand/lorenzo.webp +0 -0
  215. package/public/oracle-splash/brand/magic-eden.webp +0 -0
  216. package/public/oracle-splash/brand/magiceden.webp +0 -0
  217. package/public/oracle-splash/brand/mempool.png +0 -0
  218. package/public/oracle-splash/brand/meteora.webp +0 -0
  219. package/public/oracle-splash/brand/morpho.webp +0 -0
  220. package/public/oracle-splash/brand/myriad.webp +0 -0
  221. package/public/oracle-splash/brand/noxa.webp +0 -0
  222. package/public/oracle-splash/brand/odos.webp +0 -0
  223. package/public/oracle-splash/brand/oneinch.webp +0 -0
  224. package/public/oracle-splash/brand/openbook.webp +0 -0
  225. package/public/oracle-splash/brand/opensea.webp +0 -0
  226. package/public/oracle-splash/brand/orca.webp +0 -0
  227. package/public/oracle-splash/brand/ordinals.png +0 -0
  228. package/public/oracle-splash/brand/ostium.webp +0 -0
  229. package/public/oracle-splash/brand/pancakeswap.webp +0 -0
  230. package/public/oracle-splash/brand/pendle.webp +0 -0
  231. package/public/oracle-splash/brand/perena.webp +0 -0
  232. package/public/oracle-splash/brand/pharaoh.webp +0 -0
  233. package/public/oracle-splash/brand/phoenix.webp +0 -0
  234. package/public/oracle-splash/brand/polymarket.webp +0 -0
  235. package/public/oracle-splash/brand/polynomial.webp +0 -0
  236. package/public/oracle-splash/brand/projectx.webp +0 -0
  237. package/public/oracle-splash/brand/pumpfun.webp +0 -0
  238. package/public/oracle-splash/brand/quickswap.webp +0 -0
  239. package/public/oracle-splash/brand/rain.webp +0 -0
  240. package/public/oracle-splash/brand/raydium.webp +0 -0
  241. package/public/oracle-splash/brand/relay.webp +0 -0
  242. package/public/oracle-splash/brand/rocketpool.webp +0 -0
  243. package/public/oracle-splash/brand/saber.webp +0 -0
  244. package/public/oracle-splash/brand/sakuraswap.webp +0 -0
  245. package/public/oracle-splash/brand/sanctum.webp +0 -0
  246. package/public/oracle-splash/brand/satflow.png +0 -0
  247. package/public/oracle-splash/brand/sierra.webp +0 -0
  248. package/public/oracle-splash/brand/sky.webp +0 -0
  249. package/public/oracle-splash/brand/solv.webp +0 -0
  250. package/public/oracle-splash/brand/spark.webp +0 -0
  251. package/public/oracle-splash/brand/sparksavings.webp +0 -0
  252. package/public/oracle-splash/brand/sphere.webp +0 -0
  253. package/public/oracle-splash/brand/ssv.webp +0 -0
  254. package/public/oracle-splash/brand/stabble.webp +0 -0
  255. package/public/oracle-splash/brand/stableswap.webp +0 -0
  256. package/public/oracle-splash/brand/stakewise.webp +0 -0
  257. package/public/oracle-splash/brand/stargate.webp +0 -0
  258. package/public/oracle-splash/brand/sthype.webp +0 -0
  259. package/public/oracle-splash/brand/sushiswap.webp +0 -0
  260. package/public/oracle-splash/brand/unisat.png +0 -0
  261. package/public/oracle-splash/brand/uniswap.webp +0 -0
  262. package/public/oracle-splash/brand/uniswapv2.webp +0 -0
  263. package/public/oracle-splash/brand/uniswapv4.webp +0 -0
  264. package/public/oracle-splash/brand/unit.webp +0 -0
  265. package/public/oracle-splash/brand/velodrome.webp +0 -0
  266. package/public/oracle-splash/brand/velora.webp +0 -0
  267. package/public/oracle-splash/brand/venus.webp +0 -0
  268. package/public/oracle-splash/brand/wbeth.webp +0 -0
  269. package/public/oracle-splash/brand/xsy.webp +0 -0
  270. package/public/oracle-splash/brand/yieldyak.webp +0 -0
  271. package/public/oracle-splash/brand/zerobase.webp +0 -0
  272. package/public/oracle-splash/brand/zerox.webp +0 -0
  273. package/public/oracle-splash/favicon.ico +0 -0
  274. package/public/oracle-splash/favicon.svg +0 -6
  275. package/public/oracle-splash/index.html +0 -1558
  276. package/public/oracle-splash/mesh-graph.png +0 -0
  277. package/public/oracle-splash/mesh-graph.svg +0 -216
  278. package/scripts/adversarial-bench.mjs +0 -114
  279. package/scripts/build-inscription.py +0 -230
  280. package/scripts/check-doc-drift.mjs +0 -123
  281. package/scripts/check-test-count.mjs +0 -105
  282. package/scripts/e2e-hl-markets.mjs +0 -21
  283. package/scripts/e2e-hl-perps.mjs +0 -48
  284. package/scripts/e2e-hypercore-staking.mjs +0 -128
  285. package/scripts/e2e-solana-bitcoin.mjs +0 -183
  286. package/scripts/protocol-template-gate.mjs +0 -15
  287. package/scripts/public-api-scan.mjs +0 -23
  288. package/scripts/secret-scan.mjs +0 -181
  289. package/scripts/verify-v3-venues.mjs +0 -192
  290. package/skills/balance/SKILL.md +0 -176
  291. package/skills/oracle-action-semantics/SKILL.md +0 -40
  292. package/skills/oracle-best-execution/SKILL.md +0 -127
  293. package/skills/oracle-bitcoin/SKILL.md +0 -53
  294. package/skills/oracle-chain-graphs-telegram-cards/SKILL.md +0 -59
  295. package/skills/oracle-chat/SKILL.md +0 -61
  296. package/skills/oracle-chat/chain.SKILL.md +0 -31
  297. package/skills/oracle-chat/setup.SKILL.md +0 -37
  298. package/skills/oracle-circuit-breaker/SKILL.md +0 -51
  299. package/skills/oracle-contract-research/SKILL.md +0 -55
  300. package/skills/oracle-desk/SKILL.md +0 -58
  301. package/skills/oracle-dex-launch/SKILL.md +0 -38
  302. package/skills/oracle-grants/SKILL.md +0 -69
  303. package/skills/oracle-hypercore-staking/SKILL.md +0 -57
  304. package/skills/oracle-hyperliquid/SKILL.md +0 -56
  305. package/skills/oracle-meme-token-sniper/SKILL.md +0 -73
  306. package/skills/oracle-multichain-nft-launch/SKILL.md +0 -338
  307. package/skills/oracle-multichain-token-launch/SKILL.md +0 -300
  308. package/skills/oracle-nft-gacha-launch/SKILL.md +0 -48
  309. package/skills/oracle-nft-mint-gas-war/SKILL.md +0 -63
  310. package/skills/oracle-polymarket/SKILL.md +0 -60
  311. package/skills/oracle-protocol-builder/SKILL.md +0 -59
  312. package/skills/oracle-protocol-security/SKILL.md +0 -60
  313. package/skills/oracle-public-product/SKILL.md +0 -44
  314. package/skills/oracle-receipts/SKILL.md +0 -52
  315. package/skills/oracle-rfq-tokenized-assets/SKILL.md +0 -69
  316. package/skills/oracle-smart-wallet-scanner/SKILL.md +0 -49
  317. package/skills/oracle-solana/SKILL.md +0 -65
  318. package/skills/oracle-solana-nft/SKILL.md +0 -54
  319. package/skills/oracle-token-research/SKILL.md +0 -67
  320. package/skins/oracle.yaml +0 -56
  321. package/src/action-receipts.mjs +0 -265
  322. package/src/action-semantics.mjs +0 -62
  323. package/src/address-book.mjs +0 -208
  324. package/src/agent-auth.mjs +0 -206
  325. package/src/approval-guard.mjs +0 -282
  326. package/src/attestation-secret.mjs +0 -88
  327. package/src/audit-log.mjs +0 -196
  328. package/src/auth/oauth.mjs +0 -672
  329. package/src/auto-slippage.mjs +0 -378
  330. package/src/capability-posture.mjs +0 -125
  331. package/src/chains.mjs +0 -62
  332. package/src/cli/chain-catalog.mjs +0 -215
  333. package/src/cli/chain-state.mjs +0 -74
  334. package/src/cli/commands/auth.mjs +0 -193
  335. package/src/cli/commands/bootstrap.mjs +0 -87
  336. package/src/cli/commands/chain.mjs +0 -143
  337. package/src/cli/commands/chat.mjs +0 -434
  338. package/src/cli/commands/credential.mjs +0 -9
  339. package/src/cli/commands/data-mcp.mjs +0 -18
  340. package/src/cli/commands/data.mjs +0 -75
  341. package/src/cli/commands/doctor.mjs +0 -136
  342. package/src/cli/commands/help.mjs +0 -7
  343. package/src/cli/commands/init.mjs +0 -27
  344. package/src/cli/commands/mcp.mjs +0 -142
  345. package/src/cli/commands/model.mjs +0 -99
  346. package/src/cli/commands/prepare.mjs +0 -12
  347. package/src/cli/commands/public.mjs +0 -20
  348. package/src/cli/commands/route.mjs +0 -12
  349. package/src/cli/commands/runner.mjs +0 -9
  350. package/src/cli/commands/scan.mjs +0 -12
  351. package/src/cli/commands/setup.mjs +0 -275
  352. package/src/cli/commands/sign.mjs +0 -21
  353. package/src/cli/commands/signer.mjs +0 -9
  354. package/src/cli/commands/upgrade.mjs +0 -12
  355. package/src/cli/commands/vault.mjs +0 -9
  356. package/src/cli/commands/version.mjs +0 -22
  357. package/src/cli/first-run.mjs +0 -23
  358. package/src/cli/kernel.mjs +0 -239
  359. package/src/cli/mcp-targets/chatgpt.mjs +0 -51
  360. package/src/cli/mcp-targets/claude-code.mjs +0 -39
  361. package/src/cli/mcp-targets/claude-desktop.mjs +0 -24
  362. package/src/cli/mcp-targets/codex.mjs +0 -41
  363. package/src/cli/mcp-targets/shared.mjs +0 -61
  364. package/src/cli/messaging-platforms.mjs +0 -209
  365. package/src/cli/model-config.mjs +0 -70
  366. package/src/cli/operator-dispatch.mjs +0 -258
  367. package/src/cli/oracle-harness.py +0 -415
  368. package/src/cli/paths.mjs +0 -83
  369. package/src/cli/runtime.mjs +0 -351
  370. package/src/cli/setup-state.mjs +0 -168
  371. package/src/cli/spawn-child.mjs +0 -43
  372. package/src/data/catalog.mjs +0 -585
  373. package/src/data/desk-data.mjs +0 -695
  374. package/src/data/http.mjs +0 -253
  375. package/src/data/provider-endpoint.mjs +0 -94
  376. package/src/data/providers/aerodrome.mjs +0 -245
  377. package/src/data/providers/balancer.mjs +0 -209
  378. package/src/data/providers/bitcoin-esplora.mjs +0 -216
  379. package/src/data/providers/bitcoin-meta.mjs +0 -378
  380. package/src/data/providers/blockscout.mjs +0 -14
  381. package/src/data/providers/bridges.mjs +0 -242
  382. package/src/data/providers/cowswap.mjs +0 -415
  383. package/src/data/providers/curve.mjs +0 -201
  384. package/src/data/providers/defillama.mjs +0 -88
  385. package/src/data/providers/dexscreener.mjs +0 -43
  386. package/src/data/providers/evm-rpc.mjs +0 -225
  387. package/src/data/providers/geckoterminal.mjs +0 -34
  388. package/src/data/providers/gmx.mjs +0 -496
  389. package/src/data/providers/hl-assets.mjs +0 -165
  390. package/src/data/providers/hl-info.mjs +0 -108
  391. package/src/data/providers/hl-markets.mjs +0 -210
  392. package/src/data/providers/hl-outcome.mjs +0 -61
  393. package/src/data/providers/hl-perps.mjs +0 -387
  394. package/src/data/providers/hl-staking.mjs +0 -353
  395. package/src/data/providers/hl-ws.mjs +0 -119
  396. package/src/data/providers/hyperevm-dex.mjs +0 -49
  397. package/src/data/providers/jupiter-venues.mjs +0 -119
  398. package/src/data/providers/jupiter.mjs +0 -315
  399. package/src/data/providers/lifi.mjs +0 -151
  400. package/src/data/providers/magiceden-sol.mjs +0 -406
  401. package/src/data/providers/morpho.mjs +0 -177
  402. package/src/data/providers/nft-gallery.mjs +0 -163
  403. package/src/data/providers/nft-portfolio.mjs +0 -494
  404. package/src/data/providers/odos.mjs +0 -156
  405. package/src/data/providers/oneinch.mjs +0 -174
  406. package/src/data/providers/opensea-multichain.mjs +0 -136
  407. package/src/data/providers/opensea-nft.mjs +0 -371
  408. package/src/data/providers/paraswap.mjs +0 -118
  409. package/src/data/providers/pendle.mjs +0 -188
  410. package/src/data/providers/poly-clob.mjs +0 -283
  411. package/src/data/providers/poly-public.mjs +0 -96
  412. package/src/data/providers/poly-ws.mjs +0 -103
  413. package/src/data/providers/portfolio-history.mjs +0 -394
  414. package/src/data/providers/portfolio.mjs +0 -594
  415. package/src/data/providers/rfq.mjs +0 -15
  416. package/src/data/providers/rh-agent.mjs +0 -59
  417. package/src/data/providers/satflow.mjs +0 -341
  418. package/src/data/providers/signed-material-guard.mjs +0 -108
  419. package/src/data/providers/solana-rpc.mjs +0 -197
  420. package/src/data/providers/uniswap-v3.mjs +0 -349
  421. package/src/data/providers/uniswap-v4.mjs +0 -414
  422. package/src/data/providers/zerox.mjs +0 -167
  423. package/src/data/public-api-scan.mjs +0 -61
  424. package/src/data/quote-placeholder.mjs +0 -31
  425. package/src/exact-integer.mjs +0 -72
  426. package/src/exec-policy.mjs +0 -455
  427. package/src/flags.mjs +0 -15
  428. package/src/fresh-window.mjs +0 -76
  429. package/src/gmx-attestation.mjs +0 -176
  430. package/src/index.mjs +0 -100
  431. package/src/nft-gas-war-guard.mjs +0 -139
  432. package/src/onboarding/agent-keys.mjs +0 -161
  433. package/src/onboarding/harness-configs.mjs +0 -102
  434. package/src/onboarding/index.mjs +0 -18
  435. package/src/onboarding/tiers.mjs +0 -139
  436. package/src/oracle-env.mjs +0 -47
  437. package/src/portfolio-risk.mjs +0 -170
  438. package/src/prepare-envelope.mjs +0 -204
  439. package/src/profile-upgrade.mjs +0 -277
  440. package/src/protocol-execution.mjs +0 -84
  441. package/src/protocol-templates/gate.mjs +0 -179
  442. package/src/protocol-templates/prepare-deploy.mjs +0 -81
  443. package/src/public-api/buzz-integration.mjs +0 -256
  444. package/src/public-api/connect-agent.mjs +0 -416
  445. package/src/public-api/grants.mjs +0 -142
  446. package/src/public-api/http.mjs +0 -389
  447. package/src/public-control/aa-adapter.mjs +0 -402
  448. package/src/public-control/build-registry.mjs +0 -227
  449. package/src/public-control/bundler-client.mjs +0 -357
  450. package/src/public-control/grant-indexer.mjs +0 -296
  451. package/src/public-control/policy-render.mjs +0 -69
  452. package/src/public-control/policy-schema.mjs +0 -318
  453. package/src/public-control/runtime-config.mjs +0 -275
  454. package/src/public-control/session-key-model.mjs +0 -374
  455. package/src/public-control/session-orchestrator.mjs +0 -412
  456. package/src/rfq/intent.mjs +0 -180
  457. package/src/rfq/sources.mjs +0 -181
  458. package/src/route-attestation.mjs +0 -132
  459. package/src/router/best-execution.mjs +0 -326
  460. package/src/router/index.mjs +0 -226
  461. package/src/router/prepare-bridge.mjs +0 -289
  462. package/src/router/prepare-route.mjs +0 -398
  463. package/src/router/proposal.mjs +0 -311
  464. package/src/router/risk-classifier.mjs +0 -119
  465. package/src/router/route-sources.mjs +0 -364
  466. package/src/scanner/chains.config.mjs +0 -430
  467. package/src/scanner/contract.mjs +0 -270
  468. package/src/scanner/evm-scanner.mjs +0 -394
  469. package/src/scanner/index.mjs +0 -9
  470. package/src/scanner/v2-venue.mjs +0 -335
  471. package/src/scanner/v3-venue.mjs +0 -290
  472. package/src/scopes.mjs +0 -44
  473. package/src/sell-simulation.mjs +0 -167
  474. package/src/signals/engine.mjs +0 -146
  475. package/src/signals/index.mjs +0 -1
  476. package/src/token-transfer-guard.mjs +0 -188
  477. package/src/tui/app.mjs +0 -438
  478. package/src/tui/backend.mjs +0 -145
  479. package/src/tui/format.mjs +0 -272
  480. package/src/tui/gateway-client.mjs +0 -177
  481. package/src/tui/input.mjs +0 -501
  482. package/src/tui/renderer.mjs +0 -443
  483. package/src/tui/standalone-client.mjs +0 -666
  484. package/src/tui/theme.mjs +0 -81
  485. package/src/vault-attestation.mjs +0 -146
  486. package/src/venues.mjs +0 -206
  487. package/src/watch-preferences.mjs +0 -85
package/README.md CHANGED
@@ -1,526 +1,23 @@
1
- # Oracle
1
+ # @oracle-agent/oracle
2
2
 
3
- ## Quickstart (unified CLI)
3
+ **This package is a pointer, not the product.**
4
4
 
5
- ```bash
6
- npm i -g @oracle-agent/oracle
7
- oracle # first run sets up its isolated runtime + model
8
- oracle init --apply # lanes + read plane only, no keys
9
- oracle data serve # loopback read/prepare plane on 127.0.0.1:8787
10
- oracle doctor # verify
11
- # optional, explicit second step — signing stays a separate local package:
12
- npm i -g @oracle-agent/operator
13
- oracle sign init
14
- ```
15
-
16
-
17
- **Prepare-only multichain agent control plane.** Policy-bounded intents; your wallet signs.
18
-
19
- Specialist agent profiles, real protocol intents, self-custody by default,
20
- receipts or it didn't happen.
21
-
22
- Built for [Hermes](https://github.com/NousResearch/hermes-agent), the
23
- open-source agent runtime from [Nous Research](https://nousresearch.com), but
24
- Hermes is optional.
25
-
26
- Oracle can run standalone model auth directly with API keys or Claude, Codex,
27
- and Grok OAuth. OAuth credentials use the OS keychain when available, with a
28
- private `0600` local fallback when keychain storage is unavailable.
29
-
30
- This package is **prepare-only**: it never takes a private key and never
31
- broadcasts. For agentic trading with **your** keys on **your** machine, install
32
- the companion [`@oracle-agent/operator`](https://github.com/demi-hl/oracle-operator)
33
- alongside it — same split we run ourselves.
34
-
35
- ---
36
-
37
- ## Start in 5 steps
38
-
39
- Source tree: **oracle `0.11.0`** · **operator `0.7.0`**
40
-
41
- ```bash
42
- # 1) install Oracle's public prepare plane
43
- npm i @oracle-agent/oracle@latest
44
- ```
45
-
46
- ```js
47
- // 2) prepare an artifact (no keys)
48
- import { data } from "@oracle-agent/oracle";
49
- const prepared = await data.call("hl-perps", "prepareOrder", { /* coin, side, size... */ });
50
- ```
51
-
52
- **Path A — self-custody first:** review the prepared artifact and sign it with
53
- the owner/main wallet, browser wallet, smart account, hardware wallet, or
54
- protocol-native wallet. Oracle's public package stops at prepare: your wallet
55
- authorizes and broadcasts.
56
-
57
- ```bash
58
- # 3) optional owner-local operator package for unattended signing on YOUR machine
59
- npm i @oracle-agent/operator@latest
60
-
61
- # 4) put operator keys ONLY on your machine (example: HL/EVM hex key file)
62
- mkdir -p ~/.config/oracle/keys && chmod 700 ~/.config/oracle/keys
63
- # write key, then: npx oracle-vault encrypt ~/.config/oracle/keys/evm.key
64
- export HL_KEY_FILE=~/.config/oracle/keys/evm.key.vault.json
65
- export ORACLE_VAULT_PASSPHRASE='...' # signer shell only — never in the agent chat
66
- ```
67
-
68
- ```js
69
- // Path B — owner-local operator key signs after your app confirms the action
70
- // (same host, your key, your policy; no model or remote agent custody)
71
- import { hlSignAndSubmit } from "@oracle-agent/operator";
72
- await hlSignAndSubmit(prepared, {
73
- keyFile: process.env.HL_KEY_FILE,
74
- userInitiated: true,
75
- });
76
- ```
77
-
78
- ```bash
79
- # 5) recommended agent-process path: run the signer daemon so the agent sees
80
- # only ORACLE_SIGNER_URL + ORACLE_SIGNER_TOKEN, never the vault passphrase.
81
- npx oracle-signer
82
- #
83
- # Daemon signing requires the SAME HMAC secret in the preparer and the signer,
84
- # otherwise every sign fails with "ORACLE_STAMP_HMAC_SECRET missing in signer":
85
- export ORACLE_STAMP_HMAC_SECRET='long-random-secret'
86
- ```
87
-
88
- `ORACLE_AUTONOMOUS_TRADING=1` is only for trusted, owner-controlled direct-exec
89
- code running locally with your policy and caps. It is not a permission bit for a
90
- model or remote agent process; use `oracle-signer` for the agent-facing path.
91
-
92
- Full vault / multi-chain / daemon detail → operator [SETUP](https://github.com/demi-hl/oracle-operator/blob/main/SETUP.md).
93
-
94
- ---
95
-
96
- ## What Oracle is
97
-
98
- Most "AI crypto agent" projects give a model a hot wallet and hope. Oracle does
99
- the opposite: the model *proposes*, the owner *authorizes*, and the policy layer
100
- decides what may even be asked.
101
-
102
- Three properties define it:
103
-
104
- 1. **Self-custody by default.** The public package never accepts your private
105
- key. It builds unsigned transactions and typed-data intents; your wallet
106
- signs them.
107
- 2. **Bound grants.** A grant is a signed, scoped, expiring permission: max
108
- value, chain, venue, destination allowlist, TTL. Oracle canonicalizes it,
109
- renders it for review, and refuses to prepare anything outside it. Runtime
110
- enforcement is the wallet's or smart account's job — this package never
111
- signs, so it cannot be the thing that stops a transaction.
112
- 3. **Receipts or it didn't happen.** A claim without a transaction hash, a
113
- receipt, and a balance delta is not a result.
114
-
115
- Default posture is `DISARMED`.
116
-
117
- ## Why it's different
118
-
119
- The differentiators are **policy, custody, and receipts** — not a smarter chat
120
- loop.
5
+ Oracle is distributed to [Locals Only](https://opensea.io/collection/locals-only-hyperevm) holders.
6
+ Versions `<=0.12.0` on this registry are deprecated and unmaintained.
121
7
 
122
- | | Typical agent | Oracle |
123
- |---|---|---|
124
- | Custody | house wallet holds keys | user signs, no house custody |
125
- | Authority | prompt-level "be careful" | signed grant: chain, spend, targets, TTL — enforced by your wallet, not by us |
126
- | Destinations | whatever the model emits | reviewed per-chain allowlist, fail-closed |
127
- | Slippage | fixed % | live guard recomputed per leg, hard 100 bps cap |
128
- | Proof | model says "done" | hash + receipt + balance delta or it failed |
129
- | Surface | swap only | swaps, bridges, perps, vaults, yield, NFTs, intents |
8
+ ## Get a build
130
9
 
131
- ## Architecture
10
+ Visit **https://oracle.demi.la**, prove your wallet holds a Locals Only NFT, and install
11
+ the artifact the gate returns:
132
12
 
133
13
  ```
134
- you
135
- |
136
- Task
137
- |
138
- oracle <- routes, never authorizes custody
139
- |
140
- +------+------+------+------+------+------+------+
141
- | | | | | | | |
142
- poly hyper robin solana bitcoin stable protocol
143
- market liquid hood builder
14
+ curl -fL -o oracle.tgz "<link-from-gate>" && npm i -g ./oracle.tgz
144
15
  ```
145
16
 
146
- Each lane is a Hermes **profile**: its own system prompt, skills, memory, and
147
- sessions. The `oracle` lane routes intent to the right specialist. Adding a lane
148
- is adding a directory.
149
-
150
- Three planes, and the boundary between them is mechanically enforced:
151
-
152
- - **Data plane** (public) — read/quote across chains and protocols. No keys.
153
- - **Policy plane** (public) — destination allowlists, slippage guards, route and
154
- vault attestations, grant schema. Holds no keys; constrains what a signer may
155
- be asked to do.
156
- - **Exec plane** (optional companion) - signing and broadcast live in
157
- [`@oracle-agent/operator`](https://github.com/demi-hl/oracle-operator) on
158
- your machine with your key. Not in this package or its npm artifact.
159
-
160
- `test/custody-boundary.test.mjs` walks the import graph and fails if any public
161
- module reaches wallet key material or a house signer. The split is a test, not a
162
- promise.
163
-
164
- ## Coverage
165
-
166
- **11 EVM chains** built in: Ethereum, Optimism, BNB, Polygon, Stable, HyperEVM,
167
- Abstract, Robinhood Chain, Base, Arbitrum, Avalanche. Plus Solana and Bitcoin L1
168
- lanes. Solana covers Jupiter quote/prepare, SPL account research, live
169
- simulation of the prepared swap, and Magic Eden NFT reads with unsigned
170
- buy/list/mint tickets. Bitcoin covers Esplora fee/UTXO reads, Ordinals/runes
171
- research, Satflow PSBT intents, and inscription PSBT preparation. Hyperliquid
172
- adds HyperCore HYPE staking: validator reads plus EIP-712 stake, delegate,
173
- undelegate, and unstake preparation. User wallets sign.
174
-
175
- **Any other EVM chain is config, not code:**
176
-
177
- ```js
178
- import { registerCustomChain } from "@oracle-agent/oracle/scanner";
179
-
180
- registerCustomChain({
181
- key: "mychain",
182
- chainId: 7777,
183
- name: "My Chain",
184
- rpcEnv: ["MYCHAIN_RPC_URL"],
185
- nativeCurrency: { symbol: "MYC", decimals: 18 },
186
- });
187
- ```
188
-
189
- That chain immediately has block reads, balances, on-chain token resolution, log
190
- scanning, and structural risk checks. See
191
- [`docs/adding-a-chain.md`](docs/adding-a-chain.md).
192
-
193
- ```bash
194
- oracle-scan chains # coverage matrix
195
- oracle-scan token base 0x8335...2913 # on-chain identity
196
- oracle-scan pools base 0x4200...0006 # pools ranked by liquidity
197
- oracle-scan risk base 0x8335...2913 # structural checks + sell simulation
198
- oracle-scan sell base 0x8335...2913 # round trip: can you actually exit?
199
- ```
200
-
201
- **8 of 11 chains ship verified venues**: Ethereum, Optimism, BNB, Polygon, Base,
202
- Arbitrum, Avalanche, and Robinhood Chain. They have all 10 capabilities including
203
- live quotes, round-trip sell simulation, and unsigned swap preparation. The remaining
204
- three (Stable, HyperEVM, Abstract) are at 7 and **fail-closed for routing value** until
205
- someone verifies a venue: read and research work, moving money does not. That is a safe
206
- default, not a gap.
207
-
208
- Every venue address was verified **functionally, not by codesize** — a re-runnable
209
- prober (`scripts/verify-v3-venues.mjs`) asks each candidate to price a pair with a
210
- known answer. This matters: the canonical QuoterV2 address also has bytecode on
211
- Base, but does not price that chain's pairs. A codesize check would have
212
- allowlisted the wrong contract.
213
-
214
- **42 provider modules** in the read/quote catalog, covering **219 unique
215
- protocols/venues** across EVM, Solana, and Bitcoin (115 EVM + cross-chain, 98
216
- Solana venues backed by 101 verified Jupiter program IDs, 6 Bitcoin surfaces).
217
- One module can cover many protocols: the Jupiter module alone routes 98 Solana
218
- venues, so provider-module count and protocol count are different numbers.
219
-
220
- | Class | Providers |
221
- |---|---|
222
- | Chain / explorer | EVM JSON-RPC, Blockscout, Solana RPC, Bitcoin Esplora |
223
- | Market data | DexScreener, GeckoTerminal, DeFiLlama |
224
- | DEX / aggregator | Uniswap V3/V4, Aerodrome, Curve, Balancer, LI.FI, ParaSwap, Odos, 0x, 1inch, HyperEVM DEXes |
225
- | Solana | Jupiter (98 venue labels, 101 verified program IDs) |
226
- | Intents | CoW Protocol, RFQ |
227
- | Perps / lending / yield | GMX v2, Morpho, Pendle |
228
- | Bridges | Across, Hop, Relay |
229
- | Venues | Hyperliquid (core perps + HIP-3 builder dexs + HIP-4 outcomes), Polymarket (read + local CLOB prepare) |
230
- | NFT | OpenSea, Satflow, Magic Eden (Solana) |
231
- | Bitcoin | mempool/Esplora, Ordinals, Runes, UniSat, Best-in-Slot, Satflow |
232
-
233
- Every provider and every scanner capability declares an honest tier —
234
- `read-only`, `quote-only`, `prepare`, or `intent`. **API coverage is not execution
235
- support**, and the catalog says which is which. A chain with no verified venue is
236
- fail-closed for routing value: read and research work, moving money does not. That
237
- is a safe default, not a gap.
238
-
239
- ## Capability pack
240
-
241
- Oracle's default pack is deliberately broad but disarmed:
242
-
243
- - **Trader** — best-execution route comparison, quote/prepare, simulation, and
244
- receipt checks; no set-and-forget custody.
245
- - **Builder** - chain-family fungible-token and NFT-collection launch plans,
246
- protocol, gacha, DEX, and launchpad scaffolds with unsigned deploy/admin actions.
247
- Unsupported chain adapters fail closed instead of pretending one deploy fits all.
248
- - **Analyzer** — token, contract, venue, portfolio, market, and risk research with
249
- evidence labels. `/balance` or plain `balance` runs one deterministic snapshot
250
- across every configured EVM chain plus Solana, Bitcoin, Hyperliquid, and
251
- discoverable NFTs. Profile-local observations power history and SVG value graphs;
252
- unavailable values stay null instead of becoming fake zeroes.
253
- - **On-chain scanner** — chain-config scanners for tokens, pools, launches,
254
- risk, exits, and smart-wallet boards.
255
- - **Meme-token sniper** — fast launch/liquidity monitoring across configured
256
- chains, guarded by identity checks, sell-sim/reverse-route proof, caps, and
257
- unsigned user-wallet tickets.
258
- - **Per-chain graphs + Telegram cards** — charted scanner alerts, route cards,
259
- meme-launch cards, Hyperliquid HIP-3/HIP-4 cards, and Polymarket cards. User
260
- API-key actions activate only when self-hosted keys are configured.
261
- - **NFT mint gas-war limits** — public mint bots enforce chain-bound gas caps,
262
- per-unit fee caps, and optional priority-fee caps before returning unsigned
263
- mint transactions. Import `validateNftMintGasWar` from the package root or
264
- `@oracle-agent/oracle/nft-gas-war`.
265
- - **Cross-chain RFQ + tokenized assets** — RFQ/intent venues are compared across
266
- supported chains where configured, and tokenized Robinhood-style assets can be
267
- bought only after exact contract, venue, route, and sellability checks.
268
- - **Solana** — SPL accounts, Jupiter quotes, unsigned swap transactions, and
269
- simulation.
270
- - **Bitcoin** — L1 reads, Ordinals/runes, Satflow PSBT intents, and inscription
271
- PSBT preparation.
272
-
273
- Every money-moving path stays prepare/simulate first. Signing and broadcast are
274
- wallet/grant actions, not model authority. Meme-token sniping defaults to fast
275
- scan + prepared ticket; blind broadcast requires a separate capped local signer
276
- loop and explicit opt-in. NFT mint bots must also honor gas-war caps before any
277
- wallet-signable transaction is returned. RFQ and tokenized-asset routes are
278
- capability-labeled per chain; unconfigured venues stay unavailable instead of faked.
279
-
280
- ## Install
281
-
282
- ```bash
283
- npm install @oracle-agent/oracle # Node >= 20.19.0
284
- ```
285
-
286
- Or from source, if you want to run the suite:
287
-
288
- ```bash
289
- git clone https://github.com/demi-hl/oracle.git
290
- cd oracle
291
- npm install
292
- npm test
293
- ```
294
-
295
- **→ [SETUP.md](./SETUP.md) covers public data credentials and the separate
296
- owner-local source lane.** The short version:
297
-
298
- - Reads and quotes need **no keys**.
299
- - The public package exposes no signer, key vault, or broadcast path.
300
- - User wallets authorize prepared actions outside the public data plane.
301
- - Owner-local signing is shipped separately as `@oracle-agent/operator`; the
302
- recommended agent-process path is `oracle-signer`. Its daemon exposes six
303
- policy-bounded surfaces: `hl`, `poly`, `evm-swap`, `evm-bridge`, `btc`, and
304
- `sol`, with explicit caps and fail-closed allowlists.
305
-
306
- ### Action vocabulary and execution planes
307
-
308
- Oracle keeps capability and authorization separate:
17
+ Prefer no terminal? The desktop app is at https://oracle.demi.la/downloads/
309
18
 
310
- - Public Oracle reads, quotes, simulates, and prepares unsigned artifacts.
311
- - **Path A:** owner/main, browser, smart-account, hardware, or protocol-native
312
- wallets sign the prepared artifact. This is the default self-custody path.
313
- - **Path B:** owner-local operator infrastructure may sign on the same host with
314
- your key and your policy. For agent processes, prefer `oracle-signer` so the
315
- agent receives only a signer URL/token and never the vault passphrase.
316
- - The generic unattended signer exposes six bounded surfaces: `hl`, `poly`,
317
- `evm-swap`, `evm-bridge`, `btc`, `sol`. Each surface decodes its own
318
- envelope, enforces its caps, and refuses while its allowlists are empty.
319
- - Ordinary EVM preparation remains user-wallet signed unless a trusted
320
- owner-controlled direct-exec process is explicitly installed and armed.
321
- - `ORACLE_AUTONOMOUS_TRADING=1` is direct execution for trusted owner-controlled
322
- local code only. It is never model/agent authority and should not be framed as
323
- equivalent to the `oracle-signer` agent-process path.
324
- - A deployment may separately install a same-host, owner-gated EVM executor.
325
- Oracle must verify that executor before describing bounded EVM execution as
326
- available. Missing deployment capability means "unavailable here," not
327
- "Oracle can never execute EVM."
328
- - `watch`, `watch this`, and `ping me` always create `active: true, actionMode: alert_only`.
329
- - `arm` creates `active: true, actionMode: execute` only for one exact owner-authorized action. It is never inferred from a watch.
330
-
331
- The package exports this binding as `@oracle-agent/oracle/action-semantics`. Legacy watch stores can migrate `status: watching|armed` with `migrateLegacyWatchRecord()`; because it is specifically a watch-store migration, both statuses become `alert_only`, never execution authority.
332
-
333
- Run the read-only data plane:
334
-
335
- ```bash
336
- npm run start:data
337
- npm run health
338
- ```
339
-
340
- Run the public console (wallet connect, grant editor, receipts):
341
-
342
- ```bash
343
- npm run start:public
344
- # http://127.0.0.1:8799/
345
- ```
346
-
347
- ## Model providers
348
-
349
- Oracle is a library. Drive it with Claude, GPT, Gemini, Grok, a local model, or
350
- a plain script — the tools are ordinary functions plus an MCP server:
351
-
352
- ```bash
353
- npx oracle-data # local read plane on 127.0.0.1:8787
354
- npx oracle-data-mcp # MCP stdio server (any MCP client); needs oracle-data up
355
- ```
356
-
357
- It is better under [Hermes](https://claude-code.nousresearch.com/docs), because
358
- a trading stack is several workloads with opposite needs and **per-profile
359
- routing** gives each its own model, tools, and key scope: cheap wide context for
360
- research, a fast model for execution where latency is money, the strongest model
361
- for risk review, something small for unattended crons. The research profile can
362
- hold no signing key at all.
363
-
364
- Oracle's own pre-release audit ran four model lineages — Grok 4.5, Opus 5,
365
- Fable 5, GPT-5.6 — and **each found a critical bug the others missed**. One
366
- model reviewing its own work would have shipped three of them.
367
-
368
-
369
- ## Agent profiles
370
-
371
- Oracle ships an installable 8-lane mesh for Hermes:
372
-
373
- ```bash
374
- oracle-init # dry run -- shows exactly what it would do
375
- oracle-init --apply # create profiles, install SOULs + skills, wire MCP config
376
- npx oracle-data # keep running — MCP tools call the local read plane on :8787
377
- oracle # premium boxed TTY on the same oracle profile as messaging
378
- oracle model # choose provider/model; persona stays oracle
379
- oracle chain use hyperliquid
380
- oracle setup # telegram / discord / slack messaging
381
- ```
382
-
383
- Terminal and configured messaging channels are transports into the same Hermes
384
- `oracle` profile. When a local operator/MCP is configured, an explicit owner
385
- trade instruction can execute from either interface. The selected model never
386
- bypasses signer-owned grants, allowlists, caps, MAC checks, simulation, or
387
- receipt verification.
388
-
389
- Lanes: `oracle` (router), `polymarket-agent`, `hyperliquid-agent`,
390
- `robinhood-agent`, `solana-agent`, `bitcoin-agent`, `stable-agent`,
391
- `protocol-builder`, plus `_template` for your own. Details in
392
- [`docs/profiles.md`](docs/profiles.md).
393
-
394
- Every lane installs **DISARMED**. No lane requests a broadcast or signing action —
395
- only read, simulate, and prepare — and a test enforces that so widening custody
396
- can't pass review quietly. An existing `SOUL.md` is never overwritten without
397
- `--force`, and `--force` writes a timestamped backup first.
398
-
399
- No Oracle account, no Oracle API key, no separate model billing. Oracle inherits
400
- whichever provider your Hermes already uses (Anthropic, OpenAI, Nous Portal, xAI,
401
- a local GGUF — anything Hermes supports).
402
-
403
- **Why "built for Hermes" and not just "works anywhere":** Oracle's read plane is
404
- an MCP server, so any MCP client can call it. But the *mesh* — per-lane memory,
405
- skills, sessions, and separate model choice per specialist — is Hermes profile
406
- machinery. You can use Oracle from any agent; you get the architecture in the
407
- diagram above from Hermes.
408
-
409
- ## Best-execution routing
410
-
411
- The highest quote is not the cheapest swap. Oracle ranks on **net received after
412
- gas and fees**, comparing every available source in parallel:
413
-
414
- ```bash
415
- oracle-route swap base 0x4200...0006 0x8335...2913 # WETH -> USDC
416
- oracle-route bridge arbitrum base # ETH across chains
417
- ```
418
-
419
- ```
420
- source net out gross cost
421
- * paraswap 1,903.880867 1,903.893053 $0.01
422
- cow 1,903.693798 1,903.693798 gasless (solver)
423
- lifi 1,894.432632 1,899.20966 $4.78
424
- ```
425
-
426
- Sources: **LI.FI, CoW, ParaSwap, 0x, 1inch** for swaps · **LI.FI, Relay, Across**
427
- for bridges. 0x and 1inch activate when their API key is present; the rest need
428
- none.
429
-
430
- Why net matters:
431
-
432
- - **Gas is part of the price.** A route quoting 0.2% more but costing $14 more in
433
- gas loses on a $500 swap and wins on a $50k one. The crossover depends on trade
434
- size, so any fixed preference is wrong on one side of it.
435
- - **Intents can beat AMMs.** CoW's solver pays the gas, so a slightly lower gross
436
- quote often wins on net — the case naive ranking always gets backwards.
437
- - **Sources disagree about what they mean.** Some report gas in USD, some in native
438
- wei, some not at all. Oracle normalizes, and marks what was measured.
439
-
440
- **Unknown cost is never scored as zero.** A source that does not report gas is
441
- ranked on gross and flagged, because scoring an unknown as free is how the worst
442
- route wins a comparison. When the top two routes measure cost differently, Oracle
443
- quotes **no spread at all** rather than a number that compares different things.
444
-
445
- Then prepare the winner in one step:
446
-
447
- ```bash
448
- oracle-route prepare base <tokenIn> <tokenOut> <yourWallet>
449
- ```
450
-
451
- You get back an **unsigned transaction** (LI.FI, ParaSwap, 0x) or **EIP-712 typed
452
- data** for an off-chain order (CoW). `artifactKind` says which — they need different
453
- wallet actions, and one is not broadcast at all. Prepare **re-quotes** and reports
454
- `driftBps` against the comparison, because a minimum computed from a stale quote is
455
- not a minimum.
456
-
457
- Bridges prepare too:
458
-
459
- ```bash
460
- oracle-route prepare-bridge arbitrum base <yourWallet>
461
- ```
462
-
463
- Bridge artifacts are always a **list** of transactions — some routes need an approval
464
- and a deposit signed in order, and signing only the first leaves funds approved but
465
- not bridged. Both chains are reported, and a transaction whose chain does not match
466
- the origin is refused. Oracle states plainly that **bridging is not atomic**: the
467
- origin transaction confirming does not mean funds arrived.
468
-
469
- Routing never signs. `taker` must be the real wallet; placeholder addresses are
470
- rejected, since quoting is anonymous but preparing is not. Signing happens in
471
- the user's wallet or in a separately operated source-only execution lane.
472
-
473
- Individual source failures degrade the comparison by one source instead of breaking
474
- it — verified in practice when Odos sunset their public API mid-development
475
- (HTTP 410); the router kept ranking and the provider was marked `unavailable`.
476
-
477
- ## Examples
478
-
479
- ```bash
480
- node examples/add-a-chain.mjs # register an unseen chain, no code
481
- node examples/research-a-token.mjs # honest token research on live data
482
- node examples/oracle-pack-template.mjs # skeleton for a safe Oracle protocol pack
483
- ```
484
-
485
- ## MCP
486
-
487
- Oracle exposes its read plane over the Model Context Protocol, so any MCP client
488
- (Hermes, Claude Code, others) can use it:
489
-
490
- ```bash
491
- oracle-data-mcp
492
- ```
493
-
494
- ## Security
495
-
496
- - Oracle never receives private keys.
497
- - The router can propose, simulate, explain, and draft. It cannot authorize.
498
- - Public modules may not import signer or executor code (enforced by test).
499
- - Destination allowlists are per-chain and fail-closed: an empty allowlist
500
- refuses everything rather than allowing everything.
501
- - Report vulnerabilities per [SECURITY.md](SECURITY.md). Please do not open a
502
- public issue for a live exploit.
503
-
504
- ## What Oracle is not
505
-
506
- - Not an autonomous trader. There is no "set and forget."
507
- - Not custodial. If a design needs your key on our server, that design is wrong.
508
- - Not a guarantee. Crypto execution carries real risk; read the code you run.
509
-
510
- ## License
511
-
512
- [Apache-2.0](LICENSE).
513
-
514
- The code is open source. The **Oracle** name and marks are reserved; please
515
- don't imply endorsement by an official deployment when shipping a fork.
516
-
517
- ### Operator hardening (0.4+)
518
-
519
- Prefer the local signer daemon so the agent never sees the vault passphrase:
520
-
521
- ```bash
522
- npx oracle-signer # reads the passphrase from the OS credential store
523
- # agent: ORACLE_SIGNER_URL + ORACLE_SIGNER_TOKEN only
524
- ```
19
+ ## Why
525
20
 
526
- See [oracle-operator SETUP](https://github.com/demi-hl/oracle-operator/blob/main/SETUP.md).
21
+ A holder check that runs on your machine can always be switched off. Serving the
22
+ artifact from a server that verifies ownership is the only version of this that means
23
+ anything. Keys and signing never live in the public package either way.
package/bin/oracle.mjs CHANGED
@@ -1,33 +1,25 @@
1
1
  #!/usr/bin/env node
2
+ // This is not Oracle. It is a pointer to the gate that distributes Oracle.
3
+ //
4
+ // The product moved to holder-gated distribution. The public registry copy
5
+ // cannot be unpublished (npm blocks it above 300 weekly downloads), so the
6
+ // next best thing is that `latest` carries no product code at all.
7
+ const GATE = "https://oracle.demi.la";
8
+ console.log(`
9
+ Oracle is distributed to Locals Only holders.
2
10
 
3
- import { realpathSync } from "node:fs";
4
- import { fileURLToPath } from "node:url";
5
- import { run } from "../src/cli/kernel.mjs";
11
+ This npm package is a pointer, not the product. It contains no Oracle code.
6
12
 
7
- export const COMMANDS = Object.freeze({
8
- data: "./desk-server.mjs",
9
- public: "./oracle-public-server.mjs",
10
- "data-mcp": "./oracle-data-mcp.mjs",
11
- init: "./oracle-init.mjs",
12
- upgrade: "./oracle-upgrade.mjs",
13
- scan: "./oracle-scan.mjs",
14
- route: "./oracle-route.mjs",
15
- });
13
+ To get a build:
14
+ 1. Visit ${GATE}
15
+ 2. Prove your wallet holds a Locals Only NFT
16
+ 3. Install the artifact the gate returns:
16
17
 
17
- function isMainModule() {
18
- if (!process.argv[1]) return false;
19
- try {
20
- return realpathSync(fileURLToPath(import.meta.url)) === realpathSync(process.argv[1]);
21
- } catch {
22
- return false;
23
- }
24
- }
18
+ curl -fL -o oracle.tgz "<link-from-gate>" && npm i -g ./oracle.tgz
25
19
 
26
- export async function main(argv = process.argv.slice(2)) {
27
- return run(argv);
28
- }
20
+ Desktop app (no terminal required): ${GATE}/downloads/
29
21
 
30
- if (isMainModule()) {
31
- const code = await main();
32
- process.exit(typeof code === "number" ? code : 0);
33
- }
22
+ Contract 0x62FCFAf7573AD8B41a0FBF347AfEb85e06599A75
23
+ Chain HyperEVM (999)
24
+ `);
25
+ process.exit(1);