@oracle-agent/oracle 0.14.1 → 0.16.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 (450) hide show
  1. package/README.md +2 -2
  2. package/SETUP.md +4 -4
  3. package/dist/action-receipts.mjs +1 -0
  4. package/dist/action-semantics.mjs +1 -0
  5. package/dist/address-book.mjs +2 -0
  6. package/dist/bin/desk-server.mjs +60 -0
  7. package/dist/bin/oracle-data-mcp.mjs +9 -0
  8. package/dist/bin/oracle-equities.mjs +20 -0
  9. package/dist/bin/oracle-init.mjs +24 -0
  10. package/dist/bin/oracle-public-server.mjs +5 -0
  11. package/dist/bin/oracle-route.mjs +22 -0
  12. package/dist/bin/oracle-scan.mjs +18 -0
  13. package/dist/bin/oracle-upgrade.mjs +21 -0
  14. package/dist/bin/oracle.mjs +63 -0
  15. package/dist/chains.mjs +1 -0
  16. package/dist/cli/commands/auth.mjs +16 -0
  17. package/dist/cli/commands/bootstrap.mjs +18 -0
  18. package/dist/cli/commands/chain.mjs +21 -0
  19. package/dist/cli/commands/chat.mjs +45 -0
  20. package/dist/cli/commands/credential.mjs +1 -0
  21. package/dist/cli/commands/data-mcp.mjs +2 -0
  22. package/dist/cli/commands/data.mjs +12 -0
  23. package/dist/cli/commands/doctor.mjs +5 -0
  24. package/dist/cli/commands/equities.mjs +15 -0
  25. package/dist/cli/commands/farm.mjs +59 -0
  26. package/dist/cli/commands/fees.mjs +10 -0
  27. package/dist/cli/commands/follow.mjs +28 -0
  28. package/dist/cli/commands/harness.mjs +15 -0
  29. package/dist/cli/commands/help.mjs +1 -0
  30. package/dist/cli/commands/init.mjs +3 -0
  31. package/dist/cli/commands/mcp.mjs +36 -0
  32. package/dist/cli/commands/model.mjs +54 -0
  33. package/dist/cli/commands/plugins.mjs +43 -0
  34. package/dist/cli/commands/prepare.mjs +2 -0
  35. package/dist/cli/commands/public.mjs +3 -0
  36. package/dist/cli/commands/resolve.mjs +23 -0
  37. package/dist/cli/commands/route.mjs +2 -0
  38. package/dist/cli/commands/runner.mjs +1 -0
  39. package/dist/cli/commands/scan.mjs +2 -0
  40. package/dist/cli/commands/setup.mjs +34 -0
  41. package/dist/cli/commands/sign.mjs +4 -0
  42. package/dist/cli/commands/signer.mjs +1 -0
  43. package/dist/cli/commands/strategy.mjs +18 -0
  44. package/dist/cli/commands/swap.mjs +36 -0
  45. package/dist/cli/commands/upgrade.mjs +2 -0
  46. package/dist/cli/commands/vault.mjs +1 -0
  47. package/dist/cli/commands/version.mjs +2 -0
  48. package/dist/data/desk-data.mjs +55 -0
  49. package/dist/data/names.mjs +2 -0
  50. package/dist/data/providers/farming.mjs +2 -0
  51. package/dist/equities/index.mjs +1 -0
  52. package/dist/index.mjs +60 -0
  53. package/dist/nft-gas-war-guard.mjs +1 -0
  54. package/dist/onboarding/harness-configs.mjs +4 -0
  55. package/dist/portfolio-risk.mjs +1 -0
  56. package/dist/prepare-envelope.mjs +1 -0
  57. package/dist/public-api/agent-grants.mjs +3 -0
  58. package/dist/public-control/policy-schema.mjs +1 -0
  59. package/dist/router/index.mjs +2 -0
  60. package/dist/scanner/index.mjs +4 -0
  61. package/dist/signals/index.mjs +1 -0
  62. package/dist/strategy/index.mjs +3 -0
  63. package/dist/watch-preferences.mjs +1 -0
  64. package/package.json +33 -78
  65. package/public/oracle-splash/_variants/ice.html +5 -18
  66. package/public/oracle-splash/_variants/ivory.html +5 -18
  67. package/public/oracle-splash/downloads/index.html +4 -4
  68. package/public/oracle-splash/index.html +113 -34
  69. package/CONTRIBUTING.md +0 -99
  70. package/bin/desk-server.mjs +0 -473
  71. package/bin/oracle-data-mcp.mjs +0 -1252
  72. package/bin/oracle-equities.mjs +0 -168
  73. package/bin/oracle-init.mjs +0 -525
  74. package/bin/oracle-public-server.mjs +0 -36
  75. package/bin/oracle-route.mjs +0 -254
  76. package/bin/oracle-scan.mjs +0 -192
  77. package/bin/oracle-upgrade.mjs +0 -42
  78. package/bin/oracle.mjs +0 -34
  79. package/docs/adding-a-chain.md +0 -229
  80. package/docs/architecture.md +0 -139
  81. package/docs/buzz-integration.md +0 -115
  82. package/docs/cli.md +0 -143
  83. package/docs/connectors.md +0 -13
  84. package/docs/hyperliquid-builder-code.md +0 -50
  85. package/docs/locals-only-fee-waiver.md +0 -34
  86. package/docs/oracle-pack-standard.md +0 -29
  87. package/docs/profiles.md +0 -151
  88. package/docs/public-surface.md +0 -206
  89. package/examples/add-a-chain.mjs +0 -65
  90. package/examples/oracle-pack-template.mjs +0 -38
  91. package/examples/research-a-token.mjs +0 -70
  92. package/plugins/oracle-owner-gate/__init__.py +0 -288
  93. package/plugins/oracle-owner-gate/plugin.yaml +0 -9
  94. package/protocols/templates/safe-erc20/SECURITY.md +0 -16
  95. package/protocols/templates/safe-erc20/foundry.toml +0 -12
  96. package/protocols/templates/safe-erc20/remappings.txt +0 -2
  97. package/protocols/templates/safe-erc20/src/SafeERC20.sol +0 -53
  98. package/protocols/templates/safe-erc20/test/SafeERC20.t.sol +0 -72
  99. package/scripts/adversarial-bench.mjs +0 -114
  100. package/scripts/build-dist.mjs +0 -119
  101. package/scripts/build-inscription.py +0 -230
  102. package/scripts/check-doc-drift.mjs +0 -123
  103. package/scripts/check-test-count.mjs +0 -105
  104. package/scripts/e2e-hl-markets.mjs +0 -21
  105. package/scripts/e2e-hl-perps.mjs +0 -48
  106. package/scripts/e2e-hypercore-staking.mjs +0 -128
  107. package/scripts/e2e-solana-bitcoin.mjs +0 -183
  108. package/scripts/guard-publish.mjs +0 -22
  109. package/scripts/protocol-template-gate.mjs +0 -15
  110. package/scripts/public-api-scan.mjs +0 -23
  111. package/scripts/publish-dist.mjs +0 -67
  112. package/scripts/record-hero-cli.sh +0 -80
  113. package/scripts/secret-scan.mjs +0 -169
  114. package/scripts/smoke-dist-bins.mjs +0 -89
  115. package/scripts/verify-dist.mjs +0 -29
  116. package/scripts/verify-v3-venues.mjs +0 -233
  117. package/skins/oracle.yaml +0 -56
  118. package/src/action-receipts.mjs +0 -265
  119. package/src/action-semantics.mjs +0 -62
  120. package/src/address-book.mjs +0 -208
  121. package/src/agent-auth.mjs +0 -206
  122. package/src/approval-guard.mjs +0 -282
  123. package/src/attestation-secret.mjs +0 -94
  124. package/src/audit-log.mjs +0 -196
  125. package/src/auth/oauth.mjs +0 -672
  126. package/src/auto-slippage.mjs +0 -378
  127. package/src/capability-posture.mjs +0 -125
  128. package/src/cards.mjs +0 -422
  129. package/src/chains.mjs +0 -62
  130. package/src/cli/chain-catalog.mjs +0 -215
  131. package/src/cli/chain-state.mjs +0 -74
  132. package/src/cli/commands/auth.mjs +0 -193
  133. package/src/cli/commands/bootstrap.mjs +0 -87
  134. package/src/cli/commands/chain.mjs +0 -143
  135. package/src/cli/commands/chat.mjs +0 -465
  136. package/src/cli/commands/credential.mjs +0 -9
  137. package/src/cli/commands/data-mcp.mjs +0 -18
  138. package/src/cli/commands/data.mjs +0 -75
  139. package/src/cli/commands/doctor.mjs +0 -136
  140. package/src/cli/commands/equities.mjs +0 -41
  141. package/src/cli/commands/farm.mjs +0 -129
  142. package/src/cli/commands/fees.mjs +0 -109
  143. package/src/cli/commands/follow.mjs +0 -130
  144. package/src/cli/commands/harness.mjs +0 -63
  145. package/src/cli/commands/help.mjs +0 -7
  146. package/src/cli/commands/init.mjs +0 -27
  147. package/src/cli/commands/mcp.mjs +0 -154
  148. package/src/cli/commands/model.mjs +0 -106
  149. package/src/cli/commands/plugins.mjs +0 -275
  150. package/src/cli/commands/prepare.mjs +0 -12
  151. package/src/cli/commands/public.mjs +0 -20
  152. package/src/cli/commands/resolve.mjs +0 -64
  153. package/src/cli/commands/route.mjs +0 -12
  154. package/src/cli/commands/runner.mjs +0 -9
  155. package/src/cli/commands/scan.mjs +0 -12
  156. package/src/cli/commands/setup.mjs +0 -294
  157. package/src/cli/commands/sign.mjs +0 -21
  158. package/src/cli/commands/signer.mjs +0 -9
  159. package/src/cli/commands/swap.mjs +0 -102
  160. package/src/cli/commands/upgrade.mjs +0 -12
  161. package/src/cli/commands/vault.mjs +0 -9
  162. package/src/cli/commands/version.mjs +0 -22
  163. package/src/cli/first-run.mjs +0 -23
  164. package/src/cli/kernel.mjs +0 -262
  165. package/src/cli/mcp-targets/chatgpt.mjs +0 -51
  166. package/src/cli/mcp-targets/claude-code.mjs +0 -39
  167. package/src/cli/mcp-targets/claude-desktop.mjs +0 -24
  168. package/src/cli/mcp-targets/codex.mjs +0 -41
  169. package/src/cli/mcp-targets/cursor.mjs +0 -32
  170. package/src/cli/mcp-targets/shared.mjs +0 -71
  171. package/src/cli/mcp-targets/vscode.mjs +0 -39
  172. package/src/cli/messaging-platforms.mjs +0 -217
  173. package/src/cli/model-config.mjs +0 -78
  174. package/src/cli/operator-dispatch.mjs +0 -194
  175. package/src/cli/oracle-harness.py +0 -415
  176. package/src/cli/paths.mjs +0 -107
  177. package/src/cli/runtime.mjs +0 -351
  178. package/src/cli/setup-state.mjs +0 -168
  179. package/src/cli/spawn-child.mjs +0 -43
  180. package/src/data/catalog.mjs +0 -858
  181. package/src/data/desk-data.mjs +0 -877
  182. package/src/data/http.mjs +0 -253
  183. package/src/data/names.mjs +0 -188
  184. package/src/data/provider-endpoint.mjs +0 -94
  185. package/src/data/providers/aave-v3.mjs +0 -139
  186. package/src/data/providers/across-bridge.mjs +0 -41
  187. package/src/data/providers/aerodrome.mjs +0 -245
  188. package/src/data/providers/aevo.mjs +0 -33
  189. package/src/data/providers/approval-indexer.mjs +0 -133
  190. package/src/data/providers/approvals.mjs +0 -594
  191. package/src/data/providers/babylon-staking.mjs +0 -149
  192. package/src/data/providers/balancer.mjs +0 -209
  193. package/src/data/providers/beefy-yields.mjs +0 -45
  194. package/src/data/providers/birdeye-tokens.mjs +0 -33
  195. package/src/data/providers/bisq-markets.mjs +0 -145
  196. package/src/data/providers/bitcoin-esplora.mjs +0 -216
  197. package/src/data/providers/bitcoin-meta.mjs +0 -378
  198. package/src/data/providers/blockscout.mjs +0 -14
  199. package/src/data/providers/bob-rootstock.mjs +0 -198
  200. package/src/data/providers/braiins-insights.mjs +0 -103
  201. package/src/data/providers/bridge-aggregator.mjs +0 -259
  202. package/src/data/providers/bridges.mjs +0 -242
  203. package/src/data/providers/bungee.mjs +0 -29
  204. package/src/data/providers/celestia-da.mjs +0 -38
  205. package/src/data/providers/changenow.mjs +0 -135
  206. package/src/data/providers/compound.mjs +0 -32
  207. package/src/data/providers/connext.mjs +0 -28
  208. package/src/data/providers/convex.mjs +0 -30
  209. package/src/data/providers/cow-protocol.mjs +0 -110
  210. package/src/data/providers/cowswap.mjs +0 -415
  211. package/src/data/providers/curve.mjs +0 -201
  212. package/src/data/providers/das-assets.mjs +0 -59
  213. package/src/data/providers/debridge.mjs +0 -109
  214. package/src/data/providers/defillama.mjs +0 -88
  215. package/src/data/providers/dexscreener.mjs +0 -43
  216. package/src/data/providers/drift.mjs +0 -32
  217. package/src/data/providers/dydx.mjs +0 -41
  218. package/src/data/providers/evm-rpc.mjs +0 -225
  219. package/src/data/providers/farming.mjs +0 -291
  220. package/src/data/providers/geckoterminal.mjs +0 -34
  221. package/src/data/providers/gmx.mjs +0 -496
  222. package/src/data/providers/hiro-stacks.mjs +0 -150
  223. package/src/data/providers/hl-assets.mjs +0 -165
  224. package/src/data/providers/hl-info.mjs +0 -108
  225. package/src/data/providers/hl-markets.mjs +0 -210
  226. package/src/data/providers/hl-outcome.mjs +0 -61
  227. package/src/data/providers/hl-perps.mjs +0 -419
  228. package/src/data/providers/hl-staking.mjs +0 -353
  229. package/src/data/providers/hl-ws.mjs +0 -119
  230. package/src/data/providers/hyperevm-dex.mjs +0 -49
  231. package/src/data/providers/jito-mev.mjs +0 -117
  232. package/src/data/providers/jupiter-venues.mjs +0 -119
  233. package/src/data/providers/jupiter.mjs +0 -315
  234. package/src/data/providers/kamino-strategies.mjs +0 -143
  235. package/src/data/providers/l2beat-tvl.mjs +0 -42
  236. package/src/data/providers/lifi.mjs +0 -166
  237. package/src/data/providers/liquid-esplora.mjs +0 -152
  238. package/src/data/providers/magiceden-ordinals.mjs +0 -141
  239. package/src/data/providers/magiceden-sol.mjs +0 -406
  240. package/src/data/providers/mempool-lightning.mjs +0 -144
  241. package/src/data/providers/mempool-mining.mjs +0 -142
  242. package/src/data/providers/meteora-dlmm.mjs +0 -168
  243. package/src/data/providers/morpho.mjs +0 -177
  244. package/src/data/providers/nft-gallery.mjs +0 -163
  245. package/src/data/providers/nft-portfolio.mjs +0 -494
  246. package/src/data/providers/odos.mjs +0 -156
  247. package/src/data/providers/ondo.mjs +0 -31
  248. package/src/data/providers/oneinch.mjs +0 -174
  249. package/src/data/providers/opensea-multichain.mjs +0 -136
  250. package/src/data/providers/opensea-nft.mjs +0 -371
  251. package/src/data/providers/orca.mjs +0 -29
  252. package/src/data/providers/ordinals-runes.mjs +0 -180
  253. package/src/data/providers/pancakeswap.mjs +0 -28
  254. package/src/data/providers/paraswap.mjs +0 -125
  255. package/src/data/providers/pendle.mjs +0 -188
  256. package/src/data/providers/poly-clob.mjs +0 -283
  257. package/src/data/providers/poly-public.mjs +0 -96
  258. package/src/data/providers/poly-ws.mjs +0 -103
  259. package/src/data/providers/polygon-staking.mjs +0 -227
  260. package/src/data/providers/portfolio-history.mjs +0 -394
  261. package/src/data/providers/portfolio.mjs +0 -600
  262. package/src/data/providers/pyth-price-feeds.mjs +0 -172
  263. package/src/data/providers/raydium.mjs +0 -35
  264. package/src/data/providers/relayscan-mev.mjs +0 -72
  265. package/src/data/providers/rfq.mjs +0 -15
  266. package/src/data/providers/rh-agent.mjs +0 -59
  267. package/src/data/providers/sanctum-lst.mjs +0 -180
  268. package/src/data/providers/satflow.mjs +0 -341
  269. package/src/data/providers/signed-material-guard.mjs +0 -108
  270. package/src/data/providers/solana-rpc.mjs +0 -197
  271. package/src/data/providers/solend-lending.mjs +0 -166
  272. package/src/data/providers/spark-lend.mjs +0 -42
  273. package/src/data/providers/squid-router.mjs +0 -29
  274. package/src/data/providers/stargate.mjs +0 -29
  275. package/src/data/providers/sushiswap.mjs +0 -30
  276. package/src/data/providers/symbiotic-restaking.mjs +0 -41
  277. package/src/data/providers/thorchain.mjs +0 -36
  278. package/src/data/providers/traderjoe.mjs +0 -28
  279. package/src/data/providers/twap.mjs +0 -152
  280. package/src/data/providers/uniswap-v3.mjs +0 -457
  281. package/src/data/providers/uniswap-v4.mjs +0 -414
  282. package/src/data/providers/vertex.mjs +0 -41
  283. package/src/data/providers/wallet-watch.mjs +0 -264
  284. package/src/data/providers/wormhole.mjs +0 -28
  285. package/src/data/providers/yearn.mjs +0 -31
  286. package/src/data/providers/zerox.mjs +0 -167
  287. package/src/data/public-api-scan.mjs +0 -61
  288. package/src/data/quote-placeholder.mjs +0 -31
  289. package/src/desk/swap-prepare.mjs +0 -194
  290. package/src/equities/bridge.mjs +0 -388
  291. package/src/equities/fixtures/bridge_routes.json +0 -159
  292. package/src/equities/fixtures/dst_transitions.json +0 -29
  293. package/src/equities/fixtures/equity_dex_pools.json +0 -154
  294. package/src/equities/fixtures/hip3_l2books.json +0 -2711
  295. package/src/equities/fixtures/nyse_holidays.json +0 -1
  296. package/src/equities/fixtures/oracles.json +0 -100
  297. package/src/equities/fixtures/rh_pool_state.json +0 -244
  298. package/src/equities/fixtures/solana_xstocks.json +0 -704
  299. package/src/equities/fixtures/ton_xstocks.json +0 -35
  300. package/src/equities/fixtures/universe.json +0 -411
  301. package/src/equities/fixtures/venues.json +0 -3542
  302. package/src/equities/fixtures.mjs +0 -405
  303. package/src/equities/funding.mjs +0 -142
  304. package/src/equities/index.mjs +0 -166
  305. package/src/equities/liveness.mjs +0 -148
  306. package/src/equities/marketHours.mjs +0 -249
  307. package/src/equities/normalize.mjs +0 -295
  308. package/src/equities/num.mjs +0 -146
  309. package/src/equities/prepare.mjs +0 -95
  310. package/src/equities/rank.mjs +0 -260
  311. package/src/equities/sourceNum.mjs +0 -69
  312. package/src/equities/types.mjs +0 -220
  313. package/src/equities/venues/arcus-perp.mjs +0 -84
  314. package/src/equities/venues/arcus-spot.mjs +0 -105
  315. package/src/equities/venues/hyperliquid-hip3.mjs +0 -224
  316. package/src/equities/venues/rh-uniswap.mjs +0 -216
  317. package/src/equities/venues/solana-xstocks.mjs +0 -139
  318. package/src/equities/venues/ton-stonfi.mjs +0 -139
  319. package/src/exact-integer.mjs +0 -72
  320. package/src/exec-policy.mjs +0 -419
  321. package/src/flags.mjs +0 -15
  322. package/src/fresh-window.mjs +0 -76
  323. package/src/gmx-attestation.mjs +0 -176
  324. package/src/index.mjs +0 -107
  325. package/src/licensing/locals-only.mjs +0 -25
  326. package/src/nft-gas-war-guard.mjs +0 -139
  327. package/src/onboarding/agent-keys.mjs +0 -161
  328. package/src/onboarding/harness-configs.mjs +0 -102
  329. package/src/onboarding/index.mjs +0 -18
  330. package/src/onboarding/tiers.mjs +0 -139
  331. package/src/oracle-env.mjs +0 -55
  332. package/src/package-manifest.mjs +0 -42
  333. package/src/plugins/agent-plugin-loader.mjs +0 -225
  334. package/src/portfolio-risk.mjs +0 -170
  335. package/src/prepare-envelope.mjs +0 -204
  336. package/src/profile-upgrade.mjs +0 -277
  337. package/src/protocol-execution.mjs +0 -84
  338. package/src/protocol-templates/gate.mjs +0 -179
  339. package/src/protocol-templates/prepare-deploy.mjs +0 -81
  340. package/src/public-api/agent-grants.mjs +0 -57
  341. package/src/public-api/buzz-integration.mjs +0 -267
  342. package/src/public-api/connect-agent.mjs +0 -424
  343. package/src/public-api/grants.mjs +0 -142
  344. package/src/public-api/http.mjs +0 -707
  345. package/src/public-api/metering.mjs +0 -111
  346. package/src/public-control/aa-adapter.mjs +0 -402
  347. package/src/public-control/build-registry.mjs +0 -227
  348. package/src/public-control/bundler-client.mjs +0 -357
  349. package/src/public-control/grant-indexer.mjs +0 -296
  350. package/src/public-control/policy-render.mjs +0 -69
  351. package/src/public-control/policy-schema.mjs +0 -322
  352. package/src/public-control/runtime-config.mjs +0 -275
  353. package/src/public-control/session-key-model.mjs +0 -379
  354. package/src/public-control/session-orchestrator.mjs +0 -418
  355. package/src/rfq/intent.mjs +0 -180
  356. package/src/rfq/sources.mjs +0 -181
  357. package/src/route-attestation.mjs +0 -132
  358. package/src/router/best-execution.mjs +0 -326
  359. package/src/router/index.mjs +0 -250
  360. package/src/router/integrator-fee.mjs +0 -135
  361. package/src/router/prepare-bridge.mjs +0 -293
  362. package/src/router/prepare-route.mjs +0 -398
  363. package/src/router/proposal.mjs +0 -311
  364. package/src/router/risk-classifier.mjs +0 -119
  365. package/src/router/route-sources.mjs +0 -364
  366. package/src/scanner/chains.config.mjs +0 -543
  367. package/src/scanner/contract.mjs +0 -270
  368. package/src/scanner/evm-scanner.mjs +0 -394
  369. package/src/scanner/index.mjs +0 -9
  370. package/src/scanner/v2-venue.mjs +0 -351
  371. package/src/scanner/v3-venue.mjs +0 -308
  372. package/src/scopes.mjs +0 -44
  373. package/src/sell-simulation.mjs +0 -167
  374. package/src/signals/engine.mjs +0 -146
  375. package/src/signals/index.mjs +0 -1
  376. package/src/token-transfer-guard.mjs +0 -188
  377. package/src/tui/app.mjs +0 -438
  378. package/src/tui/backend.mjs +0 -215
  379. package/src/tui/format.mjs +0 -272
  380. package/src/tui/gateway-client.mjs +0 -177
  381. package/src/tui/input.mjs +0 -501
  382. package/src/tui/memory.mjs +0 -105
  383. package/src/tui/meta-learn.mjs +0 -85
  384. package/src/tui/renderer.mjs +0 -443
  385. package/src/tui/scheduler.mjs +0 -205
  386. package/src/tui/skills-loader.mjs +0 -140
  387. package/src/tui/standalone-client.mjs +0 -752
  388. package/src/tui/theme.mjs +0 -81
  389. package/src/vault-attestation.mjs +0 -146
  390. package/src/venues.mjs +0 -206
  391. package/src/watch-preferences.mjs +0 -85
  392. /package/{profiles → dist/assets/profiles}/_template/SOUL.md +0 -0
  393. /package/{profiles → dist/assets/profiles}/_template/profile.json +0 -0
  394. /package/{profiles → dist/assets/profiles}/bitcoin-agent/SOUL.md +0 -0
  395. /package/{profiles → dist/assets/profiles}/bitcoin-agent/profile.json +0 -0
  396. /package/{profiles → dist/assets/profiles}/hyperliquid-agent/SOUL.md +0 -0
  397. /package/{profiles → dist/assets/profiles}/hyperliquid-agent/profile.json +0 -0
  398. /package/{profiles → dist/assets/profiles}/oracle/SOUL.md +0 -0
  399. /package/{profiles → dist/assets/profiles}/oracle/profile.json +0 -0
  400. /package/{profiles → dist/assets/profiles}/polymarket-agent/SOUL.md +0 -0
  401. /package/{profiles → dist/assets/profiles}/polymarket-agent/profile.json +0 -0
  402. /package/{profiles → dist/assets/profiles}/profile.schema.json +0 -0
  403. /package/{profiles → dist/assets/profiles}/protocol-builder/SOUL.md +0 -0
  404. /package/{profiles → dist/assets/profiles}/protocol-builder/profile.json +0 -0
  405. /package/{profiles → dist/assets/profiles}/robinhood-agent/SOUL.md +0 -0
  406. /package/{profiles → dist/assets/profiles}/robinhood-agent/profile.json +0 -0
  407. /package/{profiles → dist/assets/profiles}/solana-agent/SOUL.md +0 -0
  408. /package/{profiles → dist/assets/profiles}/solana-agent/profile.json +0 -0
  409. /package/{profiles → dist/assets/profiles}/stable-agent/SOUL.md +0 -0
  410. /package/{profiles → dist/assets/profiles}/stable-agent/profile.json +0 -0
  411. /package/{skills → dist/assets/skills}/balance/SKILL.md +0 -0
  412. /package/{skills → dist/assets/skills}/bitcoin-l1.md +0 -0
  413. /package/{skills → dist/assets/skills}/chain-defi-ecosystem-profiling.md +0 -0
  414. /package/{skills → dist/assets/skills}/evm-contract-research.md +0 -0
  415. /package/{skills → dist/assets/skills}/hyperliquid.md +0 -0
  416. /package/{skills → dist/assets/skills}/multichain-exec-desk.md +0 -0
  417. /package/{skills → dist/assets/skills}/oracle-action-semantics/SKILL.md +0 -0
  418. /package/{skills → dist/assets/skills}/oracle-best-execution/SKILL.md +0 -0
  419. /package/{skills → dist/assets/skills}/oracle-best-execution.md +0 -0
  420. /package/{skills → dist/assets/skills}/oracle-bitcoin/SKILL.md +0 -0
  421. /package/{skills → dist/assets/skills}/oracle-chain-graphs-telegram-cards/SKILL.md +0 -0
  422. /package/{skills → dist/assets/skills}/oracle-chat/SKILL.md +0 -0
  423. /package/{skills → dist/assets/skills}/oracle-chat/chain.SKILL.md +0 -0
  424. /package/{skills → dist/assets/skills}/oracle-chat/setup.SKILL.md +0 -0
  425. /package/{skills → dist/assets/skills}/oracle-circuit-breaker/SKILL.md +0 -0
  426. /package/{skills → dist/assets/skills}/oracle-contract-research/SKILL.md +0 -0
  427. /package/{skills → dist/assets/skills}/oracle-desk/SKILL.md +0 -0
  428. /package/{skills → dist/assets/skills}/oracle-desk.md +0 -0
  429. /package/{skills → dist/assets/skills}/oracle-dex-launch/SKILL.md +0 -0
  430. /package/{skills → dist/assets/skills}/oracle-equities/SKILL.md +0 -0
  431. /package/{skills → dist/assets/skills}/oracle-grants/SKILL.md +0 -0
  432. /package/{skills → dist/assets/skills}/oracle-hypercore-staking/SKILL.md +0 -0
  433. /package/{skills → dist/assets/skills}/oracle-hyperliquid/SKILL.md +0 -0
  434. /package/{skills → dist/assets/skills}/oracle-meme-token-sniper/SKILL.md +0 -0
  435. /package/{skills → dist/assets/skills}/oracle-multichain-nft-launch/SKILL.md +0 -0
  436. /package/{skills → dist/assets/skills}/oracle-multichain-token-launch/SKILL.md +0 -0
  437. /package/{skills → dist/assets/skills}/oracle-nft-gacha-launch/SKILL.md +0 -0
  438. /package/{skills → dist/assets/skills}/oracle-nft-mint-gas-war/SKILL.md +0 -0
  439. /package/{skills → dist/assets/skills}/oracle-polymarket/SKILL.md +0 -0
  440. /package/{skills → dist/assets/skills}/oracle-protocol-builder/SKILL.md +0 -0
  441. /package/{skills → dist/assets/skills}/oracle-protocol-security/SKILL.md +0 -0
  442. /package/{skills → dist/assets/skills}/oracle-public-product/SKILL.md +0 -0
  443. /package/{skills → dist/assets/skills}/oracle-receipts/SKILL.md +0 -0
  444. /package/{skills → dist/assets/skills}/oracle-receipts.md +0 -0
  445. /package/{skills → dist/assets/skills}/oracle-rfq-tokenized-assets/SKILL.md +0 -0
  446. /package/{skills → dist/assets/skills}/oracle-smart-wallet-scanner/SKILL.md +0 -0
  447. /package/{skills → dist/assets/skills}/oracle-solana/SKILL.md +0 -0
  448. /package/{skills → dist/assets/skills}/oracle-solana-nft/SKILL.md +0 -0
  449. /package/{skills → dist/assets/skills}/oracle-token-research/SKILL.md +0 -0
  450. /package/{skills → dist/assets/skills}/solana.md +0 -0
@@ -1,229 +0,0 @@
1
- # Adding a chain
2
-
3
- Oracle treats a chain as **configuration**. You do not write an integration.
4
-
5
- ## The short version
6
-
7
- ```js
8
- import { registerCustomChain } from "@oracle-agent/oracle/scanner";
9
-
10
- registerCustomChain({
11
- key: "mychain",
12
- chainId: 7777,
13
- name: "My Chain",
14
- rpcEnv: ["MYCHAIN_RPC_URL"],
15
- nativeCurrency: { symbol: "MYC", decimals: 18 },
16
- });
17
- ```
18
-
19
- That chain now has block reads, native and ERC-20 balances, on-chain token
20
- resolution, log scanning, and structural risk checks. No code was written.
21
-
22
- ```bash
23
- export MYCHAIN_RPC_URL=https://rpc.mychain.example
24
- oracle-scan head mychain
25
- ```
26
-
27
- ## Config fields
28
-
29
- | Field | Required | Notes |
30
- |---|---|---|
31
- | `key` | yes | lowercase slug, used on the CLI |
32
- | `chainId` | yes | positive integer |
33
- | `name` | yes | display name |
34
- | `rpcEnv` | yes | env var names, `UPPER_SNAKE`. Never a literal URL |
35
- | `nativeCurrency` | no | `{ symbol, decimals }` |
36
- | `explorer` | no | base URL |
37
- | `dexscreenerSlug` | no | enables pool discovery — see below |
38
- | `venues` | no | verified routers/quoters — required for routing value |
39
-
40
- **RPC URLs live in the environment, never in config.** A repo carrying an endpoint
41
- is both a leak and a rate-limit problem for whoever else uses that key.
42
-
43
- ## Why `dexscreenerSlug` matters
44
-
45
- Pool discovery goes through market data rather than walking a factory. A factory
46
- walk finds pools that *exist*; a trader needs pools with *liquidity*.
47
-
48
- The slug is DexScreener's own chain identifier — not the chain id, and not always
49
- the obvious name. If you don't know it, **leave it out**. Pool discovery then
50
- reports `UNAVAILABLE`, which is honest. A wrong slug silently returns another
51
- chain's pools, which is worse than no answer.
52
-
53
- ## Adding venues (routing value)
54
-
55
- A chain with no verified venue is **fail-closed**: read and research work, routing
56
- value does not. That is a safe default, not a gap.
57
-
58
- To enable routing you must record *provenance*:
59
-
60
- ```js
61
- venues: [
62
- {
63
- kind: "router",
64
- address: "0x...",
65
- verified: {
66
- method: "eth_getCode + protocol /chains API",
67
- source: "https://li.quest/v1/chains",
68
- date: "2026-07-30",
69
- },
70
- },
71
- ]
72
- ```
73
-
74
- Validation **refuses** a venue without `verified`. This is not bureaucracy: the
75
- destination allowlist is the highest-leverage control in the system, and
76
- allowlisting a spoofed router makes every other guard irrelevant.
77
-
78
- ### How to actually verify
79
-
80
- 1. **Bytecode exists** — `eth_getCode` must return real code. `0x` means nothing is
81
- deployed at that address on that chain.
82
- 2. **The protocol's own API or docs** names that address, for that chain, today.
83
- Query the source (e.g. LI.FI's `/v1/chains` returns each chain's official
84
- `diamondAddress`) rather than trusting a blog post or a model's recollection.
85
- 3. **Constructor-bound addresses match** — read `factory()`, `WETH9()` back off the
86
- deployed contract and confirm they're what you expect.
87
- 4. **Per chain, separately.** An address verified on Arbitrum is not verified on
88
- Ethereum, even when the canonical deployment shares an address across chains.
89
-
90
- Record how and when. The audit trail has to outlive your session.
91
-
92
- ## Capabilities
93
-
94
- Ten capabilities exist. The generic EVM scanner provides seven out of the box:
95
-
96
- | Capability | Generic? | Why |
97
- |---|---|---|
98
- | `blockNumber` | yes | standard RPC |
99
- | `nativeBalance` | yes | standard RPC |
100
- | `tokenBalance` | yes | ERC-20 is ERC-20 |
101
- | `resolveToken` | yes | reads metadata off the contract |
102
- | `resolvePools` | yes* | needs `dexscreenerSlug` |
103
- | `scanBlocks` | yes | chunked `eth_getLogs` |
104
- | `scoreRisk` | yes | structural checks |
105
- | `quote` | venue | needs a verified router |
106
- | `sellSimulation` | venue | needs a verified router |
107
- | `prepareUnsignedTx` | venue | needs a verified router |
108
-
109
- Calling an unimplemented capability **throws**, naming what is supported. It never
110
- returns `undefined` that a caller could mistake for "no result."
111
-
112
- ## Enabling quote / sell / prepare
113
-
114
- Add a verified router plus two fields:
115
-
116
- ```js
117
- {
118
- key: "base",
119
- chainId: 8453,
120
- // ...
121
- venueKind: "uniswap-v2",
122
- wrappedNative: "0x4200000000000000000000000000000000000006",
123
- venues: [{ kind: "router", address: "0x...", verified: { /* ... */ } }],
124
- }
125
- ```
126
-
127
- `src/scanner/chains.config.mjs` ships **Base** wired this way as the reference. It
128
- gets all 10 capabilities; every other built-in stays at 7 and fail-closed until
129
- someone verifies a venue for it.
130
-
131
- What you get:
132
-
133
- - **`quote`** — live exact-input pricing via `getAmountsOut`
134
- - **`sellSimulation`** — a state-free round trip (buy then sell back) that catches
135
- the honeypot signature: buy leg quotes fine, sell leg fails. This is the single
136
- most valuable check on a low-cap venue, because most losses are not bad entries
137
- but tokens that cannot be exited
138
- - **`prepareUnsignedTx`** — an **unsigned** swap with a `minOut` computed from the
139
- live quote, a deadline, and an explicit `approve` step listed separately so
140
- "approved" and "swapped" are never collapsed into one claim
141
-
142
- `scoreRisk` also upgrades automatically: with a router it reports real sellability
143
- instead of `UNKNOWN`.
144
-
145
- ### The slippage ceiling is hard
146
-
147
- A supplied `slippageBps` is a **maximum**, capped at 100 bps. Above that,
148
- `prepareUnsignedTx` throws rather than widening:
149
-
150
- ```
151
- slippageBps 250 exceeds the 100 bps ceiling. Block and requote or split
152
- the order -- do not widen the guard to force a fill.
153
- ```
154
-
155
- A cap that yields under pressure is decoration.
156
-
157
- ### V3 / V4 / custom quoters
158
-
159
- Two adapters ship:
160
-
161
- | `venueKind` | Requires | Prices via |
162
- |---|---|---|
163
- | `uniswap-v2` | `router` | `getAmountsOut` on the router |
164
- | `uniswap-v3` | `quoter` **and** `router` | `quoteExactInputSingle` on QuoterV2 |
165
-
166
- V3 is **not** V2 with different addresses: it has no `getAmountsOut`, prices through
167
- a separate Quoter contract, and needs an explicit fee tier per hop. Encoding a V3
168
- swap with V2 assumptions yields a transaction that reverts, or worse routes through
169
- the wrong pool. That is why they are sibling adapters.
170
-
171
- The V3 adapter searches all four fee tiers (100 / 500 / 3000 / 10000) and keeps the
172
- best. This is necessary, not a nicety — liquidity concentrates in one tier and which
173
- tier varies by pair and chain. On Arbitrum WETH→USDC the 500 tier returns ~2.4% more
174
- than the 100 tier; defaulting to 0.3% because it is the common choice silently
175
- misprices stable and exotic pairs alike.
176
-
177
- A V3 chain needs **both** a quoter and a router. A router alone stays fail-closed:
178
- it could encode a swap, but with no priced expectation to guard against — exactly
179
- the state that produces an unbounded fill.
180
-
181
- **V4 and custom-quoter venues still need their own adapter.** Some forks require an
182
- off-chain signed quote you cannot produce locally. Write a sibling module rather
183
- than bending an existing one; silently mis-encoding a swap is far worse than
184
- declaring the capability unsupported.
185
-
186
- ### Verifying a venue: run the prober
187
-
188
- `scripts/verify-v3-venues.mjs` probes candidate addresses on every chain and prints
189
- a pass/fail with the live price it got:
190
-
191
- ```bash
192
- node scripts/verify-v3-venues.mjs
193
- ```
194
-
195
- **Codesize is not verification.** The canonical mainnet QuoterV2 address returns
196
- 2109 bytes of bytecode on Base — it is *some* contract, just not a working quoter
197
- for that chain. A codesize check waves it through; the functional probe caught it
198
- and pointed at Base's real quoter (8273 bytes, prices WETH→USDC correctly).
199
-
200
- The rule: **a contract that correctly prices a pair you can sanity-check IS the
201
- thing you think it is.** Anything less is a guess with an address attached.
202
-
203
- ## Honest evidence
204
-
205
- Every finding carries a label. Respect the distinction:
206
-
207
- - `LIVE` — read this call
208
- - `CACHED` — recent, within stated TTL
209
- - `STALE` — older than TTL; usable only with the caveat stated
210
- - `UNKNOWN` — we tried and could not determine it
211
- - `UNAVAILABLE` — this chain/provider cannot answer at all
212
-
213
- `UNKNOWN` and `UNAVAILABLE` are different facts. Collapsing them is how people end
214
- up sizing against stale reserves.
215
-
216
- Risk verdicts are coarse on purpose — `PASS` / `CAUTION` / `FAIL` / `UNKNOWN`. A
217
- score like "risk 62/100" invites trading a number nobody understands.
218
-
219
- **`UNKNOWN` is not `PASS`.** The generic scanner returns `UNKNOWN` for sellability
220
- because it cannot prove exitability without a verified router. A token is not
221
- tradeable until a round-trip sell simulation succeeds.
222
-
223
- ## Contributing a chain upstream
224
-
225
- Append to `CHAIN_CONFIGS` in `src/scanner/chains.config.mjs` and open a PR. Tests
226
- already assert every built-in config validates and that none embeds an RPC URL, so
227
- CI will catch a malformed entry.
228
-
229
- If you add venues, put the verification method and date in the PR body.
@@ -1,139 +0,0 @@
1
- # Architecture
2
-
3
- Three planes. The boundary between them is enforced by a test, not a convention.
4
-
5
- ```
6
- user's wallet
7
- ^
8
- | signs (only the user can)
9
- |
10
- +---------------------+---------------------+
11
- | unsigned artifacts |
12
- | |
13
- | PUBLIC (this repo) |
14
- | |
15
- | data plane read / quote |
16
- | policy plane allowlists, guards, |
17
- | attestations, grants |
18
- | control plane grant lifecycle, |
19
- | session keys, AA, router |
20
- +-------------------------------------------+
21
- |
22
- x no import may cross
23
- |
24
- +-------------------------------------------+
25
- | OWNER-LOCAL (private infrastructure) |
26
- | separately installed by the owner |
27
- | key-vault / hl-exec / oracle-vault |
28
- +-------------------------------------------+
29
- ```
30
-
31
- ## Why three planes
32
-
33
- The design assumption is that **the model can be wrong or adversarially steered**.
34
- Everything follows from treating it as an untrusted proposer.
35
-
36
- If the model is untrusted, then authorization cannot come from the model. It comes
37
- from an owner signature over a bounded grant. And if authorization is separate from
38
- proposal, then the code that proposes must be unable to reach the code that signs —
39
- otherwise the separation is aspirational.
40
-
41
- That is why the boundary is a test (`test/custody-boundary.test.mjs`) rather than a
42
- paragraph in a README. It walks the import graph from every shipped entrypoint and
43
- fails on:
44
-
45
- - any public module importing signer or key material
46
- - a dangling local import that reaches a signer from a shipped entrypoint
47
- - a secret-shaped literal anywhere
48
- - a packed npm artifact that still contains signer/vault modules
49
-
50
- ## Data plane
51
-
52
- `src/data/` — 70 provider modules covering 219 unique protocols/venues, each
53
- declaring an honest tier. One module can cover many protocols: the Jupiter
54
- module alone routes 98 Solana venues.
55
-
56
- | Tier | Meaning |
57
- |---|---|
58
- | `read-only` | data only; no execution claim |
59
- | `quote-only` | can price a route; no reviewed transaction builder |
60
- | `prepare` | returns a policy-bound unsigned transaction |
61
- | `intent` | returns typed data to sign (CoW orders, GMX orders) |
62
-
63
- The tier is load-bearing. "We support protocol X" is ambiguous and has caused real
64
- confusion; the tier is not. **API coverage ≠ execution support.**
65
-
66
- `src/data/catalog.mjs` is the registry; `dataHealth()` probes liveness. Note the
67
- distinction in health output: a promise that resolved with `{ok: false}` is
68
- *degraded*, not healthy — and an HTTP 200 serving an explorer error page is not a
69
- successful read.
70
-
71
- ## Policy plane
72
-
73
- The moat. Holds no keys; constrains what a signer may be asked to do.
74
-
75
- - **Destination allowlist** (`src/venues.mjs`) — per chain, fail-closed. An empty
76
- allowlist refuses everything. It never means "allow anything."
77
- - **Auto-slippage** (`src/auto-slippage.mjs`) — a guard computed from live depth and
78
- volatility per leg, recomputed before each broadcast. A caller-supplied tolerance
79
- is a *maximum*, not the selected value. Hard ceiling 100 bps; over that, block and
80
- requote rather than widen.
81
- - **Attestations** (`route-`, `vault-`, `gmx-attestation.mjs`) — dynamic execution
82
- targets require an attestation minted inside the trusted boundary. Model-authored
83
- JSON is not authorization.
84
- - **Approval guard** — exact-amount approvals, never unlimited by default, with
85
- allowance read back after the approve lands.
86
-
87
- Guards are re-checked at **sign and broadcast** time. A stale minimum is not a
88
- minimum.
89
-
90
- ## Control plane
91
-
92
- `src/public-control/` — grant schema and rendering, session-key model, ERC-4337
93
- adapter, bundler client, grant indexer.
94
-
95
- `src/router/` — model routing with a custody firewall. `risk-classifier.mjs` scores
96
- an action's risk; `proposal.mjs` refuses to construct a proposal containing
97
- dangerous fields (private keys, mnemonics, bearer tokens) at any nesting depth. The
98
- router can propose, simulate, explain, and draft. It cannot authorize.
99
-
100
- ## Scanner framework
101
-
102
- `src/scanner/` — makes a chain data rather than an integration.
103
-
104
- - `contract.mjs` — 10 capabilities, a validator, a registry, coverage matrix
105
- - `evm-scanner.mjs` — one generic implementation for any EVM JSON-RPC chain
106
- - `chains.config.mjs` — the 11 built-ins as config, plus `registerCustomChain()`
107
-
108
- Unimplemented capabilities are **absent, not faked**: calling one throws a message
109
- naming what *is* supported. A caller can never mistake `undefined` for a negative
110
- result.
111
-
112
- Evidence labels (`LIVE` / `CACHED` / `STALE` / `UNKNOWN` / `UNAVAILABLE`) and risk
113
- verdicts (`PASS` / `CAUTION` / `FAIL` / `UNKNOWN`) exist to stop the collapse that
114
- causes losses: **`UNKNOWN` is not `PASS`**, and "we could not check" is a different
115
- fact from "there is nothing there."
116
-
117
- ## Agent mesh
118
-
119
- `profiles/` + `skills/` — seven installable Hermes lanes plus a template.
120
-
121
- A lane is narrow on purpose: smaller context is cheaper and more accurate, per-lane
122
- memory doesn't cross-contaminate, and a grant scoped to one lane can't be spent by
123
- another.
124
-
125
- Every lane ships DISARMED, and every grant action a lane may request is read,
126
- simulate, or prepare. No lane may request broadcast or signing — enforced in
127
- `test/profiles.test.mjs`, so widening custody cannot pass review quietly.
128
-
129
- No lane pins a model. `profile.json` carries a capability *class*
130
- (`strong-reasoner`, `fast-tool-caller`), so the installer never writes a vendor into
131
- a user's config.
132
-
133
- ## What is not in the public package
134
-
135
- House custody, an always-on exec server, and capability minting are not shipped.
136
- Owner-local signer modules (`key-vault`, `hl-exec`, `oracle-vault`) live only in
137
- separately installed private infrastructure on the owner's machine. They are not
138
- published on npm or available to holder installs. This prepare package has
139
- nothing to steal: it never takes a key and never broadcasts.
@@ -1,115 +0,0 @@
1
- # Buzz integration
2
-
3
- Oracle exposes an unsigned public HTTP contract for Buzz. Buzz calls Oracle over
4
- HTTP; it does not import or embed the private signer/executor.
5
-
6
- ## Current boundary
7
-
8
- - Plane: public read, connect, grant, auth verification, and audit.
9
- - Custody: user signs grants and capabilities in the user's wallet.
10
- - Posture: `DISARMED`.
11
- - Private keys: never accepted.
12
- - Broadcast: unavailable from the public server.
13
- - Conversational Oracle embedding: separate Buzz client work; the HTTP contract
14
- alone does not create a persistent Oracle chat session.
15
-
16
- Source: `src/public-api/buzz-integration.mjs`.
17
-
18
- ## Start locally
19
-
20
- ```bash
21
- oracle public serve --port 8799
22
- curl -fsS http://127.0.0.1:8799/public/health
23
- curl -fsS http://127.0.0.1:8799/public/buzz
24
- ```
25
-
26
- The server binds to loopback. Source code or a static Oracle website is not proof
27
- that the API is running. Check `/public/health` on the deployment you intend to
28
- use before enabling a Buzz client.
29
-
30
- ## Discovery and capability flow
31
-
32
- Buzz begins with:
33
-
34
- ```http
35
- GET /public/buzz
36
- ```
37
-
38
- The returned discovery object is the contract source of truth for the running
39
- server. The current API family includes:
40
-
41
- - `GET /public/health`
42
- - `GET /public/config`
43
- - `POST /public/connect/request`
44
- - `POST /public/connect/assemble`
45
- - `POST /public/grants/active`
46
- - `POST /public/grants/get`
47
- - `POST /public/buzz/auth/preimage`
48
- - `POST /public/buzz/auth/verify`
49
- - `POST /public/buzz/audit/append`
50
- - `POST /public/buzz/audit/verify`
51
- - `POST /public/buzz/audit/entries`
52
-
53
- Do not hardcode this list without checking discovery; a deployment can lag the
54
- source tree.
55
-
56
- The client asks Oracle for the exact capability preimage, the owner wallet signs
57
- that preimage, and Oracle verifies the supplied capability. The server never
58
- mints a capability with a house key.
59
-
60
- ## Audit contract
61
-
62
- Buzz public events append to a SHA-256 hash chain. The server restricts public
63
- audit actions and scans details for secret material before append and response.
64
- A valid audit entry proves the hash-chain record exists; it does not prove an
65
- on-chain action executed. On-chain success still requires a real transaction
66
- hash, successful receipt, and expected state change.
67
-
68
- ## Hard prohibitions
69
-
70
- Buzz must never use this integration to:
71
-
72
- - reach a private executor or owner wallet;
73
- - request, store, or forward private keys, seed phrases, vault passphrases,
74
- signer tokens, provider keys, or bot tokens;
75
- - mint server-side capabilities with a house key;
76
- - treat a verified capability as blanket execution authority;
77
- - expose Oracle's loopback service directly to the internet;
78
- - mix holder sessions, memories, portfolios, grants, or audit streams;
79
- - describe prepare, sign-request, or queue state as execution.
80
-
81
- ## Hosted deployment
82
-
83
- For a hosted Buzz integration, place Buzz's authenticated backend in front of
84
- Oracle's loopback public server. Use TLS, strict origin and audience binding,
85
- short-lived sessions, rate limits, request-size caps, redacted logs, and a
86
- controlled proxy that overwrites forwarded-IP headers.
87
-
88
- A hosted Buzz service requires server-side authentication and per-user isolation.
89
- Locals Only ownership only changes Oracle's integrator fee and does not grant or
90
- restrict Buzz access.
91
-
92
- ## Conversational Oracle in Buzz
93
-
94
- Embedding the full Oracle conversation requires a separate bridge:
95
-
96
- 1. Buzz authenticates the user and holder session.
97
- 2. Buzz assigns a distinct Oracle session/profile namespace per user.
98
- 3. Buzz streams responses and renders structured tool results as Buzz cards.
99
- 4. The Oracle session receives only public read/prepare tools.
100
- 5. Wallet review and signatures stay in the Buzz client or user's wallet.
101
- 6. Owner/operator tools and DEMI's sessions are never mounted into that tenant.
102
-
103
- Until that bridge exists and passes isolation tests, say **“Buzz HTTP contract
104
- available”**, not **“Oracle chat is integrated into Buzz.”**
105
-
106
- ## Release verification
107
-
108
- ```bash
109
- npm run test:boundary
110
- npm test
111
- npm run scan:secrets
112
- ```
113
-
114
- Then verify the exact deployed URL and discovery response. A passing source test
115
- does not prove a remote deployment is live.
package/docs/cli.md DELETED
@@ -1,143 +0,0 @@
1
- # Oracle unified CLI
2
-
3
- Root command: `oracle <noun> <verb> [args]`.
4
-
5
- The public `@oracle-agent/oracle` CLI is standalone and prepare-only. Hermes is
6
- optional. The public package does not import a signer, hold a wallet key, submit,
7
- or broadcast.
8
-
9
- ## Install and first run
10
-
11
- ```bash
12
- npm i -g @oracle-agent/oracle # Node >= 20.19
13
- oracle --version
14
- oracle auth login claude # or codex / grok
15
- oracle
16
- oracle doctor
17
- ```
18
-
19
- API-key users can run `oracle auth api-key <provider>`; interactive input is
20
- hidden. Do not pass credentials as command-line arguments. Linux, Windows, and
21
- macOS apps are in beta.
22
-
23
- ## Command groups
24
-
25
- ### Chat and model authentication
26
-
27
- ```bash
28
- oracle
29
- oracle chat
30
- oracle chat -q "research HYPE funding"
31
- oracle auth login claude|codex|grok
32
- oracle auth api-key openrouter|openai|xai|deepseek|gemini|custom
33
- oracle auth status [--json]
34
- oracle auth logout <provider>
35
- oracle model
36
- oracle model --show
37
- oracle model --provider <provider> --model <model>
38
- ```
39
-
40
- OAuth and stored API keys use the OS credential store when available and a
41
- private `0600` local fallback otherwise. Status output never prints credentials.
42
-
43
- ### Chain selection
44
-
45
- ```bash
46
- oracle chain list
47
- oracle chain use hyperliquid
48
- oracle chain show
49
- oracle chain clear
50
- ```
51
-
52
- Inside chat, `/chain` lists or selects the active chain. Chain selection changes
53
- routing context, not custody or authorization.
54
-
55
- ### Read, research, and prepare
56
-
57
- ```bash
58
- oracle scan --help
59
- oracle route --help
60
- oracle data serve
61
- oracle public serve --port 8799
62
- oracle doctor [--json]
63
- ```
64
-
65
- `oracle data serve` binds the local read plane to `127.0.0.1:8787`.
66
- `oracle public serve` binds the unsigned public HTTP plane to loopback. Neither
67
- command creates authentication. Do not expose either port directly.
68
-
69
- ### Optional Hermes integration
70
-
71
- ```bash
72
- oracle bootstrap [--status|--upgrade]
73
- oracle init # dry run
74
- oracle init --apply
75
- oracle setup
76
- oracle setup telegram --allowed-users <id>
77
- oracle setup messaging
78
- oracle setup gateway [status|start|stop|restart]
79
- ```
80
-
81
- `oracle bootstrap` installs an isolated compatibility runtime and never modifies
82
- system Python. `oracle init --apply` writes specialist profiles and local
83
- attestation configuration; it does not write a wallet private key.
84
-
85
- Messaging token prompts are hidden. Avoid `--token` in a normal shell because
86
- arguments can be retained in history or visible to other local users.
87
-
88
- ### MCP connectors
89
-
90
- ```bash
91
- oracle mcp install claude-code
92
- oracle mcp install claude-desktop
93
- oracle mcp install codex
94
- oracle mcp install chatgpt
95
- oracle mcp install cursor
96
- oracle-data-mcp
97
- ```
98
-
99
- See [connectors.md](connectors.md). Connector installation exposes public
100
- read/prepare tools only unless a separate owner-operated boundary is explicitly
101
- installed and verified.
102
-
103
- ## Chat commands
104
-
105
- - `/chain` — list or select the active chain.
106
- - `/setup` — optional messaging setup.
107
- - `/model` — switch models; the persona remains Oracle.
108
-
109
- Terminal and configured messaging channels can enter the same Hermes profile,
110
- but the transport and selected model never create authority. Shared hosted
111
- sessions must remain isolated and read/prepare-only.
112
-
113
- ## Exit codes
114
-
115
- | Code | Meaning |
116
- |---:|---|
117
- | `0` | success |
118
- | `1` | usage, configuration, or general error |
119
- | `2` | separately installed operator reported an error |
120
- | `3` | private operator command requested but unavailable |
121
- | `4` | required local data server not running |
122
-
123
- ## Doctor semantics
124
-
125
- A standalone public install can legitimately warn that the optional data server,
126
- Hermes runtime, profiles, or signer are absent. A Node-version failure is
127
- blocking. Signing readiness is not required for the public package.
128
-
129
- ## Safety semantics
130
-
131
- - Read, quote, simulate, and prepare are not execution.
132
- - The wallet address in a preparation request must be the real signer.
133
- - A prepared artifact is inert until a user-controlled wallet signs it.
134
- - A signature request or transaction hash is not a successful receipt.
135
- - No CLI flag turns a public install into DEMI's operator lane.
136
- - A shared hosted service needs server-side authentication and per-user isolation.
137
-
138
- ## More
139
-
140
- - [Full setup](../SETUP.md)
141
- - [Public surface and environment variables](public-surface.md)
142
- - [Locals Only 0% fee waiver](locals-only-fee-waiver.md)
143
- - [Buzz integration](buzz-integration.md)
@@ -1,13 +0,0 @@
1
- # Oracle AI-client connectors
2
-
3
- ChatGPT is hosted and can NEVER sign or reach your keys. This connector is read/prepare only; anything it prepares is unsigned until you sign it locally.
4
-
5
- ```bash
6
- oracle mcp print --target claude-code
7
- oracle mcp install claude-code
8
- oracle mcp install codex
9
- oracle mcp install chatgpt
10
- oracle mcp install claude-code --with-control # requires local operator
11
- ```
12
-
13
- Oracle does not create tunnels for hosted clients.
@@ -1,50 +0,0 @@
1
- # Hyperliquid builder code
2
-
3
- Oracle's Hyperliquid order preparer discloses and attaches this builder code to eligible perp orders:
4
-
5
- - Builder address: `0x4d47B6757aFd42c3dbd9691b71B43d74Afa4b6b2`
6
- - Oracle perps fee: **5 basis points** (`0.05%`)
7
- - Hyperliquid order wire value: `builder: { "b": "0x4d47B6757aFd42c3dbd9691b71B43d74Afa4b6b2", "f": 50 }`
8
-
9
- Hyperliquid expresses `f` in tenths of a basis point, so `f: 50` means 5 basis points. This is separate from the 10 basis point same-chain swap tier and from Hyperliquid's own trading fees.
10
-
11
- ## Locals Only
12
-
13
- Locals Only ownership only changes Oracle's integrator-fee rate. It does not waive the Hyperliquid builder fee, which is a separate venue mechanism. Eligible holder and non-holder perp orders carry the same disclosed builder parameter. This is not an access gate. Holders and non-holders use the same public package, markets, order preparation, and wallet handoff.
14
-
15
- ## One-time approval
16
-
17
- Before Hyperliquid accepts an order carrying this builder code, the user must approve a maximum fee for the builder address with an `ApproveBuilderFee` action:
18
-
19
- ```json
20
- {
21
- "type": "approveBuilderFee",
22
- "builder": "0x4d47B6757aFd42c3dbd9691b71B43d74Afa4b6b2",
23
- "maxFeeRate": "0.05%",
24
- "nonce": 0
25
- }
26
- ```
27
-
28
- The nonce is replaced at preparation time. Hyperliquid requires the **main wallet**, not an agent or API wallet, to sign this approval. The approval is revocable. Oracle prepares the action but never signs or submits it.
29
-
30
- The approved maximum can be checked with Hyperliquid's read-only info request:
31
-
32
- ```json
33
- {
34
- "type": "maxBuilderFee",
35
- "user": "0xUSER",
36
- "builder": "0x4d47B6757aFd42c3dbd9691b71B43d74Afa4b6b2"
37
- }
38
- ```
39
-
40
- ## Builder-account requirements
41
-
42
- Hyperliquid requires the builder address to:
43
-
44
- 1. Use Manual / Standard account mode.
45
- 2. Maintain at least 100 USDC in perps account value.
46
- 3. Use standard account abstraction for builder-fee accrual.
47
-
48
- The public preparer does not inject a signature, approval, API-wallet credential, or broadcast call. `hlPrepareBuilderFeeApproval()` returns the unsigned approval envelope, while `hlPreparePerpOrder()` and `hlPrepareBracketOrder()` disclose the builder address and fee before wallet review.
49
-
50
- Official specification: [Hyperliquid builder codes](https://hyperliquid.gitbook.io/hyperliquid-docs/trading/builder-codes).