@oracle-agent/oracle 0.13.1 → 0.14.1

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 (449) hide show
  1. package/CONTRIBUTING.md +99 -0
  2. package/README.md +20 -14
  3. package/SECURITY.md +6 -8
  4. package/SETUP.md +25 -27
  5. package/bin/desk-server.mjs +473 -0
  6. package/bin/oracle-data-mcp.mjs +1252 -0
  7. package/bin/oracle-equities.mjs +168 -0
  8. package/bin/oracle-init.mjs +525 -0
  9. package/bin/oracle-public-server.mjs +36 -0
  10. package/bin/oracle-route.mjs +254 -0
  11. package/bin/oracle-scan.mjs +192 -0
  12. package/bin/oracle-upgrade.mjs +42 -0
  13. package/bin/oracle.mjs +34 -0
  14. package/docs/adding-a-chain.md +229 -0
  15. package/docs/architecture.md +139 -0
  16. package/docs/buzz-integration.md +115 -0
  17. package/docs/cli.md +143 -0
  18. package/docs/connectors.md +13 -0
  19. package/docs/hyperliquid-builder-code.md +50 -0
  20. package/docs/locals-only-fee-waiver.md +34 -0
  21. package/docs/oracle-pack-standard.md +29 -0
  22. package/docs/profiles.md +151 -0
  23. package/docs/public-surface.md +206 -0
  24. package/examples/add-a-chain.mjs +65 -0
  25. package/examples/oracle-pack-template.mjs +38 -0
  26. package/examples/research-a-token.mjs +70 -0
  27. package/package.json +78 -32
  28. package/plugins/oracle-owner-gate/__init__.py +288 -0
  29. package/plugins/oracle-owner-gate/plugin.yaml +9 -0
  30. package/{dist/assets/profiles → profiles}/oracle/SOUL.md +0 -14
  31. package/protocols/templates/safe-erc20/SECURITY.md +16 -0
  32. package/protocols/templates/safe-erc20/foundry.toml +12 -0
  33. package/protocols/templates/safe-erc20/remappings.txt +2 -0
  34. package/protocols/templates/safe-erc20/src/SafeERC20.sol +53 -0
  35. package/protocols/templates/safe-erc20/test/SafeERC20.t.sol +72 -0
  36. package/public/oracle-splash/_variants/ice.html +3 -3
  37. package/public/oracle-splash/_variants/ivory.html +3 -3
  38. package/public/oracle-splash/downloads/index.html +34 -223
  39. package/public/oracle-splash/index.html +11 -11
  40. package/scripts/adversarial-bench.mjs +114 -0
  41. package/scripts/build-dist.mjs +119 -0
  42. package/scripts/build-inscription.py +230 -0
  43. package/scripts/check-doc-drift.mjs +123 -0
  44. package/scripts/check-test-count.mjs +105 -0
  45. package/scripts/e2e-hl-markets.mjs +21 -0
  46. package/scripts/e2e-hl-perps.mjs +48 -0
  47. package/scripts/e2e-hypercore-staking.mjs +128 -0
  48. package/scripts/e2e-solana-bitcoin.mjs +183 -0
  49. package/scripts/guard-publish.mjs +22 -0
  50. package/scripts/protocol-template-gate.mjs +15 -0
  51. package/scripts/public-api-scan.mjs +23 -0
  52. package/scripts/publish-dist.mjs +67 -0
  53. package/scripts/record-hero-cli.sh +80 -0
  54. package/scripts/secret-scan.mjs +169 -0
  55. package/scripts/smoke-dist-bins.mjs +89 -0
  56. package/scripts/verify-dist.mjs +29 -0
  57. package/scripts/verify-v3-venues.mjs +233 -0
  58. package/skins/oracle.yaml +56 -0
  59. package/src/action-receipts.mjs +265 -0
  60. package/src/action-semantics.mjs +62 -0
  61. package/src/address-book.mjs +208 -0
  62. package/src/agent-auth.mjs +206 -0
  63. package/src/approval-guard.mjs +282 -0
  64. package/src/attestation-secret.mjs +94 -0
  65. package/src/audit-log.mjs +196 -0
  66. package/src/auth/oauth.mjs +672 -0
  67. package/src/auto-slippage.mjs +378 -0
  68. package/src/capability-posture.mjs +125 -0
  69. package/src/cards.mjs +422 -0
  70. package/src/chains.mjs +62 -0
  71. package/src/cli/chain-catalog.mjs +215 -0
  72. package/src/cli/chain-state.mjs +74 -0
  73. package/src/cli/commands/auth.mjs +193 -0
  74. package/src/cli/commands/bootstrap.mjs +87 -0
  75. package/src/cli/commands/chain.mjs +143 -0
  76. package/src/cli/commands/chat.mjs +465 -0
  77. package/src/cli/commands/credential.mjs +9 -0
  78. package/src/cli/commands/data-mcp.mjs +18 -0
  79. package/src/cli/commands/data.mjs +75 -0
  80. package/src/cli/commands/doctor.mjs +136 -0
  81. package/src/cli/commands/equities.mjs +41 -0
  82. package/src/cli/commands/farm.mjs +129 -0
  83. package/src/cli/commands/fees.mjs +109 -0
  84. package/src/cli/commands/follow.mjs +130 -0
  85. package/src/cli/commands/harness.mjs +63 -0
  86. package/src/cli/commands/help.mjs +7 -0
  87. package/src/cli/commands/init.mjs +27 -0
  88. package/src/cli/commands/mcp.mjs +154 -0
  89. package/src/cli/commands/model.mjs +106 -0
  90. package/src/cli/commands/plugins.mjs +275 -0
  91. package/src/cli/commands/prepare.mjs +12 -0
  92. package/src/cli/commands/public.mjs +20 -0
  93. package/src/cli/commands/resolve.mjs +64 -0
  94. package/src/cli/commands/route.mjs +12 -0
  95. package/src/cli/commands/runner.mjs +9 -0
  96. package/src/cli/commands/scan.mjs +12 -0
  97. package/src/cli/commands/setup.mjs +294 -0
  98. package/src/cli/commands/sign.mjs +21 -0
  99. package/src/cli/commands/signer.mjs +9 -0
  100. package/src/cli/commands/swap.mjs +102 -0
  101. package/src/cli/commands/upgrade.mjs +12 -0
  102. package/src/cli/commands/vault.mjs +9 -0
  103. package/src/cli/commands/version.mjs +22 -0
  104. package/src/cli/first-run.mjs +23 -0
  105. package/src/cli/kernel.mjs +262 -0
  106. package/src/cli/mcp-targets/chatgpt.mjs +51 -0
  107. package/src/cli/mcp-targets/claude-code.mjs +39 -0
  108. package/src/cli/mcp-targets/claude-desktop.mjs +24 -0
  109. package/src/cli/mcp-targets/codex.mjs +41 -0
  110. package/src/cli/mcp-targets/cursor.mjs +32 -0
  111. package/src/cli/mcp-targets/shared.mjs +71 -0
  112. package/src/cli/mcp-targets/vscode.mjs +39 -0
  113. package/src/cli/messaging-platforms.mjs +217 -0
  114. package/src/cli/model-config.mjs +78 -0
  115. package/src/cli/operator-dispatch.mjs +194 -0
  116. package/src/cli/oracle-harness.py +415 -0
  117. package/src/cli/paths.mjs +107 -0
  118. package/src/cli/runtime.mjs +351 -0
  119. package/src/cli/setup-state.mjs +168 -0
  120. package/src/cli/spawn-child.mjs +43 -0
  121. package/src/data/catalog.mjs +858 -0
  122. package/src/data/desk-data.mjs +877 -0
  123. package/src/data/http.mjs +253 -0
  124. package/src/data/names.mjs +188 -0
  125. package/src/data/provider-endpoint.mjs +94 -0
  126. package/src/data/providers/aave-v3.mjs +139 -0
  127. package/src/data/providers/across-bridge.mjs +41 -0
  128. package/src/data/providers/aerodrome.mjs +245 -0
  129. package/src/data/providers/aevo.mjs +33 -0
  130. package/src/data/providers/approval-indexer.mjs +133 -0
  131. package/src/data/providers/approvals.mjs +594 -0
  132. package/src/data/providers/babylon-staking.mjs +149 -0
  133. package/src/data/providers/balancer.mjs +209 -0
  134. package/src/data/providers/beefy-yields.mjs +45 -0
  135. package/src/data/providers/birdeye-tokens.mjs +33 -0
  136. package/src/data/providers/bisq-markets.mjs +145 -0
  137. package/src/data/providers/bitcoin-esplora.mjs +216 -0
  138. package/src/data/providers/bitcoin-meta.mjs +378 -0
  139. package/src/data/providers/blockscout.mjs +14 -0
  140. package/src/data/providers/bob-rootstock.mjs +198 -0
  141. package/src/data/providers/braiins-insights.mjs +103 -0
  142. package/src/data/providers/bridge-aggregator.mjs +259 -0
  143. package/src/data/providers/bridges.mjs +242 -0
  144. package/src/data/providers/bungee.mjs +29 -0
  145. package/src/data/providers/celestia-da.mjs +38 -0
  146. package/src/data/providers/changenow.mjs +135 -0
  147. package/src/data/providers/compound.mjs +32 -0
  148. package/src/data/providers/connext.mjs +28 -0
  149. package/src/data/providers/convex.mjs +30 -0
  150. package/src/data/providers/cow-protocol.mjs +110 -0
  151. package/src/data/providers/cowswap.mjs +415 -0
  152. package/src/data/providers/curve.mjs +201 -0
  153. package/src/data/providers/das-assets.mjs +59 -0
  154. package/src/data/providers/debridge.mjs +109 -0
  155. package/src/data/providers/defillama.mjs +88 -0
  156. package/src/data/providers/dexscreener.mjs +43 -0
  157. package/src/data/providers/drift.mjs +32 -0
  158. package/src/data/providers/dydx.mjs +41 -0
  159. package/src/data/providers/evm-rpc.mjs +225 -0
  160. package/src/data/providers/farming.mjs +291 -0
  161. package/src/data/providers/geckoterminal.mjs +34 -0
  162. package/src/data/providers/gmx.mjs +496 -0
  163. package/src/data/providers/hiro-stacks.mjs +150 -0
  164. package/src/data/providers/hl-assets.mjs +165 -0
  165. package/src/data/providers/hl-info.mjs +108 -0
  166. package/src/data/providers/hl-markets.mjs +210 -0
  167. package/src/data/providers/hl-outcome.mjs +61 -0
  168. package/src/data/providers/hl-perps.mjs +419 -0
  169. package/src/data/providers/hl-staking.mjs +353 -0
  170. package/src/data/providers/hl-ws.mjs +119 -0
  171. package/src/data/providers/hyperevm-dex.mjs +49 -0
  172. package/src/data/providers/jito-mev.mjs +117 -0
  173. package/src/data/providers/jupiter-venues.mjs +119 -0
  174. package/src/data/providers/jupiter.mjs +315 -0
  175. package/src/data/providers/kamino-strategies.mjs +143 -0
  176. package/src/data/providers/l2beat-tvl.mjs +42 -0
  177. package/src/data/providers/lifi.mjs +166 -0
  178. package/src/data/providers/liquid-esplora.mjs +152 -0
  179. package/src/data/providers/magiceden-ordinals.mjs +141 -0
  180. package/src/data/providers/magiceden-sol.mjs +406 -0
  181. package/src/data/providers/mempool-lightning.mjs +144 -0
  182. package/src/data/providers/mempool-mining.mjs +142 -0
  183. package/src/data/providers/meteora-dlmm.mjs +168 -0
  184. package/src/data/providers/morpho.mjs +177 -0
  185. package/src/data/providers/nft-gallery.mjs +163 -0
  186. package/src/data/providers/nft-portfolio.mjs +494 -0
  187. package/src/data/providers/odos.mjs +156 -0
  188. package/src/data/providers/ondo.mjs +31 -0
  189. package/src/data/providers/oneinch.mjs +174 -0
  190. package/src/data/providers/opensea-multichain.mjs +136 -0
  191. package/src/data/providers/opensea-nft.mjs +371 -0
  192. package/src/data/providers/orca.mjs +29 -0
  193. package/src/data/providers/ordinals-runes.mjs +180 -0
  194. package/src/data/providers/pancakeswap.mjs +28 -0
  195. package/src/data/providers/paraswap.mjs +125 -0
  196. package/src/data/providers/pendle.mjs +188 -0
  197. package/src/data/providers/poly-clob.mjs +283 -0
  198. package/src/data/providers/poly-public.mjs +96 -0
  199. package/src/data/providers/poly-ws.mjs +103 -0
  200. package/src/data/providers/polygon-staking.mjs +227 -0
  201. package/src/data/providers/portfolio-history.mjs +394 -0
  202. package/src/data/providers/portfolio.mjs +600 -0
  203. package/src/data/providers/pyth-price-feeds.mjs +172 -0
  204. package/src/data/providers/raydium.mjs +35 -0
  205. package/src/data/providers/relayscan-mev.mjs +72 -0
  206. package/src/data/providers/rfq.mjs +15 -0
  207. package/src/data/providers/rh-agent.mjs +59 -0
  208. package/src/data/providers/sanctum-lst.mjs +180 -0
  209. package/src/data/providers/satflow.mjs +341 -0
  210. package/src/data/providers/signed-material-guard.mjs +108 -0
  211. package/src/data/providers/solana-rpc.mjs +197 -0
  212. package/src/data/providers/solend-lending.mjs +166 -0
  213. package/src/data/providers/spark-lend.mjs +42 -0
  214. package/src/data/providers/squid-router.mjs +29 -0
  215. package/src/data/providers/stargate.mjs +29 -0
  216. package/src/data/providers/sushiswap.mjs +30 -0
  217. package/src/data/providers/symbiotic-restaking.mjs +41 -0
  218. package/src/data/providers/thorchain.mjs +36 -0
  219. package/src/data/providers/traderjoe.mjs +28 -0
  220. package/src/data/providers/twap.mjs +152 -0
  221. package/src/data/providers/uniswap-v3.mjs +457 -0
  222. package/src/data/providers/uniswap-v4.mjs +414 -0
  223. package/src/data/providers/vertex.mjs +41 -0
  224. package/src/data/providers/wallet-watch.mjs +264 -0
  225. package/src/data/providers/wormhole.mjs +28 -0
  226. package/src/data/providers/yearn.mjs +31 -0
  227. package/src/data/providers/zerox.mjs +167 -0
  228. package/src/data/public-api-scan.mjs +61 -0
  229. package/src/data/quote-placeholder.mjs +31 -0
  230. package/src/desk/swap-prepare.mjs +194 -0
  231. package/src/equities/bridge.mjs +388 -0
  232. package/src/equities/fixtures/bridge_routes.json +159 -0
  233. package/src/equities/fixtures/dst_transitions.json +29 -0
  234. package/src/equities/fixtures/equity_dex_pools.json +154 -0
  235. package/src/equities/fixtures/hip3_l2books.json +2711 -0
  236. package/src/equities/fixtures/nyse_holidays.json +1 -0
  237. package/src/equities/fixtures/oracles.json +100 -0
  238. package/src/equities/fixtures/rh_pool_state.json +244 -0
  239. package/src/equities/fixtures/solana_xstocks.json +704 -0
  240. package/src/equities/fixtures/ton_xstocks.json +35 -0
  241. package/src/equities/fixtures/universe.json +411 -0
  242. package/src/equities/fixtures/venues.json +3542 -0
  243. package/src/equities/fixtures.mjs +405 -0
  244. package/src/equities/funding.mjs +142 -0
  245. package/src/equities/index.mjs +166 -0
  246. package/src/equities/liveness.mjs +148 -0
  247. package/src/equities/marketHours.mjs +249 -0
  248. package/src/equities/normalize.mjs +295 -0
  249. package/src/equities/num.mjs +146 -0
  250. package/src/equities/prepare.mjs +95 -0
  251. package/src/equities/rank.mjs +260 -0
  252. package/src/equities/sourceNum.mjs +69 -0
  253. package/src/equities/types.mjs +220 -0
  254. package/src/equities/venues/arcus-perp.mjs +84 -0
  255. package/src/equities/venues/arcus-spot.mjs +105 -0
  256. package/src/equities/venues/hyperliquid-hip3.mjs +224 -0
  257. package/src/equities/venues/rh-uniswap.mjs +216 -0
  258. package/src/equities/venues/solana-xstocks.mjs +139 -0
  259. package/src/equities/venues/ton-stonfi.mjs +139 -0
  260. package/src/exact-integer.mjs +72 -0
  261. package/src/exec-policy.mjs +419 -0
  262. package/src/flags.mjs +15 -0
  263. package/src/fresh-window.mjs +76 -0
  264. package/src/gmx-attestation.mjs +176 -0
  265. package/src/index.mjs +107 -0
  266. package/src/licensing/locals-only.mjs +25 -0
  267. package/src/nft-gas-war-guard.mjs +139 -0
  268. package/src/onboarding/agent-keys.mjs +161 -0
  269. package/src/onboarding/harness-configs.mjs +102 -0
  270. package/src/onboarding/index.mjs +18 -0
  271. package/src/onboarding/tiers.mjs +139 -0
  272. package/src/oracle-env.mjs +55 -0
  273. package/src/package-manifest.mjs +42 -0
  274. package/src/plugins/agent-plugin-loader.mjs +225 -0
  275. package/src/portfolio-risk.mjs +170 -0
  276. package/src/prepare-envelope.mjs +204 -0
  277. package/src/profile-upgrade.mjs +277 -0
  278. package/src/protocol-execution.mjs +84 -0
  279. package/src/protocol-templates/gate.mjs +179 -0
  280. package/src/protocol-templates/prepare-deploy.mjs +81 -0
  281. package/src/public-api/agent-grants.mjs +57 -0
  282. package/src/public-api/buzz-integration.mjs +267 -0
  283. package/src/public-api/connect-agent.mjs +424 -0
  284. package/src/public-api/grants.mjs +142 -0
  285. package/src/public-api/http.mjs +707 -0
  286. package/src/public-api/metering.mjs +111 -0
  287. package/src/public-control/aa-adapter.mjs +402 -0
  288. package/src/public-control/build-registry.mjs +227 -0
  289. package/src/public-control/bundler-client.mjs +357 -0
  290. package/src/public-control/grant-indexer.mjs +296 -0
  291. package/src/public-control/policy-render.mjs +69 -0
  292. package/src/public-control/policy-schema.mjs +322 -0
  293. package/src/public-control/runtime-config.mjs +275 -0
  294. package/src/public-control/session-key-model.mjs +379 -0
  295. package/src/public-control/session-orchestrator.mjs +418 -0
  296. package/src/rfq/intent.mjs +180 -0
  297. package/src/rfq/sources.mjs +181 -0
  298. package/src/route-attestation.mjs +132 -0
  299. package/src/router/best-execution.mjs +326 -0
  300. package/src/router/index.mjs +250 -0
  301. package/src/router/integrator-fee.mjs +135 -0
  302. package/src/router/prepare-bridge.mjs +293 -0
  303. package/src/router/prepare-route.mjs +398 -0
  304. package/src/router/proposal.mjs +311 -0
  305. package/src/router/risk-classifier.mjs +119 -0
  306. package/src/router/route-sources.mjs +364 -0
  307. package/src/scanner/chains.config.mjs +543 -0
  308. package/src/scanner/contract.mjs +270 -0
  309. package/src/scanner/evm-scanner.mjs +394 -0
  310. package/src/scanner/index.mjs +9 -0
  311. package/src/scanner/v2-venue.mjs +351 -0
  312. package/src/scanner/v3-venue.mjs +308 -0
  313. package/src/scopes.mjs +44 -0
  314. package/src/sell-simulation.mjs +167 -0
  315. package/src/signals/engine.mjs +146 -0
  316. package/src/signals/index.mjs +1 -0
  317. package/src/token-transfer-guard.mjs +188 -0
  318. package/src/tui/app.mjs +438 -0
  319. package/src/tui/backend.mjs +215 -0
  320. package/src/tui/format.mjs +272 -0
  321. package/src/tui/gateway-client.mjs +177 -0
  322. package/src/tui/input.mjs +501 -0
  323. package/src/tui/memory.mjs +105 -0
  324. package/src/tui/meta-learn.mjs +85 -0
  325. package/src/tui/renderer.mjs +443 -0
  326. package/src/tui/scheduler.mjs +205 -0
  327. package/src/tui/skills-loader.mjs +140 -0
  328. package/src/tui/standalone-client.mjs +752 -0
  329. package/src/tui/theme.mjs +81 -0
  330. package/src/vault-attestation.mjs +146 -0
  331. package/src/venues.mjs +206 -0
  332. package/src/watch-preferences.mjs +85 -0
  333. package/dist/action-receipts.mjs +0 -1
  334. package/dist/action-semantics.mjs +0 -1
  335. package/dist/address-book.mjs +0 -2
  336. package/dist/bin/desk-server.mjs +0 -59
  337. package/dist/bin/oracle-data-mcp.mjs +0 -8
  338. package/dist/bin/oracle-equities.mjs +0 -20
  339. package/dist/bin/oracle-init.mjs +0 -24
  340. package/dist/bin/oracle-public-server.mjs +0 -5
  341. package/dist/bin/oracle-route.mjs +0 -22
  342. package/dist/bin/oracle-scan.mjs +0 -18
  343. package/dist/bin/oracle-upgrade.mjs +0 -21
  344. package/dist/bin/oracle.mjs +0 -76
  345. package/dist/chains.mjs +0 -1
  346. package/dist/cli/commands/auth.mjs +0 -16
  347. package/dist/cli/commands/bootstrap.mjs +0 -18
  348. package/dist/cli/commands/chain.mjs +0 -21
  349. package/dist/cli/commands/chat.mjs +0 -45
  350. package/dist/cli/commands/credential.mjs +0 -1
  351. package/dist/cli/commands/data-mcp.mjs +0 -2
  352. package/dist/cli/commands/data.mjs +0 -12
  353. package/dist/cli/commands/doctor.mjs +0 -5
  354. package/dist/cli/commands/equities.mjs +0 -15
  355. package/dist/cli/commands/farm.mjs +0 -59
  356. package/dist/cli/commands/follow.mjs +0 -28
  357. package/dist/cli/commands/gate.mjs +0 -13
  358. package/dist/cli/commands/harness.mjs +0 -15
  359. package/dist/cli/commands/help.mjs +0 -1
  360. package/dist/cli/commands/init.mjs +0 -3
  361. package/dist/cli/commands/mcp.mjs +0 -60
  362. package/dist/cli/commands/model.mjs +0 -54
  363. package/dist/cli/commands/plugins.mjs +0 -38
  364. package/dist/cli/commands/prepare.mjs +0 -2
  365. package/dist/cli/commands/public.mjs +0 -3
  366. package/dist/cli/commands/resolve.mjs +0 -23
  367. package/dist/cli/commands/route.mjs +0 -2
  368. package/dist/cli/commands/runner.mjs +0 -1
  369. package/dist/cli/commands/scan.mjs +0 -2
  370. package/dist/cli/commands/setup.mjs +0 -34
  371. package/dist/cli/commands/sign.mjs +0 -21
  372. package/dist/cli/commands/signer.mjs +0 -1
  373. package/dist/cli/commands/swap.mjs +0 -36
  374. package/dist/cli/commands/upgrade.mjs +0 -2
  375. package/dist/cli/commands/vault.mjs +0 -1
  376. package/dist/cli/commands/version.mjs +0 -2
  377. package/dist/data/desk-data.mjs +0 -55
  378. package/dist/data/names.mjs +0 -2
  379. package/dist/data/providers/farming.mjs +0 -2
  380. package/dist/equities/index.mjs +0 -1
  381. package/dist/index.mjs +0 -60
  382. package/dist/nft-gas-war-guard.mjs +0 -1
  383. package/dist/onboarding/harness-configs.mjs +0 -4
  384. package/dist/portfolio-risk.mjs +0 -1
  385. package/dist/prepare-envelope.mjs +0 -1
  386. package/dist/public-api/agent-grants.mjs +0 -3
  387. package/dist/public-control/policy-schema.mjs +0 -1
  388. package/dist/router/index.mjs +0 -2
  389. package/dist/scanner/index.mjs +0 -4
  390. package/dist/signals/index.mjs +0 -1
  391. package/dist/watch-preferences.mjs +0 -1
  392. /package/{dist/assets/profiles → profiles}/_template/SOUL.md +0 -0
  393. /package/{dist/assets/profiles → profiles}/_template/profile.json +0 -0
  394. /package/{dist/assets/profiles → profiles}/bitcoin-agent/SOUL.md +0 -0
  395. /package/{dist/assets/profiles → profiles}/bitcoin-agent/profile.json +0 -0
  396. /package/{dist/assets/profiles → profiles}/hyperliquid-agent/SOUL.md +0 -0
  397. /package/{dist/assets/profiles → profiles}/hyperliquid-agent/profile.json +0 -0
  398. /package/{dist/assets/profiles → profiles}/oracle/profile.json +0 -0
  399. /package/{dist/assets/profiles → profiles}/polymarket-agent/SOUL.md +0 -0
  400. /package/{dist/assets/profiles → profiles}/polymarket-agent/profile.json +0 -0
  401. /package/{dist/assets/profiles → profiles}/profile.schema.json +0 -0
  402. /package/{dist/assets/profiles → profiles}/protocol-builder/SOUL.md +0 -0
  403. /package/{dist/assets/profiles → profiles}/protocol-builder/profile.json +0 -0
  404. /package/{dist/assets/profiles → profiles}/robinhood-agent/SOUL.md +0 -0
  405. /package/{dist/assets/profiles → profiles}/robinhood-agent/profile.json +0 -0
  406. /package/{dist/assets/profiles → profiles}/solana-agent/SOUL.md +0 -0
  407. /package/{dist/assets/profiles → profiles}/solana-agent/profile.json +0 -0
  408. /package/{dist/assets/profiles → profiles}/stable-agent/SOUL.md +0 -0
  409. /package/{dist/assets/profiles → profiles}/stable-agent/profile.json +0 -0
  410. /package/{dist/assets/skills → skills}/balance/SKILL.md +0 -0
  411. /package/{dist/assets/skills → skills}/bitcoin-l1.md +0 -0
  412. /package/{dist/assets/skills → skills}/chain-defi-ecosystem-profiling.md +0 -0
  413. /package/{dist/assets/skills → skills}/evm-contract-research.md +0 -0
  414. /package/{dist/assets/skills → skills}/hyperliquid.md +0 -0
  415. /package/{dist/assets/skills → skills}/multichain-exec-desk.md +0 -0
  416. /package/{dist/assets/skills → skills}/oracle-action-semantics/SKILL.md +0 -0
  417. /package/{dist/assets/skills → skills}/oracle-best-execution/SKILL.md +0 -0
  418. /package/{dist/assets/skills → skills}/oracle-best-execution.md +0 -0
  419. /package/{dist/assets/skills → skills}/oracle-bitcoin/SKILL.md +0 -0
  420. /package/{dist/assets/skills → skills}/oracle-chain-graphs-telegram-cards/SKILL.md +0 -0
  421. /package/{dist/assets/skills → skills}/oracle-chat/SKILL.md +0 -0
  422. /package/{dist/assets/skills → skills}/oracle-chat/chain.SKILL.md +0 -0
  423. /package/{dist/assets/skills → skills}/oracle-chat/setup.SKILL.md +0 -0
  424. /package/{dist/assets/skills → skills}/oracle-circuit-breaker/SKILL.md +0 -0
  425. /package/{dist/assets/skills → skills}/oracle-contract-research/SKILL.md +0 -0
  426. /package/{dist/assets/skills → skills}/oracle-desk/SKILL.md +0 -0
  427. /package/{dist/assets/skills → skills}/oracle-desk.md +0 -0
  428. /package/{dist/assets/skills → skills}/oracle-dex-launch/SKILL.md +0 -0
  429. /package/{dist/assets/skills → skills}/oracle-equities/SKILL.md +0 -0
  430. /package/{dist/assets/skills → skills}/oracle-grants/SKILL.md +0 -0
  431. /package/{dist/assets/skills → skills}/oracle-hypercore-staking/SKILL.md +0 -0
  432. /package/{dist/assets/skills → skills}/oracle-hyperliquid/SKILL.md +0 -0
  433. /package/{dist/assets/skills → skills}/oracle-meme-token-sniper/SKILL.md +0 -0
  434. /package/{dist/assets/skills → skills}/oracle-multichain-nft-launch/SKILL.md +0 -0
  435. /package/{dist/assets/skills → skills}/oracle-multichain-token-launch/SKILL.md +0 -0
  436. /package/{dist/assets/skills → skills}/oracle-nft-gacha-launch/SKILL.md +0 -0
  437. /package/{dist/assets/skills → skills}/oracle-nft-mint-gas-war/SKILL.md +0 -0
  438. /package/{dist/assets/skills → skills}/oracle-polymarket/SKILL.md +0 -0
  439. /package/{dist/assets/skills → skills}/oracle-protocol-builder/SKILL.md +0 -0
  440. /package/{dist/assets/skills → skills}/oracle-protocol-security/SKILL.md +0 -0
  441. /package/{dist/assets/skills → skills}/oracle-public-product/SKILL.md +0 -0
  442. /package/{dist/assets/skills → skills}/oracle-receipts/SKILL.md +0 -0
  443. /package/{dist/assets/skills → skills}/oracle-receipts.md +0 -0
  444. /package/{dist/assets/skills → skills}/oracle-rfq-tokenized-assets/SKILL.md +0 -0
  445. /package/{dist/assets/skills → skills}/oracle-smart-wallet-scanner/SKILL.md +0 -0
  446. /package/{dist/assets/skills → skills}/oracle-solana/SKILL.md +0 -0
  447. /package/{dist/assets/skills → skills}/oracle-solana-nft/SKILL.md +0 -0
  448. /package/{dist/assets/skills → skills}/oracle-token-research/SKILL.md +0 -0
  449. /package/{dist/assets/skills → skills}/solana.md +0 -0
@@ -0,0 +1,99 @@
1
+ # Contributing to Oracle
2
+
3
+ Thanks for looking. Oracle is a control plane for money movement, so the review
4
+ bar is about safety and honesty more than style.
5
+
6
+ ## Before you start
7
+
8
+ Run the suite:
9
+
10
+ ```bash
11
+ npm install
12
+ npm test
13
+ ```
14
+
15
+ `test-baseline.json` records the current suite count and `npm run test:count`
16
+ prevents silent test loss. A failure on a clean checkout is a bug; report it
17
+ with the exact command output.
18
+
19
+ ## The one rule that matters
20
+
21
+ **The public plane may never reach a private key or a house signer.**
22
+
23
+ Oracle ships the data plane, the policy plane, and the control plane. It does not
24
+ ship the executor. A PR that imports signer or keystore code into public modules
25
+ will fail `test/custody-boundary.test.mjs`, and the fix is not to edit the
26
+ forbidden list.
27
+
28
+ If your feature seems to need a key, restructure it: build an unsigned
29
+ transaction or a typed-data intent and hand it back to the caller to sign.
30
+
31
+ ## What we want
32
+
33
+ - **Real bugs, fixed at the class level.** Reproduce it, point at the line, fix
34
+ every sibling call path — not just the one that was reported.
35
+ - **New chains and providers.** This is the most useful contribution. See below.
36
+ - **Honest capability tiers.** If a provider can only quote, mark it
37
+ `quote-only`. Do not mark it `prepare` because a prepare function exists but
38
+ was never validated against a live route.
39
+ - **Tests that assert invariants**, not snapshots. `assert` that a minimum output
40
+ is enforced; don't freeze today's provider list into an equality check.
41
+ - **Guards recomputed before signing.** A quote-time check that isn't re-verified
42
+ at broadcast is decoration.
43
+
44
+ ## What gets rejected
45
+
46
+ - A signer, private key, or house-custody path in the public tree.
47
+ - A destination allowlist that defaults to permissive, or an empty allowlist read
48
+ as "allow all."
49
+ - Slippage widened past the 100 bps cap to make a trade go through. Block,
50
+ requote, or split instead.
51
+ - A claim of execution support with no live prepare/simulate evidence.
52
+ - Secrets in code, tests, fixtures, or docs — including a real wallet address as
53
+ a default `from` for quotes. Use `src/data/quote-placeholder.mjs`.
54
+ - "It worked when I ran it" with no test.
55
+
56
+ ## Adding a provider
57
+
58
+ 1. Create `src/data/providers/<name>.mjs`.
59
+ 2. Export a `health()` plus the ops you actually implement.
60
+ 3. Register it in `src/data/catalog.mjs` with truthful `chainIds`, `auth`, `ops`,
61
+ and `execution` tier.
62
+ 4. Add a test with a mocked transport. Do not require a live network for CI.
63
+ 5. If it needs a key, the health check must report
64
+ `{ ok: false, configured: false }` rather than throwing.
65
+
66
+ ## Adding a chain
67
+
68
+ 1. Add an entry to `CHAINS` in `src/chains.mjs` with its `rpcEnv` names.
69
+ 2. Verify every router/venue address on-chain (`eth_getCode` must return real
70
+ bytecode) before adding it to `src/venues.mjs`.
71
+ 3. Comment each venue addition with how you verified it and when.
72
+ 4. An unverified chain stays fail-closed. That is a safe state, not a gap.
73
+
74
+ Never allowlist a router you found only in a blog post or a model's answer. The
75
+ destination allowlist is the highest-leverage control in the system.
76
+
77
+ ## Commits and PRs
78
+
79
+ Conventional prefixes: `fix:`, `feat:`, `refactor:`, `docs:`, `test:`, `chore:`.
80
+
81
+ In the PR body, state:
82
+
83
+ - what broke or what's new
84
+ - how you verified it (paste the real command output)
85
+ - whether anything touches the custody boundary
86
+
87
+ Small, reviewable PRs get merged. A 3000-line PR mixing a refactor with a policy
88
+ change will sit.
89
+
90
+ ## Style
91
+
92
+ - ES modules, Node 20+, no build step.
93
+ - No new runtime dependency without a reason in the PR description.
94
+ - Comments explain *why*, not *what*. If a line encodes a hard-won fact — a
95
+ provider's unit quirk, a revert cause — say so, and say how it was learned.
96
+
97
+ ## License
98
+
99
+ Contributions are accepted under the repository's then-current outbound license in [LICENSE](LICENSE). Current source is BUSL-1.1; npm releases `0.1.0` through `0.11.0` remain Apache-2.0.
package/README.md CHANGED
@@ -3,11 +3,7 @@
3
3
  ## Quickstart (standalone CLI)
4
4
 
5
5
  ```bash
6
- # Oracle is distributed to Locals Only holders. Prove ownership at the gate,
7
- # then install the artifact it returns:
8
- oracle gate status # if you already have a build
9
- curl -fL -o oracle.tgz "$ORACLE_GATE_LINK" && npm i -g ./oracle.tgz
10
- # Node >= 20.19
6
+ npm i -g @oracle-agent/oracle # Node >= 20.19
11
7
  oracle --version
12
8
  oracle auth login claude # or codex / grok
13
9
  oracle # native Oracle chat
@@ -18,6 +14,13 @@ Prefer an API key instead? `oracle auth api-key openrouter` accepts hidden
18
14
  interactive input. `oracle auth status` reports providers without printing
19
15
  credentials. Linux, Windows, and macOS apps are in beta.
20
16
 
17
+ The CLI, source, and desktop beta are public to everyone. Locals Only holders
18
+ receive a 0% Oracle integrator fee; the NFT does not gate product access.
19
+
20
+ Hyperliquid perp orders disclose Oracle's 5 bps builder code. The exact address,
21
+ approval flow, wire units, and separation from the Locals Only waiver are documented in
22
+ [Hyperliquid builder code](docs/hyperliquid-builder-code.md).
23
+
21
24
 
22
25
  **Prepare-only multichain agent control plane.** Policy-bounded intents; your wallet signs.
23
26
 
@@ -37,7 +40,7 @@ private `0600` local fallback when keychain storage is unavailable.
37
40
 
38
41
  This package is **prepare-only**: it never takes a private key and never
39
42
  broadcasts. The owner-operated signer/executor is private infrastructure, is
40
- not published on npm, and is not part of holder onboarding. Never paste a seed,
43
+ not published on npm, and is not part of public onboarding. Never paste a seed,
41
44
  private key, vault passphrase, or signer token into Oracle chat.
42
45
 
43
46
  ---
@@ -71,7 +74,7 @@ const prepared = await data.call("hl-perps", "prepareOrder", {
71
74
  ```
72
75
 
73
76
  See [SETUP.md](SETUP.md) for clean installation and troubleshooting,
74
- [docs/holder-beta.md](docs/holder-beta.md) for the Locals-only launch gate, and
77
+ [docs/locals-only-fee-waiver.md](docs/locals-only-fee-waiver.md) for the 0% holder fee, and
75
78
  [docs/buzz-integration.md](docs/buzz-integration.md) for the Buzz HTTP contract.
76
79
 
77
80
  ---
@@ -181,12 +184,11 @@ oracle-scan risk base 0x8335...2913 # structural checks + sell simulation
181
184
  oracle-scan sell base 0x8335...2913 # round trip: can you actually exit?
182
185
  ```
183
186
 
184
- **8 of 11 chains ship verified venues**: Ethereum, Optimism, BNB, Polygon, Base,
185
- Arbitrum, Avalanche, and Robinhood Chain. They have all 10 capabilities including
186
- live quotes, round-trip sell simulation, and unsigned swap preparation. The remaining
187
- three (Stable, HyperEVM, Abstract) are at 7 and **fail-closed for routing value** until
188
- someone verifies a venue: read and research work, moving money does not. That is a safe
189
- default, not a gap.
187
+ All 11 built-in EVM chains currently report the full 10-capability scanner
188
+ matrix, including live quote, sell simulation, and unsigned preparation where
189
+ the selected provider supports that operation. Capability coverage is not a
190
+ claim that every protocol supports every action; unsupported paths still fail
191
+ closed.
190
192
 
191
193
  Every venue address was verified **functionally, not by codesize** — a re-runnable
192
194
  prober (`scripts/verify-v3-venues.mjs`) asks each candidate to price a pair with a
@@ -262,8 +264,12 @@ capability-labeled per chain; unconfigured venues stay unavailable instead of fa
262
264
 
263
265
  ## Install
264
266
 
267
+ Install the full public package from npm, or use the public desktop downloads at
268
+ https://oracle.demi.la/downloads/. No wallet or NFT is required. Node `20.19.0`
269
+ or newer is required for the CLI.
270
+
265
271
  ```bash
266
- npm install @oracle-agent/oracle # Node >= 20.19.0
272
+ npm i -g @oracle-agent/oracle
267
273
  ```
268
274
 
269
275
  Or from source, if you want to run the suite:
package/SECURITY.md CHANGED
@@ -27,8 +27,7 @@ In scope:
27
27
  - grant forgery, replay, or scope escalation
28
28
  - route/vault/order attestation forgery
29
29
  - secret leakage through an API response or log
30
- - holder-gate bypass, challenge replay, or cross-user data access in an official
31
- hosted beta
30
+ - fee-waiver misclassification or cross-user data access in an official hosted service
32
31
  - Buzz capability forgery or audit-chain tampering
33
32
 
34
33
  Out of scope:
@@ -56,9 +55,8 @@ Consequences of that assumption, which are the invariants worth attacking:
56
55
  targets require an attestation minted inside the trusted boundary.
57
56
  5. **Guards are recomputed at sign and broadcast time**, not just at quote time,
58
57
  because a stale minimum is not a minimum.
59
- 6. **The shipped public HTTP server is not a holder-authentication service.** It
60
- is loopback-only and rate limited, but unauthenticated. A hosted Locals beta
61
- needs a separate server-side ownership gate and per-user isolation.
58
+ 6. **The shipped public HTTP server is unauthenticated.** It is loopback-only and
59
+ rate limited. A hosted service needs ordinary authentication and per-user isolation.
62
60
 
63
61
  If you find a path where model-authored text becomes an authorized on-chain
64
62
  action without an owner signature and a policy check, that is the bug we most
@@ -109,6 +107,6 @@ still apply after the public boundary hardening:
109
107
  secret scanning depend on repository visibility and account tier. Verify the
110
108
  live settings; do not infer them from this document. The local CI boundary,
111
109
  packed-artifact, and secret-scan gates remain mandatory.
112
- 8. **Holder admission is deployment code.** The npm package does not prove
113
- Locals ownership or isolate hosted tenants. See
114
- [docs/holder-beta.md](docs/holder-beta.md) before exposing any shared surface.
110
+ 8. **Locals Only is fee policy, not admission.** Oracle access is public. The NFT
111
+ only waives Oracle's integrator fee; hosted user isolation remains a separate
112
+ deployment responsibility.
package/SETUP.md CHANGED
@@ -5,7 +5,7 @@ research, quote, simulate, and build unsigned artifacts. It does not need Hermes
5
5
  it does not accept wallet private keys, and it does not broadcast transactions.
6
6
 
7
7
  The owner-operated signer/executor is private infrastructure. It is not published
8
- on npm and is not part of public or holder onboarding.
8
+ on npm and is not part of public onboarding.
9
9
 
10
10
  ## Requirements
11
11
 
@@ -19,21 +19,18 @@ Linux, Windows, and macOS apps are in beta.
19
19
  ## 1. Install the standalone CLI
20
20
 
21
21
  ```bash
22
- npm view @oracle-agent/oracle version
23
- # Oracle is distributed to Locals Only holders. Prove ownership at the gate,
24
- # then install the artifact it returns:
25
- oracle gate status # if you already have a build
26
- curl -fL -o oracle.tgz "$ORACLE_GATE_LINK" && npm i -g ./oracle.tgz
22
+ npm i -g @oracle-agent/oracle
27
23
  oracle --version
28
24
  ```
29
25
 
30
- The npm `latest` tag is the install source of truth. The repository can contain
31
- an unreleased next version, so do not infer the published version from a branch.
26
+ npm `latest` is the public CLI installation source of truth. Locals Only
27
+ ownership is not required to install or use Oracle; holders receive a 0% Oracle
28
+ integrator fee.
32
29
 
33
30
  For a project-local library install instead:
34
31
 
35
32
  ```bash
36
- npm i @oracle-agent/oracle@latest
33
+ npm i @oracle-agent/oracle
37
34
  ```
38
35
 
39
36
  The package declares this floor through `engines`; `oracle doctor` treats an
@@ -146,11 +143,9 @@ The public plane binds to `127.0.0.1` and exposes read, connect, grant,
146
143
  portfolio, approval, prepare, Buzz-auth, and audit contracts. It has no signer,
147
144
  key, send, execute, or broadcast route.
148
145
 
149
- The service is rate limited but unauthenticated. It is **not** a Locals-holder
150
- gate and must not be exposed directly to the internet, LAN, or tailnet. A hosted
151
- deployment needs a controlled reverse proxy, TLS, edge limits, and the
152
- server-side holder gate described in
153
- [holder-beta.md](docs/holder-beta.md).
146
+ The service is rate limited but unauthenticated and must not be exposed directly
147
+ to the internet, LAN, or tailnet. A hosted deployment needs a controlled reverse
148
+ proxy, TLS, edge limits, authentication, and per-user isolation.
154
149
 
155
150
  Verify liveness only after starting it:
156
151
 
@@ -171,9 +166,8 @@ oracle setup gateway start
171
166
  ```
172
167
 
173
168
  Interactive bot-token entry is hidden. Do not use `--token` in a normal shell;
174
- arguments can be retained in history or visible to other local processes. For a
175
- holder beta, do not run one shared messaging bot without a separate holder
176
- admission layer and per-user session isolation.
169
+ arguments can be retained in history or visible to other local processes. Do not
170
+ run one shared messaging bot without authentication and per-user session isolation.
177
171
 
178
172
  ## Public wallet addresses and portfolio reads
179
173
 
@@ -211,15 +205,19 @@ expiry, approvals, and fees in the user's wallet. Oracle's public package stops
211
205
  before signing. Report success only after a real transaction hash, successful
212
206
  receipt, and expected balance or state change.
213
207
 
214
- ## Locals-only holder beta
208
+ ## Locals Only fee waiver
215
209
 
216
- Current release status is **HOLD for a holder-gated hosted launch**. The package
217
- is safe to distribute for local read/research/prepare use, but this repository
218
- does not contain an integrated Locals ownership gate. UI hiding, a wallet text
219
- field, or possession of a URL is not access control.
210
+ Oracle access is public. A Locals Only NFT only waives Oracle's integrator fee.
211
+ Use `oracle fees status` to check the configured wallet. See
212
+ [locals-only-fee-waiver.md](docs/locals-only-fee-waiver.md).
220
213
 
221
- Do not invite holders to a hosted surface until every required gate in
222
- [holder-beta.md](docs/holder-beta.md) passes.
214
+ ## Hyperliquid builder code
215
+
216
+ Eligible Hyperliquid perp orders disclose the separate 5 bps builder code before
217
+ wallet review, including orders prepared for Locals Only holders. The Locals Only
218
+ waiver does not waive the Hyperliquid builder fee. The main wallet must separately
219
+ sign the revocable maximum-fee approval; Oracle only prepares that action. See
220
+ [hyperliquid-builder-code.md](docs/hyperliquid-builder-code.md).
223
221
 
224
222
  ## Buzz integration
225
223
 
@@ -241,12 +239,12 @@ A clean standalone install can legitimately show warnings for:
241
239
  - `hermes_lanes` before optional `oracle init --apply`.
242
240
 
243
241
  A Node-version failure is blocking. Signing warnings are irrelevant to the
244
- public holder path because signing is not installed there.
242
+ public package because signing is not installed there.
245
243
 
246
244
  ## Upgrade
247
245
 
248
246
  ```bash
249
- curl -fL -o oracle.tgz "$ORACLE_GATE_LINK" && npm i -g ./oracle.tgz
247
+ npm i -g @oracle-agent/oracle@latest
250
248
  oracle --version
251
249
  oracle doctor
252
250
  ```
@@ -313,7 +311,7 @@ as a workaround.
313
311
 
314
312
  - [CLI reference](docs/cli.md)
315
313
  - [Public API and environment surface](docs/public-surface.md)
316
- - [Locals-holder beta launch gate](docs/holder-beta.md)
314
+ - [Locals Only 0% fee waiver](docs/locals-only-fee-waiver.md)
317
315
  - [Buzz integration](docs/buzz-integration.md)
318
316
  - [Architecture](docs/architecture.md)
319
317
  - [Security policy](SECURITY.md)