From 09ba00c1df2c0888b2c33a50391cdc5d92c8735b Mon Sep 17 00:00:00 2001 From: Serge Alex Date: Mon, 2 Nov 2026 09:04:41 +0300 Subject: [PATCH] feat-fin-ctx-diagnostic-remove-broken-slice --- injected/chat-logger.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/injected/chat-logger.js b/injected/chat-logger.js index bcfbd34..46cc266 100644 --- a/injected/chat-logger.js +++ b/injected/chat-logger.js @@ -109,7 +109,6 @@ function extractAssistant(sse) { if (!sse) return '' - var __finIdx = sse.indexOf('FINISHED'); if (__finIdx > 0) { sse = sse.slice(__finIdx) } var out = [] var blocks = sse.split(SEP); evTotal = blocks.length for (var i = 0; i !== blocks.length; i++) { @@ -169,8 +168,8 @@ if (req && Array.isArray(req.messages)) messages = req.messages else if (req && typeof req.prompt === 'string' && req.prompt) messages = [{ role: 'user', content: req.prompt }] } catch (e) { return } - var assistant = ''; var sseCalls = 0; var respLen = 0; var respHead = ''; var hasData = 0; var fetchTotal = 0; var finPos = -1; var sseTools = ''; - respLen = (entry.resp || '').length; finPos = (entry.resp || '').indexOf('FINISHED'); respHead = String(entry.resp || '').slice(0, 60); hasData = (entry.resp && entry.resp.indexOf('data: ') !== -1) ? 1 : 0; + var assistant = ''; var sseCalls = 0; var respLen = 0; var respHead = ''; var hasData = 0; var fetchTotal = 0; var finPos = -1; var finCtx = ''; var sseTools = ''; + respLen = (entry.resp || '').length; finPos = (entry.resp || '').indexOf('FINISHED'); if (finPos > 40) { finCtx = String(entry.resp).slice(finPos - 40, finPos + 80) } respHead = String(entry.resp || '').slice(0, 60); hasData = (entry.resp && entry.resp.indexOf('data: ') !== -1) ? 1 : 0; try { assistant = extractAssistant(entry.resp || '') } catch (e) { }; try { var LB1 = String.fromCharCode(10214); var RB1 = String.fromCharCode(10215); var marker = LB1 + 'DSH' + RB1; var pos = 0; while (true) { var hit = assistant.indexOf(marker, pos); if (hit === -1) break; sseCalls = sseCalls + 1; pos = hit + marker.length } ; try { var openM = marker; var closeM = String.fromCharCode(10214) + '/DSH' + String.fromCharCode(10215); var sPos = 0; var tools = []; while (true) { var so = assistant.indexOf(openM, sPos); if (so === -1) break; var sc = assistant.indexOf(closeM, so + openM.length); if (sc === -1) break; var inner = assistant.slice(so + openM.length, sc); try { var obj = JSON.parse(inner); if (obj && typeof obj.tool === 'string') { tools.push(obj.tool) } } catch (e) { } sPos = sc + closeM.length } sseTools = tools.join(',') } catch (e) { } } catch (e) { } var all = messages.slice() if (assistant) all.push({ role: 'assistant', content: assistant }) var file = today() + '.jsonl' @@ -208,7 +207,7 @@ accum: accum, delta: delta, chars: ctxChars, - chat_id: chatId, parent_id: pid, sse_calls: sseCalls, sse_len: assistant.length, resp_len: respLen, has_data: hasData, resp_head: respHead, fetch_total: fetchTotal, fin_pos: finPos, sse_tools: sseTools, ev_total: evTotal, ev_v: evV, ev_p: evP, sse_len: assistant.length, req_keys: reqKeys, est_tok: Math.round(ctxChars / K_RATIO), ctx_chars: charsAccum, ctx_tok: Math.round(charsAccum / K_RATIO), ctx_pct: Math.round(charsAccum / K_RATIO * 1000 / CONTEXT_LIMIT) / 10 + chat_id: chatId, parent_id: pid, sse_calls: sseCalls, sse_len: assistant.length, resp_len: respLen, has_data: hasData, resp_head: respHead, fetch_total: fetchTotal, fin_pos: finPos, fin_ctx: finCtx, sse_tools: sseTools, ev_total: evTotal, ev_v: evV, ev_p: evP, sse_len: assistant.length, req_keys: reqKeys, est_tok: Math.round(ctxChars / K_RATIO), ctx_chars: charsAccum, ctx_tok: Math.round(charsAccum / K_RATIO), ctx_pct: Math.round(charsAccum / K_RATIO * 1000 / CONTEXT_LIMIT) / 10 } lines.push(JSON.stringify(meta)); try { window.dispatchEvent(new CustomEvent('dshmem:metrics', { detail: JSON.stringify({ accum: accum, delta: delta, chars: ctxChars, est_tok: Math.round(ctxChars / K_RATIO), ctx_chars: charsAccum, ctx_tok: Math.round(charsAccum / K_RATIO), ctx_pct: Math.round(charsAccum / K_RATIO * 1000 / CONTEXT_LIMIT) / 10 }) })) } catch (e) { } }