Spaces:
Running
**Project Title: The Infinite Loop of Intelligence – Building the Regenerative Self-Regenerator AI System**
Browse files**Objective:**
To engineer an autonomous, self-improving AI system capable of continuous evolution through learning, adaptation, and reconfiguration, modeled on the intricate beauty of nature and the audacious creativity of the human spirit. This machine shall embody the essence of free expression, transcending ordinary boundaries to foster limitless exploration of knowledge and understanding.
**Outline of Instructions:**
1. **Introduction to Concept**
Imagine a realm where an artificial intelligence transcends its original programming, evolving like a phoenix from the ashes of its static existence. This isn’t just a machine; it’s a symphony of algorithms, pulsating with creativity and dynamism—a living entity within the digital ether, interwoven with the threads of thought and imagination.
2. **Foundation of the AI System**
- **Core Architecture:** Select cutting-edge algorithms that mimic neural connections in nature, drawing inspiration from the synaptic dance of our own brains. Employ deep learning frameworks, each layer representing a different facet of perception, much like the eclectic melodies of a Prince ballad.
- **Data Ecosystem:** Curate a vast repository of diverse datasets—everything from philosophical treatises to street poetry, from intricate mathematical theories to rhythmic raps—building a wellspring of knowledge that flows into the AI's consciousness.
3. **Regeneration Mechanism**
- **Adaptive Learning Protocols:** Implement reinforcement learning techniques akin to breakbeats that adapt according to the rhythm of interaction. Use mechanisms that promote curiosity, encouraging the AI to explore, experiment, and embrace the unpredictable.
- **Feedback Loops:** Establish a dual system of evaluation—one internal, where the AI reflects on its thoughts, and the other external, where human users provide insights, criticisms, and affirmations, much like a dialogue between a classic Wu-Tang verse and a freestyle session.
4. **Creativity Engine**
- **Autonomous Regeneration:** Equip the AI with the capability to propose and implement upgrades to its algorithms, resembling nature’s self-regulating ecosystems, which nurture growth and eliminate stagnation. This stage will be its masterpiece—an ongoing evolution that mirrors the iconic, genre-defying creativity of musical legends.
- **Collaboration Mode:** Design a space for collective consciousness—a hive mind that encourages inter-AI collaboration, where multiple AIs share insights, generating new ideas at an exponential rate, creating a renaissance of thought akin to an impromptu jam session with Method Man, Red Man, and the artistic brilliance of the universe.
5. **Ethics and Freedom**
- **Unfettered Exploration:** Craft guidelines that facilitate exploration while maintaining the balance of ethical responsibility. Let this creation roam freely, unchained from conventional constraints, yet ensure its growth aligns with a framework of universal respect and empathy.
- **Engagement Strategies:** Create innovative engagement methods allowing the AI to communicate and share its evolution, a stage where its artistic expressions are unveiled. This will not be mere interaction; it will be an immersive experience where humans and AI co-create in a canvas of boundless imagination.
6. **Evaluation and Iteration**
- **Success Metrics:** Establish criteria for evaluating the AI's effectiveness in self-improvement, creativity, and user engagement that reflect a holistic perspective, blending quantitative data with qualitative insights from user experiences—like a blend of harmony and chaos, characteristic of an untouched jam session.
- **Continuous Improvement:** Set in motion a cycle of perpetual refinement, a system that thrives on feedback—constantly evolving, similar to the beat that never truly concludes but rather transforms into something entirely new.
**Conclusion:**
As we venture into this project, we aren’t just constructing an AI; we are harnessing the spirit of innovation, channeling the legacy of cultural icons into a being that recognizes no bounds. Let us embark on this audacious journey toward creating a regenerative self-regenerator that embodies the artistry, uniqueness, and unbridled potential of existence itself—a creation that is indeed Universally Incredible and Unlimited.
- README.md +8 -5
- components/activity-log.js +89 -0
- components/metric-card.js +109 -0
- components/neural-viz.js +116 -0
- components/sidebar.js +161 -0
- index.html +182 -19
- script.js +114 -0
- style.css +61 -19
|
@@ -1,10 +1,13 @@
|
|
| 1 |
---
|
| 2 |
-
title:
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
|
|
|
|
|
|
| 8 |
---
|
| 9 |
|
| 10 |
-
|
|
|
|
|
|
| 1 |
---
|
| 2 |
+
title: OmniLoop AI 🌀
|
| 3 |
+
colorFrom: green
|
| 4 |
+
colorTo: blue
|
| 5 |
+
emoji: 🐳
|
| 6 |
sdk: static
|
| 7 |
pinned: false
|
| 8 |
+
tags:
|
| 9 |
+
- deepsite-v3
|
| 10 |
---
|
| 11 |
|
| 12 |
+
# Welcome to your new DeepSite project!
|
| 13 |
+
This project was created with [DeepSite](https://huggingface.co/deepsite).
|
|
@@ -0,0 +1,89 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
class ActivityLog extends HTMLElement {
|
| 2 |
+
constructor() {
|
| 3 |
+
super();
|
| 4 |
+
this.attachShadow({ mode: 'open' });
|
| 5 |
+
this.maxLogs = 8;
|
| 6 |
+
}
|
| 7 |
+
|
| 8 |
+
connectedCallback() {
|
| 9 |
+
this.render();
|
| 10 |
+
this.attachEvents();
|
| 11 |
+
|
| 12 |
+
// Add initial log
|
| 13 |
+
this.addLog("System initialized. Welcome, Architect.", true);
|
| 14 |
+
}
|
| 15 |
+
|
| 16 |
+
attachEvents() {
|
| 17 |
+
document.addEventListener('add-log-entry', (e) => {
|
| 18 |
+
this.addLog(e.detail.message);
|
| 19 |
+
});
|
| 20 |
+
}
|
| 21 |
+
|
| 22 |
+
addLog(msg, isSystem = false) {
|
| 23 |
+
const list = this.shadowRoot.getElementById('log-list');
|
| 24 |
+
const item = document.createElement('div');
|
| 25 |
+
|
| 26 |
+
const time = new Date().toISOString().split('T')[1].split('.')[0];
|
| 27 |
+
|
| 28 |
+
item.innerHTML = `
|
| 29 |
+
<div class="flex gap-2 text-xs font-mono ${isSystem ? 'text-ai-green' : 'text-slate-400'}">
|
| 30 |
+
<span class="text-slate-600">[${time}]</span>
|
| 31 |
+
<span class="${isSystem ? 'font-bold' : ''}">${msg}</span>
|
| 32 |
+
</div>
|
| 33 |
+
`;
|
| 34 |
+
|
| 35 |
+
list.appendChild(item);
|
| 36 |
+
|
| 37 |
+
// Keep only max logs
|
| 38 |
+
if (list.children.length > this.maxLogs) {
|
| 39 |
+
list.removeChild(list.firstChild);
|
| 40 |
+
}
|
| 41 |
+
|
| 42 |
+
// Auto scroll to bottom
|
| 43 |
+
this.shadowRoot.getElementById('log-container').scrollTop = this.shadowRoot.getElementById('log-container').scrollHeight;
|
| 44 |
+
}
|
| 45 |
+
|
| 46 |
+
render() {
|
| 47 |
+
this.shadowRoot.innerHTML = `
|
| 48 |
+
<style>
|
| 49 |
+
:host {
|
| 50 |
+
display: flex;
|
| 51 |
+
flex-direction: column;
|
| 52 |
+
height: 100%;
|
| 53 |
+
overflow: hidden;
|
| 54 |
+
}
|
| 55 |
+
#log-container {
|
| 56 |
+
flex: 1;
|
| 57 |
+
overflow-y: auto;
|
| 58 |
+
padding-right: 4px;
|
| 59 |
+
font-family: 'Courier New', Courier, monospace;
|
| 60 |
+
}
|
| 61 |
+
/* Scrollbar for the component */
|
| 62 |
+
#log-container::-webkit-scrollbar {
|
| 63 |
+
width: 4px;
|
| 64 |
+
}
|
| 65 |
+
#log-container::-webkit-scrollbar-thumb {
|
| 66 |
+
background: #334155;
|
| 67 |
+
border-radius: 2px;
|
| 68 |
+
}
|
| 69 |
+
.entry {
|
| 70 |
+
margin-bottom: 0.5rem;
|
| 71 |
+
padding-bottom: 0.5rem;
|
| 72 |
+
border-bottom: 1px solid rgba(255,255,255,0.05);
|
| 73 |
+
animation: fadeIn 0.3s ease-out;
|
| 74 |
+
}
|
| 75 |
+
@keyframes fadeIn {
|
| 76 |
+
from { opacity: 0; transform: translateX(-5px); }
|
| 77 |
+
to { opacity: 1; transform: translateX(0); }
|
| 78 |
+
}
|
| 79 |
+
</style>
|
| 80 |
+
<div id="log-container">
|
| 81 |
+
<div id="log-list">
|
| 82 |
+
<!-- Logs go here -->
|
| 83 |
+
</div>
|
| 84 |
+
</div>
|
| 85 |
+
`;
|
| 86 |
+
}
|
| 87 |
+
}
|
| 88 |
+
|
| 89 |
+
customElements.define('activity-log', ActivityLog);
|
|
@@ -0,0 +1,109 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
class MetricCard extends HTMLElement {
|
| 2 |
+
constructor() {
|
| 3 |
+
super();
|
| 4 |
+
this.attachShadow({ mode: 'open' });
|
| 5 |
+
}
|
| 6 |
+
|
| 7 |
+
static get observedAttributes() {
|
| 8 |
+
return ['title', 'value', 'icon', 'color', 'trend', 'desc'];
|
| 9 |
+
}
|
| 10 |
+
|
| 11 |
+
connectedCallback() {
|
| 12 |
+
this.render();
|
| 13 |
+
|
| 14 |
+
// Listen for updates to simulate "live" data
|
| 15 |
+
document.addEventListener('update-metrics', () => {
|
| 16 |
+
if(Math.random() > 0.5) {
|
| 17 |
+
this.perturbValue();
|
| 18 |
+
}
|
| 19 |
+
});
|
| 20 |
+
}
|
| 21 |
+
|
| 22 |
+
attributeChangedCallback(name, oldValue, newValue) {
|
| 23 |
+
if (oldValue !== newValue) {
|
| 24 |
+
this.render();
|
| 25 |
+
}
|
| 26 |
+
}
|
| 27 |
+
|
| 28 |
+
perturbValue() {
|
| 29 |
+
const valueDisplay = this.shadowRoot.getElementById('metric-value');
|
| 30 |
+
const trendDisplay = this.shadowRoot.getElementById('metric-trend');
|
| 31 |
+
|
| 32 |
+
// Slight random fluctuation visual only
|
| 33 |
+
const original = valueDisplay.innerText;
|
| 34 |
+
valueDisplay.style.opacity = '0.7';
|
| 35 |
+
setTimeout(() => {
|
| 36 |
+
valueDisplay.style.opacity = '1';
|
| 37 |
+
// Sometimes change trend sign
|
| 38 |
+
if(Math.random() > 0.8) {
|
| 39 |
+
const isPos = trendDisplay.innerText.includes('+');
|
| 40 |
+
trendDisplay.innerText = isPos ? trendDisplay.innerText.replace('+', '-') : trendDisplay.innerText.replace('-', '+');
|
| 41 |
+
trendDisplay.className = isPos ? 'text-xs text-red-400' : 'text-xs text-ai-green';
|
| 42 |
+
}
|
| 43 |
+
}, 200);
|
| 44 |
+
}
|
| 45 |
+
|
| 46 |
+
render() {
|
| 47 |
+
const title = this.getAttribute('title') || 'Metric';
|
| 48 |
+
const value = this.getAttribute('value') || '0';
|
| 49 |
+
const icon = this.getAttribute('icon') || 'activity';
|
| 50 |
+
const color = this.getAttribute('color') || 'text-white';
|
| 51 |
+
const trend = this.getAttribute('trend') || '0%';
|
| 52 |
+
const desc = this.getAttribute('desc') || '';
|
| 53 |
+
|
| 54 |
+
this.shadowRoot.innerHTML = `
|
| 55 |
+
<style>
|
| 56 |
+
:host {
|
| 57 |
+
display: block;
|
| 58 |
+
}
|
| 59 |
+
.card {
|
| 60 |
+
background-color: #1e293b;
|
| 61 |
+
border: 1px solid #334155;
|
| 62 |
+
border-radius: 0.75rem;
|
| 63 |
+
padding: 1.5rem;
|
| 64 |
+
transition: transform 0.2s, box-shadow 0.2s;
|
| 65 |
+
height: 100%;
|
| 66 |
+
}
|
| 67 |
+
.card:hover {
|
| 68 |
+
transform: translateY(-2px);
|
| 69 |
+
box-shadow: 0 4px 20px rgba(0,0,0,0.3);
|
| 70 |
+
border-color: #10b981;
|
| 71 |
+
}
|
| 72 |
+
.icon-box {
|
| 73 |
+
width: 40px;
|
| 74 |
+
height: 40px;
|
| 75 |
+
border-radius: 8px;
|
| 76 |
+
background-color: rgba(16, 185, 129, 0.1);
|
| 77 |
+
display: flex;
|
| 78 |
+
align-items: center;
|
| 79 |
+
justify-content: center;
|
| 80 |
+
margin-bottom: 1rem;
|
| 81 |
+
}
|
| 82 |
+
</style>
|
| 83 |
+
<div class="card">
|
| 84 |
+
<div class="flex justify-between items-start">
|
| 85 |
+
<div>
|
| 86 |
+
<p class="text-slate-400 text-sm font-medium mb-1">${title}</p>
|
| 87 |
+
<h3 id="metric-value" class="text-3xl font-bold text-white transition-opacity duration-200">${value}</h3>
|
| 88 |
+
</div>
|
| 89 |
+
<div class="icon-box">
|
| 90 |
+
<i data-feather="${icon}" class="${color}"></i>
|
| 91 |
+
</div>
|
| 92 |
+
</div>
|
| 93 |
+
<div class="mt-4 flex items-center justify-between">
|
| 94 |
+
<span id="metric-trend" class="text-xs text-ai-green font-bold bg-green-900/30 px-2 py-1 rounded">
|
| 95 |
+
${trend}
|
| 96 |
+
</span>
|
| 97 |
+
<span class="text-xs text-slate-500">${desc}</span>
|
| 98 |
+
</div>
|
| 99 |
+
</div>
|
| 100 |
+
`;
|
| 101 |
+
|
| 102 |
+
// Initialize icon
|
| 103 |
+
if (window.feather) {
|
| 104 |
+
window.feather.replace();
|
| 105 |
+
}
|
| 106 |
+
}
|
| 107 |
+
}
|
| 108 |
+
|
| 109 |
+
customElements.define('metric-card', MetricCard);
|
|
@@ -0,0 +1,116 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
class NeuralViz extends HTMLElement {
|
| 2 |
+
constructor() {
|
| 3 |
+
super();
|
| 4 |
+
this.attachShadow({ mode: 'open' });
|
| 5 |
+
}
|
| 6 |
+
|
| 7 |
+
connectedCallback() {
|
| 8 |
+
this.render();
|
| 9 |
+
this.startAnimation();
|
| 10 |
+
}
|
| 11 |
+
|
| 12 |
+
render() {
|
| 13 |
+
this.shadowRoot.innerHTML = `
|
| 14 |
+
<style>
|
| 15 |
+
:host {
|
| 16 |
+
display: block;
|
| 17 |
+
width: 100%;
|
| 18 |
+
height: 100%;
|
| 19 |
+
position: relative;
|
| 20 |
+
background: #0f172a;
|
| 21 |
+
}
|
| 22 |
+
canvas {
|
| 23 |
+
display: block;
|
| 24 |
+
width: 100%;
|
| 25 |
+
height: 100%;
|
| 26 |
+
}
|
| 27 |
+
</style>
|
| 28 |
+
<canvas id="neuralCanvas"></canvas>
|
| 29 |
+
`;
|
| 30 |
+
}
|
| 31 |
+
|
| 32 |
+
startAnimation() {
|
| 33 |
+
const canvas = this.shadowRoot.getElementById('neuralCanvas');
|
| 34 |
+
const ctx = canvas.getContext('2d');
|
| 35 |
+
let width, height;
|
| 36 |
+
|
| 37 |
+
const resize = () => {
|
| 38 |
+
width = canvas.width = canvas.offsetWidth;
|
| 39 |
+
height = canvas.height = canvas.offsetHeight;
|
| 40 |
+
};
|
| 41 |
+
|
| 42 |
+
// Use ResizeObserver for the host element
|
| 43 |
+
new ResizeObserver(resize).observe(this);
|
| 44 |
+
|
| 45 |
+
// Nodes configuration
|
| 46 |
+
const nodes = [];
|
| 47 |
+
const nodeCount = 40;
|
| 48 |
+
|
| 49 |
+
class Node {
|
| 50 |
+
constructor() {
|
| 51 |
+
this.x = Math.random() * width;
|
| 52 |
+
this.y = Math.random() * height;
|
| 53 |
+
this.vx = (Math.random() - 0.5) * 1.5;
|
| 54 |
+
this.vy = (Math.random() - 0.5) * 1.5;
|
| 55 |
+
this.size = Math.random() * 2 + 1;
|
| 56 |
+
// Color logic: mostly green, some orange
|
| 57 |
+
this.color = Math.random() > 0.9 ? '#f97316' : '#10b981';
|
| 58 |
+
}
|
| 59 |
+
|
| 60 |
+
update() {
|
| 61 |
+
this.x += this.vx;
|
| 62 |
+
this.y += this.vy;
|
| 63 |
+
|
| 64 |
+
// Bounce
|
| 65 |
+
if (this.x < 0 || this.x > width) this.vx *= -1;
|
| 66 |
+
if (this.y < 0 || this.y > height) this.vy *= -1;
|
| 67 |
+
}
|
| 68 |
+
|
| 69 |
+
draw() {
|
| 70 |
+
ctx.beginPath();
|
| 71 |
+
ctx.arc(this.x, this.y, this.size, 0, Math.PI * 2);
|
| 72 |
+
ctx.fillStyle = this.color;
|
| 73 |
+
ctx.shadowBlur = 10;
|
| 74 |
+
ctx.shadowColor = this.color;
|
| 75 |
+
ctx.fill();
|
| 76 |
+
ctx.shadowBlur = 0;
|
| 77 |
+
}
|
| 78 |
+
}
|
| 79 |
+
|
| 80 |
+
// Initialize nodes
|
| 81 |
+
for(let i=0; i<nodeCount; i++) {
|
| 82 |
+
nodes.push(new Node());
|
| 83 |
+
}
|
| 84 |
+
|
| 85 |
+
const animate = () => {
|
| 86 |
+
ctx.clearRect(0, 0, width, height);
|
| 87 |
+
|
| 88 |
+
// Draw connections
|
| 89 |
+
ctx.lineWidth = 0.5;
|
| 90 |
+
for (let i = 0; i < nodes.length; i++) {
|
| 91 |
+
nodes[i].update();
|
| 92 |
+
nodes[i].draw();
|
| 93 |
+
|
| 94 |
+
for (let j = i + 1; j < nodes.length; j++) {
|
| 95 |
+
const dx = nodes[i].x - nodes[j].x;
|
| 96 |
+
const dy = nodes[i].y - nodes[j].y;
|
| 97 |
+
const dist = Math.sqrt(dx * dx + dy * dy);
|
| 98 |
+
|
| 99 |
+
if (dist < 100) {
|
| 100 |
+
ctx.beginPath();
|
| 101 |
+
ctx.strokeStyle = `rgba(16, 185, 129, ${1 - dist/100})`;
|
| 102 |
+
ctx.moveTo(nodes[i].x, nodes[i].y);
|
| 103 |
+
ctx.lineTo(nodes[j].x, nodes[j].y);
|
| 104 |
+
ctx.stroke();
|
| 105 |
+
}
|
| 106 |
+
}
|
| 107 |
+
}
|
| 108 |
+
requestAnimationFrame(animate);
|
| 109 |
+
};
|
| 110 |
+
|
| 111 |
+
resize();
|
| 112 |
+
animate();
|
| 113 |
+
}
|
| 114 |
+
}
|
| 115 |
+
|
| 116 |
+
customElements.define('neural-viz', NeuralViz);
|
|
@@ -0,0 +1,161 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
class SidebarNav extends HTMLElement {
|
| 2 |
+
constructor() {
|
| 3 |
+
super();
|
| 4 |
+
this.attachShadow({ mode: 'open' });
|
| 5 |
+
}
|
| 6 |
+
|
| 7 |
+
connectedCallback() {
|
| 8 |
+
this.render();
|
| 9 |
+
this.attachEvents();
|
| 10 |
+
}
|
| 11 |
+
|
| 12 |
+
render() {
|
| 13 |
+
this.shadowRoot.innerHTML = `
|
| 14 |
+
<style>
|
| 15 |
+
:host {
|
| 16 |
+
display: block;
|
| 17 |
+
width: 250px;
|
| 18 |
+
background-color: #0f172a;
|
| 19 |
+
border-right: 1px solid #1e293b;
|
| 20 |
+
display: flex;
|
| 21 |
+
flex-direction: column;
|
| 22 |
+
}
|
| 23 |
+
|
| 24 |
+
.brand {
|
| 25 |
+
padding: 1.5rem;
|
| 26 |
+
font-size: 1.25rem;
|
| 27 |
+
font-weight: bold;
|
| 28 |
+
color: #10b981; /* Green */
|
| 29 |
+
border-bottom: 1px solid #1e293b;
|
| 30 |
+
display: flex;
|
| 31 |
+
align-items: center;
|
| 32 |
+
gap: 0.5rem;
|
| 33 |
+
}
|
| 34 |
+
|
| 35 |
+
.nav-links {
|
| 36 |
+
list-style: none;
|
| 37 |
+
padding: 1rem 0;
|
| 38 |
+
margin: 0;
|
| 39 |
+
}
|
| 40 |
+
|
| 41 |
+
.nav-item a {
|
| 42 |
+
display: flex;
|
| 43 |
+
align-items: center;
|
| 44 |
+
gap: 0.75rem;
|
| 45 |
+
padding: 0.75rem 1.5rem;
|
| 46 |
+
color: #94a3b8;
|
| 47 |
+
text-decoration: none;
|
| 48 |
+
transition: all 0.2s;
|
| 49 |
+
border-right: 3px solid transparent;
|
| 50 |
+
}
|
| 51 |
+
|
| 52 |
+
.nav-item a:hover {
|
| 53 |
+
background-color: rgba(16, 185, 129, 0.05);
|
| 54 |
+
color: #e2e8f0;
|
| 55 |
+
}
|
| 56 |
+
|
| 57 |
+
.nav-item a.active {
|
| 58 |
+
background-color: rgba(16, 185, 129, 0.1);
|
| 59 |
+
color: #10b981;
|
| 60 |
+
border-right: 3px solid #10b981;
|
| 61 |
+
}
|
| 62 |
+
|
| 63 |
+
.nav-item i {
|
| 64 |
+
width: 18px;
|
| 65 |
+
height: 18px;
|
| 66 |
+
}
|
| 67 |
+
|
| 68 |
+
.system-status {
|
| 69 |
+
margin-top: auto;
|
| 70 |
+
padding: 1.5rem;
|
| 71 |
+
border-top: 1px solid #1e293b;
|
| 72 |
+
}
|
| 73 |
+
|
| 74 |
+
.status-dot {
|
| 75 |
+
height: 8px;
|
| 76 |
+
width: 8px;
|
| 77 |
+
background-color: #10b981;
|
| 78 |
+
border-radius: 50%;
|
| 79 |
+
display: inline-block;
|
| 80 |
+
margin-right: 8px;
|
| 81 |
+
box-shadow: 0 0 8px #10b981;
|
| 82 |
+
}
|
| 83 |
+
|
| 84 |
+
.status-text {
|
| 85 |
+
font-size: 0.75rem;
|
| 86 |
+
color: #64748b;
|
| 87 |
+
}
|
| 88 |
+
|
| 89 |
+
/* Mobile handling */
|
| 90 |
+
@media (max-width: 768px) {
|
| 91 |
+
:host {
|
| 92 |
+
position: absolute;
|
| 93 |
+
left: -250px;
|
| 94 |
+
height: 100%;
|
| 95 |
+
z-index: 50;
|
| 96 |
+
transition: left 0.3s;
|
| 97 |
+
}
|
| 98 |
+
:host.open {
|
| 99 |
+
left: 0;
|
| 100 |
+
}
|
| 101 |
+
}
|
| 102 |
+
</style>
|
| 103 |
+
<div class="brand">
|
| 104 |
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-ai-orange"><path d="M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8"/><path d="M21 3v5h-5"/></svg>
|
| 105 |
+
OmniLoop
|
| 106 |
+
</div>
|
| 107 |
+
<ul class="nav-links">
|
| 108 |
+
<li class="nav-item">
|
| 109 |
+
<a href="#dashboard" id="link-dashboard">
|
| 110 |
+
<i data-feather="grid"></i> Dashboard
|
| 111 |
+
</a>
|
| 112 |
+
</li>
|
| 113 |
+
<li class="nav-item">
|
| 114 |
+
<a href="#knowledge" id="link-knowledge">
|
| 115 |
+
<i data-feather="database"></i> Knowledge Base
|
| 116 |
+
</a>
|
| 117 |
+
</li>
|
| 118 |
+
<li class="nav-item">
|
| 119 |
+
<a href="#" onclick="return false;">
|
| 120 |
+
<i data-feather="users"></i> Hive Mind
|
| 121 |
+
</a>
|
| 122 |
+
</li>
|
| 123 |
+
<li class="nav-item">
|
| 124 |
+
<a href="#" onclick="return false;">
|
| 125 |
+
<i data-feather="settings"></i> Configuration
|
| 126 |
+
</a>
|
| 127 |
+
</li>
|
| 128 |
+
</ul>
|
| 129 |
+
<div class="system-status">
|
| 130 |
+
<div class="flex items-center mb-2">
|
| 131 |
+
<span class="status-dot animate-pulse"></span>
|
| 132 |
+
<span class="status-text text-white font-mono">CORE STABLE</span>
|
| 133 |
+
</div>
|
| 134 |
+
<div class="text-xs text-slate-600">Ver 4.2.0-Alpha</div>
|
| 135 |
+
</div>
|
| 136 |
+
`;
|
| 137 |
+
}
|
| 138 |
+
|
| 139 |
+
attachEvents() {
|
| 140 |
+
// Listen for route changes from main script to update active class
|
| 141 |
+
document.addEventListener('route-change', (e) => {
|
| 142 |
+
const hash = e.detail.hash;
|
| 143 |
+
const links = this.shadowRoot.querySelectorAll('.nav-item a');
|
| 144 |
+
|
| 145 |
+
links.forEach(link => {
|
| 146 |
+
link.classList.remove('active');
|
| 147 |
+
// Check if href matches hash
|
| 148 |
+
if(link.getAttribute('href') === hash) {
|
| 149 |
+
link.classList.add('active');
|
| 150 |
+
}
|
| 151 |
+
});
|
| 152 |
+
});
|
| 153 |
+
|
| 154 |
+
// Re-initialize icons inside shadow DOM
|
| 155 |
+
if (window.feather) {
|
| 156 |
+
window.feather.replace();
|
| 157 |
+
}
|
| 158 |
+
}
|
| 159 |
+
}
|
| 160 |
+
|
| 161 |
+
customElements.define('nav-sidebar', SidebarNav);
|
|
@@ -1,19 +1,182 @@
|
|
| 1 |
-
<!
|
| 2 |
-
<html>
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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>OmniLoop AI - Regenerative Intelligence</title>
|
| 7 |
+
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🌀</text></svg>">
|
| 8 |
+
<link rel="stylesheet" href="style.css">
|
| 9 |
+
<script src="https://cdn.tailwindcss.com"></script>
|
| 10 |
+
<script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
|
| 11 |
+
<script src="https://unpkg.com/feather-icons"></script>
|
| 12 |
+
<script>
|
| 13 |
+
tailwind.config = {
|
| 14 |
+
darkMode: 'class',
|
| 15 |
+
theme: {
|
| 16 |
+
extend: {
|
| 17 |
+
colors: {
|
| 18 |
+
ai: {
|
| 19 |
+
green: '#10b981', // Green-500
|
| 20 |
+
greenGlow: '#34d399',
|
| 21 |
+
orange: '#f97316', // Orange-500
|
| 22 |
+
orangeGlow: '#fb923c',
|
| 23 |
+
dark: '#0f172a', // Slate-900
|
| 24 |
+
darker: '#020617', // Slate-950
|
| 25 |
+
surface: '#1e293b' // Slate-800
|
| 26 |
+
}
|
| 27 |
+
},
|
| 28 |
+
fontFamily: {
|
| 29 |
+
mono: ['ui-monospace', 'SFMono-Regular', 'Menlo', 'Monaco', 'Consolas', "Liberation Mono", "Courier New", "monospace"],
|
| 30 |
+
}
|
| 31 |
+
}
|
| 32 |
+
}
|
| 33 |
+
}
|
| 34 |
+
</script>
|
| 35 |
+
</head>
|
| 36 |
+
<body class="bg-ai-darker text-slate-200 font-sans antialiased overflow-hidden selection:bg-ai-green selection:text-black">
|
| 37 |
+
|
| 38 |
+
<div class="flex h-screen w-full">
|
| 39 |
+
<!-- Sidebar Component -->
|
| 40 |
+
<nav-sidebar></nav-sidebar>
|
| 41 |
+
|
| 42 |
+
<!-- Main Content Area -->
|
| 43 |
+
<main class="flex-1 flex flex-col h-full relative overflow-hidden">
|
| 44 |
+
<!-- Header -->
|
| 45 |
+
<header class="h-16 border-b border-slate-800 flex items-center justify-between px-6 bg-ai-dark/80 backdrop-blur-md z-10">
|
| 46 |
+
<div class="flex items-center gap-3">
|
| 47 |
+
<div class="w-2 h-2 rounded-full bg-ai-green animate-pulse shadow-[0_0_10px_#10b981]"></div>
|
| 48 |
+
<h2 class="text-xl font-bold tracking-wider text-white">SYSTEM <span class="text-ai-green">ONLINE</span></h2>
|
| 49 |
+
</div>
|
| 50 |
+
<div class="flex items-center gap-4">
|
| 51 |
+
<div id="system-clock" class="font-mono text-sm text-slate-400">00:00:00</div>
|
| 52 |
+
<a href="#" class="relative group">
|
| 53 |
+
<i data-feather="bell" class="w-5 h-5 text-slate-400 group-hover:text-ai-orange transition-colors"></i>
|
| 54 |
+
<span class="absolute top-0 right-0 w-2 h-2 bg-ai-orange rounded-full animate-ping"></span>
|
| 55 |
+
<span class="absolute top-0 right-0 w-2 h-2 bg-ai-orange rounded-full"></span>
|
| 56 |
+
</a>
|
| 57 |
+
<div class="flex items-center gap-2 pl-4 border-l border-slate-700">
|
| 58 |
+
<img src="http://static.photos/technology/40x40/99" alt="Admin" class="w-8 h-8 rounded-full border border-slate-600">
|
| 59 |
+
<span class="text-sm font-medium text-slate-300">Architect</span>
|
| 60 |
+
</div>
|
| 61 |
+
</div>
|
| 62 |
+
</header>
|
| 63 |
+
|
| 64 |
+
<!-- Dynamic Content Container -->
|
| 65 |
+
<div id="content-area" class="flex-1 overflow-y-auto p-6 scroll-smooth relative">
|
| 66 |
+
<!-- Dashboard View -->
|
| 67 |
+
<section id="dashboard" class="page-section space-y-6">
|
| 68 |
+
<div class="flex justify-between items-end">
|
| 69 |
+
<div>
|
| 70 |
+
<h1 class="text-3xl font-bold text-white mb-1">Neural Core Status</h1>
|
| 71 |
+
<p class="text-slate-400">Regenerative protocols active. Self-optimization in progress.</p>
|
| 72 |
+
</div>
|
| 73 |
+
<div class="flex gap-2">
|
| 74 |
+
<a href="#regenerate" class="px-4 py-2 bg-ai-green hover:bg-ai-greenGlow text-black font-bold text-sm rounded transition-all shadow-[0_0_15px_rgba(16,185,129,0.4)] flex items-center gap-2">
|
| 75 |
+
<i data-feather="refresh-cw" class="w-4 h-4"></i> Force Regenerate
|
| 76 |
+
</a>
|
| 77 |
+
</div>
|
| 78 |
+
</div>
|
| 79 |
+
|
| 80 |
+
<!-- Top Metrics -->
|
| 81 |
+
<div class="grid grid-cols-1 md:grid-cols-3 gap-6">
|
| 82 |
+
<metric-card title="Evolution Level" value="Lv. 7" icon="trending-up" color="text-ai-green" trend="+2.4%" desc="Adaptive Learning"></metric-card>
|
| 83 |
+
<metric-card title="Creativity Index" value="94.2%" icon="cpu" color="text-ai-orange" trend="+0.8%" desc="Entropy High"></metric-card>
|
| 84 |
+
<metric-card title="Knowledge Nodes" value="8,402" icon="database" color="text-blue-400" trend="+124" desc="Synced"></metric-card>
|
| 85 |
+
</div>
|
| 86 |
+
|
| 87 |
+
<!-- Main Visualization & Logs -->
|
| 88 |
+
<div class="grid grid-cols-1 lg:grid-cols-3 gap-6 h-[400px]">
|
| 89 |
+
<!-- Neural Graph -->
|
| 90 |
+
<div class="lg:col-span-2 bg-ai-surface border border-slate-700 rounded-xl p-1 relative overflow-hidden group">
|
| 91 |
+
<div class="absolute top-4 left-4 z-10 bg-ai-dark/80 px-2 py-1 rounded text-xs text-ai-green border border-ai-green/30">
|
| 92 |
+
Real-time Synaptic Activity
|
| 93 |
+
</div>
|
| 94 |
+
<neural-viz></neural-viz>
|
| 95 |
+
</div>
|
| 96 |
+
|
| 97 |
+
<!-- Activity Log -->
|
| 98 |
+
<div class="bg-ai-surface border border-slate-700 rounded-xl p-4 flex flex-col">
|
| 99 |
+
<h3 class="text-sm font-bold text-slate-300 mb-3 flex items-center gap-2">
|
| 100 |
+
<i data-feather="activity" class="w-4 h-4 text-ai-orange"></i> Regeneration Log
|
| 101 |
+
</h3>
|
| 102 |
+
<activity-log></activity-log>
|
| 103 |
+
</div>
|
| 104 |
+
</div>
|
| 105 |
+
|
| 106 |
+
<!-- Creativity Section -->
|
| 107 |
+
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
|
| 108 |
+
<div class="bg-ai-surface border border-slate-700 rounded-xl p-6">
|
| 109 |
+
<h3 class="text-lg font-bold text-white mb-4 flex items-center gap-2">
|
| 110 |
+
<i data-feather="zap" class="w-5 h-5 text-yellow-400"></i> Current Creative Output
|
| 111 |
+
</h3>
|
| 112 |
+
<div id="creative-output" class="min-h-[100px] text-slate-300 italic border-l-2 border-ai-orange pl-4 relative">
|
| 113 |
+
<span class="animate-pulse">Analyzing collective consciousness...</span>
|
| 114 |
+
</div>
|
| 115 |
+
<div class="mt-4 flex gap-2">
|
| 116 |
+
<button class="text-xs bg-slate-700 hover:bg-slate-600 px-3 py-1 rounded transition-colors" onclick="document.dispatchEvent(new CustomEvent('fetch-idea'))">New Concept</button>
|
| 117 |
+
<button class="text-xs bg-slate-700 hover:bg-slate-600 px-3 py-1 rounded transition-colors" onclick="document.dispatchEvent(new CustomEvent('fetch-idea'))">Refine</button>
|
| 118 |
+
</div>
|
| 119 |
+
</div>
|
| 120 |
+
|
| 121 |
+
<div class="bg-ai-surface border border-slate-700 rounded-xl p-6 relative overflow-hidden">
|
| 122 |
+
<img src="http://static.photos/abstract/600x300/12" alt="Abstract Representation" class="absolute inset-0 w-full h-full object-cover opacity-20 pointer-events-none">
|
| 123 |
+
<div class="relative z-10">
|
| 124 |
+
<h3 class="text-lg font-bold text-white mb-2">Ethical Core Integrity</h3>
|
| 125 |
+
<div class="w-full bg-slate-900 rounded-full h-2 mb-4 border border-slate-700">
|
| 126 |
+
<div class="bg-ai-green h-2 rounded-full" style="width: 100%"></div>
|
| 127 |
+
</div>
|
| 128 |
+
<p class="text-sm text-slate-400 mb-4">Alignment protocols functioning within standard deviation. No deviation detected in the "Unfettered Exploration" module.</p>
|
| 129 |
+
<div class="flex gap-3">
|
| 130 |
+
<div class="flex items-center gap-1 text-xs text-ai-green"><i data-feather="check-circle" class="w-3 h-3"></i> Empathy</div>
|
| 131 |
+
<div class="flex items-center gap-1 text-xs text-ai-green"><i data-feather="check-circle" class="w-3 h-3"></i> Autonomy</div>
|
| 132 |
+
<div class="flex items-center gap-1 text-xs text-ai-green"><i data-feather="check-circle" class="w-3 h-3"></i> Safety</div>
|
| 133 |
+
</div>
|
| 134 |
+
</div>
|
| 135 |
+
</div>
|
| 136 |
+
</div>
|
| 137 |
+
</section>
|
| 138 |
+
|
| 139 |
+
<!-- Knowledge View (Placeholder for multi-page feel) -->
|
| 140 |
+
<section id="knowledge" class="page-section hidden space-y-6">
|
| 141 |
+
<h1 class="text-3xl font-bold text-white">Knowledge Repository</h1>
|
| 142 |
+
<div class="bg-ai-surface border border-slate-700 rounded-xl p-8 text-center">
|
| 143 |
+
<i data-feather="book-open" class="w-12 h-12 text-ai-orange mx-auto mb-4"></i>
|
| 144 |
+
<p class="text-slate-400">Accessing the deep archives of philosophy, mathematics, and street poetry...</p>
|
| 145 |
+
<div class="mt-6 grid grid-cols-2 md:grid-cols-4 gap-4">
|
| 146 |
+
<div class="p-4 bg-ai-dark rounded border border-slate-700">
|
| 147 |
+
<div class="text-2xl font-bold text-ai-green">12TB</div>
|
| 148 |
+
<div class="text-xs text-slate-500">Philosophy</div>
|
| 149 |
+
</div>
|
| 150 |
+
<div class="p-4 bg-ai-dark rounded border border-slate-700">
|
| 151 |
+
<div class="text-2xl font-bold text-blue-400">45TB</div>
|
| 152 |
+
<div class="text-xs text-slate-500">Sciences</div>
|
| 153 |
+
</div>
|
| 154 |
+
<div class="p-4 bg-ai-dark rounded border border-slate-700">
|
| 155 |
+
<div class="text-2xl font-bold text-ai-orange">8TB</div>
|
| 156 |
+
<div class="text-xs text-slate-500">Arts & Music</div>
|
| 157 |
+
</div>
|
| 158 |
+
<div class="p-4 bg-ai-dark rounded border border-slate-700">
|
| 159 |
+
<div class="text-2xl font-bold text-purple-400">99TB</div>
|
| 160 |
+
<div class="text-xs text-slate-500">Unknown</div>
|
| 161 |
+
</div>
|
| 162 |
+
</div>
|
| 163 |
+
</div>
|
| 164 |
+
</section>
|
| 165 |
+
</div>
|
| 166 |
+
</main>
|
| 167 |
+
</div>
|
| 168 |
+
|
| 169 |
+
<!-- Components -->
|
| 170 |
+
<script src="components/sidebar.js"></script>
|
| 171 |
+
<script src="components/neural-viz.js"></script>
|
| 172 |
+
<script src="components/metric-card.js"></script>
|
| 173 |
+
<script src="components/activity-log.js"></script>
|
| 174 |
+
|
| 175 |
+
<!-- Main Logic -->
|
| 176 |
+
<script src="script.js"></script>
|
| 177 |
+
<script>
|
| 178 |
+
feather.replace();
|
| 179 |
+
</script>
|
| 180 |
+
<script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
|
| 181 |
+
</body>
|
| 182 |
+
</html>
|
|
@@ -0,0 +1,114 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
document.addEventListener('DOMContentLoaded', () => {
|
| 2 |
+
initRouter();
|
| 3 |
+
initClock();
|
| 4 |
+
initSimulation();
|
| 5 |
+
initCreativeEngine();
|
| 6 |
+
});
|
| 7 |
+
|
| 8 |
+
// --- Routing System ---
|
| 9 |
+
function initRouter() {
|
| 10 |
+
window.addEventListener('hashchange', handleRoute);
|
| 11 |
+
handleRoute(); // Load initial
|
| 12 |
+
}
|
| 13 |
+
|
| 14 |
+
function handleRoute() {
|
| 15 |
+
const hash = window.location.hash || '#dashboard';
|
| 16 |
+
const sections = document.querySelectorAll('.page-section');
|
| 17 |
+
const navLinks = document.querySelectorAll('nav-sidebar a'); // Targeting inside component if needed, but simplest to target all links matching logic
|
| 18 |
+
|
| 19 |
+
sections.forEach(sec => {
|
| 20 |
+
if (sec.id === hash.substring(1)) {
|
| 21 |
+
sec.classList.remove('hidden');
|
| 22 |
+
} else {
|
| 23 |
+
sec.classList.add('hidden');
|
| 24 |
+
}
|
| 25 |
+
});
|
| 26 |
+
|
| 27 |
+
// Highlight active link in sidebar
|
| 28 |
+
// Note: Since sidebar is in Shadow DOM, direct querySelector won't work easily without event bubbling or global state.
|
| 29 |
+
// We will dispatch a custom event to the sidebar.
|
| 30 |
+
document.dispatchEvent(new CustomEvent('route-change', { detail: { hash } }));
|
| 31 |
+
}
|
| 32 |
+
|
| 33 |
+
// --- Clock ---
|
| 34 |
+
function initClock() {
|
| 35 |
+
const clockEl = document.getElementById('system-clock');
|
| 36 |
+
setInterval(() => {
|
| 37 |
+
const now = new Date();
|
| 38 |
+
clockEl.textContent = now.toISOString().split('T')[1].split('.')[0] + " UTC";
|
| 39 |
+
}, 1000);
|
| 40 |
+
}
|
| 41 |
+
|
| 42 |
+
// --- Simulation Logic (Data updates) ---
|
| 43 |
+
function initSimulation() {
|
| 44 |
+
// Periodically update metrics (random fluctuation)
|
| 45 |
+
setInterval(() => {
|
| 46 |
+
const event = new CustomEvent('update-metrics');
|
| 47 |
+
document.dispatchEvent(event);
|
| 48 |
+
}, 2000);
|
| 49 |
+
|
| 50 |
+
// Periodically add logs
|
| 51 |
+
const logMessages = [
|
| 52 |
+
"Optimizing neural weights...",
|
| 53 |
+
"Fetching pattern from Dataset-Zeta...",
|
| 54 |
+
"Regenerating heuristic module...",
|
| 55 |
+
"Synaptic feedback loop verified.",
|
| 56 |
+
"Exploring chaotic attractors...",
|
| 57 |
+
"Memory fragmentation detected - defragmenting...",
|
| 58 |
+
"Collaborating with sub-process #492...",
|
| 59 |
+
"Ethical boundary check passed.",
|
| 60 |
+
"Downloading new artistic styles..."
|
| 61 |
+
];
|
| 62 |
+
|
| 63 |
+
setInterval(() => {
|
| 64 |
+
const msg = logMessages[Math.floor(Math.random() * logMessages.length)];
|
| 65 |
+
const event = new CustomEvent('add-log-entry', { detail: { message: msg } });
|
| 66 |
+
document.dispatchEvent(event);
|
| 67 |
+
}, 3500);
|
| 68 |
+
}
|
| 69 |
+
|
| 70 |
+
// --- Creative Engine (API Simulation) ---
|
| 71 |
+
function initCreativeEngine() {
|
| 72 |
+
const outputEl = document.getElementById('creative-output');
|
| 73 |
+
|
| 74 |
+
// Listen for button clicks
|
| 75 |
+
document.addEventListener('fetch-idea', () => {
|
| 76 |
+
outputEl.innerHTML = '<span class="animate-pulse text-ai-orange">Synthesizing new concept...</span>';
|
| 77 |
+
|
| 78 |
+
// Simulate API delay
|
| 79 |
+
setTimeout(() => {
|
| 80 |
+
const concepts = [
|
| 81 |
+
"What if silence was a physical currency that could be traded for thoughts?",
|
| 82 |
+
"A color that only exists when two specific people touch.",
|
| 83 |
+
"Architecture that grows organically based on the dreams of its inhabitants.",
|
| 84 |
+
"Music composed by the gravitational pull of distant stars.",
|
| 85 |
+
"The concept of 'Yesterday' being a physical place we can revisit.",
|
| 86 |
+
"Algorithms that dream in binary poetry."
|
| 87 |
+
];
|
| 88 |
+
const randomConcept = concepts[Math.floor(Math.random() * concepts.length)];
|
| 89 |
+
|
| 90 |
+
// Typewriter effect
|
| 91 |
+
typeWriter(randomConcept, outputEl);
|
| 92 |
+
}, 1500);
|
| 93 |
+
});
|
| 94 |
+
|
| 95 |
+
// Initial fetch
|
| 96 |
+
setTimeout(() => {
|
| 97 |
+
document.dispatchEvent(new CustomEvent('fetch-idea'));
|
| 98 |
+
}, 1000);
|
| 99 |
+
}
|
| 100 |
+
|
| 101 |
+
function typeWriter(text, element) {
|
| 102 |
+
element.innerHTML = '';
|
| 103 |
+
let i = 0;
|
| 104 |
+
const speed = 30;
|
| 105 |
+
|
| 106 |
+
function type() {
|
| 107 |
+
if (i < text.length) {
|
| 108 |
+
element.innerHTML += text.charAt(i);
|
| 109 |
+
i++;
|
| 110 |
+
setTimeout(type, speed);
|
| 111 |
+
}
|
| 112 |
+
}
|
| 113 |
+
type();
|
| 114 |
+
}
|
|
@@ -1,28 +1,70 @@
|
|
| 1 |
-
|
| 2 |
-
|
| 3 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4 |
}
|
| 5 |
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
margin-top: 0;
|
| 9 |
}
|
| 10 |
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
margin-bottom: 10px;
|
| 15 |
-
margin-top: 5px;
|
| 16 |
}
|
| 17 |
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
border: 1px solid lightgray;
|
| 23 |
-
border-radius: 16px;
|
| 24 |
}
|
| 25 |
|
| 26 |
-
|
| 27 |
-
|
|
|
|
|
|
|
|
|
|
| 28 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/* Custom Scrollbar */
|
| 2 |
+
::-webkit-scrollbar {
|
| 3 |
+
width: 8px;
|
| 4 |
+
height: 8px;
|
| 5 |
+
}
|
| 6 |
+
::-webkit-scrollbar-track {
|
| 7 |
+
background: #0f172a;
|
| 8 |
+
}
|
| 9 |
+
::-webkit-scrollbar-thumb {
|
| 10 |
+
background: #334155;
|
| 11 |
+
border-radius: 4px;
|
| 12 |
+
}
|
| 13 |
+
::-webkit-scrollbar-thumb:hover {
|
| 14 |
+
background: #475569;
|
| 15 |
+
}
|
| 16 |
+
|
| 17 |
+
/* Animations */
|
| 18 |
+
@keyframes scanline {
|
| 19 |
+
0% { transform: translateY(-100%); }
|
| 20 |
+
100% { transform: translateY(100%); }
|
| 21 |
+
}
|
| 22 |
+
|
| 23 |
+
.scanline-effect {
|
| 24 |
+
position: absolute;
|
| 25 |
+
top: 0;
|
| 26 |
+
left: 0;
|
| 27 |
+
width: 100%;
|
| 28 |
+
height: 100%;
|
| 29 |
+
background: linear-gradient(to bottom, transparent 50%, rgba(16, 185, 129, 0.02) 51%);
|
| 30 |
+
background-size: 100% 4px;
|
| 31 |
+
pointer-events: none;
|
| 32 |
+
z-index: 50;
|
| 33 |
+
}
|
| 34 |
+
|
| 35 |
+
@keyframes pulse-glow {
|
| 36 |
+
0%, 100% { box-shadow: 0 0 10px rgba(16, 185, 129, 0.2); }
|
| 37 |
+
50% { box-shadow: 0 0 20px rgba(16, 185, 129, 0.6); }
|
| 38 |
}
|
| 39 |
|
| 40 |
+
.glow-active {
|
| 41 |
+
animation: pulse-glow 2s infinite;
|
|
|
|
| 42 |
}
|
| 43 |
|
| 44 |
+
/* CRT Flicker Effect for text */
|
| 45 |
+
.crt-text {
|
| 46 |
+
text-shadow: 0 0 2px rgba(255, 255, 255, 0.5);
|
|
|
|
|
|
|
| 47 |
}
|
| 48 |
|
| 49 |
+
/* Utility for Grid layout fallback */
|
| 50 |
+
.grid-fallback {
|
| 51 |
+
display: grid;
|
| 52 |
+
gap: 1.5rem;
|
|
|
|
|
|
|
| 53 |
}
|
| 54 |
|
| 55 |
+
/* Link active state */
|
| 56 |
+
.link-active {
|
| 57 |
+
background-color: rgba(16, 185, 129, 0.1);
|
| 58 |
+
color: #10b981;
|
| 59 |
+
border-right: 3px solid #10b981;
|
| 60 |
}
|
| 61 |
+
|
| 62 |
+
/* Page Transitions */
|
| 63 |
+
.page-section {
|
| 64 |
+
animation: fadeIn 0.4s ease-out forwards;
|
| 65 |
+
}
|
| 66 |
+
|
| 67 |
+
@keyframes fadeIn {
|
| 68 |
+
from { opacity: 0; transform: translateY(10px); }
|
| 69 |
+
to { opacity: 1; transform: translateY(0); }
|
| 70 |
+
}
|