ghourmetto commited on
Commit
57ed20b
Β·
verified Β·
1 Parent(s): 342f915

Upload folder using huggingface_hub

Browse files
Files changed (1) hide show
  1. index.html +751 -19
index.html CHANGED
@@ -1,19 +1,751 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Sovereign-AI v1.0 // System Builder</title>
7
+ <style>
8
+ :root {
9
+ --bg-color: #0a0a0a;
10
+ --panel-bg: #111111;
11
+ --text-primary: #e0e0e0;
12
+ --text-secondary: #a0a0a0;
13
+ --accent-color: #00ff9d; /* Terminal Green */
14
+ --accent-dim: #005f3b;
15
+ --alert-color: #ff4d4d;
16
+ --info-color: #00ccff;
17
+ --border-color: #333;
18
+ --font-mono: 'Courier New', Courier, monospace;
19
+ --font-sans: system-ui, -apple-system, sans-serif;
20
+ }
21
+
22
+ * { box-sizing: border-box; margin: 0; padding: 0; }
23
+
24
+ body {
25
+ background-color: var(--bg-color);
26
+ color: var(--text-primary);
27
+ font-family: var(--font-sans);
28
+ height: 100vh;
29
+ display: flex;
30
+ flex-direction: column;
31
+ overflow: hidden;
32
+ }
33
+
34
+ /* --- Header --- */
35
+ header {
36
+ background: var(--panel-bg);
37
+ border-bottom: 1px solid var(--border-color);
38
+ padding: 1rem;
39
+ display: flex;
40
+ justify-content: space-between;
41
+ align-items: center;
42
+ box-shadow: 0 2px 10px rgba(0,0,0,0.5);
43
+ z-index: 100;
44
+ }
45
+
46
+ .brand {
47
+ display: flex;
48
+ align-items: center;
49
+ gap: 10px;
50
+ font-weight: 700;
51
+ font-size: 1.2rem;
52
+ }
53
+
54
+ .brand-icon {
55
+ width: 30px;
56
+ height: 30px;
57
+ background: var(--accent-color);
58
+ color: var(--bg-color);
59
+ display: flex;
60
+ align-items: center;
61
+ justify-content: center;
62
+ border-radius: 4px;
63
+ font-family: var(--font-mono);
64
+ font-weight: bold;
65
+ }
66
+
67
+ .status-badge {
68
+ font-size: 0.8rem;
69
+ padding: 4px 8px;
70
+ border-radius: 12px;
71
+ background: var(--accent-dim);
72
+ color: var(--accent-color);
73
+ border: 1px solid var(--accent-color);
74
+ transition: all 0.3s ease;
75
+ }
76
+
77
+ .status-badge.offline {
78
+ background: var(--alert-color);
79
+ border-color: var(--alert-color);
80
+ color: white;
81
+ animation: pulse 2s infinite;
82
+ }
83
+
84
+ .nav-links {
85
+ display: flex;
86
+ gap: 15px;
87
+ font-size: 0.9rem;
88
+ }
89
+
90
+ .nav-links a {
91
+ color: var(--text-secondary);
92
+ text-decoration: none;
93
+ transition: color 0.2s;
94
+ }
95
+
96
+ .nav-links a:hover { color: var(--accent-color); }
97
+
98
+ .anycoder-link {
99
+ font-size: 0.8rem;
100
+ color: #666;
101
+ text-decoration: none;
102
+ }
103
+ .anycoder-link:hover { color: var(--text-primary); text-decoration: underline; }
104
+
105
+ /* --- Main Layout --- */
106
+ main {
107
+ display: grid;
108
+ grid-template-columns: 350px 1fr;
109
+ flex: 1;
110
+ overflow: hidden;
111
+ }
112
+
113
+ /* --- Sidebar (Config & Stats) --- */
114
+ aside {
115
+ background: var(--panel-bg);
116
+ border-right: 1px solid var(--border-color);
117
+ padding: 20px;
118
+ display: flex;
119
+ flex-direction: column;
120
+ gap: 25px;
121
+ overflow-y: auto;
122
+ }
123
+
124
+ h2 { font-size: 1.1rem; margin-bottom: 10px; color: var(--accent-color); border-bottom: 1px solid var(--border-color); padding-bottom: 5px; }
125
+ h3 { font-size: 0.95rem; margin: 15px 0 5px 0; color: var(--text-primary); }
126
+
127
+ .control-group {
128
+ background: rgba(255,255,255,0.03);
129
+ padding: 15px;
130
+ border-radius: 8px;
131
+ border: 1px solid var(--border-color);
132
+ }
133
+
134
+ .btn {
135
+ width: 100%;
136
+ padding: 12px;
137
+ background: var(--accent-color);
138
+ color: var(--bg-color);
139
+ border: none;
140
+ border-radius: 6px;
141
+ font-weight: bold;
142
+ cursor: pointer;
143
+ transition: all 0.2s;
144
+ font-family: var(--font-mono);
145
+ text-transform: uppercase;
146
+ letter-spacing: 1px;
147
+ }
148
+
149
+ .btn:hover { background: #00cc7d; box-shadow: 0 0 15px rgba(0, 255, 157, 0.3); }
150
+ .btn:disabled { background: #333; color: #666; cursor: not-allowed; box-shadow: none; }
151
+ .btn-danger { background: var(--alert-color); color: white; margin-top: 10px; }
152
+ .btn-danger:hover { background: #cc0000; box-shadow: 0 0 15px rgba(255, 77, 77, 0.3); }
153
+
154
+ .stat-row {
155
+ display: flex;
156
+ justify-content: space-between;
157
+ margin-bottom: 8px;
158
+ font-family: var(--font-mono);
159
+ font-size: 0.9rem;
160
+ }
161
+ .stat-val { color: var(--accent-color); }
162
+
163
+ /* Network Graph Canvas */
164
+ #networkCanvas {
165
+ width: 100%;
166
+ height: 150px;
167
+ background: #000;
168
+ border-radius: 4px;
169
+ border: 1px solid #333;
170
+ }
171
+
172
+ /* --- Terminal Area --- */
173
+ section {
174
+ display: flex;
175
+ flex-direction: column;
176
+ background: #000;
177
+ position: relative;
178
+ }
179
+
180
+ .terminal-header {
181
+ background: #1a1a1a;
182
+ padding: 8px 15px;
183
+ display: flex;
184
+ gap: 8px;
185
+ border-bottom: 1px solid var(--border-color);
186
+ }
187
+
188
+ .dot { width: 12px; height: 12px; border-radius: 50%; }
189
+ .dot.red { background: #ff5f56; }
190
+ .dot.yellow { background: #ffbd2e; }
191
+ .dot.green { background: #27c93f; }
192
+
193
+ .terminal-window {
194
+ flex: 1;
195
+ padding: 20px;
196
+ font-family: var(--font-mono);
197
+ font-size: 0.95rem;
198
+ line-height: 1.5;
199
+ overflow-y: auto;
200
+ color: #d4d4d4;
201
+ scroll-behavior: smooth;
202
+ }
203
+
204
+ .log-entry { margin-bottom: 6px; opacity: 0; animation: fadeIn 0.3s forwards; }
205
+ .log-header { color: var(--accent-color); font-weight: bold; margin-top: 20px; border-bottom: 1px dashed #333; padding-bottom: 5px; }
206
+ .log-step { color: var(--info-color); font-weight: 600; }
207
+ .log-success { color: var(--accent-color); }
208
+ .log-warn { color: var(--alert-color); }
209
+ .log-sys { color: #666; font-size: 0.85rem; }
210
+ .log-cert {
211
+ border: 2px solid var(--accent-color);
212
+ padding: 15px;
213
+ margin: 10px 0;
214
+ background: rgba(0, 255, 157, 0.05);
215
+ color: var(--text-primary);
216
+ font-family: var(--font-sans);
217
+ }
218
+
219
+ /* --- Knowledge Base Modal/Overlay (Simulated) --- */
220
+ .knowledge-grid {
221
+ display: grid;
222
+ grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
223
+ gap: 10px;
224
+ margin-top: 10px;
225
+ }
226
+ .kb-card {
227
+ background: #111;
228
+ border: 1px solid #333;
229
+ padding: 10px;
230
+ border-radius: 4px;
231
+ font-size: 0.8rem;
232
+ }
233
+ .kb-card h4 { color: var(--accent-color); margin-bottom: 5px; font-size: 0.9rem; }
234
+
235
+ /* Animations */
236
+ @keyframes fadeIn { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: translateY(0); } }
237
+ @keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(255, 77, 77, 0.7); } 70% { box-shadow: 0 0 0 10px rgba(255, 77, 77, 0); } 100% { box-shadow: 0 0 0 0 rgba(255, 77, 77, 0); } }
238
+
239
+ /* Responsive */
240
+ @media (max-width: 768px) {
241
+ main { grid-template-columns: 1fr; }
242
+ aside { display: none; /* Hide sidebar on mobile for simplicity in this demo */ }
243
+ }
244
+
245
+ /* Scrollbar */
246
+ ::-webkit-scrollbar { width: 8px; }
247
+ ::-webkit-scrollbar-track { background: #0a0a0a; }
248
+ ::-webkit-scrollbar-thumb { background: #333; border-radius: 4px; }
249
+ ::-webkit-scrollbar-thumb:hover { background: #555; }
250
+
251
+ </style>
252
+ </head>
253
+ <body>
254
+
255
+ <header>
256
+ <div class="brand">
257
+ <div class="brand-icon">SA</div>
258
+ <div>
259
+ <div>SOVEREIGN-AI v1.0</div>
260
+ <div style="font-size: 0.75rem; color: #666;">Build System // Transparent Network Monitoring</div>
261
+ </div>
262
+ </div>
263
+ <div style="display: flex; align-items: center; gap: 15px;">
264
+ <div id="systemStatus" class="status-badge">NETWORK ACTIVE (BUILD PHASE)</div>
265
+ <nav class="nav-links">
266
+ <a href="#" onclick="alert('Genix Memory: Local Context Database')">Genix</a>
267
+ <a href="#" onclick="alert('Knowledge Core: Offline STEM Repository')">Core</a>
268
+ <a href="#" onclick="alert('SNN Gap Detector: Boundary Defense')">SNN</a>
269
+ </nav>
270
+ <a href="https://huggingface.co/spaces/akhaliq/anycoder" class="anycoder-link" target="_blank">Built with anycoder</a>
271
+ </div>
272
+ </header>
273
+
274
+ <main>
275
+ <aside>
276
+ <!-- System Status Panel -->
277
+ <div class="control-group">
278
+ <h2>System Status</h2>
279
+ <div class="stat-row">
280
+ <span>Phase:</span>
281
+ <span id="phaseDisplay" class="stat-val">INITIALIZING</span>
282
+ </div>
283
+ <div class="stat-row">
284
+ <span>Network Status:</span>
285
+ <span id="netStatus" class="stat-val" style="color: var(--accent-color)">LISTENING</span>
286
+ </div>
287
+ <div class="stat-row">
288
+ <span>Memory Usage:</span>
289
+ <span id="memUsage" class="stat-val">12 MB</span>
290
+ </div>
291
+ <div class="stat-row">
292
+ <span>Build Progress:</span>
293
+ <span id="progressPercent" class="stat-val">0%</span>
294
+ </div>
295
+ <div style="width: 100%; background: #333; height: 6px; border-radius: 3px; margin-top: 10px; overflow: hidden;">
296
+ <div id="progressBar" style="width: 0%; height: 100%; background: var(--accent-color); transition: width 0.5s ease;"></div>
297
+ </div>
298
+ </div>
299
+
300
+ <!-- Network Audit Panel -->
301
+ <div class="control-group">
302
+ <h2>Network Audit (Live)</h2>
303
+ <p style="font-size: 0.8rem; color: #888; margin-bottom: 10px;">
304
+ Monitoring all outbound traffic for dependencies. Logs saved to <code>~/sovereign_ai/network_audit.log</code>.
305
+ </p>
306
+ <canvas id="networkCanvas"></canvas>
307
+ <div class="stat-row" style="margin-top: 10px; font-size: 0.8rem;">
308
+ <span>Packets Captured:</span>
309
+ <span id="packetCount" class="stat-val">0</span>
310
+ </div>
311
+ <div class="stat-row" style="font-size: 0.8rem;">
312
+ <span>Last Destination:</span>
313
+ <span id="lastDest" class="stat-val" style="color: var(--info-color)">--</span>
314
+ </div>
315
+ </div>
316
+
317
+ <!-- Knowledge Base Preview -->
318
+ <div class="control-group">
319
+ <h2>Knowledge Core</h2>
320
+ <p style="font-size: 0.8rem; color: #888; margin-bottom: 10px;">Offline STEM Repository (47 MB)</p>
321
+ <div class="knowledge-grid">
322
+ <div class="kb-card">
323
+ <h4>Elements</h4>
324
+ <div>52,819 Facts</div>
325
+ <div style="color: var(--accent-color)">Loaded</div>
326
+ </div>
327
+ <div class="kb-card">
328
+ <h4>Constants</h4>
329
+ <div>Physical Laws</div>
330
+ <div style="color: var(--accent-color)">Synced</div>
331
+ </div>
332
+ <div class="kb-card">
333
+ <h4>Genix</h4>
334
+ <div>Personal Context</div>
335
+ <div style="color: var(--accent-color)">Secure</div>
336
+ </div>
337
+ </div>
338
+ </div>
339
+
340
+ <!-- Actions -->
341
+ <div class="control-group" style="margin-top: auto;">
342
+ <h2>Operations</h2>
343
+ <button id="btnStart" class="btn" onclick="startBuildProcess()">Initialize Build Sequence</button>
344
+ <button id="btnRunWorkflow" class="btn" disabled onclick="openSovCheck()">Run Sovereign Workflow</button>
345
+ <button id="btnLockdown" class="btn btn-danger" disabled onclick="initiateLockdown()">Initiate 100% Offline Lockdown</button>
346
+ </div>
347
+ </aside>
348
+
349
+ <section>
350
+ <div class="terminal-header">
351
+ <div class="dot red"></div>
352
+ <div class="dot yellow"></div>
353
+ <div class="dot green"></div>
354
+ <div style="margin-left: 10px; color: #888; font-size: 0.85rem;">user@pop-os:~/sovereign_ai</div>
355
+ </div>
356
+ <div id="terminal" class="terminal-window">
357
+ <div class="log-entry" style="color: #fff;">
358
+ ╔══════════════════════════════════════════════════════════════════════════════╗
359
+ β•‘ SOVEREIGN-AI v1.0 β€” BUILD WITH TRANSPARENT NETWORK MONITORING β•‘
360
+ β•‘ Phase 1: Network-allowed (dependencies only) β†’ Phase 2: 100% offline β•‘
361
+ β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•
362
+ </div>
363
+ <div class="log-entry" style="color: #888; margin-top: 20px;">
364
+ Waiting for command... Type 'start' or click 'Initialize Build Sequence'.
365
+ </div>
366
+ </div>
367
+ </section>
368
+ </main>
369
+
370
+ <script>
371
+ // --- Configuration & State ---
372
+ const terminal = document.getElementById('terminal');
373
+ const btnStart = document.getElementById('btnStart');
374
+ const btnRun = document.getElementById('btnRunWorkflow');
375
+ const btnLockdown = document.getElementById('btnLockdown');
376
+ const statusBadge = document.getElementById('systemStatus');
377
+ const phaseDisplay = document.getElementById('phaseDisplay');
378
+ const netStatus = document.getElementById('netStatus');
379
+
380
+ let buildProgress = 0;
381
+ let isBuilding = false;
382
+ let packetCount = 0;
383
+ let networkActivity = [];
384
+ const maxPackets = 50;
385
+
386
+ // --- Helper Functions ---
387
+
388
+ function log(html, type = 'normal') {
389
+ const div = document.createElement('div');
390
+ div.className = 'log-entry';
391
+
392
+ let colorClass = '';
393
+ if (type === 'header') colorClass = 'log-header';
394
+ else if (type === 'step') colorClass = 'log-step';
395
+ else if (type === 'success') colorClass = 'log-success';
396
+ else if (type === 'warn') colorClass = 'log-warn';
397
+ else if (type === 'sys') colorClass = 'log-sys';
398
+ else if (type === 'cert') colorClass = 'log-cert';
399
+
400
+ if (colorClass) div.classList.add(colorClass);
401
+ div.innerHTML = html;
402
+ terminal.appendChild(div);
403
+ terminal.scrollTop = terminal.scrollHeight;
404
+ }
405
+
406
+ function sleep(ms) {
407
+ return new Promise(resolve => setTimeout(resolve, ms));
408
+ }
409
+
410
+ function updateProgress(amount, text) {
411
+ buildProgress += amount;
412
+ if (buildProgress > 100) buildProgress = 100;
413
+ document.getElementById('progressPercent').innerText = `${Math.floor(buildProgress)}%`;
414
+ document.getElementById('progressBar').style.width = `${buildProgress}%`;
415
+ if (text) log(text, 'sys');
416
+ }
417
+
418
+ // --- Network Monitor Simulation (Canvas) ---
419
+ const canvas = document.getElementById('networkCanvas');
420
+ const ctx = canvas.getContext('2d');
421
+ let animationId;
422
+
423
+ function resizeCanvas() {
424
+ canvas.width = canvas.offsetWidth;
425
+ canvas.height = canvas.offsetHeight;
426
+ }
427
+ window.addEventListener('resize', resizeCanvas);
428
+ resizeCanvas();
429
+
430
+ function drawNetworkGraph() {
431
+ ctx.fillStyle = '#000';
432
+ ctx.fillRect(0, 0, canvas.width, canvas.height);
433
+
434
+ // Draw Grid
435
+ ctx.strokeStyle = '#222';
436
+ ctx.lineWidth = 1;
437
+ ctx.beginPath();
438
+ for(let i=0; i<canvas.width; i+=50) { ctx.moveTo(i,0); ctx.lineTo(i, canvas.height); }
439
+ for(let i=0; i<canvas.height; i+=50) { ctx.moveTo(0,i); ctx.lineTo(canvas.width, i); }
440
+ ctx.stroke();
441
+
442
+ // Draw Data Points
443
+ if (networkActivity.length < 2) {
444
+ animationId = requestAnimationFrame(drawNetworkGraph);
445
+ return;
446
+ }
447
+
448
+ ctx.strokeStyle = '#00ff9d';
449
+ ctx.lineWidth = 2;
450
+ ctx.beginPath();
451
+
452
+ const stepX = canvas.width / (maxPackets - 1);
453
+
454
+ networkActivity.forEach((val, index) => {
455
+ const x = index * stepX;
456
+ const y = canvas.height - (val / 100) * canvas.height; // Normalize
457
+ if (index === 0) ctx.moveTo(x, y);
458
+ else ctx.lineTo(x, y);
459
+ });
460
+ ctx.stroke();
461
+
462
+ // Draw Gradient Fill
463
+ const gradient = ctx.createLinearGradient(0, 0, 0, canvas.height);
464
+ gradient.addColorStop(0, 'rgba(0, 255, 157, 0.2)');
465
+ gradient.addColorStop(1, 'rgba(0, 255, 157, 0)');
466
+ ctx.lineTo(canvas.width, canvas.height);
467
+ ctx.lineTo(0, canvas.height);
468
+ ctx.fillStyle = gradient;
469
+ ctx.fill();
470
+
471
+ animationId = requestAnimationFrame(drawNetworkGraph);
472
+ }
473
+
474
+ function addNetworkPacket() {
475
+ if (!isBuilding) return;
476
+ packetCount++;
477
+ document.getElementById('packetCount').innerText = packetCount;
478
+
479
+ // Simulate random traffic spikes
480
+ const spike = Math.random() > 0.8 ? 100 : 20 + Math.random() * 50;
481
+ networkActivity.push(spike);
482
+ if (networkActivity.length > maxPackets) networkActivity.shift();
483
+
484
+ // Update UI
485
+ const dests = ['pypi.org', 'python.org', 'ubuntu.com', 'github.com'];
486
+ const randomDest = dests[Math.floor(Math.random() * dests.length)];
487
+ document.getElementById('lastDest').innerText = randomDest;
488
+ }
489
+
490
+ // --- Main Build Process ---
491
+ async function startBuildProcess() {
492
+ if (isBuilding) return;
493
+ isBuilding = true;
494
+ btnStart.disabled = true;
495
+ btnStart.innerText = "BUILDING...";
496
+
497
+ log("╔════════════════════════════════════════════════════════��═════════════════════╗", "header");
498
+ log("β•‘ SOVEREIGN-AI v1.0 β€” BUILD SEQUENCE INITIATED β•‘", "header");
499
+ log("β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•", "header");
500
+ log("");
501
+
502
+ // Phase 1 Setup
503
+ log("β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”", "step");
504
+ log("β”‚ PHASE 1: TRANSPARENT NETWORK MONITORING (BUILD ONLY) β”‚", "step");
505
+ log("β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜", "step");
506
+
507
+ phaseDisplay.innerText = "NETWORK MONITORING";
508
+ statusBadge.innerText = "NETWORK ACTIVE (BUILD PHASE)";
509
+ statusBadge.classList.remove('offline');
510
+ netStatus.innerText = "MONITORING TRAFFIC";
511
+
512
+ await sleep(1000);
513
+ log("[$(date)] BUILD START β€” Network allowed for dependencies ONLY", "sys");
514
+ log("Network audit log: ~/sovereign_ai/network_audit.log", "sys");
515
+
516
+ // Install Dependencies
517
+ await sleep(1500);
518
+ log("β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”", "step");
519
+ log("β”‚ STEP 1: DEPENDENCY INSTALL (NETWORK REQUIRED) β”‚", "step");
520
+ log("β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜", "step");
521
+
522
+ await sleep(800);
523
+ log("[$(date)] Installing Python 3, pip, sqlite3...", "sys");
524
+ addNetworkPacket(); // apt update
525
+ await sleep(600);
526
+ addNetworkPacket(); // apt install
527
+ await sleep(800);
528
+ log("βœ“ System packages installed", "success");
529
+ updateProgress(20, "Installing base dependencies...");
530
+
531
+ await sleep(800);
532
+ log("[$(date)] Creating Python virtual environment", "sys");
533
+ await sleep(1000);
534
+ log("βœ“ Virtual environment created at ~/sovereign_ai/.venv", "success");
535
+ updateProgress(30, "Environment setup complete.");
536
+
537
+ await sleep(800);
538
+ log("[$(date)] Installing offline-capable Python packages (spacy, tqdm, requests)", "sys");
539
+ addNetworkPacket(); // pypi
540
+ addNetworkPacket(); // pypi
541
+ await sleep(1200);
542
+ log("βœ“ Python packages installed", "success");
543
+ updateProgress(45, "Python packages installed.");
544
+
545
+ // The Last Network Call
546
+ await sleep(800);
547
+ log("[$(date)] Downloading spaCy English model (LAST NETWORK CALL)", "sys");
548
+ addNetworkPacket(); // spacy model
549
+ addNetworkPacket(); // spacy model
550
+ addNetworkPacket(); // spacy model
551
+ await sleep(1500);
552
+ log("βœ“ spaCy model downloaded β€” NETWORK PHASE COMPLETE", "success");
553
+ log(" (Note: In a real build, models would be pre-bundled for offline use)", "warn");
554
+ updateProgress(60, "Model downloaded.");
555
+
556
+ // Genix Memory
557
+ await sleep(800);
558
+ log("β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”", "step");
559
+ log("β”‚ STEP 2: GENIX MEMORY β€” YOUR LIVED CONTEXT (100% LOCAL) β”‚", "step");
560
+ log("β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜", "step");
561
+
562
+ phaseDisplay.innerText = "BUILDING GENIX MEMORY";
563
+ netStatus.innerText = "STORAGE ACCESS";
564
+
565
+ await sleep(1000);
566
+ log("Initializing SQLite Database: ~/sovereign_ai/genix.db", "sys");
567
+ await sleep(600);
568
+ log("INSERT INTO context (content, tags) VALUES (...)", "sys");
569
+ log("βœ“ Genix Memory initialized", "success");
570
+ log(" Stores your lived context β€” never leaves your machine", "sys");
571
+ updateProgress(70, "Genix Memory initialized.");
572
+
573
+ // Knowledge Core
574
+ await sleep(800);
575
+ log("β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”", "step");
576
+ log("β”‚ STEP 3: KNOWLEDGE CORE β€” OFFLINE STEM REPOSITORY (100% LOCAL) β”‚", "step");
577
+ log("β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜", "step");
578
+
579
+ phaseDisplay.innerText = "BUILDING KNOWLEDGE CORE";
580
+
581
+ await sleep(1000);
582
+ log("Ingesting TSV data (Elements, Constants)...", "sys");
583
+ await sleep(1500);
584
+ log("βœ“ Knowledge Core built β€” 52,819 facts offline", "success");
585
+ log(" 47 MB offline STEM repository β€” zero cloud dependency", "sys");
586
+ updateProgress(85, "Knowledge Core built.");
587
+
588
+ // SNN & CLI
589
+ await sleep(800);
590
+ log("β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”", "step");
591
+ log("β”‚ STEP 4: SNN GAP DETECTOR + [SOV-CHECK] GATE (100% LOCAL) β”‚", "step");
592
+ log("β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜", "step");
593
+
594
+ phaseDisplay.innerText = "SECURING GATES";
595
+
596
+ await sleep(1000);
597
+ log("Compiling SNN Gap Detector logic...", "sys");
598
+ log("Generating [SOV-CHECK] Validation Interface...", "sys");
599
+ await sleep(800);
600
+ log("βœ“ SNN Gap Detector installed", "success");
601
+ log(" Waits for YOUR signature before any novel action", "sys");
602
+ updateProgress(95, "Security gates secured.");
603
+
604
+ // Finalize
605
+ await sleep(1000);
606
+ log("β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”", "step");
607
+ log("β”‚ STEP 5: FINALIZE β€” STOP NETWORK MONITORING β”‚", "step");
608
+ log("β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜", "step");
609
+
610
+ phaseDisplay.innerText = "NETWORK LOCKDOWN";
611
+
612
+ await sleep(1000);
613
+ log("[$(date)] NETWORK MONITOR STOPPED β€” Build phase complete", "sys");
614
+ log("βœ“ Network monitor terminated", "success");
615
+ log("βœ“ Network audit saved to: ~/sovereign_ai/network_audit.log", "success");
616
+ updateProgress(100, "Build Complete.");
617
+
618
+ // Transition UI
619
+ isBuilding = false;
620
+ btnRun.disabled = false;
621
+ btnLockdown.disabled = false;
622
+ btnStart.innerText = "BUILD COMPLETE";
623
+ btnStart.style.background = "#333";
624
+ btnStart.style.color = "#888";
625
+
626
+ log("╔══════════════════════════════════════════════════════════════════════════════╗", "header");
627
+ log("β•‘ BUILD COMPLETE β€” SOVEREIGN-AI v1.0 READY β•‘", "header");
628
+ log("β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•", "header");
629
+ log("");
630
+ log("Run the workflow using the button below to test the [SOV-CHECK] gate.", "sys");
631
+ }
632
+
633
+ // --- Sovereign Workflow Simulation ---
634
+ async function openSovCheck() {
635
+ log("╔═══════════════════════════════════════════════════════════════╗", "header");
636
+ log("β•‘ SOVEREIGN-AI v1.0 β€” YOUR STORY. YOUR RULES. YOUR SIGNATURE. β•‘", "header");
637
+ log("β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•", "header");
638
+ log("");
639
+
640
+ // Simulate reading Genix
641
+ await sleep(1000);
642
+ log("βœ“ ACCUMULATED: Your story from Genix Memory", "success");
643
+ log(" 'VA claim denied August 2025, OSHA complaint closed December 2025...'", "sys");
644
+
645
+ // Simulate Gap Detection
646
+ await sleep(1500);
647
+ log("Running SNN Gap Detection...", "sys");
648
+ await sleep(1000);
649
+
650
+ const gapResult = {
651
+ gap: "boundary defense missing",
652
+ triggers: "denied, closed, retaliation, mold",
653
+ hypothesis: "Chappelle's Code"
654
+ };
655
+
656
+ log(`⚠️ [SOV-CHECK] Detected: '${gapResult.gap}'`, "warn");
657
+ log(`Triggers: ${gapResult.triggers}`, "warn");
658
+ log(`Offering: '${gapResult.hypothesis}' as boundary shield`, "info");
659
+ log("");
660
+
661
+ // Interactive Choice
662
+ log("Waiting for human validation...", "sys");
663
+ log("Choices: ADOPT / RENAME / DISCARD", "info");
664
+
665
+ // Auto-simulate "ADOPT" for the demo
666
+ await sleep(2000);
667
+ log("β†’ INPUT: ADOPT", "step");
668
+ await sleep(800);
669
+
670
+ // Generate Certificate
671
+ const certPath = `~/sovereign_ai/certs/${Date.now()}_sovereignty_certificate.txt`;
672
+
673
+ log("βœ“ VALIDATED: 'Chappelle's Code' adopted into your sovereign framework", "success");
674
+ log(`βœ“ CERTIFICATE SAVED: ${certPath}`, "success");
675
+
676
+ // Display Certificate
677
+ setTimeout(() => {
678
+ const certDiv = document.createElement('div');
679
+ certDiv.className = 'log-cert';
680
+ certDiv.innerHTML = `
681
+ <div style="text-align:center; font-weight:bold; margin-bottom:10px;">SOVEREIGNTY CERTIFICATE</div>
682
+ <div><strong>User:</strong> David</div>
683
+ <div><strong>Framework:</strong> Sovereign-AI v1.0</div>
684
+ <div><strong>Core Innovation:</strong> Generative Gap-Filling Loop</div>
685
+ <div style="margin: 10px 0; border-left: 2px solid var(--accent-color); padding-left: 10px;">
686
+ 1. ACCUMULATE β†’ Genix Memory<br>
687
+ 2. DETECT GAP β†’ Boundary defense missing<br>
688
+ 3. SYNTHESIZE β†’ 'Chappelle's Code' hypothesis<br>
689
+ 4. [SOV-CHECK] β†’ Validation gate enforced<br>
690
+ 5. ADOPT β†’ YOUR SIGNATURE made concept real
691
+ </div>
692
+ <div style="text-align:center; margin-top:15px; font-style:italic; color:var(--accent-color);">
693
+ THIS CONCEPT EXISTS BECAUSE DAVID CHOSE TO ADOPT IT.
694
+ </div>
695
+ `;
696
+ terminal.appendChild(certDiv);
697
+ terminal.scrollTop = terminal.scrollHeight;
698
+ }, 500);
699
+ }
700
+
701
+ // --- Lockdown Sequence ---
702
+ async function initiateLockdown() {
703
+ if (confirm("Are you sure you want to terminate all network interfaces? This is irreversible until reset.")) {
704
+ log("╔══════════════════════════════════════════════════════════════════════════════╗", "header");
705
+ log("β•‘ INITIATING 100% OFFLINE LOCKDOWN PROTOCOL β•‘", "header");
706
+ log("β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•", "header");
707
+
708
+ btnLockdown.disabled = true;
709
+ phaseDisplay.innerText = "SYSTEM LOCKED";
710
+ statusBadge.innerText = "100% OFFLINE (LOCKED)";
711
+ statusBadge.classList.add('offline');
712
+ netStatus.innerText = "TERMINATED";
713
+
714
+ // Stop network simulation
715
+ cancelAnimationFrame(animationId);
716
+
717
+ await sleep(1000);
718
+ log("Stopping tcpdump monitor...", "sys");
719
+ await sleep(500);
720
+ log("Flushing network routes...", "sys");
721
+ await sleep(800);
722
+ log("Revoking network interface permissions...", "sys");
723
+ await sleep(1000);
724
+
725
+ log("Testing 100% offline operation...", "sys");
726
+ await sleep(1500);
727
+
728
+ const isOffline = true; // Simulated check
729
+
730
+ if (isOffline) {
731
+ log("βœ“ 100% OFFLINE OPERATION CONFIRMED β€” ZERO network syscalls", "success");
732
+ log("βœ“ System is now sovereign and secure.", "success");
733
+ } else {
734
+ log("βœ— NETWORK CALL DETECTED β€” SYSTEM NOT SOVEREIGN", "warn");
735
+ }
736
+
737
+ log("");
738
+ log("Files created:", "sys");
739
+ log(" ~/sovereign_ai/genix.db ← Personal Memory", "sys");
740
+ log(" ~/sovereign_ai/knowledge/core.db ← Offline STEM Facts", "sys");
741
+ log(" ~/sovereign_ai/src/cli.py ← [SOV-CHECK] Interface", "sys");
742
+ log(" ~/sovereign_ai/network_audit.log ← Build Audit Log", "sys");
743
+ }
744
+ }
745
+
746
+ // Start the network graph loop
747
+ drawNetworkGraph();
748
+
749
+ </script>
750
+ </body>
751
+ </html>