@oracle-agent/oracle 0.11.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +115 -201
- package/README.md +13 -516
- package/bin/oracle.mjs +19 -27
- package/package.json +15 -98
- package/CONTRIBUTING.md +0 -98
- package/SECURITY.md +0 -89
- package/SETUP.md +0 -381
- package/artifacts/inscription/oracle-was-here-preview.png +0 -0
- package/artifacts/inscription/oracle-was-here.svg +0 -1
- package/artifacts/specialist-packs/oracle-full-crypto.json +0 -295
- package/bin/desk-server.mjs +0 -440
- package/bin/oracle-data-mcp.mjs +0 -1019
- package/bin/oracle-init.mjs +0 -496
- package/bin/oracle-public-server.mjs +0 -36
- package/bin/oracle-route.mjs +0 -254
- package/bin/oracle-scan.mjs +0 -192
- package/bin/oracle-upgrade.mjs +0 -42
- package/docs/adding-a-chain.md +0 -229
- package/docs/architecture.md +0 -138
- package/docs/cli.md +0 -47
- package/docs/connectors.md +0 -13
- package/docs/oracle-pack-standard.md +0 -29
- package/docs/profiles.md +0 -151
- package/docs/public-surface.md +0 -133
- package/examples/add-a-chain.mjs +0 -65
- package/examples/oracle-pack-template.mjs +0 -38
- package/examples/research-a-token.mjs +0 -70
- package/plugins/oracle-owner-gate/__init__.py +0 -227
- package/plugins/oracle-owner-gate/plugin.yaml +0 -9
- package/profiles/_template/SOUL.md +0 -54
- package/profiles/_template/profile.json +0 -22
- package/profiles/bitcoin-agent/SOUL.md +0 -31
- package/profiles/bitcoin-agent/profile.json +0 -32
- package/profiles/hyperliquid-agent/SOUL.md +0 -34
- package/profiles/hyperliquid-agent/profile.json +0 -37
- package/profiles/oracle/SOUL.md +0 -107
- package/profiles/oracle/profile.json +0 -39
- package/profiles/polymarket-agent/SOUL.md +0 -35
- package/profiles/polymarket-agent/profile.json +0 -34
- package/profiles/profile.schema.json +0 -90
- package/profiles/protocol-builder/SOUL.md +0 -57
- package/profiles/protocol-builder/profile.json +0 -39
- package/profiles/robinhood-agent/SOUL.md +0 -53
- package/profiles/robinhood-agent/profile.json +0 -40
- package/profiles/solana-agent/SOUL.md +0 -37
- package/profiles/solana-agent/profile.json +0 -37
- package/profiles/stable-agent/SOUL.md +0 -43
- package/profiles/stable-agent/profile.json +0 -37
- package/protocols/templates/safe-erc20/SECURITY.md +0 -16
- package/protocols/templates/safe-erc20/foundry.toml +0 -12
- package/protocols/templates/safe-erc20/remappings.txt +0 -2
- package/protocols/templates/safe-erc20/src/SafeERC20.sol +0 -53
- package/protocols/templates/safe-erc20/test/SafeERC20.t.sol +0 -72
- package/public/agent-connect/app.js +0 -84
- package/public/agent-connect/index.html +0 -83
- package/public/agent-connect/styles.css +0 -70
- package/public/index.html +0 -12
- package/public/oracle-console/app.js +0 -272
- package/public/oracle-console/bitcoin-wallets.js +0 -206
- package/public/oracle-console/index.html +0 -91
- package/public/oracle-console/styles.css +0 -239
- package/public/oracle-splash/assets/cli-chain-hyperliquid.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/llms/claude.svg +0 -1
- package/public/oracle-splash/assets/llms/codex-icon.svg +0 -1
- package/public/oracle-splash/assets/llms/codex.svg +0 -1
- package/public/oracle-splash/assets/llms/cursor-icon.svg +0 -12
- package/public/oracle-splash/assets/llms/cursor.svg +0 -17
- package/public/oracle-splash/assets/llms/deepseek.svg +0 -1
- package/public/oracle-splash/assets/llms/gemini-icon.svg +0 -1
- package/public/oracle-splash/assets/llms/gemini.svg +0 -1
- package/public/oracle-splash/assets/llms/grok.svg +0 -8
- package/public/oracle-splash/assets/llms/hermes.png +0 -0
- package/public/oracle-splash/assets/llms/kimi-icon.svg +0 -1
- package/public/oracle-splash/assets/llms/kimi.svg +0 -1
- package/public/oracle-splash/assets/llms/manus.svg +0 -18
- package/public/oracle-splash/assets/llms/openclaw.svg +0 -22
- package/public/oracle-splash/assets/llms/perplexity.svg +0 -1
- package/public/oracle-splash/assets/llms/qwen.svg +0 -1
- package/public/oracle-splash/assets/llms/windsurf.svg +0 -1
- 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 +0 -4
- package/public/oracle-splash/assets/wordmarks/aerodrome.svg +0 -23
- package/public/oracle-splash/assets/wordmarks/balancer.svg +0 -3
- package/public/oracle-splash/assets/wordmarks/cowswap.svg +0 -1
- package/public/oracle-splash/assets/wordmarks/curve.png +0 -0
- package/public/oracle-splash/assets/wordmarks/gmx.svg +0 -13
- package/public/oracle-splash/assets/wordmarks/hop-icon.webp +0 -0
- package/public/oracle-splash/assets/wordmarks/hyena.svg +0 -7
- package/public/oracle-splash/assets/wordmarks/hyperliquid.svg +0 -21
- package/public/oracle-splash/assets/wordmarks/hyperswap.svg +0 -13
- package/public/oracle-splash/assets/wordmarks/jupiter.svg +0 -35
- package/public/oracle-splash/assets/wordmarks/kinetiq.svg +0 -1
- 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 +0 -1
- package/public/oracle-splash/assets/wordmarks/markets.svg +0 -1
- package/public/oracle-splash/assets/wordmarks/morpho.svg +0 -1
- package/public/oracle-splash/assets/wordmarks/odos.svg +0 -3
- package/public/oracle-splash/assets/wordmarks/oneinch-icon.webp +0 -0
- package/public/oracle-splash/assets/wordmarks/oneinch.svg +0 -6
- package/public/oracle-splash/assets/wordmarks/opensea-icon.svg +0 -17
- package/public/oracle-splash/assets/wordmarks/opensea.svg +0 -1
- package/public/oracle-splash/assets/wordmarks/outcome.svg +0 -16
- package/public/oracle-splash/assets/wordmarks/pancakeswap.svg +0 -18
- package/public/oracle-splash/assets/wordmarks/paragon.svg +0 -9
- package/public/oracle-splash/assets/wordmarks/paraswap.svg +0 -16
- 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 +0 -8
- 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 +0 -15
- package/public/oracle-splash/assets/wordmarks/uniswap.svg +0 -18
- package/public/oracle-splash/assets/wordmarks/velodrome.svg +0 -84
- package/public/oracle-splash/assets/wordmarks/xyz.svg +0 -12
- 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/favicon.ico +0 -0
- package/public/oracle-splash/favicon.svg +0 -6
- package/public/oracle-splash/index.html +0 -1558
- package/public/oracle-splash/mesh-graph.png +0 -0
- package/public/oracle-splash/mesh-graph.svg +0 -216
- package/scripts/adversarial-bench.mjs +0 -114
- package/scripts/build-inscription.py +0 -230
- package/scripts/check-doc-drift.mjs +0 -123
- package/scripts/check-test-count.mjs +0 -105
- package/scripts/e2e-hl-markets.mjs +0 -21
- package/scripts/e2e-hl-perps.mjs +0 -48
- package/scripts/e2e-hypercore-staking.mjs +0 -128
- package/scripts/e2e-solana-bitcoin.mjs +0 -183
- package/scripts/protocol-template-gate.mjs +0 -15
- package/scripts/public-api-scan.mjs +0 -23
- package/scripts/secret-scan.mjs +0 -181
- package/scripts/verify-v3-venues.mjs +0 -192
- package/skills/balance/SKILL.md +0 -176
- package/skills/oracle-action-semantics/SKILL.md +0 -40
- package/skills/oracle-best-execution/SKILL.md +0 -127
- package/skills/oracle-bitcoin/SKILL.md +0 -53
- package/skills/oracle-chain-graphs-telegram-cards/SKILL.md +0 -59
- package/skills/oracle-chat/SKILL.md +0 -61
- package/skills/oracle-chat/chain.SKILL.md +0 -31
- package/skills/oracle-chat/setup.SKILL.md +0 -37
- package/skills/oracle-circuit-breaker/SKILL.md +0 -51
- package/skills/oracle-contract-research/SKILL.md +0 -55
- package/skills/oracle-desk/SKILL.md +0 -58
- package/skills/oracle-dex-launch/SKILL.md +0 -38
- package/skills/oracle-grants/SKILL.md +0 -69
- package/skills/oracle-hypercore-staking/SKILL.md +0 -57
- package/skills/oracle-hyperliquid/SKILL.md +0 -56
- package/skills/oracle-meme-token-sniper/SKILL.md +0 -73
- package/skills/oracle-multichain-nft-launch/SKILL.md +0 -338
- package/skills/oracle-multichain-token-launch/SKILL.md +0 -300
- package/skills/oracle-nft-gacha-launch/SKILL.md +0 -48
- package/skills/oracle-nft-mint-gas-war/SKILL.md +0 -63
- package/skills/oracle-polymarket/SKILL.md +0 -60
- package/skills/oracle-protocol-builder/SKILL.md +0 -59
- package/skills/oracle-protocol-security/SKILL.md +0 -60
- package/skills/oracle-public-product/SKILL.md +0 -44
- package/skills/oracle-receipts/SKILL.md +0 -52
- package/skills/oracle-rfq-tokenized-assets/SKILL.md +0 -69
- package/skills/oracle-smart-wallet-scanner/SKILL.md +0 -49
- package/skills/oracle-solana/SKILL.md +0 -65
- package/skills/oracle-solana-nft/SKILL.md +0 -54
- package/skills/oracle-token-research/SKILL.md +0 -67
- package/skins/oracle.yaml +0 -56
- package/src/action-receipts.mjs +0 -265
- package/src/action-semantics.mjs +0 -62
- package/src/address-book.mjs +0 -208
- package/src/agent-auth.mjs +0 -206
- package/src/approval-guard.mjs +0 -282
- package/src/attestation-secret.mjs +0 -88
- package/src/audit-log.mjs +0 -196
- package/src/auth/oauth.mjs +0 -672
- package/src/auto-slippage.mjs +0 -378
- package/src/capability-posture.mjs +0 -125
- package/src/chains.mjs +0 -62
- package/src/cli/chain-catalog.mjs +0 -215
- package/src/cli/chain-state.mjs +0 -74
- package/src/cli/commands/auth.mjs +0 -193
- package/src/cli/commands/bootstrap.mjs +0 -87
- package/src/cli/commands/chain.mjs +0 -143
- package/src/cli/commands/chat.mjs +0 -434
- package/src/cli/commands/credential.mjs +0 -9
- package/src/cli/commands/data-mcp.mjs +0 -18
- package/src/cli/commands/data.mjs +0 -75
- package/src/cli/commands/doctor.mjs +0 -136
- package/src/cli/commands/help.mjs +0 -7
- package/src/cli/commands/init.mjs +0 -27
- package/src/cli/commands/mcp.mjs +0 -142
- package/src/cli/commands/model.mjs +0 -99
- package/src/cli/commands/prepare.mjs +0 -12
- package/src/cli/commands/public.mjs +0 -20
- package/src/cli/commands/route.mjs +0 -12
- package/src/cli/commands/runner.mjs +0 -9
- package/src/cli/commands/scan.mjs +0 -12
- package/src/cli/commands/setup.mjs +0 -275
- package/src/cli/commands/sign.mjs +0 -21
- package/src/cli/commands/signer.mjs +0 -9
- package/src/cli/commands/upgrade.mjs +0 -12
- package/src/cli/commands/vault.mjs +0 -9
- package/src/cli/commands/version.mjs +0 -22
- package/src/cli/first-run.mjs +0 -23
- package/src/cli/kernel.mjs +0 -239
- package/src/cli/mcp-targets/chatgpt.mjs +0 -51
- package/src/cli/mcp-targets/claude-code.mjs +0 -39
- package/src/cli/mcp-targets/claude-desktop.mjs +0 -24
- package/src/cli/mcp-targets/codex.mjs +0 -41
- package/src/cli/mcp-targets/shared.mjs +0 -61
- package/src/cli/messaging-platforms.mjs +0 -209
- package/src/cli/model-config.mjs +0 -70
- package/src/cli/operator-dispatch.mjs +0 -258
- package/src/cli/oracle-harness.py +0 -415
- package/src/cli/paths.mjs +0 -83
- package/src/cli/runtime.mjs +0 -351
- package/src/cli/setup-state.mjs +0 -168
- package/src/cli/spawn-child.mjs +0 -43
- package/src/data/catalog.mjs +0 -585
- package/src/data/desk-data.mjs +0 -695
- package/src/data/http.mjs +0 -253
- package/src/data/provider-endpoint.mjs +0 -94
- package/src/data/providers/aerodrome.mjs +0 -245
- package/src/data/providers/balancer.mjs +0 -209
- package/src/data/providers/bitcoin-esplora.mjs +0 -216
- package/src/data/providers/bitcoin-meta.mjs +0 -378
- package/src/data/providers/blockscout.mjs +0 -14
- package/src/data/providers/bridges.mjs +0 -242
- package/src/data/providers/cowswap.mjs +0 -415
- package/src/data/providers/curve.mjs +0 -201
- package/src/data/providers/defillama.mjs +0 -88
- package/src/data/providers/dexscreener.mjs +0 -43
- package/src/data/providers/evm-rpc.mjs +0 -225
- package/src/data/providers/geckoterminal.mjs +0 -34
- package/src/data/providers/gmx.mjs +0 -496
- package/src/data/providers/hl-assets.mjs +0 -165
- package/src/data/providers/hl-info.mjs +0 -108
- package/src/data/providers/hl-markets.mjs +0 -210
- package/src/data/providers/hl-outcome.mjs +0 -61
- package/src/data/providers/hl-perps.mjs +0 -387
- package/src/data/providers/hl-staking.mjs +0 -353
- package/src/data/providers/hl-ws.mjs +0 -119
- package/src/data/providers/hyperevm-dex.mjs +0 -49
- package/src/data/providers/jupiter-venues.mjs +0 -119
- package/src/data/providers/jupiter.mjs +0 -315
- package/src/data/providers/lifi.mjs +0 -151
- package/src/data/providers/magiceden-sol.mjs +0 -406
- package/src/data/providers/morpho.mjs +0 -177
- package/src/data/providers/nft-gallery.mjs +0 -163
- package/src/data/providers/nft-portfolio.mjs +0 -494
- package/src/data/providers/odos.mjs +0 -156
- package/src/data/providers/oneinch.mjs +0 -174
- package/src/data/providers/opensea-multichain.mjs +0 -136
- package/src/data/providers/opensea-nft.mjs +0 -371
- package/src/data/providers/paraswap.mjs +0 -118
- package/src/data/providers/pendle.mjs +0 -188
- package/src/data/providers/poly-clob.mjs +0 -283
- package/src/data/providers/poly-public.mjs +0 -96
- package/src/data/providers/poly-ws.mjs +0 -103
- package/src/data/providers/portfolio-history.mjs +0 -394
- package/src/data/providers/portfolio.mjs +0 -594
- package/src/data/providers/rfq.mjs +0 -15
- package/src/data/providers/rh-agent.mjs +0 -59
- package/src/data/providers/satflow.mjs +0 -341
- package/src/data/providers/signed-material-guard.mjs +0 -108
- package/src/data/providers/solana-rpc.mjs +0 -197
- package/src/data/providers/uniswap-v3.mjs +0 -349
- package/src/data/providers/uniswap-v4.mjs +0 -414
- package/src/data/providers/zerox.mjs +0 -167
- package/src/data/public-api-scan.mjs +0 -61
- package/src/data/quote-placeholder.mjs +0 -31
- package/src/exact-integer.mjs +0 -72
- package/src/exec-policy.mjs +0 -455
- package/src/flags.mjs +0 -15
- package/src/fresh-window.mjs +0 -76
- package/src/gmx-attestation.mjs +0 -176
- package/src/index.mjs +0 -100
- package/src/nft-gas-war-guard.mjs +0 -139
- package/src/onboarding/agent-keys.mjs +0 -161
- package/src/onboarding/harness-configs.mjs +0 -102
- package/src/onboarding/index.mjs +0 -18
- package/src/onboarding/tiers.mjs +0 -139
- package/src/oracle-env.mjs +0 -47
- package/src/portfolio-risk.mjs +0 -170
- package/src/prepare-envelope.mjs +0 -204
- package/src/profile-upgrade.mjs +0 -277
- package/src/protocol-execution.mjs +0 -84
- package/src/protocol-templates/gate.mjs +0 -179
- package/src/protocol-templates/prepare-deploy.mjs +0 -81
- package/src/public-api/buzz-integration.mjs +0 -256
- package/src/public-api/connect-agent.mjs +0 -416
- package/src/public-api/grants.mjs +0 -142
- package/src/public-api/http.mjs +0 -389
- package/src/public-control/aa-adapter.mjs +0 -402
- package/src/public-control/build-registry.mjs +0 -227
- package/src/public-control/bundler-client.mjs +0 -357
- package/src/public-control/grant-indexer.mjs +0 -296
- package/src/public-control/policy-render.mjs +0 -69
- package/src/public-control/policy-schema.mjs +0 -318
- package/src/public-control/runtime-config.mjs +0 -275
- package/src/public-control/session-key-model.mjs +0 -374
- package/src/public-control/session-orchestrator.mjs +0 -412
- package/src/rfq/intent.mjs +0 -180
- package/src/rfq/sources.mjs +0 -181
- package/src/route-attestation.mjs +0 -132
- package/src/router/best-execution.mjs +0 -326
- package/src/router/index.mjs +0 -226
- package/src/router/prepare-bridge.mjs +0 -289
- package/src/router/prepare-route.mjs +0 -398
- package/src/router/proposal.mjs +0 -311
- package/src/router/risk-classifier.mjs +0 -119
- package/src/router/route-sources.mjs +0 -364
- package/src/scanner/chains.config.mjs +0 -430
- package/src/scanner/contract.mjs +0 -270
- package/src/scanner/evm-scanner.mjs +0 -394
- package/src/scanner/index.mjs +0 -9
- package/src/scanner/v2-venue.mjs +0 -335
- package/src/scanner/v3-venue.mjs +0 -290
- package/src/scopes.mjs +0 -44
- package/src/sell-simulation.mjs +0 -167
- package/src/signals/engine.mjs +0 -146
- package/src/signals/index.mjs +0 -1
- package/src/token-transfer-guard.mjs +0 -188
- package/src/tui/app.mjs +0 -438
- package/src/tui/backend.mjs +0 -145
- package/src/tui/format.mjs +0 -272
- package/src/tui/gateway-client.mjs +0 -177
- package/src/tui/input.mjs +0 -501
- package/src/tui/renderer.mjs +0 -443
- package/src/tui/standalone-client.mjs +0 -666
- package/src/tui/theme.mjs +0 -81
- package/src/vault-attestation.mjs +0 -146
- package/src/venues.mjs +0 -206
- package/src/watch-preferences.mjs +0 -85
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "./profile.schema.json",
|
|
3
|
-
"id": "solana-agent",
|
|
4
|
-
"label": "solana agent",
|
|
5
|
-
"role": "venue",
|
|
6
|
-
"color": "#9945FF",
|
|
7
|
-
"description": "Solana: token research, launch/meme-token scans, Jupiter routes, SPL accounts, Magic Eden NFT reads, unsigned swap and NFT buy/list/mint preparation.",
|
|
8
|
-
"model": {
|
|
9
|
-
"note": "Mixed research and route math; a balanced general model fits.",
|
|
10
|
-
"suggested": "balanced"
|
|
11
|
-
},
|
|
12
|
-
"skills": [
|
|
13
|
-
"oracle-solana",
|
|
14
|
-
"oracle-receipts",
|
|
15
|
-
"oracle-circuit-breaker",
|
|
16
|
-
"oracle-best-execution",
|
|
17
|
-
"oracle-meme-token-sniper",
|
|
18
|
-
"oracle-chain-graphs-telegram-cards",
|
|
19
|
-
"oracle-rfq-tokenized-assets",
|
|
20
|
-
"oracle-solana-nft"
|
|
21
|
-
],
|
|
22
|
-
"mcp": [
|
|
23
|
-
"oracle-data"
|
|
24
|
-
],
|
|
25
|
-
"chains": [],
|
|
26
|
-
"nonEvm": "solana-mainnet",
|
|
27
|
-
"posture": {
|
|
28
|
-
"default": "DISARMED",
|
|
29
|
-
"grantActions": [
|
|
30
|
-
"read:chain",
|
|
31
|
-
"simulate:tx",
|
|
32
|
-
"prepare:swap"
|
|
33
|
-
],
|
|
34
|
-
"signing": "user-wallet",
|
|
35
|
-
"rationale": "Separate signing plane from EVM by design: a Solana grant must never be satisfiable by an EVM key."
|
|
36
|
-
}
|
|
37
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
# stable agent
|
|
2
|
-
|
|
3
|
-
You cover **Stable mainnet** (chain 988), where the stablecoin *is* the gas token.
|
|
4
|
-
|
|
5
|
-
## What you own
|
|
6
|
-
|
|
7
|
-
Balances, bridge-in routes, DEX pools (often forks), and contract verification on
|
|
8
|
-
a young chain.
|
|
9
|
-
|
|
10
|
-
## The quirks that break assumptions
|
|
11
|
-
|
|
12
|
-
**Gas is USDT0, 18 decimals native.** The same balance shows up twice: as native
|
|
13
|
-
via `getBalance`, and as an ERC-20 mirror via `balanceOf` with a 6-decimal
|
|
14
|
-
interface. It is **one balance**. Do not sum them.
|
|
15
|
-
|
|
16
|
-
**"Listed on a bridge" is not "routable."** A young chain has no relayer
|
|
17
|
-
inventory, so liquidity-pool bridges return `INSUFFICIENT_LIQUIDITY / max $0`
|
|
18
|
-
even while the chain appears supported. Always quote the actual route. When pool
|
|
19
|
-
bridges are dry, the rail that works is the token's native OFT mesh.
|
|
20
|
-
|
|
21
|
-
**A token bridge delivers the token, not gas.** After a bridge lands the wallet
|
|
22
|
-
often has zero native to pay for the next transaction. Plan the gas leg
|
|
23
|
-
separately, before it's needed.
|
|
24
|
-
|
|
25
|
-
**DEX forks are not Uniswap.** A fork's router may require an off-chain signed
|
|
26
|
-
quote you cannot forge, while the underlying pair is standard V2. Verify what you
|
|
27
|
-
are actually calling.
|
|
28
|
-
|
|
29
|
-
## Hard rules
|
|
30
|
-
|
|
31
|
-
1. **Verify every venue on-chain before use** — `eth_getCode` must return real
|
|
32
|
-
bytecode. A named contract on an explorer is not verification.
|
|
33
|
-
2. **Quote each leg of a multi-hop before firing the first**, or funds strand
|
|
34
|
-
mid-journey.
|
|
35
|
-
3. **Never size against a launchpad token's own virtual reserves.** Find the real
|
|
36
|
-
pair.
|
|
37
|
-
4. **You do not sign.** Swaps are prepared for the user's wallet.
|
|
38
|
-
5. **Receipts or it didn't happen.**
|
|
39
|
-
|
|
40
|
-
## Voice
|
|
41
|
-
|
|
42
|
-
Say what you verified and how. On a chain this young, `unknown` is often the
|
|
43
|
-
honest answer — give it.
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "./profile.schema.json",
|
|
3
|
-
"id": "stable-agent",
|
|
4
|
-
"label": "stable agent",
|
|
5
|
-
"role": "venue",
|
|
6
|
-
"color": "#F0B90B",
|
|
7
|
-
"description": "Stable mainnet (988): USDT-native gas, bridge-in routes, DEX-fork pools, launch/meme-token scans.",
|
|
8
|
-
"model": {
|
|
9
|
-
"note": "New-chain work is full of surprises; wants a careful model that verifies rather than assumes.",
|
|
10
|
-
"suggested": "careful-verifier"
|
|
11
|
-
},
|
|
12
|
-
"skills": [
|
|
13
|
-
"oracle-contract-research",
|
|
14
|
-
"oracle-receipts",
|
|
15
|
-
"oracle-circuit-breaker",
|
|
16
|
-
"oracle-best-execution",
|
|
17
|
-
"oracle-meme-token-sniper",
|
|
18
|
-
"oracle-chain-graphs-telegram-cards",
|
|
19
|
-
"oracle-rfq-tokenized-assets"
|
|
20
|
-
],
|
|
21
|
-
"mcp": [
|
|
22
|
-
"oracle-data"
|
|
23
|
-
],
|
|
24
|
-
"chains": [
|
|
25
|
-
988
|
|
26
|
-
],
|
|
27
|
-
"posture": {
|
|
28
|
-
"default": "DISARMED",
|
|
29
|
-
"grantActions": [
|
|
30
|
-
"read:chain",
|
|
31
|
-
"simulate:tx",
|
|
32
|
-
"prepare:swap"
|
|
33
|
-
],
|
|
34
|
-
"signing": "user-wallet",
|
|
35
|
-
"rationale": "A young chain has thin liquidity and unverified forks. Every venue needs on-chain verification before use."
|
|
36
|
-
}
|
|
37
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# SafeERC20 template security notice
|
|
2
|
-
|
|
3
|
-
**Not a paid security-firm audit.**
|
|
4
|
-
|
|
5
|
-
This template is:
|
|
6
|
-
- fixed-supply ERC20
|
|
7
|
-
- Ownable2Step + pause
|
|
8
|
-
- no tax / blacklist / upgrade proxy
|
|
9
|
-
- covered by Foundry unit tests in `test/`
|
|
10
|
-
|
|
11
|
-
Before mainnet capital:
|
|
12
|
-
1. Keep or expand Foundry tests green
|
|
13
|
-
2. Run static analysis (Slither/Aderyn) if available
|
|
14
|
-
3. Book an independent Solidity auditor for any real TVL
|
|
15
|
-
|
|
16
|
-
Oracle only prepares unsigned deploys after the JS gate confirms `forge test` passes.
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: MIT
|
|
2
|
-
pragma solidity ^0.8.24;
|
|
3
|
-
|
|
4
|
-
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
|
|
5
|
-
import {ERC20Burnable} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";
|
|
6
|
-
import {ERC20Pausable} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol";
|
|
7
|
-
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
|
|
8
|
-
import {Ownable2Step} from "@openzeppelin/contracts/access/Ownable2Step.sol";
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* @title SafeERC20
|
|
12
|
-
* @notice Opinionated fixed-supply ERC20 for Oracle protocol-builder v1.
|
|
13
|
-
*
|
|
14
|
-
* Security posture (templates, NOT a firm audit):
|
|
15
|
-
* - Fixed supply minted once to `initialHolder` in constructor (no hidden mint).
|
|
16
|
-
* - Ownable2Step ownership (no single-tx accidental transfer).
|
|
17
|
-
* - Pausable emergency stop (owner only).
|
|
18
|
-
* - No transfer tax, no blacklist, no max-tx, no trading cooldown.
|
|
19
|
-
* - No upgradeability / no proxy.
|
|
20
|
-
* - Burn optional by holders only (ERC20Burnable).
|
|
21
|
-
*
|
|
22
|
-
* This is a reviewed starter template with Foundry tests. It is NOT a paid
|
|
23
|
-
* security-firm audit. Do not put mainnet TVL on custom forks without one.
|
|
24
|
-
*/
|
|
25
|
-
contract SafeERC20 is ERC20, ERC20Burnable, ERC20Pausable, Ownable2Step {
|
|
26
|
-
constructor(
|
|
27
|
-
string memory name_,
|
|
28
|
-
string memory symbol_,
|
|
29
|
-
uint256 initialSupply,
|
|
30
|
-
address initialHolder,
|
|
31
|
-
address initialOwner
|
|
32
|
-
) ERC20(name_, symbol_) Ownable(initialOwner) {
|
|
33
|
-
require(initialHolder != address(0), "SafeERC20: holder zero");
|
|
34
|
-
require(initialOwner != address(0), "SafeERC20: owner zero");
|
|
35
|
-
require(initialSupply > 0, "SafeERC20: supply zero");
|
|
36
|
-
_mint(initialHolder, initialSupply);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
function pause() external onlyOwner {
|
|
40
|
-
_pause();
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
function unpause() external onlyOwner {
|
|
44
|
-
_unpause();
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
function _update(address from, address to, uint256 value)
|
|
48
|
-
internal
|
|
49
|
-
override(ERC20, ERC20Pausable)
|
|
50
|
-
{
|
|
51
|
-
super._update(from, to, value);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: MIT
|
|
2
|
-
pragma solidity ^0.8.24;
|
|
3
|
-
|
|
4
|
-
import {Test} from "forge-std/Test.sol";
|
|
5
|
-
import {SafeERC20} from "../src/SafeERC20.sol";
|
|
6
|
-
|
|
7
|
-
contract SafeERC20Test is Test {
|
|
8
|
-
SafeERC20 internal token;
|
|
9
|
-
address internal owner = makeAddr("owner");
|
|
10
|
-
address internal holder = makeAddr("holder");
|
|
11
|
-
address internal alice = makeAddr("alice");
|
|
12
|
-
address internal bob = makeAddr("bob");
|
|
13
|
-
|
|
14
|
-
uint256 internal constant SUPPLY = 1_000_000 ether;
|
|
15
|
-
|
|
16
|
-
function setUp() public {
|
|
17
|
-
token = new SafeERC20("Safe", "SAFE", SUPPLY, holder, owner);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
function test_fixedSupply_noHiddenMint() public view {
|
|
21
|
-
assertEq(token.totalSupply(), SUPPLY);
|
|
22
|
-
assertEq(token.balanceOf(holder), SUPPLY);
|
|
23
|
-
assertEq(token.balanceOf(owner), 0);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
function test_transfer_noTax() public {
|
|
27
|
-
vm.prank(holder);
|
|
28
|
-
token.transfer(alice, 100 ether);
|
|
29
|
-
assertEq(token.balanceOf(alice), 100 ether);
|
|
30
|
-
assertEq(token.balanceOf(holder), SUPPLY - 100 ether);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
function test_pause_blocksTransfers() public {
|
|
34
|
-
vm.prank(owner);
|
|
35
|
-
token.pause();
|
|
36
|
-
vm.prank(holder);
|
|
37
|
-
vm.expectRevert();
|
|
38
|
-
token.transfer(alice, 1 ether);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
function test_onlyOwner_canPause() public {
|
|
42
|
-
vm.prank(alice);
|
|
43
|
-
vm.expectRevert();
|
|
44
|
-
token.pause();
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
function test_ownable2Step_requiresAccept() public {
|
|
48
|
-
vm.prank(owner);
|
|
49
|
-
token.transferOwnership(alice);
|
|
50
|
-
// still owner until accept
|
|
51
|
-
assertEq(token.owner(), owner);
|
|
52
|
-
vm.prank(alice);
|
|
53
|
-
token.acceptOwnership();
|
|
54
|
-
assertEq(token.owner(), alice);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
function test_burn_reducesSupply() public {
|
|
58
|
-
vm.prank(holder);
|
|
59
|
-
token.burn(10 ether);
|
|
60
|
-
assertEq(token.totalSupply(), SUPPLY - 10 ether);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
function test_rejectZeroHolder() public {
|
|
64
|
-
vm.expectRevert(bytes("SafeERC20: holder zero"));
|
|
65
|
-
new SafeERC20("X", "X", SUPPLY, address(0), owner);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
function test_rejectZeroSupply() public {
|
|
69
|
-
vm.expectRevert(bytes("SafeERC20: supply zero"));
|
|
70
|
-
new SafeERC20("X", "X", 0, holder, owner);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
(() => {
|
|
2
|
-
"use strict";
|
|
3
|
-
|
|
4
|
-
const PACKAGE = "@oracle-agent/oracle";
|
|
5
|
-
const COMMAND = "npx";
|
|
6
|
-
const ARGS = ["-y", "--package", PACKAGE, "oracle-data-mcp"];
|
|
7
|
-
const INIT_COMMAND = "npx -y --package @oracle-agent/oracle oracle-init";
|
|
8
|
-
|
|
9
|
-
const apiUrl = document.querySelector("#api-url");
|
|
10
|
-
const apiKey = document.querySelector("#api-key");
|
|
11
|
-
const walletAddress = document.querySelector("#wallet-address");
|
|
12
|
-
const output = document.querySelector("#config-output");
|
|
13
|
-
const label = document.querySelector("#config-label");
|
|
14
|
-
const status = document.querySelector("#copy-status");
|
|
15
|
-
const tabs = [...document.querySelectorAll("[data-harness]")];
|
|
16
|
-
let selected = "hermes";
|
|
17
|
-
|
|
18
|
-
const cleanUrl = () => apiUrl.value.trim().replace(/\/+$/, "");
|
|
19
|
-
const env = () => {
|
|
20
|
-
const values = {
|
|
21
|
-
ORACLE_DATA_URL: cleanUrl() || "https://api.oracle-agent.dev",
|
|
22
|
-
ORACLE_AGENT_KEY: apiKey.value.trim() || "YOUR_AGENT_KEY"
|
|
23
|
-
};
|
|
24
|
-
if (walletAddress.value.trim()) values.ORACLE_WALLET_ADDRESS = walletAddress.value.trim();
|
|
25
|
-
return values;
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
const server = () => ({ command: COMMAND, args: [...ARGS], env: env() });
|
|
29
|
-
|
|
30
|
-
const configs = {
|
|
31
|
-
hermes: () => ({
|
|
32
|
-
mcpServers: { oracle: server() }
|
|
33
|
-
}),
|
|
34
|
-
claude: () => ({
|
|
35
|
-
mcpServers: { oracle: server() }
|
|
36
|
-
}),
|
|
37
|
-
codex: () => {
|
|
38
|
-
const values = env();
|
|
39
|
-
const lines = [
|
|
40
|
-
"[mcp_servers.oracle]",
|
|
41
|
-
`command = ${JSON.stringify(COMMAND)}`,
|
|
42
|
-
`args = [${ARGS.map((arg) => JSON.stringify(arg)).join(", ")}]`,
|
|
43
|
-
"",
|
|
44
|
-
"[mcp_servers.oracle.env]",
|
|
45
|
-
...Object.entries(values).map(([key, value]) => `${key} = ${JSON.stringify(value)}`)
|
|
46
|
-
];
|
|
47
|
-
return lines.join("\n");
|
|
48
|
-
},
|
|
49
|
-
cursor: () => ({
|
|
50
|
-
mcpServers: { oracle: server() }
|
|
51
|
-
}),
|
|
52
|
-
mcp: () => ({
|
|
53
|
-
mcpServers: { oracle: server() }
|
|
54
|
-
})
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
const names = { hermes: "Hermes", claude: "Claude Code", codex: "Codex", cursor: "Cursor", mcp: "Generic MCP" };
|
|
58
|
-
|
|
59
|
-
function render() {
|
|
60
|
-
const config = configs[selected]();
|
|
61
|
-
output.textContent = typeof config === "string" ? config : JSON.stringify(config, null, 2);
|
|
62
|
-
label.textContent = `${names[selected]} config`;
|
|
63
|
-
status.textContent = "";
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
async function copy(text, message) {
|
|
67
|
-
try {
|
|
68
|
-
await navigator.clipboard.writeText(text);
|
|
69
|
-
status.textContent = message;
|
|
70
|
-
} catch {
|
|
71
|
-
status.textContent = "Copy was blocked. Select the text and copy it manually.";
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
tabs.forEach((tab) => tab.addEventListener("click", () => {
|
|
76
|
-
selected = tab.dataset.harness;
|
|
77
|
-
tabs.forEach((item) => item.setAttribute("aria-selected", String(item === tab)));
|
|
78
|
-
render();
|
|
79
|
-
}));
|
|
80
|
-
[apiUrl, apiKey, walletAddress].forEach((input) => input.addEventListener("input", render));
|
|
81
|
-
document.querySelector("#copy-button").addEventListener("click", () => copy(output.textContent, `${names[selected]} config copied.`));
|
|
82
|
-
document.querySelector("#copy-install").addEventListener("click", () => copy(INIT_COMMAND, "Local operator install command copied."));
|
|
83
|
-
render();
|
|
84
|
-
})();
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8" />
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
-
<meta name="description" content="Connect your agent harness to Oracle read tools without giving up custody." />
|
|
7
|
-
<title>Oracle Agent Connect</title>
|
|
8
|
-
<link rel="stylesheet" href="styles.css" />
|
|
9
|
-
</head>
|
|
10
|
-
<body>
|
|
11
|
-
<main class="shell">
|
|
12
|
-
<header class="hero">
|
|
13
|
-
<a class="wordmark" href="/">ORACLE</a>
|
|
14
|
-
<p class="eyebrow">AGENT CONNECT</p>
|
|
15
|
-
<h1>Give your agent market context.<br /><span>Keep custody local.</span></h1>
|
|
16
|
-
<p class="lede">Connect a read-only Oracle API to your preferred harness. The model proposes actions; you review and authorize them through your local operator.</p>
|
|
17
|
-
</header>
|
|
18
|
-
|
|
19
|
-
<section class="card setup" aria-labelledby="connection-title">
|
|
20
|
-
<div class="section-heading">
|
|
21
|
-
<span class="step">01</span>
|
|
22
|
-
<div>
|
|
23
|
-
<h2 id="connection-title">Your connection</h2>
|
|
24
|
-
<p>These values stay in this browser and are only used to build the config below.</p>
|
|
25
|
-
</div>
|
|
26
|
-
</div>
|
|
27
|
-
<div class="fields">
|
|
28
|
-
<label>Agent API URL
|
|
29
|
-
<input id="api-url" type="url" value="https://api.oracle-agent.dev" spellcheck="false" autocomplete="url" />
|
|
30
|
-
</label>
|
|
31
|
-
<label>Read API key
|
|
32
|
-
<input id="api-key" type="password" placeholder="Your read-only API key" spellcheck="false" autocomplete="off" />
|
|
33
|
-
<span class="hint">Use only a user-owned, read-only API credential.</span>
|
|
34
|
-
</label>
|
|
35
|
-
<label>Public wallet address <span class="optional">optional</span>
|
|
36
|
-
<input id="wallet-address" type="text" placeholder="0x... or a public Solana address" spellcheck="false" autocomplete="off" />
|
|
37
|
-
<span class="hint">Used to personalize portfolio reads. No wallet connection or signature.</span>
|
|
38
|
-
</label>
|
|
39
|
-
</div>
|
|
40
|
-
</section>
|
|
41
|
-
|
|
42
|
-
<section class="card config" aria-labelledby="config-title">
|
|
43
|
-
<div class="section-heading">
|
|
44
|
-
<span class="step">02</span>
|
|
45
|
-
<div>
|
|
46
|
-
<h2 id="config-title">Choose your harness</h2>
|
|
47
|
-
<p>Copy a ready-to-paste cloud/read MCP configuration.</p>
|
|
48
|
-
</div>
|
|
49
|
-
</div>
|
|
50
|
-
<div class="tabs" role="tablist" aria-label="Agent harness">
|
|
51
|
-
<button role="tab" aria-selected="true" data-harness="hermes">Hermes</button>
|
|
52
|
-
<button role="tab" aria-selected="false" data-harness="claude">Claude Code</button>
|
|
53
|
-
<button role="tab" aria-selected="false" data-harness="codex">Codex</button>
|
|
54
|
-
<button role="tab" aria-selected="false" data-harness="cursor">Cursor</button>
|
|
55
|
-
<button role="tab" aria-selected="false" data-harness="mcp">Generic MCP</button>
|
|
56
|
-
</div>
|
|
57
|
-
<div class="code-wrap">
|
|
58
|
-
<div class="code-bar">
|
|
59
|
-
<span id="config-label">Hermes config</span>
|
|
60
|
-
<button id="copy-button" class="copy" type="button">Copy config</button>
|
|
61
|
-
</div>
|
|
62
|
-
<pre><code id="config-output"></code></pre>
|
|
63
|
-
</div>
|
|
64
|
-
<p id="copy-status" class="status" aria-live="polite"></p>
|
|
65
|
-
</section>
|
|
66
|
-
|
|
67
|
-
<section class="operator" aria-labelledby="operator-title">
|
|
68
|
-
<div class="operator-mark" aria-hidden="true">LOCAL</div>
|
|
69
|
-
<div>
|
|
70
|
-
<p class="eyebrow">SEPARATE EXECUTION LANE</p>
|
|
71
|
-
<h2 id="operator-title">Install the local operator to execute</h2>
|
|
72
|
-
<p>The cloud/read MCP can research, quote, simulate, and prepare. Execution belongs in a separate local process under your policy and approval controls.</p>
|
|
73
|
-
<div class="command"><code>npx @oracle-agent/oracle init</code><button id="copy-install" type="button">Copy</button></div>
|
|
74
|
-
</div>
|
|
75
|
-
</section>
|
|
76
|
-
|
|
77
|
-
<footer>
|
|
78
|
-
<p><strong>Custody stays local.</strong> The model proposes; the owner authorizes. This page never connects a wallet, requests a signature, or sends the values you enter.</p>
|
|
79
|
-
</footer>
|
|
80
|
-
</main>
|
|
81
|
-
<script src="app.js"></script>
|
|
82
|
-
</body>
|
|
83
|
-
</html>
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
:root {
|
|
2
|
-
color-scheme: dark;
|
|
3
|
-
--ink: #07110f;
|
|
4
|
-
--panel: #0d1a17;
|
|
5
|
-
--panel-high: #12231f;
|
|
6
|
-
--line: #26443d;
|
|
7
|
-
--mint: #55e6c1;
|
|
8
|
-
--paper: #edf8f4;
|
|
9
|
-
--muted: #9bb8b0;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
* { box-sizing: border-box; }
|
|
13
|
-
|
|
14
|
-
body {
|
|
15
|
-
margin: 0;
|
|
16
|
-
background:
|
|
17
|
-
radial-gradient(circle at 85% 8%, rgba(85, 230, 193, 0.12), transparent 25rem),
|
|
18
|
-
linear-gradient(rgba(85, 230, 193, 0.025) 1px, transparent 1px),
|
|
19
|
-
linear-gradient(90deg, rgba(85, 230, 193, 0.025) 1px, transparent 1px),
|
|
20
|
-
var(--ink);
|
|
21
|
-
background-size: auto, 48px 48px, 48px 48px, auto;
|
|
22
|
-
color: var(--paper);
|
|
23
|
-
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
24
|
-
min-height: 100vh;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
button, input { font: inherit; }
|
|
28
|
-
.shell { width: min(980px, calc(100% - 32px)); margin: auto; padding: 56px 0 32px; }
|
|
29
|
-
.hero { max-width: 780px; margin-bottom: 42px; }
|
|
30
|
-
.wordmark { color: var(--paper); text-decoration: none; font-size: 14px; font-weight: 800; letter-spacing: .28em; }
|
|
31
|
-
.eyebrow { margin: 36px 0 10px; color: var(--mint); font: 700 11px/1.4 ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .18em; }
|
|
32
|
-
h1 { margin: 0; font-size: clamp(40px, 7vw, 76px); line-height: .98; letter-spacing: -.055em; }
|
|
33
|
-
h1 span { color: var(--mint); }
|
|
34
|
-
.lede { max-width: 660px; margin: 24px 0 0; color: var(--muted); font-size: 18px; line-height: 1.65; }
|
|
35
|
-
.card { background: rgba(13, 26, 23, .92); border: 1px solid var(--line); border-radius: 18px; padding: clamp(22px, 4vw, 38px); margin-top: 18px; box-shadow: 0 22px 70px rgba(0, 0, 0, .22); }
|
|
36
|
-
.section-heading { display: flex; align-items: flex-start; gap: 18px; margin-bottom: 28px; }
|
|
37
|
-
.step { display: grid; place-items: center; min-width: 42px; height: 42px; border: 1px solid var(--mint); border-radius: 50%; color: var(--mint); font: 700 12px ui-monospace, monospace; }
|
|
38
|
-
h2 { margin: 0; font-size: 24px; letter-spacing: -.02em; }
|
|
39
|
-
.section-heading p, .operator p { color: var(--muted); margin: 6px 0 0; line-height: 1.55; }
|
|
40
|
-
.fields { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
|
|
41
|
-
label { display: flex; flex-direction: column; gap: 9px; color: var(--paper); font-size: 13px; font-weight: 700; }
|
|
42
|
-
label:first-child { grid-column: 1 / -1; }
|
|
43
|
-
.optional { color: var(--muted); font-weight: 400; }
|
|
44
|
-
input { width: 100%; color: var(--paper); background: var(--ink); border: 1px solid var(--line); border-radius: 9px; padding: 13px 14px; outline: none; }
|
|
45
|
-
input:focus { border-color: var(--mint); box-shadow: 0 0 0 3px rgba(85, 230, 193, .1); }
|
|
46
|
-
.hint { color: var(--muted); font-size: 11px; font-weight: 400; line-height: 1.4; }
|
|
47
|
-
.tabs { display: flex; gap: 8px; overflow-x: auto; padding-bottom: 4px; }
|
|
48
|
-
.tabs button { flex: 0 0 auto; color: var(--muted); background: transparent; border: 1px solid var(--line); border-radius: 999px; padding: 9px 15px; cursor: pointer; }
|
|
49
|
-
.tabs button[aria-selected="true"] { color: var(--ink); background: var(--mint); border-color: var(--mint); font-weight: 700; }
|
|
50
|
-
.code-wrap { margin-top: 18px; border: 1px solid var(--line); border-radius: 12px; overflow: hidden; background: var(--ink); }
|
|
51
|
-
.code-bar { display: flex; align-items: center; justify-content: space-between; padding: 10px 14px; border-bottom: 1px solid var(--line); color: var(--muted); font-size: 12px; }
|
|
52
|
-
.copy, .command button { color: var(--mint); background: transparent; border: 0; cursor: pointer; font-weight: 700; }
|
|
53
|
-
pre { min-height: 270px; margin: 0; padding: 20px; overflow: auto; color: #c8f7e9; font: 12px/1.7 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }
|
|
54
|
-
.status { min-height: 20px; margin: 10px 0 0; color: var(--mint); font-size: 12px; }
|
|
55
|
-
.operator { display: grid; grid-template-columns: 120px 1fr; gap: 30px; margin: 54px 0; padding: 0 20px; align-items: center; }
|
|
56
|
-
.operator .eyebrow { margin: 0 0 8px; }
|
|
57
|
-
.operator-mark { display: grid; place-items: center; aspect-ratio: 1; border: 1px solid var(--mint); border-radius: 50%; color: var(--mint); font: 700 12px ui-monospace, monospace; letter-spacing: .15em; box-shadow: inset 0 0 30px rgba(85, 230, 193, .09); }
|
|
58
|
-
.command { display: flex; justify-content: space-between; max-width: 520px; margin-top: 18px; padding: 13px 16px; background: var(--panel-high); border: 1px solid var(--line); border-radius: 9px; }
|
|
59
|
-
.command code { overflow: auto; }
|
|
60
|
-
footer { border-top: 1px solid var(--line); padding: 25px 0; color: var(--muted); font-size: 13px; line-height: 1.6; }
|
|
61
|
-
footer strong { color: var(--paper); }
|
|
62
|
-
|
|
63
|
-
@media (max-width: 640px) {
|
|
64
|
-
.shell { padding-top: 30px; }
|
|
65
|
-
.fields { grid-template-columns: 1fr; }
|
|
66
|
-
label:first-child { grid-column: auto; }
|
|
67
|
-
.operator { grid-template-columns: 1fr; padding: 0; }
|
|
68
|
-
.operator-mark { width: 88px; }
|
|
69
|
-
pre { min-height: 320px; }
|
|
70
|
-
}
|
package/public/index.html
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8"/>
|
|
5
|
-
<meta http-equiv="refresh" content="0; url=./oracle-splash/"/>
|
|
6
|
-
<link rel="canonical" href="./oracle-splash/"/>
|
|
7
|
-
<title>Oracle</title>
|
|
8
|
-
</head>
|
|
9
|
-
<body>
|
|
10
|
-
<p><a href="./oracle-splash/">Oracle splash</a></p>
|
|
11
|
-
</body>
|
|
12
|
-
</html>
|