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:
1 parent
0b51bb6142
commit
8a2bf46b09
8 files changed
+237
-39
No files matched your search
+18
-1
@@ -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 };
|
||||
Reference in new issue
Block a user