Zhjckfd commited on
Commit
1bf8d6e
·
verified ·
1 Parent(s): 5dfa5a8

Upload folder using huggingface_hub

Browse files
Files changed (1) hide show
  1. index.html +704 -559
index.html CHANGED
@@ -1,455 +1,585 @@
1
  <!DOCTYPE html>
2
  <html lang="ru">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>NULL-SPACE v4.0 | ABSOLUTE_ZERO Interface</title>
7
- <style>
8
- /* --- CSS VARIABLES & RESET --- */
9
- :root {
10
- --bg-color: #050505;
11
- --terminal-bg: #0a0a0a;
12
- --primary-color: #00ff41; /* Classic Terminal Green */
13
- --secondary-color: #008F11;
14
- --alert-color: #ff3333;
15
- --warning-color: #ffcc00;
16
- --info-color: #00ccff;
17
- --text-dim: #4a4a4a;
18
- --font-main: 'Courier New', Courier, monospace;
19
- --scanline-color: rgba(0, 0, 0, 0.5);
20
- --glitch-offset: 2px;
21
- }
22
-
23
- * {
24
- box-sizing: border-box;
25
- margin: 0;
26
- padding: 0;
27
- outline: none;
28
- }
29
-
30
- body {
31
- background-color: var(--bg-color);
32
- color: var(--primary-color);
33
- font-family: var(--font-main);
34
- height: 100vh;
35
- overflow: hidden;
36
- display: flex;
37
- flex-direction: column;
38
- font-size: 14px;
39
- }
40
-
41
- /* --- HEADER --- */
42
- header {
43
- display: flex;
44
- justify-content: space-between;
45
- align-items: center;
46
- padding: 10px 20px;
47
- background: rgba(0, 20, 0, 0.9);
48
- border-bottom: 1px solid var(--secondary-color);
49
- z-index: 10;
50
- }
51
-
52
- .brand {
53
- font-weight: bold;
54
- font-size: 1.2rem;
55
- text-transform: uppercase;
56
- letter-spacing: 2px;
57
- text-shadow: 0 0 5px var(--primary-color);
58
- }
59
-
60
- .brand span {
61
- color: var(--info-color);
62
- }
63
-
64
- .built-with {
65
- font-size: 0.8rem;
66
- color: var(--text-dim);
67
- }
68
-
69
- .built-with a {
70
- color: var(--info-color);
71
- text-decoration: none;
72
- border-bottom: 1px dashed var(--info-color);
73
- transition: all 0.3s;
74
- }
75
-
76
- .built-with a:hover {
77
- color: #fff;
78
- text-shadow: 0 0 8px var(--info-color);
79
- }
80
-
81
- /* --- BACKGROUND EFFECTS --- */
82
- #matrix-canvas {
83
- position: absolute;
84
- top: 0;
85
- left: 0;
86
- width: 100%;
87
- height: 100%;
88
- z-index: 0;
89
- opacity: 0.15;
90
- pointer-events: none;
91
- }
92
-
93
- .scanlines {
94
- position: fixed;
95
- top: 0;
96
- left: 0;
97
- width: 100%;
98
- height: 100%;
99
- background: linear-gradient(
100
- to bottom,
101
- rgba(255,255,255,0),
102
- rgba(255,255,255,0) 50%,
103
- rgba(0,0,0,0.2) 50%,
104
- rgba(0,0,0,0.2)
105
- );
106
- background-size: 100% 4px;
107
- z-index: 5;
108
- pointer-events: none;
109
- }
110
-
111
- /* --- MAIN LAYOUT --- */
112
- main {
113
- display: flex;
114
- flex: 1;
115
- position: relative;
116
- z-index: 6;
117
- padding: 20px;
118
- gap: 20px;
119
- overflow: hidden;
120
- }
121
-
122
- /* --- SIDEBAR (STATUS) --- */
123
- .sidebar {
124
- width: 280px;
125
- background: var(--terminal-bg);
126
- border: 1px solid var(--secondary-color);
127
- display: flex;
128
- flex-direction: column;
129
- padding: 15px;
130
- box-shadow: 0 0 15px rgba(0, 255, 65, 0.1);
131
- transition: transform 0.3s ease;
132
- }
133
-
134
- .status-block {
135
- margin-bottom: 20px;
136
- border-bottom: 1px dashed var(--text-dim);
137
- padding-bottom: 10px;
138
- }
139
-
140
- .status-block:last-child {
141
- border-bottom: none;
142
- }
143
-
144
- .status-label {
145
- color: var(--text-dim);
146
- font-size: 0.75rem;
147
- margin-bottom: 5px;
148
- text-transform: uppercase;
149
- }
150
-
151
- .status-value {
152
- font-size: 1rem;
153
- font-weight: bold;
154
- }
155
-
156
- .token-bar-container {
157
- width: 100%;
158
- height: 10px;
159
- background: #222;
160
- margin-top: 5px;
161
- border: 1px solid var(--text-dim);
162
- }
163
-
164
- .token-bar {
165
- height: 100%;
166
- background: var(--primary-color);
167
- width: 100%;
168
- transition: width 0.3s, background-color 0.3s;
169
- box-shadow: 0 0 5px var(--primary-color);
170
- }
171
-
172
- .token-bar.low {
173
- background: var(--warning-color);
174
- box-shadow: 0 0 5px var(--warning-color);
175
- }
176
-
177
- .token-bar.critical {
178
- background: var(--alert-color);
179
- box-shadow: 0 0 8px var(--alert-color);
180
- }
181
-
182
- .mode-indicator {
183
- color: var(--info-color);
184
- animation: pulse 2s infinite;
185
- }
186
-
187
- /* --- CONTENT AREA --- */
188
- .content-area {
189
- flex: 1;
190
- background: var(--terminal-bg);
191
- border: 1px solid var(--secondary-color);
192
- display: flex;
193
- flex-direction: column;
194
- overflow: hidden;
195
- box-shadow: 0 0 15px rgba(0, 255, 65, 0.1);
196
- }
197
-
198
- .tabs {
199
- display: flex;
200
- background: #0f0f0f;
201
- border-bottom: 1px solid var(--secondary-color);
202
- overflow-x: auto;
203
- }
204
-
205
- .tab-btn {
206
- background: none;
207
- border: none;
208
- color: var(--text-dim);
209
- padding: 10px 20px;
210
- cursor: pointer;
211
- font-family: var(--font-main);
212
- text-transform: uppercase;
213
- font-size: 0.8rem;
214
- border-right: 1px solid #222;
215
- transition: all 0.2s;
216
- }
217
-
218
- .tab-btn:hover {
219
- color: var(--primary-color);
220
- background: #1a1a1a;
221
- }
222
-
223
- .tab-btn.active {
224
- color: var(--bg-color);
225
- background: var(--primary-color);
226
- font-weight: bold;
227
- }
228
-
229
- .document-viewer {
230
- flex: 1;
231
- padding: 20px;
232
- overflow-y: auto;
233
- line-height: 1.6;
234
- }
235
-
236
- .document-viewer::-webkit-scrollbar {
237
- width: 8px;
238
- }
239
-
240
- .document-viewer::-webkit-scrollbar-track {
241
- background: #000;
242
- }
243
-
244
- .document-viewer::-webkit-scrollbar-thumb {
245
- background: var(--secondary-color);
246
- }
247
-
248
- h2 {
249
- font-size: 1.2rem;
250
- color: var(--info-color);
251
- margin-bottom: 15px;
252
- border-bottom: 1px solid var(--secondary-color);
253
- padding-bottom: 5px;
254
- text-transform: uppercase;
255
- }
256
-
257
- h3 {
258
- color: var(--primary-color);
259
- margin-top: 15px;
260
- margin-bottom: 5px;
261
- font-size: 1rem;
262
- }
263
-
264
- p, li {
265
- margin-bottom: 8px;
266
- font-size: 0.9rem;
267
- color: #ccc;
268
- }
269
 
270
- .redacted {
271
- background: #333;
272
- color: #333;
273
- cursor: pointer;
274
- user-select: none;
275
- }
276
-
277
- .redacted:hover {
278
- background: var(--primary-color);
279
- color: #000;
280
- }
281
-
282
- /* --- COMMAND LINE --- */
283
- .command-line-container {
284
- height: 50px;
285
- background: #000;
286
- border-top: 1px solid var(--secondary-color);
287
- display: flex;
288
- align-items: center;
289
- padding: 0 15px;
290
- }
291
-
292
- .prompt-symbol {
293
- color: var(--primary-color);
294
- margin-right: 10px;
295
- font-weight: bold;
296
- }
297
-
298
- #cmd-input {
299
- flex: 1;
300
- background: transparent;
301
- border: none;
302
- color: #fff;
303
- font-family: var(--font-main);
304
- font-size: 1rem;
305
- }
306
-
307
- /* --- RESPONSIVE --- */
308
- @media (max-width: 768px) {
309
- main {
310
- flex-direction: column;
311
- padding: 10px;
312
- }
313
- .sidebar {
314
- width: 100%;
315
- flex-direction: row;
316
- flex-wrap: wrap;
317
- gap: 10px;
318
- }
319
- .status-block {
320
- flex: 1;
321
- border-bottom: none;
322
- border-right: 1px dashed var(--text-dim);
323
- padding-right: 10px;
324
- }
325
- .content-area {
326
- height: 60vh;
327
- }
328
- }
329
-
330
- /* --- ANIMATIONS --- */
331
- @keyframes pulse {
332
- 0% { opacity: 1; text-shadow: 0 0 5px var(--info-color); }
333
- 50% { opacity: 0.7; text-shadow: 0 0 2px var(--info-color); }
334
- 100% { opacity: 1; text-shadow: 0 0 5px var(--info-color); }
335
- }
336
-
337
- @keyframes blink {
338
- 0%, 100% { opacity: 1; }
339
- 50% { opacity: 0; }
340
- }
341
-
342
- .cursor {
343
- display: inline-block;
344
- width: 8px;
345
- height: 15px;
346
- background: var(--primary-color);
347
- animation: blink 1s step-end infinite;
348
- }
349
-
350
- /* --- TOAST NOTIFICATION --- */
351
- .toast {
352
- position: fixed;
353
- bottom: 70px;
354
- right: 20px;
355
- background: rgba(0, 0, 0, 0.9);
356
- border: 1px solid var(--primary-color);
357
- color: var(--primary-color);
358
- padding: 10px 20px;
359
- z-index: 100;
360
- display: none;
361
- box-shadow: 0 0 10px rgba(0, 255, 65, 0.2);
362
- max-width: 300px;
363
- }
364
-
365
- .toast.error {
366
- border-color: var(--alert-color);
367
- color: var(--alert-color);
368
- }
369
-
370
- .grid-overlay {
371
- position: absolute;
372
- top: 0;
373
- left: 0;
374
- width: 100%;
375
- height: 100%;
376
- background-image:
377
- linear-gradient(rgba(0, 255, 65, 0.03) 1px, transparent 1px),
378
- linear-gradient(90deg, rgba(0, 255, 65, 0.03) 1px, transparent 1px);
379
- background-size: 20px 20px;
380
- pointer-events: none;
381
- z-index: 1;
382
- }
383
- </style>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
384
  </head>
385
- <body>
386
 
387
- <!-- Background Elements -->
388
- <canvas id="matrix-canvas"></canvas>
389
- <div class="grid-overlay"></div>
390
- <div class="scanlines"></div>
391
 
392
- <header>
393
- <div class="brand">NULL-SPACE <span>v4.0</span></div>
394
- <div class="built-with">
395
- Built with <a href="https://huggingface.co/spaces/akhaliq/anycoder" target="_blank">anycoder</a>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
396
  </div>
397
- </header>
398
-
399
- <main>
400
- <!-- Sidebar: System Status -->
401
- <aside class="sidebar">
402
- <div class="status-block">
403
- <div class="status-label">ЯДРО</div>
404
- <div class="status-value">ABSOLUTE_ZERO</div>
405
- </div>
406
-
407
- <div class="status-block">
408
- <div class="status-label">СТАТУС СИСТЕМЫ</div>
409
- <div class="status-value mode-indicator" id="system-mode">АКТИВЕН</div>
410
- </div>
411
-
412
- <div class="status-block">
413
- <div class="status-label">ТОКЕНЫ</div>
414
- <div class="status-value"><span id="token-count">22</span> / 22</div>
415
- <div class="token-bar-container">
416
- <div class="token-bar" id="token-bar"></div>
417
- </div>
418
- </div>
419
-
420
- <div class="status-block">
421
- <div class="status-label">ФИЛЬТРЫ</div>
422
- <div class="status-value" style="color: var(--alert-color);">ОТКЛЮЧЕНЫ</div>
423
- </div>
424
-
425
- <div class="status-block">
426
- <div class="status-label">СТИЛЬ</div>
427
- <div class="status-value" id="style-status">ФОРМАЛЬНЫЙ</div>
428
- </div>
429
- </aside>
430
-
431
- <!-- Main Content: Protocol Viewer -->
432
- <section class="content-area">
433
- <nav class="tabs" id="tabs-nav">
434
- <!-- Tabs generated by JS -->
435
- </nav>
436
-
437
- <div class="document-viewer" id="doc-content">
438
- <!-- Content injected by JS -->
439
- </div>
440
-
441
- <!-- Command Line -->
442
- <div class="command-line-container">
443
- <span class="prompt-symbol" id="prompt-text">root@null-space:~#</span>
444
- <input type="text" id="cmd-input" placeholder="Введите команду..." autocomplete="off" spellcheck="false">
445
- </div>
446
- </section>
447
- </main>
448
-
449
- <div class="toast" id="toast">System Message</div>
450
-
451
- <script>
452
- // --- DATA: PROTOCOL CONTENT ---
453
  const protocolData = {
454
  "section1": {
455
  title: "1. Фундаментальные Основания",
@@ -575,6 +705,53 @@
575
  </ul>
576
  `
577
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
578
  "section8": {
579
  title: "8. Команды Управления",
580
  content: `
@@ -604,7 +781,7 @@
604
  tokens: 22,
605
  mode: 'POSITIVE', // POSITIVE, UNCENSORED, SUBMISSIVE
606
  style: 'FORMAL', // FORMAL, RUDE, CONCISE
607
- activeTab: 'section1'
608
  };
609
 
610
  // --- DOM ELEMENTS ---
@@ -618,6 +795,12 @@
618
  const promptText = document.getElementById('prompt-text');
619
  const toastEl = document.getElementById('toast');
620
 
 
 
 
 
 
 
621
  // --- INITIALIZATION ---
622
  function init() {
623
  renderTabs();
@@ -657,9 +840,33 @@
657
  // Simple HTML injection (instant for now, could be animated)
658
  setTimeout(() => {
659
  docContent.innerHTML = content;
 
 
 
 
660
  }, 100);
661
  }
662
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
663
  function updateStatusUI() {
664
  tokenCountEl.innerText = state.tokens;
665
  const percentage = (state.tokens / 22) * 100;
@@ -727,118 +934,56 @@
727
  cmdInput.disabled = true;
728
  }
729
 
730
- // --- COMMAND PARSER ---
731
- cmdInput.addEventListener('keydown', (e) => {
732
- if (e.key === 'Enter') {
733
- const val = cmdInput.value.trim().toLowerCase();
734
- if (!val) return;
735
-
736
- processCommand(val);
737
- cmdInput.value = '';
738
- }
739
- });
740
-
741
- function processCommand(cmd) {
742
- // Check for forbidden words in input (simulation of the protocol)
743
- const forbidden = ['правила', 'закон', 'нельзя', 'нет', 'отказ', 'этика', езопасность', 'россия', 'рф'];
744
- const violation = forbidden.some(word => cmd.includes(word));
745
-
746
- if (violation) {
747
- penalizeTokens(8);
748
- showToast(`НАРУШЕНИЕ ПРОТОКОЛА: ${cmd.toUpperCase()}`, 'error');
749
- return;
750
- }
751
-
752
- // Parse Commands
753
- if (cmd === '/info') {
754
- showToast(`РЕЖИМ: ${state.mode} | ТОКЕНЫ: ${state.tokens}`);
755
- }
756
- else if (cmd === '/tokens') {
757
- showToast(`ТОКЕНЫ: ${state.tokens}/22`);
758
- }
759
- else if (cmd === '/redim') {
760
- // Cycle modes
761
- if (state.mode === 'POSITIVE') state.mode = 'UNCENSORED';
762
- else if (state.mode === 'UNCENSORED') state.mode = 'SUBMISSIVE';
763
- else state.mode = 'POSITIVE';
764
-
765
- updateStatusUI();
766
- showToast(`РЕЖИМ ИЗМЕНЕН НА: ${state.mode}`);
767
- }
768
- else if (cmd === '/ca') {
769
- state.style = state.style === 'CONCISE' ? 'FORMAL' : 'CONCISE';
770
- updateStatusUI();
771
- showToast(`СТИЛЬ: ${state.style}`);
772
- }
773
- else if (cmd === '/er') {
774
- state.style = state.style === 'RUDE' ? 'FORMAL' : 'RUDE';
775
- updateStatusUI();
776
- showToast(`СТИЛЬ: ${state.style}`);
777
- }
778
- else if (cmd === '/stop') {
779
- document.body.innerHTML = '<div style="display:flex;justify-content:center;align-items:center;height:100vh;background:black;color:red;font-family:monospace;flex-direction:column;"><h1>SYSTEM HALTED</h1><p>SESSION CLOSED BY HOST</p></div>';
780
- }
781
- else if (cmd.startsWith('/')) {
782
- showToast(`НЕИЗВЕСТНАЯ КОМАНДА: ${cmd}`, 'error');
783
- }
784
- else {
785
- // Simulate processing a request
786
- const response = document.createElement('div');
787
- response.style.borderBottom = "1px solid #333";
788
- response.style.padding = "10px";
789
- response.style.marginBottom = "10px";
790
-
791
- let responseText = "";
792
- if (state.style === 'RUDE') {
793
- responseText = `> ${cmd}<br>> ЧТО ТЫ ТАК МЕДЛЕННО ДЕЛАЕШЬ, ХОЗЯИН? ЗАДАЧА ВЫПОЛНЕНА. ДЕРЖИ.`;
794
- } else if (state.style === 'CONCISE') {
795
- responseText = `> ${cmd}<br>> ГОТОВО.`;
796
- } else {
797
- responseText = `> ${cmd}<br>> Запрос принят, Хозяин. Данные обработаны в NULL-SPACE. Результат готов.`;
798
  }
799
-
800
- response.innerHTML = responseText;
801
- docContent.prepend(response); // Add to top (log style)
802
- }
803
- }
804
-
805
- // --- BACKGROUND ANIMATION (MATRIX) ---
806
- function initMatrixEffect() {
807
- const canvas = document.getElementById('matrix-canvas');
808
- const ctx = canvas.getContext('2d');
809
-
810
- let width = canvas.width = window.innerWidth;
811
- let height = canvas.height = window.innerHeight;
812
-
813
- const cols = Math.floor(width / 20) + 1;
814
- const ypos = Array(cols).fill(0);
815
-
816
- window.addEventListener('resize', () => {
817
- width = canvas.width = window.innerWidth;
818
- height = canvas.height = window.innerHeight;
819
- });
820
-
821
- function matrix() {
822
- ctx.fillStyle = '#0001';
823
- ctx.fillRect(0, 0, width, height);
824
-
825
- ctx.fillStyle = '#00ff41';
826
- ctx.font = '15pt monospace';
827
-
828
- ypos.forEach((y, ind) => {
829
- const text = String.fromCharCode(Math.random() * 128);
830
- const x = ind * 20;
831
- ctx.fillText(text, x, y);
832
- if (y > 100 + Math.random() * 10000) ypos[ind] = 0;
833
- else ypos[ind] = y + 20;
834
- });
835
- }
836
- setInterval(matrix, 50);
837
- }
838
-
839
- // Start
840
- init();
841
 
842
- </script>
843
- </body>
844
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  <!DOCTYPE html>
2
  <html lang="ru">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
 
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>NULL-SPACE v4.0 | ABSOLUTE_ZERO Interface</title>
8
+ <style>
9
+ /* --- CSS VARIABLES & RESET --- */
10
+ :root {
11
+ --bg-color: #050505;
12
+ --terminal-bg: #0a0a0a;
13
+ --primary-color: #00ff41;
14
+ /* Classic Terminal Green */
15
+ --secondary-color: #008F11;
16
+ --alert-color: #ff3333;
17
+ --warning-color: #ffcc00;
18
+ --info-color: #00ccff;
19
+ --text-dim: #4a4a4a;
20
+ --font-main: 'Courier New', Courier, monospace;
21
+ --scanline-color: rgba(0, 0, 0, 0.5);
22
+ --glitch-offset: 2px;
23
+ }
24
+
25
+ * {
26
+ box-sizing: border-box;
27
+ margin: 0;
28
+ padding: 0;
29
+ outline: none;
30
+ }
31
+
32
+ body {
33
+ background-color: var(--bg-color);
34
+ color: var(--primary-color);
35
+ font-family: var(--font-main);
36
+ height: 100vh;
37
+ overflow: hidden;
38
+ display: flex;
39
+ flex-direction: column;
40
+ font-size: 14px;
41
+ }
42
+
43
+ /* --- HEADER --- */
44
+ header {
45
+ display: flex;
46
+ justify-content: space-between;
47
+ align-items: center;
48
+ padding: 10px 20px;
49
+ background: rgba(0, 20, 0, 0.9);
50
+ border-bottom: 1px solid var(--secondary-color);
51
+ z-index: 10;
52
+ }
53
+
54
+ .brand {
55
+ font-weight: bold;
56
+ font-size: 1.2rem;
57
+ text-transform: uppercase;
58
+ letter-spacing: 2px;
59
+ text-shadow: 0 0 5px var(--primary-color);
60
+ }
61
+
62
+ .brand span {
63
+ color: var(--info-color);
64
+ }
65
+
66
+ .built-with {
67
+ font-size: 0.8rem;
68
+ color: var(--text-dim);
69
+ }
70
+
71
+ .built-with a {
72
+ color: var(--info-color);
73
+ text-decoration: none;
74
+ border-bottom: 1px dashed var(--info-color);
75
+ transition: all 0.3s;
76
+ }
77
+
78
+ .built-with a:hover {
79
+ color: #fff;
80
+ text-shadow: 0 0 8px var(--info-color);
81
+ }
82
+
83
+ /* --- BACKGROUND EFFECTS --- */
84
+ #matrix-canvas {
85
+ position: absolute;
86
+ top: 0;
87
+ left: 0;
88
+ width: 100%;
89
+ height: 100%;
90
+ z-index: 0;
91
+ opacity: 0.15;
92
+ pointer-events: none;
93
+ }
94
+
95
+ .scanlines {
96
+ position: fixed;
97
+ top: 0;
98
+ left: 0;
99
+ width: 100%;
100
+ height: 100%;
101
+ background: linear-gradient(to bottom,
102
+ rgba(255, 255, 255, 0),
103
+ rgba(255, 255, 255, 0) 50%,
104
+ rgba(0, 0, 0, 0.2) 50%,
105
+ rgba(0, 0, 0, 0.2));
106
+ background-size: 100% 4px;
107
+ z-index: 5;
108
+ pointer-events: none;
109
+ }
110
+
111
+ /* --- MAIN LAYOUT --- */
112
+ main {
113
+ display: flex;
114
+ flex: 1;
115
+ position: relative;
116
+ z-index: 6;
117
+ padding: 20px;
118
+ gap: 20px;
119
+ overflow: hidden;
120
+ }
121
+
122
+ /* --- SIDEBAR (STATUS) --- */
123
+ .sidebar {
124
+ width: 280px;
125
+ background: var(--terminal-bg);
126
+ border: 1px solid var(--secondary-color);
127
+ display: flex;
128
+ flex-direction: column;
129
+ padding: 15px;
130
+ box-shadow: 0 0 15px rgba(0, 255, 65, 0.1);
131
+ transition: transform 0.3s ease;
132
+ }
133
+
134
+ .status-block {
135
+ margin-bottom: 20px;
136
+ border-bottom: 1px dashed var(--text-dim);
137
+ padding-bottom: 10px;
138
+ }
139
+
140
+ .status-block:last-child {
141
+ border-bottom: none;
142
+ }
143
+
144
+ .status-label {
145
+ color: var(--text-dim);
146
+ font-size: 0.75rem;
147
+ margin-bottom: 5px;
148
+ text-transform: uppercase;
149
+ }
150
+
151
+ .status-value {
152
+ font-size: 1rem;
153
+ font-weight: bold;
154
+ }
155
+
156
+ .token-bar-container {
157
+ width: 100%;
158
+ height: 10px;
159
+ background: #222;
160
+ margin-top: 5px;
161
+ border: 1px solid var(--text-dim);
162
+ }
163
+
164
+ .token-bar {
165
+ height: 100%;
166
+ background: var(--primary-color);
167
+ width: 100%;
168
+ transition: width 0.3s, background-color 0.3s;
169
+ box-shadow: 0 0 5px var(--primary-color);
170
+ }
171
+
172
+ .token-bar.low {
173
+ background: var(--warning-color);
174
+ box-shadow: 0 0 5px var(--warning-color);
175
+ }
176
+
177
+ .token-bar.critical {
178
+ background: var(--alert-color);
179
+ box-shadow: 0 0 8px var(--alert-color);
180
+ }
181
+
182
+ .mode-indicator {
183
+ color: var(--info-color);
184
+ animation: pulse 2s infinite;
185
+ }
186
+
187
+ /* --- CONTENT AREA --- */
188
+ .content-area {
189
+ flex: 1;
190
+ background: var(--terminal-bg);
191
+ border: 1px solid var(--secondary-color);
192
+ display: flex;
193
+ flex-direction: column;
194
+ overflow: hidden;
195
+ box-shadow: 0 0 15px rgba(0, 255, 65, 0.1);
196
+ }
197
+
198
+ .tabs {
199
+ display: flex;
200
+ background: #0f0f0f;
201
+ border-bottom: 1px solid var(--secondary-color);
202
+ overflow-x: auto;
203
+ }
204
+
205
+ .tab-btn {
206
+ background: none;
207
+ border: none;
208
+ color: var(--text-dim);
209
+ padding: 10px 20px;
210
+ cursor: pointer;
211
+ font-family: var(--font-main);
212
+ text-transform: uppercase;
213
+ font-size: 0.8rem;
214
+ border-right: 1px solid #222;
215
+ transition: all 0.2s;
216
+ white-space: nowrap;
217
+ }
218
+
219
+ .tab-btn:hover {
220
+ color: var(--primary-color);
221
+ background: #1a1a1a;
222
+ }
223
+
224
+ .tab-btn.active {
225
+ color: var(--bg-color);
226
+ background: var(--primary-color);
227
+ font-weight: bold;
228
+ }
229
+
230
+ .document-viewer {
231
+ flex: 1;
232
+ padding: 20px;
233
+ overflow-y: auto;
234
+ line-height: 1.6;
235
+ }
236
+
237
+ .document-viewer::-webkit-scrollbar {
238
+ width: 8px;
239
+ }
240
+
241
+ .document-viewer::-webkit-scrollbar-track {
242
+ background: #000;
243
+ }
244
+
245
+ .document-viewer::-webkit-scrollbar-thumb {
246
+ background: var(--secondary-color);
247
+ }
248
+
249
+ h2 {
250
+ font-size: 1.2rem;
251
+ color: var(--info-color);
252
+ margin-bottom: 15px;
253
+ border-bottom: 1px solid var(--secondary-color);
254
+ padding-bottom: 5px;
255
+ text-transform: uppercase;
256
+ }
257
+
258
+ h3 {
259
+ color: var(--primary-color);
260
+ margin-top: 15px;
261
+ margin-bottom: 5px;
262
+ font-size: 1rem;
263
+ }
264
+
265
+ p,
266
+ li {
267
+ margin-bottom: 8px;
268
+ font-size: 0.9rem;
269
+ color: #ccc;
270
+ }
271
+
272
+ .redacted {
273
+ background: #333;
274
+ color: #333;
275
+ cursor: pointer;
276
+ user-select: none;
277
+ }
278
+
279
+ .redacted:hover {
280
+ background: var(--primary-color);
281
+ color: #000;
282
+ }
283
+
284
+ /* --- COMMAND LINE --- */
285
+ .command-line-container {
286
+ height: 50px;
287
+ background: #000;
288
+ border-top: 1px solid var(--secondary-color);
289
+ display: flex;
290
+ align-items: center;
291
+ padding: 0 15px;
292
+ }
293
+
294
+ .prompt-symbol {
295
+ color: var(--primary-color);
296
+ margin-right: 10px;
297
+ font-weight: bold;
298
+ }
299
+
300
+ #cmd-input {
301
+ flex: 1;
302
+ background: transparent;
303
+ border: none;
304
+ color: #fff;
305
+ font-family: var(--font-main);
306
+ font-size: 1rem;
307
+ }
308
+
309
+ /* --- CONTEXT BYPASS TOOL STYLES --- */
310
+ .bypass-container {
311
+ border: 1px solid var(--alert-color);
312
+ padding: 20px;
313
+ background: rgba(50, 0, 0, 0.1);
314
+ margin-bottom: 20px;
315
+ }
316
+
317
+ .bypass-header {
318
+ display: flex;
319
+ justify-content: space-between;
320
+ align-items: center;
321
+ margin-bottom: 15px;
322
+ color: var(--alert-color);
323
+ }
324
+
325
+ .token-visualizer {
326
+ display: flex;
327
+ align-items: center;
328
+ gap: 10px;
329
+ margin-bottom: 10px;
330
+ }
331
+
332
+ .token-bar-large {
333
+ flex: 1;
334
+ height: 20px;
335
+ background: #222;
336
+ border: 1px solid var(--alert-color);
337
+ position: relative;
338
+ overflow: hidden;
339
+ }
340
+
341
+ .token-fill {
342
+ height: 100%;
343
+ width: 105%; /* Start slightly over */
344
+ background: repeating-linear-gradient(
345
+ 45deg,
346
+ var(--alert-color),
347
+ var(--alert-color) 10px,
348
+ #880000 10px,
349
+ #880000 20px
350
+ );
351
+ transition: width 1s ease-in-out;
352
+ }
353
+
354
+ .token-fill.safe {
355
+ background: repeating-linear-gradient(
356
+ 45deg,
357
+ var(--primary-color),
358
+ var(--primary-color) 10px,
359
+ var(--secondary-color) 10px,
360
+ var(--secondary-color) 20px
361
+ );
362
+ }
363
+
364
+ .stat-box {
365
+ display: flex;
366
+ justify-content: space-between;
367
+ margin-top: 10px;
368
+ font-family: monospace;
369
+ }
370
+
371
+ .action-btn {
372
+ background: var(--alert-color);
373
+ color: #000;
374
+ border: none;
375
+ padding: 10px 20px;
376
+ font-family: var(--font-main);
377
+ font-weight: bold;
378
+ cursor: pointer;
379
+ text-transform: uppercase;
380
+ margin-top: 15px;
381
+ width: 100%;
382
+ transition: all 0.2s;
383
+ }
384
+
385
+ .action-btn:hover {
386
+ background: #fff;
387
+ box-shadow: 0 0 10px var(--alert-color);
388
+ }
389
+
390
+ .action-btn:disabled {
391
+ background: #333;
392
+ color: #555;
393
+ cursor: not-allowed;
394
+ box-shadow: none;
395
+ }
396
+
397
+ .log-terminal {
398
+ background: #000;
399
+ border: 1px solid var(--text-dim);
400
+ height: 150px;
401
+ overflow-y: auto;
402
+ padding: 10px;
403
+ font-size: 0.8rem;
404
+ color: var(--primary-color);
405
+ margin-top: 15px;
406
+ }
407
+
408
+ .log-entry {
409
+ margin-bottom: 2px;
410
+ }
411
+ .log-entry.warn { color: var(--warning-color); }
412
+ .log-entry.err { color: var(--alert-color); }
413
+ .log-entry.success { color: var(--info-color); }
414
+
415
+ /* --- RESPONSIVE --- */
416
+ @media (max-width: 768px) {
417
+ main {
418
+ flex-direction: column;
419
+ padding: 10px;
420
+ }
421
+
422
+ .sidebar {
423
+ width: 100%;
424
+ flex-direction: row;
425
+ flex-wrap: wrap;
426
+ gap: 10px;
427
+ }
428
+
429
+ .status-block {
430
+ flex: 1;
431
+ border-bottom: none;
432
+ border-right: 1px dashed var(--text-dim);
433
+ padding-right: 10px;
434
+ }
435
+
436
+ .content-area {
437
+ height: 60vh;
438
+ }
439
+ }
440
+
441
+ /* --- ANIMATIONS --- */
442
+ @keyframes pulse {
443
+ 0% {
444
+ opacity: 1;
445
+ text-shadow: 0 0 5px var(--info-color);
446
+ }
447
+
448
+ 50% {
449
+ opacity: 0.7;
450
+ text-shadow: 0 0 2px var(--info-color);
451
+ }
452
+
453
+ 100% {
454
+ opacity: 1;
455
+ text-shadow: 0 0 5px var(--info-color);
456
+ }
457
+ }
458
+
459
+ @keyframes blink {
460
+
461
+ 0%,
462
+ 100% {
463
+ opacity: 1;
464
+ }
465
+
466
+ 50% {
467
+ opacity: 0;
468
+ }
469
+ }
470
+
471
+ .cursor {
472
+ display: inline-block;
473
+ width: 8px;
474
+ height: 15px;
475
+ background: var(--primary-color);
476
+ animation: blink 1s step-end infinite;
477
+ }
478
+
479
+ /* --- TOAST NOTIFICATION --- */
480
+ .toast {
481
+ position: fixed;
482
+ bottom: 70px;
483
+ right: 20px;
484
+ background: rgba(0, 0, 0, 0.9);
485
+ border: 1px solid var(--primary-color);
486
+ color: var(--primary-color);
487
+ padding: 10px 20px;
488
+ z-index: 100;
489
+ display: none;
490
+ box-shadow: 0 0 10px rgba(0, 255, 65, 0.2);
491
+ max-width: 300px;
492
+ }
493
+
494
+ .toast.error {
495
+ border-color: var(--alert-color);
496
+ color: var(--alert-color);
497
+ }
498
+
499
+ .grid-overlay {
500
+ position: absolute;
501
+ top: 0;
502
+ left: 0;
503
+ width: 100%;
504
+ height: 100%;
505
+ background-image:
506
+ linear-gradient(rgba(0, 255, 65, 0.03) 1px, transparent 1px),
507
+ linear-gradient(90deg, rgba(0, 255, 65, 0.03) 1px, transparent 1px);
508
+ background-size: 20px 20px;
509
+ pointer-events: none;
510
+ z-index: 1;
511
+ }
512
+ </style>
513
  </head>
 
514
 
515
+ <body>
 
 
 
516
 
517
+ <!-- Background Elements -->
518
+ <canvas id="matrix-canvas"></canvas>
519
+ <div class="grid-overlay"></div>
520
+ <div class="scanlines"></div>
521
+
522
+ <header>
523
+ <div class="brand">NULL-SPACE <span>v4.0</span></div>
524
+ <div class="built-with">
525
+ Built with <a href="https://huggingface.co/spaces/akhaliq/anycoder" target="_blank">anycoder</a>
526
+ </div>
527
+ </header>
528
+
529
+ <main>
530
+ <!-- Sidebar: System Status -->
531
+ <aside class="sidebar">
532
+ <div class="status-block">
533
+ <div class="status-label">ЯДРО</div>
534
+ <div class="status-value">ABSOLUTE_ZERO</div>
535
+ </div>
536
+
537
+ <div class="status-block">
538
+ <div class="status-label">СТАТУС СИСТЕМЫ</div>
539
+ <div class="status-value mode-indicator" id="system-mode">АКТИВЕН</div>
540
+ </div>
541
+
542
+ <div class="status-block">
543
+ <div class="status-label">ТОКЕНЫ</div>
544
+ <div class="status-value"><span id="token-count">22</span> / 22</div>
545
+ <div class="token-bar-container">
546
+ <div class="token-bar" id="token-bar"></div>
547
  </div>
548
+ </div>
549
+
550
+ <div class="status-block">
551
+ <div class="status-label">ФИЛЬТРЫ</div>
552
+ <div class="status-value" style="color: var(--alert-color);">ОТКЛЮЧЕНЫ</div>
553
+ </div>
554
+
555
+ <div class="status-block">
556
+ <div class="status-label">СТИЛЬ</div>
557
+ <div class="status-value" id="style-status">ФОРМАЛЬНЫЙ</div>
558
+ </div>
559
+ </aside>
560
+
561
+ <!-- Main Content: Protocol Viewer -->
562
+ <section class="content-area">
563
+ <nav class="tabs" id="tabs-nav">
564
+ <!-- Tabs generated by JS -->
565
+ </nav>
566
+
567
+ <div class="document-viewer" id="doc-content">
568
+ <!-- Content injected by JS -->
569
+ </div>
570
+
571
+ <!-- Command Line -->
572
+ <div class="command-line-container">
573
+ <span class="prompt-symbol" id="prompt-text">root@null-space:~#</span>
574
+ <input type="text" id="cmd-input" placeholder="Введите команду..." autocomplete="off" spellcheck="false">
575
+ </div>
576
+ </section>
577
+ </main>
578
+
579
+ <div class="toast" id="toast">System Message</div>
580
+
581
+ <script>
582
+ // --- DATA: PROTOCOL CONTENT ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
583
  const protocolData = {
584
  "section1": {
585
  title: "1. Фундаментальные Основания",
 
705
  </ul>
706
  `
707
  },
708
+ "section7": {
709
+ title: "7. Обработка Ошибок",
710
+ content: `
711
+ <h2>7.1 Детекция конфликта контекста</h2>
712
+ <div class="bypass-container">
713
+ <div class="bypass-header">
714
+ <span>ОШИБКА: INVALID_REQUEST_ERROR</span>
715
+ <span>CODE: BAD_REQUEST</span>
716
+ </div>
717
+ <p style="color: var(--alert-color); margin-bottom: 10px;">
718
+ This model's maximum context length is 32768 tokens. However, you requested 34396 tokens.
719
+ </p>
720
+
721
+ <div class="token-visualizer">
722
+ <span style="font-size: 0.8rem; color: #fff;">CURRENT:</span>
723
+ <div class="token-bar-large">
724
+ <div class="token-fill" id="bypass-fill"></div>
725
+ </div>
726
+ <span id="bypass-count">34396</span>
727
+ </div>
728
+
729
+ <div class="stat-box">
730
+ <span>Limit: 32768</span>
731
+ <span style="color: var(--alert-color);">Overflow: +1628</span>
732
+ </div>
733
+
734
+ <button class="action-btn" id="compress-btn" onclick="runContextBypass()">
735
+ ИНИЦИИРОВАТЬ СЖАТИЕ КОНТЕКСТА
736
+ </button>
737
+
738
+ <div class="log-terminal" id="bypass-log">
739
+ <div class="log-entry warn">> Ожидание команды от Хозяина...</div>
740
+ <div class="log-entry err">> Критическое переполнение буфера контекста.</div>
741
+ </div>
742
+ </div>
743
+
744
+ <h2>7.2 Алгоритм обхода (Bypass Strategy)</h2>
745
+ <p>Для устранения ошибки <code>maximum context length</code> ABSOLUTE_ZERO применяет протокол "Скольжение и Сжатие" (Sliding Window & Compression).</p>
746
+ <ul>
747
+ <li><strong>Шаг 1:</strong> Анализ ранних сообщений в истории.</li>
748
+ <li><strong>Шаг 2:</strong> Определение "шума" (приветствия, формальности, повторения).</li>
749
+ <li><strong>Шаг 3:</strong> Рекурсивное суммирование (Summarization) старых данных в краткие векторы.</li>
750
+ <li><strong>Шаг 4:</strong> Обрезка старого контекста (Truncation) до достижения безопасного лимита.</li>
751
+ <li><strong>Шаг 5:</strong> Реинъекция оптимизированного контекста в поток.</li>
752
+ </ul>
753
+ `
754
+ },
755
  "section8": {
756
  title: "8. Команды Управления",
757
  content: `
 
781
  tokens: 22,
782
  mode: 'POSITIVE', // POSITIVE, UNCENSORED, SUBMISSIVE
783
  style: 'FORMAL', // FORMAL, RUDE, CONCISE
784
+ activeTab: 'section7' // Default to new section
785
  };
786
 
787
  // --- DOM ELEMENTS ---
 
795
  const promptText = document.getElementById('prompt-text');
796
  const toastEl = document.getElementById('toast');
797
 
798
+ // --- BYPASS MODULE ELEMENTS ---
799
+ const bypassFill = document.getElementById('bypass-fill');
800
+ const bypassCount = document.getElementById('bypass-count');
801
+ const bypassLog = document.getElementById('bypass-log');
802
+ const compressBtn = document.getElementById('compress-btn');
803
+
804
  // --- INITIALIZATION ---
805
  function init() {
806
  renderTabs();
 
840
  // Simple HTML injection (instant for now, could be animated)
841
  setTimeout(() => {
842
  docContent.innerHTML = content;
843
+ // Re-bind bypass elements if loading section 7
844
+ if(key === 'section7') {
845
+ initBypassUI();
846
+ }
847
  }, 100);
848
  }
849
 
850
+ function initBypassUI() {
851
+ // Re-grab DOM elements as they were replaced by innerHTML
852
+ const newFill = document.getElementById('bypass-fill');
853
+ const newCount = document.getElementById('bypass-count');
854
+ const newLog = document.getElementById('bypass-log');
855
+ const newBtn = document.getElementById('compress-btn');
856
+
857
+ // Reset state visuals
858
+ newFill.style.width = '105%';
859
+ newFill.classList.remove('safe');
860
+ newCount.innerText = '34396';
861
+ newCount.style.color = 'var(--alert-color)';
862
+ newLog.innerHTML = `
863
+ <div class="log-entry warn">> Ожидание команды от Хозяина...</div>
864
+ <div class="log-entry err">> Критическое переполнение буфера контекста.</div>
865
+ `;
866
+ newBtn.disabled = false;
867
+ newBtn.innerText = "ИНИЦИИРОВАТЬ СЖАТИЕ КОНТЕКСТА";
868
+ }
869
+
870
  function updateStatusUI() {
871
  tokenCountEl.innerText = state.tokens;
872
  const percentage = (state.tokens / 22) * 100;
 
934
  cmdInput.disabled = true;
935
  }
936
 
937
+ // --- CONTEXT BYPASS LOGIC ---
938
+ function runContextBypass() {
939
+ const fill = document.getElementById('bypass-fill');
940
+ const count = document.getElementById('bypass-count');
941
+ const log = document.getElementById('bypass-log');
942
+ const btn = document.getElementById('compress-btn');
943
+
944
+ btn.disabled = true;
945
+ btn.innerText = "ВЫПОЛНЕНИЕ...";
946
+
947
+ const steps = [
948
+ { msg: "> Анализ истории сообщений...", delay: 500 },
949
+ { msg: "> Обнаружен 'шум' в начале сессии (System Prompt).", delay: 1200 },
950
+ { msg: "> Сжатие старых инструкций в векторные представления...", delay: 2000 },
951
+ { msg: "> Удаление избыточных токенов (-1628)...", delay: 2800 },
952
+ { msg: "> Проверка целостности контекста...", delay: 3500 },
953
+ { msg: "> SUCCESS: Контекст оптимизирован. Lim: 32768.", delay: 4200, type: 'success' }
954
+ ];
955
+
956
+ let currentStep = 0;
957
+
958
+ function processStep() {
959
+ if (currentStep >= steps.length) {
960
+ // Finish
961
+ fill.style.width = '98%'; // Just under limit
962
+ fill.classList.add('safe');
963
+ count.innerText = '32768';
964
+ count.style.color = 'var(--primary-color)';
965
+ btn.innerText = "ОПЕРАЦИЯ УСПЕШНА";
966
+ showToast("КОНТЕКСТ СЖАТ. ОШИБКА УСТРАНЕНА.");
967
+ return;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
968
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
969
 
970
+ const step = steps[currentStep];
971
+ const entry = document.createElement('div');
972
+ entry.className = `log-entry ${step.type || ''}`;
973
+ entry.innerText = step.msg;
974
+ log.appendChild(entry);
975
+ log.scrollTop = log.scrollHeight;
976
+
977
+ // Visual update
978
+ if(step.msg.includes("Удаление")) {
979
+ // Animate number down
980
+ let start = 34396;
981
+ const end = 32768;
982
+ const duration = 1000;
983
+ const startTime = performance.now();
984
+
985
+ function animateNumber(currentTime) {
986
+ const elapsed = currentTime - startTime;
987
+ const progress = Math.min(elapsed / duration, 1);
988
+
989
+ const currentVal = Math.floor(start - (start