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