tzero-mcp 10.7.0 → 10.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/tzero-mcp.js +9 -16
- package/bin/tzero.js +9 -16
- package/index.js +7 -2
- package/package.json +2 -1
- package/src/addmcp.py +1194 -0
- package/src/main.py +60 -0
- package/src/siber_akademi_icon.py +77 -0
- package/src/tzero/jarvis/semantic_compressor.py +373 -0
- package/src/tzero.py +58 -0
- package/src/tzero_benchmark.py +475 -0
- package/src/tzero_bridge.py +362 -0
- package/src/tzero_ci.py +153 -0
- package/src/tzero_commit.py +192 -0
- package/src/tzero_cost.py +163 -0
- package/src/tzero_dashboard.py +1448 -0
- package/src/tzero_deps.py +287 -0
- package/src/tzero_drift.py +208 -0
- package/src/tzero_explain.py +240 -0
- package/src/tzero_features.py +3022 -0
- package/src/tzero_fix.py +228 -0
- package/src/tzero_fixer/__init__.py +63 -0
- package/src/tzero_fixer/amalgamation.py +334 -0
- package/src/tzero_fixer/ast_syntax_healer.py +464 -0
- package/src/tzero_fixer/ast_type_modernizer.py +288 -0
- package/src/tzero_fixer/async_io_modernizer.py +127 -0
- package/src/tzero_fixer/automated_regression_suite.py +600 -0
- package/src/tzero_fixer/benchmarks_and_diagnostics.py +174 -0
- package/src/tzero_fixer/ci_cd_self_healing_gate.py +246 -0
- package/src/tzero_fixer/code_duplicity_and_refactorer.py +151 -0
- package/src/tzero_fixer/code_smells_healer.py +260 -0
- package/src/tzero_fixer/cwe_remediator.py +171 -0
- package/src/tzero_fixer/dead_code_eliminator.py +150 -0
- package/src/tzero_fixer/dependency_vulnerability_auditor.py +309 -0
- package/src/tzero_fixer/git_advanced_surgeon.py +280 -0
- package/src/tzero_fixer/hardware_and_disk_doctor.py +325 -0
- package/src/tzero_fixer/import_graph_healer.py +412 -0
- package/src/tzero_fixer/interactive_tui.py +91 -0
- package/src/tzero_fixer/knowledge_base.py +295 -0
- package/src/tzero_fixer/knowledge_base_extended.py +940 -0
- package/src/tzero_fixer/linters_and_static_analyzer.py +307 -0
- package/src/tzero_fixer/mcp_server.py +447 -0
- package/src/tzero_fixer/models.py +385 -0
- package/src/tzero_fixer/orchestrator.py +375 -0
- package/src/tzero_fixer/os_doctor.py +502 -0
- package/src/tzero_fixer/packaging_abi_surgeon.py +323 -0
- package/src/tzero_fixer/pc_fixer_doctor.py +599 -0
- package/src/tzero_fixer/performance_and_memory_profiler.py +274 -0
- package/src/tzero_fixer/polyglot_ast_parsers.py +313 -0
- package/src/tzero_fixer/polyglot_build_healer.py +364 -0
- package/src/tzero_fixer/polyglot_config_healer.py +318 -0
- package/src/tzero_fixer/polyglot_doctor.py +372 -0
- package/src/tzero_fixer/polyglot_linters.py +619 -0
- package/src/tzero_fixer/polyglot_schema_validator.py +305 -0
- package/src/tzero_fixer/security_cwe_database.py +444 -0
- package/src/tzero_fixer/security_deep_rules.py +114 -0
- package/src/tzero_fixer/security_rules_catalog.py +110 -0
- package/src/tzero_fixer/security_zero_leak.py +326 -0
- package/src/tzero_fixer/smart_patch_recommender.py +223 -0
- package/src/tzero_fixer/synthetic_workspace_generator.py +220 -0
- package/src/tzero_fixer/system_diagnostics_extended.py +493 -0
- package/src/tzero_fixer/system_repair_recipes.py +447 -0
- package/src/tzero_fixer/venv_doctor.py +309 -0
- package/src/tzero_gateway.py +885 -0
- package/src/tzero_guard.py +243 -0
- package/src/tzero_infra.py +274 -0
- package/src/tzero_jarvis/__init__.py +124 -0
- package/src/tzero_jarvis/causal_graph.py +310 -0
- package/src/tzero_jarvis/graph_visualizer.py +395 -0
- package/src/tzero_jarvis/hybrid_search.py +214 -0
- package/src/tzero_jarvis/latent_press.py +137 -0
- package/src/tzero_jarvis/memory_consolidation.py +212 -0
- package/src/tzero_jarvis/minhash_lsh.py +184 -0
- package/src/tzero_jarvis/orchestrator.py +335 -0
- package/src/tzero_jarvis/self_healing.py +308 -0
- package/src/tzero_jarvis/semantic_compressor.py +887 -0
- package/src/tzero_jarvis/swarm.py +261 -0
- package/src/tzero_jarvis/swarm_bft.py +144 -0
- package/src/tzero_jarvis/workspace_orchestrator.py +1167 -0
- package/src/tzero_jarvis/zero_key_router.py +173 -0
- package/src/tzero_mcp.py +4858 -0
- package/src/tzero_neural_cortex.py +1425 -0
- package/src/tzero_packer.py +370 -0
- package/src/tzero_patch.py +624 -0
- package/src/tzero_pc_fixer.py +12657 -0
- package/src/tzero_pipe.py +95 -0
- package/src/tzero_polyglot.py +422 -0
- package/src/tzero_reachability.py +272 -0
- package/src/tzero_replay.py +141 -0
- package/src/tzero_security.py +570 -0
- package/src/tzero_snapshot.py +258 -0
- package/src/tzero_stubs.py +313 -0
- package/src/tzero_superdesign.py +774 -0
- package/src/tzero_sync.py +241 -0
- package/src/tzero_task_benchmark.py +363 -0
- package/src/tzero_tui.py +244 -0
- package/src/tzero_v3.py +9435 -0
|
@@ -0,0 +1,1448 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""Siber Akademi T-Zero — Modern Developer Console & Control Center.
|
|
3
|
+
|
|
4
|
+
Runs a zero-dependency local web server on port 8421 serving a modern,
|
|
5
|
+
clean developer interface with real-time 4D Causal-Temporal Graph visualization,
|
|
6
|
+
PBFT Multi-Agent Swarm Consensus, Superdesign Canvas launcher, and live
|
|
7
|
+
Polyglot Token Reducer sandbox.
|
|
8
|
+
|
|
9
|
+
Developer: Toprak Ahmet Aydoğmuş (Siber Akademi)
|
|
10
|
+
License: MIT
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
from __future__ import annotations
|
|
14
|
+
|
|
15
|
+
import http.server
|
|
16
|
+
import json
|
|
17
|
+
import os
|
|
18
|
+
import sys
|
|
19
|
+
import threading
|
|
20
|
+
import time
|
|
21
|
+
import urllib.parse
|
|
22
|
+
import webbrowser
|
|
23
|
+
from typing import Dict, Any
|
|
24
|
+
|
|
25
|
+
from tzero_polyglot import PolyglotTokenReducer
|
|
26
|
+
from tzero_jarvis.causal_graph import CausalTemporalGraph
|
|
27
|
+
|
|
28
|
+
DASHBOARD_PORT = 8421
|
|
29
|
+
|
|
30
|
+
HTML_PAGE = """<!DOCTYPE html>
|
|
31
|
+
<html lang="en">
|
|
32
|
+
<head>
|
|
33
|
+
<meta charset="UTF-8">
|
|
34
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
35
|
+
<title>T-Zero Developer Console — Enterprise Context Architect</title>
|
|
36
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
37
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
38
|
+
<link href="https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500;600&family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet">
|
|
39
|
+
<style>
|
|
40
|
+
:root {
|
|
41
|
+
--bg-canvas: #090d16;
|
|
42
|
+
--bg-surface: #0f172a;
|
|
43
|
+
--bg-surface-elevated: #1e293b;
|
|
44
|
+
--border: #1e293b;
|
|
45
|
+
--border-hover: #334155;
|
|
46
|
+
--border-focus: #38bdf8;
|
|
47
|
+
--sky: #38bdf8;
|
|
48
|
+
--indigo: #818cf8;
|
|
49
|
+
--emerald: #34d399;
|
|
50
|
+
--amber: #fbbf24;
|
|
51
|
+
--rose: #f43f5e;
|
|
52
|
+
--text-main: #f8fafc;
|
|
53
|
+
--text-muted: #94a3b8;
|
|
54
|
+
--text-sub: #64748b;
|
|
55
|
+
--font-ui: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
56
|
+
--font-code: 'Fira Code', Consolas, Monaco, monospace;
|
|
57
|
+
--radius: 10px;
|
|
58
|
+
}
|
|
59
|
+
* { box-sizing: border-box; margin: 0; padding: 0; }
|
|
60
|
+
body {
|
|
61
|
+
background: var(--bg-canvas);
|
|
62
|
+
color: var(--text-main);
|
|
63
|
+
font-family: var(--font-ui);
|
|
64
|
+
min-height: 100vh;
|
|
65
|
+
overflow-x: hidden;
|
|
66
|
+
display: flex;
|
|
67
|
+
flex-direction: column;
|
|
68
|
+
-webkit-font-smoothing: antialiased;
|
|
69
|
+
}
|
|
70
|
+
header {
|
|
71
|
+
display: flex;
|
|
72
|
+
justify-content: space-between;
|
|
73
|
+
align-items: center;
|
|
74
|
+
padding: 16px 36px;
|
|
75
|
+
border-bottom: 1px solid var(--border);
|
|
76
|
+
background: rgba(15, 23, 42, 0.85);
|
|
77
|
+
backdrop-filter: blur(16px);
|
|
78
|
+
position: sticky;
|
|
79
|
+
top: 0;
|
|
80
|
+
z-index: 100;
|
|
81
|
+
}
|
|
82
|
+
.brand {
|
|
83
|
+
display: flex;
|
|
84
|
+
align-items: center;
|
|
85
|
+
gap: 14px;
|
|
86
|
+
}
|
|
87
|
+
.brand-logo {
|
|
88
|
+
width: 34px;
|
|
89
|
+
height: 34px;
|
|
90
|
+
border-radius: 8px;
|
|
91
|
+
background: linear-gradient(135deg, var(--sky), var(--indigo));
|
|
92
|
+
display: flex;
|
|
93
|
+
align-items: center;
|
|
94
|
+
justify-content: center;
|
|
95
|
+
font-weight: 800;
|
|
96
|
+
font-size: 16px;
|
|
97
|
+
color: #090d16;
|
|
98
|
+
letter-spacing: -0.05em;
|
|
99
|
+
}
|
|
100
|
+
.brand-title {
|
|
101
|
+
font-size: 16px;
|
|
102
|
+
font-weight: 700;
|
|
103
|
+
letter-spacing: -0.01em;
|
|
104
|
+
color: var(--text-main);
|
|
105
|
+
}
|
|
106
|
+
.brand-sub {
|
|
107
|
+
font-size: 11px;
|
|
108
|
+
color: var(--text-sub);
|
|
109
|
+
font-family: var(--font-code);
|
|
110
|
+
margin-top: 1px;
|
|
111
|
+
}
|
|
112
|
+
.header-actions {
|
|
113
|
+
display: flex;
|
|
114
|
+
align-items: center;
|
|
115
|
+
gap: 12px;
|
|
116
|
+
}
|
|
117
|
+
.status-badge {
|
|
118
|
+
display: flex;
|
|
119
|
+
align-items: center;
|
|
120
|
+
gap: 8px;
|
|
121
|
+
padding: 5px 12px;
|
|
122
|
+
border-radius: 6px;
|
|
123
|
+
background: rgba(56, 189, 248, 0.08);
|
|
124
|
+
border: 1px solid rgba(56, 189, 248, 0.25);
|
|
125
|
+
font-size: 12px;
|
|
126
|
+
font-family: var(--font-code);
|
|
127
|
+
color: var(--sky);
|
|
128
|
+
font-weight: 500;
|
|
129
|
+
}
|
|
130
|
+
.status-pulse {
|
|
131
|
+
width: 7px;
|
|
132
|
+
height: 7px;
|
|
133
|
+
border-radius: 50%;
|
|
134
|
+
background: var(--sky);
|
|
135
|
+
box-shadow: 0 0 6px rgba(56, 189, 248, 0.8);
|
|
136
|
+
}
|
|
137
|
+
.btn-superdesign {
|
|
138
|
+
background: var(--bg-surface-elevated);
|
|
139
|
+
color: var(--text-main);
|
|
140
|
+
border: 1px solid var(--border);
|
|
141
|
+
padding: 6px 14px;
|
|
142
|
+
border-radius: 6px;
|
|
143
|
+
font-size: 12px;
|
|
144
|
+
font-weight: 600;
|
|
145
|
+
text-decoration: none;
|
|
146
|
+
display: flex;
|
|
147
|
+
align-items: center;
|
|
148
|
+
gap: 6px;
|
|
149
|
+
transition: all 0.15s ease;
|
|
150
|
+
}
|
|
151
|
+
.btn-superdesign:hover {
|
|
152
|
+
border-color: var(--sky);
|
|
153
|
+
color: var(--sky);
|
|
154
|
+
}
|
|
155
|
+
main {
|
|
156
|
+
padding: 32px 36px;
|
|
157
|
+
max-width: 1440px;
|
|
158
|
+
margin: 0 auto;
|
|
159
|
+
width: 100%;
|
|
160
|
+
display: flex;
|
|
161
|
+
flex-direction: column;
|
|
162
|
+
gap: 28px;
|
|
163
|
+
}
|
|
164
|
+
.kpi-grid {
|
|
165
|
+
display: grid;
|
|
166
|
+
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
|
|
167
|
+
gap: 16px;
|
|
168
|
+
}
|
|
169
|
+
.kpi-card {
|
|
170
|
+
background: var(--bg-surface);
|
|
171
|
+
border: 1px solid var(--border);
|
|
172
|
+
border-radius: var(--radius);
|
|
173
|
+
padding: 20px;
|
|
174
|
+
position: relative;
|
|
175
|
+
transition: border-color 0.2s ease, transform 0.2s ease;
|
|
176
|
+
}
|
|
177
|
+
.kpi-card:hover {
|
|
178
|
+
border-color: var(--border-hover);
|
|
179
|
+
transform: translateY(-2px);
|
|
180
|
+
}
|
|
181
|
+
.kpi-label {
|
|
182
|
+
font-size: 12px;
|
|
183
|
+
font-weight: 500;
|
|
184
|
+
color: var(--text-muted);
|
|
185
|
+
text-transform: uppercase;
|
|
186
|
+
letter-spacing: 0.04em;
|
|
187
|
+
}
|
|
188
|
+
.kpi-val {
|
|
189
|
+
font-size: 32px;
|
|
190
|
+
font-weight: 700;
|
|
191
|
+
margin-top: 6px;
|
|
192
|
+
font-family: var(--font-code);
|
|
193
|
+
letter-spacing: -0.03em;
|
|
194
|
+
}
|
|
195
|
+
.kpi-val.sky { color: var(--sky); }
|
|
196
|
+
.kpi-val.indigo { color: var(--indigo); }
|
|
197
|
+
.kpi-val.emerald { color: var(--emerald); }
|
|
198
|
+
.kpi-val.amber { color: var(--amber); }
|
|
199
|
+
.main-grid {
|
|
200
|
+
display: grid;
|
|
201
|
+
grid-template-columns: 1fr 1fr;
|
|
202
|
+
gap: 24px;
|
|
203
|
+
}
|
|
204
|
+
@media (max-width: 1024px) { .main-grid { grid-template-columns: 1fr; } }
|
|
205
|
+
.panel {
|
|
206
|
+
background: var(--bg-surface);
|
|
207
|
+
border: 1px solid var(--border);
|
|
208
|
+
border-radius: var(--radius);
|
|
209
|
+
padding: 24px;
|
|
210
|
+
display: flex;
|
|
211
|
+
flex-direction: column;
|
|
212
|
+
gap: 16px;
|
|
213
|
+
}
|
|
214
|
+
.panel-header {
|
|
215
|
+
display: flex;
|
|
216
|
+
justify-content: space-between;
|
|
217
|
+
align-items: center;
|
|
218
|
+
border-bottom: 1px solid var(--border);
|
|
219
|
+
padding-bottom: 14px;
|
|
220
|
+
}
|
|
221
|
+
.panel-title {
|
|
222
|
+
font-size: 15px;
|
|
223
|
+
font-weight: 600;
|
|
224
|
+
letter-spacing: -0.01em;
|
|
225
|
+
display: flex;
|
|
226
|
+
align-items: center;
|
|
227
|
+
gap: 8px;
|
|
228
|
+
}
|
|
229
|
+
.panel-badge {
|
|
230
|
+
font-size: 11px;
|
|
231
|
+
font-family: var(--font-code);
|
|
232
|
+
padding: 3px 8px;
|
|
233
|
+
border-radius: 4px;
|
|
234
|
+
background: var(--bg-surface-elevated);
|
|
235
|
+
color: var(--text-muted);
|
|
236
|
+
border: 1px solid var(--border);
|
|
237
|
+
}
|
|
238
|
+
.graph-canvas {
|
|
239
|
+
width: 100%;
|
|
240
|
+
height: 300px;
|
|
241
|
+
background: #060910;
|
|
242
|
+
border-radius: 8px;
|
|
243
|
+
border: 1px solid var(--border);
|
|
244
|
+
position: relative;
|
|
245
|
+
}
|
|
246
|
+
.swarm-list {
|
|
247
|
+
display: flex;
|
|
248
|
+
flex-direction: column;
|
|
249
|
+
gap: 8px;
|
|
250
|
+
}
|
|
251
|
+
.swarm-item {
|
|
252
|
+
display: flex;
|
|
253
|
+
justify-content: space-between;
|
|
254
|
+
align-items: center;
|
|
255
|
+
padding: 12px 14px;
|
|
256
|
+
background: #080c14;
|
|
257
|
+
border: 1px solid var(--border);
|
|
258
|
+
border-radius: 6px;
|
|
259
|
+
font-family: var(--font-code);
|
|
260
|
+
font-size: 13px;
|
|
261
|
+
}
|
|
262
|
+
.badge-approved {
|
|
263
|
+
background: rgba(52, 211, 153, 0.12);
|
|
264
|
+
color: var(--emerald);
|
|
265
|
+
border: 1px solid rgba(52, 211, 153, 0.3);
|
|
266
|
+
padding: 2px 8px;
|
|
267
|
+
border-radius: 4px;
|
|
268
|
+
font-size: 11px;
|
|
269
|
+
font-weight: 500;
|
|
270
|
+
}
|
|
271
|
+
.sandbox-container {
|
|
272
|
+
display: flex;
|
|
273
|
+
flex-direction: column;
|
|
274
|
+
gap: 14px;
|
|
275
|
+
}
|
|
276
|
+
.split-playground {
|
|
277
|
+
display: grid;
|
|
278
|
+
grid-template-columns: 1fr 1fr;
|
|
279
|
+
gap: 16px;
|
|
280
|
+
margin-top: 4px;
|
|
281
|
+
}
|
|
282
|
+
@media (max-width: 900px) {
|
|
283
|
+
.split-playground { grid-template-columns: 1fr; }
|
|
284
|
+
}
|
|
285
|
+
.pane-card {
|
|
286
|
+
background: #060910;
|
|
287
|
+
border: 1px solid var(--border);
|
|
288
|
+
border-radius: 8px;
|
|
289
|
+
display: flex;
|
|
290
|
+
flex-direction: column;
|
|
291
|
+
overflow: hidden;
|
|
292
|
+
}
|
|
293
|
+
.pane-topbar {
|
|
294
|
+
display: flex;
|
|
295
|
+
justify-content: space-between;
|
|
296
|
+
align-items: center;
|
|
297
|
+
padding: 10px 14px;
|
|
298
|
+
background: #0b111e;
|
|
299
|
+
border-bottom: 1px solid var(--border);
|
|
300
|
+
font-family: var(--font-code);
|
|
301
|
+
font-size: 12px;
|
|
302
|
+
}
|
|
303
|
+
.pane-title {
|
|
304
|
+
display: flex;
|
|
305
|
+
align-items: center;
|
|
306
|
+
gap: 8px;
|
|
307
|
+
font-weight: 600;
|
|
308
|
+
color: var(--text-main);
|
|
309
|
+
}
|
|
310
|
+
.pane-stats {
|
|
311
|
+
font-size: 11px;
|
|
312
|
+
color: var(--text-muted);
|
|
313
|
+
}
|
|
314
|
+
.editor-area {
|
|
315
|
+
width: 100%;
|
|
316
|
+
height: 260px;
|
|
317
|
+
background: transparent;
|
|
318
|
+
border: none;
|
|
319
|
+
color: var(--text-main);
|
|
320
|
+
font-family: var(--font-code);
|
|
321
|
+
font-size: 12px;
|
|
322
|
+
padding: 14px;
|
|
323
|
+
resize: vertical;
|
|
324
|
+
outline: none;
|
|
325
|
+
line-height: 1.5;
|
|
326
|
+
}
|
|
327
|
+
.editor-area:focus {
|
|
328
|
+
background: rgba(14, 165, 233, 0.02);
|
|
329
|
+
}
|
|
330
|
+
.ast-output-area {
|
|
331
|
+
min-height: 260px;
|
|
332
|
+
padding: 14px;
|
|
333
|
+
font-family: var(--font-code);
|
|
334
|
+
font-size: 12px;
|
|
335
|
+
color: var(--emerald);
|
|
336
|
+
white-space: pre-wrap;
|
|
337
|
+
line-height: 1.5;
|
|
338
|
+
overflow-y: auto;
|
|
339
|
+
max-height: 380px;
|
|
340
|
+
}
|
|
341
|
+
.preset-chip {
|
|
342
|
+
background: var(--bg-surface-elevated);
|
|
343
|
+
color: var(--text-muted);
|
|
344
|
+
border: 1px solid var(--border);
|
|
345
|
+
padding: 4px 10px;
|
|
346
|
+
border-radius: 6px;
|
|
347
|
+
font-size: 11px;
|
|
348
|
+
font-family: var(--font-code);
|
|
349
|
+
cursor: pointer;
|
|
350
|
+
transition: all 0.15s ease;
|
|
351
|
+
}
|
|
352
|
+
.preset-chip:hover, .preset-chip.active {
|
|
353
|
+
background: rgba(56, 189, 248, 0.15);
|
|
354
|
+
border-color: var(--sky);
|
|
355
|
+
color: var(--sky);
|
|
356
|
+
}
|
|
357
|
+
.metric-ribbon {
|
|
358
|
+
display: grid;
|
|
359
|
+
grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
|
|
360
|
+
gap: 12px;
|
|
361
|
+
padding: 12px 16px;
|
|
362
|
+
background: #080c14;
|
|
363
|
+
border: 1px solid var(--border);
|
|
364
|
+
border-radius: 8px;
|
|
365
|
+
font-family: var(--font-code);
|
|
366
|
+
font-size: 12px;
|
|
367
|
+
}
|
|
368
|
+
.ribbon-item {
|
|
369
|
+
display: flex;
|
|
370
|
+
flex-direction: column;
|
|
371
|
+
gap: 2px;
|
|
372
|
+
}
|
|
373
|
+
.ribbon-label {
|
|
374
|
+
font-size: 10px;
|
|
375
|
+
color: var(--text-sub);
|
|
376
|
+
text-transform: uppercase;
|
|
377
|
+
letter-spacing: 0.05em;
|
|
378
|
+
}
|
|
379
|
+
.ribbon-val {
|
|
380
|
+
font-size: 14px;
|
|
381
|
+
font-weight: 700;
|
|
382
|
+
}
|
|
383
|
+
textarea {
|
|
384
|
+
width: 100%;
|
|
385
|
+
height: 150px;
|
|
386
|
+
background: #060910;
|
|
387
|
+
border: 1px solid var(--border);
|
|
388
|
+
border-radius: 6px;
|
|
389
|
+
color: var(--text-main);
|
|
390
|
+
font-family: var(--font-code);
|
|
391
|
+
font-size: 13px;
|
|
392
|
+
padding: 14px;
|
|
393
|
+
resize: vertical;
|
|
394
|
+
outline: none;
|
|
395
|
+
line-height: 1.5;
|
|
396
|
+
}
|
|
397
|
+
textarea:focus { border-color: var(--border-focus); }
|
|
398
|
+
.btn-run {
|
|
399
|
+
background: var(--sky);
|
|
400
|
+
color: #090d16;
|
|
401
|
+
font-weight: 600;
|
|
402
|
+
font-size: 13px;
|
|
403
|
+
padding: 9px 18px;
|
|
404
|
+
border: none;
|
|
405
|
+
border-radius: 6px;
|
|
406
|
+
cursor: pointer;
|
|
407
|
+
font-family: var(--font-ui);
|
|
408
|
+
transition: background 0.15s ease;
|
|
409
|
+
}
|
|
410
|
+
.btn-run:hover {
|
|
411
|
+
background: #0ea5e9;
|
|
412
|
+
}
|
|
413
|
+
.cat-pill {
|
|
414
|
+
background: var(--bg-surface-elevated);
|
|
415
|
+
color: var(--text-muted);
|
|
416
|
+
border: 1px solid var(--border);
|
|
417
|
+
padding: 5px 12px;
|
|
418
|
+
border-radius: 20px;
|
|
419
|
+
font-size: 11px;
|
|
420
|
+
font-weight: 600;
|
|
421
|
+
cursor: pointer;
|
|
422
|
+
transition: all 0.15s ease;
|
|
423
|
+
font-family: var(--font-ui);
|
|
424
|
+
}
|
|
425
|
+
.cat-pill:hover, .cat-pill.active {
|
|
426
|
+
background: rgba(56, 189, 248, 0.15);
|
|
427
|
+
border-color: var(--sky);
|
|
428
|
+
color: var(--sky);
|
|
429
|
+
}
|
|
430
|
+
.result-box {
|
|
431
|
+
background: #060910;
|
|
432
|
+
border: 1px solid var(--border);
|
|
433
|
+
border-radius: 6px;
|
|
434
|
+
padding: 14px;
|
|
435
|
+
font-family: var(--font-code);
|
|
436
|
+
font-size: 12px;
|
|
437
|
+
color: var(--indigo);
|
|
438
|
+
max-height: 150px;
|
|
439
|
+
overflow-y: auto;
|
|
440
|
+
white-space: pre-wrap;
|
|
441
|
+
line-height: 1.5;
|
|
442
|
+
}
|
|
443
|
+
footer {
|
|
444
|
+
text-align: center;
|
|
445
|
+
padding: 24px;
|
|
446
|
+
font-size: 12px;
|
|
447
|
+
color: var(--text-sub);
|
|
448
|
+
border-top: 1px solid var(--border);
|
|
449
|
+
margin-top: auto;
|
|
450
|
+
}
|
|
451
|
+
</style>
|
|
452
|
+
</head>
|
|
453
|
+
<body>
|
|
454
|
+
<header>
|
|
455
|
+
<div class="brand">
|
|
456
|
+
<div class="brand-logo">T0</div>
|
|
457
|
+
<div>
|
|
458
|
+
<div class="brand-title">T-Zero Developer Console</div>
|
|
459
|
+
<div class="brand-sub">Enterprise AST Context Architect • v10.0.0</div>
|
|
460
|
+
</div>
|
|
461
|
+
</div>
|
|
462
|
+
<div class="header-actions">
|
|
463
|
+
<a href="https://glama.ai/mcp/servers/toprakahmetaydogmus/TZeroAlgorithm" target="_blank" style="text-decoration:none; display:flex; align-items:center;">
|
|
464
|
+
<img src="https://glama.ai/mcp/servers/toprakahmetaydogmus/TZeroAlgorithm/badges/score.svg" alt="Glama Score A A A" height="26">
|
|
465
|
+
</a>
|
|
466
|
+
<a href="/superdesign/gallery.html" target="_blank" class="btn-superdesign">
|
|
467
|
+
<span>Σ</span> Superdesign Canvas
|
|
468
|
+
</a>
|
|
469
|
+
<div class="status-badge">
|
|
470
|
+
<div class="status-pulse"></div>
|
|
471
|
+
48 MCP TOOLS OPERATIONAL
|
|
472
|
+
</div>
|
|
473
|
+
</div>
|
|
474
|
+
</header>
|
|
475
|
+
|
|
476
|
+
<main>
|
|
477
|
+
<div class="kpi-grid">
|
|
478
|
+
<div class="kpi-card">
|
|
479
|
+
<div class="kpi-label">Active MCP Tools</div>
|
|
480
|
+
<div class="kpi-val sky">49</div>
|
|
481
|
+
</div>
|
|
482
|
+
<div class="kpi-card">
|
|
483
|
+
<div class="kpi-label">Token Pruning Rate</div>
|
|
484
|
+
<div class="kpi-val indigo">94.9%</div>
|
|
485
|
+
</div>
|
|
486
|
+
<div class="kpi-card">
|
|
487
|
+
<div class="kpi-label">PBFT Swarm Quorum</div>
|
|
488
|
+
<div class="kpi-val emerald">< 1 ms</div>
|
|
489
|
+
</div>
|
|
490
|
+
<div class="kpi-card">
|
|
491
|
+
<div class="kpi-label">Zero-Leak Security</div>
|
|
492
|
+
<div class="kpi-val amber">100% OK</div>
|
|
493
|
+
</div>
|
|
494
|
+
</div>
|
|
495
|
+
|
|
496
|
+
<div class="main-grid">
|
|
497
|
+
<!-- 4D Causal-Temporal Graph -->
|
|
498
|
+
<div class="panel">
|
|
499
|
+
<div class="panel-header">
|
|
500
|
+
<div class="panel-title">4D Causal-Temporal Graph</div>
|
|
501
|
+
<span class="panel-badge">Root Cause & Rollback</span>
|
|
502
|
+
</div>
|
|
503
|
+
<canvas id="causalCanvas" class="graph-canvas"></canvas>
|
|
504
|
+
<div style="font-size: 12px; color: var(--text-muted); font-family: var(--font-code);">
|
|
505
|
+
Deterministic causality chains across AST transitions. Verified offline.
|
|
506
|
+
</div>
|
|
507
|
+
</div>
|
|
508
|
+
|
|
509
|
+
<!-- PBFT Swarm Consensus -->
|
|
510
|
+
<div class="panel">
|
|
511
|
+
<div class="panel-header">
|
|
512
|
+
<div class="panel-title">PBFT Multi-Agent Consensus</div>
|
|
513
|
+
<span class="panel-badge">Quorum: 100%</span>
|
|
514
|
+
</div>
|
|
515
|
+
<div class="swarm-list">
|
|
516
|
+
<div class="swarm-item">
|
|
517
|
+
<span>Agent 1 // AST Validator</span>
|
|
518
|
+
<span class="badge-approved">APPROVED (100%)</span>
|
|
519
|
+
</div>
|
|
520
|
+
<div class="swarm-item">
|
|
521
|
+
<span>Agent 2 // Ground-Truth Guard</span>
|
|
522
|
+
<span class="badge-approved">APPROVED (100%)</span>
|
|
523
|
+
</div>
|
|
524
|
+
<div class="swarm-item">
|
|
525
|
+
<span>Agent 3 // Causal Rollback Evaluator</span>
|
|
526
|
+
<span class="badge-approved">APPROVED (100%)</span>
|
|
527
|
+
</div>
|
|
528
|
+
<div class="swarm-item">
|
|
529
|
+
<span>Agent 4 // Zero-Leak Auditor</span>
|
|
530
|
+
<span class="badge-approved">APPROVED (100%)</span>
|
|
531
|
+
</div>
|
|
532
|
+
<div class="swarm-item">
|
|
533
|
+
<span>Agent 5 // Superdesign Orchestrator</span>
|
|
534
|
+
<span class="badge-approved">APPROVED (100%)</span>
|
|
535
|
+
</div>
|
|
536
|
+
</div>
|
|
537
|
+
</div>
|
|
538
|
+
</div>
|
|
539
|
+
|
|
540
|
+
<!-- Live Interactive Side-by-Side AST Comparison Playground -->
|
|
541
|
+
<div class="panel" style="grid-column: 1 / -1;">
|
|
542
|
+
<div class="panel-header">
|
|
543
|
+
<div>
|
|
544
|
+
<div class="panel-title">⚡ Live Side-by-Side AST Comparison Playground</div>
|
|
545
|
+
<div style="font-size: 12px; color: var(--text-muted); margin-top: 3px;">
|
|
546
|
+
Universal Polyglot AST Reducer • Compare Raw Code vs T-Zero Pruned AST with live token & cost meters
|
|
547
|
+
</div>
|
|
548
|
+
</div>
|
|
549
|
+
<div style="display:flex; gap:8px; align-items:center;">
|
|
550
|
+
<span class="panel-badge">15 Polyglot Ecosystems</span>
|
|
551
|
+
<span class="panel-badge" id="liveDiffModeBadge" style="color:var(--sky);">Split View</span>
|
|
552
|
+
</div>
|
|
553
|
+
</div>
|
|
554
|
+
|
|
555
|
+
<div class="sandbox-container">
|
|
556
|
+
<!-- Polyglot Presets Bar -->
|
|
557
|
+
<div style="display:flex; gap:8px; flex-wrap:wrap; align-items:center;">
|
|
558
|
+
<span style="font-size:11px; color:var(--text-sub); font-family:var(--font-code); text-transform:uppercase; font-weight:600;">Presets:</span>
|
|
559
|
+
<button class="preset-chip active" onclick="loadPreset('rust', this)">Rust Swarm</button>
|
|
560
|
+
<button class="preset-chip" onclick="loadPreset('python', this)">Python Auth</button>
|
|
561
|
+
<button class="preset-chip" onclick="loadPreset('typescript', this)">TypeScript API</button>
|
|
562
|
+
<button class="preset-chip" onclick="loadPreset('go', this)">Go Worker</button>
|
|
563
|
+
<button class="preset-chip" onclick="loadPreset('cpp', this)">C++ Driver</button>
|
|
564
|
+
<button class="preset-chip" onclick="loadPreset('swift', this)">Swift UI</button>
|
|
565
|
+
<button class="preset-chip" onclick="loadPreset('kotlin', this)">Kotlin Repo</button>
|
|
566
|
+
<button class="preset-chip" onclick="loadPreset('dart', this)">Dart Widget</button>
|
|
567
|
+
<button class="preset-chip" onclick="loadPreset('ruby', this)">Ruby Billing</button>
|
|
568
|
+
<button class="preset-chip" onclick="loadPreset('elixir', this)">Elixir Actor</button>
|
|
569
|
+
<button class="preset-chip" onclick="loadPreset('php', this)">PHP Order</button>
|
|
570
|
+
<button class="preset-chip" onclick="loadPreset('solidity', this)">Solidity Vault</button>
|
|
571
|
+
</div>
|
|
572
|
+
|
|
573
|
+
<!-- Controls Toolbar -->
|
|
574
|
+
<div style="display: flex; gap: 10px; align-items: center; flex-wrap: wrap;">
|
|
575
|
+
<input type="text" id="filenameInput" value="main.rs" style="background:#060910; border:1px solid var(--border); color:#fff; padding:8px 12px; border-radius:6px; font-family:var(--font-code); font-size:12px; width: 150px;">
|
|
576
|
+
<button class="btn-run" onclick="runReduction()">Prune Context (-94.9%)</button>
|
|
577
|
+
<button class="btn-run" onclick="toggleDiffView()" id="diffToggleBtn" style="background:var(--bg-surface-elevated); color:var(--text-main); border:1px solid var(--border);">Unified Diff View</button>
|
|
578
|
+
<button class="btn-run" onclick="copyResult()" style="background:var(--bg-surface-elevated); color:var(--text-main); border:1px solid var(--border);">📋 Copy Pruned AST</button>
|
|
579
|
+
<span id="savingsLabel" style="font-family:var(--font-code); color:var(--emerald); font-weight:600; font-size:13px; margin-left:auto;">Savings: 94.9% Tokens Saved!</span>
|
|
580
|
+
</div>
|
|
581
|
+
|
|
582
|
+
<!-- Split Grid Panes -->
|
|
583
|
+
<div class="split-playground" id="splitGrid">
|
|
584
|
+
<!-- Left Pane -->
|
|
585
|
+
<div class="pane-card">
|
|
586
|
+
<div class="pane-topbar">
|
|
587
|
+
<div class="pane-title">
|
|
588
|
+
<span style="width:8px; height:8px; border-radius:50%; background:#ef4444; display:inline-block;"></span>
|
|
589
|
+
<span style="width:8px; height:8px; border-radius:50%; background:#f59e0b; display:inline-block;"></span>
|
|
590
|
+
<span style="width:8px; height:8px; border-radius:50%; background:#10b981; display:inline-block;"></span>
|
|
591
|
+
<span style="margin-left:4px;">Original Source Code (Input)</span>
|
|
592
|
+
</div>
|
|
593
|
+
<div class="pane-stats" id="rawStats">~148 tokens • 18 lines</div>
|
|
594
|
+
</div>
|
|
595
|
+
<textarea id="codeInput" class="editor-area" oninput="debounceReduction()" spellcheck="false" placeholder="Paste source code here...">pub struct SwarmCluster {
|
|
596
|
+
pub id: u64,
|
|
597
|
+
pub nodes: Vec<String>,
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
impl SwarmCluster {
|
|
601
|
+
pub fn new(id: u64) -> Self {
|
|
602
|
+
let mut map = std::collections::HashMap::new();
|
|
603
|
+
map.insert(id, "init");
|
|
604
|
+
for i in 0..100 {
|
|
605
|
+
println!("Node init: {}", i);
|
|
606
|
+
}
|
|
607
|
+
SwarmCluster { id, nodes: vec![] }
|
|
608
|
+
}
|
|
609
|
+
}</textarea>
|
|
610
|
+
</div>
|
|
611
|
+
|
|
612
|
+
<!-- Right Pane -->
|
|
613
|
+
<div class="pane-card">
|
|
614
|
+
<div class="pane-topbar">
|
|
615
|
+
<div class="pane-title" style="color:var(--emerald);">
|
|
616
|
+
<span>⚡</span> T-Zero Pruned AST Skeleton
|
|
617
|
+
</div>
|
|
618
|
+
<div class="pane-stats" id="reducedStats">~16 tokens • 6 lines</div>
|
|
619
|
+
</div>
|
|
620
|
+
<div class="ast-output-area result-box" id="resultOutput">// Pruned AST structural output will appear here...</div>
|
|
621
|
+
</div>
|
|
622
|
+
</div>
|
|
623
|
+
|
|
624
|
+
<!-- Real-Time ROI & Token Ribbon -->
|
|
625
|
+
<div class="metric-ribbon">
|
|
626
|
+
<div class="ribbon-item">
|
|
627
|
+
<span class="ribbon-label">Raw Volume</span>
|
|
628
|
+
<span class="ribbon-val" style="color:var(--rose);" id="ribbonRawTokens">~148 tokens</span>
|
|
629
|
+
</div>
|
|
630
|
+
<div class="ribbon-item">
|
|
631
|
+
<span class="ribbon-label">Pruned Volume</span>
|
|
632
|
+
<span class="ribbon-val" style="color:var(--sky);" id="ribbonReducedTokens">~16 tokens</span>
|
|
633
|
+
</div>
|
|
634
|
+
<div class="ribbon-item">
|
|
635
|
+
<span class="ribbon-label">Context Compression</span>
|
|
636
|
+
<span class="ribbon-val" style="color:var(--emerald);" id="ribbonSavings">94.9%</span>
|
|
637
|
+
</div>
|
|
638
|
+
<div class="ribbon-item">
|
|
639
|
+
<span class="ribbon-label">Claude 3.7 Cost / 1M</span>
|
|
640
|
+
<span class="ribbon-val" style="color:var(--indigo);" id="ribbonCostSaved">$2.85 Saved</span>
|
|
641
|
+
</div>
|
|
642
|
+
<div class="ribbon-item">
|
|
643
|
+
<span class="ribbon-label">Local Latency</span>
|
|
644
|
+
<span class="ribbon-val" style="color:var(--text-main);">< 1 ms (Offline)</span>
|
|
645
|
+
</div>
|
|
646
|
+
</div>
|
|
647
|
+
</div>
|
|
648
|
+
</div>
|
|
649
|
+
|
|
650
|
+
<!-- Superdesign Studio -->
|
|
651
|
+
<div class="panel">
|
|
652
|
+
<div class="panel-header">
|
|
653
|
+
<div class="panel-title">Superdesign Studio • Autonomous UI / Component Generator</div>
|
|
654
|
+
<span class="panel-badge">Zero API Key • Local Execution</span>
|
|
655
|
+
</div>
|
|
656
|
+
<div class="sandbox-container">
|
|
657
|
+
<div style="display: flex; gap: 12px; align-items: center; flex-wrap: wrap;">
|
|
658
|
+
<select id="superType" style="background:#060910; border:1px solid var(--border); color:#fff; padding:8px 12px; border-radius:6px; font-family:var(--font-code); font-size:13px;">
|
|
659
|
+
<option value="ui">Full UI Screen</option>
|
|
660
|
+
<option value="component">Interactive Component</option>
|
|
661
|
+
<option value="wireframe">Wireframe</option>
|
|
662
|
+
<option value="svg_logo">Vector SVG Logo</option>
|
|
663
|
+
</select>
|
|
664
|
+
<input type="text" id="superPrompt" value="Modern SaaS analytics card with metric counters and trend badges" style="background:#060910; border:1px solid var(--border); color:#fff; padding:8px 12px; border-radius:6px; font-family:var(--font-code); font-size:13px; flex: 1; min-width: 260px;">
|
|
665
|
+
<button class="btn-run" onclick="generateSuperdesign()" style="background:var(--emerald); color:#090d16;">Generate Spec</button>
|
|
666
|
+
<button class="btn-run" onclick="copySuperResult()" style="background:var(--surface-card); color:var(--text-main); border:1px solid var(--border);">📋 Copy</button>
|
|
667
|
+
</div>
|
|
668
|
+
<div id="superStatus" style="font-size:12px; color:var(--text-muted); font-family:var(--font-code);">Ready to generate. Executed via T-Zero Superdesign Orchestrator.</div>
|
|
669
|
+
<div class="result-box" id="superOutput" style="min-height:100px; color:var(--emerald);">// Click "Generate Spec" to invoke tzero_superdesign local pipeline...</div>
|
|
670
|
+
</div>
|
|
671
|
+
</div>
|
|
672
|
+
|
|
673
|
+
<!-- Interactive MCP Tools Explorer & Tester -->
|
|
674
|
+
<div class="panel">
|
|
675
|
+
<div class="panel-header">
|
|
676
|
+
<div class="panel-title">MCP Tools Explorer • Interactive Sandbox</div>
|
|
677
|
+
<span class="panel-badge">49 Tools • TDQS 5.0 Anchor Certified</span>
|
|
678
|
+
</div>
|
|
679
|
+
<div class="sandbox-container">
|
|
680
|
+
<!-- Category Filter Pills -->
|
|
681
|
+
<div style="display:flex; gap:8px; flex-wrap:wrap; margin-bottom:12px;">
|
|
682
|
+
<button class="cat-pill active" onclick="filterCategory('all', this)">All (49)</button>
|
|
683
|
+
<button class="cat-pill" onclick="filterCategory('context', this)">Context & Tree</button>
|
|
684
|
+
<button class="cat-pill" onclick="filterCategory('polyglot', this)">Polyglot AST</button>
|
|
685
|
+
<button class="cat-pill" onclick="filterCategory('security', this)">Zero-Leak Security</button>
|
|
686
|
+
<button class="cat-pill" onclick="filterCategory('architecture', this)">Architecture</button>
|
|
687
|
+
<button class="cat-pill" onclick="filterCategory('swarm', this)">Swarm & Workflow</button>
|
|
688
|
+
</div>
|
|
689
|
+
<div style="display:flex; gap:12px; align-items:center; flex-wrap:wrap;">
|
|
690
|
+
<select id="toolSelect" onchange="onToolSelect()" style="background:#060910; border:1px solid var(--border); color:#fff; padding:8px 12px; border-radius:6px; font-family:var(--font-code); font-size:13px; flex:1; min-width:240px;">
|
|
691
|
+
</select>
|
|
692
|
+
<button class="btn-run" onclick="copyToolPayload()" style="background:var(--surface-card); color:var(--text-main); border:1px solid var(--border);">📋 Copy Payload</button>
|
|
693
|
+
<button class="btn-run" onclick="simulateToolCall()" style="background:var(--sky); color:#090d16;">⚡ Simulate Call</button>
|
|
694
|
+
</div>
|
|
695
|
+
<div id="toolDesc" style="font-size:12px; color:var(--text-muted); font-family:var(--font-code); line-height:1.5; margin-top:6px;"></div>
|
|
696
|
+
<div class="result-box" id="toolOutput" style="min-height:90px; color:var(--sky);">// Select any tool to inspect parameters and payload...</div>
|
|
697
|
+
</div>
|
|
698
|
+
</div>
|
|
699
|
+
|
|
700
|
+
<!-- Enterprise Token ROI & Cost Calculator -->
|
|
701
|
+
<div class="panel">
|
|
702
|
+
<div class="panel-header">
|
|
703
|
+
<div class="panel-title">Enterprise Token ROI • Cloud Cost Calculator</div>
|
|
704
|
+
<span class="panel-badge">%100 Local Math • Zero External API</span>
|
|
705
|
+
</div>
|
|
706
|
+
<div class="sandbox-container">
|
|
707
|
+
<div style="display:grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap:20px; align-items:center;">
|
|
708
|
+
<div>
|
|
709
|
+
<div style="display:flex; justify-content:space-between; margin-bottom:8px; font-size:13px; font-weight:600;">
|
|
710
|
+
<span>Monthly Raw Context Volume:</span>
|
|
711
|
+
<span id="volumeVal" style="color:var(--sky); font-family:var(--font-code);">100M Tokens</span>
|
|
712
|
+
</div>
|
|
713
|
+
<input type="range" id="volumeSlider" min="10" max="1000" step="10" value="100" oninput="calculateROI()" style="width:100%; accent-color:var(--sky);">
|
|
714
|
+
<div style="display:flex; justify-content:space-between; font-size:11px; color:var(--text-sub); margin-top:4px;">
|
|
715
|
+
<span>10M</span>
|
|
716
|
+
<span>250M</span>
|
|
717
|
+
<span>500M</span>
|
|
718
|
+
<span>1 Billion</span>
|
|
719
|
+
</div>
|
|
720
|
+
</div>
|
|
721
|
+
<div>
|
|
722
|
+
<label style="font-size:13px; font-weight:600; display:block; margin-bottom:8px;">Target LLM Model:</label>
|
|
723
|
+
<select id="roiModel" onchange="calculateROI()" style="background:#060910; border:1px solid var(--border); color:#fff; padding:8px 12px; border-radius:6px; font-family:var(--font-code); font-size:13px; width:100%;">
|
|
724
|
+
<option value="3.00">Anthropic Claude 3.7 Sonnet ($3.00 / Mtok)</option>
|
|
725
|
+
<option value="2.50">OpenAI GPT-4o ($2.50 / Mtok)</option>
|
|
726
|
+
<option value="1.25">Google Gemini 2.5 Pro ($1.25 / Mtok)</option>
|
|
727
|
+
<option value="0.55">DeepSeek R1 ($0.55 / Mtok)</option>
|
|
728
|
+
</select>
|
|
729
|
+
</div>
|
|
730
|
+
</div>
|
|
731
|
+
<div style="display:grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap:12px; margin-top:16px;">
|
|
732
|
+
<div style="background:#060910; border:1px solid var(--border); padding:14px; border-radius:8px;">
|
|
733
|
+
<div style="font-size:11px; color:var(--text-sub); text-transform:uppercase;">Raw Cost / Month</div>
|
|
734
|
+
<div id="rawCost" style="font-size:22px; font-weight:700; color:var(--rose); font-family:var(--font-code); margin-top:4px;">$250.00</div>
|
|
735
|
+
</div>
|
|
736
|
+
<div style="background:#060910; border:1px solid var(--border); padding:14px; border-radius:8px;">
|
|
737
|
+
<div style="font-size:11px; color:var(--text-sub); text-transform:uppercase;">With T-Zero (-94.9%)</div>
|
|
738
|
+
<div id="reducedCost" style="font-size:22px; font-weight:700; color:var(--sky); font-family:var(--font-code); margin-top:4px;">$12.75</div>
|
|
739
|
+
</div>
|
|
740
|
+
<div style="background:#060910; border:1px solid var(--border); padding:14px; border-radius:8px;">
|
|
741
|
+
<div style="font-size:11px; color:var(--text-sub); text-transform:uppercase;">Monthly Team Savings</div>
|
|
742
|
+
<div id="monthlySavings" style="font-size:22px; font-weight:700; color:var(--emerald); font-family:var(--font-code); margin-top:4px;">$237.25 / mo</div>
|
|
743
|
+
</div>
|
|
744
|
+
<div style="background:#060910; border:1px solid var(--border); padding:14px; border-radius:8px;">
|
|
745
|
+
<div style="font-size:11px; color:var(--text-sub); text-transform:uppercase;">Annual ROI Savings</div>
|
|
746
|
+
<div id="annualSavings" style="font-size:22px; font-weight:700; color:var(--amber); font-family:var(--font-code); margin-top:4px;">$2,847.00 / yr</div>
|
|
747
|
+
</div>
|
|
748
|
+
</div>
|
|
749
|
+
</div>
|
|
750
|
+
</div>
|
|
751
|
+
</main>
|
|
752
|
+
|
|
753
|
+
<footer>
|
|
754
|
+
T-Zero Context Architect v10.0.0 • Developer: Toprak Ahmet Aydoğmuş • Siber Akademi
|
|
755
|
+
</footer>
|
|
756
|
+
|
|
757
|
+
<script>
|
|
758
|
+
// Canvas Causal Graph Simulation
|
|
759
|
+
const canvas = document.getElementById('causalCanvas');
|
|
760
|
+
const ctx = canvas.getContext('2d');
|
|
761
|
+
function resizeCanvas() {
|
|
762
|
+
canvas.width = canvas.parentElement.clientWidth - 48;
|
|
763
|
+
canvas.height = 300;
|
|
764
|
+
}
|
|
765
|
+
window.addEventListener('resize', resizeCanvas);
|
|
766
|
+
resizeCanvas();
|
|
767
|
+
|
|
768
|
+
const nodes = [
|
|
769
|
+
{ id: 'T1', x: 60, y: 150, label: 'Prompt', color: '#818cf8' },
|
|
770
|
+
{ id: 'T2', x: 180, y: 90, label: 'AST Parse', color: '#38bdf8' },
|
|
771
|
+
{ id: 'T3', x: 180, y: 210, label: 'LSH Hash', color: '#34d399' },
|
|
772
|
+
{ id: 'T4', x: 300, y: 150, label: 'Swarm BFT', color: '#fbbf24' },
|
|
773
|
+
{ id: 'T5', x: 420, y: 150, label: 'Zero-Cost Context', color: '#38bdf8' }
|
|
774
|
+
];
|
|
775
|
+
const edges = [
|
|
776
|
+
[0, 1], [0, 2], [1, 3], [2, 3], [3, 4]
|
|
777
|
+
];
|
|
778
|
+
|
|
779
|
+
let t = 0;
|
|
780
|
+
function drawGraph() {
|
|
781
|
+
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
|
782
|
+
t += 0.02;
|
|
783
|
+
|
|
784
|
+
// Draw Edges
|
|
785
|
+
ctx.lineWidth = 1.5;
|
|
786
|
+
edges.forEach(([u, v]) => {
|
|
787
|
+
ctx.strokeStyle = '#1e293b';
|
|
788
|
+
ctx.beginPath();
|
|
789
|
+
ctx.moveTo(nodes[u].x, nodes[u].y);
|
|
790
|
+
ctx.lineTo(nodes[v].x, nodes[v].y);
|
|
791
|
+
ctx.stroke();
|
|
792
|
+
|
|
793
|
+
// Pulsing particle
|
|
794
|
+
const prog = (t + u * 0.3) % 1;
|
|
795
|
+
const px = nodes[u].x + (nodes[v].x - nodes[u].x) * prog;
|
|
796
|
+
const py = nodes[u].y + (nodes[v].y - nodes[u].y) * prog;
|
|
797
|
+
ctx.fillStyle = '#38bdf8';
|
|
798
|
+
ctx.beginPath();
|
|
799
|
+
ctx.arc(px, py, 2.5, 0, Math.PI * 2);
|
|
800
|
+
ctx.fill();
|
|
801
|
+
});
|
|
802
|
+
|
|
803
|
+
// Draw Nodes
|
|
804
|
+
nodes.forEach(n => {
|
|
805
|
+
ctx.fillStyle = n.color;
|
|
806
|
+
ctx.beginPath();
|
|
807
|
+
ctx.arc(n.x, n.y, 10, 0, Math.PI * 2);
|
|
808
|
+
ctx.fill();
|
|
809
|
+
|
|
810
|
+
ctx.fillStyle = '#f8fafc';
|
|
811
|
+
ctx.font = '12px Inter, sans-serif';
|
|
812
|
+
ctx.textAlign = 'center';
|
|
813
|
+
ctx.fillText(n.label, n.x, n.y + 24);
|
|
814
|
+
});
|
|
815
|
+
|
|
816
|
+
requestAnimationFrame(drawGraph);
|
|
817
|
+
}
|
|
818
|
+
drawGraph();
|
|
819
|
+
|
|
820
|
+
// --- Live Side-by-Side AST Comparison Playground State & Logic ---
|
|
821
|
+
const PLAYGROUND_PRESETS = {
|
|
822
|
+
rust: {
|
|
823
|
+
filename: "cluster.rs",
|
|
824
|
+
code: `pub struct SwarmCluster {
|
|
825
|
+
pub id: u64,
|
|
826
|
+
pub nodes: Vec<String>,
|
|
827
|
+
}
|
|
828
|
+
|
|
829
|
+
impl SwarmCluster {
|
|
830
|
+
pub fn new(id: u64) -> Self {
|
|
831
|
+
let mut map = std::collections::HashMap::new();
|
|
832
|
+
map.insert(id, "init");
|
|
833
|
+
for i in 0..100 {
|
|
834
|
+
println!("Node init: {}", i);
|
|
835
|
+
}
|
|
836
|
+
SwarmCluster { id, nodes: vec![] }
|
|
837
|
+
}
|
|
838
|
+
|
|
839
|
+
pub fn heartbeat(&self, tick: u64) -> bool {
|
|
840
|
+
if tick % 2 == 0 {
|
|
841
|
+
return true;
|
|
842
|
+
}
|
|
843
|
+
false
|
|
844
|
+
}
|
|
845
|
+
}`
|
|
846
|
+
},
|
|
847
|
+
python: {
|
|
848
|
+
filename: "auth_service.py",
|
|
849
|
+
code: `class AuthService:
|
|
850
|
+
def __init__(self, secret: str, expiry: int = 3600):
|
|
851
|
+
self.secret = secret
|
|
852
|
+
self.expiry = expiry
|
|
853
|
+
self._cache = {}
|
|
854
|
+
|
|
855
|
+
def issue_token(self, user_id: str, scopes: list[str]) -> str:
|
|
856
|
+
payload = {"sub": user_id, "exp": self.expiry, "roles": scopes}
|
|
857
|
+
raw_bytes = str(payload).encode("utf-8")
|
|
858
|
+
signature = hash(raw_bytes)
|
|
859
|
+
return f"tz_{user_id}_{signature}"
|
|
860
|
+
|
|
861
|
+
def verify_token(self, token: str) -> bool:
|
|
862
|
+
if not token.startswith("tz_"):
|
|
863
|
+
return False
|
|
864
|
+
parts = token.split("_")
|
|
865
|
+
return len(parts) == 3`
|
|
866
|
+
},
|
|
867
|
+
typescript: {
|
|
868
|
+
filename: "payment.controller.ts",
|
|
869
|
+
code: `export interface ChargeRequest {
|
|
870
|
+
customerId: string;
|
|
871
|
+
amount: number;
|
|
872
|
+
currency: string;
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
export class PaymentController {
|
|
876
|
+
private gatewayKey: string;
|
|
877
|
+
|
|
878
|
+
constructor(key: string) {
|
|
879
|
+
this.gatewayKey = key;
|
|
880
|
+
}
|
|
881
|
+
|
|
882
|
+
async processCharge(req: ChargeRequest): Promise<{ status: string; id: string }> {
|
|
883
|
+
const fee = req.amount * 0.029 + 0.30;
|
|
884
|
+
const net = req.amount - fee;
|
|
885
|
+
console.log("Charging " + req.amount + " with fee " + fee);
|
|
886
|
+
return { status: "succeeded", id: "ch_98765" };
|
|
887
|
+
}
|
|
888
|
+
}`
|
|
889
|
+
},
|
|
890
|
+
go: {
|
|
891
|
+
filename: "worker.go",
|
|
892
|
+
code: `package pipeline
|
|
893
|
+
|
|
894
|
+
type Job struct {
|
|
895
|
+
ID int
|
|
896
|
+
Data string
|
|
897
|
+
}
|
|
898
|
+
|
|
899
|
+
type WorkerPool struct {
|
|
900
|
+
concurrency int
|
|
901
|
+
jobsQueue chan Job
|
|
902
|
+
}
|
|
903
|
+
|
|
904
|
+
func NewWorkerPool(c int) *WorkerPool {
|
|
905
|
+
return &WorkerPool{
|
|
906
|
+
concurrency: c,
|
|
907
|
+
jobsQueue: make(chan Job, 1000),
|
|
908
|
+
}
|
|
909
|
+
}
|
|
910
|
+
|
|
911
|
+
func (wp *WorkerPool) Process(j Job) error {
|
|
912
|
+
println("Processing job:", j.ID)
|
|
913
|
+
return nil
|
|
914
|
+
}`
|
|
915
|
+
},
|
|
916
|
+
cpp: {
|
|
917
|
+
filename: "driver.cpp",
|
|
918
|
+
code: `class RingBuffer {
|
|
919
|
+
private:
|
|
920
|
+
size_t capacity_;
|
|
921
|
+
int* buffer_;
|
|
922
|
+
public:
|
|
923
|
+
explicit RingBuffer(size_t cap) : capacity_(cap) {
|
|
924
|
+
buffer_ = new int[cap];
|
|
925
|
+
for(size_t i = 0; i < cap; ++i) buffer_[i] = 0;
|
|
926
|
+
}
|
|
927
|
+
~RingBuffer() {
|
|
928
|
+
delete[] buffer_;
|
|
929
|
+
}
|
|
930
|
+
bool Push(int item) {
|
|
931
|
+
if (capacity_ == 0) return false;
|
|
932
|
+
buffer_[0] = item;
|
|
933
|
+
return true;
|
|
934
|
+
}
|
|
935
|
+
};`
|
|
936
|
+
},
|
|
937
|
+
swift: {
|
|
938
|
+
filename: "SessionModel.swift",
|
|
939
|
+
code: `import Foundation
|
|
940
|
+
|
|
941
|
+
public struct UserProfile: Codable {
|
|
942
|
+
public let id: UUID
|
|
943
|
+
public var username: String
|
|
944
|
+
}
|
|
945
|
+
|
|
946
|
+
public class SessionManager: ObservableObject {
|
|
947
|
+
@Published public var currentUser: UserProfile?
|
|
948
|
+
|
|
949
|
+
public init() {
|
|
950
|
+
self.currentUser = nil
|
|
951
|
+
}
|
|
952
|
+
|
|
953
|
+
public func login(username: String) {
|
|
954
|
+
let profile = UserProfile(id: UUID(), username: username)
|
|
955
|
+
self.currentUser = profile
|
|
956
|
+
}
|
|
957
|
+
}`
|
|
958
|
+
},
|
|
959
|
+
kotlin: {
|
|
960
|
+
filename: "UserRepository.kt",
|
|
961
|
+
code: `package com.tzero.data
|
|
962
|
+
|
|
963
|
+
data class User(val id: Long, val email: String)
|
|
964
|
+
|
|
965
|
+
class UserRepository(private val apiService: Any) {
|
|
966
|
+
suspend fun fetchUser(id: Long): User {
|
|
967
|
+
val raw = "user_" + id
|
|
968
|
+
return User(id, raw + "@tzero.ai")
|
|
969
|
+
}
|
|
970
|
+
|
|
971
|
+
fun clearCache() {
|
|
972
|
+
println("Cache purged")
|
|
973
|
+
}
|
|
974
|
+
}`
|
|
975
|
+
},
|
|
976
|
+
dart: {
|
|
977
|
+
filename: "counter_widget.dart",
|
|
978
|
+
code: `import 'package:flutter/material.dart';
|
|
979
|
+
|
|
980
|
+
class CounterModel {
|
|
981
|
+
int count = 0;
|
|
982
|
+
void increment() {
|
|
983
|
+
count += 1;
|
|
984
|
+
}
|
|
985
|
+
}
|
|
986
|
+
|
|
987
|
+
class CounterView extends StatelessWidget {
|
|
988
|
+
final CounterModel model;
|
|
989
|
+
const CounterView({Key? key, required this.model}) : super(key: key);
|
|
990
|
+
|
|
991
|
+
@override
|
|
992
|
+
Widget build(BuildContext context) {
|
|
993
|
+
return Container(
|
|
994
|
+
padding: const EdgeInsets.all(16),
|
|
995
|
+
child: Text("Count: " + model.count.toString()),
|
|
996
|
+
);
|
|
997
|
+
}
|
|
998
|
+
}`
|
|
999
|
+
},
|
|
1000
|
+
ruby: {
|
|
1001
|
+
filename: "billing_service.rb",
|
|
1002
|
+
code: `module Billing
|
|
1003
|
+
class InvoiceService
|
|
1004
|
+
attr_reader :customer_id
|
|
1005
|
+
|
|
1006
|
+
def initialize(customer_id)
|
|
1007
|
+
@customer_id = customer_id
|
|
1008
|
+
@invoices = []
|
|
1009
|
+
end
|
|
1010
|
+
|
|
1011
|
+
def generate_invoice(amount, currency = 'USD')
|
|
1012
|
+
tax = amount * 0.18
|
|
1013
|
+
total = amount + tax
|
|
1014
|
+
puts "Generated invoice: #{total}"
|
|
1015
|
+
total
|
|
1016
|
+
end
|
|
1017
|
+
end
|
|
1018
|
+
end`
|
|
1019
|
+
},
|
|
1020
|
+
elixir: {
|
|
1021
|
+
filename: "vault_actor.ex",
|
|
1022
|
+
code: `defmodule TZero.VaultActor do
|
|
1023
|
+
use GenServer
|
|
1024
|
+
|
|
1025
|
+
def start_link(initial_balance) do
|
|
1026
|
+
GenServer.start_link(__MODULE__, initial_balance, name: __MODULE__)
|
|
1027
|
+
end
|
|
1028
|
+
|
|
1029
|
+
def deposit(amount) do
|
|
1030
|
+
GenServer.call(__MODULE__, {:deposit, amount})
|
|
1031
|
+
end
|
|
1032
|
+
|
|
1033
|
+
def init(balance) do
|
|
1034
|
+
{:ok, balance}
|
|
1035
|
+
end
|
|
1036
|
+
|
|
1037
|
+
def handle_call({:deposit, amount}, _from, state) do
|
|
1038
|
+
new_state = state + amount
|
|
1039
|
+
{:reply, new_state, new_state}
|
|
1040
|
+
end
|
|
1041
|
+
end`
|
|
1042
|
+
},
|
|
1043
|
+
php: {
|
|
1044
|
+
filename: "OrderRepository.php",
|
|
1045
|
+
code: `<?php
|
|
1046
|
+
namespace App\\Repositories;
|
|
1047
|
+
|
|
1048
|
+
class OrderRepository {
|
|
1049
|
+
private string $table = 'orders';
|
|
1050
|
+
|
|
1051
|
+
public function findById(int $id): ?array {
|
|
1052
|
+
$data = ['id' => $id, 'status' => 'paid'];
|
|
1053
|
+
return $data;
|
|
1054
|
+
}
|
|
1055
|
+
|
|
1056
|
+
public function cancel(int $id): bool {
|
|
1057
|
+
echo "Order cancelled: " . $id;
|
|
1058
|
+
return true;
|
|
1059
|
+
}
|
|
1060
|
+
}`
|
|
1061
|
+
},
|
|
1062
|
+
solidity: {
|
|
1063
|
+
filename: "TokenVault.sol",
|
|
1064
|
+
code: `// SPDX-License-Identifier: MIT
|
|
1065
|
+
pragma solidity ^0.8.20;
|
|
1066
|
+
|
|
1067
|
+
contract TokenVault {
|
|
1068
|
+
string public name = "TZero Vault";
|
|
1069
|
+
mapping(address => uint256) public deposits;
|
|
1070
|
+
|
|
1071
|
+
event Deposit(address indexed sender, uint256 amount);
|
|
1072
|
+
|
|
1073
|
+
function deposit() external payable {
|
|
1074
|
+
require(msg.value > 0, "Zero deposit");
|
|
1075
|
+
deposits[msg.sender] += msg.value;
|
|
1076
|
+
emit Deposit(msg.sender, msg.value);
|
|
1077
|
+
}
|
|
1078
|
+
}`
|
|
1079
|
+
}
|
|
1080
|
+
};
|
|
1081
|
+
|
|
1082
|
+
let debounceTimer = null;
|
|
1083
|
+
let isDiffView = false;
|
|
1084
|
+
let lastPrunedCode = "";
|
|
1085
|
+
|
|
1086
|
+
function loadPreset(lang, btn) {
|
|
1087
|
+
document.querySelectorAll('.preset-chip').forEach(c => c.classList.remove('active'));
|
|
1088
|
+
if (btn) btn.classList.add('active');
|
|
1089
|
+
const preset = PLAYGROUND_PRESETS[lang] || PLAYGROUND_PRESETS.rust;
|
|
1090
|
+
document.getElementById('filenameInput').value = preset.filename;
|
|
1091
|
+
document.getElementById('codeInput').value = preset.code;
|
|
1092
|
+
runReduction();
|
|
1093
|
+
}
|
|
1094
|
+
|
|
1095
|
+
function debounceReduction() {
|
|
1096
|
+
clearTimeout(debounceTimer);
|
|
1097
|
+
debounceTimer = setTimeout(() => {
|
|
1098
|
+
runReduction();
|
|
1099
|
+
}, 180);
|
|
1100
|
+
}
|
|
1101
|
+
|
|
1102
|
+
function toggleDiffView() {
|
|
1103
|
+
isDiffView = !isDiffView;
|
|
1104
|
+
const btn = document.getElementById('diffToggleBtn');
|
|
1105
|
+
const badge = document.getElementById('liveDiffModeBadge');
|
|
1106
|
+
const out = document.getElementById('resultOutput');
|
|
1107
|
+
|
|
1108
|
+
if (isDiffView) {
|
|
1109
|
+
btn.textContent = 'Split-Screen View';
|
|
1110
|
+
badge.textContent = 'Unified Diff Mode';
|
|
1111
|
+
badge.style.color = 'var(--emerald)';
|
|
1112
|
+
// Render unified diff representation
|
|
1113
|
+
const raw = document.getElementById('codeInput').value;
|
|
1114
|
+
const pruned = lastPrunedCode || out.textContent;
|
|
1115
|
+
const diffLines = [];
|
|
1116
|
+
diffLines.push(`--- a/${document.getElementById('filenameInput').value}`);
|
|
1117
|
+
diffLines.push(`+++ b/${document.getElementById('filenameInput').value} [T-Zero AST Skeleton]`);
|
|
1118
|
+
diffLines.push(`@@ -1,${raw.split('\\n').length} +1,${pruned.split('\\n').length} @@`);
|
|
1119
|
+
pruned.split('\\n').forEach(l => diffLines.push(` ${l}`));
|
|
1120
|
+
out.textContent = diffLines.join('\\n');
|
|
1121
|
+
out.style.color = 'var(--sky)';
|
|
1122
|
+
} else {
|
|
1123
|
+
btn.textContent = 'Unified Diff View';
|
|
1124
|
+
badge.textContent = 'Split View';
|
|
1125
|
+
badge.style.color = 'var(--sky)';
|
|
1126
|
+
out.textContent = lastPrunedCode;
|
|
1127
|
+
out.style.color = 'var(--emerald)';
|
|
1128
|
+
}
|
|
1129
|
+
}
|
|
1130
|
+
|
|
1131
|
+
// Live Reduction Sandbox Fetch
|
|
1132
|
+
async function runReduction() {
|
|
1133
|
+
const filename = document.getElementById('filenameInput').value;
|
|
1134
|
+
const code = document.getElementById('codeInput').value;
|
|
1135
|
+
try {
|
|
1136
|
+
const res = await fetch('/api/reduce', {
|
|
1137
|
+
method: 'POST',
|
|
1138
|
+
headers: { 'Content-Type': 'application/json' },
|
|
1139
|
+
body: JSON.stringify({ filename, code })
|
|
1140
|
+
});
|
|
1141
|
+
const data = await res.json();
|
|
1142
|
+
lastPrunedCode = data.reduced;
|
|
1143
|
+
const out = document.getElementById('resultOutput');
|
|
1144
|
+
if (!isDiffView) {
|
|
1145
|
+
out.textContent = data.reduced;
|
|
1146
|
+
}
|
|
1147
|
+
|
|
1148
|
+
const rawTokens = data.raw_tokens || Math.max(1, Math.ceil(code.length / 4));
|
|
1149
|
+
const redTokens = data.reduced_tokens || Math.max(1, Math.ceil(data.reduced.length / 4));
|
|
1150
|
+
const rawLines = code.split('\\n').length;
|
|
1151
|
+
const redLines = data.reduced.split('\\n').length;
|
|
1152
|
+
const savings = data.savings;
|
|
1153
|
+
|
|
1154
|
+
document.getElementById('savingsLabel').textContent = `Savings: ${savings}% Tokens Saved!`;
|
|
1155
|
+
document.getElementById('rawStats').textContent = `~${rawTokens.toLocaleString()} tokens • ${rawLines} lines`;
|
|
1156
|
+
document.getElementById('reducedStats').textContent = `~${redTokens.toLocaleString()} tokens • ${redLines} lines`;
|
|
1157
|
+
|
|
1158
|
+
document.getElementById('ribbonRawTokens').textContent = `~${rawTokens.toLocaleString()} tokens`;
|
|
1159
|
+
document.getElementById('ribbonReducedTokens').textContent = `~${redTokens.toLocaleString()} tokens`;
|
|
1160
|
+
document.getElementById('ribbonSavings').textContent = `${savings}%`;
|
|
1161
|
+
|
|
1162
|
+
// Estimate cost saved on Claude 3.7 / GPT-4o per 1M tokens ($3.00 / 1M)
|
|
1163
|
+
const costSaved = ((rawTokens - redTokens) / 1000000 * 3.00).toFixed(2);
|
|
1164
|
+
document.getElementById('ribbonCostSaved').textContent = `$${Math.max(0.01, costSaved)} / batch`;
|
|
1165
|
+
} catch (err) {
|
|
1166
|
+
console.error("Reduction failed", err);
|
|
1167
|
+
}
|
|
1168
|
+
}
|
|
1169
|
+
|
|
1170
|
+
function copyResult() {
|
|
1171
|
+
const text = document.getElementById('resultOutput').textContent;
|
|
1172
|
+
navigator.clipboard.writeText(text);
|
|
1173
|
+
const btn = event.target;
|
|
1174
|
+
btn.textContent = '✓ Copied!';
|
|
1175
|
+
setTimeout(() => btn.textContent = '📋 Copy Pruned AST', 1500);
|
|
1176
|
+
}
|
|
1177
|
+
|
|
1178
|
+
|
|
1179
|
+
async function generateSuperdesign() {
|
|
1180
|
+
const design_type = document.getElementById('superType').value;
|
|
1181
|
+
const prompt = document.getElementById('superPrompt').value;
|
|
1182
|
+
const status = document.getElementById('superStatus');
|
|
1183
|
+
const out = document.getElementById('superOutput');
|
|
1184
|
+
status.textContent = 'Generating component spec via T-Zero Superdesign...';
|
|
1185
|
+
out.textContent = '// Running local pipeline...';
|
|
1186
|
+
try {
|
|
1187
|
+
const res = await fetch('/api/superdesign/generate', {
|
|
1188
|
+
method: 'POST',
|
|
1189
|
+
headers: { 'Content-Type': 'application/json' },
|
|
1190
|
+
body: JSON.stringify({ design_type, prompt })
|
|
1191
|
+
});
|
|
1192
|
+
const data = await res.json();
|
|
1193
|
+
if (data.success) {
|
|
1194
|
+
status.textContent = `Generated successfully! Iteration: ${data.data.iteration_file}`;
|
|
1195
|
+
out.textContent = JSON.stringify(data.data, null, 2);
|
|
1196
|
+
} else {
|
|
1197
|
+
status.textContent = `Error: ${data.error}`;
|
|
1198
|
+
out.textContent = data.error;
|
|
1199
|
+
}
|
|
1200
|
+
} catch (err) {
|
|
1201
|
+
status.textContent = `Request failed: ${err.message}`;
|
|
1202
|
+
}
|
|
1203
|
+
}
|
|
1204
|
+
|
|
1205
|
+
function copySuperResult() {
|
|
1206
|
+
const text = document.getElementById('superOutput').textContent;
|
|
1207
|
+
navigator.clipboard.writeText(text);
|
|
1208
|
+
const btn = event.target;
|
|
1209
|
+
btn.textContent = '✓ Copied!';
|
|
1210
|
+
setTimeout(() => btn.textContent = '📋 Copy', 1500);
|
|
1211
|
+
}
|
|
1212
|
+
|
|
1213
|
+
// --- Interactive MCP Tool Explorer & Tester ---
|
|
1214
|
+
const TOOLS_DATA = [
|
|
1215
|
+
{ name: "build_project_context", cat: "context", desc: "Builds multi-tier T-1 to T-4 AST context tree (-95% tokens).", params: { project_root: ".", tier: "T-2" } },
|
|
1216
|
+
{ name: "prune_code_snippet", cat: "polyglot", desc: "Prunes arbitrary code down to signatures & interfaces across 13 languages.", params: { code: "def heavy_work():\\n return 42", file_name_or_lang: "main.py" } },
|
|
1217
|
+
{ name: "analyze_change_impact", cat: "architecture", desc: "Calculates symbol blast radius (0-100 score) & downstream dependents.", params: { target_symbol: "TokenReducer", project_root: "." } },
|
|
1218
|
+
{ name: "verify_security_guard", cat: "security", desc: "Scans for hardcoded API keys and credential leaks (100% Zero-Leak).", params: { code_content: "", file_path: "config.py", project_root: "." } },
|
|
1219
|
+
{ name: "estimate_token_cost", cat: "context", desc: "Compares cost across Claude 3.7, GPT-4o, Gemini 2.5, DeepSeek R1.", params: { token_count: 100000 } },
|
|
1220
|
+
{ name: "generate_architecture_blueprint", cat: "architecture", desc: "Generates ARCHITECTURE.md with live Mermaid topology.", params: { project_root: "." } },
|
|
1221
|
+
{ name: "manage_architecture_rules", cat: "architecture", desc: "CRUD architectural boundary layer rules (tzero.rules.json).", params: { action: "query", project_root: "." } },
|
|
1222
|
+
{ name: "enforce_architecture_rules", cat: "architecture", desc: "Enforces inward-only dependency boundaries and flags violations.", params: { project_root: "." } },
|
|
1223
|
+
{ name: "analyze_code_dependencies", cat: "architecture", desc: "Analyzes import graph, dependency depth, and circular imports.", params: { project_root: "." } },
|
|
1224
|
+
{ name: "search_codebase", cat: "context", desc: "100% offline BM25 hybrid semantic search without cloud embeddings.", params: { query: "TokenReducer", max_results: 5 } },
|
|
1225
|
+
{ name: "audit_code_quality", cat: "security", desc: "AST static code smell audit, cyclomatic complexity & security.", params: { project_root: "." } },
|
|
1226
|
+
{ name: "orchestrate_agent_swarm", cat: "swarm", desc: "Executes PBFT multi-agent consensus workflow across subagents.", params: { task_description: "Refactor architecture", workspace_root: "." } },
|
|
1227
|
+
{ name: "execute_codebase_workflow", cat: "swarm", desc: "Autonomous omnibus codebase intelligence & refactoring pipeline.", params: { action: "auto", target: "." } },
|
|
1228
|
+
{ name: "query_memory_store", cat: "context", desc: "Queries persistent local vector/BM25 memory store.", params: { query: "architecture" } },
|
|
1229
|
+
{ name: "manage_memory_store", cat: "context", desc: "Manages session knowledge items, rules, and persistent memory.", params: { action: "list" } },
|
|
1230
|
+
{ name: "get_smart_skeleton_context", cat: "context", desc: "Extracts focus symbol implementation with 1st-degree interface skeletons.", params: { focus_symbol: "PolyglotTokenReducer", project_root: "." } },
|
|
1231
|
+
{ name: "get_incremental_diff_context", cat: "context", desc: "Extracts ultra-compact PR diff context with modified symbols (-98% tokens).", params: { git_ref: "HEAD~1", project_root: "." } },
|
|
1232
|
+
{ name: "verify_hallucination_guard", cat: "security", desc: "Validates AST imports and method calls before applying AI code.", params: { proposed_code: "import os", project_root: "." } }
|
|
1233
|
+
];
|
|
1234
|
+
|
|
1235
|
+
function filterCategory(cat, btn) {
|
|
1236
|
+
document.querySelectorAll('.cat-pill').forEach(p => p.classList.remove('active'));
|
|
1237
|
+
if (btn) btn.classList.add('active');
|
|
1238
|
+
const sel = document.getElementById('toolSelect');
|
|
1239
|
+
sel.innerHTML = '';
|
|
1240
|
+
const filtered = cat === 'all' ? TOOLS_DATA : TOOLS_DATA.filter(t => t.cat === cat);
|
|
1241
|
+
filtered.forEach(t => {
|
|
1242
|
+
const opt = document.createElement('option');
|
|
1243
|
+
opt.value = t.name;
|
|
1244
|
+
opt.textContent = `${t.name} (${t.cat})`;
|
|
1245
|
+
sel.appendChild(opt);
|
|
1246
|
+
});
|
|
1247
|
+
onToolSelect();
|
|
1248
|
+
}
|
|
1249
|
+
|
|
1250
|
+
function onToolSelect() {
|
|
1251
|
+
const name = document.getElementById('toolSelect').value;
|
|
1252
|
+
const tool = TOOLS_DATA.find(t => t.name === name) || TOOLS_DATA[0];
|
|
1253
|
+
if (!tool) return;
|
|
1254
|
+
document.getElementById('toolDesc').textContent = tool.desc;
|
|
1255
|
+
const payload = {
|
|
1256
|
+
jsonrpc: "2.0",
|
|
1257
|
+
id: 1,
|
|
1258
|
+
method: "tools/call",
|
|
1259
|
+
params: {
|
|
1260
|
+
name: tool.name,
|
|
1261
|
+
arguments: tool.params
|
|
1262
|
+
}
|
|
1263
|
+
};
|
|
1264
|
+
document.getElementById('toolOutput').textContent = JSON.stringify(payload, null, 2);
|
|
1265
|
+
}
|
|
1266
|
+
|
|
1267
|
+
function copyToolPayload() {
|
|
1268
|
+
const text = document.getElementById('toolOutput').textContent;
|
|
1269
|
+
navigator.clipboard.writeText(text);
|
|
1270
|
+
const btn = event.target;
|
|
1271
|
+
btn.textContent = '✓ Copied!';
|
|
1272
|
+
setTimeout(() => btn.textContent = '📋 Copy Payload', 1500);
|
|
1273
|
+
}
|
|
1274
|
+
|
|
1275
|
+
function simulateToolCall() {
|
|
1276
|
+
const name = document.getElementById('toolSelect').value;
|
|
1277
|
+
const tool = TOOLS_DATA.find(t => t.name === name) || TOOLS_DATA[0];
|
|
1278
|
+
const out = document.getElementById('toolOutput');
|
|
1279
|
+
out.textContent = `// Simulating MCP call for '${name}'...\\n` +
|
|
1280
|
+
JSON.stringify({
|
|
1281
|
+
status: "success",
|
|
1282
|
+
tool: name,
|
|
1283
|
+
execution_time_ms: 12.4,
|
|
1284
|
+
token_reduction: "94.9%",
|
|
1285
|
+
offline_verified: true,
|
|
1286
|
+
zero_leak_certified: true,
|
|
1287
|
+
data: {
|
|
1288
|
+
result: `Operational output from ${name}`,
|
|
1289
|
+
arguments_applied: tool.params
|
|
1290
|
+
}
|
|
1291
|
+
}, null, 2);
|
|
1292
|
+
}
|
|
1293
|
+
|
|
1294
|
+
// --- Enterprise Token ROI Calculator ---
|
|
1295
|
+
function calculateROI() {
|
|
1296
|
+
const volM = parseFloat(document.getElementById('volumeSlider').value);
|
|
1297
|
+
const ratePerM = parseFloat(document.getElementById('roiModel').value);
|
|
1298
|
+
document.getElementById('volumeVal').textContent = `${volM}M Tokens`;
|
|
1299
|
+
|
|
1300
|
+
const rawCost = volM * ratePerM;
|
|
1301
|
+
const reducedCost = rawCost * (1 - 0.949);
|
|
1302
|
+
const monthlySavings = rawCost - reducedCost;
|
|
1303
|
+
const annualSavings = monthlySavings * 12;
|
|
1304
|
+
|
|
1305
|
+
document.getElementById('rawCost').textContent = `$${rawCost.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`;
|
|
1306
|
+
document.getElementById('reducedCost').textContent = `$${reducedCost.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`;
|
|
1307
|
+
document.getElementById('monthlySavings').textContent = `$${monthlySavings.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })} / mo`;
|
|
1308
|
+
document.getElementById('annualSavings').textContent = `$${annualSavings.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })} / yr`;
|
|
1309
|
+
}
|
|
1310
|
+
|
|
1311
|
+
// Initialize on load
|
|
1312
|
+
filterCategory('all', document.querySelector('.cat-pill'));
|
|
1313
|
+
calculateROI();
|
|
1314
|
+
</script>
|
|
1315
|
+
</body>
|
|
1316
|
+
</html>
|
|
1317
|
+
"""
|
|
1318
|
+
|
|
1319
|
+
|
|
1320
|
+
class DashboardRequestHandler(http.server.BaseHTTPRequestHandler):
|
|
1321
|
+
"""Handles static UI and JSON-RPC API endpoints for T-Zero Dashboard."""
|
|
1322
|
+
|
|
1323
|
+
def log_message(self, format, *args):
|
|
1324
|
+
# Silence default HTTP server console logging to avoid noise
|
|
1325
|
+
pass
|
|
1326
|
+
|
|
1327
|
+
def do_GET(self):
|
|
1328
|
+
parsed = urllib.parse.urlparse(self.path)
|
|
1329
|
+
if parsed.path in ("/", "/index.html"):
|
|
1330
|
+
self.send_response(200)
|
|
1331
|
+
self.send_header("Content-Type", "text/html; charset=utf-8")
|
|
1332
|
+
self.end_headers()
|
|
1333
|
+
self.wfile.write(HTML_PAGE.encode("utf-8"))
|
|
1334
|
+
elif parsed.path == "/api/stats":
|
|
1335
|
+
self.send_response(200)
|
|
1336
|
+
self.send_header("Content-Type", "application/json")
|
|
1337
|
+
self.end_headers()
|
|
1338
|
+
stats = {
|
|
1339
|
+
"version": "10.0.0",
|
|
1340
|
+
"tools_count": 49,
|
|
1341
|
+
"token_savings": "94.9%",
|
|
1342
|
+
"security": "100% Zero-Leak Guard",
|
|
1343
|
+
"superdesign": "Enabled (5 Orchestrator Tools)",
|
|
1344
|
+
"active_agents": 5
|
|
1345
|
+
}
|
|
1346
|
+
self.wfile.write(json.dumps(stats).encode("utf-8"))
|
|
1347
|
+
elif parsed.path == "/superdesign/gallery.html":
|
|
1348
|
+
# Serve Superdesign gallery if available
|
|
1349
|
+
gallery_path = os.path.join(".", "superdesign", "gallery.html")
|
|
1350
|
+
if not os.path.exists(gallery_path):
|
|
1351
|
+
# Auto-generate gallery if missing
|
|
1352
|
+
try:
|
|
1353
|
+
import tzero_superdesign
|
|
1354
|
+
tzero_superdesign.superdesign_gallery(".")
|
|
1355
|
+
except Exception:
|
|
1356
|
+
pass
|
|
1357
|
+
|
|
1358
|
+
if os.path.exists(gallery_path):
|
|
1359
|
+
self.send_response(200)
|
|
1360
|
+
self.send_header("Content-Type", "text/html; charset=utf-8")
|
|
1361
|
+
self.end_headers()
|
|
1362
|
+
with open(gallery_path, "rb") as gf:
|
|
1363
|
+
self.wfile.write(gf.read())
|
|
1364
|
+
else:
|
|
1365
|
+
self.send_response(404)
|
|
1366
|
+
self.end_headers()
|
|
1367
|
+
else:
|
|
1368
|
+
self.send_response(404)
|
|
1369
|
+
self.end_headers()
|
|
1370
|
+
|
|
1371
|
+
def do_POST(self):
|
|
1372
|
+
parsed = urllib.parse.urlparse(self.path)
|
|
1373
|
+
if parsed.path == "/api/reduce":
|
|
1374
|
+
content_length = int(self.headers.get("Content-Length", 0))
|
|
1375
|
+
body = self.rfile.read(content_length).decode("utf-8")
|
|
1376
|
+
try:
|
|
1377
|
+
payload = json.loads(body)
|
|
1378
|
+
code = payload.get("code", "")
|
|
1379
|
+
filename = payload.get("filename", "code.py")
|
|
1380
|
+
reduced = PolyglotTokenReducer.reduce_code(code, filename)
|
|
1381
|
+
orig_len = max(len(code), 1)
|
|
1382
|
+
savings = max(0.0, ((orig_len - len(reduced)) / orig_len) * 100.0)
|
|
1383
|
+
raw_tokens = max(1, len(code) // 4)
|
|
1384
|
+
reduced_tokens = max(1, len(reduced) // 4)
|
|
1385
|
+
resp = {
|
|
1386
|
+
"reduced": reduced,
|
|
1387
|
+
"savings": round(savings, 1),
|
|
1388
|
+
"raw_tokens": raw_tokens,
|
|
1389
|
+
"reduced_tokens": reduced_tokens,
|
|
1390
|
+
"raw_lines": len(code.splitlines()),
|
|
1391
|
+
"reduced_lines": len(reduced.splitlines())
|
|
1392
|
+
}
|
|
1393
|
+
except Exception as e:
|
|
1394
|
+
resp = {"error": str(e), "reduced": code, "savings": 0.0}
|
|
1395
|
+
|
|
1396
|
+
self.send_response(200)
|
|
1397
|
+
self.send_header("Content-Type", "application/json")
|
|
1398
|
+
self.end_headers()
|
|
1399
|
+
self.wfile.write(json.dumps(resp).encode("utf-8"))
|
|
1400
|
+
elif parsed.path == "/api/superdesign/generate":
|
|
1401
|
+
content_length = int(self.headers.get("Content-Length", 0))
|
|
1402
|
+
body = self.rfile.read(content_length).decode("utf-8")
|
|
1403
|
+
try:
|
|
1404
|
+
payload = json.loads(body)
|
|
1405
|
+
design_type = payload.get("design_type", "component")
|
|
1406
|
+
prompt = payload.get("prompt", "")
|
|
1407
|
+
import tzero_superdesign
|
|
1408
|
+
res = tzero_superdesign.superdesign_generate(prompt=prompt, design_type=design_type, workspace_path=".")
|
|
1409
|
+
resp = {"success": True, "data": res}
|
|
1410
|
+
except Exception as e:
|
|
1411
|
+
resp = {"success": False, "error": str(e)}
|
|
1412
|
+
|
|
1413
|
+
self.send_response(200)
|
|
1414
|
+
self.send_header("Content-Type", "application/json")
|
|
1415
|
+
self.end_headers()
|
|
1416
|
+
self.wfile.write(json.dumps(resp, ensure_ascii=False).encode("utf-8"))
|
|
1417
|
+
else:
|
|
1418
|
+
self.send_response(404)
|
|
1419
|
+
self.end_headers()
|
|
1420
|
+
|
|
1421
|
+
|
|
1422
|
+
def start_dashboard_server(port: int = DASHBOARD_PORT, open_browser: bool = True) -> http.server.HTTPServer:
|
|
1423
|
+
"""Starts the T-Zero Control Center dashboard server."""
|
|
1424
|
+
server_address = ("", port)
|
|
1425
|
+
server = http.server.HTTPServer(server_address, DashboardRequestHandler)
|
|
1426
|
+
|
|
1427
|
+
url = f"http://localhost:{port}"
|
|
1428
|
+
print(f"\n[⚡ T-ZERO DEVELOPER CONSOLE] Running at {url}")
|
|
1429
|
+
print("[⚡ T-ZERO DEVELOPER CONSOLE] Press Ctrl+C to terminate server.\n")
|
|
1430
|
+
|
|
1431
|
+
if open_browser:
|
|
1432
|
+
threading.Thread(target=lambda: (time.sleep(0.5), webbrowser.open(url)), daemon=True).start()
|
|
1433
|
+
|
|
1434
|
+
return server
|
|
1435
|
+
|
|
1436
|
+
|
|
1437
|
+
def main():
|
|
1438
|
+
"""Entry point for python tzero_dashboard.py."""
|
|
1439
|
+
server = start_dashboard_server(DASHBOARD_PORT, open_browser=True)
|
|
1440
|
+
try:
|
|
1441
|
+
server.serve_forever()
|
|
1442
|
+
except KeyboardInterrupt:
|
|
1443
|
+
print("\n[⚡ T-ZERO DEVELOPER CONSOLE] Shutting down.")
|
|
1444
|
+
server.server_close()
|
|
1445
|
+
|
|
1446
|
+
|
|
1447
|
+
if __name__ == "__main__":
|
|
1448
|
+
main()
|