fivetech commited on
Commit
2f036d0
·
verified ·
1 Parent(s): af427fb

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +19 -0
index.html CHANGED
@@ -552,6 +552,7 @@ let transcript = []; // {name, role, text, round, tokens, ms, isUser, ki
552
  let resume = { round: 1, stepIdx: 0, steps: null };
553
  let stats = { tokens: {}, turns: {}, speeds: [], startTs: 0 };
554
  let analysis = null; // {consensus, votes, conclusion, evaluation, relations, extra, argmap, devil}
 
555
  let debateFinished = false;
556
 
557
  function esc(s) { const d = document.createElement('div'); d.textContent = s; return d.innerHTML; }
@@ -1210,6 +1211,7 @@ async function runDevil() {
1210
  /* ================= An\u00e1lisis: orquestaci\u00f3n y render ================= */
1211
  async function runAnalysis(auto) {
1212
  if (!wllama || !transcript.length) return;
 
1213
  $('analyze-btn').disabled = true;
1214
  $('analysis-empty').classList.add('hidden');
1215
  $('analysis-out').innerHTML = '';
@@ -1218,6 +1220,7 @@ async function runAnalysis(auto) {
1218
  const consensus = await runConsensus();
1219
  const evaluation = await runEvaluation();
1220
  const argmap = await runArgMap();
 
1221
  analysis = { consensus, evaluation, argmap, devil: analysis?.devil || null, ts: Date.now() };
1222
  renderAnalysis();
1223
  saveToLibrary();
@@ -1438,6 +1441,14 @@ $('lib-clear').addEventListener('click', () => {
1438
  function reopenDebate(id) {
1439
  const it = lsGet(K.library, []).find(x => x.id === id);
1440
  if (!it) return;
 
 
 
 
 
 
 
 
1441
  topic = it.topic; mode = it.mode;
1442
  $('topic').value = it.topic;
1443
  selectMode(it.mode);
@@ -1464,6 +1475,13 @@ let replayTimer = null;
1464
  function replayDebate(id) {
1465
  const it = lsGet(K.library, []).find(x => x.id === id);
1466
  if (!it) return;
 
 
 
 
 
 
 
1467
  document.querySelector('nav.tabs button[data-tab="debate"]').click();
1468
  chatEl.innerHTML = '';
1469
  addSysNote(`\u23EA Replay: ${it.topic} (${it.transcript.length} turnos)`);
@@ -1532,6 +1550,7 @@ function startFresh(newTopic) {
1532
  ['st-turns', 'st-tokens'].forEach(id => $(id).textContent = '0');
1533
  $('st-speed').textContent = '—'; $('st-time').textContent = '0:00'; $('st-agents').innerHTML = '';
1534
  resume = { round: 1, stepIdx: 0, steps: null };
 
1535
  analysis = null;
1536
  debateFinished = false;
1537
  $('analysis-out').innerHTML = '';
 
552
  let resume = { round: 1, stepIdx: 0, steps: null };
553
  let stats = { tokens: {}, turns: {}, speeds: [], startTs: 0 };
554
  let analysis = null; // {consensus, votes, conclusion, evaluation, relations, extra, argmap, devil}
555
+ let analysisToken = 0;
556
  let debateFinished = false;
557
 
558
  function esc(s) { const d = document.createElement('div'); d.textContent = s; return d.innerHTML; }
 
1211
  /* ================= An\u00e1lisis: orquestaci\u00f3n y render ================= */
1212
  async function runAnalysis(auto) {
1213
  if (!wllama || !transcript.length) return;
1214
+ const myToken = ++analysisToken;
1215
  $('analyze-btn').disabled = true;
1216
  $('analysis-empty').classList.add('hidden');
1217
  $('analysis-out').innerHTML = '';
 
1220
  const consensus = await runConsensus();
1221
  const evaluation = await runEvaluation();
1222
  const argmap = await runArgMap();
1223
+ if (myToken !== analysisToken) return; // debate reabierto o reiniciado durante el análisis
1224
  analysis = { consensus, evaluation, argmap, devil: analysis?.devil || null, ts: Date.now() };
1225
  renderAnalysis();
1226
  saveToLibrary();
 
1441
  function reopenDebate(id) {
1442
  const it = lsGet(K.library, []).find(x => x.id === id);
1443
  if (!it) return;
1444
+ if (running) {
1445
+ stopRequested = true;
1446
+ setStatus('Pausando el debate actual antes de reabrir\u2026');
1447
+ const waiter = setInterval(() => { if (!running) { clearInterval(waiter); reopenDebate(id); } }, 150);
1448
+ return;
1449
+ }
1450
+ document.querySelectorAll('.modal.open').forEach(m => m.classList.remove('open'));
1451
+ analysisToken++;
1452
  topic = it.topic; mode = it.mode;
1453
  $('topic').value = it.topic;
1454
  selectMode(it.mode);
 
1475
  function replayDebate(id) {
1476
  const it = lsGet(K.library, []).find(x => x.id === id);
1477
  if (!it) return;
1478
+ if (running) {
1479
+ stopRequested = true;
1480
+ setStatus('Pausando el debate actual antes del replay\u2026');
1481
+ const waiter = setInterval(() => { if (!running) { clearInterval(waiter); replayDebate(id); } }, 150);
1482
+ return;
1483
+ }
1484
+ document.querySelectorAll('.modal.open').forEach(m => m.classList.remove('open'));
1485
  document.querySelector('nav.tabs button[data-tab="debate"]').click();
1486
  chatEl.innerHTML = '';
1487
  addSysNote(`\u23EA Replay: ${it.topic} (${it.transcript.length} turnos)`);
 
1550
  ['st-turns', 'st-tokens'].forEach(id => $(id).textContent = '0');
1551
  $('st-speed').textContent = '—'; $('st-time').textContent = '0:00'; $('st-agents').innerHTML = '';
1552
  resume = { round: 1, stepIdx: 0, steps: null };
1553
+ analysisToken++;
1554
  analysis = null;
1555
  debateFinished = false;
1556
  $('analysis-out').innerHTML = '';