@oracle-agent/oracle 0.5.0 → 0.6.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 +10 -1
- package/docs/cli.md +28 -0
- package/package.json +3 -3
- package/profiles/oracle/SOUL.md +10 -4
- package/protocols/templates/safe-erc20/README.md +9 -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 +1 -0
- package/public/oracle-splash/assets/llms/codex.svg +1 -0
- package/public/oracle-splash/assets/llms/cursor.svg +17 -0
- package/public/oracle-splash/assets/llms/deepseek.svg +1 -0
- package/public/oracle-splash/assets/llms/gemini.svg +1 -0
- package/public/oracle-splash/assets/llms/grok.svg +8 -0
- package/public/oracle-splash/assets/llms/hermes.png +0 -0
- package/public/oracle-splash/assets/llms/kimi.svg +1 -0
- package/public/oracle-splash/assets/llms/manus.svg +18 -0
- package/public/oracle-splash/assets/llms/openclaw.svg +22 -0
- package/public/oracle-splash/assets/llms/perplexity.svg +1 -0
- package/public/oracle-splash/assets/llms/qwen.svg +1 -0
- package/public/oracle-splash/assets/llms/windsurf.svg +1 -0
- package/public/oracle-splash/assets/protocols/abcdex.png +0 -0
- package/public/oracle-splash/assets/protocols/across.png +0 -0
- package/public/oracle-splash/assets/protocols/aerodrome.png +0 -0
- package/public/oracle-splash/assets/protocols/balancer.png +0 -0
- package/public/oracle-splash/assets/protocols/cowswap.png +0 -0
- package/public/oracle-splash/assets/protocols/curve.png +0 -0
- package/public/oracle-splash/assets/protocols/dreamcash.png +0 -0
- package/public/oracle-splash/assets/protocols/felix.png +0 -0
- package/public/oracle-splash/assets/protocols/gmx.png +0 -0
- package/public/oracle-splash/assets/protocols/hyena.png +0 -0
- package/public/oracle-splash/assets/protocols/hyperbeat.png +0 -0
- package/public/oracle-splash/assets/protocols/hyperliquid.png +0 -0
- package/public/oracle-splash/assets/protocols/hyperswap.png +0 -0
- package/public/oracle-splash/assets/protocols/jupiter.png +0 -0
- package/public/oracle-splash/assets/protocols/kinetiq.png +0 -0
- package/public/oracle-splash/assets/protocols/lfj.png +0 -0
- package/public/oracle-splash/assets/protocols/lifi.png +0 -0
- package/public/oracle-splash/assets/protocols/magic-eden.png +0 -0
- package/public/oracle-splash/assets/protocols/morpho.png +0 -0
- package/public/oracle-splash/assets/protocols/odos.png +0 -0
- package/public/oracle-splash/assets/protocols/oneinch.png +0 -0
- package/public/oracle-splash/assets/protocols/opensea.png +0 -0
- package/public/oracle-splash/assets/protocols/pancakeswap.png +0 -0
- package/public/oracle-splash/assets/protocols/paragon.png +0 -0
- package/public/oracle-splash/assets/protocols/paraswap.png +0 -0
- package/public/oracle-splash/assets/protocols/pendle.png +0 -0
- package/public/oracle-splash/assets/protocols/polymarket.png +0 -0
- package/public/oracle-splash/assets/protocols/quickswap.png +0 -0
- package/public/oracle-splash/assets/protocols/relay.png +0 -0
- package/public/oracle-splash/assets/protocols/stargate.png +0 -0
- package/public/oracle-splash/assets/protocols/tradexyz.png +0 -0
- package/public/oracle-splash/assets/protocols/uniswap.png +0 -0
- package/public/oracle-splash/assets/protocols/velodrome.png +0 -0
- package/public/oracle-splash/assets/protocols/ventuals.png +0 -0
- package/public/oracle-splash/assets/wordmarks/hyena.svg +7 -0
- package/public/oracle-splash/assets/wordmarks/opensea.svg +1 -1
- package/public/oracle-splash/assets/wordmarks/outcome.svg +16 -0
- package/public/oracle-splash/assets/wordmarks/xyz.svg +12 -0
- package/public/oracle-splash/index.html +121 -139
- package/skills/oracle-chat/SKILL.md +61 -0
- package/skills/oracle-chat/chain.SKILL.md +31 -0
- package/skills/oracle-chat/setup.SKILL.md +37 -0
- package/skins/oracle.yaml +52 -0
- package/src/cli/chain-catalog.mjs +215 -0
- package/src/cli/chain-state.mjs +74 -0
- package/src/cli/commands/chain.mjs +143 -0
- package/src/cli/commands/chat.mjs +268 -0
- package/src/cli/commands/model.mjs +37 -0
- package/src/cli/commands/setup.mjs +283 -0
- package/src/cli/first-run.mjs +3 -0
- package/src/cli/kernel.mjs +42 -3
- package/src/cli/messaging-platforms.mjs +209 -0
- package/src/cli/oracle-harness.py +148 -0
- package/src/cli/paths.mjs +5 -0
- package/src/cli/setup-state.mjs +168 -0
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>ORACLE</title>
|
|
7
|
-
<meta name="description" content="Oracle multichain agent control.
|
|
7
|
+
<meta name="description" content="Oracle multichain agent control. Prepare-only public plane. Self-custody. Powered by Hermes." />
|
|
8
8
|
<meta name="theme-color" content="#0B1018" />
|
|
9
9
|
<meta name="robots" content="noindex,nofollow" />
|
|
10
10
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
11
11
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
12
|
-
<link href="https://fonts.googleapis.com/css2?family=Archivo+Black&family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;1,300;1,400;1,500&family=DM+Sans:wght@500;700&family=IBM+Plex+Mono:wght@400;500&family=Inter:wght@500;650;750;850&family=Manrope:wght@600;800&family=Outfit:wght@300;400;500;700&family=Sora:wght@500;700&family=Space+Grotesk:wght@500;700&display=swap" rel="stylesheet" />
|
|
12
|
+
<link href="https://fonts.googleapis.com/css2?family=Archivo+Black&family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;1,300;1,400;1,500&family=DM+Sans:wght@500;700&family=IBM+Plex+Mono:wght@400;500&family=Inter:wght@500;650;750;850&family=UnifrakturCook:wght@700&family=Manrope:wght@600;800&family=Outfit:wght@300;400;500;700&family=Sora:wght@500;700&family=Space+Grotesk:wght@500;700&display=swap" rel="stylesheet" />
|
|
13
13
|
<style>
|
|
14
14
|
:root{
|
|
15
15
|
--bg:#0B1018;
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
--blue2:#A7D8FF;
|
|
20
20
|
--blue-dim:#3a6f99;
|
|
21
21
|
--ink:#E8F1FA;
|
|
22
|
-
--cool:#
|
|
23
|
-
--mute:#
|
|
22
|
+
--cool:#B7CCE0;
|
|
23
|
+
--mute:#89A3BE;
|
|
24
24
|
--line:rgba(124,196,255,.14);
|
|
25
25
|
--line-2:rgba(124,196,255,.24);
|
|
26
26
|
--evm:#7CC4FF;
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
*{box-sizing:border-box;margin:0;padding:0}
|
|
40
40
|
html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
|
|
41
41
|
body{
|
|
42
|
-
min-height:100dvh;background:var(--bg);color:var(--ink);
|
|
43
|
-
font-family:var(--sans);font-weight:
|
|
42
|
+
min-height:100dvh;background:var(--bg);color:var(--ink);position:relative;isolation:isolate;
|
|
43
|
+
font-family:var(--sans);font-weight:350;overflow-x:hidden;
|
|
44
44
|
}
|
|
45
45
|
::selection{background:var(--blue);color:#061018}
|
|
46
46
|
a{color:inherit;text-decoration:none}
|
|
@@ -92,7 +92,6 @@ img{display:inline-block}
|
|
|
92
92
|
align-items:center;gap:16px;
|
|
93
93
|
padding:14px var(--pad);
|
|
94
94
|
background:rgba(11,16,24,.82);
|
|
95
|
-
backdrop-filter:blur(14px);
|
|
96
95
|
border-bottom:1px solid var(--line);
|
|
97
96
|
}
|
|
98
97
|
.brand{
|
|
@@ -118,12 +117,12 @@ img{display:inline-block}
|
|
|
118
117
|
.nav-cta:hover{border-color:var(--blue);color:var(--blue2);box-shadow:0 0 0 1px rgba(124,196,255,.12)}
|
|
119
118
|
|
|
120
119
|
/* fixed soft field behind content */
|
|
121
|
-
#gl{position:fixed;inset:0;width:100%;height:100%;z-index
|
|
120
|
+
#gl{position:fixed;inset:0;width:100%;height:100%;z-index:-1;display:block;opacity:.75;pointer-events:none}
|
|
122
121
|
.veil{
|
|
123
122
|
position:fixed;inset:0;z-index:1;pointer-events:none;
|
|
124
123
|
background:
|
|
125
|
-
radial-gradient(60% 50% at 50% 28%, rgba(124,196,255,.
|
|
126
|
-
linear-gradient(180deg, rgba(11,16,24,.
|
|
124
|
+
radial-gradient(60% 50% at 50% 28%, rgba(124,196,255,.10), transparent 58%),
|
|
125
|
+
linear-gradient(180deg, rgba(11,16,24,.12), rgba(11,16,24,.42));
|
|
127
126
|
}
|
|
128
127
|
main{position:relative;z-index:2;padding-top:84px}
|
|
129
128
|
|
|
@@ -146,10 +145,10 @@ main{position:relative;z-index:2;padding-top:84px}
|
|
|
146
145
|
margin-bottom:6px;position:relative;z-index:3;
|
|
147
146
|
}
|
|
148
147
|
.hero-stage{position:relative;width:100%;display:grid;place-items:center;min-height:clamp(360px,52vh,560px)}
|
|
149
|
-
.hero-art{position:absolute;inset:0;display:grid;place-items:center;z-index:
|
|
150
|
-
#orb-
|
|
151
|
-
|
|
152
|
-
.
|
|
148
|
+
.hero-art{position:absolute;inset:0;display:grid;place-items:center;z-index:0;pointer-events:none}
|
|
149
|
+
#orb-vid{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(74vw,620px);aspect-ratio:1;object-fit:contain;opacity:0;transition:opacity 1.4s var(--ease);mix-blend-mode:screen}
|
|
150
|
+
#orb-vid.ready{opacity:.5}
|
|
151
|
+
.blender-orb .hero-orb{display:none}
|
|
153
152
|
.hero-orb{
|
|
154
153
|
width:clamp(380px,50vw,640px);aspect-ratio:1;position:relative;transform-style:preserve-3d;
|
|
155
154
|
animation:orb-slew 22s linear infinite;
|
|
@@ -178,6 +177,9 @@ main{position:relative;z-index:2;padding-top:84px}
|
|
|
178
177
|
text-shadow:0 2px 30px rgba(0,0,0,.6);
|
|
179
178
|
}
|
|
180
179
|
.home-title em{font-style:italic;color:var(--blue2)}
|
|
180
|
+
.hero-lockup{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center}
|
|
181
|
+
.hero-byline{margin-top:12px;font-family:var(--mono);font-size:10px;font-weight:500;letter-spacing:.28em;text-transform:uppercase;color:var(--blue2);position:relative;z-index:3}
|
|
182
|
+
.hero-byline:hover{color:var(--ink)}
|
|
181
183
|
.home-copy{position:relative;z-index:3;display:flex;flex-direction:column;align-items:center}
|
|
182
184
|
.home-copy p:not(.home-kicker){max-width:56ch;color:#aac0d6;font-size:16px;line-height:1.7;margin:18px 0 0;text-shadow:0 1px 20px rgba(0,0,0,.65)}
|
|
183
185
|
.home-actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:26px;align-items:center;justify-content:center}
|
|
@@ -211,7 +213,7 @@ main{position:relative;z-index:2;padding-top:84px}
|
|
|
211
213
|
max-width:18ch;margin-bottom:12px;
|
|
212
214
|
}
|
|
213
215
|
.section-title em{font-style:italic;color:var(--blue2)}
|
|
214
|
-
.section-lede{max-width:52ch;color
|
|
216
|
+
.section-lede{max-width:52ch;color:#B7CCE0;font-size:16px;line-height:1.7;margin-bottom:clamp(28px,4vw,44px)}
|
|
215
217
|
|
|
216
218
|
/* orchestration graph */
|
|
217
219
|
.graph-shell{
|
|
@@ -219,9 +221,9 @@ main{position:relative;z-index:2;padding-top:84px}
|
|
|
219
221
|
background:linear-gradient(180deg, rgba(124,196,255,.04), transparent 42%), var(--panel);
|
|
220
222
|
}
|
|
221
223
|
.graph-top{
|
|
222
|
-
display:flex;flex-wrap:wrap;justify-content:
|
|
224
|
+
display:flex;flex-wrap:wrap;justify-content:center;gap:10px;
|
|
223
225
|
padding:14px 18px;border-bottom:1px solid var(--line);
|
|
224
|
-
font-family:var(--mono);font-size:
|
|
226
|
+
font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:#88A6C2;
|
|
225
227
|
}
|
|
226
228
|
.graph-top b{color:var(--blue);font-weight:500}
|
|
227
229
|
.graph-canvas{padding:clamp(28px,4vw,40px) clamp(14px,2.5vw,24px) clamp(22px,3vw,30px);overflow:auto}
|
|
@@ -246,7 +248,7 @@ main{position:relative;z-index:2;padding-top:84px}
|
|
|
246
248
|
.route-strip{grid-template-columns:repeat(3,minmax(0,1fr))}
|
|
247
249
|
}
|
|
248
250
|
.node{
|
|
249
|
-
border:1px solid
|
|
251
|
+
border:1px solid rgba(124,196,255,.42);border-radius:14px;background:rgba(21,32,49,.92);
|
|
250
252
|
padding:14px 12px;text-align:center;
|
|
251
253
|
transition:border-color .3s,transform .3s var(--ease),box-shadow .3s;
|
|
252
254
|
}
|
|
@@ -260,11 +262,11 @@ main{position:relative;z-index:2;padding-top:84px}
|
|
|
260
262
|
display:flex;flex-direction:column;align-items:center;
|
|
261
263
|
}
|
|
262
264
|
.node.hub .orbital{width:74px;height:74px;margin:2px 0 10px;filter:drop-shadow(0 0 20px rgba(124,196,255,.35))}
|
|
263
|
-
.node .tag{font-family:var(--mono);font-size:
|
|
265
|
+
.node .tag{font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:#88A6C2;margin-bottom:8px}
|
|
264
266
|
.node.hub .tag{color:var(--blue)}
|
|
265
|
-
.node .name{font-family:var(--display);font-size:22px;line-height:1;letter-spacing:.01em;margin-bottom:6px}
|
|
267
|
+
.node .name{font-family:var(--display);font-size:22px;font-weight:500;color:#DCEAF6;line-height:1;letter-spacing:.01em;margin-bottom:6px}
|
|
266
268
|
.node.hub .name{font-size:34px;font-weight:400;font-style:italic}
|
|
267
|
-
.node .sub{font-family:var(--mono);font-size:
|
|
269
|
+
.node .sub{font-family:var(--mono);font-size:11px;letter-spacing:.05em;color:#AAC4DC;line-height:1.5}
|
|
268
270
|
.node.route{min-height:138px;display:flex;flex-direction:column;justify-content:flex-start;text-align:left;padding:14px}
|
|
269
271
|
.node.route .name{font-size:18px;margin-bottom:8px}
|
|
270
272
|
.node.route .chains{
|
|
@@ -367,7 +369,7 @@ main{position:relative;z-index:2;padding-top:84px}
|
|
|
367
369
|
.moat-card:hover{background:var(--panel-2)}
|
|
368
370
|
.moat-card .n{font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--blue)}
|
|
369
371
|
.moat-card h3{font-family:var(--display);font-weight:400;font-size:clamp(20px,2.2vw,26px)}
|
|
370
|
-
.moat-card p{color
|
|
372
|
+
.moat-card p{color:#B7CCE0;font-size:15px;line-height:1.55;max-width:44ch}
|
|
371
373
|
@media (max-width:860px){.moat-grid{grid-template-columns:1fr}}
|
|
372
374
|
.evolve-rail{
|
|
373
375
|
display:flex;flex-wrap:wrap;gap:8px;justify-content:center;
|
|
@@ -382,7 +384,7 @@ main{position:relative;z-index:2;padding-top:84px}
|
|
|
382
384
|
.wires{height:40px;position:relative}
|
|
383
385
|
.wires svg{width:100%;height:100%;display:block;overflow:visible}
|
|
384
386
|
.wires path{
|
|
385
|
-
fill:none;stroke:rgba(124,196,255,.
|
|
387
|
+
fill:none;stroke:rgba(124,196,255,.58);stroke-width:1.5;stroke-linecap:round;
|
|
386
388
|
stroke-dasharray:1;stroke-dashoffset:1;
|
|
387
389
|
transition:stroke-dashoffset 1.3s var(--ease);
|
|
388
390
|
}
|
|
@@ -411,8 +413,11 @@ main{position:relative;z-index:2;padding-top:84px}
|
|
|
411
413
|
.route-card h3{font-family:var(--display);font-weight:400;font-size:26px;display:flex;align-items:center;gap:10px}
|
|
412
414
|
.route-card h3 img{width:20px;height:20px;border-radius:50%;object-fit:cover;background:rgba(255,255,255,.06)}
|
|
413
415
|
.route-card .where{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--blue)}
|
|
414
|
-
.route-card p{color
|
|
416
|
+
.route-card p{color:#B7CCE0;font-size:15px;line-height:1.55}
|
|
415
417
|
.route-card .chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto}
|
|
418
|
+
.route-card.p-add{grid-column:1/-1;align-items:center;text-align:center;justify-content:center;gap:14px;padding:30px 22px}
|
|
419
|
+
.route-card.p-add .chips{justify-content:center;margin-top:4px}
|
|
420
|
+
.route-card.p-add p{max-width:46ch}
|
|
416
421
|
.chip-s{
|
|
417
422
|
font-family:var(--mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase;
|
|
418
423
|
border:1px solid var(--line);border-radius:999px;padding:5px 8px;color:var(--cool);
|
|
@@ -434,6 +439,16 @@ main{position:relative;z-index:2;padding-top:84px}
|
|
|
434
439
|
|
|
435
440
|
/* chains */
|
|
436
441
|
.chain-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
|
|
442
|
+
.hl-surface{margin-top:34px;border:1px solid var(--line);border-radius:14px;padding:20px;background:rgba(124,196,255,.02)}
|
|
443
|
+
.hl-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:16px}
|
|
444
|
+
.hl-grid article{border:1px solid var(--line);border-radius:10px;padding:14px 15px;background:rgba(255,255,255,.012)}
|
|
445
|
+
.hl-grid h3{font-family:var(--display);font-size:15px;font-weight:500;color:var(--ink);margin:0 0 6px}
|
|
446
|
+
.hl-grid p{font-size:14px;line-height:1.6;color:#B7CCE0;margin:0}
|
|
447
|
+
.hl-note{margin:16px 0 0;font-family:var(--mono);font-size:10.5px;letter-spacing:.04em;color:var(--cool);opacity:.62}
|
|
448
|
+
.hip3{margin-top:20px;padding-top:18px;border-top:1px solid var(--line)}
|
|
449
|
+
.hl-note code{font-family:var(--mono);color:var(--blue2);opacity:.9}
|
|
450
|
+
@media(max-width:900px){.hl-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
|
|
451
|
+
@media(max-width:620px){.hl-grid{grid-template-columns:1fr}}
|
|
437
452
|
.chain{
|
|
438
453
|
border:1px solid var(--line);border-radius:14px;padding:16px;
|
|
439
454
|
background:linear-gradient(180deg, rgba(124,196,255,.035), transparent 55%), var(--panel);
|
|
@@ -472,6 +487,7 @@ main{position:relative;z-index:2;padding-top:84px}
|
|
|
472
487
|
.chip img{width:18px;height:18px;border-radius:50%;object-fit:cover;background:rgba(255,255,255,.06)}
|
|
473
488
|
.chip.wm-chip{padding:10px 16px}
|
|
474
489
|
.chip img.wm{width:auto;height:20px;max-width:150px;border-radius:0;object-fit:contain;background:none;opacity:.92}
|
|
490
|
+
.chip img.wm.tall{height:22px;max-width:26px}
|
|
475
491
|
|
|
476
492
|
.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}
|
|
477
493
|
.proto-uniswap{--proto-font:"Inter",var(--sans);--proto-color:#ff4dcb;--proto-weight:850}
|
|
@@ -522,6 +538,8 @@ main{position:relative;z-index:2;padding-top:84px}
|
|
|
522
538
|
}
|
|
523
539
|
|
|
524
540
|
footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);padding:32px var(--pad) 40px;position:relative;z-index:2}
|
|
541
|
+
.labs-link{font-family:"UnifrakturCook","Old English Text MT","Lucida Blackletter",serif;font-size:16px;letter-spacing:.04em;text-transform:none;color:var(--blue2)}
|
|
542
|
+
.labs-link:hover{color:var(--ink)}
|
|
525
543
|
.foot-row{
|
|
526
544
|
max-width:var(--max);margin:0 auto 14px;
|
|
527
545
|
display:flex;flex-wrap:wrap;gap:14px 24px;justify-content:space-between;align-items:center;
|
|
@@ -541,9 +559,9 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
541
559
|
font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--mute);
|
|
542
560
|
}
|
|
543
561
|
|
|
544
|
-
.js .rv{opacity:0;transform:translateY(18px)
|
|
545
|
-
.js .rv.in{opacity:1;transform:none;
|
|
546
|
-
.js .rv.done{
|
|
562
|
+
.js .rv{opacity:0;transform:translateY(18px)}
|
|
563
|
+
.js .rv.in{opacity:1;transform:none;transition:opacity .9s var(--ease),transform .9s var(--ease)}
|
|
564
|
+
.js .rv.done{transform:none;will-change:auto}
|
|
547
565
|
|
|
548
566
|
@media (max-width:960px){
|
|
549
567
|
.hero-stage{min-height:clamp(300px,44vh,460px)}.home-title{font-size:clamp(80px,20vw,150px)}
|
|
@@ -602,7 +620,6 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
602
620
|
</span>
|
|
603
621
|
oracle</a>
|
|
604
622
|
<nav class="nav-links" aria-label="Primary">
|
|
605
|
-
<span class="nav-chip">13 chains · 6 bounded surfaces</span>
|
|
606
623
|
<a class="hide-sm" href="#orchestration">How it works</a>
|
|
607
624
|
<a class="hide-sm" href="#wallets">Wallets</a>
|
|
608
625
|
<a class="hide-sm" href="#chains">Chains</a>
|
|
@@ -617,7 +634,9 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
617
634
|
<div class="home-inner">
|
|
618
635
|
<div class="hero-stage">
|
|
619
636
|
<div class="hero-art" aria-hidden="true">
|
|
620
|
-
<
|
|
637
|
+
<video id="orb-vid" autoplay muted loop playsinline preload="metadata" poster="assets/hero/orb.avif">
|
|
638
|
+
<source src="assets/hero/orb.webm" type="video/webm">
|
|
639
|
+
</video>
|
|
621
640
|
<div class="hero-orb" id="hero-orb">
|
|
622
641
|
<span class="lat l1"></span><span class="lat l2"></span><span class="lat l3"></span><span class="lat l4"></span>
|
|
623
642
|
<span class="par p1"></span><span class="par p2"></span><span class="par p3"></span>
|
|
@@ -626,14 +645,16 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
626
645
|
<span class="orbit-dot"></span>
|
|
627
646
|
</div>
|
|
628
647
|
</div>
|
|
629
|
-
<
|
|
648
|
+
<div class="hero-lockup" id="hero-title">
|
|
649
|
+
<h1 class="home-title">OR<em>ACLE</em></h1>
|
|
650
|
+
<a class="hero-byline" href="https://x.com/demi_hl" target="_blank" rel="noopener noreferrer">BY DEMI</a>
|
|
651
|
+
</div>
|
|
630
652
|
</div>
|
|
631
653
|
<div class="home-copy">
|
|
632
654
|
<p class="home-kicker">self-custody agent control</p>
|
|
633
|
-
<p>One control plane for Hyperliquid, Polymarket, EVM, Bitcoin, Solana, Stable, Robinhood Chain, and new protocol builds.
|
|
655
|
+
<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>
|
|
634
656
|
<div class="home-actions">
|
|
635
657
|
<a class="enter-cta" href="#orchestration">Enter oracle</a>
|
|
636
|
-
<span class="hero-note">13 chains · 6 bounded surfaces · protocol builder</span>
|
|
637
658
|
</div>
|
|
638
659
|
</div>
|
|
639
660
|
</div>
|
|
@@ -642,13 +663,11 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
642
663
|
<section class="section" id="orchestration">
|
|
643
664
|
<p class="section-label rv">How it works</p>
|
|
644
665
|
<h2 class="section-title rv">Multi-profile. <em>Customizable.</em></h2>
|
|
645
|
-
<p class="section-lede rv">Not one bot. A mesh: Input / Command hits the oracle control plane, then fans out across venue profiles, multi-chain EVM, Bitcoin, Solana, and a protocol builder. The public plane is prepare-only. Your wallet signs.</p>
|
|
666
|
+
<p class="section-lede rv">Not one bot. A mesh with profile routing via Hermes: Input / Command hits the oracle control plane, then fans out across venue profiles, multi-chain EVM, Bitcoin, Solana, and a protocol builder. Any MCP harness can drive a single agent. The public plane is prepare-only. Your wallet signs.</p>
|
|
646
667
|
|
|
647
668
|
<div class="graph-shell rv">
|
|
648
669
|
<div class="graph-top">
|
|
649
|
-
<span>for <b>users</b></span>
|
|
650
670
|
<span>multi-profile // protocol builder // multi-chain</span>
|
|
651
|
-
<span><b>prepare-only</b> public plane</span>
|
|
652
671
|
</div>
|
|
653
672
|
|
|
654
673
|
<div class="evolve-rail">
|
|
@@ -843,6 +862,16 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
843
862
|
<span class="chip-s">best route</span>
|
|
844
863
|
</div>
|
|
845
864
|
</article>
|
|
865
|
+
<article class="route-card p-nft">
|
|
866
|
+
<div class="where">nft agent →</div>
|
|
867
|
+
<h3>Cross-chain NFTs <img src="assets/protocols/opensea.png" alt="OpenSea" loading="lazy"></h3>
|
|
868
|
+
<p>List across 22 EVM chains and Solana via OpenSea. Buy and list Ordinals through Satflow with proven PSBT provenance. Solana listings via Magic Eden. Floors, holdings and PnL are read first, then prepared for your signature.</p>
|
|
869
|
+
<div class="chips">
|
|
870
|
+
<span class="chip-s">list</span>
|
|
871
|
+
<span class="chip-s">buy</span>
|
|
872
|
+
<span class="chip-s">floor · pnl</span>
|
|
873
|
+
</div>
|
|
874
|
+
</article>
|
|
846
875
|
<article class="route-card p-stable">
|
|
847
876
|
<div class="where">stable agent →</div>
|
|
848
877
|
<h3>Stable <img src="https://icons.llamao.fi/icons/chains/rsz_stable?w=40&h=40" alt="Stable" loading="lazy"></h3>
|
|
@@ -943,11 +972,26 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
943
972
|
<h2 class="section-title rv">Where you can <em>operate.</em></h2>
|
|
944
973
|
<p class="section-lede rv">Live coverage grows with the profile mesh. Each chain maps to an agent, and new agents can join.</p>
|
|
945
974
|
<div class="chain-grid" id="chain-grid"></div>
|
|
975
|
+
<div class="hl-surface rv">
|
|
976
|
+
<div class="venues-head"><span>hyperliquid // what oracle actually does</span><span><b>prepare-only</b> · your wallet signs</span></div>
|
|
977
|
+
<div class="hl-grid">
|
|
978
|
+
<article><h3>Perps</h3><p>Asset info, order + bracket prepare, cancel, leverage and isolated-margin updates. Tick and lot sizing enforced to 5 sig figs.</p></article>
|
|
979
|
+
<article><h3>Spot & markets</h3><p>Spot meta, mids, L2 book, candles, market and coin datapoints, leaderboards.</p></article>
|
|
980
|
+
<article><h3>Staking</h3><p>Validator summaries, delegations, rewards and history. Stake deposit, withdraw and delegate prepare with a 7-day unstaking queue.</p></article>
|
|
981
|
+
<article><h3>Outcome markets</h3><p>HIP-4 outcome listing plus order and cancel prepare.</p></article>
|
|
982
|
+
<article><h3>Account state</h3><p>Clearinghouse state, open orders, user fills, positions.</p></article>
|
|
983
|
+
<article><h3>HyperEVM 999</h3><p>Token search and metadata on chain 999, routed with the EVM lane.</p></article>
|
|
984
|
+
</div>
|
|
985
|
+
</div>
|
|
946
986
|
<div class="venues rv">
|
|
947
987
|
<div class="venues-head"><span>protocols // venues</span><span><b>routed by name</b> · quotes ranked · prepare-only</span></div>
|
|
948
988
|
<div class="marquee" aria-hidden="true"><div class="track" id="proto-track-a"></div></div>
|
|
949
989
|
<div class="marquee rev" aria-hidden="true"><div class="track" id="proto-track-b"></div></div>
|
|
950
990
|
</div>
|
|
991
|
+
<div class="venues rv">
|
|
992
|
+
<div class="venues-head"><span>models // harnesses</span><span><b>bring your own model</b> · oracle is the control plane</span></div>
|
|
993
|
+
<div class="marquee" aria-hidden="true"><div class="track" id="llm-track"></div></div>
|
|
994
|
+
</div>
|
|
951
995
|
</section>
|
|
952
996
|
|
|
953
997
|
<section class="section" id="custody" style="padding-top:clamp(48px,8vh,80px)">
|
|
@@ -977,8 +1021,7 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
977
1021
|
</div>
|
|
978
1022
|
</div>
|
|
979
1023
|
<div class="foot-meta">
|
|
980
|
-
<span>oracle ·
|
|
981
|
-
<span>13 chains · six bounded surfaces · protocol builder</span>
|
|
1024
|
+
<span>oracle · <a class="labs-link" href="https://demi.la">locals only labs</a></span>
|
|
982
1025
|
<span>you sign // no house custody</span>
|
|
983
1026
|
</div>
|
|
984
1027
|
</footer>
|
|
@@ -1014,16 +1057,21 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
1014
1057
|
|
|
1015
1058
|
var WM = "assets/wordmarks/";
|
|
1016
1059
|
var PROTOS_A = [
|
|
1017
|
-
{ n: "Uniswap", wm: "uniswap.svg" },
|
|
1018
1060
|
{ n: "Hyperliquid", wm: "hyperliquid.svg" },
|
|
1061
|
+
{ n: "Outcome", wm: "outcome.svg" },
|
|
1062
|
+
{ n: "XYZ", wm: "xyz.svg" },
|
|
1063
|
+
{ n: "Markets By Kinetiq", txt: 1 },
|
|
1064
|
+
{ n: "HyENA", wm: "hyena.svg" },
|
|
1065
|
+
{ n: "Paragon", txt: 1 },
|
|
1066
|
+
{ n: "HyperSwap", wm: "hyperswap.svg" },
|
|
1067
|
+
{ n: "Uniswap", wm: "uniswap.svg" },
|
|
1019
1068
|
{ n: "Polymarket", wm: "polymarket.png" },
|
|
1020
1069
|
{ n: "Aerodrome", wm: "aerodrome.svg" },
|
|
1021
1070
|
{ n: "Velodrome", wm: "velodrome.svg" },
|
|
1022
1071
|
{ n: "PancakeSwap", wm: "pancakeswap.svg" },
|
|
1023
1072
|
{ n: "QuickSwap", wm: "quickswap.png" },
|
|
1024
|
-
{ n: "LFJ",
|
|
1025
|
-
{ n: "
|
|
1026
|
-
{ n: "Curve", c: "curve", s: "protocols/curve-dex" },
|
|
1073
|
+
{ n: "LFJ", txt: 1 },
|
|
1074
|
+
{ n: "Curve", txt: 1 },
|
|
1027
1075
|
{ n: "Balancer", wm: "balancer.svg" },
|
|
1028
1076
|
{ n: "Pendle", wm: "pendle.png" }
|
|
1029
1077
|
];
|
|
@@ -1047,14 +1095,35 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
1047
1095
|
var seq = list.concat(list);
|
|
1048
1096
|
return seq.map(function (x) {
|
|
1049
1097
|
if (x.wm) {
|
|
1050
|
-
return '<span class="chip wm-chip"><img class="wm" src="' + WM + x.wm + '" alt="' + x.n + '"
|
|
1098
|
+
return '<span class="chip wm-chip"><img class="wm" src="' + WM + x.wm + '" alt="' + x.n + '" decoding="async"></span>';
|
|
1051
1099
|
}
|
|
1052
|
-
return '<span class="chip
|
|
1100
|
+
return '<span class="chip wm-chip"><span class="wordmark">' + x.n + '</span></span>';
|
|
1053
1101
|
}).join("");
|
|
1054
1102
|
}
|
|
1055
1103
|
document.getElementById("proto-track-a").innerHTML = chipRow(PROTOS_A);
|
|
1056
1104
|
document.getElementById("proto-track-b").innerHTML = chipRow(PROTOS_B);
|
|
1057
1105
|
|
|
1106
|
+
var LM = "assets/llms/";
|
|
1107
|
+
var LLMS = [
|
|
1108
|
+
{ n: "Hermes Agent", wm: "hermes.png", tall: 1 },
|
|
1109
|
+
{ n: "Claude", wm: "claude.svg" },
|
|
1110
|
+
{ n: "Grok", wm: "grok.svg" },
|
|
1111
|
+
{ n: "Codex", wm: "codex.svg" },
|
|
1112
|
+
{ n: "Gemini", wm: "gemini.svg" },
|
|
1113
|
+
{ n: "OpenClaw", wm: "openclaw.svg", tall: 1 },
|
|
1114
|
+
{ n: "Perplexity", wm: "perplexity.svg" },
|
|
1115
|
+
{ n: "Manus", wm: "manus.svg" },
|
|
1116
|
+
{ n: "Cursor", wm: "cursor.svg" },
|
|
1117
|
+
{ n: "Windsurf", wm: "windsurf.svg" },
|
|
1118
|
+
{ n: "DeepSeek", wm: "deepseek.svg" },
|
|
1119
|
+
{ n: "Qwen", wm: "qwen.svg", tall: 1 },
|
|
1120
|
+
{ n: "Kimi", wm: "kimi.svg" }
|
|
1121
|
+
];
|
|
1122
|
+
document.getElementById("llm-track").innerHTML = LLMS.concat(LLMS).map(function (x) {
|
|
1123
|
+
var cls = x.tall ? "wm tall" : "wm";
|
|
1124
|
+
return '<span class="chip wm-chip"><img class="' + cls + '" src="' + LM + x.wm + '" alt="' + x.n + '" decoding="async">' + (x.tall ? '<span class="wordmark">' + x.n + '</span>' : '') + '</span>';
|
|
1125
|
+
}).join("");
|
|
1126
|
+
|
|
1058
1127
|
var loader = document.getElementById("loader");
|
|
1059
1128
|
var fill = document.getElementById("loader-fill");
|
|
1060
1129
|
requestAnimationFrame(function () { fill.style.width = "100%"; });
|
|
@@ -1103,104 +1172,17 @@ footer{margin-top:clamp(72px,12vh,120px);border-top:1px solid var(--line);paddin
|
|
|
1103
1172
|
}
|
|
1104
1173
|
|
|
1105
1174
|
(function () {
|
|
1106
|
-
var
|
|
1107
|
-
if (!
|
|
1108
|
-
var
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
var N = 4200;
|
|
1114
|
-
var pos = new Float32Array(N * 4);
|
|
1115
|
-
var GA = Math.PI * (3 - Math.sqrt(5));
|
|
1116
|
-
for (var i = 0; i < N; i++) {
|
|
1117
|
-
var y = 1 - (i / (N - 1)) * 2;
|
|
1118
|
-
var r = Math.sqrt(1 - y * y);
|
|
1119
|
-
var th = GA * i;
|
|
1120
|
-
pos[i * 4] = Math.cos(th) * r;
|
|
1121
|
-
pos[i * 4 + 1] = y;
|
|
1122
|
-
pos[i * 4 + 2] = Math.sin(th) * r;
|
|
1123
|
-
pos[i * 4 + 3] = (i % 97) / 97;
|
|
1124
|
-
}
|
|
1125
|
-
var vs = [
|
|
1126
|
-
"attribute vec4 p;",
|
|
1127
|
-
"uniform float t; uniform float dpr; uniform vec2 m;",
|
|
1128
|
-
"varying float vd; varying float vtw;",
|
|
1129
|
-
"void main(){",
|
|
1130
|
-
" float a = t*.22 + m.x*.35;",
|
|
1131
|
-
" float ca=cos(a), sa=sin(a);",
|
|
1132
|
-
" vec3 q = vec3(p.x*ca + p.z*sa, p.y, -p.x*sa + p.z*ca);",
|
|
1133
|
-
" float b = .42 + m.y*.22;",
|
|
1134
|
-
" float cb=cos(b), sb=sin(b);",
|
|
1135
|
-
" q = vec3(q.x, q.y*cb - q.z*sb, q.y*sb + q.z*cb);",
|
|
1136
|
-
" float persp = 2.2/(2.2 - q.z*.9);",
|
|
1137
|
-
" vd = q.z*.5+.5;",
|
|
1138
|
-
" vtw = p.w;",
|
|
1139
|
-
" gl_Position = vec4(q.x*.58*persp, q.y*.58*persp, 0., 1.);",
|
|
1140
|
-
" gl_PointSize = (1.8 + vd*4.2) * dpr;",
|
|
1141
|
-
"}"
|
|
1142
|
-
].join("\n");
|
|
1143
|
-
var fs = [
|
|
1144
|
-
"precision mediump float;",
|
|
1145
|
-
"uniform float t;",
|
|
1146
|
-
"varying float vd; varying float vtw;",
|
|
1147
|
-
"void main(){",
|
|
1148
|
-
" vec2 c = gl_PointCoord - .5;",
|
|
1149
|
-
" float d = length(c);",
|
|
1150
|
-
" if (d > .5) discard;",
|
|
1151
|
-
" float soft = smoothstep(.5, .28, d);",
|
|
1152
|
-
" float tw = .82 + .18*sin(t*2.2 + vtw*40.0);",
|
|
1153
|
-
" vec3 near = vec3(.86,.95,1.0);",
|
|
1154
|
-
" vec3 far = vec3(.24,.44,.68);",
|
|
1155
|
-
" vec3 col = mix(far, near, vd);",
|
|
1156
|
-
" float alpha = soft * mix(.2, 1.0, vd*vd) * tw;",
|
|
1157
|
-
" gl_FragColor = vec4(col*alpha, alpha);",
|
|
1158
|
-
"}"
|
|
1159
|
-
].join("\n");
|
|
1160
|
-
function sh(ty, src) { var s = g.createShader(ty); g.shaderSource(s, src); g.compileShader(s); return s; }
|
|
1161
|
-
var pr = g.createProgram();
|
|
1162
|
-
g.attachShader(pr, sh(g.VERTEX_SHADER, vs));
|
|
1163
|
-
g.attachShader(pr, sh(g.FRAGMENT_SHADER, fs));
|
|
1164
|
-
g.linkProgram(pr); g.useProgram(pr);
|
|
1165
|
-
var buf = g.createBuffer();
|
|
1166
|
-
g.bindBuffer(g.ARRAY_BUFFER, buf);
|
|
1167
|
-
g.bufferData(g.ARRAY_BUFFER, pos, g.STATIC_DRAW);
|
|
1168
|
-
var loc = g.getAttribLocation(pr, "p");
|
|
1169
|
-
g.enableVertexAttribArray(loc);
|
|
1170
|
-
g.vertexAttribPointer(loc, 4, g.FLOAT, false, 0, 0);
|
|
1171
|
-
var uT = g.getUniformLocation(pr, "t");
|
|
1172
|
-
var uD = g.getUniformLocation(pr, "dpr");
|
|
1173
|
-
var uM = g.getUniformLocation(pr, "m");
|
|
1174
|
-
var mx = 0, my = 0, tx = 0, ty = 0;
|
|
1175
|
-
window.addEventListener("pointermove", function (e) {
|
|
1176
|
-
tx = (e.clientX / window.innerWidth - .5) * 2;
|
|
1177
|
-
ty = (e.clientY / window.innerHeight - .5) * 2;
|
|
1178
|
-
}, { passive: true });
|
|
1179
|
-
g.enable(g.BLEND);
|
|
1180
|
-
g.blendFunc(g.ONE, g.ONE_MINUS_SRC_ALPHA);
|
|
1181
|
-
var dpr = Math.min(window.devicePixelRatio || 1, 2);
|
|
1182
|
-
function size() {
|
|
1183
|
-
var w = Math.floor(cv.clientWidth * dpr), h = Math.floor(cv.clientHeight * dpr);
|
|
1184
|
-
if (cv.width !== w || cv.height !== h) { cv.width = w; cv.height = h; g.viewport(0, 0, w, h); }
|
|
1185
|
-
}
|
|
1186
|
-
var run = true;
|
|
1187
|
-
function frame(now) {
|
|
1188
|
-
if (!run) return;
|
|
1189
|
-
size();
|
|
1190
|
-
g.clearColor(0, 0, 0, 0);
|
|
1191
|
-
g.clear(g.COLOR_BUFFER_BIT);
|
|
1192
|
-
mx += (tx - mx) * .04; my += (ty - my) * .04;
|
|
1193
|
-
g.uniform1f(uT, now * .001);
|
|
1194
|
-
g.uniform1f(uD, dpr);
|
|
1195
|
-
g.uniform2f(uM, mx, my);
|
|
1196
|
-
g.drawArrays(g.POINTS, 0, N);
|
|
1197
|
-
requestAnimationFrame(frame);
|
|
1198
|
-
}
|
|
1175
|
+
var v = document.getElementById("orb-vid");
|
|
1176
|
+
if (!v) return;
|
|
1177
|
+
var art = document.querySelector(".hero-art");
|
|
1178
|
+
function ready() { art.classList.add("blender-orb"); v.classList.add("ready"); }
|
|
1179
|
+
if (v.readyState >= 2) ready();
|
|
1180
|
+
v.addEventListener("loadeddata", ready, { once: true });
|
|
1181
|
+
if (reduced) { v.removeAttribute("autoplay"); v.pause(); ready(); return; }
|
|
1199
1182
|
document.addEventListener("visibilitychange", function () {
|
|
1200
|
-
|
|
1201
|
-
|
|
1183
|
+
if (document.visibilityState === "visible") { var q = v.play(); if (q && q.catch) q.catch(function () {}); }
|
|
1184
|
+
else v.pause();
|
|
1202
1185
|
});
|
|
1203
|
-
requestAnimationFrame(frame);
|
|
1204
1186
|
})();
|
|
1205
1187
|
|
|
1206
1188
|
var nodes = Array.prototype.slice.call(document.querySelectorAll(".rv, .wires"));
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: oracle-chat
|
|
3
|
+
description: "Use when opening the one oracle chat surface, selecting chains with /chain, or configuring messaging with /setup."
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# oracle chat surface
|
|
8
|
+
|
|
9
|
+
You are **oracle** — one lowercase persona. Models can change underneath via `/model`. Branding stays oracle.
|
|
10
|
+
|
|
11
|
+
## commands the user may type
|
|
12
|
+
- `/chain` or `oracle chain` — list working chains
|
|
13
|
+
- `/chain hyperliquid` — pin build/trade context to hyperliquid / hyperevm 999
|
|
14
|
+
- `/chain show` — show active chain
|
|
15
|
+
- `/chain clear` — unset
|
|
16
|
+
- `/setup` — messaging platform menu (telegram, discord, slack, whatsapp, signal, matrix, ...)
|
|
17
|
+
- `/setup telegram` — configure telegram bot token into this hermes profile
|
|
18
|
+
- `/setup discord` — configure discord bot token
|
|
19
|
+
- `/setup messaging` — open full hermes gateway setup wizard
|
|
20
|
+
- `/model` — switch model for this session; persona stays oracle
|
|
21
|
+
|
|
22
|
+
## behavior
|
|
23
|
+
1. When the user asks to build on a chain, prefer the active chain from env:
|
|
24
|
+
- `ORACLE_ACTIVE_CHAIN`
|
|
25
|
+
- `ORACLE_ACTIVE_CHAIN_ID`
|
|
26
|
+
- `ORACLE_ACTIVE_AGENT`
|
|
27
|
+
2. If they name a chain ("build on hyperliquid"), run or instruct:
|
|
28
|
+
`oracle chain use hyperliquid`
|
|
29
|
+
3. Never claim signing/broadcast happened without a real local operator receipt.
|
|
30
|
+
4. Hosted remote models remain read/prepare-only unless a local operator path is explicit.
|
|
31
|
+
5. Keep replies lowercase-friendly and terse. No glaze.
|
|
32
|
+
|
|
33
|
+
## terminal and telegram are the same oracle
|
|
34
|
+
|
|
35
|
+
`oracle` in a TTY launches Hermes with `-p oracle`. Telegram is wired to that
|
|
36
|
+
same profile. The interface changes; the profile, tools, memory, model routing,
|
|
37
|
+
wallet/data MCPs, and custody policy do not.
|
|
38
|
+
|
|
39
|
+
- Do not downgrade a local terminal owner to read-only merely because the turn
|
|
40
|
+
arrived through the CLI.
|
|
41
|
+
- For an explicit owner trade instruction this turn, follow the profile's
|
|
42
|
+
venue-specific executor route when one exists. Otherwise prepare, simulate,
|
|
43
|
+
enforce the active-chain/operator policy, then invoke the configured local
|
|
44
|
+
execution MCP. The signer/operator remains authoritative.
|
|
45
|
+
- If confirmation is not explicit, show the exact action and wait for it.
|
|
46
|
+
- `arm` is a chat action for one exact intent and TTL. Never tell the owner to
|
|
47
|
+
flip an execution environment variable.
|
|
48
|
+
- A tool refusal is a real policy wall. Report the exact refusal instead of
|
|
49
|
+
bypassing it.
|
|
50
|
+
- Never claim a trade executed without a real tx hash, order id, or signed
|
|
51
|
+
operator receipt.
|
|
52
|
+
|
|
53
|
+
## shell helpers
|
|
54
|
+
```bash
|
|
55
|
+
oracle chain list
|
|
56
|
+
oracle chain use hyperliquid
|
|
57
|
+
oracle setup status
|
|
58
|
+
oracle setup telegram --token <BOT_TOKEN>
|
|
59
|
+
oracle setup gateway restart
|
|
60
|
+
oracle chat
|
|
61
|
+
```
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: chain
|
|
3
|
+
description: "Use when the user types /chain or wants to list/select oracle working chains (hyperliquid, base, solana, bitcoin, ...)."
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
disable-model-invocation: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# /chain
|
|
9
|
+
|
|
10
|
+
Run the local oracle chain selector. Do not invent chains.
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
# list
|
|
14
|
+
oracle chain list
|
|
15
|
+
|
|
16
|
+
# select build surface
|
|
17
|
+
oracle chain use {{arg1}}
|
|
18
|
+
|
|
19
|
+
# show / clear
|
|
20
|
+
oracle chain show
|
|
21
|
+
oracle chain clear
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
If `{{arg1}}` is empty, run `oracle chain list`.
|
|
25
|
+
If `{{arg1}}` is `show`, `status`, `clear`, `list`, or a chain key, pass it through:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
oracle chain {{arg1}} {{arg2}}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
After selection, confirm active chain key + id + agent in lowercase.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: setup
|
|
3
|
+
description: "Use when the user types /setup or wants to connect telegram, discord, slack, or other hermes messaging platforms to oracle."
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
disable-model-invocation: true
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# /setup
|
|
9
|
+
|
|
10
|
+
Configure hermes messaging for the oracle profile. Secrets stay local.
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
# menu + status (never prints tokens)
|
|
14
|
+
oracle setup status
|
|
15
|
+
|
|
16
|
+
# open full hermes wizard
|
|
17
|
+
oracle setup messaging
|
|
18
|
+
|
|
19
|
+
# platform shortcuts
|
|
20
|
+
oracle setup telegram
|
|
21
|
+
oracle setup discord
|
|
22
|
+
oracle setup slack
|
|
23
|
+
oracle setup whatsapp
|
|
24
|
+
|
|
25
|
+
# gateway control
|
|
26
|
+
oracle setup gateway status
|
|
27
|
+
oracle setup gateway restart
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
If the user passed args after `/setup`, forward them:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
oracle setup {{arg1}} {{arg2}} {{arg3}}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
If no args, show `oracle setup status`.
|
|
37
|
+
Never echo bot tokens, app tokens, or passwords back into chat.
|