@oracle-agent/oracle 0.10.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -12
- package/bin/oracle-data-mcp.mjs +9 -0
- package/docs/architecture.md +3 -1
- package/docs/profiles.md +3 -6
- package/docs/public-surface.md +133 -0
- package/package.json +1 -1
- package/public/oracle-splash/assets/cli-chain-hyperliquid.jpg +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/index.html +236 -169
- package/scripts/check-doc-drift.mjs +11 -0
- package/scripts/e2e-solana-bitcoin.mjs +1 -1
- package/scripts/secret-scan.mjs +1 -1
- package/src/action-receipts.mjs +108 -11
- package/src/cli/commands/data.mjs +3 -1
- package/src/cli/commands/doctor.mjs +11 -1
- package/src/data/catalog.mjs +38 -7
- package/src/data/desk-data.mjs +12 -0
- package/src/data/providers/evm-rpc.mjs +19 -16
- package/src/data/providers/jupiter-venues.mjs +119 -0
- package/src/data/providers/jupiter.mjs +132 -0
- package/src/data/providers/magiceden-sol.mjs +13 -0
- package/src/data/providers/morpho.mjs +6 -2
- package/src/data/providers/pendle.mjs +3 -2
- package/src/data/providers/satflow.mjs +4 -1
- package/src/data/providers/signed-material-guard.mjs +108 -0
- package/src/data/providers/uniswap-v3.mjs +34 -5
- package/src/data/providers/uniswap-v4.mjs +414 -0
- package/src/prepare-envelope.mjs +22 -4
- package/src/router/prepare-route.mjs +17 -0
- package/src/router/route-sources.mjs +35 -0
|
@@ -143,7 +143,8 @@ main{position:relative;z-index:2;padding-top:84px}
|
|
|
143
143
|
background:linear-gradient(180deg, rgba(124,196,255,.65), transparent);
|
|
144
144
|
transform-origin:50% 0;animation:drop-line 2.8s var(--ease) infinite;
|
|
145
145
|
}
|
|
146
|
-
.home-inner{max-width:min(
|
|
146
|
+
.home-inner{max-width:min(920px,100%);width:100%;margin:0 auto;position:relative}
|
|
147
|
+
.hero-primary{min-width:0;display:flex;flex-direction:column;align-items:center}
|
|
147
148
|
.home-kicker{
|
|
148
149
|
font-family:var(--mono);font-size:10px;letter-spacing:.34em;text-transform:uppercase;color:var(--blue);
|
|
149
150
|
margin-bottom:6px;position:relative;z-index:3;
|
|
@@ -192,7 +193,7 @@ main{position:relative;z-index:2;padding-top:84px}
|
|
|
192
193
|
.hero-orb .orbit-dot{position:absolute;width:9px;height:9px;border-radius:50%;background:radial-gradient(circle at 38% 34%, #fff, var(--blue2) 55%, rgba(124,196,255,.5));box-shadow:0 0 22px rgba(167,216,255,.95), 0 0 44px rgba(124,196,255,.4);left:calc(50% - 4.5px);top:calc(50% - 4.5px);transform-style:preserve-3d;animation:orbit-travel 14s linear infinite}
|
|
193
194
|
.home-title{
|
|
194
195
|
position:relative;z-index:2;
|
|
195
|
-
font-family:var(--display);font-weight:300;font-size:clamp(
|
|
196
|
+
font-family:var(--display);font-weight:300;font-size:clamp(72px,10vw,150px);line-height:.9;letter-spacing:-.045em;
|
|
196
197
|
text-transform:uppercase;color:var(--ink);
|
|
197
198
|
text-shadow:0 2px 30px rgba(0,0,0,.6);
|
|
198
199
|
}
|
|
@@ -391,6 +392,41 @@ main{position:relative;z-index:2;padding-top:84px}
|
|
|
391
392
|
.moat-card h3{font-family:var(--display);font-weight:400;font-size:clamp(20px,2.2vw,26px)}
|
|
392
393
|
.moat-card p{color:#C9DAEC;font-size:15px;line-height:1.55;max-width:44ch}
|
|
393
394
|
@media (max-width:860px){.moat-grid{grid-template-columns:1fr}}
|
|
395
|
+
|
|
396
|
+
.strategy-surface{
|
|
397
|
+
margin-top:clamp(30px,5vw,52px);border:1px solid var(--line);border-radius:20px;overflow:hidden;
|
|
398
|
+
background:linear-gradient(145deg,rgba(124,196,255,.07),rgba(17,25,37,.92) 40%,rgba(11,16,24,.98));
|
|
399
|
+
}
|
|
400
|
+
.strategy-head{display:flex;align-items:end;justify-content:space-between;gap:20px;padding:clamp(22px,3vw,34px);border-bottom:1px solid var(--line)}
|
|
401
|
+
.strategy-kicker{font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--blue)}
|
|
402
|
+
.strategy-head h3{font-family:var(--display);font-weight:400;font-size:clamp(28px,4vw,42px);line-height:1.05;margin-top:8px}
|
|
403
|
+
.strategy-head p{max-width:50ch;color:#C9DAEC;font-size:14px;line-height:1.6}
|
|
404
|
+
.strategy-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1px;background:var(--line)}
|
|
405
|
+
.strategy-card{min-height:205px;padding:clamp(20px,2.6vw,28px);background:rgba(11,16,24,.96);display:flex;flex-direction:column;gap:11px}
|
|
406
|
+
.strategy-card .mode{font-family:var(--mono);font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--blue2)}
|
|
407
|
+
.strategy-card h4{font-family:var(--display);font-weight:400;font-size:clamp(23px,2.5vw,30px)}
|
|
408
|
+
.strategy-card p{color:#C9DAEC;font-size:14px;line-height:1.6}
|
|
409
|
+
.strategy-posture{padding:14px clamp(20px,3vw,34px);border-top:1px solid var(--line);font-family:var(--mono);font-size:9px;line-height:1.6;letter-spacing:.11em;text-transform:uppercase;color:var(--mute)}
|
|
410
|
+
.strategy-posture b{color:var(--blue2);font-weight:500}
|
|
411
|
+
@media (max-width:1180px){.strategy-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
|
|
412
|
+
@media (max-width:980px){.strategy-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.strategy-head{align-items:start;flex-direction:column}}
|
|
413
|
+
@media (max-width:620px){.strategy-grid{grid-template-columns:1fr}.strategy-card{min-height:0}}
|
|
414
|
+
|
|
415
|
+
/* actual Oracle CLI */
|
|
416
|
+
.convert-grid{display:grid;grid-template-columns:1fr;gap:clamp(18px,3vw,28px);align-items:stretch;margin-top:8px}
|
|
417
|
+
.convert-copy{display:flex;flex-direction:column;gap:14px;text-align:left;max-width:780px}
|
|
418
|
+
.convert-copy h3{font-family:var(--display);font-weight:400;font-size:clamp(26px,3vw,34px);line-height:1.1}
|
|
419
|
+
.convert-copy p{color:#C9DAEC;font-size:15px;line-height:1.65;max-width:54ch}
|
|
420
|
+
.convert-pills{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
|
|
421
|
+
.convert-pills span{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;border:1px solid rgba(124,196,255,.28);border-radius:999px;padding:8px 12px;color:var(--blue2)}
|
|
422
|
+
.platform-beta{display:inline-flex;align-items:center;gap:10px;width:max-content;max-width:100%;font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:var(--cool)}
|
|
423
|
+
.platform-beta b{font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:#071018;background:var(--blue2);border-radius:999px;padding:5px 8px}
|
|
424
|
+
.cli-frame{border:1px solid var(--line);border-radius:16px;overflow:hidden;background:#0d1420;box-shadow:0 24px 60px rgba(0,0,0,.35)}
|
|
425
|
+
.cli-frame img{display:block;width:100%;height:auto}
|
|
426
|
+
.cli-cap{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--mute);margin-top:10px;text-align:left}
|
|
427
|
+
.cli-code{margin-top:14px;padding:14px 16px;border-radius:12px;border:1px solid var(--line);background:rgba(17,25,37,.9);font-family:var(--mono);font-size:12px;line-height:1.55;color:var(--cool);overflow-x:auto;text-align:left}
|
|
428
|
+
.cli-code b{color:var(--blue2);font-weight:500}
|
|
429
|
+
|
|
394
430
|
.evolve-rail{
|
|
395
431
|
display:flex;flex-wrap:wrap;gap:8px;justify-content:center;
|
|
396
432
|
padding:14px 16px 4px;
|
|
@@ -498,8 +534,8 @@ main{position:relative;z-index:2;padding-top:84px}
|
|
|
498
534
|
.marquee{overflow:hidden;white-space:nowrap;mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
|
|
499
535
|
.marquee:hover .track{animation-play-state:paused}
|
|
500
536
|
.marquee + .marquee{border-top:1px solid rgba(124,196,255,.08)}
|
|
501
|
-
.track{display:inline-flex;gap:26px;padding:12px 0;animation:scroll 240s linear infinite;will-change:transform;transform:translate3d(0,0,0);backface-visibility:hidden;perspective:1000px}
|
|
502
|
-
.marquee.rev .track{animation-direction:reverse
|
|
537
|
+
.track{display:inline-flex;gap:26px;padding:12px 0;animation:scroll var(--marquee-duration,240s) linear infinite;will-change:transform;transform:translate3d(0,0,0);backface-visibility:hidden;perspective:1000px}
|
|
538
|
+
.marquee.rev .track{animation-direction:reverse}
|
|
503
539
|
a.chip{text-decoration:none;color:inherit}
|
|
504
540
|
.chip{
|
|
505
541
|
display:inline-flex;align-items:center;gap:10px;
|
|
@@ -516,9 +552,6 @@ a.chip:hover{border-color:rgba(124,196,255,.3);background:rgba(21,32,49,.6);tran
|
|
|
516
552
|
.chip img.wm.mono{filter:brightness(0) invert(1)}
|
|
517
553
|
|
|
518
554
|
.chip .wordmark{font-family:var(--proto-font,var(--sans));font-weight:var(--proto-weight,750);font-style:var(--proto-style,normal);text-transform:var(--proto-transform,none);letter-spacing:var(--proto-track,-.025em);line-height:1.2}
|
|
519
|
-
.chip .cap{font-family:var(--mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--mute);padding-left:8px;border-left:1px solid rgba(124,196,255,.14)}
|
|
520
|
-
.chip .cap.t4{color:var(--blue)}
|
|
521
|
-
.chip .cap.t3{color:var(--cool)}
|
|
522
555
|
.proto-uniswap{--proto-font:"Inter",var(--sans);--proto-color:#ff4dcb;--proto-weight:850}
|
|
523
556
|
.proto-hyperliquid{--proto-font:var(--display);--proto-style:italic;--proto-color:#50d2c1;--proto-weight:500;--proto-track:.01em}
|
|
524
557
|
.proto-polymarket{--proto-font:"Manrope",var(--sans);--proto-color:#7aa7ff;--proto-weight:800;--proto-track:-.035em}
|
|
@@ -572,6 +605,7 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
572
605
|
.js .rv.done{transform:none;will-change:auto}
|
|
573
606
|
|
|
574
607
|
@media (max-width:960px){
|
|
608
|
+
.home-inner{max-width:760px}
|
|
575
609
|
.hero-stage{min-height:clamp(300px,44vh,460px)}.home-title{font-size:clamp(80px,20vw,150px)}
|
|
576
610
|
.nav-chip{display:none}
|
|
577
611
|
.nav-links .hide-sm{display:none}
|
|
@@ -683,7 +717,9 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
683
717
|
</span>
|
|
684
718
|
oracle</a>
|
|
685
719
|
<nav class="nav-links" aria-label="Primary">
|
|
686
|
-
<a class="hide-sm" href="#
|
|
720
|
+
<a class="hide-sm" href="#cli">CLI</a>
|
|
721
|
+
<a class="hide-sm" href="#orchestration">Profiles</a>
|
|
722
|
+
<a class="hide-sm" href="#strategies">Strategies</a>
|
|
687
723
|
<a class="hide-sm" href="#chains">Chains</a>
|
|
688
724
|
</nav>
|
|
689
725
|
</header>
|
|
@@ -694,37 +730,69 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
694
730
|
|
|
695
731
|
<section class="home" id="home">
|
|
696
732
|
<div class="home-inner">
|
|
697
|
-
<div class="hero-
|
|
698
|
-
<div class="hero-
|
|
699
|
-
<
|
|
700
|
-
<
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
<
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
733
|
+
<div class="hero-primary">
|
|
734
|
+
<div class="hero-stage">
|
|
735
|
+
<div class="hero-art" aria-hidden="true">
|
|
736
|
+
<video id="orb-vid" muted loop playsinline preload="none" hidden>
|
|
737
|
+
<source src="assets/hero/orb.webm" type="video/webm">
|
|
738
|
+
</video>
|
|
739
|
+
<div class="hero-orb" id="hero-orb">
|
|
740
|
+
<span class="lat l1"></span><span class="lat l2"></span><span class="lat l3"></span><span class="lat l4"></span>
|
|
741
|
+
<span class="par p1"></span><span class="par p2"></span><span class="par p3"></span>
|
|
742
|
+
<span class="eq"></span>
|
|
743
|
+
<span class="core-glow"></span>
|
|
744
|
+
<span class="orbit-dot"></span>
|
|
745
|
+
</div>
|
|
746
|
+
</div>
|
|
747
|
+
<div class="hero-lockup" id="hero-title">
|
|
748
|
+
<h1 class="home-title">OR<em>ACLE</em></h1>
|
|
708
749
|
</div>
|
|
709
750
|
</div>
|
|
710
|
-
<div class="
|
|
711
|
-
<
|
|
751
|
+
<div class="home-copy">
|
|
752
|
+
<p class="home-kicker">self-custody agent control</p>
|
|
753
|
+
<p>One control plane for Hyperliquid, Polymarket, EVM, Bitcoin, Solana, Stable, Robinhood Chain, and new protocol builds. Cross-chain research, trade, protocol interactions, NFT listing and buying. The all-in-one crypto agent. The future is agentic.</p>
|
|
754
|
+
<div class="home-actions">
|
|
755
|
+
<a class="enter-cta" href="#cli">See the CLI</a>
|
|
756
|
+
<a class="enter-cta" href="#orchestration" style="margin-left:10px;opacity:.85">See profiles</a>
|
|
757
|
+
</div>
|
|
712
758
|
</div>
|
|
713
759
|
</div>
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
760
|
+
</div>
|
|
761
|
+
</section>
|
|
762
|
+
|
|
763
|
+
<section class="section cli-section" id="cli">
|
|
764
|
+
<p class="section-label rv">Oracle CLI</p>
|
|
765
|
+
<h2 class="section-title rv">One surface. <em>Every chain.</em></h2>
|
|
766
|
+
<p class="section-lede rv">The real Oracle shell, isolated from desktop chrome. Pin the active surface with <code style="color:var(--blue2)">/chain hyperliquid</code>, switch models with <code style="color:var(--blue2)">/model</code>, then ask naturally.</p>
|
|
767
|
+
<div class="convert-grid rv">
|
|
768
|
+
<div>
|
|
769
|
+
<figure class="cli-frame">
|
|
770
|
+
<img src="assets/cli-chain-hyperliquid.jpg?v=cli-visible" alt="Oracle CLI selecting Hyperliquid with the /chain hyperliquid command" width="1600" height="900" loading="eager" fetchpriority="high" />
|
|
771
|
+
</figure>
|
|
772
|
+
<p class="cli-cap">actual oracle shell // /chain hyperliquid</p>
|
|
773
|
+
</div>
|
|
774
|
+
<div class="convert-copy">
|
|
775
|
+
<h3>The actual Oracle CLI</h3>
|
|
776
|
+
<p>The active chain follows each read, quote, prepare, and bounded execution path.</p>
|
|
777
|
+
<div class="convert-pills">
|
|
778
|
+
<span>HyperCore + HyperEVM</span>
|
|
779
|
+
<span>multichain routing</span>
|
|
780
|
+
<span>self-custody</span>
|
|
781
|
+
</div>
|
|
782
|
+
<p class="platform-beta"><b>Beta</b> Linux, Windows, and macOS apps are in beta.</p>
|
|
783
|
+
<div class="cli-code">
|
|
784
|
+
<div><b>oracle ›</b> /chain hyperliquid</div>
|
|
785
|
+
<div><b>oracle ›</b> /chain show</div>
|
|
786
|
+
<div><b>oracle ›</b> what can you do on hyperliquid?</div>
|
|
719
787
|
</div>
|
|
720
788
|
</div>
|
|
721
789
|
</div>
|
|
722
790
|
</section>
|
|
723
791
|
|
|
724
792
|
<section class="section" id="orchestration">
|
|
725
|
-
<p class="section-label rv">
|
|
793
|
+
<p class="section-label rv">Profiles</p>
|
|
726
794
|
<h2 class="section-title rv">Multi-profile. <em>Customizable.</em></h2>
|
|
727
|
-
<p class="section-lede rv">
|
|
795
|
+
<p class="section-lede rv">Input / Command hits the Oracle control plane, then routes across venue profiles, multi-chain EVM, Bitcoin, Solana, and the protocol builder. Any MCP harness can drive a single agent.</p>
|
|
728
796
|
|
|
729
797
|
<div class="graph-shell rv">
|
|
730
798
|
<div class="graph-top">
|
|
@@ -737,98 +805,6 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
737
805
|
<span class="evolve-pill on">more chains</span>
|
|
738
806
|
</div>
|
|
739
807
|
|
|
740
|
-
<div class="venue-rail-head">solana venues routed · <b id="sol-count">101</b> programs verified on-chain · 88 venues</div>
|
|
741
|
-
<div class="evolve-rail venue-rail" id="sol-venue-rail">
|
|
742
|
-
<span class="evolve-pill on">1DEX</span>
|
|
743
|
-
<span class="evolve-pill on">Aldrin</span>
|
|
744
|
-
<span class="evolve-pill on">AlphaQ</span>
|
|
745
|
-
<span class="evolve-pill on">Aquifer</span>
|
|
746
|
-
<span class="evolve-pill on">BinaryFi</span>
|
|
747
|
-
<span class="evolve-pill on">BisonFi</span>
|
|
748
|
-
<span class="evolve-pill on">Bonkswap</span>
|
|
749
|
-
<span class="evolve-pill on">Boop.fun</span>
|
|
750
|
-
<span class="evolve-pill on">Byreal</span>
|
|
751
|
-
<span class="evolve-pill on">Carrot</span>
|
|
752
|
-
<span class="evolve-pill on">Crema</span>
|
|
753
|
-
<span class="evolve-pill on">Cropper</span>
|
|
754
|
-
<span class="evolve-pill on">DefiTuna</span>
|
|
755
|
-
<span class="evolve-pill on">Denali</span>
|
|
756
|
-
<span class="evolve-pill on">Deriverse</span>
|
|
757
|
-
<span class="evolve-pill on">DexLab</span>
|
|
758
|
-
<span class="evolve-pill on">Dynamic Bonding Curve</span>
|
|
759
|
-
<span class="evolve-pill on">Flint</span>
|
|
760
|
-
<span class="evolve-pill on">Flux</span>
|
|
761
|
-
<span class="evolve-pill on">FluxBeam</span>
|
|
762
|
-
<span class="evolve-pill on">GatorSwap</span>
|
|
763
|
-
<span class="evolve-pill on">Gavel</span>
|
|
764
|
-
<span class="evolve-pill on">GoonFi</span>
|
|
765
|
-
<span class="evolve-pill on">GooseFX GAMMA</span>
|
|
766
|
-
<span class="evolve-pill on">Guacswap</span>
|
|
767
|
-
<span class="evolve-pill on">Hadron</span>
|
|
768
|
-
<span class="evolve-pill on">Heaven</span>
|
|
769
|
-
<span class="evolve-pill on">Helium Network</span>
|
|
770
|
-
<span class="evolve-pill on">Huma</span>
|
|
771
|
-
<span class="evolve-pill on">HumidiFi</span>
|
|
772
|
-
<span class="evolve-pill on">Hylo Exchange</span>
|
|
773
|
-
<span class="evolve-pill on">Hylo Stability</span>
|
|
774
|
-
<span class="evolve-pill on">Invariant</span>
|
|
775
|
-
<span class="evolve-pill on">Jupiter Lend</span>
|
|
776
|
-
<span class="evolve-pill on">JupiterRfqV2</span>
|
|
777
|
-
<span class="evolve-pill on">JupLend</span>
|
|
778
|
-
<span class="evolve-pill on">Kipseli</span>
|
|
779
|
-
<span class="evolve-pill on">LemmingsFi</span>
|
|
780
|
-
<span class="evolve-pill on">M Swap</span>
|
|
781
|
-
<span class="evolve-pill on">Manifest</span>
|
|
782
|
-
<span class="evolve-pill on">Mercurial</span>
|
|
783
|
-
<span class="evolve-pill on">MetaDAO</span>
|
|
784
|
-
<span class="evolve-pill on">Meteora</span>
|
|
785
|
-
<span class="evolve-pill on">Meteora DAMM</span>
|
|
786
|
-
<span class="evolve-pill on">Metric</span>
|
|
787
|
-
<span class="evolve-pill on">Moonit</span>
|
|
788
|
-
<span class="evolve-pill on">Obric</span>
|
|
789
|
-
<span class="evolve-pill on">Obsidian</span>
|
|
790
|
-
<span class="evolve-pill on">Omnipair</span>
|
|
791
|
-
<span class="evolve-pill on">OpenBook</span>
|
|
792
|
-
<span class="evolve-pill on">Orca</span>
|
|
793
|
-
<span class="evolve-pill on">PancakeSwap</span>
|
|
794
|
-
<span class="evolve-pill on">Penguin</span>
|
|
795
|
-
<span class="evolve-pill on">Perena</span>
|
|
796
|
-
<span class="evolve-pill on">Perena Star</span>
|
|
797
|
-
<span class="evolve-pill on">Perps</span>
|
|
798
|
-
<span class="evolve-pill on">Phoenix</span>
|
|
799
|
-
<span class="evolve-pill on">Pump.fun</span>
|
|
800
|
-
<span class="evolve-pill on">Quantum</span>
|
|
801
|
-
<span class="evolve-pill on">Raydium</span>
|
|
802
|
-
<span class="evolve-pill on">Riptide</span>
|
|
803
|
-
<span class="evolve-pill on">RunnerRodeo</span>
|
|
804
|
-
<span class="evolve-pill on">Saber</span>
|
|
805
|
-
<span class="evolve-pill on">Saber (Decimals)</span>
|
|
806
|
-
<span class="evolve-pill on">Sanctum</span>
|
|
807
|
-
<span class="evolve-pill on">Sanctum Infinity</span>
|
|
808
|
-
<span class="evolve-pill on">Saros</span>
|
|
809
|
-
<span class="evolve-pill on">Scale</span>
|
|
810
|
-
<span class="evolve-pill on">Scale Vmm</span>
|
|
811
|
-
<span class="evolve-pill on">Scorch</span>
|
|
812
|
-
<span class="evolve-pill on">Solayer</span>
|
|
813
|
-
<span class="evolve-pill on">SolFi</span>
|
|
814
|
-
<span class="evolve-pill on">Stabble</span>
|
|
815
|
-
<span class="evolve-pill on">Stabble Stable Swap</span>
|
|
816
|
-
<span class="evolve-pill on">Stabble Weighted Swap</span>
|
|
817
|
-
<span class="evolve-pill on">StepN</span>
|
|
818
|
-
<span class="evolve-pill on">TaurusFi</span>
|
|
819
|
-
<span class="evolve-pill on">TesseraV</span>
|
|
820
|
-
<span class="evolve-pill on">Token Swap</span>
|
|
821
|
-
<span class="evolve-pill on">Trends</span>
|
|
822
|
-
<span class="evolve-pill on">VaultLiquidUnstake</span>
|
|
823
|
-
<span class="evolve-pill on">Virtuals</span>
|
|
824
|
-
<span class="evolve-pill on">Voltr</span>
|
|
825
|
-
<span class="evolve-pill on">WhaleStreet</span>
|
|
826
|
-
<span class="evolve-pill on">Whirlpool</span>
|
|
827
|
-
<span class="evolve-pill on">Woofi</span>
|
|
828
|
-
<span class="evolve-pill on">XOrca</span>
|
|
829
|
-
<span class="evolve-pill on">ZeroFi</span>
|
|
830
|
-
</div>
|
|
831
|
-
|
|
832
808
|
<div class="graph-canvas">
|
|
833
809
|
<div class="orch" aria-label="Oracle multi-profile graph">
|
|
834
810
|
<div class="row">
|
|
@@ -901,7 +877,7 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
901
877
|
<div class="tag">profile</div>
|
|
902
878
|
<div class="name">solana agent</div>
|
|
903
879
|
<div class="sub">jup · nfts · dexs</div>
|
|
904
|
-
<div class="chains"><span class="ch">Solana <img src="https://icons.llamao.fi/icons/chains/rsz_solana?w=24&h=24" alt="" loading="lazy"></span
|
|
880
|
+
<div class="chains"><span class="ch">Solana <img src="https://icons.llamao.fi/icons/chains/rsz_solana?w=24&h=24" alt="" loading="lazy"></span></div>
|
|
905
881
|
</div>
|
|
906
882
|
<div class="node route p-btc">
|
|
907
883
|
<div class="tag">profile</div>
|
|
@@ -921,12 +897,6 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
921
897
|
<div class="sub">launches · memecoins</div>
|
|
922
898
|
<div class="chains"><span class="ch">Stable <img src="https://icons.llamao.fi/icons/chains/rsz_stable?w=24&h=24" alt="" loading="lazy"></span></div>
|
|
923
899
|
</div>
|
|
924
|
-
<div class="node add">
|
|
925
|
-
<div class="tag">open slot</div>
|
|
926
|
-
<div class="name">+ add agent</div>
|
|
927
|
-
<div class="sub">new chain · new venue · your rules</div>
|
|
928
|
-
<div class="chains" style="margin-top:12px;font-family:var(--mono);font-size:10px;color:var(--blue2)">sits beside stable · same custody</div>
|
|
929
|
-
</div>
|
|
930
900
|
</div>
|
|
931
901
|
|
|
932
902
|
<div class="wires funnel" aria-hidden="true">
|
|
@@ -1047,20 +1017,10 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
1047
1017
|
<span class="chip-s">unsigned deploy</span>
|
|
1048
1018
|
</div>
|
|
1049
1019
|
</article>
|
|
1050
|
-
<article class="route-card p-add">
|
|
1051
|
-
<div class="where">+ add agent →</div>
|
|
1052
|
-
<h3>Next chain</h3>
|
|
1053
|
-
<p>Drop in another profile for a new chain or venue. Same custody model, your wallet, your limits, your revoke.</p>
|
|
1054
|
-
<div class="chips">
|
|
1055
|
-
<span class="chip-s">custom profile</span>
|
|
1056
|
-
<span class="chip-s">more chains</span>
|
|
1057
|
-
<span class="chip-s">same custody</span>
|
|
1058
|
-
</div>
|
|
1059
|
-
</article>
|
|
1060
1020
|
</div>
|
|
1061
1021
|
|
|
1062
1022
|
<div class="why-band">
|
|
1063
|
-
<p>The model proposes. Policy bounds. You own signatures. Multi-profile desks
|
|
1023
|
+
<p>The model proposes. Policy bounds. You own signatures. Multi-profile desks route each request to the right surface. Vaults, perps, bridges, and protocol scaffolds, not just swaps. Empty allowlists refuse everything until you configure them.</p>
|
|
1064
1024
|
</div>
|
|
1065
1025
|
</div>
|
|
1066
1026
|
|
|
@@ -1096,7 +1056,45 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
1096
1056
|
<p>A fresh install signs nothing. Every lane refuses while its allowlists are empty, so nothing moves until you set the bounds.</p>
|
|
1097
1057
|
</article>
|
|
1098
1058
|
</div>
|
|
1099
|
-
|
|
1059
|
+
|
|
1060
|
+
<div class="strategy-surface rv" id="strategies" aria-labelledby="strategies-title">
|
|
1061
|
+
<div class="strategy-head">
|
|
1062
|
+
<div>
|
|
1063
|
+
<div class="strategy-kicker">Agentic strategies</div>
|
|
1064
|
+
<h3 id="strategies-title">Move liquidity. Bound the risk.</h3>
|
|
1065
|
+
</div>
|
|
1066
|
+
<p>Oracle reads the position, models the route and costs, then prepares only the steps the selected lane can actually support.</p>
|
|
1067
|
+
</div>
|
|
1068
|
+
<div class="strategy-grid">
|
|
1069
|
+
<article class="strategy-card">
|
|
1070
|
+
<div class="mode">read · model · prepare</div>
|
|
1071
|
+
<h4>LP rebalancing</h4>
|
|
1072
|
+
<p>Read concentrated-liquidity positions, model new ranges and fee drag, then prepare collect, swap and redeploy steps on supported venues. You sign each step.</p>
|
|
1073
|
+
</article>
|
|
1074
|
+
<article class="strategy-card">
|
|
1075
|
+
<div class="mode">monitor · shadow · simulate</div>
|
|
1076
|
+
<h4>MEV</h4>
|
|
1077
|
+
<p>Monitor cross-venue divergence and simulate net edge after gas, slippage and lender costs. Public mode is shadow analysis, not autonomous execution.</p>
|
|
1078
|
+
</article>
|
|
1079
|
+
<article class="strategy-card">
|
|
1080
|
+
<div class="mode">simulate · policy-check</div>
|
|
1081
|
+
<h4>Flash loans</h4>
|
|
1082
|
+
<p>Build bounded atomic loan routes and test premium, calldata, gas and minimum-profit gates. Public live execution remains disabled.</p>
|
|
1083
|
+
</article>
|
|
1084
|
+
<article class="strategy-card">
|
|
1085
|
+
<div class="mode">read · quote · prepare</div>
|
|
1086
|
+
<h4>Staking</h4>
|
|
1087
|
+
<p>Compare validators, staking vaults, rewards and unlock periods, then prepare supported stake, withdraw and delegate actions for your signature.</p>
|
|
1088
|
+
</article>
|
|
1089
|
+
<article class="strategy-card">
|
|
1090
|
+
<div class="mode">discover · compare · prepare</div>
|
|
1091
|
+
<h4>Yield</h4>
|
|
1092
|
+
<p>Rank lending, staking, vault and LP opportunities by net APY after fees, liquidity, lockups and smart-contract risk, then prepare supported deposits or migrations for your signature.</p>
|
|
1093
|
+
</article>
|
|
1094
|
+
</div>
|
|
1095
|
+
<div class="strategy-posture"><b>Public posture:</b> research, simulation and unsigned preparation. MEV and flash-loan broadcast stays off; supported staking, LP and yield actions require the user wallet to sign.</div>
|
|
1096
|
+
</div>
|
|
1097
|
+
</section>
|
|
1100
1098
|
|
|
1101
1099
|
<section class="section" id="chains">
|
|
1102
1100
|
<p class="section-label rv">Chains</p>
|
|
@@ -1115,7 +1113,7 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
1115
1113
|
</div>
|
|
1116
1114
|
</div>
|
|
1117
1115
|
<div class="venues rv">
|
|
1118
|
-
<div class="venues-head"><span>protocols // venues</span
|
|
1116
|
+
<div class="venues-head"><span>protocols // venues</span></div>
|
|
1119
1117
|
<div class="marquee"><div class="track" id="proto-track-a"></div></div>
|
|
1120
1118
|
<div class="marquee rev"><div class="track" id="proto-track-b"></div></div>
|
|
1121
1119
|
</div>
|
|
@@ -1187,15 +1185,15 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
1187
1185
|
var WM = "assets/wordmarks/";
|
|
1188
1186
|
var BRAND = "brand/";
|
|
1189
1187
|
var PROTOS_A = [
|
|
1190
|
-
{ n: "Uniswap V3",
|
|
1191
|
-
{ n: "Aerodrome Slipstream",
|
|
1192
|
-
{ n: "Pancake V3",
|
|
1188
|
+
{ n: "Uniswap V3", wm: "uniswap.svg", cap: "read + quote + prepare + policy", u: "https://app.uniswap.org/" },
|
|
1189
|
+
{ n: "Aerodrome Slipstream", wm: "aerodrome.svg", cap: "read + quote + prepare", u: "https://aerodrome.finance/" },
|
|
1190
|
+
{ n: "Pancake V3", wm: "pancakeswap.svg", cap: "read + quote", u: "https://pancakeswap.finance/swap" },
|
|
1193
1191
|
{ n: "LFJ Liquidity Book", img: "lfj", cap: "read + quote", u: "https://lfj.gg/avalanche/trade" },
|
|
1194
1192
|
{ n: "Curve RouterNG", img: "curve", cap: "read + quote + prepare + policy", u: "https://curve.finance" },
|
|
1195
1193
|
{ n: "Pendle Router", img: "pendle", cap: "read + quote + prepare + policy", u: "https://pendle.finance/" },
|
|
1196
|
-
{ n: "Morpho vaults",
|
|
1194
|
+
{ n: "Morpho vaults", wm: "morpho.svg", cap: "read + deposit prepare", u: "https://app.morpho.org/" },
|
|
1197
1195
|
{ n: "Lido stETH", img: "lido", cap: "read + stake prepare + policy", u: "https://lido.fi/" },
|
|
1198
|
-
{ n: "Kinetiq kHYPE",
|
|
1196
|
+
{ n: "Kinetiq kHYPE", wm: "kinetiq.svg", tall: 1, cap: "read + quote + stake prepare + policy", u: "https://kinetiq.xyz/stake" },
|
|
1199
1197
|
{ n: "Project X", img: "projectx", cap: "read", u: "https://www.prjx.com" },
|
|
1200
1198
|
{ n: "Uniswap V4", img: "uniswapv4", cap: "read + quote", u: "https://app.uniswap.org/" },
|
|
1201
1199
|
{ n: "Aborean CL", img: "aborean", cap: "read + quote", u: "https://aborean.finance/" },
|
|
@@ -1219,9 +1217,9 @@ var BRAND = "brand/";
|
|
|
1219
1217
|
{ n: "Pharaoh V3", img: "pharaoh", cap: "read + quote", u: "https://www.phar.gg/" },
|
|
1220
1218
|
{ n: "Polymarket", img: "polymarket", cap: "read", u: "https://polymarket.com/" },
|
|
1221
1219
|
{ n: "XSY", img: "xsy", cap: "read", u: "https://xsy.fi" },
|
|
1222
|
-
{ n: "Balancer V2",
|
|
1220
|
+
{ n: "Balancer V2", wm: "balancer.svg", cap: "read + quote", u: "https://balancer.fi/" },
|
|
1223
1221
|
{ n: "Harmonix", img: "harmonix", cap: "read + quote", u: "https://app.harmonix.fi/" },
|
|
1224
|
-
{ n: "Hyperliquid HLP",
|
|
1222
|
+
{ n: "Hyperliquid HLP", wm: "hyperliquid.svg", cap: "read", u: "https://app.hyperliquid.xyz" },
|
|
1225
1223
|
{ n: "stHYPE + wstHYPE", img: "sthype", cap: "read + quote", u: "https://app.valantis.xyz" },
|
|
1226
1224
|
{ n: "Arcus Perps", img: "arcus", cap: "read", u: "https://arcus.xyz/" },
|
|
1227
1225
|
{ n: "NOXA Fun", img: "noxa", cap: "read + quote", u: "https://fun.noxa.eth.limo/" },
|
|
@@ -1238,17 +1236,17 @@ var BRAND = "brand/";
|
|
|
1238
1236
|
{ n: "Hypha", img: "hypha", cap: "read + quote", u: "https://www.hypha.sh/" },
|
|
1239
1237
|
{ n: "40 Acres", img: "fortyacres", cap: "read + quote", u: "https://www.40acres.finance/" },
|
|
1240
1238
|
{ n: "Hyperbeat", img: "hyperbeat", cap: "read + quote", u: "https://app.hyperbeat.org/" },
|
|
1241
|
-
{ n: "GMX V2",
|
|
1242
|
-
{ n: "Relay",
|
|
1243
|
-
{ n: "Odos",
|
|
1244
|
-
{ n: "Jupiter",
|
|
1245
|
-
{ n: "Stargate",
|
|
1239
|
+
{ n: "GMX V2", wm: "gmx.svg", cap: "read + order attestation", u: "https://gmx.io/" },
|
|
1240
|
+
{ n: "Relay", wm: "relay.svg", cap: "route source", u: "https://relay.link/" },
|
|
1241
|
+
{ n: "Odos", wm: "odos.svg", cap: "read + route source", u: "https://app.odos.xyz" },
|
|
1242
|
+
{ n: "Jupiter", wm: "jupiter.svg", cap: "solana route source", u: "https://jup.ag/" },
|
|
1243
|
+
{ n: "Stargate", wm: "stargate.svg", cap: "read + bridge route", u: "https://stargate.finance/" }
|
|
1246
1244
|
];
|
|
1247
1245
|
var PROTOS_B = [
|
|
1248
1246
|
{ n: "Uniswap V3 LP", img: "uniswap", cap: "preview + mint/collect prepare", u: "https://app.uniswap.org/" },
|
|
1249
|
-
{ n: "Velodrome V2",
|
|
1247
|
+
{ n: "Velodrome V2", wm: "velodrome.svg", cap: "read + quote", u: "https://velodrome.finance/" },
|
|
1250
1248
|
{ n: "QuickSwap", img: "quickswap", cap: "read + quote", u: "https://quickswap.exchange/" },
|
|
1251
|
-
{ n: "HyperSwap V3",
|
|
1249
|
+
{ n: "HyperSwap V3", wm: "hyperswap.svg", cap: "read + quote", u: "https://app.hyperswap.exchange/" },
|
|
1252
1250
|
{ n: "Balancer V3", img: "balancer", cap: "read + quote + prepare + policy", u: "https://balancer.fi/" },
|
|
1253
1251
|
{ n: "Aave V3", img: "aave", cap: "read + supply/withdraw prepare + policy", u: "https://aave.com/" },
|
|
1254
1252
|
{ n: "Morpho Blue", img: "morpho", cap: "read", u: "https://app.morpho.org" },
|
|
@@ -1297,8 +1295,8 @@ var PROTOS_B = [
|
|
|
1297
1295
|
{ n: "Looped Hype", img: "loopedhype", cap: "read + quote", u: "https://www.loopingcollective.org/" },
|
|
1298
1296
|
{ n: "LI.FI", img: "lifi", cap: "read + route source", u: "https://li.fi/" },
|
|
1299
1297
|
{ n: "Velora", img: "velora", cap: "read + route source", u: "https://app.velora.xyz" },
|
|
1300
|
-
{ n: "CoW Swap",
|
|
1301
|
-
{ n: "Across",
|
|
1298
|
+
{ n: "CoW Swap", wm: "cowswap.svg", cap: "read + route source", u: "https://cow.fi/" },
|
|
1299
|
+
{ n: "Across", wm: "across.svg", cap: "read + bridge route", u: "https://across.to" }
|
|
1302
1300
|
];
|
|
1303
1301
|
|
|
1304
1302
|
// Equalize optical weight: constant target area, clamped, then width-capped.
|
|
@@ -1311,29 +1309,91 @@ var PROTOS_B = [
|
|
|
1311
1309
|
img.style.height = h.toFixed(1) + "px";
|
|
1312
1310
|
}
|
|
1313
1311
|
function wireMarks(root) {
|
|
1314
|
-
root.querySelectorAll("img.wm
|
|
1315
|
-
if (img.complete
|
|
1316
|
-
|
|
1312
|
+
root.querySelectorAll("img.wm").forEach(function (img) {
|
|
1313
|
+
if (img.complete) {
|
|
1314
|
+
if (!img.classList.contains("tall") && img.naturalWidth) normalizeMark(img);
|
|
1315
|
+
return;
|
|
1316
|
+
}
|
|
1317
|
+
img.addEventListener("load", function () {
|
|
1318
|
+
if (!img.classList.contains("tall")) normalizeMark(img);
|
|
1319
|
+
syncMarqueeVelocity();
|
|
1320
|
+
}, { once: true });
|
|
1321
|
+
});
|
|
1322
|
+
}
|
|
1323
|
+
|
|
1324
|
+
var MARQUEE_PX_PER_SECOND = 20;
|
|
1325
|
+
var marqueeResizeTimer = 0;
|
|
1326
|
+
function syncMarqueeVelocity() {
|
|
1327
|
+
document.querySelectorAll(".track").forEach(function (track) {
|
|
1328
|
+
var distance = track.scrollWidth / 2;
|
|
1329
|
+
if (distance > 0) {
|
|
1330
|
+
track.style.setProperty("--marquee-duration", Math.max(30, distance / MARQUEE_PX_PER_SECOND).toFixed(2) + "s");
|
|
1331
|
+
}
|
|
1317
1332
|
});
|
|
1318
1333
|
}
|
|
1319
1334
|
|
|
1335
|
+
function protocolName(name) {
|
|
1336
|
+
var label = name.replace(/\s+(?:DEX\s+)?V\d+(?:\s+LP)?\b/gi, "").trim();
|
|
1337
|
+
var aliases = [
|
|
1338
|
+
[/^Aerodrome\b/i, "Aerodrome"],
|
|
1339
|
+
[/^Pancake(?:Swap)?\b/i, "PancakeSwap"],
|
|
1340
|
+
[/^LFJ\b/i, "LFJ"],
|
|
1341
|
+
[/^Curve\b/i, "Curve"],
|
|
1342
|
+
[/^Pendle\b/i, "Pendle"],
|
|
1343
|
+
[/^Morpho\b/i, "Morpho"],
|
|
1344
|
+
[/^Lido\b/i, "Lido"],
|
|
1345
|
+
[/^Kinetiq\b/i, "Kinetiq"],
|
|
1346
|
+
[/^Aborean\b/i, "Aborean"],
|
|
1347
|
+
[/^Stable Swap\b/i, "Stable"],
|
|
1348
|
+
[/^Ethena\b/i, "Ethena"],
|
|
1349
|
+
[/^Benqi\b/i, "Benqi"],
|
|
1350
|
+
[/^Fluid\b/i, "Fluid"],
|
|
1351
|
+
[/^Lista\b/i, "Lista"],
|
|
1352
|
+
[/^Hyperliquid\b/i, "Hyperliquid"],
|
|
1353
|
+
[/^Arcus\b/i, "Arcus"],
|
|
1354
|
+
[/^NOXA\b/i, "NOXA"],
|
|
1355
|
+
[/^Kona\b/i, "Kona"],
|
|
1356
|
+
[/^Velodrome\b/i, "Velodrome"],
|
|
1357
|
+
[/^SakuraSwap\b/i, "SakuraSwap"],
|
|
1358
|
+
[/^Spark(?:Lend|\b)/i, "Spark"],
|
|
1359
|
+
[/^(?:ether\.fi|EtherFi)\b/i, "EtherFi"],
|
|
1360
|
+
[/^Sky\b/i, "Sky"],
|
|
1361
|
+
[/^Binance\b/i, "Binance"],
|
|
1362
|
+
[/^Avant\b/i, "Avant"],
|
|
1363
|
+
[/^Aster\b/i, "Aster"],
|
|
1364
|
+
[/^Lighter\b/i, "Lighter"],
|
|
1365
|
+
[/^stHYPE \+ wstHYPE$/i, "Valantis"]
|
|
1366
|
+
];
|
|
1367
|
+
for (var i = 0; i < aliases.length; i++) {
|
|
1368
|
+
if (aliases[i][0].test(label)) return aliases[i][1];
|
|
1369
|
+
}
|
|
1370
|
+
return label;
|
|
1371
|
+
}
|
|
1372
|
+
function uniqueProtocols(list, seen) {
|
|
1373
|
+
return list.filter(function (x) {
|
|
1374
|
+
var label = protocolName(x.n);
|
|
1375
|
+
if (seen[label]) return false;
|
|
1376
|
+
seen[label] = true;
|
|
1377
|
+
return true;
|
|
1378
|
+
});
|
|
1379
|
+
}
|
|
1320
1380
|
function chipRow(list) {
|
|
1321
1381
|
var seq = list.concat(list);
|
|
1322
1382
|
return seq.map(function (x) {
|
|
1323
|
-
var
|
|
1383
|
+
var label = protocolName(x.n);
|
|
1324
1384
|
var body = x.img
|
|
1325
|
-
? '<img class="wm tall" src="' + BRAND + x.img + '.webp" alt="' +
|
|
1326
|
-
'<span class="wordmark">' +
|
|
1327
|
-
'<span class="cap' + tier + '">' + x.cap + '</span>'
|
|
1385
|
+
? '<img class="wm tall" src="' + BRAND + x.img + '.webp" alt="' + label + '" decoding="async">' +
|
|
1386
|
+
'<span class="wordmark">' + label + '</span>'
|
|
1328
1387
|
: x.wm
|
|
1329
|
-
? '<img class="' + (x.tall ? 'wm tall' : 'wm') + (x.mono ? ' mono' : '') + '" src="' + WM + x.wm + '" alt="' +
|
|
1330
|
-
(x.tall ? '<span class="wordmark">' +
|
|
1331
|
-
: '<span class="wordmark">' +
|
|
1332
|
-
return '<a class="chip wm-chip" href="' + x.u + '" target="_blank" rel="noopener noreferrer" aria-label="' +
|
|
1388
|
+
? '<img class="' + (x.tall ? 'wm tall' : 'wm') + (x.mono ? ' mono' : '') + '" src="' + WM + x.wm + '" alt="' + label + '" decoding="async">' +
|
|
1389
|
+
(x.tall ? '<span class="wordmark">' + label + '</span>' : '')
|
|
1390
|
+
: '<span class="wordmark">' + label + '</span>';
|
|
1391
|
+
return '<a class="chip wm-chip" href="' + x.u + '" target="_blank" rel="noopener noreferrer" aria-label="' + label + '">' + body + '</a>';
|
|
1333
1392
|
}).join("");
|
|
1334
1393
|
}
|
|
1335
|
-
|
|
1336
|
-
document.getElementById("proto-track-
|
|
1394
|
+
var visibleProtocols = Object.create(null);
|
|
1395
|
+
document.getElementById("proto-track-a").innerHTML = chipRow(uniqueProtocols(PROTOS_A, visibleProtocols));
|
|
1396
|
+
document.getElementById("proto-track-b").innerHTML = chipRow(uniqueProtocols(PROTOS_B, visibleProtocols));
|
|
1337
1397
|
|
|
1338
1398
|
var LM = "assets/llms/";
|
|
1339
1399
|
var LLMS = [
|
|
@@ -1359,6 +1419,13 @@ var PROTOS_B = [
|
|
|
1359
1419
|
wireMarks(document.getElementById("proto-track-a"));
|
|
1360
1420
|
wireMarks(document.getElementById("proto-track-b"));
|
|
1361
1421
|
wireMarks(document.getElementById("llm-track"));
|
|
1422
|
+
syncMarqueeVelocity();
|
|
1423
|
+
if (document.fonts && document.fonts.ready) document.fonts.ready.then(syncMarqueeVelocity);
|
|
1424
|
+
window.addEventListener("load", syncMarqueeVelocity);
|
|
1425
|
+
window.addEventListener("resize", function () {
|
|
1426
|
+
clearTimeout(marqueeResizeTimer);
|
|
1427
|
+
marqueeResizeTimer = setTimeout(syncMarqueeVelocity, 120);
|
|
1428
|
+
});
|
|
1362
1429
|
|
|
1363
1430
|
var loader = document.getElementById("loader");
|
|
1364
1431
|
var fill = document.getElementById("loader-fill");
|
|
@@ -60,6 +60,17 @@ function checkVersionPins(rel, text) {
|
|
|
60
60
|
`${rel}:${i + 1} advertises oracle ${latest[1]} as latest but this package is ${pkg.version}\n ${line.trim().slice(0, 120)}`,
|
|
61
61
|
);
|
|
62
62
|
}
|
|
63
|
+
// The 2026-08-03 grok lane found `Source tree: **oracle \`0.5.0\`**` and a
|
|
64
|
+
// `Published npm: **oracle \`0.4.2\`**` line surviving inside a 0.10.0
|
|
65
|
+
// tarball. Both shapes sailed past the two matchers above, so a stranger
|
|
66
|
+
// reading the shipped README saw a version five releases stale. Match any
|
|
67
|
+
// prose that states an oracle version, not just the two blessed prefixes.
|
|
68
|
+
const stated = line.match(/oracle\s+`(\d+\.\d+\.\d+)`/i);
|
|
69
|
+
if (stated && stated[1] !== pkg.version) {
|
|
70
|
+
failures.push(
|
|
71
|
+
`${rel}:${i + 1} states oracle ${stated[1]} but this package is ${pkg.version}\n ${line.trim().slice(0, 120)}`,
|
|
72
|
+
);
|
|
73
|
+
}
|
|
63
74
|
});
|
|
64
75
|
}
|
|
65
76
|
|
|
@@ -9,7 +9,7 @@ import { jupiterQuote, jupiterPrepareSwap, SOL_MINT, USDC_MINT } from "../src/da
|
|
|
9
9
|
import { solanaSimulateTransaction } from "../src/data/providers/solana-rpc.mjs";
|
|
10
10
|
import { magicEdenSolStats, magicEdenSolListings, magicEdenSolPrepareBuy } from "../src/data/providers/magiceden-sol.mjs";
|
|
11
11
|
|
|
12
|
-
const PROBE_WALLET = process.env.ORACLE_E2E_SOL_PUBKEY || "
|
|
12
|
+
const PROBE_WALLET = process.env.ORACLE_E2E_SOL_PUBKEY || "DtM6A1ivwvFeT14f7ggTAGvpUTZA5LeutV3rLe8wR6U3";
|
|
13
13
|
const PROBE_BTC = process.env.ORACLE_E2E_BTC_ADDRESS || "bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq";
|
|
14
14
|
|
|
15
15
|
const results = [];
|
package/scripts/secret-scan.mjs
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
import { execFileSync } from "node:child_process";
|
|
8
8
|
|
|
9
|
-
const ROOT = process.cwd();
|
|
9
|
+
const ROOT = execFileSync("git", ["rev-parse", "--show-toplevel"], { cwd: process.cwd(), encoding: "utf8" }).trim();
|
|
10
10
|
|
|
11
11
|
// Live values that must never appear. Sourced from the environment at scan
|
|
12
12
|
// time so the scanner itself contains no secrets.
|