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
+23
-1
@@ -6,6 +6,28 @@ events.setMaxListeners(100);
|
||||
let queue = [];
|
||||
let running = false;
|
||||
|
||||
// Abort-Controller für laufende Jobs (für manuellen Abbruch)
|
||||
const controllers = new Map();
|
||||
|
||||
/** Abort-Controller für eine Session registrieren (einmal pro Job). */
|
||||
function registerController(sessionId) {
|
||||
const controller = new AbortController();
|
||||
controllers.set(sessionId, controller);
|
||||
return controller;
|
||||
}
|
||||
|
||||
/** Laufenden Job einer Session abbrechen. */
|
||||
function abortRunning(sessionId) {
|
||||
const controller = controllers.get(sessionId);
|
||||
if (controller) controller.abort();
|
||||
controllers.delete(sessionId);
|
||||
}
|
||||
|
||||
/** Controller nach Job-Ende entfernen. */
|
||||
function clearController(sessionId) {
|
||||
controllers.delete(sessionId);
|
||||
}
|
||||
|
||||
/** Einen Job anmelden. Läuft sofort, wenn nichts anderes läuft, sonst wartet er. */
|
||||
function enqueue(job) {
|
||||
queue.push(job);
|
||||
@@ -45,4 +67,4 @@ function state() {
|
||||
return { running, queued: queue.map((j) => j.sessionId) };
|
||||
}
|
||||
|
||||
module.exports = { events, enqueue, queuedBefore, isRunning, cancelQueued, state };
|
||||
module.exports = { events, enqueue, queuedBefore, isRunning, cancelQueued, state, registerController, abortRunning, clearController };
|
||||
Reference in new issue
Block a user