diff --git a/injected/chat-logger.js b/injected/chat-logger.js index a6e8ed3..3f3f2fd 100644 --- a/injected/chat-logger.js +++ b/injected/chat-logger.js @@ -7,7 +7,7 @@ var K_RATIO = 3.1; var CONTEXT_LIMIT = 131072; var charsAccum = 0 var seen = Object.create(null) var cfg = null - var lastAccum = null + var lastAccum = null; var injectBlock = ''; var injectLoaded = false; var injectErr = ''; var injectBlock = ''; var injectLoaded = false; var injectErr = '' var SEP = String.fromCharCode(10) + String.fromCharCode(10); try { window.addEventListener('dshmem:chat-change', function () { charsAccum = 0; lastAccum = null; seen = Object.create(null); }) } catch (e) {} function hash(s) { @@ -93,6 +93,7 @@ }) } + function loadInjectBlock() { if (!cfg || !cfg.token) return; var h = { Authorization: 'Bearer ' + cfg.token }; fetch(BASE + '/tool', { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: 'Bearer ' + cfg.token }, body: JSON.stringify({ tool: 'dsh_read', args: { path: '_ai_notes/INJECT_2026-11-02.md' } }) }).then(function (r) { return r.json() }).then(function (j) { if (j && j.ok && j.data && j.data.content) { var __raw2 = String(j.data.content || ''); var __ls = __raw2.split(String.fromCharCode(10)); var __out = []; for (var __i = 0; __i < __ls.length; __i++) { var __L = __ls[__i]; var __p = __L.indexOf(' | '); var __ok = false; if (__p > 0 && __p < 8) { __ok = true; for (var __k = 0; __k < __p; __k++) { var __c = __L.charCodeAt(__k); if (__c !== 32 && (__c < 48 || __c > 57)) { __ok = false; break } } } if (__ok) { __out.push(__L.slice(__p + 3)) } else { __out.push(__L) } } injectBlock = __out.join(String.fromCharCode(10)); injectLoaded = true; console.log('[chat-log] inject block loaded ' + injectBlock.length) } else { injectErr = (j && j.error && j.error.code) ? j.error.code : 'no_data'; console.log('[chat-log] inject load failed ' + injectErr) } }).catch(function (e) { injectErr = 'fetch_error'; console.log('[chat-log] inject fetch error') }) } function sendLines(file, lines) { if (!cfg || !cfg.token) return Promise.resolve(false) var headers = { 'Content-Type': 'application/json' } @@ -222,7 +223,7 @@ } XMLHttpRequest.prototype.send = function (body) { var self = this - var bodyStr = typeof body === 'string' ? body : '' + var bodyStr = typeof body === 'string' ? body : ''; var __didInject = false; if (self.__chatUrl && self.__chatUrl.indexOf('chat/completion') !== -1) { try { var __d = JSON.parse(bodyStr); var __pk = 'parent' + '_message' + '_id'; var __raw = (__d && __d[__pk] !== undefined) ? __d[__pk] : 'absent'; var __isFirst = (__raw === null || __raw === 'absent'); if (__isFirst && injectLoaded && injectBlock.length > 0) { if (typeof __d.prompt === 'string' && __d.prompt) { __d.prompt = injectBlock + String.fromCharCode(10) + String.fromCharCode(10) + __d.prompt; bodyStr = JSON.stringify(__d); __didInject = true } else if (Array.isArray(__d.messages) && __d.messages.length > 0) { var __last = __d.messages[__d.messages.length - 1]; if (__last && typeof __last.content === 'string') { __last.content = injectBlock + String.fromCharCode(10) + String.fromCharCode(10) + __last.content; bodyStr = JSON.stringify(__d); __didInject = true } } } console.log('[chat-log] send diag parent=' + String(__raw) + ' block=' + injectBlock.length + ' loaded=' + injectLoaded + ' injected=' + __didInject) } catch (e) { console.log('[chat-log] inject error ' + String(e)) } } this.addEventListener('load', function () { try { process({ url: self.__chatUrl, body: bodyStr, resp: self.responseText || '' }) @@ -230,8 +231,8 @@ console.warn('[chat-log] error', String(e)) } }) - return origSend.apply(this, arguments) + if (__didInject) return origSend.call(this, bodyStr); return origSend.apply(this, arguments) } - requestConfig(); try { var __boot = Date.now(); var __nav = ''; try { var __ne = performance.getEntriesByType('navigation'); __nav = (__ne && __ne[0] && __ne[0].type) || 'unknown' } catch (e1) { __nav = 'err' } var __path = String(location.pathname || ''); var __cid = ''; var __parts = __path.split('/'); var __si = __parts.indexOf('s'); __cid = __si !== -1 && __parts[__si + 1] ? __parts[__si + 1] : ''; var __init = { mid: 'init-' + __boot, part: 0, total: 1, role: 'init', ts: __boot, inj: false, text: 'init', boot: __boot, nav: __nav, ready: document.readyState, path: __path, chat_id: __cid }; var __cfgReady = requestConfig(); __cfgReady.then(function (c) { if (!c || !c.token) return; var __h = { 'Content-Type': 'application/json' }; __h.Authorization = 'Bearer ' + c.token; fetch(BASE + '/log/append', { method: 'POST', headers: __h, body: JSON.stringify({ file: today() + '.jsonl', lines: [JSON.stringify(__init)] }) }).catch(function () { }) }); } catch (e2) { } + requestConfig(); try { var __boot = Date.now(); var __nav = ''; try { var __ne = performance.getEntriesByType('navigation'); __nav = (__ne && __ne[0] && __ne[0].type) || 'unknown' } catch (e1) { __nav = 'err' } var __path = String(location.pathname || ''); var __cid = ''; var __parts = __path.split('/'); var __si = __parts.indexOf('s'); __cid = __si !== -1 && __parts[__si + 1] ? __parts[__si + 1] : ''; var __init = { mid: 'init-' + __boot, part: 0, total: 1, role: 'init', ts: __boot, inj: false, text: 'init', boot: __boot, nav: __nav, ready: document.readyState, path: __path, chat_id: __cid }; var __cfgReady = requestConfig(); __cfgReady.then(function (c) { if (!c || !c.token) return; loadInjectBlock(); var __h = { 'Content-Type': 'application/json' }; __h.Authorization = 'Bearer ' + c.token; fetch(BASE + '/log/append', { method: 'POST', headers: __h, body: JSON.stringify({ file: today() + '.jsonl', lines: [JSON.stringify(__init)] }) }).catch(function () { }) }); } catch (e2) { } })()