Moge-Row commited on
Commit
a33baff
Β·
1 Parent(s): 6f34a89

hide tokens show ranking only

Browse files
Files changed (1) hide show
  1. internal/handler/index.html +130 -130
internal/handler/index.html CHANGED
@@ -1,130 +1,130 @@
1
-
2
- <style>
3
- *{box-sizing:border-box;margin:0;padding:0}
4
- .rp-wrap{font-family:'Courier New',monospace;color:#c8a84b;background:#0d0d0d;border-radius:8px;overflow:hidden}
5
- .rp-header{background:#1a1200;border-bottom:2px solid #c8a84b;padding:1rem 1.5rem;display:flex;align-items:center;gap:1rem}
6
- .rp-star{color:#cc0000;font-size:22px}
7
- .rp-title{font-size:18px;font-weight:bold;letter-spacing:4px;color:#c8a84b}
8
- .rp-sub{font-size:10px;letter-spacing:3px;color:#7a6228;margin-top:2px}
9
- .red-bar{height:4px;background:#cc0000}
10
- .rp-body{padding:1.5rem}
11
- .sec-label{font-size:10px;letter-spacing:4px;color:#7a6228;border-bottom:1px solid #3a2a00;padding-bottom:5px;margin-bottom:1rem}
12
- .status-row{display:flex;gap:8px;margin-bottom:1.5rem}
13
- .scard{flex:1;background:#1a1200;border:1px solid #3a2a00;border-left:3px solid #c8a84b;padding:.75rem}
14
- .scard .val{font-size:16px;color:#c8a84b;font-weight:bold;margin-bottom:2px}
15
- .scard .lbl{font-size:10px;color:#7a6228;letter-spacing:2px}
16
- .online{color:#44aa99}
17
- .url-box{background:#111;border:1px solid #3a2a00;border-left:3px solid #cc0000;padding:.75rem 1rem;margin-bottom:1.5rem}
18
- .url-label{font-size:10px;color:#7a6228;letter-spacing:3px;margin-bottom:5px}
19
- .url-val{font-size:13px;color:#e8c86b;word-break:break-all}
20
- .key-val{font-size:12px;color:#c8a84b;margin-top:3px}
21
- .models-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:1.5rem}
22
- .model-item{background:#1a1200;border:1px solid #2a1e00;padding:6px 10px;display:flex;align-items:center;gap:8px}
23
- .model-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}
24
- .dot-green{background:#44aa99}
25
- .dot-gold{background:#c8a84b}
26
- .model-name{font-size:11px;color:#c8a84b}
27
- .box{background:rgba(26,18,0,0.4);border:1px solid #3a2a00;padding:1.2rem;margin-bottom:1.5rem}
28
- .box-title{color:#ff3333;font-size:13px;letter-spacing:2px;margin-bottom:1rem;font-weight:bold}
29
- .box-title::before{content:'β˜… '}
30
- .ranking-row{display:flex;align-items:center;gap:10px;margin-bottom:8px}
31
- .rank-name{color:#daa520;width:110px;font-size:12px;font-weight:bold;flex-shrink:0}
32
- .bar-wrap{flex:1;background:#080808;height:13px;border:1px solid #222}
33
- .bar{background:#cc0000;height:100%;transition:width .8s ease-out}
34
- .tkns{color:#7a6228;width:90px;text-align:right;font-size:11px}
35
- .focus-tree{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
36
- .focus-node{border:1px solid #ff3333;color:#ff3333;padding:4px 9px;font-size:10px;text-transform:uppercase;background:rgba(255,0,0,0.05)}
37
- .tank-section{background:#1a1200;border:1px solid #3a2a00;padding:1.2rem;margin-bottom:1.5rem}
38
- .tank-title{font-size:13px;color:#cc0000;letter-spacing:3px;margin-bottom:1rem;font-weight:bold}
39
- .tank-row{display:flex;gap:10px;margin-bottom:7px;align-items:center}
40
- .tank-name{font-size:12px;color:#e8c86b;width:75px;flex-shrink:0}
41
- .tank-bar-wrap{flex:1;background:#0d0d0d;height:14px}
42
- .tank-bar{height:100%;background:#cc0000}
43
- .tank-era{font-size:10px;color:#7a6228;width:75px;text-align:right}
44
- .quote{border-left:3px solid #ff3333;background:rgba(255,0,0,0.03);padding:12px;margin-bottom:1.5rem;font-style:italic;color:#888;font-size:12px}
45
- .footer{border-top:1px solid #3a2a00;padding:.75rem 1.5rem;text-align:center;font-size:10px;color:#4a3a10;letter-spacing:3px}
46
- .classified{color:#cc0000}
47
- </style>
48
- <div class="rp-wrap">
49
- <div class="rp-header">
50
- <div class="rp-star">&#9733;</div>
51
- <div>
52
- <div class="rp-title">ROW-PROXY // CCCP</div>
53
- <div class="rp-sub">SOVIET ARMORED DIVISION β€” AI GATEWAY SYSTEM β€” 1960-1985</div>
54
- </div>
55
- <div style="margin-left:auto;text-align:right">
56
- <div style="font-size:10px;color:#44aa99;letter-spacing:2px">&#9679; SISTEMA ACTIVO</div>
57
- <div style="font-size:10px;color:#7a6228;margin-top:2px">HUGGING FACE DEPLOY</div>
58
- </div>
59
- </div>
60
- <div class="red-bar"></div>
61
- <div class="rp-body">
62
- <div class="sec-label">// ESTADO DEL SISTEMA</div>
63
- <div class="status-row">
64
- <div class="scard"><div class="val online">&#9679; ONLINE</div><div class="lbl">PROXY STATUS</div></div>
65
- <div class="scard"><div class="val" id="model-count">8</div><div class="lbl">MODELOS ACTIVOS</div></div>
66
- <div class="scard"><div class="val">TOP SECRET</div><div class="lbl">API KEY</div></div>
67
- </div>
68
- <div class="sec-label">// PUNTO DE ACCESO</div>
69
- <div class="url-box">
70
- <div class="url-label">BASE URL β€” PRODUCCION</div>
71
- <div class="url-val">https://moge-row-row-proxy.hf.space/v1</div>
72
- <div class="key-val">API KEY: TOP SECRET</div>
73
- </div>
74
- <div class="sec-label">// MODELOS DISPONIBLES</div>
75
- <div class="models-grid">
76
- <div class="model-item"><div class="model-dot dot-green"></div><div class="model-name">claude-sonnet-4-6</div></div>
77
- <div class="model-item"><div class="model-dot dot-green"></div><div class="model-name">claude-haiku-4-5</div></div>
78
- <div class="model-item"><div class="model-dot dot-green"></div><div class="model-name">claude-opus-4-6</div></div>
79
- <div class="model-item"><div class="model-dot dot-green"></div><div class="model-name">claude-3-5-sonnet</div></div>
80
- <div class="model-item"><div class="model-dot dot-gold"></div><div class="model-name">glm-4.7</div></div>
81
- <div class="model-item"><div class="model-dot dot-gold"></div><div class="model-name">glm-4.7-thinking</div></div>
82
- <div class="model-item"><div class="model-dot dot-gold"></div><div class="model-name">glm-5</div></div>
83
- <div class="model-item"><div class="model-dot dot-gold"></div><div class="model-name">glm-5-thinking</div></div>
84
- </div>
85
- <div class="sec-label">// HOI4 β€” FRENTE ORIENTAL β€” TOP COMANDANTES</div>
86
- <div class="box">
87
- <div class="box-title">TOP USUARIOS (COMANDANTES)</div>
88
- <div id="ranking-frente">
89
- <div style="color:#7a6228;text-align:center;padding:10px;font-size:12px">CONECTANDO AL SERVIDOR CENTRAL...</div>
90
- </div>
91
- </div>
92
- <div class="sec-label">// ARBOL DE ENFOQUE SOVIETICO</div>
93
- <div class="box">
94
- <div class="box-title">ARBOL DE ENFOQUE</div>
95
- <div class="focus-tree">
96
- <div class="focus-node">INDUSTRIA DE GUERRA</div>
97
- <div class="focus-node">COLLECTIVIZACION</div>
98
- <div class="focus-node">PURGA MILITAR</div>
99
- <div class="focus-node">LEND-LEASE</div>
100
- <div class="focus-node">PACTO RIBBENTROP</div>
101
- <div class="focus-node">DEFENSA EN PROFUNDIDAD</div>
102
- <div class="focus-node">NvrrrB has been here</div>
103
- </div>
104
- </div>
105
- <div class="quote">
106
- "La victoria es para aquellos que no retroceden. Ni un paso atras."<br>
107
- β€” Orden No. 227, Stalin β€” 1942 β€” NO STEP BACK
108
- </div>
109
- </div>
110
- <div class="footer"><span class="classified">&#9733; CLASIFICADO &#9733;</span> &mdash; ROW-PROXY v1.0 &mdash; CCCP AI GATEWAY &mdash; <span class="classified">&#9733; CLASIFICADO &#9733;</span></div>
111
- </div>
112
- <script>
113
- async function updateStats(){
114
- try{
115
- const r=await fetch(window.location.origin+'/stats');
116
- const data=await r.json();
117
- const container=document.getElementById('ranking-frente');
118
- const entries=Object.entries(data.keys||{}).map(([name,info])=>({name,tokens:info.tokens||0})).sort((a,b)=>b.tokens-a.tokens);
119
- if(!entries.length)return;
120
- const maxTokens=Math.max(...entries.map(e=>e.tokens),5000);
121
- container.innerHTML=entries.map(u=>`
122
- <div class="ranking-row">
123
- <div class="rank-name">${u.name.toUpperCase()}</div>
124
- <div class="bar-wrap"><div class="bar" style="width:${Math.min((u.tokens/maxTokens)*100,100)}%"></div></div>
125
- <div class="tkns">${u.tokens.toLocaleString()} TKNS</div>
126
- </div>`).join('');
127
- }catch(e){console.error(e);}
128
- }
129
- setInterval(updateStats,5000);updateStats();
130
- </script>
 
1
+
2
+ <style>
3
+ *{box-sizing:border-box;margin:0;padding:0}
4
+ .rp-wrap{font-family:'Courier New',monospace;color:#c8a84b;background:#0d0d0d;border-radius:8px;overflow:hidden}
5
+ .rp-header{background:#1a1200;border-bottom:2px solid #c8a84b;padding:1rem 1.5rem;display:flex;align-items:center;gap:1rem}
6
+ .rp-star{color:#cc0000;font-size:22px}
7
+ .rp-title{font-size:18px;font-weight:bold;letter-spacing:4px;color:#c8a84b}
8
+ .rp-sub{font-size:10px;letter-spacing:3px;color:#7a6228;margin-top:2px}
9
+ .red-bar{height:4px;background:#cc0000}
10
+ .rp-body{padding:1.5rem}
11
+ .sec-label{font-size:10px;letter-spacing:4px;color:#7a6228;border-bottom:1px solid #3a2a00;padding-bottom:5px;margin-bottom:1rem}
12
+ .status-row{display:flex;gap:8px;margin-bottom:1.5rem}
13
+ .scard{flex:1;background:#1a1200;border:1px solid #3a2a00;border-left:3px solid #c8a84b;padding:.75rem}
14
+ .scard .val{font-size:16px;color:#c8a84b;font-weight:bold;margin-bottom:2px}
15
+ .scard .lbl{font-size:10px;color:#7a6228;letter-spacing:2px}
16
+ .online{color:#44aa99}
17
+ .url-box{background:#111;border:1px solid #3a2a00;border-left:3px solid #cc0000;padding:.75rem 1rem;margin-bottom:1.5rem}
18
+ .url-label{font-size:10px;color:#7a6228;letter-spacing:3px;margin-bottom:5px}
19
+ .url-val{font-size:13px;color:#e8c86b;word-break:break-all}
20
+ .key-val{font-size:12px;color:#c8a84b;margin-top:3px}
21
+ .models-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:1.5rem}
22
+ .model-item{background:#1a1200;border:1px solid #2a1e00;padding:6px 10px;display:flex;align-items:center;gap:8px}
23
+ .model-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}
24
+ .dot-green{background:#44aa99}
25
+ .dot-gold{background:#c8a84b}
26
+ .model-name{font-size:11px;color:#c8a84b}
27
+ .box{background:rgba(26,18,0,0.4);border:1px solid #3a2a00;padding:1.2rem;margin-bottom:1.5rem}
28
+ .box-title{color:#ff3333;font-size:13px;letter-spacing:2px;margin-bottom:1rem;font-weight:bold}
29
+ .box-title::before{content:'β˜… '}
30
+ .ranking-row{display:flex;align-items:center;gap:10px;margin-bottom:8px}
31
+ .rank-name{color:#daa520;width:110px;font-size:12px;font-weight:bold;flex-shrink:0}
32
+ .bar-wrap{flex:1;background:#080808;height:13px;border:1px solid #222}
33
+ .bar{background:#cc0000;height:100%;transition:width .8s ease-out}
34
+ .tkns{color:#7a6228;width:90px;text-align:right;font-size:11px}
35
+ .focus-tree{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
36
+ .focus-node{border:1px solid #ff3333;color:#ff3333;padding:4px 9px;font-size:10px;text-transform:uppercase;background:rgba(255,0,0,0.05)}
37
+ .tank-section{background:#1a1200;border:1px solid #3a2a00;padding:1.2rem;margin-bottom:1.5rem}
38
+ .tank-title{font-size:13px;color:#cc0000;letter-spacing:3px;margin-bottom:1rem;font-weight:bold}
39
+ .tank-row{display:flex;gap:10px;margin-bottom:7px;align-items:center}
40
+ .tank-name{font-size:12px;color:#e8c86b;width:75px;flex-shrink:0}
41
+ .tank-bar-wrap{flex:1;background:#0d0d0d;height:14px}
42
+ .tank-bar{height:100%;background:#cc0000}
43
+ .tank-era{font-size:10px;color:#7a6228;width:75px;text-align:right}
44
+ .quote{border-left:3px solid #ff3333;background:rgba(255,0,0,0.03);padding:12px;margin-bottom:1.5rem;font-style:italic;color:#888;font-size:12px}
45
+ .footer{border-top:1px solid #3a2a00;padding:.75rem 1.5rem;text-align:center;font-size:10px;color:#4a3a10;letter-spacing:3px}
46
+ .classified{color:#cc0000}
47
+ </style>
48
+ <div class="rp-wrap">
49
+ <div class="rp-header">
50
+ <div class="rp-star">&#9733;</div>
51
+ <div>
52
+ <div class="rp-title">ROW-PROXY // CCCP</div>
53
+ <div class="rp-sub">SOVIET ARMORED DIVISION β€” AI GATEWAY SYSTEM β€” 1960-1985</div>
54
+ </div>
55
+ <div style="margin-left:auto;text-align:right">
56
+ <div style="font-size:10px;color:#44aa99;letter-spacing:2px">&#9679; SISTEMA ACTIVO</div>
57
+ <div style="font-size:10px;color:#7a6228;margin-top:2px">HUGGING FACE DEPLOY</div>
58
+ </div>
59
+ </div>
60
+ <div class="red-bar"></div>
61
+ <div class="rp-body">
62
+ <div class="sec-label">// ESTADO DEL SISTEMA</div>
63
+ <div class="status-row">
64
+ <div class="scard"><div class="val online">&#9679; ONLINE</div><div class="lbl">PROXY STATUS</div></div>
65
+ <div class="scard"><div class="val" id="model-count">8</div><div class="lbl">MODELOS ACTIVOS</div></div>
66
+ <div class="scard"><div class="val">TOP SECRET</div><div class="lbl">API KEY</div></div>
67
+ </div>
68
+ <div class="sec-label">// PUNTO DE ACCESO</div>
69
+ <div class="url-box">
70
+ <div class="url-label">BASE URL β€” PRODUCCION</div>
71
+ <div class="url-val">https://moge-row-row-proxy.hf.space/v1</div>
72
+ <div class="key-val">API KEY: TOP SECRET</div>
73
+ </div>
74
+ <div class="sec-label">// MODELOS DISPONIBLES</div>
75
+ <div class="models-grid">
76
+ <div class="model-item"><div class="model-dot dot-green"></div><div class="model-name">claude-sonnet-4-6</div></div>
77
+ <div class="model-item"><div class="model-dot dot-green"></div><div class="model-name">claude-haiku-4-5</div></div>
78
+ <div class="model-item"><div class="model-dot dot-green"></div><div class="model-name">claude-opus-4-6</div></div>
79
+ <div class="model-item"><div class="model-dot dot-green"></div><div class="model-name">claude-3-5-sonnet</div></div>
80
+ <div class="model-item"><div class="model-dot dot-gold"></div><div class="model-name">glm-4.7</div></div>
81
+ <div class="model-item"><div class="model-dot dot-gold"></div><div class="model-name">glm-4.7-thinking</div></div>
82
+ <div class="model-item"><div class="model-dot dot-gold"></div><div class="model-name">glm-5</div></div>
83
+ <div class="model-item"><div class="model-dot dot-gold"></div><div class="model-name">glm-5-thinking</div></div>
84
+ </div>
85
+ <div class="sec-label">// HOI4 β€” FRENTE ORIENTAL β€” TOP COMANDANTES</div>
86
+ <div class="box">
87
+ <div class="box-title">TOP USUARIOS (COMANDANTES)</div>
88
+ <div id="ranking-frente">
89
+ <div style="color:#7a6228;text-align:center;padding:10px;font-size:12px">CONECTANDO AL SERVIDOR CENTRAL...</div>
90
+ </div>
91
+ </div>
92
+ <div class="sec-label">// ARBOL DE ENFOQUE SOVIETICO</div>
93
+ <div class="box">
94
+ <div class="box-title">ARBOL DE ENFOQUE</div>
95
+ <div class="focus-tree">
96
+ <div class="focus-node">INDUSTRIA DE GUERRA</div>
97
+ <div class="focus-node">COLLECTIVIZACION</div>
98
+ <div class="focus-node">PURGA MILITAR</div>
99
+ <div class="focus-node">LEND-LEASE</div>
100
+ <div class="focus-node">PACTO RIBBENTROP</div>
101
+ <div class="focus-node">DEFENSA EN PROFUNDIDAD</div>
102
+ <div class="focus-node">NvrrrB has been here</div>
103
+ </div>
104
+ </div>
105
+ <div class="quote">
106
+ "La victoria es para aquellos que no retroceden. Ni un paso atras."<br>
107
+ β€” Orden No. 227, Stalin β€” 1942 β€” NO STEP BACK
108
+ </div>
109
+ </div>
110
+ <div class="footer"><span class="classified">&#9733; CLASIFICADO &#9733;</span> &mdash; ROW-PROXY v1.0 &mdash; CCCP AI GATEWAY &mdash; <span class="classified">&#9733; CLASIFICADO &#9733;</span></div>
111
+ </div>
112
+ <script>
113
+ async function updateStats(){
114
+ try{
115
+ const r=await fetch(window.location.origin+'/stats');
116
+ const data=await r.json();
117
+ const container=document.getElementById('ranking-frente');
118
+ const entries=Object.entries(data.keys||{}).map(([name,info])=>({name,tokens:info.tokens||0})).sort((a,b)=>b.tokens-a.tokens);
119
+ if(!entries.length)return;
120
+ const maxTokens=Math.max(...entries.map(e=>e.tokens),5000);
121
+ container.innerHTML=entries.map(u=>`
122
+ <div class="ranking-row">
123
+ <div class="rank-name">${u.name.toUpperCase()}</div>
124
+ <div class="bar-wrap"><div class="bar" style="width:${Math.min((i+1)*25,100)}%"></div></div>
125
+ <div class="tkns">TOP ${i+1}</div>
126
+ </div>`).join('');
127
+ }catch(e){console.error(e);}
128
+ }
129
+ setInterval(updateStats,5000);updateStats();
130
+ </script>