feat: Sovereign Nexus v1.1 — Domain Alignment & Health HUD #841
26
app.js
26
app.js
@@ -1121,8 +1121,8 @@ function createTerminalPanel(parent, x, y, rot, title, color, lines) {
|
|||||||
async function fetchGiteaData() {
|
async function fetchGiteaData() {
|
||||||
try {
|
try {
|
||||||
const [issuesRes, stateRes] = await Promise.all([
|
const [issuesRes, stateRes] = await Promise.all([
|
||||||
fetch('/api/gitea/repos/admin/timmy-tower/issues?state=all'),
|
fetch('https://forge.alexanderwhitestone.com/api/v1/repos/Timmy_Foundation/the-nexus/issues?state=all&limit=20'),
|
||||||
fetch('/api/gitea/repos/admin/timmy-tower/contents/world_state.json')
|
fetch('https://forge.alexanderwhitestone.com/api/v1/repos/Timmy_Foundation/the-nexus/contents/vision.json')
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if (issuesRes.ok) {
|
if (issuesRes.ok) {
|
||||||
@@ -1135,6 +1135,7 @@ async function fetchGiteaData() {
|
|||||||
const content = await stateRes.json();
|
const content = await stateRes.json();
|
||||||
const worldState = JSON.parse(atob(content.content));
|
const worldState = JSON.parse(atob(content.content));
|
||||||
updateNexusCommand(worldState);
|
updateNexusCommand(worldState);
|
||||||
|
updateSovereignHealth();
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error('Failed to fetch Gitea data:', e);
|
console.error('Failed to fetch Gitea data:', e);
|
||||||
@@ -1167,6 +1168,27 @@ function updateDevQueue(issues) {
|
|||||||
terminal.updatePanelText(lines);
|
terminal.updatePanelText(lines);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function updateSovereignHealth() {
|
||||||
|
const container = document.getElementById('sovereign-health-content');
|
||||||
|
if (!container) return;
|
||||||
|
|
||||||
|
const services = [
|
||||||
|
{ name: 'FORGE / GITEA', url: 'https://forge.alexanderwhitestone.com', status: 'ONLINE' },
|
||||||
|
{ name: 'NEXUS CORE', url: 'https://forge.alexanderwhitestone.com/Timmy_Foundation/the-nexus', status: 'ONLINE' },
|
||||||
|
{ name: 'HERMES WS', url: 'ws://143.198.27.163:8765', status: wsConnected ? 'ONLINE' : 'OFFLINE' },
|
||||||
|
{ name: 'SIDE CAR', url: 'http://127.0.0.1:18789', status: 'LOCAL-ONLY' }
|
||||||
|
];
|
||||||
|
|
||||||
|
container.innerHTML = '';
|
||||||
|
services.forEach(s => {
|
||||||
|
const div = document.createElement('div');
|
||||||
|
div.className = 'meta-stat';
|
||||||
|
div.innerHTML = `<span>${s.name}</span> <span class="${s.status === 'ONLINE' ? 'pse-status' : 'l402-status'}">${s.status}</span>`;
|
||||||
|
container.appendChild(div);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function updateNexusCommand(state) {
|
function updateNexusCommand(state) {
|
||||||
const terminal = batcaveTerminals.find(t => t.title === 'NEXUS COMMAND');
|
const terminal = batcaveTerminals.find(t => t.title === 'NEXUS COMMAND');
|
||||||
if (!terminal) return;
|
if (!terminal) return;
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@300;400;500;600;700&family=Orbitron:wght@400;500;600;700;800;900&display=swap" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@300;400;500;600;700&family=Orbitron:wght@400;500;600;700;800;900&display=swap" rel="stylesheet">
|
||||||
<link rel="stylesheet" href="./style.css">
|
<link rel="stylesheet" href="./style.css">
|
||||||
|
<link rel="manifest" href="./manifest.json">
|
||||||
<script type="importmap">
|
<script type="importmap">
|
||||||
{
|
{
|
||||||
"imports": {
|
"imports": {
|
||||||
@@ -91,6 +92,10 @@
|
|||||||
<div class="panel-header">META-REASONING</div>
|
<div class="panel-header">META-REASONING</div>
|
||||||
<div id="meta-log-content" class="panel-content"></div>
|
<div id="meta-log-content" class="panel-content"></div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="hud-panel" id="sovereign-health-log">
|
||||||
|
<div class="panel-header">SOVEREIGN HEALTH</div>
|
||||||
|
<div id="sovereign-health-content" class="panel-content"></div>
|
||||||
|
</div>
|
||||||
<div class="hud-panel" id="calibrator-log">
|
<div class="hud-panel" id="calibrator-log">
|
||||||
<div class="panel-header">ADAPTIVE CALIBRATOR</div>
|
<div class="panel-header">ADAPTIVE CALIBRATOR</div>
|
||||||
<div id="calibrator-log-content" class="panel-content"></div>
|
<div id="calibrator-log-content" class="panel-content"></div>
|
||||||
@@ -255,7 +260,7 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
(function() {
|
(function() {
|
||||||
const GITEA = 'http://143.198.27.163:3000/api/v1';
|
const GITEA = 'https://forge.alexanderwhitestone.com/api/v1';
|
||||||
const REPO = 'Timmy_Foundation/the-nexus';
|
const REPO = 'Timmy_Foundation/the-nexus';
|
||||||
const BRANCH = 'main';
|
const BRANCH = 'main';
|
||||||
const INTERVAL = 30000; // poll every 30s
|
const INTERVAL = 30000; // poll every 30s
|
||||||
|
|||||||
16
manifest.json
Normal file
16
manifest.json
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"name": "The Nexus — Timmy's Sovereign Home",
|
||||||
|
"short_name": "The Nexus",
|
||||||
|
"description": "A sovereign 3D world for Timmy, the local-first AI agent.",
|
||||||
|
"start_url": "/",
|
||||||
|
"display": "standalone",
|
||||||
|
"background_color": "#050510",
|
||||||
|
"theme_color": "#4af0c0",
|
||||||
|
"icons": [
|
||||||
|
{
|
||||||
|
"src": "/favicon.ico",
|
||||||
|
"sizes": "64x64",
|
||||||
|
"type": "image/x-icon"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
8
robots.txt
Normal file
8
robots.txt
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
User-agent: *
|
||||||
|
Allow: /
|
||||||
|
Disallow: /api/
|
||||||
|
Disallow: /admin/
|
||||||
|
Disallow: /user/
|
||||||
|
Disallow: /explore/
|
||||||
|
|
||||||
|
Sitemap: https://forge.alexanderwhitestone.com/sitemap.xml
|
||||||
Reference in New Issue
Block a user