Fix bridge compression history handling (#726)
* feat(bridge): refactor compression to use DB history and add structured logging - Extract buildDbHistory() to share message loading between buildCompressedHistory and forceCompressBridgeHistory - forceCompressBridgeHistory now reads from local DB instead of using Python-provided messages, ensuring consistency with api_server path - Pass sessionId to compressor for snapshot-aware compression - Add force_compress flag to bridge chat requests - Add bridgeLogger structured logging for compression lifecycle - Simplify schemas, session-sync, and providers Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix bridge compression history handling --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -10,22 +10,28 @@ const logDir = resolve(homedir(), '.hermes-web-ui', 'logs')
|
||||
mkdirSync(logDir, { recursive: true })
|
||||
|
||||
const logFile = resolve(logDir, 'server.log')
|
||||
const bridgeLogFile = resolve(logDir, 'bridge.log')
|
||||
|
||||
function rotateIfNeeded() {
|
||||
function rotateFileIfNeeded(file: string) {
|
||||
try {
|
||||
const stat = statSync(logFile)
|
||||
const stat = statSync(file)
|
||||
if (stat.size > MAX_LOG_SIZE) {
|
||||
const keepSize = Math.floor(MAX_LOG_SIZE / 2)
|
||||
const fd = openSync(logFile, 'r')
|
||||
const fd = openSync(file, 'r')
|
||||
const buf = Buffer.alloc(keepSize)
|
||||
readSync(fd, buf, 0, keepSize, stat.size - keepSize)
|
||||
closeSync(fd)
|
||||
truncateSync(logFile, 0)
|
||||
writeFileSync(logFile, buf)
|
||||
truncateSync(file, 0)
|
||||
writeFileSync(file, buf)
|
||||
}
|
||||
} catch { }
|
||||
}
|
||||
|
||||
function rotateIfNeeded() {
|
||||
rotateFileIfNeeded(logFile)
|
||||
rotateFileIfNeeded(bridgeLogFile)
|
||||
}
|
||||
|
||||
// Rotate on startup
|
||||
rotateIfNeeded()
|
||||
|
||||
@@ -38,3 +44,11 @@ export const logger = pino({
|
||||
dest: logFile,
|
||||
sync: true,
|
||||
}))
|
||||
|
||||
export const bridgeLogger = pino({
|
||||
level: process.env.BRIDGE_LOG_LEVEL || process.env.LOG_LEVEL || 'info',
|
||||
name: 'bridge',
|
||||
}, pino.destination({
|
||||
dest: bridgeLogFile,
|
||||
sync: true,
|
||||
}))
|
||||
|
||||
Reference in New Issue
Block a user