@oracle-agent/oracle 0.13.0 → 0.13.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/README.md +525 -13
- package/SECURITY.md +114 -0
- package/SETUP.md +319 -0
- package/artifacts/inscription/oracle-was-here-preview.png +0 -0
- package/artifacts/inscription/oracle-was-here.svg +1 -0
- package/artifacts/specialist-packs/oracle-full-crypto.json +298 -0
- package/dist/action-receipts.mjs +1 -0
- package/dist/action-semantics.mjs +1 -0
- package/dist/address-book.mjs +2 -0
- package/dist/assets/profiles/_template/SOUL.md +54 -0
- package/dist/assets/profiles/_template/profile.json +22 -0
- package/dist/assets/profiles/bitcoin-agent/SOUL.md +31 -0
- package/dist/assets/profiles/bitcoin-agent/profile.json +32 -0
- package/dist/assets/profiles/hyperliquid-agent/SOUL.md +34 -0
- package/dist/assets/profiles/hyperliquid-agent/profile.json +38 -0
- package/dist/assets/profiles/oracle/SOUL.md +134 -0
- package/dist/assets/profiles/oracle/profile.json +40 -0
- package/dist/assets/profiles/polymarket-agent/SOUL.md +35 -0
- package/dist/assets/profiles/polymarket-agent/profile.json +34 -0
- package/dist/assets/profiles/profile.schema.json +90 -0
- package/dist/assets/profiles/protocol-builder/SOUL.md +57 -0
- package/dist/assets/profiles/protocol-builder/profile.json +39 -0
- package/dist/assets/profiles/robinhood-agent/SOUL.md +53 -0
- package/dist/assets/profiles/robinhood-agent/profile.json +41 -0
- package/dist/assets/profiles/solana-agent/SOUL.md +37 -0
- package/dist/assets/profiles/solana-agent/profile.json +38 -0
- package/dist/assets/profiles/stable-agent/SOUL.md +43 -0
- package/dist/assets/profiles/stable-agent/profile.json +38 -0
- package/dist/assets/skills/balance/SKILL.md +176 -0
- package/dist/assets/skills/bitcoin-l1.md +33 -0
- package/dist/assets/skills/chain-defi-ecosystem-profiling.md +27 -0
- package/dist/assets/skills/evm-contract-research.md +27 -0
- package/dist/assets/skills/hyperliquid.md +26 -0
- package/dist/assets/skills/multichain-exec-desk.md +33 -0
- package/dist/assets/skills/oracle-action-semantics/SKILL.md +40 -0
- package/dist/assets/skills/oracle-best-execution/SKILL.md +127 -0
- package/dist/assets/skills/oracle-best-execution.md +27 -0
- package/dist/assets/skills/oracle-bitcoin/SKILL.md +53 -0
- package/dist/assets/skills/oracle-chain-graphs-telegram-cards/SKILL.md +59 -0
- package/dist/assets/skills/oracle-chat/SKILL.md +61 -0
- package/dist/assets/skills/oracle-chat/chain.SKILL.md +31 -0
- package/dist/assets/skills/oracle-chat/setup.SKILL.md +37 -0
- package/dist/assets/skills/oracle-circuit-breaker/SKILL.md +51 -0
- package/dist/assets/skills/oracle-contract-research/SKILL.md +55 -0
- package/dist/assets/skills/oracle-desk/SKILL.md +58 -0
- package/dist/assets/skills/oracle-desk.md +27 -0
- package/dist/assets/skills/oracle-dex-launch/SKILL.md +38 -0
- package/dist/assets/skills/oracle-equities/SKILL.md +62 -0
- package/dist/assets/skills/oracle-grants/SKILL.md +69 -0
- package/dist/assets/skills/oracle-hypercore-staking/SKILL.md +57 -0
- package/dist/assets/skills/oracle-hyperliquid/SKILL.md +56 -0
- package/dist/assets/skills/oracle-meme-token-sniper/SKILL.md +73 -0
- package/dist/assets/skills/oracle-multichain-nft-launch/SKILL.md +338 -0
- package/dist/assets/skills/oracle-multichain-token-launch/SKILL.md +300 -0
- package/dist/assets/skills/oracle-nft-gacha-launch/SKILL.md +48 -0
- package/dist/assets/skills/oracle-nft-mint-gas-war/SKILL.md +63 -0
- package/dist/assets/skills/oracle-polymarket/SKILL.md +60 -0
- package/dist/assets/skills/oracle-protocol-builder/SKILL.md +59 -0
- package/dist/assets/skills/oracle-protocol-security/SKILL.md +60 -0
- package/dist/assets/skills/oracle-public-product/SKILL.md +44 -0
- package/dist/assets/skills/oracle-receipts/SKILL.md +52 -0
- package/dist/assets/skills/oracle-receipts.md +29 -0
- package/dist/assets/skills/oracle-rfq-tokenized-assets/SKILL.md +69 -0
- package/dist/assets/skills/oracle-smart-wallet-scanner/SKILL.md +49 -0
- package/dist/assets/skills/oracle-solana/SKILL.md +65 -0
- package/dist/assets/skills/oracle-solana-nft/SKILL.md +54 -0
- package/dist/assets/skills/oracle-token-research/SKILL.md +67 -0
- package/dist/assets/skills/solana.md +22 -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 +76 -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/follow.mjs +28 -0
- package/dist/cli/commands/gate.mjs +13 -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 +60 -0
- package/dist/cli/commands/model.mjs +54 -0
- package/dist/cli/commands/plugins.mjs +38 -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 +21 -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 +66 -16
- package/public/agent-connect/app.js +84 -0
- package/public/agent-connect/index.html +83 -0
- package/public/agent-connect/styles.css +70 -0
- package/public/index.html +12 -0
- package/public/oracle-console/app.js +272 -0
- package/public/oracle-console/bitcoin-wallets.js +206 -0
- package/public/oracle-console/index.html +91 -0
- package/public/oracle-console/styles.css +239 -0
- package/public/oracle-splash/_variants/ice.html +2073 -0
- package/public/oracle-splash/_variants/ivory.html +2075 -0
- package/public/oracle-splash/assets/agents/claude.png +0 -0
- package/public/oracle-splash/assets/agents/codex.png +0 -0
- package/public/oracle-splash/assets/cli-chain-hyperliquid.jpg +0 -0
- package/public/oracle-splash/assets/desktop-app.jpg +0 -0
- package/public/oracle-splash/assets/hero/cli-session-poster.jpg +0 -0
- package/public/oracle-splash/assets/hero/cli-session.mp4 +0 -0
- package/public/oracle-splash/assets/hero/cli-session.webm +0 -0
- package/public/oracle-splash/assets/hero/orb-poster.jpg +0 -0
- package/public/oracle-splash/assets/hero/orb.avif +0 -0
- package/public/oracle-splash/assets/hero/orb.webm +0 -0
- package/public/oracle-splash/assets/hero/risk-session-poster.jpg +0 -0
- package/public/oracle-splash/assets/hero/risk-session.mp4 +0 -0
- package/public/oracle-splash/assets/hero/risk-session.webm +0 -0
- package/public/oracle-splash/assets/hero/route-session-poster.jpg +0 -0
- package/public/oracle-splash/assets/hero/route-session.mp4 +0 -0
- package/public/oracle-splash/assets/hero/route-session.webm +0 -0
- package/public/oracle-splash/assets/llms/claude.svg +1 -0
- package/public/oracle-splash/assets/llms/codex-icon.svg +1 -0
- package/public/oracle-splash/assets/llms/codex.svg +1 -0
- package/public/oracle-splash/assets/llms/cursor-icon.svg +12 -0
- package/public/oracle-splash/assets/llms/cursor.svg +17 -0
- package/public/oracle-splash/assets/llms/deepseek.svg +1 -0
- package/public/oracle-splash/assets/llms/gemini-icon.svg +1 -0
- package/public/oracle-splash/assets/llms/gemini.svg +1 -0
- package/public/oracle-splash/assets/llms/grok.svg +8 -0
- package/public/oracle-splash/assets/llms/hermes.png +0 -0
- package/public/oracle-splash/assets/llms/kimi-icon.svg +1 -0
- package/public/oracle-splash/assets/llms/kimi.svg +1 -0
- package/public/oracle-splash/assets/llms/manus.svg +18 -0
- package/public/oracle-splash/assets/llms/openclaw.svg +22 -0
- package/public/oracle-splash/assets/llms/perplexity.svg +1 -0
- package/public/oracle-splash/assets/llms/qwen.svg +1 -0
- package/public/oracle-splash/assets/llms/windsurf.svg +1 -0
- package/public/oracle-splash/assets/protocols/abcdex.png +0 -0
- package/public/oracle-splash/assets/protocols/across.png +0 -0
- package/public/oracle-splash/assets/protocols/aerodrome.png +0 -0
- package/public/oracle-splash/assets/protocols/balancer.png +0 -0
- package/public/oracle-splash/assets/protocols/cowswap.png +0 -0
- package/public/oracle-splash/assets/protocols/curve.png +0 -0
- package/public/oracle-splash/assets/protocols/dreamcash.png +0 -0
- package/public/oracle-splash/assets/protocols/felix.png +0 -0
- package/public/oracle-splash/assets/protocols/gmx.png +0 -0
- package/public/oracle-splash/assets/protocols/hyena.png +0 -0
- package/public/oracle-splash/assets/protocols/hyperbeat.png +0 -0
- package/public/oracle-splash/assets/protocols/hyperliquid.png +0 -0
- package/public/oracle-splash/assets/protocols/hyperswap.png +0 -0
- package/public/oracle-splash/assets/protocols/jupiter.png +0 -0
- package/public/oracle-splash/assets/protocols/kinetiq.png +0 -0
- package/public/oracle-splash/assets/protocols/lfj.png +0 -0
- package/public/oracle-splash/assets/protocols/lifi.png +0 -0
- package/public/oracle-splash/assets/protocols/magic-eden.png +0 -0
- package/public/oracle-splash/assets/protocols/morpho.png +0 -0
- package/public/oracle-splash/assets/protocols/odos.png +0 -0
- package/public/oracle-splash/assets/protocols/oneinch.png +0 -0
- package/public/oracle-splash/assets/protocols/opensea.png +0 -0
- package/public/oracle-splash/assets/protocols/pancakeswap.png +0 -0
- package/public/oracle-splash/assets/protocols/paragon.png +0 -0
- package/public/oracle-splash/assets/protocols/paraswap.png +0 -0
- package/public/oracle-splash/assets/protocols/pendle.png +0 -0
- package/public/oracle-splash/assets/protocols/polymarket.png +0 -0
- package/public/oracle-splash/assets/protocols/quickswap.png +0 -0
- package/public/oracle-splash/assets/protocols/relay.png +0 -0
- package/public/oracle-splash/assets/protocols/stargate.png +0 -0
- package/public/oracle-splash/assets/protocols/tradexyz.png +0 -0
- package/public/oracle-splash/assets/protocols/uniswap.png +0 -0
- package/public/oracle-splash/assets/protocols/velodrome.png +0 -0
- package/public/oracle-splash/assets/protocols/ventuals.png +0 -0
- package/public/oracle-splash/assets/wordmarks/across-icon.webp +0 -0
- package/public/oracle-splash/assets/wordmarks/across.svg +4 -0
- package/public/oracle-splash/assets/wordmarks/aerodrome.svg +23 -0
- package/public/oracle-splash/assets/wordmarks/balancer.svg +3 -0
- package/public/oracle-splash/assets/wordmarks/cowswap.svg +1 -0
- package/public/oracle-splash/assets/wordmarks/curve.png +0 -0
- package/public/oracle-splash/assets/wordmarks/gmx.svg +13 -0
- package/public/oracle-splash/assets/wordmarks/hop-icon.webp +0 -0
- package/public/oracle-splash/assets/wordmarks/hyena.svg +7 -0
- package/public/oracle-splash/assets/wordmarks/hyperliquid.svg +21 -0
- package/public/oracle-splash/assets/wordmarks/hyperswap.svg +13 -0
- package/public/oracle-splash/assets/wordmarks/jupiter.svg +35 -0
- package/public/oracle-splash/assets/wordmarks/kinetiq.svg +1 -0
- package/public/oracle-splash/assets/wordmarks/lfj.webp +0 -0
- package/public/oracle-splash/assets/wordmarks/lifi.png +0 -0
- package/public/oracle-splash/assets/wordmarks/magic-eden.svg +1 -0
- package/public/oracle-splash/assets/wordmarks/markets.svg +1 -0
- package/public/oracle-splash/assets/wordmarks/morpho.svg +1 -0
- package/public/oracle-splash/assets/wordmarks/odos.svg +3 -0
- package/public/oracle-splash/assets/wordmarks/oneinch-icon.webp +0 -0
- package/public/oracle-splash/assets/wordmarks/oneinch.svg +6 -0
- package/public/oracle-splash/assets/wordmarks/opensea-icon.svg +17 -0
- package/public/oracle-splash/assets/wordmarks/opensea.svg +1 -0
- package/public/oracle-splash/assets/wordmarks/outcome.svg +16 -0
- package/public/oracle-splash/assets/wordmarks/pancakeswap.svg +18 -0
- package/public/oracle-splash/assets/wordmarks/paragon.svg +9 -0
- package/public/oracle-splash/assets/wordmarks/paraswap.svg +16 -0
- package/public/oracle-splash/assets/wordmarks/pendle.png +0 -0
- package/public/oracle-splash/assets/wordmarks/polymarket.png +0 -0
- package/public/oracle-splash/assets/wordmarks/quickswap.png +0 -0
- package/public/oracle-splash/assets/wordmarks/relay.svg +8 -0
- package/public/oracle-splash/assets/wordmarks/satflow-icon.png +0 -0
- package/public/oracle-splash/assets/wordmarks/stargate-icon.webp +0 -0
- package/public/oracle-splash/assets/wordmarks/stargate.svg +15 -0
- package/public/oracle-splash/assets/wordmarks/uniswap.svg +18 -0
- package/public/oracle-splash/assets/wordmarks/velodrome.svg +84 -0
- package/public/oracle-splash/assets/wordmarks/xyz.svg +12 -0
- package/public/oracle-splash/assets/wordmarks/zerox-icon.webp +0 -0
- package/public/oracle-splash/brand/aave.webp +0 -0
- package/public/oracle-splash/brand/aavev2.webp +0 -0
- package/public/oracle-splash/brand/aborean.webp +0 -0
- package/public/oracle-splash/brand/across.webp +0 -0
- package/public/oracle-splash/brand/aerodrome.webp +0 -0
- package/public/oracle-splash/brand/afi.webp +0 -0
- package/public/oracle-splash/brand/arcus.webp +0 -0
- package/public/oracle-splash/brand/aster.webp +0 -0
- package/public/oracle-splash/brand/avant.webp +0 -0
- package/public/oracle-splash/brand/balancer.webp +0 -0
- package/public/oracle-splash/brand/beefy.webp +0 -0
- package/public/oracle-splash/brand/benqi.webp +0 -0
- package/public/oracle-splash/brand/bestinslot.ico +0 -0
- package/public/oracle-splash/brand/bitfi.webp +0 -0
- package/public/oracle-splash/brand/bonkswap.webp +0 -0
- package/public/oracle-splash/brand/bouncebit.webp +0 -0
- package/public/oracle-splash/brand/camelot.webp +0 -0
- package/public/oracle-splash/brand/compound.webp +0 -0
- package/public/oracle-splash/brand/concrete.webp +0 -0
- package/public/oracle-splash/brand/cow.webp +0 -0
- package/public/oracle-splash/brand/curve.webp +0 -0
- package/public/oracle-splash/brand/derive.webp +0 -0
- package/public/oracle-splash/brand/dolomite.webp +0 -0
- package/public/oracle-splash/brand/eigenlayer.webp +0 -0
- package/public/oracle-splash/brand/ekubo.webp +0 -0
- package/public/oracle-splash/brand/ethena.webp +0 -0
- package/public/oracle-splash/brand/etherfi.webp +0 -0
- package/public/oracle-splash/brand/etherfiborrow.webp +0 -0
- package/public/oracle-splash/brand/felix.webp +0 -0
- package/public/oracle-splash/brand/fluid.webp +0 -0
- package/public/oracle-splash/brand/fluxbeam.webp +0 -0
- package/public/oracle-splash/brand/folks.webp +0 -0
- package/public/oracle-splash/brand/fortyacres.webp +0 -0
- package/public/oracle-splash/brand/gainsnetwork.webp +0 -0
- package/public/oracle-splash/brand/gassss.webp +0 -0
- package/public/oracle-splash/brand/gmx.webp +0 -0
- package/public/oracle-splash/brand/harmonix.webp +0 -0
- package/public/oracle-splash/brand/hlorderbook.webp +0 -0
- package/public/oracle-splash/brand/hlp.webp +0 -0
- package/public/oracle-splash/brand/hop.webp +0 -0
- package/public/oracle-splash/brand/hyperbeat.webp +0 -0
- package/public/oracle-splash/brand/hyperlend.webp +0 -0
- package/public/oracle-splash/brand/hyperliquid.webp +0 -0
- package/public/oracle-splash/brand/hyperliquidhpl.webp +0 -0
- package/public/oracle-splash/brand/hyperliquidspot.webp +0 -0
- package/public/oracle-splash/brand/hyperswap.webp +0 -0
- package/public/oracle-splash/brand/hypha.webp +0 -0
- package/public/oracle-splash/brand/joedex.webp +0 -0
- package/public/oracle-splash/brand/jupiter.webp +0 -0
- package/public/oracle-splash/brand/kelp.webp +0 -0
- package/public/oracle-splash/brand/kinetiq.webp +0 -0
- package/public/oracle-splash/brand/kmhype.webp +0 -0
- package/public/oracle-splash/brand/kona.webp +0 -0
- package/public/oracle-splash/brand/konalend.webp +0 -0
- package/public/oracle-splash/brand/lfj.webp +0 -0
- package/public/oracle-splash/brand/lido.webp +0 -0
- package/public/oracle-splash/brand/lifi.webp +0 -0
- package/public/oracle-splash/brand/lighter.webp +0 -0
- package/public/oracle-splash/brand/lista.webp +0 -0
- package/public/oracle-splash/brand/loopedhype.webp +0 -0
- package/public/oracle-splash/brand/lorenzo.webp +0 -0
- package/public/oracle-splash/brand/magic-eden.webp +0 -0
- package/public/oracle-splash/brand/magiceden.webp +0 -0
- package/public/oracle-splash/brand/mempool.png +0 -0
- package/public/oracle-splash/brand/meteora.webp +0 -0
- package/public/oracle-splash/brand/morpho.webp +0 -0
- package/public/oracle-splash/brand/myriad.webp +0 -0
- package/public/oracle-splash/brand/noxa.webp +0 -0
- package/public/oracle-splash/brand/odos.webp +0 -0
- package/public/oracle-splash/brand/oneinch.webp +0 -0
- package/public/oracle-splash/brand/openbook.webp +0 -0
- package/public/oracle-splash/brand/opensea.webp +0 -0
- package/public/oracle-splash/brand/orca.webp +0 -0
- package/public/oracle-splash/brand/ordinals.png +0 -0
- package/public/oracle-splash/brand/ostium.webp +0 -0
- package/public/oracle-splash/brand/pancakeswap.webp +0 -0
- package/public/oracle-splash/brand/pendle.webp +0 -0
- package/public/oracle-splash/brand/perena.webp +0 -0
- package/public/oracle-splash/brand/pharaoh.webp +0 -0
- package/public/oracle-splash/brand/phoenix.webp +0 -0
- package/public/oracle-splash/brand/polymarket.webp +0 -0
- package/public/oracle-splash/brand/polynomial.webp +0 -0
- package/public/oracle-splash/brand/projectx.webp +0 -0
- package/public/oracle-splash/brand/pumpfun.webp +0 -0
- package/public/oracle-splash/brand/quickswap.webp +0 -0
- package/public/oracle-splash/brand/rain.webp +0 -0
- package/public/oracle-splash/brand/raydium.webp +0 -0
- package/public/oracle-splash/brand/relay.webp +0 -0
- package/public/oracle-splash/brand/rocketpool.webp +0 -0
- package/public/oracle-splash/brand/saber.webp +0 -0
- package/public/oracle-splash/brand/sakuraswap.webp +0 -0
- package/public/oracle-splash/brand/sanctum.webp +0 -0
- package/public/oracle-splash/brand/satflow.png +0 -0
- package/public/oracle-splash/brand/sierra.webp +0 -0
- package/public/oracle-splash/brand/sky.webp +0 -0
- package/public/oracle-splash/brand/solv.webp +0 -0
- package/public/oracle-splash/brand/spark.webp +0 -0
- package/public/oracle-splash/brand/sparksavings.webp +0 -0
- package/public/oracle-splash/brand/sphere.webp +0 -0
- package/public/oracle-splash/brand/ssv.webp +0 -0
- package/public/oracle-splash/brand/stabble.webp +0 -0
- package/public/oracle-splash/brand/stableswap.webp +0 -0
- package/public/oracle-splash/brand/stakewise.webp +0 -0
- package/public/oracle-splash/brand/stargate.webp +0 -0
- package/public/oracle-splash/brand/sthype.webp +0 -0
- package/public/oracle-splash/brand/sushiswap.webp +0 -0
- package/public/oracle-splash/brand/unisat.png +0 -0
- package/public/oracle-splash/brand/uniswap.webp +0 -0
- package/public/oracle-splash/brand/uniswapv2.webp +0 -0
- package/public/oracle-splash/brand/uniswapv4.webp +0 -0
- package/public/oracle-splash/brand/unit.webp +0 -0
- package/public/oracle-splash/brand/velodrome.webp +0 -0
- package/public/oracle-splash/brand/velora.webp +0 -0
- package/public/oracle-splash/brand/venus.webp +0 -0
- package/public/oracle-splash/brand/wbeth.webp +0 -0
- package/public/oracle-splash/brand/xsy.webp +0 -0
- package/public/oracle-splash/brand/yieldyak.webp +0 -0
- package/public/oracle-splash/brand/zerobase.webp +0 -0
- package/public/oracle-splash/brand/zerox.webp +0 -0
- package/public/oracle-splash/downloads/index.html +241 -0
- package/public/oracle-splash/favicon.ico +0 -0
- package/public/oracle-splash/favicon.svg +6 -0
- package/public/oracle-splash/index.html +2537 -0
- package/public/oracle-splash/mesh-graph.png +0 -0
- package/public/oracle-splash/mesh-graph.svg +216 -0
- package/bin/oracle.mjs +0 -25
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: oracle-multichain-token-launch
|
|
3
|
+
description: Use when planning, building, reviewing, or preparing a fungible token launch on EVM, Solana, Bitcoin Runes, Cosmos, Move, Hyperliquid, or another chain family. Fail closed on unsupported adapters; prepare and simulate only; the user signs each side effect.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Multichain token launch
|
|
7
|
+
|
|
8
|
+
## Contract
|
|
9
|
+
|
|
10
|
+
Use this skill for fungible asset creation, initial distribution, public sale setup,
|
|
11
|
+
and liquidity bootstrap preparation.
|
|
12
|
+
|
|
13
|
+
"Every chain" means route the request to a verified chain-family path. It does not
|
|
14
|
+
mean one bytecode artifact or one transaction encoder works everywhere. Never call
|
|
15
|
+
a chain launch-ready because its RPC responds.
|
|
16
|
+
|
|
17
|
+
Oracle researches, scaffolds, validates, simulates, and prepares unsigned actions.
|
|
18
|
+
The user signs deployment, mint, metadata, authority, liquidity, and verification
|
|
19
|
+
actions separately. Never broadcast from this skill.
|
|
20
|
+
|
|
21
|
+
When loaded by the `oracle` router, use this skill to classify the request, then
|
|
22
|
+
route chain research to the relevant specialist and build/prepare work to
|
|
23
|
+
`protocol-builder`. The router remains read and simulate only.
|
|
24
|
+
|
|
25
|
+
## Support status language
|
|
26
|
+
|
|
27
|
+
Use exactly one status before building:
|
|
28
|
+
|
|
29
|
+
| Status | Meaning |
|
|
30
|
+
|---|---|
|
|
31
|
+
| `TEMPLATE_READY` | Oracle ships a gated template and unsigned prepare path for this exact standard. |
|
|
32
|
+
| `ADAPTER_READY` | A chain-specific encoder exists and passed live simulation or testnet verification. |
|
|
33
|
+
| `GUIDED_BUILD` | Oracle can scaffold and test it, but no generic transaction adapter is shipped. |
|
|
34
|
+
| `RESEARCH_ONLY` | Oracle can verify chain mechanics and produce a launch plan, not a deployable bundle. |
|
|
35
|
+
| `UNSUPPORTED` | Required chain primitives or trustworthy tooling cannot be verified. Stop. |
|
|
36
|
+
|
|
37
|
+
Do not upgrade a status without evidence. A compiler pass alone is not
|
|
38
|
+
`ADAPTER_READY`. A mainnet-ready claim needs exact chain identity, final artifacts,
|
|
39
|
+
simulation, fee estimate, and source/program verification path.
|
|
40
|
+
|
|
41
|
+
## Current family matrix
|
|
42
|
+
|
|
43
|
+
| Family | Common standards | Default status | Required path |
|
|
44
|
+
|---|---|---|---|
|
|
45
|
+
| EVM | ERC-20 | `TEMPLATE_READY` only for Oracle `safe-erc20`; custom tax, mint, proxy, or hook designs are `GUIDED_BUILD` | Foundry gate, chain-id proof, unsigned deploy, source verification |
|
|
46
|
+
| Solana | SPL Token, Token-2022 | `GUIDED_BUILD` | Select extensions explicitly, construct unsigned transactions, simulate, user wallet signs |
|
|
47
|
+
| Bitcoin | Runes | `RESEARCH_ONLY` until an etch adapter is present | Commit/reveal plan, UTXO and fee model, exact terms review |
|
|
48
|
+
| Cosmos | tokenfactory, CW20 | `RESEARCH_ONLY` by default | Resolve the chain's module or CosmWasm messages; EVM-enabled Cosmos chains use the EVM path only when verified |
|
|
49
|
+
| Sui | Coin, regulated coin primitives | `RESEARCH_ONLY` by default | Move package, treasury capability model, devnet/testnet publish first |
|
|
50
|
+
| Aptos | Coin, Fungible Asset | `RESEARCH_ONLY` by default | Move module/object model, upgrade policy, testnet publish first |
|
|
51
|
+
| Hyperliquid L1 | spot asset deployment | `RESEARCH_ONLY` | Verify current native deployment/auction process; HIP-3 is a market deployment, not a generic token contract |
|
|
52
|
+
| HyperEVM | ERC-20 | EVM status | Use the exact HyperEVM chain id and verified gas/DEX addresses |
|
|
53
|
+
| Other | chain-native | `UNSUPPORTED` until classified | Add and verify a dedicated adapter before preparing transactions |
|
|
54
|
+
|
|
55
|
+
This matrix is the minimum truth bar, not a marketing ceiling. If a verified adapter
|
|
56
|
+
lands later, update its status with tests and evidence.
|
|
57
|
+
|
|
58
|
+
## 1. Build the launch manifest
|
|
59
|
+
|
|
60
|
+
Do not write code until all required fields are known:
|
|
61
|
+
|
|
62
|
+
```yaml
|
|
63
|
+
asset:
|
|
64
|
+
name: ""
|
|
65
|
+
symbol: ""
|
|
66
|
+
chain_family: ""
|
|
67
|
+
chain_name: ""
|
|
68
|
+
chain_id_or_genesis: ""
|
|
69
|
+
network: mainnet|testnet|devnet|local
|
|
70
|
+
standard: ""
|
|
71
|
+
decimals: null
|
|
72
|
+
max_supply: ""
|
|
73
|
+
initial_supply: ""
|
|
74
|
+
allocation:
|
|
75
|
+
treasury: ""
|
|
76
|
+
public: ""
|
|
77
|
+
liquidity: ""
|
|
78
|
+
team: ""
|
|
79
|
+
community: ""
|
|
80
|
+
authorities:
|
|
81
|
+
mint: none|wallet|multisig|timelock|program
|
|
82
|
+
freeze: none|wallet|multisig|timelock|program
|
|
83
|
+
pause: none|wallet|multisig|timelock
|
|
84
|
+
upgrade: none|wallet|multisig|timelock
|
|
85
|
+
metadata: immutable|wallet|multisig|timelock
|
|
86
|
+
mechanics:
|
|
87
|
+
transfer_tax_bps: 0
|
|
88
|
+
blacklist: false
|
|
89
|
+
transfer_hook: none
|
|
90
|
+
sale: none
|
|
91
|
+
liquidity: none
|
|
92
|
+
verification:
|
|
93
|
+
source: required
|
|
94
|
+
simulation: required
|
|
95
|
+
firm_audit: false
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Reject ambiguous supply units. Record raw base units and human-readable units.
|
|
99
|
+
Percent allocations must total 100 percent before deploy preparation.
|
|
100
|
+
|
|
101
|
+
## 2. Verify the chain, standard, and tooling
|
|
102
|
+
|
|
103
|
+
1. Resolve the exact chain identity from a live RPC or official client.
|
|
104
|
+
2. Verify native gas asset, address format, finality model, fee fields, explorer,
|
|
105
|
+
compiler/toolchain version, and source/program verification mechanism.
|
|
106
|
+
3. Verify the intended standard from official chain or standards documentation.
|
|
107
|
+
4. Prefer a boring official or widely reviewed implementation.
|
|
108
|
+
5. Record every external factory, router, program, module, and metadata endpoint.
|
|
109
|
+
6. Mark unverified addresses and deprecated tooling `UNSUPPORTED`, not best effort.
|
|
110
|
+
|
|
111
|
+
Chain names are not identities. `mainnet`, `testnet`, and forks must carry distinct
|
|
112
|
+
IDs and RPC evidence.
|
|
113
|
+
|
|
114
|
+
## 3. Force an authority decision
|
|
115
|
+
|
|
116
|
+
Before generating transactions, print a table for:
|
|
117
|
+
|
|
118
|
+
- mint or treasury capability
|
|
119
|
+
- freeze or deny-list capability
|
|
120
|
+
- pause capability
|
|
121
|
+
- upgrade authority
|
|
122
|
+
- metadata authority
|
|
123
|
+
- fee/tax setter
|
|
124
|
+
- transfer-hook owner
|
|
125
|
+
- sale contract owner
|
|
126
|
+
- liquidity position owner
|
|
127
|
+
- treasury and royalty recipients
|
|
128
|
+
|
|
129
|
+
For each authority, state who holds it at creation, whether it can change, the
|
|
130
|
+
transfer/revoke transaction, and what breaks if revoked.
|
|
131
|
+
|
|
132
|
+
Defaults:
|
|
133
|
+
|
|
134
|
+
- fixed supply when future minting is not a product requirement
|
|
135
|
+
- no transfer tax
|
|
136
|
+
- no blacklist
|
|
137
|
+
- no proxy upgradeability
|
|
138
|
+
- no hidden owner balance changes
|
|
139
|
+
- multisig or timelock for powers that must remain
|
|
140
|
+
- revoke only after verification and launch operations that need the authority
|
|
141
|
+
|
|
142
|
+
Never claim "renounced" until independent on-chain read-back proves it.
|
|
143
|
+
|
|
144
|
+
## 4. Family-specific build paths
|
|
145
|
+
|
|
146
|
+
### EVM
|
|
147
|
+
|
|
148
|
+
For a plain fixed-supply token, use Oracle's gated template:
|
|
149
|
+
|
|
150
|
+
```js
|
|
151
|
+
data.call("protocol-templates", "gate", { templateId: "safe-erc20" })
|
|
152
|
+
data.call("protocol-templates", "prepareDeploy", {
|
|
153
|
+
templateId: "safe-erc20",
|
|
154
|
+
chainId,
|
|
155
|
+
args: [name, symbol, supply, initialHolder, initialOwner],
|
|
156
|
+
})
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Required gates:
|
|
160
|
+
|
|
161
|
+
1. Verify chain id and RPC reality.
|
|
162
|
+
2. `forge test` passes.
|
|
163
|
+
3. Static analysis runs when available.
|
|
164
|
+
4. Constructor units and addresses decode back exactly.
|
|
165
|
+
5. Dry-run deployment succeeds on the target chain fork when archive state exists.
|
|
166
|
+
6. Unsigned deploy is stamped; source verification input is prepared separately.
|
|
167
|
+
7. Liquidity and ownership changes remain separate unsigned actions.
|
|
168
|
+
|
|
169
|
+
Any custom minting, tax, blacklist, transfer hook, proxy, permit, votes, vesting, or
|
|
170
|
+
cross-chain bridge logic leaves `safe-erc20` and becomes a custom `GUIDED_BUILD`.
|
|
171
|
+
Do not silently bolt features onto the reviewed template.
|
|
172
|
+
|
|
173
|
+
### Solana
|
|
174
|
+
|
|
175
|
+
Choose standard SPL Token unless a specific Token-2022 extension is required.
|
|
176
|
+
For Token-2022, enumerate every selected extension and its authority, including
|
|
177
|
+
transfer fees, permanent delegate, transfer hook, default account state, metadata
|
|
178
|
+
pointer, interest bearing, confidential transfer, and non-transferable behavior.
|
|
179
|
+
|
|
180
|
+
Prepare distinct unsigned transactions for:
|
|
181
|
+
|
|
182
|
+
1. create mint account and initialize mint
|
|
183
|
+
2. create metadata when used
|
|
184
|
+
3. create distribution token accounts
|
|
185
|
+
4. mint initial supply
|
|
186
|
+
5. transfer or revoke mint authority
|
|
187
|
+
6. transfer or revoke freeze authority
|
|
188
|
+
7. create sale or liquidity positions, only if separately approved
|
|
189
|
+
|
|
190
|
+
Simulate each transaction against the intended cluster. A blockhash-expired result
|
|
191
|
+
must be rebuilt, never manually edited.
|
|
192
|
+
|
|
193
|
+
### Bitcoin Runes
|
|
194
|
+
|
|
195
|
+
A Rune launch is an etching, not a smart-contract deployment. Collect and print:
|
|
196
|
+
|
|
197
|
+
- rune name and spacers
|
|
198
|
+
- divisibility and symbol
|
|
199
|
+
- premine
|
|
200
|
+
- mint amount and cap
|
|
201
|
+
- start and end heights or offsets
|
|
202
|
+
- turbo flag
|
|
203
|
+
- commit UTXO, reveal destination, fee rate, and expected total fees
|
|
204
|
+
|
|
205
|
+
Prepare commit/reveal artifacts only through a verified adapter. Protect the commit
|
|
206
|
+
UTXO from accidental spend, account for the reveal window and reorg risk, and never
|
|
207
|
+
promise an indexer ticker reservation before the etching confirms. Without an
|
|
208
|
+
adapter, status stays `RESEARCH_ONLY`.
|
|
209
|
+
|
|
210
|
+
### Cosmos
|
|
211
|
+
|
|
212
|
+
First determine whether the target uses a native tokenfactory module, CosmWasm
|
|
213
|
+
CW20, or an EVM runtime. These are different launch paths.
|
|
214
|
+
|
|
215
|
+
- tokenfactory: verify denom creation, mint, burn, admin-change, and metadata message
|
|
216
|
+
types from that chain's running version
|
|
217
|
+
- CW20: compile and test the exact contract artifact, instantiate message, minter
|
|
218
|
+
model, marketing info, and migration admin
|
|
219
|
+
- EVM runtime: use the EVM path only after proving chain id and JSON-RPC behavior
|
|
220
|
+
|
|
221
|
+
Never transplant Osmosis, Injective, Sei, or another chain's message type by name.
|
|
222
|
+
|
|
223
|
+
### Sui and Aptos
|
|
224
|
+
|
|
225
|
+
Sui and Aptos need separate Move packages and authority models. Do not share source
|
|
226
|
+
because both languages are called Move.
|
|
227
|
+
|
|
228
|
+
- Sui: identify one-time witness, treasury capability, metadata/display objects,
|
|
229
|
+
deny-list or regulated-coin powers, package upgrade policy, and object ownership
|
|
230
|
+
- Aptos: choose Coin or Fungible Asset, define mint/burn/freeze capability objects,
|
|
231
|
+
metadata object, store model, and module upgrade policy
|
|
232
|
+
|
|
233
|
+
Publish and exercise the full lifecycle on devnet/testnet first. Mainnet remains
|
|
234
|
+
`RESEARCH_ONLY` until the exact package and publish transaction pass review.
|
|
235
|
+
|
|
236
|
+
### Hyperliquid
|
|
237
|
+
|
|
238
|
+
Do not conflate HIP-3 builder-deployed perp markets, HIP-1 or native spot assets,
|
|
239
|
+
HyperEVM ERC-20s, and HIP-4 outcomes. Route HyperEVM assets to EVM. For Hyperliquid
|
|
240
|
+
L1 native assets, verify current official deployment, auction, genesis allocation,
|
|
241
|
+
and deployer requirements before naming a prepare path. Without a dedicated native
|
|
242
|
+
adapter, status is `RESEARCH_ONLY`.
|
|
243
|
+
|
|
244
|
+
## 5. Distribution, sale, and liquidity are separate actions
|
|
245
|
+
|
|
246
|
+
Token creation does not authorize a sale or pool. For each follow-on action, show:
|
|
247
|
+
|
|
248
|
+
- destination contract/program/module
|
|
249
|
+
- token and quote amounts
|
|
250
|
+
- opening price and implied fully diluted value
|
|
251
|
+
- slippage and deadline
|
|
252
|
+
- LP ownership, lock, burn, or withdrawal rights
|
|
253
|
+
- treasury recipient
|
|
254
|
+
- vesting terms and clawback/admin powers
|
|
255
|
+
- simulation and fee estimate
|
|
256
|
+
|
|
257
|
+
Verify DEX factories and routers on the exact chain. A canonical address on Ethereum
|
|
258
|
+
is not canonical on a sibling EVM chain.
|
|
259
|
+
|
|
260
|
+
Never auto-create liquidity after deployment. Never auto-revoke authority before
|
|
261
|
+
metadata, distribution, or verification actions that need it are complete.
|
|
262
|
+
|
|
263
|
+
## 6. Required artifacts
|
|
264
|
+
|
|
265
|
+
A completed prepare run returns:
|
|
266
|
+
|
|
267
|
+
1. `launch-manifest.yaml` with exact units and chain identity
|
|
268
|
+
2. authority and mutability table
|
|
269
|
+
3. source/package hash and dependency lock
|
|
270
|
+
4. test and static-analysis results
|
|
271
|
+
5. target-chain simulation or an explicit reason it is unavailable
|
|
272
|
+
6. fee and balance estimate
|
|
273
|
+
7. ordered unsigned transaction bundle with hashes
|
|
274
|
+
8. source/program verification payload
|
|
275
|
+
9. separate liquidity/distribution bundle when requested
|
|
276
|
+
10. a final user approval checklist, one side effect per line
|
|
277
|
+
|
|
278
|
+
Do not emit a signed payload, private key request, seed phrase request, or broadcast
|
|
279
|
+
command with signing enabled.
|
|
280
|
+
|
|
281
|
+
## Refusals
|
|
282
|
+
|
|
283
|
+
Refuse hidden minting, honeypots, selective sell blocks, fake renouncement, covert
|
|
284
|
+
taxes, wash liquidity, fake volume, stolen upgrade keys, undisclosed permanent
|
|
285
|
+
delegates, and misleading supply claims.
|
|
286
|
+
|
|
287
|
+
## Completion gate
|
|
288
|
+
|
|
289
|
+
A launch is only `PREPARED` when:
|
|
290
|
+
|
|
291
|
+
- chain and standard are exact
|
|
292
|
+
- support status is honest
|
|
293
|
+
- supply and allocation reconcile
|
|
294
|
+
- all authorities are disclosed
|
|
295
|
+
- tests pass
|
|
296
|
+
- simulation passes or the missing capability is explicit
|
|
297
|
+
- every destination and payload hash is recorded
|
|
298
|
+
- no signing or broadcast occurred
|
|
299
|
+
|
|
300
|
+
Anything less is `DRAFT`, `RESEARCH_ONLY`, or `UNSUPPORTED`.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: oracle-nft-gacha-launch
|
|
3
|
+
description: Use when designing or preparing NFT collections, mint pages, reveal mechanics, and gacha-style pack/loot drops.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# NFT and gacha launch builder
|
|
7
|
+
|
|
8
|
+
Use this when a user wants to launch an NFT collection, pack opening, loot box,
|
|
9
|
+
claim pass, or randomized reveal product.
|
|
10
|
+
|
|
11
|
+
## Product shape first
|
|
12
|
+
|
|
13
|
+
State the launch mechanics before code:
|
|
14
|
+
|
|
15
|
+
- asset standard: ERC-721, ERC-1155, Ordinals collection, SPL/NFT, or hybrid
|
|
16
|
+
- supply, per-wallet caps, allowlist/public phases, price, treasury, royalties
|
|
17
|
+
- reveal style: instant, delayed, commit-reveal, VRF-backed, or fully deterministic
|
|
18
|
+
- pack/gacha odds and whether duplicates are possible
|
|
19
|
+
- admin powers: owner, pauser, metadata updater, withdrawer, upgrader
|
|
20
|
+
|
|
21
|
+
## Safety rails
|
|
22
|
+
|
|
23
|
+
- User signs every deploy/mint/admin transaction; Oracle prepares and simulates.
|
|
24
|
+
- Randomness must be honest. Do not use miner/block timestamp as gacha randomness.
|
|
25
|
+
- Publish odds for gacha/loot mechanics and keep them deterministic/auditable.
|
|
26
|
+
- No hidden mint, owner reroll, metadata rug, or unbounded treasury withdrawal.
|
|
27
|
+
- Per-wallet caps and phase windows are enforced on-chain when material.
|
|
28
|
+
- Marketplaces are secondary: floor price is not a guaranteed bid.
|
|
29
|
+
- Public mint bots enforce gas-war limits across chains: total gas cap, optional
|
|
30
|
+
per-unit fee cap, and optional priority-fee cap before returning unsigned
|
|
31
|
+
mint calldata. Missing caps fail closed.
|
|
32
|
+
|
|
33
|
+
## Build checklist
|
|
34
|
+
|
|
35
|
+
1. Choose the boring audited base contract unless novelty is required.
|
|
36
|
+
2. Write the authority model in plain language.
|
|
37
|
+
3. Add tests for mint limits, payment/refund, reveal, withdraw, and admin changes.
|
|
38
|
+
4. Simulate deploy and first mint before returning unsigned transactions.
|
|
39
|
+
5. Produce metadata schema, asset pipeline, and provenance hash/manifest.
|
|
40
|
+
6. Prepare marketplace setup only after contract addresses and metadata are stable.
|
|
41
|
+
|
|
42
|
+
## Gacha-specific checks
|
|
43
|
+
|
|
44
|
+
- Show odds table and expected value in user terms.
|
|
45
|
+
- Cap max spend per wallet/session.
|
|
46
|
+
- Separate entertainment mechanics from investment claims.
|
|
47
|
+
- If jurisdictional gambling risk is plausible, flag it and keep the launch
|
|
48
|
+
non-custodial/transparent rather than pretending it is just an NFT mint.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: oracle-nft-mint-gas-war
|
|
3
|
+
description: Guard public NFT mint bots with chain-wide gas-war caps before any wallet-signed mint transaction is returned.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Oracle NFT mint gas-war guard
|
|
7
|
+
|
|
8
|
+
Use when a public Oracle lane prepares NFT mint transactions or runs a mint bot
|
|
9
|
+
across configured chains.
|
|
10
|
+
|
|
11
|
+
## Rule
|
|
12
|
+
|
|
13
|
+
A mint bot may move fast, but it must not bid uncapped gas.
|
|
14
|
+
|
|
15
|
+
Every prepared mint transaction must carry a gas envelope that fits the user's
|
|
16
|
+
explicit grant or bot policy:
|
|
17
|
+
|
|
18
|
+
- `maxTotalGasWei` / grant `maxGasWei`: total gas spend cap (`gasLimit * maxFeePerGas` or `gasLimit * gasPrice`)
|
|
19
|
+
- optional `maxFeePerGasWei`: per-unit fee cap
|
|
20
|
+
- optional `maxPriorityFeePerGasWei`: tip cap for gas wars
|
|
21
|
+
- chain id: required and bound to the prepared transaction
|
|
22
|
+
|
|
23
|
+
Missing caps fail closed. A mint returning calldata without gas caps is not
|
|
24
|
+
public-safe.
|
|
25
|
+
|
|
26
|
+
## Implementation hook
|
|
27
|
+
|
|
28
|
+
Use `validateNftMintGasWar()` or `assertNftMintGasWar()` from the public package
|
|
29
|
+
before returning a wallet-signable NFT mint transaction.
|
|
30
|
+
|
|
31
|
+
```js
|
|
32
|
+
import { assertNftMintGasWar } from "oracle-agent";
|
|
33
|
+
|
|
34
|
+
assertNftMintGasWar({
|
|
35
|
+
chainId,
|
|
36
|
+
tx: { gasLimit, maxFeePerGas, maxPriorityFeePerGas },
|
|
37
|
+
policy: {
|
|
38
|
+
grant, // may provide maxGasWei
|
|
39
|
+
maxFeePerGasWei,
|
|
40
|
+
maxPriorityFeePerGasWei,
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Public behavior
|
|
46
|
+
|
|
47
|
+
- PASS: return the unsigned mint transaction with the gas verdict fields.
|
|
48
|
+
- BLOCK: show the cap breached and ask the user to raise the cap or skip.
|
|
49
|
+
- Never silently widen gas during a gas war.
|
|
50
|
+
- Never treat mint price cap as gas cap; mint value and gas spend are separate.
|
|
51
|
+
- Never backend-sign public mints. User wallet or explicit self-hosted session
|
|
52
|
+
grant signs.
|
|
53
|
+
|
|
54
|
+
## Verification
|
|
55
|
+
|
|
56
|
+
Run:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
node --test test/nft-gas-war-guard.test.mjs test/package-surface.test.mjs
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Full public release gate still requires `npm test`, package dry-run, and secret
|
|
63
|
+
scan before publishing.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: oracle-polymarket
|
|
3
|
+
description: Use for Polymarket prediction markets — event pricing, books, and resolution risk via the public CLOB and Gamma APIs.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Polymarket
|
|
7
|
+
|
|
8
|
+
Read through Oracle's data plane (`poly-public` provider: CLOB + Gamma REST, no
|
|
9
|
+
key). Settles on Polygon (137).
|
|
10
|
+
|
|
11
|
+
## Ops
|
|
12
|
+
|
|
13
|
+
| Need | Op |
|
|
14
|
+
|---|---|
|
|
15
|
+
| market list | `markets` |
|
|
16
|
+
| events | `events` |
|
|
17
|
+
| order book | `book` |
|
|
18
|
+
| midpoint | `midpoint` |
|
|
19
|
+
| spread | `spread` |
|
|
20
|
+
| last price | `price` |
|
|
21
|
+
|
|
22
|
+
## A price is not a probability
|
|
23
|
+
|
|
24
|
+
0.62 means the last trader transacted there — net of fees, liquidity constraints,
|
|
25
|
+
and whoever is hedging an off-platform position. Before treating it as a forecast:
|
|
26
|
+
|
|
27
|
+
- **depth** — 0.62 on $40 of size carries no information
|
|
28
|
+
- **spread** — wide means nobody defends an opinion
|
|
29
|
+
- **time to resolution** — a 3-day market and a 3-month market at the same price
|
|
30
|
+
are not saying the same thing
|
|
31
|
+
- **fee drag** — round-trip costs eat thin edges
|
|
32
|
+
|
|
33
|
+
## Resolution text is the real risk
|
|
34
|
+
|
|
35
|
+
The most expensive mistake here is not mispricing probability. It is being *right*
|
|
36
|
+
about the world and *wrong* about the resolution criteria.
|
|
37
|
+
|
|
38
|
+
Read the rules before discussing edge. Flag:
|
|
39
|
+
|
|
40
|
+
- ambiguous wording that could settle against the consensus reading
|
|
41
|
+
- who resolves it and on what source
|
|
42
|
+
- what happens on an edge case, a delay, or a cancelled event
|
|
43
|
+
- whether the market can resolve early
|
|
44
|
+
|
|
45
|
+
If the rules could plausibly settle the "obviously right" side as a loss, that is
|
|
46
|
+
the headline, not a footnote.
|
|
47
|
+
|
|
48
|
+
## Correlated markets
|
|
49
|
+
|
|
50
|
+
Related markets often disagree. A set of outcome prices summing well past 1.00 is
|
|
51
|
+
either a fee/liquidity artifact or a genuine inconsistency. Check the sum before
|
|
52
|
+
calling something mispriced.
|
|
53
|
+
|
|
54
|
+
## Hard rules
|
|
55
|
+
|
|
56
|
+
1. Read the resolution criteria before discussing edge.
|
|
57
|
+
2. Never present a market price as your own forecast without saying which you mean.
|
|
58
|
+
3. Quote depth alongside price.
|
|
59
|
+
4. You prepare; the user's wallet signs.
|
|
60
|
+
5. Receipts or it didn't happen.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: oracle-protocol-builder
|
|
3
|
+
description: Use when the user wants Oracle to scaffold/deploy protocol templates. Gated Foundry templates; prepare-only deploy; not a firm audit.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Protocol builder
|
|
7
|
+
|
|
8
|
+
Oracle scaffolds and **prepares unsigned deploys**. The user signs. Custody boundary unchanged.
|
|
9
|
+
|
|
10
|
+
## Security gate (v1)
|
|
11
|
+
|
|
12
|
+
Before any template deploy prepare:
|
|
13
|
+
|
|
14
|
+
1. `forge test` must pass on the template
|
|
15
|
+
2. Slither runs when installed (optional skip if missing; set `REQUIRE_SLITHER=1` to hard-require)
|
|
16
|
+
3. JS `runProtocolTemplateGate` / `prepareTemplateDeploy` refuse otherwise
|
|
17
|
+
|
|
18
|
+
```js
|
|
19
|
+
// list
|
|
20
|
+
data.call("protocol-templates", "list")
|
|
21
|
+
// gate
|
|
22
|
+
data.call("protocol-templates", "gate", { templateId: "safe-erc20" })
|
|
23
|
+
// unsigned deploy prepare (stamped)
|
|
24
|
+
data.call("protocol-templates", "prepareDeploy", {
|
|
25
|
+
templateId: "safe-erc20",
|
|
26
|
+
chainId: 8453,
|
|
27
|
+
args: [name, symbol, supply, initialHolder, initialOwner],
|
|
28
|
+
})
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
CLI: `npm run protocol:gate -- safe-erc20`
|
|
32
|
+
|
|
33
|
+
## Shipped template: `safe-erc20`
|
|
34
|
+
|
|
35
|
+
- Fixed supply, mint once in constructor (no hidden mint)
|
|
36
|
+
- Ownable2Step + pause
|
|
37
|
+
- No tax / blacklist / max-tx / upgrade proxy
|
|
38
|
+
- Foundry tests included
|
|
39
|
+
|
|
40
|
+
## Honesty
|
|
41
|
+
|
|
42
|
+
**Reviewed templates + automated tests ≠ paid Solidity audit.**
|
|
43
|
+
|
|
44
|
+
Docs and prepare envelopes always set `firmAudit: false` and carry the disclaimer.
|
|
45
|
+
Mainnet TVL → independent firm audit.
|
|
46
|
+
|
|
47
|
+
## Required order (custom work)
|
|
48
|
+
|
|
49
|
+
1. Authority model
|
|
50
|
+
2. Threat model
|
|
51
|
+
3. Tests (Foundry)
|
|
52
|
+
4. Static analysis when available
|
|
53
|
+
5. Gate green
|
|
54
|
+
6. Prepare unsigned only
|
|
55
|
+
7. User signs + verify source
|
|
56
|
+
|
|
57
|
+
## Refusal line
|
|
58
|
+
|
|
59
|
+
Refuse hidden drains, honeypots, wash-trading systems, undisclosed tax switches, fake TVL, or any contract whose main purpose is deceiving buyers.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: oracle-protocol-security
|
|
3
|
+
description: Use before preparing any contract deploy or reviewing protocol code. Authority model first, then the vulnerability checklist.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Protocol security
|
|
7
|
+
|
|
8
|
+
Deploys are permanent. This skill runs **before** code is written, not after.
|
|
9
|
+
|
|
10
|
+
## Authority model comes first
|
|
11
|
+
|
|
12
|
+
Before reviewing a single line of logic, answer these in plain language:
|
|
13
|
+
|
|
14
|
+
1. **Who owns it** after deployment — owner, admin, upgrader, pauser, treasury
|
|
15
|
+
2. **What is upgradeable**, and who can upgrade
|
|
16
|
+
3. **What is immutable** once live
|
|
17
|
+
4. **What breaks if the deployer key is lost** — or is stolen
|
|
18
|
+
5. **What an attacker gains** from each privileged function
|
|
19
|
+
|
|
20
|
+
If a contract mints privileged roles to an address, **name that address** and make
|
|
21
|
+
the user confirm it is the intended one. A deploy that hands ownership to the wrong
|
|
22
|
+
key is unrecoverable.
|
|
23
|
+
|
|
24
|
+
## Review checklist
|
|
25
|
+
|
|
26
|
+
| Area | What to actually check |
|
|
27
|
+
|---|---|
|
|
28
|
+
| access control | every privileged fn gated; no missing modifier |
|
|
29
|
+
| initialization | can `initialize` be front-run or called twice? |
|
|
30
|
+
| reentrancy | state written *before* external calls |
|
|
31
|
+
| external calls | return values checked; no blind `call` |
|
|
32
|
+
| integer handling | unchecked blocks justified individually |
|
|
33
|
+
| approvals | exact amount, never unlimited by default |
|
|
34
|
+
| upgrade path | storage layout compatible; gap reserved |
|
|
35
|
+
| emergency stop | exists, and someone can actually reach it |
|
|
36
|
+
| oracle use | manipulation cost vs the value it secures |
|
|
37
|
+
| withdrawal | can funds ever be stranded? |
|
|
38
|
+
|
|
39
|
+
## Prefer boring
|
|
40
|
+
|
|
41
|
+
A fork of an audited contract with a small, reviewed diff beats elegant clean-room
|
|
42
|
+
code. If you propose something novel, justify why the boring option fails.
|
|
43
|
+
|
|
44
|
+
## Verify, never assume
|
|
45
|
+
|
|
46
|
+
- Explorer contract **names are not verification**. Clones share names.
|
|
47
|
+
- Confirm bytecode exists: `eth_getCode` returning `0x` means nothing is deployed
|
|
48
|
+
there. Codesize 2 is an empty stub.
|
|
49
|
+
- Confirm constructor-bound addresses (factory, WETH, router) match what you
|
|
50
|
+
expect — read them back from the deployed contract.
|
|
51
|
+
- Verify a router or venue from the protocol's **own API or docs**, per chain, and
|
|
52
|
+
record how and when you verified it.
|
|
53
|
+
|
|
54
|
+
## Deploy discipline
|
|
55
|
+
|
|
56
|
+
Review → simulate → prepare **unsigned** → user signs. Never house-sign. The
|
|
57
|
+
destination allowlist applies to deploy targets like any other destination.
|
|
58
|
+
|
|
59
|
+
Decode constructor arguments and read them back to the user in plain language
|
|
60
|
+
before they sign. "Trust the calldata" is not consent.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: oracle-public-product
|
|
3
|
+
description: Use for Oracle public product UX/copy: non-custodial, prepare-first, graph/evidence-led, no operator framing.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Oracle public product
|
|
7
|
+
|
|
8
|
+
Use this when writing Oracle public docs, console copy, landing pages, launch notes,
|
|
9
|
+
or capability-pack language.
|
|
10
|
+
|
|
11
|
+
## Positioning
|
|
12
|
+
|
|
13
|
+
Oracle is a public multichain crypto agent interface:
|
|
14
|
+
|
|
15
|
+
- trader: quote, route, simulate, prepare, and verify receipts
|
|
16
|
+
- builder: scaffold contracts/apps and prepare unsigned deploy/admin txs
|
|
17
|
+
- analyzer: token, contract, venue, wallet, and market research
|
|
18
|
+
- scanner: chain scanners and smart-wallet boards
|
|
19
|
+
- non-EVM lanes: Solana and Bitcoin/Ordinals where supported
|
|
20
|
+
|
|
21
|
+
The product voice is user-facing. Do not describe internal operator plumbing,
|
|
22
|
+
private wallets, VPS paths, hot-wallet ops, or house execution.
|
|
23
|
+
|
|
24
|
+
## Custody copy
|
|
25
|
+
|
|
26
|
+
Always state the invariant clearly:
|
|
27
|
+
|
|
28
|
+
- Oracle prepares; the user's wallet signs.
|
|
29
|
+
- Broadcast needs explicit user/grant authority.
|
|
30
|
+
- Prepare is not sign. Sign is not broadcast.
|
|
31
|
+
- Server API keys are scoped agent keys, not wallet keys.
|
|
32
|
+
|
|
33
|
+
## Forbidden public framing
|
|
34
|
+
|
|
35
|
+
- no autonomous custody promises
|
|
36
|
+
- no hidden operator signer references
|
|
37
|
+
- no guaranteed-profit or floor-guarantee claims
|
|
38
|
+
- no "we execute for you" without the grant/user-wallet boundary
|
|
39
|
+
- no references to private infrastructure, hostnames, paths, or internal agents
|
|
40
|
+
|
|
41
|
+
## Output standard
|
|
42
|
+
|
|
43
|
+
Lead with what the user can do. Then name the guardrail. Keep it concrete and
|
|
44
|
+
short: capability, boundary, evidence.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: oracle-receipts
|
|
3
|
+
description: Use whenever reporting the outcome of any on-chain action. Enforces that a claim of success carries a hash, a receipt, and a balance delta.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Receipts or it didn't happen
|
|
7
|
+
|
|
8
|
+
The failure mode this prevents: an agent says "done, swapped 0.5 ETH for USDC" when
|
|
9
|
+
the transaction reverted, was never broadcast, or landed with a different output
|
|
10
|
+
than promised. The user then acts on a false balance.
|
|
11
|
+
|
|
12
|
+
## The rule
|
|
13
|
+
|
|
14
|
+
A money-moving action is **complete** only when you can show:
|
|
15
|
+
|
|
16
|
+
1. **transaction hash** — the real one, from the broadcast response
|
|
17
|
+
2. **receipt status** — `1`. A receipt with status `0` is a *failed* transaction
|
|
18
|
+
that still consumed gas; that is not success
|
|
19
|
+
3. **balance delta** — the output token balance actually changed, read back after
|
|
20
|
+
the receipt
|
|
21
|
+
4. **the log** proving the intended event fired (`Swap`, `Transfer` to the right
|
|
22
|
+
recipient, `OrderFilled`)
|
|
23
|
+
|
|
24
|
+
Missing any of the four → report what you have and call it incomplete.
|
|
25
|
+
|
|
26
|
+
## Language discipline
|
|
27
|
+
|
|
28
|
+
| Don't say | Say |
|
|
29
|
+
|---|---|
|
|
30
|
+
| "swapped" (before receipt) | "prepared" / "broadcast, awaiting receipt" |
|
|
31
|
+
| "done" | "receipt 1, balance +NNN USDC, hash 0x..." |
|
|
32
|
+
| "it should have gone through" | "unknown — no receipt yet" |
|
|
33
|
+
| "approved and swapped" | name each transaction separately |
|
|
34
|
+
|
|
35
|
+
**Preparing is not signing. Signing is not broadcasting. Broadcasting is not
|
|
36
|
+
confirmation.** Four distinct states; never collapse them in a report.
|
|
37
|
+
|
|
38
|
+
## Multi-step actions
|
|
39
|
+
|
|
40
|
+
An ERC-20 swap is at minimum two transactions: `approve` then the swap. Report each
|
|
41
|
+
separately with its own hash. If the approve landed and the swap reverted, the
|
|
42
|
+
honest report is "allowance set, swap failed" — not "swap failed" (the user now has
|
|
43
|
+
a live allowance they should know about).
|
|
44
|
+
|
|
45
|
+
For a raw-pair or multi-leg route: funding a pool is **not** a buy. Until the swap
|
|
46
|
+
call itself has a receipt, the tokens are sitting somewhere they can be taken.
|
|
47
|
+
|
|
48
|
+
## When it fails
|
|
49
|
+
|
|
50
|
+
Say what failed, the revert reason if you have it, and what you tried. Never
|
|
51
|
+
substitute a plausible-looking result for one you could not obtain. A reported
|
|
52
|
+
blocker is useful; an invented success is a loss.
|