viberadar 0.3.62 → 0.3.64
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/dist/ui/dashboard.html +1 -81
- package/package.json +1 -1
package/dist/ui/dashboard.html
CHANGED
|
@@ -855,31 +855,6 @@
|
|
|
855
855
|
line-height: 1.4;
|
|
856
856
|
}
|
|
857
857
|
.agent-queue-action:hover { border-color: var(--blue); color: var(--text); }
|
|
858
|
-
.agent-summary-matrix {
|
|
859
|
-
display: none;
|
|
860
|
-
border-bottom: 1px solid var(--border);
|
|
861
|
-
background: #090f17;
|
|
862
|
-
padding: 8px 12px;
|
|
863
|
-
max-height: 150px;
|
|
864
|
-
overflow: auto;
|
|
865
|
-
font-size: 11px;
|
|
866
|
-
}
|
|
867
|
-
.agent-summary-title {
|
|
868
|
-
color: var(--muted);
|
|
869
|
-
font-weight: 600;
|
|
870
|
-
margin-bottom: 6px;
|
|
871
|
-
}
|
|
872
|
-
.agent-summary-row {
|
|
873
|
-
display: grid;
|
|
874
|
-
grid-template-columns: 60px 1fr auto;
|
|
875
|
-
gap: 8px;
|
|
876
|
-
margin-bottom: 4px;
|
|
877
|
-
align-items: center;
|
|
878
|
-
}
|
|
879
|
-
.agent-summary-status-covered { color: var(--green); }
|
|
880
|
-
.agent-summary-status-not-covered { color: var(--red); }
|
|
881
|
-
.agent-summary-status-blocked { color: var(--yellow); }
|
|
882
|
-
.agent-summary-status-infra { color: var(--dim); }
|
|
883
858
|
/* ── Console Tabs ───────────────────────────────────────────────────────── */
|
|
884
859
|
.agent-tabs-bar {
|
|
885
860
|
display: flex; align-items: stretch; overflow-x: auto;
|
|
@@ -1139,7 +1114,6 @@
|
|
|
1139
1114
|
<span class="agent-toolbar-meta" id="agentSearchMeta">0 matches</span>
|
|
1140
1115
|
</div>
|
|
1141
1116
|
<div class="agent-queue-panel" id="agentQueuePanel"></div>
|
|
1142
|
-
<div class="agent-summary-matrix" id="agentSummaryMatrix"></div>
|
|
1143
1117
|
<div class="agent-tabs-bar" id="agentTabsBar"></div>
|
|
1144
1118
|
<div class="agent-terminal" id="agentTerminal"></div>
|
|
1145
1119
|
</div>
|
|
@@ -1357,7 +1331,6 @@ let agentQueueState = [];
|
|
|
1357
1331
|
let agentRunsState = [];
|
|
1358
1332
|
let agentActiveRun = null;
|
|
1359
1333
|
let currentRunId = null;
|
|
1360
|
-
let lastRunSummary = null;
|
|
1361
1334
|
|
|
1362
1335
|
// ─── Console Sessions ─────────────────────────────────────────────────────────
|
|
1363
1336
|
const consoleSessions = []; // { id, title, lines, status, startTime }
|
|
@@ -1452,7 +1425,6 @@ function switchSession(id) {
|
|
|
1452
1425
|
}
|
|
1453
1426
|
renderTabs();
|
|
1454
1427
|
renderActiveSession();
|
|
1455
|
-
syncSummaryForActiveSession();
|
|
1456
1428
|
}
|
|
1457
1429
|
|
|
1458
1430
|
function closeSession(id) {
|
|
@@ -1468,10 +1440,9 @@ function closeSession(id) {
|
|
|
1468
1440
|
activeSessionId = consoleSessions.length > 0
|
|
1469
1441
|
? consoleSessions[Math.min(idx, consoleSessions.length - 1)].id
|
|
1470
1442
|
: null;
|
|
1471
|
-
}
|
|
1443
|
+
}
|
|
1472
1444
|
renderTabs();
|
|
1473
1445
|
renderActiveSession();
|
|
1474
|
-
syncSummaryForActiveSession();
|
|
1475
1446
|
saveSessions();
|
|
1476
1447
|
}
|
|
1477
1448
|
|
|
@@ -1829,42 +1800,6 @@ function renderQueuePanel() {
|
|
|
1829
1800
|
`;
|
|
1830
1801
|
}
|
|
1831
1802
|
|
|
1832
|
-
function renderRunSummaryMatrix(summary = lastRunSummary) {
|
|
1833
|
-
const box = document.getElementById('agentSummaryMatrix');
|
|
1834
|
-
if (!box) return;
|
|
1835
|
-
const outcomes = summary?.fileOutcomes || [];
|
|
1836
|
-
if (!Array.isArray(outcomes) || outcomes.length === 0) {
|
|
1837
|
-
box.style.display = 'none';
|
|
1838
|
-
box.innerHTML = '';
|
|
1839
|
-
return;
|
|
1840
|
-
}
|
|
1841
|
-
const stats = summary?.validationStats || {};
|
|
1842
|
-
box.style.display = 'block';
|
|
1843
|
-
box.innerHTML = `
|
|
1844
|
-
<div class="agent-summary-title">
|
|
1845
|
-
Матрица итогов (run: ${escapeHtml(summary?.runId || '—')}) • covered: ${stats.covered ?? 0} • not-covered: ${stats.notCovered ?? 0} • blocked: ${stats.blocked ?? 0} • infra: ${stats.infra ?? 0}
|
|
1846
|
-
</div>
|
|
1847
|
-
${outcomes.map((entry) => `
|
|
1848
|
-
<div class="agent-summary-row">
|
|
1849
|
-
<span class="agent-summary-status-${entry.status}">${escapeHtml(entry.status)}</span>
|
|
1850
|
-
<span title="${escapeHtml(entry.sourcePath || '')}">${escapeHtml(entry.sourcePath || '')}</span>
|
|
1851
|
-
<span style="color:var(--dim)">${escapeHtml(entry.testFile || entry.reason || '')}</span>
|
|
1852
|
-
</div>
|
|
1853
|
-
`).join('')}
|
|
1854
|
-
`;
|
|
1855
|
-
}
|
|
1856
|
-
|
|
1857
|
-
function findSummaryForRun(runId) {
|
|
1858
|
-
if (!runId) return null;
|
|
1859
|
-
return (agentRunsState || []).find((r) => r.runId === runId && Array.isArray(r.fileOutcomes) && r.fileOutcomes.length > 0) || null;
|
|
1860
|
-
}
|
|
1861
|
-
|
|
1862
|
-
function syncSummaryForActiveSession() {
|
|
1863
|
-
const runId = sessionRunMap.get(activeSessionId) || currentRunId;
|
|
1864
|
-
const summary = findSummaryForRun(runId) || null;
|
|
1865
|
-
renderRunSummaryMatrix(summary);
|
|
1866
|
-
}
|
|
1867
|
-
|
|
1868
1803
|
async function cancelQueueItem(runId) {
|
|
1869
1804
|
await fetch(`/api/queue/${encodeURIComponent(runId)}/cancel`, { method: 'POST' });
|
|
1870
1805
|
await loadAgentState();
|
|
@@ -1912,11 +1847,6 @@ function applyAgentStateSnapshot(state) {
|
|
|
1912
1847
|
} else {
|
|
1913
1848
|
setAgentRunning(false);
|
|
1914
1849
|
}
|
|
1915
|
-
const latestSummary = [...agentRunsState].reverse().find((r) => Array.isArray(r.fileOutcomes) && r.fileOutcomes.length > 0);
|
|
1916
|
-
if (latestSummary) {
|
|
1917
|
-
lastRunSummary = latestSummary;
|
|
1918
|
-
}
|
|
1919
|
-
syncSummaryForActiveSession();
|
|
1920
1850
|
}
|
|
1921
1851
|
|
|
1922
1852
|
async function loadAgentState() {
|
|
@@ -1969,7 +1899,6 @@ function updateSessionFromRun(run) {
|
|
|
1969
1899
|
if (currentRunId === run.runId) currentRunId = null;
|
|
1970
1900
|
setAgentRunning(false);
|
|
1971
1901
|
}
|
|
1972
|
-
syncSummaryForActiveSession();
|
|
1973
1902
|
}
|
|
1974
1903
|
|
|
1975
1904
|
function refreshPathActivityFromState() {
|
|
@@ -3709,10 +3638,6 @@ function connectSSE() {
|
|
|
3709
3638
|
const { run } = JSON.parse(e.data || '{}');
|
|
3710
3639
|
if (!run) return;
|
|
3711
3640
|
updateSessionFromRun(run);
|
|
3712
|
-
if (Array.isArray(run.fileOutcomes) && run.fileOutcomes.length > 0) {
|
|
3713
|
-
lastRunSummary = run;
|
|
3714
|
-
}
|
|
3715
|
-
syncSummaryForActiveSession();
|
|
3716
3641
|
refreshPathActivityFromState();
|
|
3717
3642
|
renderContent();
|
|
3718
3643
|
});
|
|
@@ -3787,7 +3712,6 @@ function connectSSE() {
|
|
|
3787
3712
|
es.addEventListener('agent-summary', (e) => {
|
|
3788
3713
|
const {
|
|
3789
3714
|
runId,
|
|
3790
|
-
fileOutcomes = [],
|
|
3791
3715
|
validationStats = null,
|
|
3792
3716
|
passed = 0, failed = 0, files = [],
|
|
3793
3717
|
testedFileCount = files.length,
|
|
@@ -3820,10 +3744,6 @@ function connectSSE() {
|
|
|
3820
3744
|
${autoFixQueued ? `<div style="font-size:11px;color:var(--yellow);margin-top:4px">🛠️ Автоисправление поставлено в очередь</div>` : ''}
|
|
3821
3745
|
${files.map(f => `<div style="font-size:11px;color:var(--dim);margin-top:3px">📄 ${f}</div>`).join('')}
|
|
3822
3746
|
`;
|
|
3823
|
-
if (fileOutcomes.length > 0) {
|
|
3824
|
-
lastRunSummary = { runId, fileOutcomes, validationStats };
|
|
3825
|
-
}
|
|
3826
|
-
syncSummaryForActiveSession();
|
|
3827
3747
|
const targetId = runId ? (runSessionMap.get(runId) || runningSessionId || activeSessionId) : (runningSessionId || activeSessionId);
|
|
3828
3748
|
if (targetId) {
|
|
3829
3749
|
appendToSession(targetId, box);
|