@oracle-agent/oracle 0.14.1 → 0.15.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.
- package/README.md +2 -2
- package/SETUP.md +4 -4
- package/dist/action-receipts.mjs +1 -0
- package/dist/action-semantics.mjs +1 -0
- package/dist/address-book.mjs +2 -0
- package/dist/bin/desk-server.mjs +59 -0
- package/dist/bin/oracle-data-mcp.mjs +8 -0
- package/dist/bin/oracle-equities.mjs +20 -0
- package/dist/bin/oracle-init.mjs +24 -0
- package/dist/bin/oracle-public-server.mjs +5 -0
- package/dist/bin/oracle-route.mjs +22 -0
- package/dist/bin/oracle-scan.mjs +18 -0
- package/dist/bin/oracle-upgrade.mjs +21 -0
- package/dist/bin/oracle.mjs +61 -0
- package/dist/chains.mjs +1 -0
- package/dist/cli/commands/auth.mjs +16 -0
- package/dist/cli/commands/bootstrap.mjs +18 -0
- package/dist/cli/commands/chain.mjs +21 -0
- package/dist/cli/commands/chat.mjs +45 -0
- package/dist/cli/commands/credential.mjs +1 -0
- package/dist/cli/commands/data-mcp.mjs +2 -0
- package/dist/cli/commands/data.mjs +12 -0
- package/dist/cli/commands/doctor.mjs +5 -0
- package/dist/cli/commands/equities.mjs +15 -0
- package/dist/cli/commands/farm.mjs +59 -0
- package/dist/cli/commands/fees.mjs +10 -0
- package/dist/cli/commands/follow.mjs +28 -0
- package/dist/cli/commands/harness.mjs +15 -0
- package/dist/cli/commands/help.mjs +1 -0
- package/dist/cli/commands/init.mjs +3 -0
- package/dist/cli/commands/mcp.mjs +36 -0
- package/dist/cli/commands/model.mjs +54 -0
- package/dist/cli/commands/plugins.mjs +43 -0
- package/dist/cli/commands/prepare.mjs +2 -0
- package/dist/cli/commands/public.mjs +3 -0
- package/dist/cli/commands/resolve.mjs +23 -0
- package/dist/cli/commands/route.mjs +2 -0
- package/dist/cli/commands/runner.mjs +1 -0
- package/dist/cli/commands/scan.mjs +2 -0
- package/dist/cli/commands/setup.mjs +34 -0
- package/dist/cli/commands/sign.mjs +4 -0
- package/dist/cli/commands/signer.mjs +1 -0
- package/dist/cli/commands/swap.mjs +36 -0
- package/dist/cli/commands/upgrade.mjs +2 -0
- package/dist/cli/commands/vault.mjs +1 -0
- package/dist/cli/commands/version.mjs +2 -0
- package/dist/data/desk-data.mjs +55 -0
- package/dist/data/names.mjs +2 -0
- package/dist/data/providers/farming.mjs +2 -0
- package/dist/equities/index.mjs +1 -0
- package/dist/index.mjs +60 -0
- package/dist/nft-gas-war-guard.mjs +1 -0
- package/dist/onboarding/harness-configs.mjs +4 -0
- package/dist/portfolio-risk.mjs +1 -0
- package/dist/prepare-envelope.mjs +1 -0
- package/dist/public-api/agent-grants.mjs +3 -0
- package/dist/public-control/policy-schema.mjs +1 -0
- package/dist/router/index.mjs +2 -0
- package/dist/scanner/index.mjs +4 -0
- package/dist/signals/index.mjs +1 -0
- package/dist/watch-preferences.mjs +1 -0
- package/package.json +32 -78
- package/public/oracle-splash/_variants/ice.html +5 -18
- package/public/oracle-splash/_variants/ivory.html +5 -18
- package/public/oracle-splash/index.html +114 -34
- package/CONTRIBUTING.md +0 -99
- package/bin/desk-server.mjs +0 -473
- package/bin/oracle-data-mcp.mjs +0 -1252
- package/bin/oracle-equities.mjs +0 -168
- package/bin/oracle-init.mjs +0 -525
- package/bin/oracle-public-server.mjs +0 -36
- package/bin/oracle-route.mjs +0 -254
- package/bin/oracle-scan.mjs +0 -192
- package/bin/oracle-upgrade.mjs +0 -42
- package/bin/oracle.mjs +0 -34
- package/docs/adding-a-chain.md +0 -229
- package/docs/architecture.md +0 -139
- package/docs/buzz-integration.md +0 -115
- package/docs/cli.md +0 -143
- package/docs/connectors.md +0 -13
- package/docs/hyperliquid-builder-code.md +0 -50
- package/docs/locals-only-fee-waiver.md +0 -34
- package/docs/oracle-pack-standard.md +0 -29
- package/docs/profiles.md +0 -151
- package/docs/public-surface.md +0 -206
- package/examples/add-a-chain.mjs +0 -65
- package/examples/oracle-pack-template.mjs +0 -38
- package/examples/research-a-token.mjs +0 -70
- package/plugins/oracle-owner-gate/__init__.py +0 -288
- package/plugins/oracle-owner-gate/plugin.yaml +0 -9
- package/protocols/templates/safe-erc20/SECURITY.md +0 -16
- package/protocols/templates/safe-erc20/foundry.toml +0 -12
- package/protocols/templates/safe-erc20/remappings.txt +0 -2
- package/protocols/templates/safe-erc20/src/SafeERC20.sol +0 -53
- package/protocols/templates/safe-erc20/test/SafeERC20.t.sol +0 -72
- package/scripts/adversarial-bench.mjs +0 -114
- package/scripts/build-dist.mjs +0 -119
- package/scripts/build-inscription.py +0 -230
- package/scripts/check-doc-drift.mjs +0 -123
- package/scripts/check-test-count.mjs +0 -105
- package/scripts/e2e-hl-markets.mjs +0 -21
- package/scripts/e2e-hl-perps.mjs +0 -48
- package/scripts/e2e-hypercore-staking.mjs +0 -128
- package/scripts/e2e-solana-bitcoin.mjs +0 -183
- package/scripts/guard-publish.mjs +0 -22
- package/scripts/protocol-template-gate.mjs +0 -15
- package/scripts/public-api-scan.mjs +0 -23
- package/scripts/publish-dist.mjs +0 -67
- package/scripts/record-hero-cli.sh +0 -80
- package/scripts/secret-scan.mjs +0 -169
- package/scripts/smoke-dist-bins.mjs +0 -89
- package/scripts/verify-dist.mjs +0 -29
- package/scripts/verify-v3-venues.mjs +0 -233
- package/skins/oracle.yaml +0 -56
- package/src/action-receipts.mjs +0 -265
- package/src/action-semantics.mjs +0 -62
- package/src/address-book.mjs +0 -208
- package/src/agent-auth.mjs +0 -206
- package/src/approval-guard.mjs +0 -282
- package/src/attestation-secret.mjs +0 -94
- package/src/audit-log.mjs +0 -196
- package/src/auth/oauth.mjs +0 -672
- package/src/auto-slippage.mjs +0 -378
- package/src/capability-posture.mjs +0 -125
- package/src/cards.mjs +0 -422
- package/src/chains.mjs +0 -62
- package/src/cli/chain-catalog.mjs +0 -215
- package/src/cli/chain-state.mjs +0 -74
- package/src/cli/commands/auth.mjs +0 -193
- package/src/cli/commands/bootstrap.mjs +0 -87
- package/src/cli/commands/chain.mjs +0 -143
- package/src/cli/commands/chat.mjs +0 -465
- package/src/cli/commands/credential.mjs +0 -9
- package/src/cli/commands/data-mcp.mjs +0 -18
- package/src/cli/commands/data.mjs +0 -75
- package/src/cli/commands/doctor.mjs +0 -136
- package/src/cli/commands/equities.mjs +0 -41
- package/src/cli/commands/farm.mjs +0 -129
- package/src/cli/commands/fees.mjs +0 -109
- package/src/cli/commands/follow.mjs +0 -130
- package/src/cli/commands/harness.mjs +0 -63
- package/src/cli/commands/help.mjs +0 -7
- package/src/cli/commands/init.mjs +0 -27
- package/src/cli/commands/mcp.mjs +0 -154
- package/src/cli/commands/model.mjs +0 -106
- package/src/cli/commands/plugins.mjs +0 -275
- package/src/cli/commands/prepare.mjs +0 -12
- package/src/cli/commands/public.mjs +0 -20
- package/src/cli/commands/resolve.mjs +0 -64
- package/src/cli/commands/route.mjs +0 -12
- package/src/cli/commands/runner.mjs +0 -9
- package/src/cli/commands/scan.mjs +0 -12
- package/src/cli/commands/setup.mjs +0 -294
- package/src/cli/commands/sign.mjs +0 -21
- package/src/cli/commands/signer.mjs +0 -9
- package/src/cli/commands/swap.mjs +0 -102
- package/src/cli/commands/upgrade.mjs +0 -12
- package/src/cli/commands/vault.mjs +0 -9
- package/src/cli/commands/version.mjs +0 -22
- package/src/cli/first-run.mjs +0 -23
- package/src/cli/kernel.mjs +0 -262
- package/src/cli/mcp-targets/chatgpt.mjs +0 -51
- package/src/cli/mcp-targets/claude-code.mjs +0 -39
- package/src/cli/mcp-targets/claude-desktop.mjs +0 -24
- package/src/cli/mcp-targets/codex.mjs +0 -41
- package/src/cli/mcp-targets/cursor.mjs +0 -32
- package/src/cli/mcp-targets/shared.mjs +0 -71
- package/src/cli/mcp-targets/vscode.mjs +0 -39
- package/src/cli/messaging-platforms.mjs +0 -217
- package/src/cli/model-config.mjs +0 -78
- package/src/cli/operator-dispatch.mjs +0 -194
- package/src/cli/oracle-harness.py +0 -415
- package/src/cli/paths.mjs +0 -107
- package/src/cli/runtime.mjs +0 -351
- package/src/cli/setup-state.mjs +0 -168
- package/src/cli/spawn-child.mjs +0 -43
- package/src/data/catalog.mjs +0 -858
- package/src/data/desk-data.mjs +0 -877
- package/src/data/http.mjs +0 -253
- package/src/data/names.mjs +0 -188
- package/src/data/provider-endpoint.mjs +0 -94
- package/src/data/providers/aave-v3.mjs +0 -139
- package/src/data/providers/across-bridge.mjs +0 -41
- package/src/data/providers/aerodrome.mjs +0 -245
- package/src/data/providers/aevo.mjs +0 -33
- package/src/data/providers/approval-indexer.mjs +0 -133
- package/src/data/providers/approvals.mjs +0 -594
- package/src/data/providers/babylon-staking.mjs +0 -149
- package/src/data/providers/balancer.mjs +0 -209
- package/src/data/providers/beefy-yields.mjs +0 -45
- package/src/data/providers/birdeye-tokens.mjs +0 -33
- package/src/data/providers/bisq-markets.mjs +0 -145
- package/src/data/providers/bitcoin-esplora.mjs +0 -216
- package/src/data/providers/bitcoin-meta.mjs +0 -378
- package/src/data/providers/blockscout.mjs +0 -14
- package/src/data/providers/bob-rootstock.mjs +0 -198
- package/src/data/providers/braiins-insights.mjs +0 -103
- package/src/data/providers/bridge-aggregator.mjs +0 -259
- package/src/data/providers/bridges.mjs +0 -242
- package/src/data/providers/bungee.mjs +0 -29
- package/src/data/providers/celestia-da.mjs +0 -38
- package/src/data/providers/changenow.mjs +0 -135
- package/src/data/providers/compound.mjs +0 -32
- package/src/data/providers/connext.mjs +0 -28
- package/src/data/providers/convex.mjs +0 -30
- package/src/data/providers/cow-protocol.mjs +0 -110
- package/src/data/providers/cowswap.mjs +0 -415
- package/src/data/providers/curve.mjs +0 -201
- package/src/data/providers/das-assets.mjs +0 -59
- package/src/data/providers/debridge.mjs +0 -109
- package/src/data/providers/defillama.mjs +0 -88
- package/src/data/providers/dexscreener.mjs +0 -43
- package/src/data/providers/drift.mjs +0 -32
- package/src/data/providers/dydx.mjs +0 -41
- package/src/data/providers/evm-rpc.mjs +0 -225
- package/src/data/providers/farming.mjs +0 -291
- package/src/data/providers/geckoterminal.mjs +0 -34
- package/src/data/providers/gmx.mjs +0 -496
- package/src/data/providers/hiro-stacks.mjs +0 -150
- package/src/data/providers/hl-assets.mjs +0 -165
- package/src/data/providers/hl-info.mjs +0 -108
- package/src/data/providers/hl-markets.mjs +0 -210
- package/src/data/providers/hl-outcome.mjs +0 -61
- package/src/data/providers/hl-perps.mjs +0 -419
- package/src/data/providers/hl-staking.mjs +0 -353
- package/src/data/providers/hl-ws.mjs +0 -119
- package/src/data/providers/hyperevm-dex.mjs +0 -49
- package/src/data/providers/jito-mev.mjs +0 -117
- package/src/data/providers/jupiter-venues.mjs +0 -119
- package/src/data/providers/jupiter.mjs +0 -315
- package/src/data/providers/kamino-strategies.mjs +0 -143
- package/src/data/providers/l2beat-tvl.mjs +0 -42
- package/src/data/providers/lifi.mjs +0 -166
- package/src/data/providers/liquid-esplora.mjs +0 -152
- package/src/data/providers/magiceden-ordinals.mjs +0 -141
- package/src/data/providers/magiceden-sol.mjs +0 -406
- package/src/data/providers/mempool-lightning.mjs +0 -144
- package/src/data/providers/mempool-mining.mjs +0 -142
- package/src/data/providers/meteora-dlmm.mjs +0 -168
- package/src/data/providers/morpho.mjs +0 -177
- package/src/data/providers/nft-gallery.mjs +0 -163
- package/src/data/providers/nft-portfolio.mjs +0 -494
- package/src/data/providers/odos.mjs +0 -156
- package/src/data/providers/ondo.mjs +0 -31
- package/src/data/providers/oneinch.mjs +0 -174
- package/src/data/providers/opensea-multichain.mjs +0 -136
- package/src/data/providers/opensea-nft.mjs +0 -371
- package/src/data/providers/orca.mjs +0 -29
- package/src/data/providers/ordinals-runes.mjs +0 -180
- package/src/data/providers/pancakeswap.mjs +0 -28
- package/src/data/providers/paraswap.mjs +0 -125
- package/src/data/providers/pendle.mjs +0 -188
- package/src/data/providers/poly-clob.mjs +0 -283
- package/src/data/providers/poly-public.mjs +0 -96
- package/src/data/providers/poly-ws.mjs +0 -103
- package/src/data/providers/polygon-staking.mjs +0 -227
- package/src/data/providers/portfolio-history.mjs +0 -394
- package/src/data/providers/portfolio.mjs +0 -600
- package/src/data/providers/pyth-price-feeds.mjs +0 -172
- package/src/data/providers/raydium.mjs +0 -35
- package/src/data/providers/relayscan-mev.mjs +0 -72
- package/src/data/providers/rfq.mjs +0 -15
- package/src/data/providers/rh-agent.mjs +0 -59
- package/src/data/providers/sanctum-lst.mjs +0 -180
- package/src/data/providers/satflow.mjs +0 -341
- package/src/data/providers/signed-material-guard.mjs +0 -108
- package/src/data/providers/solana-rpc.mjs +0 -197
- package/src/data/providers/solend-lending.mjs +0 -166
- package/src/data/providers/spark-lend.mjs +0 -42
- package/src/data/providers/squid-router.mjs +0 -29
- package/src/data/providers/stargate.mjs +0 -29
- package/src/data/providers/sushiswap.mjs +0 -30
- package/src/data/providers/symbiotic-restaking.mjs +0 -41
- package/src/data/providers/thorchain.mjs +0 -36
- package/src/data/providers/traderjoe.mjs +0 -28
- package/src/data/providers/twap.mjs +0 -152
- package/src/data/providers/uniswap-v3.mjs +0 -457
- package/src/data/providers/uniswap-v4.mjs +0 -414
- package/src/data/providers/vertex.mjs +0 -41
- package/src/data/providers/wallet-watch.mjs +0 -264
- package/src/data/providers/wormhole.mjs +0 -28
- package/src/data/providers/yearn.mjs +0 -31
- package/src/data/providers/zerox.mjs +0 -167
- package/src/data/public-api-scan.mjs +0 -61
- package/src/data/quote-placeholder.mjs +0 -31
- package/src/desk/swap-prepare.mjs +0 -194
- package/src/equities/bridge.mjs +0 -388
- package/src/equities/fixtures/bridge_routes.json +0 -159
- package/src/equities/fixtures/dst_transitions.json +0 -29
- package/src/equities/fixtures/equity_dex_pools.json +0 -154
- package/src/equities/fixtures/hip3_l2books.json +0 -2711
- package/src/equities/fixtures/nyse_holidays.json +0 -1
- package/src/equities/fixtures/oracles.json +0 -100
- package/src/equities/fixtures/rh_pool_state.json +0 -244
- package/src/equities/fixtures/solana_xstocks.json +0 -704
- package/src/equities/fixtures/ton_xstocks.json +0 -35
- package/src/equities/fixtures/universe.json +0 -411
- package/src/equities/fixtures/venues.json +0 -3542
- package/src/equities/fixtures.mjs +0 -405
- package/src/equities/funding.mjs +0 -142
- package/src/equities/index.mjs +0 -166
- package/src/equities/liveness.mjs +0 -148
- package/src/equities/marketHours.mjs +0 -249
- package/src/equities/normalize.mjs +0 -295
- package/src/equities/num.mjs +0 -146
- package/src/equities/prepare.mjs +0 -95
- package/src/equities/rank.mjs +0 -260
- package/src/equities/sourceNum.mjs +0 -69
- package/src/equities/types.mjs +0 -220
- package/src/equities/venues/arcus-perp.mjs +0 -84
- package/src/equities/venues/arcus-spot.mjs +0 -105
- package/src/equities/venues/hyperliquid-hip3.mjs +0 -224
- package/src/equities/venues/rh-uniswap.mjs +0 -216
- package/src/equities/venues/solana-xstocks.mjs +0 -139
- package/src/equities/venues/ton-stonfi.mjs +0 -139
- package/src/exact-integer.mjs +0 -72
- package/src/exec-policy.mjs +0 -419
- package/src/flags.mjs +0 -15
- package/src/fresh-window.mjs +0 -76
- package/src/gmx-attestation.mjs +0 -176
- package/src/index.mjs +0 -107
- package/src/licensing/locals-only.mjs +0 -25
- package/src/nft-gas-war-guard.mjs +0 -139
- package/src/onboarding/agent-keys.mjs +0 -161
- package/src/onboarding/harness-configs.mjs +0 -102
- package/src/onboarding/index.mjs +0 -18
- package/src/onboarding/tiers.mjs +0 -139
- package/src/oracle-env.mjs +0 -55
- package/src/package-manifest.mjs +0 -42
- package/src/plugins/agent-plugin-loader.mjs +0 -225
- package/src/portfolio-risk.mjs +0 -170
- package/src/prepare-envelope.mjs +0 -204
- package/src/profile-upgrade.mjs +0 -277
- package/src/protocol-execution.mjs +0 -84
- package/src/protocol-templates/gate.mjs +0 -179
- package/src/protocol-templates/prepare-deploy.mjs +0 -81
- package/src/public-api/agent-grants.mjs +0 -57
- package/src/public-api/buzz-integration.mjs +0 -267
- package/src/public-api/connect-agent.mjs +0 -424
- package/src/public-api/grants.mjs +0 -142
- package/src/public-api/http.mjs +0 -707
- package/src/public-api/metering.mjs +0 -111
- package/src/public-control/aa-adapter.mjs +0 -402
- package/src/public-control/build-registry.mjs +0 -227
- package/src/public-control/bundler-client.mjs +0 -357
- package/src/public-control/grant-indexer.mjs +0 -296
- package/src/public-control/policy-render.mjs +0 -69
- package/src/public-control/policy-schema.mjs +0 -322
- package/src/public-control/runtime-config.mjs +0 -275
- package/src/public-control/session-key-model.mjs +0 -379
- package/src/public-control/session-orchestrator.mjs +0 -418
- package/src/rfq/intent.mjs +0 -180
- package/src/rfq/sources.mjs +0 -181
- package/src/route-attestation.mjs +0 -132
- package/src/router/best-execution.mjs +0 -326
- package/src/router/index.mjs +0 -250
- package/src/router/integrator-fee.mjs +0 -135
- package/src/router/prepare-bridge.mjs +0 -293
- package/src/router/prepare-route.mjs +0 -398
- package/src/router/proposal.mjs +0 -311
- package/src/router/risk-classifier.mjs +0 -119
- package/src/router/route-sources.mjs +0 -364
- package/src/scanner/chains.config.mjs +0 -543
- package/src/scanner/contract.mjs +0 -270
- package/src/scanner/evm-scanner.mjs +0 -394
- package/src/scanner/index.mjs +0 -9
- package/src/scanner/v2-venue.mjs +0 -351
- package/src/scanner/v3-venue.mjs +0 -308
- package/src/scopes.mjs +0 -44
- package/src/sell-simulation.mjs +0 -167
- package/src/signals/engine.mjs +0 -146
- package/src/signals/index.mjs +0 -1
- package/src/token-transfer-guard.mjs +0 -188
- package/src/tui/app.mjs +0 -438
- package/src/tui/backend.mjs +0 -215
- package/src/tui/format.mjs +0 -272
- package/src/tui/gateway-client.mjs +0 -177
- package/src/tui/input.mjs +0 -501
- package/src/tui/memory.mjs +0 -105
- package/src/tui/meta-learn.mjs +0 -85
- package/src/tui/renderer.mjs +0 -443
- package/src/tui/scheduler.mjs +0 -205
- package/src/tui/skills-loader.mjs +0 -140
- package/src/tui/standalone-client.mjs +0 -752
- package/src/tui/theme.mjs +0 -81
- package/src/vault-attestation.mjs +0 -146
- package/src/venues.mjs +0 -206
- package/src/watch-preferences.mjs +0 -85
- /package/{profiles → dist/assets/profiles}/_template/SOUL.md +0 -0
- /package/{profiles → dist/assets/profiles}/_template/profile.json +0 -0
- /package/{profiles → dist/assets/profiles}/bitcoin-agent/SOUL.md +0 -0
- /package/{profiles → dist/assets/profiles}/bitcoin-agent/profile.json +0 -0
- /package/{profiles → dist/assets/profiles}/hyperliquid-agent/SOUL.md +0 -0
- /package/{profiles → dist/assets/profiles}/hyperliquid-agent/profile.json +0 -0
- /package/{profiles → dist/assets/profiles}/oracle/SOUL.md +0 -0
- /package/{profiles → dist/assets/profiles}/oracle/profile.json +0 -0
- /package/{profiles → dist/assets/profiles}/polymarket-agent/SOUL.md +0 -0
- /package/{profiles → dist/assets/profiles}/polymarket-agent/profile.json +0 -0
- /package/{profiles → dist/assets/profiles}/profile.schema.json +0 -0
- /package/{profiles → dist/assets/profiles}/protocol-builder/SOUL.md +0 -0
- /package/{profiles → dist/assets/profiles}/protocol-builder/profile.json +0 -0
- /package/{profiles → dist/assets/profiles}/robinhood-agent/SOUL.md +0 -0
- /package/{profiles → dist/assets/profiles}/robinhood-agent/profile.json +0 -0
- /package/{profiles → dist/assets/profiles}/solana-agent/SOUL.md +0 -0
- /package/{profiles → dist/assets/profiles}/solana-agent/profile.json +0 -0
- /package/{profiles → dist/assets/profiles}/stable-agent/SOUL.md +0 -0
- /package/{profiles → dist/assets/profiles}/stable-agent/profile.json +0 -0
- /package/{skills → dist/assets/skills}/balance/SKILL.md +0 -0
- /package/{skills → dist/assets/skills}/bitcoin-l1.md +0 -0
- /package/{skills → dist/assets/skills}/chain-defi-ecosystem-profiling.md +0 -0
- /package/{skills → dist/assets/skills}/evm-contract-research.md +0 -0
- /package/{skills → dist/assets/skills}/hyperliquid.md +0 -0
- /package/{skills → dist/assets/skills}/multichain-exec-desk.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-action-semantics/SKILL.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-best-execution/SKILL.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-best-execution.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-bitcoin/SKILL.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-chain-graphs-telegram-cards/SKILL.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-chat/SKILL.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-chat/chain.SKILL.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-chat/setup.SKILL.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-circuit-breaker/SKILL.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-contract-research/SKILL.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-desk/SKILL.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-desk.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-dex-launch/SKILL.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-equities/SKILL.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-grants/SKILL.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-hypercore-staking/SKILL.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-hyperliquid/SKILL.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-meme-token-sniper/SKILL.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-multichain-nft-launch/SKILL.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-multichain-token-launch/SKILL.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-nft-gacha-launch/SKILL.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-nft-mint-gas-war/SKILL.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-polymarket/SKILL.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-protocol-builder/SKILL.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-protocol-security/SKILL.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-public-product/SKILL.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-receipts/SKILL.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-receipts.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-rfq-tokenized-assets/SKILL.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-smart-wallet-scanner/SKILL.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-solana/SKILL.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-solana-nft/SKILL.md +0 -0
- /package/{skills → dist/assets/skills}/oracle-token-research/SKILL.md +0 -0
- /package/{skills → dist/assets/skills}/solana.md +0 -0
package/docs/adding-a-chain.md
DELETED
|
@@ -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.
|
package/docs/architecture.md
DELETED
|
@@ -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.
|
package/docs/buzz-integration.md
DELETED
|
@@ -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)
|
package/docs/connectors.md
DELETED
|
@@ -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).
|