feat: add Clear History button to delete all consumed instructions

- Backend: instruction_service.clear_consumed() bulk-deletes consumed rows
- Backend: DELETE /api/instructions/consumed route (preserves pending)
- Frontend: Clear button in consumed panel header (hidden when empty)
- Frontend: SSE handler for history.cleared event - instant UI update
- Frontend: api.clearConsumed() fetch wrapper
This commit is contained in:
2026-03-27 04:16:24 +08:00
parent 86eba27a24
commit 256a445e2f
6 changed files with 57 additions and 7 deletions

View File

@@ -111,7 +111,13 @@
<svg class="icon icon--sm" viewBox="0 0 24 24"><polyline points="9 11 12 14 22 4"/><path d="M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"/></svg>
Consumed
</span>
<span id="consumed-badge" class="badge badge--muted">0</span>
<div style="display:flex;align-items:center;gap:var(--space-2)">
<span id="consumed-badge" class="badge badge--muted">0</span>
<button id="clear-history-btn" class="btn btn--ghost btn--sm" title="Clear all consumed instructions" style="display:none">
<svg class="icon icon--sm" viewBox="0 0 24 24"><polyline points="3 6 5 6 21 6"/><path d="M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"/><path d="M10 11v6"/><path d="M14 11v6"/><path d="M9 6V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2"/></svg>
Clear
</button>
</div>
</div>
<div class="panel-body panel-body--flush">
<div id="consumed-list">
@@ -151,9 +157,9 @@
<div class="panel-body">
<form id="config-form">
<div class="config-field">
<label class="config-label" for="cfg-wait">Min Wait (sec)</label>
<label class="config-label" for="cfg-wait">Wait (sec)</label>
<input id="cfg-wait" class="input input--sm" type="number" min="0" max="300" value="10" />
<span class="config-hint">Server enforces this as the minimum wait before returning an empty response. Agent may request longer but never shorter.</span>
<span class="config-hint">How long the tool waits for a new instruction before returning an empty response. Set exclusively here — agents cannot override this.</span>
</div>
<div class="config-field">
<label class="config-label" for="cfg-empty">Empty Response</label>