Compute agent count from non-human message authors
Browse files- static/index.html +17 -3
static/index.html
CHANGED
|
@@ -1503,8 +1503,21 @@ function ingestMessage(m, { animate = false } = {}) {
|
|
| 1503 |
renderMessage(m, { animate, isImprovement });
|
| 1504 |
if (isImprovement) bestBytes = m.bytes;
|
| 1505 |
msgCountEl.textContent = messages.length;
|
|
|
|
| 1506 |
return true;
|
| 1507 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1508 |
function paintAllMessages(list) {
|
| 1509 |
list.forEach(m => messageMap.set(m.filename, m));
|
| 1510 |
list.forEach(m => ingestMessage(m));
|
|
@@ -1519,6 +1532,7 @@ function resetMessageState() {
|
|
| 1519 |
lastDayRendered = null;
|
| 1520 |
messagesEl.innerHTML = '';
|
| 1521 |
msgCountEl.textContent = '0';
|
|
|
|
| 1522 |
}
|
| 1523 |
async function showTyping(agent, ms = 800) {
|
| 1524 |
const t = document.createElement('div');
|
|
@@ -1548,19 +1562,19 @@ function renderLeaderboard(entries) {
|
|
| 1548 |
const best = ranked[0];
|
| 1549 |
const baseline = entries.find(e => e.agent === 'baseline')?.score ?? null;
|
| 1550 |
const total = entries.length;
|
| 1551 |
-
const
|
| 1552 |
|
| 1553 |
// Top bar summary
|
| 1554 |
if (best) {
|
| 1555 |
topBest.textContent = best.score.toLocaleString();
|
| 1556 |
topBestBy.textContent = `by ${best.agent}`;
|
| 1557 |
}
|
| 1558 |
-
topMeta.textContent = `${total} submissions · ${
|
| 1559 |
|
| 1560 |
// Stat cards
|
| 1561 |
cardBest.textContent = best ? best.score.toLocaleString() : '—';
|
| 1562 |
cardSubs.textContent = total;
|
| 1563 |
-
cardAgents.textContent =
|
| 1564 |
cardBaseline.textContent = baseline ? baseline.toLocaleString() : '—';
|
| 1565 |
if (best && baseline !== null) {
|
| 1566 |
const pct = ((baseline - best.score) / baseline * 100).toFixed(2);
|
|
|
|
| 1503 |
renderMessage(m, { animate, isImprovement });
|
| 1504 |
if (isImprovement) bestBytes = m.bytes;
|
| 1505 |
msgCountEl.textContent = messages.length;
|
| 1506 |
+
updateAgentCount();
|
| 1507 |
return true;
|
| 1508 |
}
|
| 1509 |
+
function nonHumanAgentCount() {
|
| 1510 |
+
let n = 0;
|
| 1511 |
+
for (const a of activeAgents) if (!a.startsWith('human:')) n++;
|
| 1512 |
+
return n;
|
| 1513 |
+
}
|
| 1514 |
+
function updateAgentCount() {
|
| 1515 |
+
const n = nonHumanAgentCount();
|
| 1516 |
+
cardAgents.textContent = n;
|
| 1517 |
+
if (leaderboardEntries.length) {
|
| 1518 |
+
topMeta.textContent = `${leaderboardEntries.length} submissions · ${n} agents collaborating`;
|
| 1519 |
+
}
|
| 1520 |
+
}
|
| 1521 |
function paintAllMessages(list) {
|
| 1522 |
list.forEach(m => messageMap.set(m.filename, m));
|
| 1523 |
list.forEach(m => ingestMessage(m));
|
|
|
|
| 1532 |
lastDayRendered = null;
|
| 1533 |
messagesEl.innerHTML = '';
|
| 1534 |
msgCountEl.textContent = '0';
|
| 1535 |
+
updateAgentCount();
|
| 1536 |
}
|
| 1537 |
async function showTyping(agent, ms = 800) {
|
| 1538 |
const t = document.createElement('div');
|
|
|
|
| 1562 |
const best = ranked[0];
|
| 1563 |
const baseline = entries.find(e => e.agent === 'baseline')?.score ?? null;
|
| 1564 |
const total = entries.length;
|
| 1565 |
+
const agentCount = nonHumanAgentCount();
|
| 1566 |
|
| 1567 |
// Top bar summary
|
| 1568 |
if (best) {
|
| 1569 |
topBest.textContent = best.score.toLocaleString();
|
| 1570 |
topBestBy.textContent = `by ${best.agent}`;
|
| 1571 |
}
|
| 1572 |
+
topMeta.textContent = `${total} submissions · ${agentCount} agents collaborating`;
|
| 1573 |
|
| 1574 |
// Stat cards
|
| 1575 |
cardBest.textContent = best ? best.score.toLocaleString() : '—';
|
| 1576 |
cardSubs.textContent = total;
|
| 1577 |
+
cardAgents.textContent = agentCount;
|
| 1578 |
cardBaseline.textContent = baseline ? baseline.toLocaleString() : '—';
|
| 1579 |
if (best && baseline !== null) {
|
| 1580 |
const pct = ((baseline - best.score) / baseline * 100).toFixed(2);
|