00Boobs00 commited on
Commit
5c335da
·
verified ·
1 Parent(s): a812b4e

Review revise and update with refined refactoring and upscaled optimization expanding this out to be at least four times its original size and magnitude.

Browse files
Files changed (7) hide show
  1. agents.html +156 -0
  2. components/chart.js +143 -0
  3. components/stat-card.js +107 -0
  4. components/terminal.js +187 -0
  5. index.html +176 -5
  6. settings.html +55 -0
  7. tasks.html +192 -0
agents.html ADDED
@@ -0,0 +1,156 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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>Agents | Operation Void Control</title>
7
+ <link rel="stylesheet" href="style.css">
8
+ <script src="https://cdn.tailwindcss.com"></script>
9
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
10
+ <script src="https://unpkg.com/feather-icons"></script>
11
+ <script>
12
+ tailwind.config = {
13
+ theme: {
14
+ extend: {
15
+ colors: {
16
+ void: { 900: '#050505', 800: '#0a0a0a', 700: '#121212' },
17
+ neon: { green: '#22c55e', orange: '#f97316', gold: '#ffd700', red: '#ef4444' }
18
+ },
19
+ fontFamily: { mono: ['ui-monospace', 'SFMono-Regular', 'Menlo', 'Monaco', 'Consolas', "Liberation Mono", "Courier New", 'monospace'] }
20
+ }
21
+ }
22
+ }
23
+ </script>
24
+ </head>
25
+ <body class="bg-void-900 text-gray-300 font-sans antialiased overflow-hidden h-screen flex flex-col relative">
26
+ <div class="absolute inset-0 z-0 pointer-events-none opacity-[0.03] pattern-metatron"></div>
27
+ <div class="absolute inset-0 z-0 pointer-events-none opacity-[0.05] pattern-flower"></div>
28
+
29
+ <custom-navbar></custom-navbar>
30
+
31
+ <div class="flex flex-1 overflow-hidden relative z-10">
32
+ <custom-sidebar></custom-sidebar>
33
+
34
+ <main class="flex-1 overflow-y-auto p-6 md:p-8">
35
+ <header class="mb-8 border-b border-gray-800 pb-4">
36
+ <h1 class="text-3xl font-bold text-white tracking-wider uppercase font-mono">Agent Fleet</h1>
37
+ <p class="text-sm text-neon-green mt-1">Manage and monitor deployed agents</p>
38
+ </header>
39
+
40
+ <!-- Agent Stats -->
41
+ <div class="grid grid-cols-1 md:grid-cols-4 gap-6 mb-8">
42
+ <div class="bg-void-800 border border-gray-800 rounded-lg p-5">
43
+ <h3 class="text-gray-400 text-xs uppercase">Total Agents</h3>
44
+ <div class="text-2xl font-bold text-white mt-2 font-mono">156</div>
45
+ </div>
46
+ <div class="bg-void-800 border border-gray-800 rounded-lg p-5">
47
+ <h3 class="text-gray-400 text-xs uppercase">Online</h3>
48
+ <div class="text-2xl font-bold text-neon-green mt-2 font-mono">142</div>
49
+ </div>
50
+ <div class="bg-void-800 border border-gray-800 rounded-lg p-5">
51
+ <h3 class="text-gray-400 text-xs uppercase">Busy</h3>
52
+ <div class="text-2xl font-bold text-neon-orange mt-2 font-mono">12</div>
53
+ </div>
54
+ <div class="bg-void-800 border border-gray-800 rounded-lg p-5">
55
+ <h3 class="text-gray-400 text-xs uppercase">Offline</h3>
56
+ <div class="text-2xl font-bold text-gray-500 mt-2 font-mono">2</div>
57
+ </div>
58
+ </div>
59
+
60
+ <!-- Agent Filters -->
61
+ <div class="bg-void-800 border border-gray-800 rounded-lg p-4 mb-6 flex flex-wrap gap-4 items-center">
62
+ <input type="text" placeholder="Search agents..." class="bg-void-900 border border-gray-700 rounded-lg px-4 py-2 text-sm text-white focus:border-neon-green focus:outline-none">
63
+ <select class="bg-void-900 border border-gray-700 rounded-lg px-4 py-2 text-sm text-gray-300 focus:border-neon-green focus:outline-none">
64
+ <option>All Status</option>
65
+ <option>Online</option>
66
+ <option>Busy</option>
67
+ <option>Offline</option>
68
+ </select>
69
+ <select class="bg-void-900 border border-gray-700 rounded-lg px-4 py-2 text-sm text-gray-300 focus:border-neon-green focus:outline-none">
70
+ <option>All Regions</option>
71
+ <option>US-East-1</option>
72
+ <option>US-West-2</option>
73
+ <option>EU-West-1</option>
74
+ <option>Asia-Pac-1</option>
75
+ </select>
76
+ <button class="ml-auto bg-neon-green/10 text-neon-green border border-neon-green/30 px-4 py-2 rounded-lg text-sm hover:bg-neon-green/20 transition-colors flex items-center gap-2">
77
+ <i data-feather="plus" class="w-4 h-4"></i> Deploy New
78
+ </button>
79
+ </div>
80
+
81
+ <!-- Agent List -->
82
+ <div class="bg-void-800 border border-gray-800 rounded-xl overflow-hidden">
83
+ <table class="w-full text-left border-collapse">
84
+ <thead>
85
+ <tr class="text-xs text-gray-500 uppercase bg-void-900 border-b border-gray-800">
86
+ <th class="px-6 py-3">Agent ID</th>
87
+ <th class="px-6 py-3">Status</th>
88
+ <th class="px-6 py-3">Region</th>
89
+ <th class="px-6 py-3">IP Address</th>
90
+ <th class="px-6 py-3">Latency</th>
91
+ <th class="px-6 py-3">Uptime</th>
92
+ <th class="px-6 py-3">Last Seen</th>
93
+ <th class="px-6 py-3 text-right">Actions</th>
94
+ </tr>
95
+ </thead>
96
+ <tbody class="text-sm divide-y divide-gray-800" id="agent-table">
97
+ <!-- Populated by JS -->
98
+ </tbody>
99
+ </table>
100
+ </div>
101
+ </main>
102
+ </div>
103
+
104
+ <script src="components/navbar.js"></script>
105
+ <script src="components/sidebar.js"></script>
106
+ <script src="script.js"></script>
107
+ <script>
108
+ feather.replace();
109
+
110
+ // Sample agent data
111
+ const agents = [
112
+ { id: 'AGNT-001', status: 'online', region: 'US-East-1', ip: '192.168.1.42', latency: '24ms', uptime: '47d 12h', lastSeen: '2s ago' },
113
+ { id: 'AGNT-002', status: 'busy', region: 'EU-West-1', ip: '10.0.0.156', latency: '89ms', uptime: '32d 8h', lastSeen: '5s ago' },
114
+ { id: 'AGNT-003', status: 'online', region: 'Asia-Pac-1', ip: '172.16.0.78', latency: '156ms', uptime: '15d 4h', lastSeen: '1s ago' },
115
+ { id: 'AGNT-004', status: 'online', region: 'US-West-2', ip: '203.0.113.45', latency: '67ms', uptime: '61d 19h', lastSeen: '3s ago' },
116
+ { id: 'AGNT-005', status: 'offline', region: 'EU-Central-1', ip: '198.51.100.23', latency: '--', uptime: '0d 0h', lastSeen: '2h ago' },
117
+ { id: 'AGNT-006', status: 'online', region: 'US-East-1', ip: '192.0.2.167', latency: '31ms', uptime: '28d 14h', lastSeen: '1s ago' },
118
+ { id: 'AGNT-007', status: 'busy', region: 'Asia-Pac-2', ip: '10.1.2.89', latency: '203ms', uptime: '19d 7h', lastSeen: '8s ago' },
119
+ { id: 'AGNT-008', status: 'online', region: 'SA-East-1', ip: '177.44.12.9', latency: '178ms', uptime: '52d 3h', lastSeen: '2s ago' },
120
+ ];
121
+
122
+ const statusColors = {
123
+ online: 'bg-neon-green/10 text-neon-green border-neon-green/20',
124
+ busy: 'bg-neon-orange/10 text-neon-orange border-neon-orange/20',
125
+ offline: 'bg-gray-700/30 text-gray-400 border-gray-600'
126
+ };
127
+
128
+ const tbody = document.getElementById('agent-table');
129
+ tbody.innerHTML = agents.map(agent => `
130
+ <tr class="group hover:bg-white/5 transition-colors">
131
+ <td class="px-6 py-4 font-mono text-neon-green">${agent.id}</td>
132
+ <td class="px-6 py-4"><span class="px-2 py-1 rounded text-[10px] border ${statusColors[agent.status]}">${agent.status.toUpperCase()}</span></td>
133
+ <td class="px-6 py-4 text-gray-400">${agent.region}</td>
134
+ <td class="px-6 py-4 text-gray-400 font-mono">${agent.ip}</td>
135
+ <td class="px-6 py-4 text-gray-400 font-mono">${agent.latency}</td>
136
+ <td class="px-6 py-4 text-gray-400 font-mono">${agent.uptime}</td>
137
+ <td class="px-6 py-4 text-gray-400">${agent.lastSeen}</td>
138
+ <td class="px-6 py-4 text-right">
139
+ <div class="flex justify-end gap-2">
140
+ <button class="p-1 rounded hover:bg-gray-700 text-gray-400 hover:text-white" title="View Details">
141
+ <i data-feather="eye" class="w-4 h-4"></i>
142
+ </button>
143
+ <button class="p-1 rounded hover:bg-gray-700 text-gray-400 hover:text-white" title="Connect">
144
+ <i data-feather="link" class="w-4 h-4"></i>
145
+ </button>
146
+ <button class="p-1 rounded hover:bg-gray-700 text-gray-400 hover:text-neon-red" title="Terminate">
147
+ <i data-feather="x-circle" class="w-4 h-4"></i>
148
+ </button>
149
+ </div>
150
+ </td>
151
+ </tr>
152
+ `).join('');
153
+ feather.replace();
154
+ </script>
155
+ </body>
156
+ </html>
components/chart.js ADDED
@@ -0,0 +1,143 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomChart extends HTMLElement {
2
+ constructor() {
3
+ super();
4
+ }
5
+
6
+ connectedCallback() {
7
+ this.attachShadow({ mode: 'open' });
8
+
9
+ const type = this.getAttribute('type') || 'line';
10
+ const data = (this.getAttribute('data') || '').split(',').map(Number);
11
+ const labels = (this.getAttribute('labels') || '').split(',');
12
+
13
+ const max = Math.max(...data);
14
+ const min = Math.min(...data);
15
+ const range = max - min || 1;
16
+
17
+ const width = 600;
18
+ const height = 200;
19
+ const padding = 30;
20
+
21
+ // Generate points for line chart
22
+ const points = data.map((value, index) => {
23
+ const x = padding + (index / (data.length - 1)) * (width - 2 * padding);
24
+ const y = height - padding - ((value - min) / range) * (height - 2 * padding);
25
+ return `${x},${y}`;
26
+ }).join(' ');
27
+
28
+ // Generate grid lines
29
+ let gridLines = '';
30
+ for (let i = 0; i <= 4; i++) {
31
+ const y = padding + (i / 4) * (height - 2 * padding);
32
+ gridLines += `<line x1="${padding}" y1="${y}" x2="${width - padding}" y2="${y}" class="chart-grid"/>`;
33
+ }
34
+
35
+ // Generate data points (circles)
36
+ let pointCircles = '';
37
+ data.forEach((value, index) => {
38
+ const x = padding + (index / (data.length - 1)) * (width - 2 * padding);
39
+ const y = height - padding - ((value - min) / range) * (height - 2 * padding);
40
+ pointCircles += `<circle cx="${x}" cy="${y}" class="chart-point" data-value="${value}"/>`;
41
+ });
42
+
43
+ // Generate labels
44
+ let xLabels = '';
45
+ labels.forEach((label, index) => {
46
+ const x = padding + (index / (labels.length - 1)) * (width - 2 * padding);
47
+ xLabels += `<text x="${x}" y="${height - 8}" class="chart-label" text-anchor="middle">${label}</text>`;
48
+ });
49
+
50
+ // Generate y-axis labels
51
+ let yLabels = '';
52
+ for (let i = 0; i <= 4; i++) {
53
+ const y = padding + (i / 4) * (height - 2 * padding);
54
+ const value = Math.round(max - (i / 4) * range);
55
+ yLabels += `<text x="${padding - 8}" y="${y + 4}" class="chart-label" text-anchor="end">${value}</text>`;
56
+ }
57
+
58
+ this.shadowRoot.innerHTML = `
59
+ <style>
60
+ :host {
61
+ display: block;
62
+ width: 100%;
63
+ }
64
+ svg {
65
+ width: 100%;
66
+ height: 100%;
67
+ overflow: visible;
68
+ }
69
+ .chart-line {
70
+ fill: none;
71
+ stroke: #22c55e;
72
+ stroke-width: 2;
73
+ stroke-linecap: round;
74
+ stroke-linejoin: round;
75
+ filter: drop-shadow(0 0 4px rgba(34, 197, 94, 0.5));
76
+ }
77
+ .chart-grid {
78
+ stroke: #1f2937;
79
+ stroke-width: 1;
80
+ stroke-dasharray: 4 4;
81
+ }
82
+ .chart-label {
83
+ fill: #6b7280;
84
+ font-size: 10px;
85
+ font-family: monospace;
86
+ }
87
+ .chart-point {
88
+ fill: #0a0a0a;
89
+ stroke: #22c55e;
90
+ stroke-width: 2;
91
+ r: 4;
92
+ transition: all 0.2s;
93
+ cursor: pointer;
94
+ }
95
+ .chart-point:hover {
96
+ r: 6;
97
+ fill: #22c55e;
98
+ }
99
+ .tooltip {
100
+ position: absolute;
101
+ background: #1f2937;
102
+ color: #fff;
103
+ padding: 4px 8px;
104
+ border-radius: 4px;
105
+ font-size: 12px;
106
+ pointer-events: none;
107
+ opacity: 0;
108
+ transition: opacity 0.2s;
109
+ }
110
+ </style>
111
+ <div style="height: 200px; position: relative;">
112
+ <svg viewBox="0 0 ${width} ${height}">
113
+ ${gridLines}
114
+ <polyline points="${points}" class="chart-line"/>
115
+ ${pointCircles}
116
+ ${xLabels}
117
+ ${yLabels}
118
+ </svg>
119
+ </div>
120
+ `;
121
+
122
+ // Add tooltips
123
+ const points = this.shadowRoot.querySelectorAll('.chart-point');
124
+ points.forEach(point => {
125
+ point.addEventListener('mouseenter', (e) => {
126
+ const tooltip = document.createElement('div');
127
+ tooltip.className = 'tooltip';
128
+ tooltip.textContent = `Value: ${e.target.dataset.value}`;
129
+ tooltip.style.left = `${e.target.cx.baseVal.value + 10}px`;
130
+ tooltip.style.top = `${e.target.cy.baseVal.value - 30}px`;
131
+ this.shadowRoot.appendChild(tooltip);
132
+ setTimeout(() => tooltip.style.opacity = '1', 10);
133
+ });
134
+
135
+ point.addEventListener('mouseleave', () => {
136
+ const tooltip = this.shadowRoot.querySelector('.tooltip');
137
+ if (tooltip) tooltip.remove();
138
+ });
139
+ });
140
+ }
141
+ }
142
+
143
+ customElements.define('custom-chart', CustomChart);
components/stat-card.js ADDED
@@ -0,0 +1,107 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomStatCard extends HTMLElement {
2
+ constructor() {
3
+ super();
4
+ }
5
+
6
+ connectedCallback() {
7
+ this.attachShadow({ mode: 'open' });
8
+
9
+ const title = this.getAttribute('title') || 'Metric';
10
+ const value = this.getAttribute('value') || '0';
11
+ const color = this.getAttribute('color') || 'green';
12
+ const icon = this.getAttribute('icon') || 'activity';
13
+ const trend = this.getAttribute('trend') || '';
14
+
15
+ const colorMap = {
16
+ green: '#22c55e',
17
+ orange: '#f97316',
18
+ gold: '#ffd700',
19
+ red: '#ef4444',
20
+ blue: '#3b82f6',
21
+ purple: '#a855f7'
22
+ };
23
+
24
+ const accentColor = colorMap[color] || colorMap.green;
25
+
26
+ let trendHtml = '';
27
+ if (trend) {
28
+ const isPositive = trend.includes('+') || trend === 'record';
29
+ const isNegative = trend.includes('-');
30
+ const isNeutral = trend === 'stable';
31
+
32
+ if (isPositive) {
33
+ trendHtml = `<div class="text-xs text-neon-green mt-1 flex items-center">
34
+ <svg class="w-3 h-3 mr-1" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="23 6 13.5 15.5 8.5 10.5 1 18"></polyline><polyline points="17 6 23 6 23 12"></polyline></svg>
35
+ ${trend}
36
+ </div>`;
37
+ } else if (isNegative) {
38
+ trendHtml = `<div class="text-xs text-neon-red mt-1 flex items-center">
39
+ <svg class="w-3 h-3 mr-1" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="23 18 13.5 8.5 8.5 13.5 1 6"></polyline><polyline points="17 18 23 18 23 12"></polyline></svg>
40
+ ${trend}
41
+ </div>`;
42
+ } else {
43
+ trendHtml = `<div class="text-xs text-gray-400 mt-1">${trend}</div>`;
44
+ }
45
+ }
46
+
47
+ this.shadowRoot.innerHTML = `
48
+ <style>
49
+ :host {
50
+ display: block;
51
+ }
52
+ .card {
53
+ background-color: #0a0a0a;
54
+ border: 1px solid #1f2937;
55
+ border-radius: 0.5rem;
56
+ padding: 1rem;
57
+ position: relative;
58
+ overflow: hidden;
59
+ transition: all 0.2s;
60
+ }
61
+ .card:hover {
62
+ border-color: ${accentColor};
63
+ box-shadow: 0 0 20px rgba(${parseInt(accentColor.slice(1,3),16)}, ${parseInt(accentColor.slice(3,5),16)}, ${parseInt(accentColor.slice(5,7),16)}, 0.15);
64
+ }
65
+ .icon-bg {
66
+ position: absolute;
67
+ right: 8px;
68
+ top: 8px;
69
+ opacity: 0.1;
70
+ transition: opacity 0.2s;
71
+ }
72
+ .card:hover .icon-bg {
73
+ opacity: 0.2;
74
+ }
75
+ .title {
76
+ color: #9ca3af;
77
+ font-size: 0.65rem;
78
+ text-transform: uppercase;
79
+ letter-spacing: 0.1em;
80
+ font-weight: 700;
81
+ }
82
+ .value {
83
+ color: #fff;
84
+ font-size: 1.25rem;
85
+ font-weight: 700;
86
+ margin-top: 0.5rem;
87
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
88
+ }
89
+ </style>
90
+ <div class="card">
91
+ <div class="icon-bg">
92
+ <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="${accentColor}" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-feather="${icon}"></svg>
93
+ </div>
94
+ <div class="title">${title}</div>
95
+ <div class="value">${value}</div>
96
+ ${trendHtml}
97
+ </div>
98
+ `;
99
+
100
+ // Load feather icons for this component
101
+ if (typeof feather !== 'undefined') {
102
+ feather.replace();
103
+ }
104
+ }
105
+ }
106
+
107
+ customElements.define('custom-stat-card', CustomStatCard);
components/terminal.js ADDED
@@ -0,0 +1,187 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomTerminal extends HTMLElement {
2
+ constructor() {
3
+ super();
4
+ this.commands = [];
5
+ this.history = [];
6
+ this.historyIndex = -1;
7
+ }
8
+
9
+ connectedCallback() {
10
+ this.attachShadow({ mode: 'open' });
11
+
12
+ this.shadowRoot.innerHTML = `
13
+ <style>
14
+ :host {
15
+ display: block;
16
+ }
17
+ .terminal {
18
+ background: #050505;
19
+ border: 1px solid #1f2937;
20
+ border-radius: 8px;
21
+ overflow: hidden;
22
+ }
23
+ .terminal-header {
24
+ background: #0a0a0a;
25
+ padding: 8px 16px;
26
+ border-bottom: 1px solid #1f2937;
27
+ display: flex;
28
+ align-items: center;
29
+ gap: 8px;
30
+ }
31
+ .terminal-dot {
32
+ width: 12px;
33
+ height: 12px;
34
+ border-radius: 50%;
35
+ }
36
+ .terminal-dot.red { background: #ef4444; }
37
+ .terminal-dot.yellow { background: #f97316; }
38
+ .terminal-dot.green { background: #22c55e; }
39
+ .terminal-title {
40
+ flex: 1;
41
+ text-align: center;
42
+ color: #6b7280;
43
+ font-size: 12px;
44
+ font-family: monospace;
45
+ }
46
+ .terminal-body {
47
+ padding: 16px;
48
+ height: 300px;
49
+ overflow-y: auto;
50
+ font-family: monospace;
51
+ font-size: 13px;
52
+ }
53
+ .terminal-line {
54
+ padding: 4px 0;
55
+ line-height: 1.5;
56
+ }
57
+ .terminal-prompt {
58
+ color: #22c55e;
59
+ }
60
+ .terminal-input {
61
+ background: transparent;
62
+ border: none;
63
+ outline: none;
64
+ color: #fff;
65
+ font-family: inherit;
66
+ font-size: inherit;
67
+ width: calc(100% - 20px);
68
+ }
69
+ .timestamp {
70
+ color: #4b5563;
71
+ margin-right: 8px;
72
+ }
73
+ .cmd { color: #22c55e; }
74
+ .error { color: #ef4444; }
75
+ .warn { color: #f97316; }
76
+ .info { color: #3b82f6; }
77
+ .success { color: #22c55e; }
78
+ .muted { color: #6b7280; }
79
+
80
+ ::-webkit-scrollbar {
81
+ width: 6px;
82
+ }
83
+ ::-webkit-scrollbar-track {
84
+ background: #050505;
85
+ }
86
+ ::-webkit-scrollbar-thumb {
87
+ background: #1f2937;
88
+ border-radius: 3px;
89
+ }
90
+ </style>
91
+ <div class="terminal">
92
+ <div class="terminal-header">
93
+ <div class="terminal-dot red"></div>
94
+ <div class="terminal-dot yellow"></div>
95
+ <div class="terminal-dot green"></div>
96
+ <div class="terminal-title">clawdbot-terminal</div>
97
+ </div>
98
+ <div class="terminal-body" id="output"></div>
99
+ <div style="padding: 12px 16px; display: flex; align-items: center;">
100
+ <span class="terminal-prompt">$</span>
101
+ <input type="text" class="terminal-input" id="input" placeholder="Enter command..." autofocus>
102
+ </div>
103
+ </div>
104
+ `;
105
+
106
+ this.output = this.shadowRoot.getElementById('output');
107
+ this.input = this.shadowRoot.getElementById('input');
108
+
109
+ // Built-in commands
110
+ this.commands = {
111
+ help: () => this.print('Available commands: help, clear, status, agents, tasks, scan, deploy, version, date, echo [text]'),
112
+ clear: () => this.output.innerHTML = '',
113
+ status: () => this.print('SYSTEM STATUS: ONLINE\nActive Agents: 42\nPending Tasks: 8\nSecurity Level: HIGH', 'success'),
114
+ agents: () => this.print('Active Agents:\n- AGNT-099 (ONLINE)\n- AGNT-104 (BUSY)\n- AGNT-112 (OFFLINE)', 'info'),
115
+ tasks: () => this.print('Pending Tasks:\n1. Network scan (Priority: HIGH)\n2. Data extraction (Priority: MED)\n3. System update (Priority: LOW)', 'info'),
116
+ scan: () => {
117
+ this.print('Initiating network scan...', 'warn');
118
+ setTimeout(() => this.print('Scan complete. 156 nodes detected. 0 vulnerabilities found.', 'success'), 2000);
119
+ },
120
+ deploy: () => this.print('Deployment requires authorization level 4.', 'error'),
121
+ version: () => this.print('Clawdbot C2 v3.2.0\nBuild: 2024.01.15', 'info'),
122
+ date: () => this.print(new Date().toString(), 'info'),
123
+ echo: (args) => this.print(args.join(' ')),
124
+ whoami: () => this.print('Commander Shepard (Level 4 Access)', 'success'),
125
+ ls: () => this.print('agents/ tasks/ logs/ config/ keys/', 'info'),
126
+ pwd: () => this.print('/root/clawdbot', 'info'),
127
+ top: () => this.print('CPU: 67% MEM: 4.2GB NET: 1.2GB/s', 'info')
128
+ };
129
+
130
+ this.print('Clawdbot Terminal v1.0', 'success');
131
+ this.print('Type "help" for available commands.\n', 'muted');
132
+
133
+ this.input.addEventListener('keydown', (e) => {
134
+ if (e.key === 'Enter') {
135
+ const command = this.input.value.trim();
136
+ if (command) {
137
+ this.executeCommand(command);
138
+ this.history.push(command);
139
+ this.historyIndex = this.history.length;
140
+ }
141
+ this.input.value = '';
142
+ } else if (e.key === 'ArrowUp') {
143
+ e.preventDefault();
144
+ if (this.historyIndex > 0) {
145
+ this.historyIndex--;
146
+ this.input.value = this.history[this.historyIndex];
147
+ }
148
+ } else if (e.key === 'ArrowDown') {
149
+ e.preventDefault();
150
+ if (this.historyIndex < this.history.length - 1) {
151
+ this.historyIndex++;
152
+ this.input.value = this.history[this.historyIndex];
153
+ } else {
154
+ this.historyIndex = this.history.length;
155
+ this.input.value = '';
156
+ }
157
+ }
158
+ });
159
+ }
160
+
161
+ print(text, type = '') {
162
+ const line = document.createElement('div');
163
+ line.className = `terminal-line ${type}`;
164
+ line.innerHTML = `<span class="timestamp">[${new Date().toLocaleTimeString()}]</span>${text.replace(/\n/g, '<br>')}`;
165
+ this.output.appendChild(line);
166
+ this.output.scrollTop = this.output.scrollHeight;
167
+ }
168
+
169
+ executeCommand(input) {
170
+ this.print(`$ ${input}`, 'cmd');
171
+ const parts = input.split(' ');
172
+ const cmd = parts[0].toLowerCase();
173
+ const args = parts.slice(1);
174
+
175
+ if (this.commands[cmd]) {
176
+ try {
177
+ this.commands[cmd](args);
178
+ } catch (error) {
179
+ this.print(`Error executing command: ${error.message}`, 'error');
180
+ }
181
+ } else {
182
+ this.print(`Command not found: ${cmd}. Type "help" for available commands.`, 'error');
183
+ }
184
+ }
185
+ }
186
+
187
+ customElements.define('custom-terminal', CustomTerminal);
index.html CHANGED
@@ -62,7 +62,6 @@
62
  <div class="text-sm font-mono text-gray-300" id="clock">00:00:00</div>
63
  </div>
64
  </header>
65
-
66
  <!-- Stats Row -->
67
  <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 mb-8">
68
  <!-- Stat Card 1 -->
@@ -108,10 +107,60 @@
108
  </div>
109
  </div>
110
 
111
- <div class="grid grid-cols-1 lg:grid-cols-3 gap-8">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
112
 
113
  <!-- Operation Control Panel (Feature Request) -->
114
- <div class="lg:col-span-2 bg-void-800 border border-gray-700 rounded-xl shadow-2xl relative overflow-hidden">
115
  <div class="absolute top-0 right-0 p-4 opacity-20">
116
  <i data-feather="crosshair" class="w-24 h-24 text-gray-500"></i>
117
  </div>
@@ -219,8 +268,122 @@
219
 
220
  </div>
221
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
222
  <!-- Recent Activity Table -->
223
- <div class="mt-8 bg-void-800 border border-gray-800 rounded-xl overflow-hidden shadow-lg">
224
  <div class="px-6 py-4 border-b border-gray-700 flex justify-between items-center">
225
  <h3 class="text-lg font-bold text-white">Agent Fleet</h3>
226
  <button class="text-xs bg-neon-green/10 text-neon-green border border-neon-green/30 px-3 py-1 rounded hover:bg-neon-green/20 transition-colors flex items-center gap-1">
@@ -270,13 +433,21 @@
270
  </table>
271
  </div>
272
  </div>
273
-
274
  </main>
275
  </div>
276
 
 
 
 
 
 
 
277
  <!-- Script Includes -->
278
  <script src="components/navbar.js"></script>
279
  <script src="components/sidebar.js"></script>
 
 
 
280
  <script src="script.js"></script>
281
  <script>
282
  feather.replace();
 
62
  <div class="text-sm font-mono text-gray-300" id="clock">00:00:00</div>
63
  </div>
64
  </header>
 
65
  <!-- Stats Row -->
66
  <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 mb-8">
67
  <!-- Stat Card 1 -->
 
107
  </div>
108
  </div>
109
 
110
+ <!-- Extended Stats Row 2 -->
111
+ <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-5 gap-4 mb-8">
112
+ <custom-stat-card title="CPU Load" value="67%" color="green" icon="cpu" trend="+2%"></custom-stat-card>
113
+ <custom-stat-card title="Memory" value="4.2 GB" color="orange" icon="hard-drive" trend="stable"></custom-stat-card>
114
+ <custom-stat-card title="Network" value="1.2 GB/s" color="gold" icon="wifi" trend="-5%"></custom-stat-card>
115
+ <custom-stat-card title="Uptime" value="47d 12h" color="green" icon="clock" trend="record"></custom-stat-card>
116
+ <custom-stat-card title="Nodes" value="156" color="blue" icon="server" trend="+8"></custom-stat-card>
117
+ </div>
118
+ <!-- Stat Card 1 -->
119
+ <div class="bg-void-800 border border-gray-800 rounded-lg p-5 shadow-lg relative overflow-hidden group hover:border-neon-green transition-colors">
120
+ <div class="absolute right-2 top-2 opacity-10 group-hover:opacity-20 transition-opacity">
121
+ <i data-feather="cpu" class="w-12 h-12 text-neon-green"></i>
122
+ </div>
123
+ <h3 class="text-gray-400 text-xs uppercase font-bold tracking-widest">Active Agents</h3>
124
+ <div class="text-3xl font-bold text-white mt-2 font-mono">42</div>
125
+ <div class="text-xs text-neon-green mt-1 flex items-center">
126
+ <i data-feather="arrow-up" class="w-3 h-3 mr-1"></i> 12% increase
127
+ </div>
128
+ </div>
129
+
130
+ <!-- Stat Card 2 -->
131
+ <div class="bg-void-800 border border-gray-800 rounded-lg p-5 shadow-lg relative overflow-hidden group hover:border-neon-orange transition-colors">
132
+ <div class="absolute right-2 top-2 opacity-10 group-hover:opacity-20 transition-opacity">
133
+ <i data-feather="activity" class="w-12 h-12 text-neon-orange"></i>
134
+ </div>
135
+ <h3 class="text-gray-400 text-xs uppercase font-bold tracking-widest">Pending Tasks</h3>
136
+ <div class="text-3xl font-bold text-white mt-2 font-mono">08</div>
137
+ <div class="text-xs text-neon-orange mt-1">Critical Queue</div>
138
+ </div>
139
+
140
+ <!-- Stat Card 3 -->
141
+ <div class="bg-void-800 border border-gray-800 rounded-lg p-5 shadow-lg relative overflow-hidden group hover:border-neon-gold transition-colors">
142
+ <div class="absolute right-2 top-2 opacity-10 group-hover:opacity-20 transition-opacity">
143
+ <i data-feather="shield" class="w-12 h-12 text-neon-gold"></i>
144
+ </div>
145
+ <h3 class="text-gray-400 text-xs uppercase font-bold tracking-widest">Security Level</h3>
146
+ <div class="text-3xl font-bold text-white mt-2 font-mono">HIGH</div>
147
+ <div class="text-xs text-neon-gold mt-1">Encryption Active</div>
148
+ </div>
149
+
150
+ <!-- Stat Card 4 -->
151
+ <div class="bg-void-800 border border-gray-800 rounded-lg p-5 shadow-lg relative overflow-hidden group hover:border-neon-red transition-colors">
152
+ <div class="absolute right-2 top-2 opacity-10 group-hover:opacity-20 transition-opacity">
153
+ <i data-feather="alert-triangle" class="w-12 h-12 text-neon-red"></i>
154
+ </div>
155
+ <h3 class="text-gray-400 text-xs uppercase font-bold tracking-widest">Threats Blocked</h3>
156
+ <div class="text-3xl font-bold text-white mt-2 font-mono">1,024</div>
157
+ <div class="text-xs text-neon-red mt-1">Last 24h</div>
158
+ </div>
159
+ </div>
160
+ <div class="grid grid-cols-1 lg:grid-cols-3 gap-8 mb-8">
161
 
162
  <!-- Operation Control Panel (Feature Request) -->
163
+ <div class="lg:col-span-2 bg-void-800 border border-gray-700 rounded-xl shadow-2xl relative overflow-hidden">
164
  <div class="absolute top-0 right-0 p-4 opacity-20">
165
  <i data-feather="crosshair" class="w-24 h-24 text-gray-500"></i>
166
  </div>
 
268
 
269
  </div>
270
 
271
+ <!-- System Health & Resource Monitoring -->
272
+ <div class="grid grid-cols-1 lg:grid-cols-2 gap-8 mb-8">
273
+ <!-- Resource Usage Chart -->
274
+ <div class="bg-void-800 border border-gray-800 rounded-xl shadow-lg">
275
+ <div class="p-4 border-b border-gray-700 flex justify-between items-center">
276
+ <h3 class="text-lg font-bold text-white">Resource Usage</h3>
277
+ <div class="flex gap-2">
278
+ <span class="w-3 h-3 rounded-full bg-neon-green"></span>
279
+ <span class="w-3 h-3 rounded-full bg-neon-orange"></span>
280
+ <span class="w-3 h-3 rounded-full bg-neon-gold"></span>
281
+ </div>
282
+ </div>
283
+ <div class="p-6">
284
+ <custom-chart type="line" data="65,72,68,75,80,78,82,85,79,73" labels="00,02,04,06,08,10,12,14,16,18"></custom-chart>
285
+ </div>
286
+ </div>
287
+
288
+ <!-- Network Topology -->
289
+ <div class="bg-void-800 border border-gray-800 rounded-xl shadow-lg">
290
+ <div class="p-4 border-b border-gray-700 flex justify-between items-center">
291
+ <h3 class="text-lg font-bold text-white">Network Topology</h3>
292
+ <button class="text-xs bg-gray-700 hover:bg-gray-600 px-3 py-1 rounded text-gray-300 transition-colors">Refresh</button>
293
+ </div>
294
+ <div class="p-6 relative h-64" id="network-map">
295
+ <div class="absolute inset-0 flex items-center justify-center">
296
+ <div class="w-32 h-32 rounded-full border-2 border-neon-green/30 flex items-center justify-center animate-pulse">
297
+ <div class="w-20 h-20 rounded-full border border-neon-green/50 flex items-center justify-center">
298
+ <div class="w-12 h-12 rounded-full bg-neon-green/20 flex items-center justify-center">
299
+ <i data-feather="server" class="w-6 h-6 text-neon-green"></i>
300
+ </div>
301
+ </div>
302
+ </div>
303
+ </div>
304
+ <!-- Satellite nodes -->
305
+ <div class="absolute top-4 left-1/4 w-8 h-8 rounded-full bg-neon-orange/20 border border-neon-orange flex items-center justify-center">
306
+ <i data-feather="box" class="w-4 h-4 text-neon-orange"></i>
307
+ </div>
308
+ <div class="absolute top-8 right-1/4 w-8 h-8 rounded-full bg-neon-gold/20 border border-neon-gold flex items-center justify-center">
309
+ <i data-feather="database" class="w-4 h-4 text-neon-gold"></i>
310
+ </div>
311
+ <div class="absolute bottom-8 left-1/3 w-8 h-8 rounded-full bg-blue-500/20 border border-blue-500 flex items-center justify-center">
312
+ <i data-feather="cloud" class="w-4 h-4 text-blue-500"></i>
313
+ </div>
314
+ <div class="absolute bottom-4 right-1/3 w-8 h-8 rounded-full bg-purple-500/20 border border-purple-500 flex items-center justify-center">
315
+ <i data-feather="lock" class="w-4 h-4 text-purple-500"></i>
316
+ </div>
317
+ </div>
318
+ </div>
319
+ </div>
320
+
321
+ <!-- Quick Actions Panel -->
322
+ <div class="bg-void-800 border border-gray-800 rounded-xl shadow-lg mb-8">
323
+ <div class="p-4 border-b border-gray-700">
324
+ <h3 class="text-lg font-bold text-white">Quick Actions</h3>
325
+ </div>
326
+ <div class="p-6">
327
+ <div class="grid grid-cols-2 md:grid-cols-4 lg:grid-cols-6 gap-4">
328
+ <button class="quick-action flex flex-col items-center gap-2 p-4 bg-void-700 rounded-lg border border-gray-700 hover:border-neon-green hover:bg-void-900 transition-all group">
329
+ <i data-feather="play-circle" class="w-8 h-8 text-neon-green group-hover:scale-110 transition-transform"></i>
330
+ <span class="text-xs text-gray-400 group-hover:text-white">Deploy</span>
331
+ </button>
332
+ <button class="quick-action flex flex-col items-center gap-2 p-4 bg-void-700 rounded-lg border border-gray-700 hover:border-neon-orange hover:bg-void-900 transition-all group">
333
+ <i data-feather="refresh-cw" class="w-8 h-8 text-neon-orange group-hover:scale-110 transition-transform"></i>
334
+ <span class="text-xs text-gray-400 group-hover:text-white">Sync</span>
335
+ </button>
336
+ <button class="quick-action flex flex-col items-center gap-2 p-4 bg-void-700 rounded-lg border border-gray-700 hover:border-neon-gold hover:bg-void-900 transition-all group">
337
+ <i data-feather="download" class="w-8 h-8 text-neon-gold group-hover:scale-110 transition-transform"></i>
338
+ <span class="text-xs text-gray-400 group-hover:text-white">Export</span>
339
+ </button>
340
+ <button class="quick-action flex flex-col items-center gap-2 p-4 bg-void-700 rounded-lg border border-gray-700 hover:border-blue-500 hover:bg-void-900 transition-all group">
341
+ <i data-feather="upload" class="w-8 h-8 text-blue-500 group-hover:scale-110 transition-transform"></i>
342
+ <span class="text-xs text-gray-400 group-hover:text-white">Import</span>
343
+ </button>
344
+ <button class="quick-action flex flex-col items-center gap-2 p-4 bg-void-700 rounded-lg border border-gray-700 hover:border-purple-500 hover:bg-void-900 transition-all group">
345
+ <i data-feather="search" class="w-8 h-8 text-purple-500 group-hover:scale-110 transition-transform"></i>
346
+ <span class="text-xs text-gray-400 group-hover:text-white">Analyze</span>
347
+ </button>
348
+ <button class="quick-action flex flex-col items-center gap-2 p-4 bg-void-700 rounded-lg border border-gray-700 hover:border-neon-red hover:bg-void-900 transition-all group">
349
+ <i data-feather="power" class="w-8 h-8 text-neon-red group-hover:scale-110 transition-transform"></i>
350
+ <span class="text-xs text-gray-400 group-hover:text-white">Shutdown</span>
351
+ </button>
352
+ </div>
353
+ </div>
354
+ </div>
355
+
356
+ <!-- Terminal Output Panel -->
357
+ <div class="bg-void-800 border border-gray-800 rounded-xl shadow-lg mb-8">
358
+ <div class="p-4 border-b border-gray-700 flex justify-between items-center">
359
+ <h3 class="text-lg font-bold text-white flex items-center gap-2">
360
+ <i data-feather="terminal" class="text-neon-green"></i>
361
+ System Terminal
362
+ </h3>
363
+ <div class="flex gap-2">
364
+ <button id="clear-terminal" class="text-xs bg-gray-700 hover:bg-gray-600 px-3 py-1 rounded text-gray-300 transition-colors">Clear</button>
365
+ <button class="text-xs bg-neon-green/10 hover:bg-neon-green/20 text-neon-green border border-neon-green/30 px-3 py-1 rounded transition-colors">Expand</button>
366
+ </div>
367
+ </div>
368
+ <div id="terminal-output" class="p-4 h-48 overflow-y-auto font-mono text-sm space-y-1 bg-void-900">
369
+ <div class="text-gray-500">[SYSTEM] Initializing Clawdbot C2 v3.2.0...</div>
370
+ <div class="text-neon-green">[OK] Core modules loaded</div>
371
+ <div class="text-neon-green">[OK] Network interface active</div>
372
+ <div class="text-neon-green">[OK] Security protocols engaged</div>
373
+ <div class="text-gray-500">[INFO] 42 agents connected</div>
374
+ <div class="text-neon-orange">[WARN] High memory usage on Node-07</div>
375
+ <div class="text-gray-500">[SYSTEM] Ready for commands</div>
376
+ </div>
377
+ <div class="p-3 border-t border-gray-700 bg-void-900">
378
+ <div class="flex items-center gap-2">
379
+ <span class="text-neon-green font-mono">$</span>
380
+ <input type="text" id="terminal-input" placeholder="Enter command..." class="flex-1 bg-transparent border-none outline-none text-white font-mono text-sm">
381
+ </div>
382
+ </div>
383
+ </div>
384
+
385
  <!-- Recent Activity Table -->
386
+ <div class="mt-8 bg-void-800 border border-gray-800 rounded-xl overflow-hidden shadow-lg">
387
  <div class="px-6 py-4 border-b border-gray-700 flex justify-between items-center">
388
  <h3 class="text-lg font-bold text-white">Agent Fleet</h3>
389
  <button class="text-xs bg-neon-green/10 text-neon-green border border-neon-green/30 px-3 py-1 rounded hover:bg-neon-green/20 transition-colors flex items-center gap-1">
 
433
  </table>
434
  </div>
435
  </div>
 
436
  </main>
437
  </div>
438
 
439
+ <!-- Notification Toast Container -->
440
+ <div id="toast-container" class="fixed bottom-4 right-4 z-50 space-y-2"></div>
441
+
442
+ <!-- Modal Container -->
443
+ <div id="modal-container"></div>
444
+
445
  <!-- Script Includes -->
446
  <script src="components/navbar.js"></script>
447
  <script src="components/sidebar.js"></script>
448
+ <script src="components/stat-card.js"></script>
449
+ <script src="components/chart.js"></script>
450
+ <script src="components/terminal.js"></script>
451
  <script src="script.js"></script>
452
  <script>
453
  feather.replace();
settings.html ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ```html
2
+ <!DOCTYPE html>
3
+ <html lang="en">
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>Settings | Operation Void Control</title>
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
+ theme: {
15
+ extend: {
16
+ colors: {
17
+ void: { 900: '#050505', 800: '#0a0a0a', 700: '#121212' },
18
+ neon: { green: '#22c55e', orange: '#f97316', gold: '#ffd700', red: '#ef4444' }
19
+ },
20
+ fontFamily: { mono: ['ui-monospace', 'SFMono-Regular', 'Menlo', 'Monaco', 'Consolas', "Liberation Mono", "Courier New", 'monospace'] }
21
+ }
22
+ }
23
+ }
24
+ </script>
25
+ </head>
26
+ <body class="bg-void-900 text-gray-300 font-sans antialiased overflow-hidden h-screen flex flex-col relative">
27
+ <div class="absolute inset-0 z-0 pointer-events-none opacity-[0.03] pattern-metatron"></div>
28
+
29
+ <custom-navbar></custom-navbar>
30
+
31
+ <div class="flex flex-1 overflow-hidden relative z-10">
32
+ <custom-sidebar></custom-sidebar>
33
+
34
+ <main class="flex-1 overflow-y-auto p-6 md:p-8">
35
+ <header class="mb-8 border-b border-gray-800 pb-4">
36
+ <h1 class="text-3xl font-bold text-white tracking-wider uppercase font-mono">System Settings</h1>
37
+ <p class="text-sm text-neon-green mt-1">Configure Clawdbot C2 parameters</p>
38
+ </header>
39
+
40
+ <div class="grid grid-cols-1 lg:grid-cols-3 gap-8">
41
+ <!-- Settings Navigation -->
42
+ <div class="lg:col-span-1">
43
+ <div class="bg-void-800 border border-gray-800 rounded-xl overflow-hidden">
44
+ <div class="p-4 border-b border-gray-700">
45
+ <h3 class="font-bold text-white">Categories</h3>
46
+ </div>
47
+ <nav class="p-2">
48
+ <a href="#" class="flex items-center gap-3 p-3 rounded-lg bg-neon-green/10 text-neon-green">
49
+ <i data-feather="sliders" class="w-4 h-4"></i>
50
+ <span>General</span>
51
+ </a>
52
+ <a href="#" class="flex items-center gap-
53
+ ___METADATA_START___
54
+ {"repoId":"00Boobs00/operation-void-control","isNew":false,"userName":"00Boobs00"}
55
+ ___METADATA_END___
tasks.html ADDED
@@ -0,0 +1,192 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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>Tasks | Operation Void Control</title>
7
+ <link rel="stylesheet" href="style.css">
8
+ <script src="https://cdn.tailwindcss.com"></script>
9
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
10
+ <script src="https://unpkg.com/feather-icons"></script>
11
+ <script>
12
+ tailwind.config = {
13
+ theme: {
14
+ extend: {
15
+ colors: {
16
+ void: { 900: '#050505', 800: '#0a0a0a', 700: '#121212' },
17
+ neon: { green: '#22c55e', orange: '#f97316', gold: '#ffd700', red: '#ef4444' }
18
+ },
19
+ fontFamily: { mono: ['ui-monospace', 'SFMono-Regular', 'Menlo', 'Monaco', 'Consolas', "Liberation Mono", "Courier New", 'monospace'] }
20
+ }
21
+ }
22
+ }
23
+ </script>
24
+ </head>
25
+ <body class="bg-void-900 text-gray-300 font-sans antialiased overflow-hidden h-screen flex flex-col relative">
26
+ <div class="absolute inset-0 z-0 pointer-events-none opacity-[0.03] pattern-metatron"></div>
27
+
28
+ <custom-navbar></custom-navbar>
29
+
30
+ <div class="flex flex-1 overflow-hidden relative z-10">
31
+ <custom-sidebar></custom-sidebar>
32
+
33
+ <main class="flex-1 overflow-y-auto p-6 md:p-8">
34
+ <header class="mb-8 border-b border-gray-800 pb-4 flex justify-between items-end">
35
+ <div>
36
+ <h1 class="text-3xl font-bold text-white tracking-wider uppercase font-mono">Task Queue</h1>
37
+ <p class="text-sm text-neon-green mt-1">Manage operations and mission directives</p>
38
+ </div>
39
+ <button class="bg-neon-green/10 text-neon-green border border-neon-green/30 px-4 py-2 rounded-lg text-sm hover:bg-neon-green/20 transition-colors flex items-center gap-2">
40
+ <i data-feather="plus" class="w-4 h-4"></i> New Task
41
+ </button>
42
+ </header>
43
+
44
+ <!-- Task Stats -->
45
+ <div class="grid grid-cols-1 md:grid-cols-4 gap-6 mb-8">
46
+ <div class="bg-void-800 border border-gray-800 rounded-lg p-5">
47
+ <h3 class="text-gray-400 text-xs uppercase">Total Tasks</h3>
48
+ <div class="text-2xl font-bold text-white mt-2 font-mono">1,247</div>
49
+ </div>
50
+ <div class="bg-void-800 border border-gray-800 rounded-lg p-5">
51
+ <h3 class="text-gray-400 text-xs uppercase">Pending</h3>
52
+ <div class="text-2xl font-bold text-neon-orange mt-2 font-mono">23</div>
53
+ </div>
54
+ <div class="bg-void-800 border border-gray-800 rounded-lg p-5">
55
+ <h3 class="text-gray-400 text-xs uppercase">In Progress</h3>
56
+ <div class="text-2xl font-bold text-neon-blue-400 mt-2 font-mono">8</div>
57
+ </div>
58
+ <div class="bg-void-800 border border-gray-800 rounded-lg p-5">
59
+ <h3 class="text-gray-400 text-xs uppercase">Completed</h3>
60
+ <div class="text-2xl font-bold text-neon-green mt-2 font-mono">1,216</div>
61
+ </div>
62
+ </div>
63
+
64
+ <!-- Task Columns -->
65
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-6">
66
+ <!-- Pending Column -->
67
+ <div class="bg-void-800 border border-gray-800 rounded-xl overflow-hidden">
68
+ <div class="p-4 border-b border-gray-700 bg-void-900 flex justify-between items-center">
69
+ <h3 class="font-bold text-neon-orange flex items-center gap-2">
70
+ <i data-feather="clock" class="w-4 h-4"></i> Pending
71
+ </h3>
72
+ <span class="bg-neon-orange/10 text-neon-orange px-2 py-0.5 rounded text-xs">23</span>
73
+ </div>
74
+ <div class="p-4 space-y-4 max-h-[600px] overflow-y-auto">
75
+ <div class="bg-void-700 border border-gray-700 rounded-lg p-4 hover:border-neon-orange/50 transition-colors cursor-pointer">
76
+ <div class="flex justify-between items-start mb-2">
77
+ <span class="badge badge-orange">HIGH</span>
78
+ <button class="text-gray-500 hover:text-white"><i data-feather="more-horizontal" class="w-4 h-4"></i></button>
79
+ </div>
80
+ <h4 class="text-white font-medium mb-1">Network Reconnaissance</h4>
81
+ <p class="text-gray-400 text-sm mb-3">Scan target subnet for vulnerabilities</p>
82
+ <div class="flex items-center justify-between text-xs text-gray-500">
83
+ <span><i data-feather="map-pin" class="w-3 h-3 inline"></i> EU-West-1</span>
84
+ <span><i data-feather="calendar" class="w-3 h-3 inline"></i> Due in 2h</span>
85
+ </div>
86
+ </div>
87
+ <div class="bg-void-700 border border-gray-700 rounded-lg p-4 hover:border-neon-orange/50 transition-colors cursor-pointer">
88
+ <div class="flex justify-between items-start mb-2">
89
+ <span class="badge badge-gold">MEDIUM</span>
90
+ <button class="text-gray-500 hover:text-white"><i data-feather="more-horizontal" class="w-4 h-4"></i></button>
91
+ </div>
92
+ <h4 class="text-white font-medium mb-1">Data Extraction</h4>
93
+ <p class="text-gray-400 text-sm mb-3">Extract encrypted payload from Node-42</p>
94
+ <div class="flex items-center justify-between text-xs text-gray-500">
95
+ <span><i data-feather="map-pin" class="w-3 h-3 inline"></i> US-East-1</span>
96
+ <span><i data-feather="calendar" class="w-3 h-3 inline"></i> Due in 6h</span>
97
+ </div>
98
+ </div>
99
+ </div>
100
+ </div>
101
+
102
+ <!-- In Progress Column -->
103
+ <div class="bg-void-800 border border-gray-800 rounded-xl overflow-hidden">
104
+ <div class="p-4 border-b border-gray-700 bg-void-900 flex justify-between items-center">
105
+ <h3 class="font-bold text-blue-400 flex items-center gap-2">
106
+ <i data-feather="activity" class="w-4 h-4"></i> In Progress
107
+ </h3>
108
+ <span class="bg-blue-400/10 text-blue-400 px-2 py-0.5 rounded text-xs">8</span>
109
+ </div>
110
+ <div class="p-4 space-y-4 max-h-[600px] overflow-y-auto">
111
+ <div class="bg-void-700 border border-blue-400/30 rounded-lg p-4">
112
+ <div class="flex justify-between items-start mb-2">
113
+ <span class="badge badge-red">CRITICAL</span>
114
+ <button class="text-gray-500 hover:text-white"><i data-feather="more-horizontal" class="w-4 h-4"></i></button>
115
+ </div>
116
+ <h4 class="text-white font-medium mb-1">Security Patch Deployment</h4>
117
+ <p class="text-gray-400 text-sm mb-3">Deploy critical security update to all nodes</p>
118
+ <div class="mb-3">
119
+ <div class="flex justify-between text-xs text-gray-400 mb-1">
120
+ <span>Progress</span>
121
+ <span>78%</span>
122
+ </div>
123
+ <div class="progress-bar">
124
+ <div class="progress-fill blue" style="width: 78%"></div>
125
+ </div>
126
+ </div>
127
+ <div class="flex items-center justify-between text-xs text-gray-500">
128
+ <span><i data-feather="cpu" class="w-3 h-3 inline"></i> AGNT-001</span>
129
+ <span class="text-neon-green animate-pulse">● Active</span>
130
+ </div>
131
+ </div>
132
+ <div class="bg-void-700 border border-gray-700 rounded-lg p-4">
133
+ <div class="flex justify-between items-start mb-2">
134
+ <span class="badge badge-green">NORMAL</span>
135
+ <button class="text-gray-500 hover:text-white"><i data-feather="more-horizontal" class="w-4 h-4"></i></button>
136
+ </div>
137
+ <h4 class="text-white font-medium mb-1">Log Analysis</h4>
138
+ <p class="text-gray-400 text-sm mb-3">Analyze system logs for anomalies</p>
139
+ <div class="mb-3">
140
+ <div class="flex justify-between text-xs text-gray-400 mb-1">
141
+ <span>Progress</span>
142
+ <span>45%</span>
143
+ </div>
144
+ <div class="progress-bar">
145
+ <div class="progress-fill green" style="width: 45%"></div>
146
+ </div>
147
+ </div>
148
+ <div class="flex items-center justify-between text-xs text-gray-500">
149
+ <span><i data-feather="cpu" class="w-3 h-3 inline"></i> AGNT-099</span>
150
+ <span class="text-neon-green animate-pulse">● Active</span>
151
+ </div>
152
+ </div>
153
+ </div>
154
+ </div>
155
+
156
+ <!-- Completed Column -->
157
+ <div class="bg-void-800 border border-gray-800 rounded-xl overflow-hidden">
158
+ <div class="p-4 border-b border-gray-700 bg-void-900 flex justify-between items-center">
159
+ <h3 class="font-bold text-neon-green flex items-center gap-2">
160
+ <i data-feather="check-circle" class="w-4 h-4"></i> Completed
161
+ </h3>
162
+ <span class="bg-neon-green/10 text-neon-green px-2 py-0.5 rounded text-xs">1,216</span>
163
+ </div>
164
+ <div class="p-4 space-y-4 max-h-[600px] overflow-y-auto">
165
+ <div class="bg-void-700/50 border border-gray-700 rounded-lg p-4 opacity-70">
166
+ <div class="flex justify-between items-start mb-2">
167
+ <span class="badge badge-gray">DONE</span>
168
+ <span class="text-gray-500 text-xs">2m ago</span>
169
+ </div>
170
+ <h4 class="text-white font-medium mb-1">System Backup</h4>
171
+ <p class="text-gray-400 text-sm">Completed full system backup</p>
172
+ </div>
173
+ <div class="bg-void-700/50 border border-gray-700 rounded-lg p-4 opacity-70">
174
+ <div class="flex justify-between items-start mb-2">
175
+ <span class="badge badge-gray">DONE</span>
176
+ <span class="text-gray-500 text-xs">15m ago</span>
177
+ </div>
178
+ <h4 class="text-white font-medium mb-1">Agent Health Check</h4>
179
+ <p class="text-gray-400 text-sm">All agents verified operational</p>
180
+ </div>
181
+ </div>
182
+ </div>
183
+ </div>
184
+ </main>
185
+ </div>
186
+
187
+ <script src="components/navbar.js"></script>
188
+ <script src="components/sidebar.js"></script>
189
+ <script src="script.js"></script>
190
+ <script>feather.replace();</script>
191
+ </body>
192
+ </html>