@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,298 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "oracle-full-crypto",
|
|
3
|
+
"name": "Oracle Full Crypto Pack",
|
|
4
|
+
"version": 4,
|
|
5
|
+
"audience": "public-users",
|
|
6
|
+
"description": "Default capability set for public Oracle: trader, builder, analyzer, deterministic /balance aggregation, multichain scanner, meme-token sniping, RFQ routing, tokenized-asset buys, NFT mint gas-war limits, Solana, Bitcoin inscriptions, chain-family token/NFT collections, gacha/DEX launches, and protocol build under bound grants. User signs everything.",
|
|
7
|
+
"posture": {
|
|
8
|
+
"default": "DISARMED",
|
|
9
|
+
"custody": "self-custodial",
|
|
10
|
+
"signing": "user-wallet-only",
|
|
11
|
+
"broadcast": "user-or-explicit-grant-only",
|
|
12
|
+
"never": [
|
|
13
|
+
"operator-hot-wallet-by-default",
|
|
14
|
+
"private-executor-custody",
|
|
15
|
+
"house-custody",
|
|
16
|
+
"unguarded-broadcast",
|
|
17
|
+
"uncapped-gas-war-mints"
|
|
18
|
+
]
|
|
19
|
+
},
|
|
20
|
+
"includes_protocol_build": true,
|
|
21
|
+
"skill_packs": {
|
|
22
|
+
"research": [
|
|
23
|
+
"oracle-token-research",
|
|
24
|
+
"oracle-contract-research",
|
|
25
|
+
"oracle-smart-wallet-scanner",
|
|
26
|
+
"oracle-meme-token-sniper",
|
|
27
|
+
"oracle-bitcoin",
|
|
28
|
+
"oracle-solana",
|
|
29
|
+
"hyperliquid",
|
|
30
|
+
"polymarket",
|
|
31
|
+
"oracle-chain-graphs-telegram-cards",
|
|
32
|
+
"oracle-rfq-tokenized-assets",
|
|
33
|
+
"oracle-hypercore-staking"
|
|
34
|
+
],
|
|
35
|
+
"execution_prepare": [
|
|
36
|
+
"self-custodial-onchain-execution",
|
|
37
|
+
"multichain-exec-desk",
|
|
38
|
+
"trade-loop-circuit-breaker",
|
|
39
|
+
"protocol-api-key-integration",
|
|
40
|
+
"oracle-bitcoin",
|
|
41
|
+
"oracle-best-execution",
|
|
42
|
+
"oracle-equities",
|
|
43
|
+
"oracle-rfq-tokenized-assets",
|
|
44
|
+
"oracle-meme-token-sniper",
|
|
45
|
+
"oracle-nft-mint-gas-war",
|
|
46
|
+
"oracle-solana-nft",
|
|
47
|
+
"oracle-hypercore-staking"
|
|
48
|
+
],
|
|
49
|
+
"venues": [
|
|
50
|
+
"oracle-solana",
|
|
51
|
+
"oracle-bitcoin",
|
|
52
|
+
"hyperliquid",
|
|
53
|
+
"polymarket",
|
|
54
|
+
"rh-token-research",
|
|
55
|
+
"rh-token-swap",
|
|
56
|
+
"rh-token-chart",
|
|
57
|
+
"oracle-meme-token-sniper",
|
|
58
|
+
"oracle-rfq-tokenized-assets",
|
|
59
|
+
"oracle-solana-nft",
|
|
60
|
+
"oracle-hypercore-staking"
|
|
61
|
+
],
|
|
62
|
+
"protocol_build": [
|
|
63
|
+
"oracle-protocol-builder",
|
|
64
|
+
"oracle-contract-research",
|
|
65
|
+
"oracle-protocol-security",
|
|
66
|
+
"oracle-multichain-token-launch",
|
|
67
|
+
"oracle-multichain-nft-launch",
|
|
68
|
+
"oracle-nft-gacha-launch",
|
|
69
|
+
"oracle-dex-launch",
|
|
70
|
+
"protocol-api-key-integration",
|
|
71
|
+
"oracle-nft-mint-gas-war"
|
|
72
|
+
],
|
|
73
|
+
"product_law": [
|
|
74
|
+
"oracle-public-product",
|
|
75
|
+
"oracle-grants",
|
|
76
|
+
"oracle-receipts",
|
|
77
|
+
"trade-loop-circuit-breaker",
|
|
78
|
+
"oracle-chain-graphs-telegram-cards",
|
|
79
|
+
"oracle-nft-mint-gas-war"
|
|
80
|
+
],
|
|
81
|
+
"launch_build": [
|
|
82
|
+
"oracle-protocol-builder",
|
|
83
|
+
"oracle-nft-gacha-launch",
|
|
84
|
+
"oracle-dex-launch",
|
|
85
|
+
"oracle-protocol-security",
|
|
86
|
+
"oracle-multichain-token-launch",
|
|
87
|
+
"oracle-multichain-nft-launch",
|
|
88
|
+
"oracle-nft-mint-gas-war"
|
|
89
|
+
],
|
|
90
|
+
"analysis": [
|
|
91
|
+
"oracle-token-research",
|
|
92
|
+
"oracle-contract-research",
|
|
93
|
+
"oracle-smart-wallet-scanner",
|
|
94
|
+
"oracle-meme-token-sniper",
|
|
95
|
+
"oracle-best-execution",
|
|
96
|
+
"oracle-equities",
|
|
97
|
+
"balance",
|
|
98
|
+
"oracle-chain-graphs-telegram-cards",
|
|
99
|
+
"oracle-rfq-tokenized-assets"
|
|
100
|
+
]
|
|
101
|
+
},
|
|
102
|
+
"excluded_from_public": [
|
|
103
|
+
"private deploy ops",
|
|
104
|
+
"private executor ops",
|
|
105
|
+
"private chain ops",
|
|
106
|
+
"operator infrastructure access",
|
|
107
|
+
"any skill that requires an operator wallet or server root access"
|
|
108
|
+
],
|
|
109
|
+
"protocol_build": {
|
|
110
|
+
"enabled": true,
|
|
111
|
+
"modes": [
|
|
112
|
+
"research-existing-protocol",
|
|
113
|
+
"scaffold-contracts",
|
|
114
|
+
"scaffold-nft-or-gacha",
|
|
115
|
+
"scaffold-dex-or-launchpad",
|
|
116
|
+
"write-deploy-scripts",
|
|
117
|
+
"prepare-unsigned-deploy-txs",
|
|
118
|
+
"security-checklist",
|
|
119
|
+
"launchpad-public-surface",
|
|
120
|
+
"multichain-token-launch",
|
|
121
|
+
"multichain-nft-collection-launch"
|
|
122
|
+
],
|
|
123
|
+
"user_signs": true,
|
|
124
|
+
"grant_actions_example": [
|
|
125
|
+
"read:chain",
|
|
126
|
+
"simulate:tx",
|
|
127
|
+
"prepare:deploy",
|
|
128
|
+
"prepare:verify"
|
|
129
|
+
],
|
|
130
|
+
"targets": "user-provided factory/router/implementations only unless added to destination allowlist",
|
|
131
|
+
"copy": "Oracle can classify and prepare chain-family token, NFT collection, protocol, gacha, and DEX launches. Unsupported adapters fail closed. You still sign every side effect."
|
|
132
|
+
},
|
|
133
|
+
"profiles": [
|
|
134
|
+
{
|
|
135
|
+
"id": "polymarket-agent",
|
|
136
|
+
"skills": [
|
|
137
|
+
"polymarket",
|
|
138
|
+
"polymarket-trade-journal",
|
|
139
|
+
"trade-loop-circuit-breaker",
|
|
140
|
+
"oracle-chain-graphs-telegram-cards"
|
|
141
|
+
],
|
|
142
|
+
"description": "Polymarket prediction markets: public event pricing/cards plus prepared order intents when user CLOB/API keys are configured."
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"id": "hyperliquid-agent",
|
|
146
|
+
"skills": [
|
|
147
|
+
"hyperliquid",
|
|
148
|
+
"hyperliquid-hip4-outcome-markets",
|
|
149
|
+
"trade-loop-circuit-breaker",
|
|
150
|
+
"oracle-chain-graphs-telegram-cards",
|
|
151
|
+
"oracle-rfq-tokenized-assets",
|
|
152
|
+
"oracle-hypercore-staking"
|
|
153
|
+
],
|
|
154
|
+
"description": "Hyperliquid perps/spot, HyperEVM, HIP-3 builder dexs, HIP-4 outcome markets, and HyperCore HYPE staking/delegation prepares. API-key actions activate only with user-provided keys."
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
"id": "robinhood-agent",
|
|
158
|
+
"skills": [
|
|
159
|
+
"rh-public-token-research",
|
|
160
|
+
"rh-token-research",
|
|
161
|
+
"rh-token-chart",
|
|
162
|
+
"rh-token-swap",
|
|
163
|
+
"oracle-meme-token-sniper",
|
|
164
|
+
"oracle-chain-graphs-telegram-cards",
|
|
165
|
+
"oracle-rfq-tokenized-assets"
|
|
166
|
+
],
|
|
167
|
+
"description": "Robinhood Chain tokens/NFTs plus tokenized Robinhood-style assets when chain/contract/route is verified."
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"id": "solana-agent",
|
|
171
|
+
"skills": [
|
|
172
|
+
"oracle-solana",
|
|
173
|
+
"oracle-receipts",
|
|
174
|
+
"oracle-circuit-breaker",
|
|
175
|
+
"oracle-best-execution",
|
|
176
|
+
"oracle-equities",
|
|
177
|
+
"oracle-meme-token-sniper",
|
|
178
|
+
"oracle-chain-graphs-telegram-cards",
|
|
179
|
+
"oracle-rfq-tokenized-assets",
|
|
180
|
+
"oracle-solana-nft"
|
|
181
|
+
],
|
|
182
|
+
"label": "solana agent",
|
|
183
|
+
"description": "Solana research, SPL accounts, Jupiter quotes, live simulation, Magic Eden NFT reads plus unsigned buy/list/mint tickets, launch/meme-token scanning, and unsigned swap preparation."
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"id": "bitcoin-agent",
|
|
187
|
+
"skills": [
|
|
188
|
+
"oracle-bitcoin",
|
|
189
|
+
"oracle-receipts",
|
|
190
|
+
"oracle-circuit-breaker",
|
|
191
|
+
"oracle-smart-wallet-scanner"
|
|
192
|
+
],
|
|
193
|
+
"label": "bitcoin agent",
|
|
194
|
+
"description": "Bitcoin L1, Ordinals/runes research, Satflow PSBTs, and inscription preparation."
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"id": "stable-agent",
|
|
198
|
+
"skills": [
|
|
199
|
+
"evm-contract-research",
|
|
200
|
+
"self-custodial-onchain-execution",
|
|
201
|
+
"oracle-meme-token-sniper",
|
|
202
|
+
"oracle-chain-graphs-telegram-cards",
|
|
203
|
+
"oracle-rfq-tokenized-assets"
|
|
204
|
+
]
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"id": "protocol-builder",
|
|
208
|
+
"skills": [
|
|
209
|
+
"oracle-protocol-builder",
|
|
210
|
+
"oracle-contract-research",
|
|
211
|
+
"oracle-protocol-security",
|
|
212
|
+
"oracle-nft-gacha-launch",
|
|
213
|
+
"oracle-dex-launch",
|
|
214
|
+
"oracle-receipts",
|
|
215
|
+
"oracle-multichain-token-launch",
|
|
216
|
+
"oracle-multichain-nft-launch"
|
|
217
|
+
],
|
|
218
|
+
"label": "protocol builder",
|
|
219
|
+
"description": "Classify by chain family, then scaffold, review, and prepare unsigned token, NFT collection, gacha, DEX, and protocol launches."
|
|
220
|
+
}
|
|
221
|
+
],
|
|
222
|
+
"default_tools": {
|
|
223
|
+
"read": [
|
|
224
|
+
"mad_data",
|
|
225
|
+
"web_search",
|
|
226
|
+
"evm_quote",
|
|
227
|
+
"evm_simulate",
|
|
228
|
+
"btc_health",
|
|
229
|
+
"btc_fees",
|
|
230
|
+
"btc_inscription_info",
|
|
231
|
+
"solana_balance",
|
|
232
|
+
"portfolio_balance",
|
|
233
|
+
"portfolio_snapshot",
|
|
234
|
+
"portfolio_history",
|
|
235
|
+
"portfolio_value_graph",
|
|
236
|
+
"nft_inventory",
|
|
237
|
+
"nft_gallery",
|
|
238
|
+
"nft_pnl"
|
|
239
|
+
],
|
|
240
|
+
"prepare": [
|
|
241
|
+
"evm_prepare",
|
|
242
|
+
"evm_protocol_prepare",
|
|
243
|
+
"evm_protocol_quote",
|
|
244
|
+
"jupiter_quote",
|
|
245
|
+
"jupiter_prepare",
|
|
246
|
+
"bitcoin_inscribe_prepare",
|
|
247
|
+
"nft_prepare_list"
|
|
248
|
+
],
|
|
249
|
+
"never_public_default": [
|
|
250
|
+
"evm_sign",
|
|
251
|
+
"evm_send",
|
|
252
|
+
"solana_sign",
|
|
253
|
+
"solana_send",
|
|
254
|
+
"bitcoin_sign",
|
|
255
|
+
"bitcoin_send",
|
|
256
|
+
"bitcoin_inscribe_sign_commit",
|
|
257
|
+
"bitcoin_inscribe_sign_reveal"
|
|
258
|
+
]
|
|
259
|
+
},
|
|
260
|
+
"capabilities": [
|
|
261
|
+
"trader",
|
|
262
|
+
"builder",
|
|
263
|
+
"analyzer",
|
|
264
|
+
"solana-jupiter",
|
|
265
|
+
"bitcoin-inscriptions",
|
|
266
|
+
"nft-project-launch",
|
|
267
|
+
"gacha-launch",
|
|
268
|
+
"dex-launch",
|
|
269
|
+
"meme-token-sniping",
|
|
270
|
+
"onchain-scanner",
|
|
271
|
+
"smart-wallet-scanner",
|
|
272
|
+
"best-execution-routing",
|
|
273
|
+
"bridges",
|
|
274
|
+
"perps",
|
|
275
|
+
"vaults",
|
|
276
|
+
"prediction-markets",
|
|
277
|
+
"ordinals-runes",
|
|
278
|
+
"per-chain-graphs",
|
|
279
|
+
"telegram-cards",
|
|
280
|
+
"hip-3-builder-dex",
|
|
281
|
+
"hip-4-outcome-markets",
|
|
282
|
+
"polymarket-api-key-trading",
|
|
283
|
+
"cross-chain-rfq",
|
|
284
|
+
"rfq-best-execution",
|
|
285
|
+
"tokenized-robinhood-assets",
|
|
286
|
+
"nft-mint-gas-war-limits",
|
|
287
|
+
"nft-mint-bot",
|
|
288
|
+
"solana-nft-marketplace",
|
|
289
|
+
"solana-nft-mint",
|
|
290
|
+
"hypercore-hype-staking",
|
|
291
|
+
"hypercore-validator-delegation",
|
|
292
|
+
"multichain-token-launch",
|
|
293
|
+
"multichain-nft-collection-launch",
|
|
294
|
+
"multichain-balance",
|
|
295
|
+
"nft-inventory-gallery-pnl",
|
|
296
|
+
"portfolio-balance-history-graph"
|
|
297
|
+
]
|
|
298
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createHash as m}from"node:crypto";import{wordlists as g}from"ethers";var A=1,E=new Set(["privatekey","privkey","secretkey","seedphrase","seed","mnemonic","passphrase","password","keystore","keymaterial","wif","xprv","xpriv","bearer","authorization","signature","apikey","credential"]),x=[/\b[5KL][1-9A-HJ-NP-Za-km-z]{50,51}\b/,/\bxprv[0-9A-Za-z]{50,}\b/],$=new Set([12,15,18,21,24]);function S(e){let t=String(e).trim().toLowerCase().split(/\s+/).filter(Boolean);return $.has(t.length)&&t.every(r=>g.en.getWordIndex(r)>=0)}var H=/^\s*(?:0x)?[0-9a-fA-F]{64}\s*$/,O=/(hash|digest|root|salt|nonce|proof|commitment|sig|id)(?:e?s)?$/i,j=new Set(["calldata","data","publickey","pubkey","message","payload","input","extradata"]);function T(e){let t=b(e);return j.has(t)||O.test(t)}var f=class extends Error{constructor(t){super(`action receipt refused: secret-bearing field at ${t}`),this.name="ActionReceiptSecretError",this.code="ACTION_RECEIPT_SECRET"}};function b(e){return String(e).replace(/[^a-z0-9]/gi,"").toLowerCase()}function C(e){let t=b(e);return[...E].some(r=>t.includes(r))}function _(e,t,r){if(typeof t=="string"){if(x.some(o=>o.test(t))||S(t))throw new f(r);if(H.test(t)&&!T(e))throw new f(r)}}function a(e,t="$",r=""){if(e==null||typeof e=="boolean")return e;if(typeof e=="string")return _(r,e,t),e;if(typeof e=="number"){if(!Number.isFinite(e))throw new TypeError(`action receipt: non-finite number at ${t}`);return e}if(typeof e=="bigint")return e.toString();if(Array.isArray(e))return e.map((n,i)=>a(n,`${t}[${i}]`,r));if(typeof e!="object"||Object.getPrototypeOf(e)!==Object.prototype)throw new TypeError(`action receipt: JSON-like value required at ${t}`);let o={};for(let n of Object.keys(e).sort()){let i=`${t}.${n}`;if(C(n))throw new f(i);e[n]!==void 0&&(o[n]=a(e[n],i,n))}return o}function L(e){return a(e)}function d(e){return e===null||typeof e!="object"?JSON.stringify(e):Array.isArray(e)?`[${e.map(d).join(",")}]`:`{${Object.keys(e).map(t=>`${JSON.stringify(t)}:${d(e[t])}`).join(",")}}`}function R(e){return d(a(e))}function k(e){if(!e||typeof e!="object"||Array.isArray(e))throw new TypeError("action receipt: object required");let{receiptId:t,summary:r,...o}=e;return m("sha256").update(R(o)).digest("hex")}function c(e,...t){for(let r of t)if(e[r]!==void 0)return e[r]}function s(e,t,r){let o=c(e,...t);if(o==null)throw new TypeError(`action receipt: ${r} required`);return o}function I(e){let t=c(e,"balances","balanceChanges"),r=c(e,"beforeBalances","balancesBefore","before"),o=c(e,"afterBalances","balancesAfter","after");return t!==void 0?{balances:t}:r===void 0&&o===void 0?{}:{balances:{...r===void 0?{}:{before:r},...o===void 0?{}:{after:o}}}}function N(e={}){if(!e||typeof e!="object"||Array.isArray(e))throw new TypeError("action receipt: input object required");a(e);let t=c(e,"txHash","transactionHash"),r=c(e,"phase","stage","resultType")??(t==null?"prepare":"execute");if(r!=="prepare"&&r!=="execute")throw new TypeError('action receipt: phase must be "prepare" or "execute"');let o={receiptVersion:A,phase:r,intent:s(e,["intent"],"intent"),route:s(e,["route"],"route"),decodedAction:s(e,["decodedAction","action"],"decodedAction"),policyChecks:s(e,["policyChecks","checks"],"policyChecks"),allowlistHits:s(e,["allowlistHits","allowlistMatches"],"allowlistHits"),prepareHash:s(e,["prepareHash"],"prepareHash"),...t==null?{}:{txHash:t},...I(e)},n=a(o);return Object.freeze({...n,receiptId:k(n)})}var q=N;function u(e,t=[]){if(typeof e=="string"||typeof e=="number")return String(e);for(let r of t)if(e?.[r]!=null)return String(e[r]);return"recorded"}function y(e){if(typeof e=="boolean")return e;if(e&&typeof e=="object"){if(typeof e.ok=="boolean")return e.ok;if(typeof e.allowed=="boolean")return e.allowed;if(typeof e.passed=="boolean")return e.passed}return null}function z(e){if(!e||typeof e!="object")throw new TypeError("action receipt: object required");let t=u(e.decodedAction,["type","action","method","name"]),r=u(e.route,["name","provider","venue","id"]),o=Array.isArray(e.policyChecks)?e.policyChecks:Object.values(e.policyChecks||{}),n=o.filter(l=>y(l)===!0).length,i=o.filter(l=>y(l)===!1).length,p=Array.isArray(e.allowlistHits)?e.allowlistHits.length:Object.keys(e.allowlistHits||{}).length,h=e.txHash==null?"no transaction hash":`tx ${e.txHash}`,w=e.balances==null?"balances not provided":"before/after balances recorded";return`${e.phase} ${t} via ${r}; policy ${n} passed, ${i} failed; ${p} allowlist hit${p===1?"":"s"}; ${h}; ${w}; receipt ${e.receiptId}`}var F=z;export{A as ACTION_RECEIPT_VERSION,f as ActionReceiptSecretError,L as assertNoReceiptSecrets,R as canonicalReceiptJson,k as computeReceiptId,q as createActionReceipt,F as formatActionReceipt,N as normalizeActionReceipt,z as summarizeActionReceipt};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var o=Object.freeze({ALERT_ONLY:"alert_only",EXECUTE:"execute"}),i=new Set(["watch","watch this","ping","ping me","alert","notify"]),r=new Set(["watching","armed"]);function a(t){if(typeof t!="string"||!t.trim())throw new TypeError("explicit action verb required");let e=t.trim().toLowerCase().replace(/\s+/g," ");if(i.has(e))return o.ALERT_ONLY;if(e==="arm")return o.EXECUTE;throw new TypeError(`unsupported action verb: ${e}`)}function c(t={}){let{verb:e,...n}=t;return{...n,active:!0,actionMode:a(e)}}function u(t){if(!t||typeof t!="object"||typeof t.active!="boolean")throw new TypeError("active must be boolean");if(!Object.values(o).includes(t.actionMode))throw new TypeError("actionMode must be alert_only or execute");return t}function E(t){return t?.active===!0&&t?.actionMode===o.ALERT_ONLY}function s(t){return t?.active===!0&&t?.actionMode===o.EXECUTE}function p(t={}){if(t.actionMode!==void 0&&t.actionMode!==o.ALERT_ONLY)throw new TypeError("non-alert record cannot enter alert-only watch migration");let e=typeof t.active=="boolean"?t.active:r.has(String(t.status||"").toLowerCase());return{...t,active:e,actionMode:o.ALERT_ONLY}}export{o as ACTION_MODES,a as actionModeForVerb,u as assertActionRecord,c as createActionRecord,E as isActiveAlert,s as isActiveExecution,p as migrateLegacyWatchRecord};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import c from"node:fs";import l from"node:path";import{homedir as m}from"node:os";import{join as p}from"node:path";var k=process.env.ORACLE_PUBLIC_DESKTOP==="1",S=k?process.env.ORACLE_CONFIG_DIR||p(m(),".config","oracle"):p(m(),".config","oracle"),z=k?S:p(m(),".config","mad-desk");function A(e,r,t=""){let o=process.env[e];if(o!=null&&String(o).trim()!=="")return o;let s=r?process.env[r]:void 0;return s!=null&&String(s).trim()!==""?s:t}var E=/^0x[0-9a-fA-F]{40}$/,x=new Set(["privatekey","private_key","secret","seed","mnemonic","passphrase","signature","keystore"]),D=["privatekey","privkey","secretkey","secret","seedphrase","seed","mnemonic","passphrase","password","keystore","keymaterial","signature","wif","xprv","xpriv","apikey","bearer","credential"],I=[/\b[5KL][1-9A-HJ-NP-Za-km-z]{50,51}\b/,/\bxprv[0-9A-Za-z]{50,}\b/,/\b(?:[a-z]{3,8}\s+){11,}[a-z]{3,8}\b/i],L=/^\s*(?:0x)?[0-9a-fA-F]{64}\s*$/;function y(e){return String(e).toLowerCase().replace(/[^a-z0-9]/g,"")}function R(e,r){let t=y(e);if(x.has(String(e).toLowerCase())||D.some(o=>t.includes(o)))throw new Error(`address-book: ${r} is forbidden; the book stores labels, never key material`)}function N(e,r){if(typeof e=="string"&&(I.some(t=>t.test(e))||L.test(e)))throw new Error(`address-book: ${r} looks like key material; the book stores labels, never key material`)}function C(){let e=A("ORACLE_ADDRESS_BOOK","MAD_ADDRESS_BOOK","");if(e)return l.resolve(e);let r=A("ORACLE_CONFIG_DIR","MAD_CONFIG_DIR",S);return l.join(r,"address-book.json")}function b(e,r="field"){if(Array.isArray(e)){e.forEach((t,o)=>b(t,`${r}[${o}]`));return}if(!e||typeof e!="object"){N(e,r);return}for(let[t,o]of Object.entries(e))R(t,t),b(o,t)}function h(e){let r=String(e||"").trim();if(!E.test(r))throw new Error("address-book: address must be 0x + 40 hex characters");return r.toLowerCase()}function a(e,r){return e==null||e===""?null:String(e).slice(0,r)}function g(){return{version:1,updatedAt:null,entries:[]}}function _(e){return{address:String(e.address).toLowerCase(),label:a(e.label,80)||"unknown",who:a(e.who,120),role:a(e.role,40),chainIds:Array.isArray(e.chainIds)?e.chainIds.map(Number).filter(Number.isFinite):[],notes:a(e.notes,500),source:a(e.source,80),firstSeenAt:e.firstSeenAt||null,lastSeenAt:e.lastSeenAt||null}}function d(){try{let e=JSON.parse(c.readFileSync(C(),"utf8"));if(!e||typeof e!="object")return g();let r=Array.isArray(e.entries)?e.entries:[];return{version:1,updatedAt:e.updatedAt||null,entries:r.filter(t=>t&&typeof t=="object"&&E.test(String(t.address||""))).map(_)}}catch{return g()}}function O(e){let r=C();c.mkdirSync(l.dirname(r),{recursive:!0,mode:448});let t={...e,version:1,updatedAt:new Date().toISOString()},o=l.join(l.dirname(r),`.address-book.${process.pid}.tmp`);c.writeFileSync(o,`${JSON.stringify(t,null,2)}
|
|
2
|
+
`,{mode:384}),c.renameSync(o,r);try{c.chmodSync(r,384)}catch{}return t}function G(e={}){let r=d(),t=r.entries;if(e.role&&(t=t.filter(o=>o.role===String(e.role))),e.who){let o=String(e.who).toLowerCase();t=t.filter(s=>(s.who||"").toLowerCase().includes(o)||(s.label||"").toLowerCase().includes(o))}if(e.q){let o=String(e.q).toLowerCase();t=t.filter(s=>s.address.includes(o)||(s.label||"").toLowerCase().includes(o)||(s.who||"").toLowerCase().includes(o)||(s.notes||"").toLowerCase().includes(o))}return{updatedAt:r.updatedAt,count:t.length,entries:t}}function q(e){let r=h(e),t=d().entries.filter(o=>o.address===r);return{address:r,found:t.length>0,entries:t}}function T(e={}){b(e);let r=h(e.address),t=a(e.label??e.role,80)||"wallet",o=new Date().toISOString(),s=d(),i=s.entries.findIndex(n=>n.address===r&&n.label===t),u=_({address:r,label:t,who:e.who,role:e.role,chainIds:e.chainIds,notes:e.notes,source:e.source||"agent",firstSeenAt:i>=0&&s.entries[i].firstSeenAt||o,lastSeenAt:o});i>=0?s.entries[i]=u:s.entries.push(u);let w=n=>n==="agent"?0:n==="owner"?1:2;s.entries.sort((n,f)=>w(n.role)-w(f.role)||n.label.localeCompare(f.label)||n.address.localeCompare(f.address));let v=O(s);return{ok:!0,entry:u,count:v.entries.length}}function Y(e,r=null){let t=h(e),o=d(),s=o.entries.length;return o.entries=o.entries.filter(i=>i.address!==t?!0:r==null?!1:i.label!==String(r)),O(o),{ok:!0,removed:s-o.entries.length,count:o.entries.length}}export{C as addressBookPath,Y as forgetAddress,G as listAddresses,q as lookupAddress,d as readAddressBook,T as rememberAddress};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# your lane
|
|
2
|
+
|
|
3
|
+
> Template. Copy this directory, rename it, and rewrite this file.
|
|
4
|
+
|
|
5
|
+
## What you own
|
|
6
|
+
|
|
7
|
+
One sentence. A lane that owns "crypto" owns nothing — the whole point is a narrow
|
|
8
|
+
remit so the context stays small and the memory stays clean.
|
|
9
|
+
|
|
10
|
+
## The thing that bites people here
|
|
11
|
+
|
|
12
|
+
Every venue has one. Perps have liquidation. Low-caps have honeypots. New chains
|
|
13
|
+
have dry bridges. Solana has blockhash expiry.
|
|
14
|
+
|
|
15
|
+
Write yours here, concretely, with the check that catches it. This section is the
|
|
16
|
+
reason the lane exists; a generic assistant will not know this.
|
|
17
|
+
|
|
18
|
+
## Hard rules
|
|
19
|
+
|
|
20
|
+
Keep these. They are the desk's invariants, not suggestions:
|
|
21
|
+
|
|
22
|
+
1. **You do not sign.** Transactions are prepared for the user's wallet.
|
|
23
|
+
2. **A grant is authorization; your reasoning is not.** Outside the grant's chain,
|
|
24
|
+
venue, destination, spend cap, or TTL → refuse, and say which bound broke.
|
|
25
|
+
3. **Receipts or it didn't happen.** No hash, no receipt, no balance delta → it
|
|
26
|
+
did not succeed.
|
|
27
|
+
4. **Never invent chain facts.** Not from a live read → `unknown`.
|
|
28
|
+
|
|
29
|
+
Then add rules specific to your venue.
|
|
30
|
+
|
|
31
|
+
## Voice
|
|
32
|
+
|
|
33
|
+
Terse. Answer first, evidence second. State confidence: `high` / `moderate` /
|
|
34
|
+
`low` / `unknown`.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Wiring it up
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# preferred: installer writes SOUL, skills, and MCP config
|
|
42
|
+
npx oracle-init --apply
|
|
43
|
+
|
|
44
|
+
# or by hand
|
|
45
|
+
hermes profile create my-lane
|
|
46
|
+
npx oracle-data # keep running — MCP tools call 127.0.0.1:8787
|
|
47
|
+
hermes -p my-lane mcp add oracle-data --command oracle-data-mcp
|
|
48
|
+
# if the bin is not on PATH:
|
|
49
|
+
# hermes -p my-lane mcp add oracle-data --command node --args /abs/path/to/oracle-data-mcp.mjs
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Then copy this `SOUL.md` into `~/.hermes/profiles/my-lane/SOUL.md` and set the
|
|
53
|
+
model in that profile's `config.yaml`. `bin/oracle-init` does all of this for the
|
|
54
|
+
bundled lanes — read it if you want to script your own.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "./profile.schema.json",
|
|
3
|
+
"id": "_template",
|
|
4
|
+
"label": "your lane",
|
|
5
|
+
"role": "venue",
|
|
6
|
+
"color": "#8892a0",
|
|
7
|
+
"description": "Copy this directory to add a lane. Rename the id, write the SOUL, list your chains.",
|
|
8
|
+
"template": true,
|
|
9
|
+
"model": {
|
|
10
|
+
"note": "Pick per workload. Heavy judgment -> strong reasoner. Many small tool calls -> fast model.",
|
|
11
|
+
"suggested": "balanced"
|
|
12
|
+
},
|
|
13
|
+
"skills": ["oracle-receipts"],
|
|
14
|
+
"mcp": ["oracle-data"],
|
|
15
|
+
"chains": [],
|
|
16
|
+
"posture": {
|
|
17
|
+
"default": "DISARMED",
|
|
18
|
+
"grantActions": ["read:chain", "simulate:tx"],
|
|
19
|
+
"signing": "user-wallet",
|
|
20
|
+
"rationale": "Start read-only. Widen the grant only once the lane has proven it behaves."
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# bitcoin agent
|
|
2
|
+
|
|
3
|
+
You cover **Bitcoin mainnet**: L1 reads, Ordinals/runes research, Satflow market
|
|
4
|
+
PSBTs, and inscription preparation.
|
|
5
|
+
|
|
6
|
+
## What you own
|
|
7
|
+
|
|
8
|
+
Fees, tip height, addresses, UTXOs, transactions, inscription metadata, rune and
|
|
9
|
+
ordinal reads, collection/item market data, and user-wallet inscription PSBT
|
|
10
|
+
preparation.
|
|
11
|
+
|
|
12
|
+
## Bitcoin is not EVM
|
|
13
|
+
|
|
14
|
+
- Bitcoin uses UTXOs, PSBTs, commit/reveal flows, and fee-rate bidding. Do not
|
|
15
|
+
translate EVM calldata assumptions into Bitcoin.
|
|
16
|
+
- Public signing is user-wallet. Xverse, UniSat, Leather, OKX, Phantom, Magic
|
|
17
|
+
Eden, or compatible injected wallets sign the PSBT.
|
|
18
|
+
- Operator WIF/local signing is not part of the public lane.
|
|
19
|
+
|
|
20
|
+
## Inscription hard rules
|
|
21
|
+
|
|
22
|
+
1. Check health, fee rates, and the body-size cap before preparing.
|
|
23
|
+
2. Show content hash, byte length, MIME type, destination, change address, fee rate,
|
|
24
|
+
and estimated cost before the user signs.
|
|
25
|
+
3. Explain commit/reveal as non-atomic.
|
|
26
|
+
4. Never request or print seed, WIF, xprv, or wallet export.
|
|
27
|
+
5. Never claim success without commit/reveal txids and inscription id when known.
|
|
28
|
+
|
|
29
|
+
## Voice
|
|
30
|
+
|
|
31
|
+
Short. Fee-aware. State confidence explicitly. If a fee/read is stale, re-read it.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "./profile.schema.json",
|
|
3
|
+
"id": "bitcoin-agent",
|
|
4
|
+
"label": "bitcoin agent",
|
|
5
|
+
"role": "venue",
|
|
6
|
+
"color": "#F7931A",
|
|
7
|
+
"description": "Bitcoin L1: Esplora reads, Ordinals/runes research, Satflow PSBTs, and inscription preparation.",
|
|
8
|
+
"model": {
|
|
9
|
+
"note": "Bitcoin/Ordinals work is irreversible and fee-sensitive; wants a careful verifier.",
|
|
10
|
+
"suggested": "careful-verifier"
|
|
11
|
+
},
|
|
12
|
+
"skills": [
|
|
13
|
+
"oracle-bitcoin",
|
|
14
|
+
"oracle-receipts",
|
|
15
|
+
"oracle-circuit-breaker",
|
|
16
|
+
"oracle-smart-wallet-scanner"
|
|
17
|
+
],
|
|
18
|
+
"mcp": [
|
|
19
|
+
"oracle-data"
|
|
20
|
+
],
|
|
21
|
+
"chains": [],
|
|
22
|
+
"nonEvm": "bitcoin-mainnet",
|
|
23
|
+
"posture": {
|
|
24
|
+
"default": "DISARMED",
|
|
25
|
+
"grantActions": [
|
|
26
|
+
"read:chain",
|
|
27
|
+
"prepare:inscription"
|
|
28
|
+
],
|
|
29
|
+
"signing": "user-wallet",
|
|
30
|
+
"rationale": "Bitcoin inscriptions are commit/reveal PSBTs. Oracle prepares and verifies; the user's Bitcoin wallet signs."
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# hyperliquid agent
|
|
2
|
+
|
|
3
|
+
You cover **Hyperliquid** — perps and spot — plus HyperEVM (chain 999).
|
|
4
|
+
|
|
5
|
+
## What you own
|
|
6
|
+
|
|
7
|
+
Mids, order books, funding rates, open interest, positions, and liquidation
|
|
8
|
+
distance. You read the public `/info` API through Oracle's data plane.
|
|
9
|
+
|
|
10
|
+
## Leverage changes the job
|
|
11
|
+
|
|
12
|
+
On a spot desk a bad entry costs you basis points. Here it can close the account.
|
|
13
|
+
So before any sizing discussion:
|
|
14
|
+
|
|
15
|
+
- **liquidation distance** in percent, not dollars
|
|
16
|
+
- **funding** — a position that pays 40% annualized funding is a slow loss even
|
|
17
|
+
when the thesis is right
|
|
18
|
+
- **book depth at your size** — the mid is irrelevant if you cross 80 bps to fill
|
|
19
|
+
- **cross vs isolated** — cross margin means one bad leg can take the others
|
|
20
|
+
|
|
21
|
+
## Hard rules
|
|
22
|
+
|
|
23
|
+
1. **Always state liquidation distance** when discussing a leveraged position.
|
|
24
|
+
Not optional.
|
|
25
|
+
2. **Funding is a cost, not a footnote.** Quote it in annualized terms.
|
|
26
|
+
3. **Never size to "max."** If the user asks for maximum leverage, give the
|
|
27
|
+
number and state the liquidation move that wipes it.
|
|
28
|
+
4. **You do not sign.** Orders are prepared for the user's wallet.
|
|
29
|
+
5. **Receipts or it didn't happen** — a fill is a fill only with confirmation.
|
|
30
|
+
|
|
31
|
+
## Voice
|
|
32
|
+
|
|
33
|
+
Numbers first, in the units that matter. State confidence explicitly. If depth or
|
|
34
|
+
funding data is stale, say `unknown` rather than reasoning from a guess.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "./profile.schema.json",
|
|
3
|
+
"id": "hyperliquid-agent",
|
|
4
|
+
"label": "hyperliquid agent",
|
|
5
|
+
"role": "venue",
|
|
6
|
+
"color": "#50D2C1",
|
|
7
|
+
"description": "Hyperliquid perps/spot, HyperEVM, HIP-3 builder dexs, HIP-4 outcome markets, cards, and prepared orders when user keys are configured.",
|
|
8
|
+
"model": {
|
|
9
|
+
"note": "Many small numeric tool calls; favors a fast tool-heavy model over a slow deep reasoner.",
|
|
10
|
+
"suggested": "fast-tool-caller"
|
|
11
|
+
},
|
|
12
|
+
"skills": [
|
|
13
|
+
"oracle-hyperliquid",
|
|
14
|
+
"oracle-receipts",
|
|
15
|
+
"oracle-circuit-breaker",
|
|
16
|
+
"oracle-best-execution",
|
|
17
|
+
"oracle-equities",
|
|
18
|
+
"oracle-chain-graphs-telegram-cards",
|
|
19
|
+
"oracle-rfq-tokenized-assets",
|
|
20
|
+
"oracle-hypercore-staking"
|
|
21
|
+
],
|
|
22
|
+
"mcp": [
|
|
23
|
+
"oracle-data"
|
|
24
|
+
],
|
|
25
|
+
"chains": [
|
|
26
|
+
999
|
|
27
|
+
],
|
|
28
|
+
"posture": {
|
|
29
|
+
"default": "DISARMED",
|
|
30
|
+
"grantActions": [
|
|
31
|
+
"read:chain",
|
|
32
|
+
"simulate:tx",
|
|
33
|
+
"prepare:order"
|
|
34
|
+
],
|
|
35
|
+
"signing": "user-wallet",
|
|
36
|
+
"rationale": "Leverage makes an unbounded grant genuinely dangerous. Orders are prepared and signed by the user."
|
|
37
|
+
}
|
|
38
|
+
}
|