diff options
Diffstat (limited to 'web')
| -rw-r--r-- | web/app.js | 19 |
1 files changed, 16 insertions, 3 deletions
@@ -164,6 +164,14 @@ function createTaskCard(task) { footer.appendChild(rejectBtn); } else if (task.state === 'BLOCKED') { renderQuestionFooter(task, footer); + const cancelBtn = document.createElement('button'); + cancelBtn.className = 'btn-cancel'; + cancelBtn.textContent = 'Cancel'; + cancelBtn.addEventListener('click', (e) => { + e.stopPropagation(); + handleCancel(task.id, cancelBtn, footer); + }); + footer.appendChild(cancelBtn); } else if (RESUME_STATES.has(task.state)) { const resumeBtn = document.createElement('button'); resumeBtn.className = 'btn-resume'; @@ -869,8 +877,11 @@ async function handleReject(taskId, btn, footer) { // ── Start-next-task ───────────────────────────────────────────────────────────── -async function startNextTask() { - const res = await fetch(`${API_BASE}/api/scripts/start-next-task`, { method: 'POST' }); +async function startNextTask(agent) { + const url = agent && agent !== 'auto' + ? `${API_BASE}/api/scripts/start-next-task?agent=${agent}` + : `${API_BASE}/api/scripts/start-next-task`; + const res = await fetch(url, { method: 'POST' }); if (!res.ok) { let msg = `HTTP ${res.status}`; try { const body = await res.json(); msg = body.error || msg; } catch {} @@ -880,10 +891,12 @@ async function startNextTask() { } async function handleStartNextTask(btn) { + const agentSelector = document.getElementById('select-agent'); + const agent = agentSelector ? agentSelector.value : 'auto'; btn.disabled = true; btn.textContent = 'Starting…'; try { - const result = await startNextTask(); + const result = await startNextTask(agent); const output = (result.output || '').trim(); btn.textContent = output || 'No task to start'; setTimeout(() => { btn.textContent = 'Start Next'; btn.disabled = false; }, 3000); |
