Recherche abbrechen + Chats löschen (mit Aufräumen) + Truncation-Fix

- Manueller Abbruch: POST /api/sessions/:id/abort (nur Owner), AbortController
  für laufende Jobs (auch mitten im API-Stream), cancelQueued für wartende,
  ⛔-Button in der Activity-Bar, 'abgebrochen'-Event + History-Eintrag
- Chats löschen: 🗑-Button in der Sidebar mit Bestätigung, Ownership-Check
  (vorher konnte jeder fremde Chats löschen), löscht jetzt auch Messages
  und Dashboard-Dateien (HTML/GPX/tour.json) mit
- Truncation-Fix: finish_reason 'length' wird erkannt (sichtbarer Fehler
  statt leerer Abschluss), max_tokens auf 131072 (GLM-Max), 10-Min-Timeout
  gegen hängende Streams
This commit is contained in:
nico committed 2026-08-28 07:17:06 +02:00
1 parent 0b51bb6142
commit 8a2bf46b09
8 files changed
+237 -39

No files matched your search

+18 -1
View File
@@ -144,6 +144,23 @@ function saveDashboard(sessionId, filename, html, log) {
return { file, url: `/dashboards/${file}` };
}
/** Alle Dashboard-Dateien einer Session (HTML/GPX/tour.json) löschen. */
function deleteSessionFiles(sessionId) {
let entries;
try {
entries = fs.readdirSync(DASHBOARD_DIR);
} catch {
return;
}
for (const f of entries) {
if (f.startsWith(`${sessionId}-`)) {
try {
fs.unlinkSync(path.join(DASHBOARD_DIR, f));
} catch {}
}
}
}
/** Screenshot einer Seite (JPEG, als Data-URL) – für Vision-Modelle. */
async function screenshot(url, fullPage = false, log) {
return withPage(url, async (page) => {
@@ -374,4 +391,4 @@ async function closeBrowser() {
}
}
module.exports = { search, browse, verify, saveDashboard, screenshot, geocode, saveTour, closeBrowser };
module.exports = { search, browse, verify, saveDashboard, screenshot, geocode, saveTour, deleteSessionFiles, closeBrowser };