@kenkaiiii/ggcoder 4.3.42 → 4.3.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/logger.d.ts +7 -2
- package/dist/core/logger.d.ts.map +1 -1
- package/dist/core/logger.js +48 -4
- package/dist/core/logger.js.map +1 -1
- package/package.json +1 -1
package/dist/core/logger.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import type { EventBus } from "./event-bus.js";
|
|
2
2
|
type LogLevel = "INFO" | "ERROR" | "WARN";
|
|
3
3
|
/**
|
|
4
|
-
* Initialize the debug logger. Opens the log file
|
|
5
|
-
*
|
|
4
|
+
* Initialize the debug logger. Opens the log file in append mode so the
|
|
5
|
+
* previous session's lines are preserved (rotated at MAX_BYTES). Generates a
|
|
6
|
+
* session ID tagged onto every log line so concurrent sessions or back-scroll
|
|
7
|
+
* across sessions can be filtered by `grep "sid=<id>"`. No-op if already
|
|
8
|
+
* initialized.
|
|
6
9
|
*/
|
|
7
10
|
export declare function initLogger(filePath: string, meta?: {
|
|
8
11
|
version?: string;
|
|
@@ -10,6 +13,8 @@ export declare function initLogger(filePath: string, meta?: {
|
|
|
10
13
|
model?: string;
|
|
11
14
|
thinking?: string;
|
|
12
15
|
}): void;
|
|
16
|
+
/** Session identifier included on every log line as `sid=<id>`. */
|
|
17
|
+
export declare function getSessionId(): string;
|
|
13
18
|
/**
|
|
14
19
|
* Write a timestamped log line. No-op if logger is not initialized.
|
|
15
20
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/core/logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/core/logger.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,KAAK,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AA8B1C;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAChF,IAAI,CAwBN;AAED,mEAAmE;AACnE,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;GAEG;AACH,wBAAgB,GAAG,CACjB,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,IAAI,CAgBN;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CA2FpD;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAalC"}
|
package/dist/core/logger.js
CHANGED
|
@@ -1,20 +1,59 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
|
+
import { randomBytes } from "node:crypto";
|
|
3
|
+
// Cross-session log retention: the log is appended across ggcoder launches so
|
|
4
|
+
// you can grep back through prior sessions. Rotated at MAX_BYTES to keep it
|
|
5
|
+
// bounded; we keep one generation (debug.log.1) — that's enough to survive
|
|
6
|
+
// one rotation's worth of scrollback while bounding disk usage.
|
|
7
|
+
const MAX_BYTES = 10 * 1024 * 1024; // 10 MB
|
|
2
8
|
let fd = null;
|
|
9
|
+
let sessionId = "";
|
|
3
10
|
let unsubscribers = [];
|
|
11
|
+
function rotateIfNeeded(filePath) {
|
|
12
|
+
try {
|
|
13
|
+
const st = fs.statSync(filePath);
|
|
14
|
+
if (st.size < MAX_BYTES)
|
|
15
|
+
return;
|
|
16
|
+
const rotated = `${filePath}.1`;
|
|
17
|
+
// Replace prior rotation (fs.renameSync overwrites on POSIX; on Windows
|
|
18
|
+
// it fails if dest exists, so unlink first defensively).
|
|
19
|
+
try {
|
|
20
|
+
fs.unlinkSync(rotated);
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
// No prior rotation
|
|
24
|
+
}
|
|
25
|
+
fs.renameSync(filePath, rotated);
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
// Log file doesn't exist yet or stat failed — nothing to rotate
|
|
29
|
+
}
|
|
30
|
+
}
|
|
4
31
|
/**
|
|
5
|
-
* Initialize the debug logger. Opens the log file
|
|
6
|
-
*
|
|
32
|
+
* Initialize the debug logger. Opens the log file in append mode so the
|
|
33
|
+
* previous session's lines are preserved (rotated at MAX_BYTES). Generates a
|
|
34
|
+
* session ID tagged onto every log line so concurrent sessions or back-scroll
|
|
35
|
+
* across sessions can be filtered by `grep "sid=<id>"`. No-op if already
|
|
36
|
+
* initialized.
|
|
7
37
|
*/
|
|
8
38
|
export function initLogger(filePath, meta) {
|
|
9
39
|
if (fd !== null)
|
|
10
40
|
return;
|
|
41
|
+
rotateIfNeeded(filePath);
|
|
11
42
|
try {
|
|
12
|
-
fd = fs.openSync(filePath, "
|
|
43
|
+
fd = fs.openSync(filePath, "a");
|
|
13
44
|
}
|
|
14
45
|
catch {
|
|
15
46
|
// Can't open log file — silently disable logging
|
|
16
47
|
return;
|
|
17
48
|
}
|
|
49
|
+
sessionId = randomBytes(4).toString("hex");
|
|
50
|
+
// Visible separator between sessions when back-reading the log.
|
|
51
|
+
try {
|
|
52
|
+
fs.writeSync(fd, "\n");
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
// Write failed — proceed without the separator
|
|
56
|
+
}
|
|
18
57
|
const parts = ["ggcoder"];
|
|
19
58
|
if (meta?.version)
|
|
20
59
|
parts[0] += ` v${meta.version}`;
|
|
@@ -25,8 +64,13 @@ export function initLogger(filePath, meta) {
|
|
|
25
64
|
parts.push(`model=${meta.model}`);
|
|
26
65
|
if (meta?.thinking)
|
|
27
66
|
parts.push(`thinking=${meta.thinking}`);
|
|
67
|
+
parts.push(`pid=${process.pid}`);
|
|
28
68
|
log("INFO", "startup", parts.join(" "));
|
|
29
69
|
}
|
|
70
|
+
/** Session identifier included on every log line as `sid=<id>`. */
|
|
71
|
+
export function getSessionId() {
|
|
72
|
+
return sessionId;
|
|
73
|
+
}
|
|
30
74
|
/**
|
|
31
75
|
* Write a timestamped log line. No-op if logger is not initialized.
|
|
32
76
|
*/
|
|
@@ -34,7 +78,7 @@ export function log(level, category, message, data) {
|
|
|
34
78
|
if (fd === null)
|
|
35
79
|
return;
|
|
36
80
|
const ts = new Date().toISOString();
|
|
37
|
-
let line = `[${ts}] [${level}] [${category}] ${message}`;
|
|
81
|
+
let line = `[${ts}] [sid=${sessionId}] [${level}] [${category}] ${message}`;
|
|
38
82
|
if (data) {
|
|
39
83
|
const pairs = Object.entries(data)
|
|
40
84
|
.map(([k, v]) => `${k}=${typeof v === "string" ? v : JSON.stringify(v)}`)
|
package/dist/core/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/core/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/core/logger.ts"],"names":[],"mappings":"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"}
|