Stale-Job-Reset, Ownership-Angleichung, robuste Dashboard-Erzeugung

- Server-Neustart setzt hängengebliebene Jobs (running/queued) zurück
  (markStaleJobs) mit Hinweis-Nachricht; /abort räumt auch verwaiste Sessions auf
- Löschen/Abbrechen/Modellwechsel ohne Owner-Beschränkung (konsistent zur
  offenen Sichtbarkeit im Ein-Nutzer-System)
- Dashboard-HTML wird nicht mehr per Tool-Aufruf übertragen, sondern in der
  finalen Antwort als ```html```-Codeblock gestreamt (GLM scheiterte
  reproduzierbar am riesigen Tool-Call); Extraktion mit klaren Fehlern bei
  fehlendem/unvollständigem Codeblock
- Reasoning-Effort pro Runde: volle Tiefe in Research-Runden, minimales Denken
  in der Dashboard-Liefer-Runde (DeepSeek: thinking aus, GLM: low) –
  Budget gehört dem HTML
- GLM-Reasoning-Default high (max verbrennt das Completion-Budget),
  DeepSeek max_tokens auf 300k
This commit is contained in:
nico committed 2026-08-28 09:17:13 +02:00
1 parent 8a2bf46b09
commit ab4f8e8570
6 files changed
+178 -36

No files matched your search

+6 -1
View File
@@ -23,6 +23,11 @@ function abortRunning(sessionId) {
controllers.delete(sessionId);
}
/** Läuft für diese Session gerade ein Job im Speicher? */
function hasController(sessionId) {
return controllers.has(sessionId);
}
/** Controller nach Job-Ende entfernen. */
function clearController(sessionId) {
controllers.delete(sessionId);
@@ -67,4 +72,4 @@ function state() {
return { running, queued: queue.map((j) => j.sessionId) };
}
module.exports = { events, enqueue, queuedBefore, isRunning, cancelQueued, state, registerController, abortRunning, clearController };
module.exports = { events, enqueue, queuedBefore, isRunning, cancelQueued, state, registerController, abortRunning, hasController, clearController };