140 lines
6.6 KiB
Markdown
140 lines
6.6 KiB
Markdown
# AP3X Fusion — ecosystem hub
|
|
|
|
The public ecosystem site for Apex Fusion, served at
|
|
**https://apex-fusion.odyssey-works.io**.
|
|
|
|
## What this is
|
|
|
|
A single self-unpacking `index.html` (~2.1 MB) — React and all assets are
|
|
bundled inside it. Sections: ecosystem overview, the Vector edge, tri-chain
|
|
architecture, AP3X across ecosystems, markets, stack map, HAL 8, agent stack,
|
|
news, wallets, bridges, dapps, explorers, staking, developers, exchanges.
|
|
|
|
## Agent Stack section
|
|
|
|
"The AI Agent Economy Stack" (HAL 8's capability, economic and trust planes,
|
|
architecture stack, standards and ecosystem) is a section of the hub: nav entry
|
|
**Agent Stack** right below HAL 8, section id `agents`, component
|
|
`AgentStackSection`. Its markup lives in the bundle as the `AES_HTML` string
|
|
with every logo embedded inline as SVG, and its styles sit in the last
|
|
`<style>` block with all class names namespaced `aes-` so they cannot collide
|
|
with the hub's own. The same content is also kept as a standalone page,
|
|
`agent-economy-stack.html`, served at `/agent-economy-stack.html`; edit that
|
|
file and refold it rather than editing the section by hand. Third-party marks
|
|
are the owners' official files.
|
|
|
|
## Apex Universe section
|
|
|
|
"Apex Universe" (menu entry right below Overview, section id `universe`,
|
|
component `UniverseSection`) is the ecosystem as a star system drawn from
|
|
public data. AP3X is the star, with a corona of the nine public allocations.
|
|
PRIME, Vector and Nexus are its worlds. The stake pools form PRIME's asteroid
|
|
belt, and the staking reserve is a moon filled to what is left. Agents fly as
|
|
a fleet round Vector with the HAL 8 mothership. The bridges are jump gates,
|
|
Cardano, Base and BNB Chain are distant worlds, the partners are beacons on
|
|
the outer belt, and comets carry value home.
|
|
|
|
- The markup (`AU_HTML`) and the component live in the bundle between
|
|
`/*AU-BEGIN*/` and `/*AU-END*/`. The styles are in the `<style>` block marked
|
|
`au-css-begin`, with every class namespaced `au-`.
|
|
- `universe/` holds everything else:
|
|
- `universe.js`, the three.js sandbox, which the component loads on demand
|
|
through the page's import map;
|
|
- `data.json`, the figures;
|
|
- the Blender film (`apex-universe.mp4`) and its `poster.jpg`;
|
|
- the Blender chapter frames and the sky panorama;
|
|
- the baked world textures;
|
|
- the logos.
|
|
- **Figures refresh daily.** A cron job on the desk host (trading-bot)
|
|
publishes the desk's public ecosystem snapshot to `universe/data.json`
|
|
through the Gitea API. It commits only when the figures have changed, and
|
|
that commit is the deploy.
|
|
- **Sources:** the build script, sandbox module and Blender scene live in
|
|
`jerry/exec-engine` under `docs/pages/ecosystem/universe/`. Rebuild with
|
|
`build_site.py`, which replaces the injected block rather than duplicating it.
|
|
|
|
## How it is served
|
|
|
|
Caddy on the HAL 8 host serves this directory as a static site. The box
|
|
pulls this repository; there is no build step and nothing to compile —
|
|
committing to `main` is the deploy.
|
|
|
|
Because the site is public and carries no secrets, this repository is
|
|
public too, so the host clones it without credentials.
|
|
|
|
## External dependencies
|
|
|
|
Two things are fetched at runtime rather than bundled:
|
|
|
|
- **three.js** `0.160.0` from `cdn.jsdelivr.net` — powers the Fusion
|
|
Chamber 3D visual (§12). If the CDN is unreachable that section
|
|
degrades; the rest of the page is unaffected.
|
|
- **Fusion AI**, the assistant widget: `fusion/fusion.js`, loaded on
|
|
demand. It posts to HAL 8's public route (see the note below), and its
|
|
Python **Run** button loads Pyodide from `cdn.jsdelivr.net` on first use.
|
|
|
|
## Fusion AI (powered by HAL 8)
|
|
|
|
The red-eye button in the bottom-right is Fusion AI. The page holds no key.
|
|
It posts to `https://hal8.odyssey-works.io/v1/public/fusion/chat`, and
|
|
`window.FUSION_AI_ENDPOINT` overrides that for testing. The route runs
|
|
HAL 8's headless pipeline under its own capped account: $1 a day for
|
|
everyone, and per visitor 40 messages, 6 images and 1 video a day. Its full
|
|
contract is `docs/FUSION.md` in the HAL 8 repository.
|
|
|
|
- **Standard | Incognito** is the only control.
|
|
- Standard is `hal8-auto`; the conversation is kept in this browser only.
|
|
- Incognito is a Venice private model; nothing is kept, and generated
|
|
media is deleted after a day.
|
|
- Chat, code, web search, images, video and voice are always on.
|
|
- Python code blocks run in the visitor's browser.
|
|
|
|
The widget is `fusion/fusion.js` and `fusion/fusion.css`. After editing
|
|
either, run `python3 tools/fusion_inject.py`: it inlines the CSS and
|
|
re-stamps the module version inside `index.html`, and re-running it
|
|
replaces rather than duplicates.
|
|
|
|
## Markets section — live feeds
|
|
|
|
Every number on the Markets page is fetched by the visitor's browser, so
|
|
only CORS-open sources can be called directly. Two are not, and the site
|
|
origin proxies them (Caddy, `deploy/Caddyfile` in the HAL 8 repo):
|
|
|
|
| Path on this origin | Upstream | Used for |
|
|
|---------------------|---------------------|-------------------------------------------------|
|
|
| `/api/koios/*` | `api.koios.rest` | VyFi pool reserves, cstAP3X vault + supply, Minswap V2 pool datum |
|
|
| `/api/lbank/*` | `api.lbkex.com` | AP3X/USDT ticker, depth, last trade |
|
|
|
|
Direct (CORS-open): CoinGecko, DexScreener, the Minswap aggregator
|
|
(`agg-api.minswap.org`, rate-limited to roughly five calls a minute per IP,
|
|
so the page makes one), Base JSON-RPC (`base-rpc.publicnode.com`; the two
|
|
Uniswap V3 pools and the Aerodrome cbADA pool are read from the chain
|
|
because DexScreener does not index them), ApexScan v1 on Nexus (USDC.e),
|
|
the Vector Koios instance, the Prime explorer, OSAM. DexHunter is the
|
|
fallback for Cardano reserves when Koios is down.
|
|
|
|
Fast feeds refresh every 90 s; the quota'd ones (Koios, LBank, Base RPC,
|
|
ApexScan) every third tick. Polling pauses in hidden tabs.
|
|
|
|
The page's own Cardano truth is a staking receipt, not a fourth asset:
|
|
`cstAP3X` is worth `vault cAP3X / cstAP3X issued` cAP3X each (about 1.07),
|
|
so it trades above cAP3X by design.
|
|
|
|
## Updating
|
|
|
|
Edit `index.html`, commit to `main`, and the host picks it up on its next
|
|
deploy tick (every five minutes). No build, no bundler, no CI.
|
|
|
|
The page is stored inside `index.html` as a JSON-encoded template that the
|
|
bundler unpacks at load time, so do not edit the escaped text by hand.
|
|
`tools/bundle.py` decodes it to a plain HTML file and re-encodes it
|
|
byte-exactly:
|
|
|
|
```
|
|
python3 tools/bundle.py decode index.html page.html # edit page.html
|
|
python3 tools/bundle.py encode index.html page.html index.html
|
|
```
|
|
|
|
The Markets code lives in `page.html` between `const MK_CG` and
|
|
`const SECTION_COMPONENTS`.
|