feat: zuverlässiger Stop-Button für Chat-Streaming
- StreamingTracker: CancellationTokenSource pro Session, Cancel()-Methode - ChatEndpoint: POST /api/chat/stop Endpoint, linkedCts verknüpft Stop-Token mit Client-Disconnect-Token - AnthropicService: cancellationToken an ExecuteTool durchgereicht - ToolService: CancellationToken-Parameter, execute-Tool verknüpft externen Token mit 180s-Timeout, killt Prozess bei Abbruch - Frontend: apiStopChat() + stopStreaming() ruft Backend-Stop auf
This commit is contained in:
1 parent
01b3e2c230
commit
40c8fee531
6 files changed
+72
-9
No files matched your search
@@ -178,6 +178,15 @@ async function apiIsStreaming(sessionId) {
|
||||
return resp.json();
|
||||
}
|
||||
|
||||
async function apiStopChat(sessionId) {
|
||||
const resp = await fetch('/api/chat/stop', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ sessionId })
|
||||
});
|
||||
return resp.json();
|
||||
}
|
||||
|
||||
async function apiGetChain(chainId) {
|
||||
const resp = await fetch(`/api/chains/${chainId}`);
|
||||
if (!resp.ok) return null;
|
||||
|
||||
@@ -56,6 +56,9 @@ function stopStreaming() {
|
||||
if (_abortController) {
|
||||
_abortController.abort();
|
||||
}
|
||||
// Backend explizit stoppen (kills laufende Tools/API-Calls)
|
||||
var sid = getCurrentSessionId();
|
||||
if (sid) apiStopChat(sid).catch(function() {});
|
||||
}
|
||||
|
||||
// ── Send Message ──
|
||||
|
||||
Reference in new issue
Block a user