@devflow-tools/telemetry 0.18.0 → 0.18.2

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/README.md CHANGED
@@ -28,6 +28,8 @@ await telemetry.recordToolCall({ eventId: 'evt-1', executionId: 'run-1', timesta
28
28
 
29
29
  事件默认写入 DevFlow 本地数据库/日志目录;使用 `createLogger` 或 `LogWriter` 保持结构化字段,避免直接写 stdout。
30
30
 
31
+ 诊断日志采用统一清理策略:默认保留 30 天,单文件最大 50 MiB,项目级与全局日志预算各 256 MiB。`LogCleanupService` 只识别登记的 trace、session、metric、error、Hook Debug 和 HTTP error 日志;不会扫描或删除 memory snapshot、spool、pending 状态、SQLite 或业务文件。CLI 的 `devflow logs cleanup` 默认为 dry-run,必须显式传入 `--execute` 才会删除候选日志。
32
+
31
33
  ## 版本与兼容性
32
34
 
33
35
  - 当前包版本:`0.17.8`
package/dist/index.d.ts CHANGED
@@ -5,4 +5,8 @@ export { SemanticRuntimeEventProjector } from './runtime-event-projector.js';
5
5
  export { aggregateHealthStatus, createHealthSnapshot } from "./health-snapshot.js";
6
6
  export type { HealthCheckResult, HealthSnapshot, HealthStatus } from "./health-snapshot.js";
7
7
  export type { RunMeta, StepMeta, StepEnd, RunEnd, ToolCallEvent, LlmCallEvent, FreeEvent } from "./log-writer.js";
8
+ export { DEFAULT_LOG_CLEANUP_POLICY, getDiagnosticLogCatalog, LogCleanupService, rotateDiagnosticLogFile } from './log-cleanup.js';
9
+ export type { CleanupTrigger, DiagnosticLogCatalogEntry, DiagnosticLogKind, LogCleanupInput, LogCleanupPolicy, LogCleanupResult } from './log-cleanup.js';
10
+ export { DiagnosticLogCleanupScheduler, maybeRunDiagnosticLogCleanup } from './log-cleanup-scheduler.js';
11
+ export type { CleanupCompensationOptions } from './log-cleanup-scheduler.js';
8
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACnF,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC5F,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACnF,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC5F,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAClH,OAAO,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AACnI,YAAY,EAAE,cAAc,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC1J,OAAO,EAAE,6BAA6B,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC;AACzG,YAAY,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC"}
package/dist/index.js CHANGED
@@ -3,4 +3,6 @@ export { LogWriter, getLogWriter } from "./log-writer.js";
3
3
  export { assertSemanticControlLogSafe, emitSemanticControlLog } from './semantic-log.js';
4
4
  export { SemanticRuntimeEventProjector } from './runtime-event-projector.js';
5
5
  export { aggregateHealthStatus, createHealthSnapshot } from "./health-snapshot.js";
6
+ export { DEFAULT_LOG_CLEANUP_POLICY, getDiagnosticLogCatalog, LogCleanupService, rotateDiagnosticLogFile } from './log-cleanup.js';
7
+ export { DiagnosticLogCleanupScheduler, maybeRunDiagnosticLogCleanup } from './log-cleanup-scheduler.js';
6
8
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAGnF,OAAO,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAEnI,OAAO,EAAE,6BAA6B,EAAE,4BAA4B,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,12 @@
1
+ export interface CleanupLock {
2
+ status: 'acquired';
3
+ fd: number;
4
+ path: string;
5
+ contents: string;
6
+ }
7
+ export type CleanupLockResult = CleanupLock | {
8
+ status: 'busy';
9
+ };
10
+ export declare function acquireCleanupLock(root: string, now: number, staleMs: number): CleanupLockResult;
11
+ export declare function releaseCleanupLock(lock: CleanupLock): void;
12
+ //# sourceMappingURL=log-cleanup-lock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-cleanup-lock.d.ts","sourceRoot":"","sources":["../src/log-cleanup-lock.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AA6BjE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAoBhG;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAK1D"}
@@ -0,0 +1,75 @@
1
+ import { closeSync, existsSync, lstatSync, mkdirSync, openSync, readFileSync, unlinkSync, writeFileSync } from 'node:fs';
2
+ import { randomUUID } from 'node:crypto';
3
+ import { join } from 'node:path';
4
+ function processIsDead(pid) {
5
+ try {
6
+ process.kill(pid, 0);
7
+ return false;
8
+ }
9
+ catch (error) {
10
+ return error.code === 'ESRCH';
11
+ }
12
+ }
13
+ function recoverStaleLock(path, now, staleMs) {
14
+ try {
15
+ const stat = lstatSync(path);
16
+ if (!stat.isFile() || stat.isSymbolicLink())
17
+ return false;
18
+ const contents = readFileSync(path, 'utf8');
19
+ const parsed = JSON.parse(contents);
20
+ const pid = Number(parsed.pid);
21
+ const createdAt = Number(parsed.createdAt);
22
+ if (!Number.isSafeInteger(pid) || pid <= 0 || !Number.isFinite(createdAt))
23
+ return false;
24
+ if (!processIsDead(pid) && now - createdAt <= staleMs)
25
+ return false;
26
+ if (readFileSync(path, 'utf8') !== contents)
27
+ return false;
28
+ unlinkSync(path);
29
+ return true;
30
+ }
31
+ catch {
32
+ return false;
33
+ }
34
+ }
35
+ export function acquireCleanupLock(root, now, staleMs) {
36
+ mkdirSync(root, { recursive: true, mode: 0o700 });
37
+ const rootStat = lstatSync(root);
38
+ if (!rootStat.isDirectory() || rootStat.isSymbolicLink())
39
+ return { status: 'busy' };
40
+ const path = join(root, '.cleanup.lock');
41
+ for (let attempt = 0; attempt < 2; attempt += 1) {
42
+ const contents = JSON.stringify({ pid: process.pid, createdAt: now, token: randomUUID() });
43
+ let fd;
44
+ try {
45
+ fd = openSync(path, 'wx', 0o600);
46
+ writeFileSync(fd, contents);
47
+ return { status: 'acquired', fd, path, contents };
48
+ }
49
+ catch (error) {
50
+ if (fd !== undefined)
51
+ try {
52
+ closeSync(fd);
53
+ }
54
+ catch { }
55
+ if (error.code !== 'EEXIST')
56
+ return { status: 'busy' };
57
+ if (attempt === 0 && existsSync(path) && recoverStaleLock(path, now, staleMs))
58
+ continue;
59
+ return { status: 'busy' };
60
+ }
61
+ }
62
+ return { status: 'busy' };
63
+ }
64
+ export function releaseCleanupLock(lock) {
65
+ try {
66
+ closeSync(lock.fd);
67
+ }
68
+ catch { }
69
+ try {
70
+ if (readFileSync(lock.path, 'utf8') === lock.contents)
71
+ unlinkSync(lock.path);
72
+ }
73
+ catch { }
74
+ }
75
+ //# sourceMappingURL=log-cleanup-lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-cleanup-lock.js","sourceRoot":"","sources":["../src/log-cleanup-lock.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { LogCleanupService, type LogCleanupResult } from './log-cleanup.js';
2
+ export interface CleanupCompensationOptions {
3
+ now?: number;
4
+ intervalMs?: number;
5
+ service?: LogCleanupService;
6
+ }
7
+ export declare function maybeRunDiagnosticLogCleanup(projectRoot: string, options?: CleanupCompensationOptions): LogCleanupResult | null;
8
+ export declare class DiagnosticLogCleanupScheduler {
9
+ private readonly service;
10
+ private timer;
11
+ constructor(service?: LogCleanupService);
12
+ start(input?: {
13
+ projectRoot?: string;
14
+ intervalMs?: number;
15
+ }): void;
16
+ stop(): void;
17
+ }
18
+ //# sourceMappingURL=log-cleanup-scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-cleanup-scheduler.d.ts","sourceRoot":"","sources":["../src/log-cleanup-scheduler.ts"],"names":[],"mappings":"AAEA,OAAO,EAA8B,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAExG,MAAM,WAAW,0BAA0B;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B;AAED,wBAAgB,4BAA4B,CAC1C,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,0BAA+B,GACvC,gBAAgB,GAAG,IAAI,CAsBzB;AAED,qBAAa,6BAA6B;IAG5B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,KAAK,CAA6B;gBAEb,OAAO,oBAA0B;IAE9D,KAAK,CAAC,KAAK,GAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,IAAI;IAYtE,IAAI,IAAI,IAAI;CAIb"}
@@ -0,0 +1,55 @@
1
+ import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { DEFAULT_LOG_CLEANUP_POLICY, LogCleanupService } from './log-cleanup.js';
4
+ export function maybeRunDiagnosticLogCleanup(projectRoot, options = {}) {
5
+ const now = options.now ?? Date.now();
6
+ const logRoot = join(projectRoot, '.devflow', 'logs');
7
+ const statePath = join(logRoot, '.cleanup-state.json');
8
+ try {
9
+ if (existsSync(statePath)) {
10
+ const state = JSON.parse(readFileSync(statePath, 'utf8'));
11
+ const lastCleanupAt = Number(state.lastCleanupAt);
12
+ if (Number.isFinite(lastCleanupAt)
13
+ && now - lastCleanupAt < (options.intervalMs ?? DEFAULT_LOG_CLEANUP_POLICY.compensationIntervalMs))
14
+ return null;
15
+ }
16
+ }
17
+ catch { }
18
+ const result = (options.service ?? new LogCleanupService()).cleanup({
19
+ projectRoot, trigger: 'compensation', mode: 'execute', now,
20
+ });
21
+ try {
22
+ mkdirSync(logRoot, { recursive: true, mode: 0o700 });
23
+ const temporary = `${statePath}.${process.pid}.tmp`;
24
+ writeFileSync(temporary, JSON.stringify({ lastCleanupAt: now, lastResult: result }), { mode: 0o600 });
25
+ renameSync(temporary, statePath);
26
+ }
27
+ catch { }
28
+ return result;
29
+ }
30
+ export class DiagnosticLogCleanupScheduler {
31
+ service;
32
+ timer;
33
+ constructor(service = new LogCleanupService()) {
34
+ this.service = service;
35
+ }
36
+ start(input = {}) {
37
+ if (this.timer)
38
+ return;
39
+ const run = (trigger) => {
40
+ try {
41
+ this.service.cleanup({ projectRoot: input.projectRoot, trigger, mode: 'execute' });
42
+ }
43
+ catch { }
44
+ };
45
+ run('startup');
46
+ this.timer = setInterval(() => run('periodic'), input.intervalMs ?? 60 * 60 * 1000);
47
+ this.timer.unref();
48
+ }
49
+ stop() {
50
+ if (this.timer)
51
+ clearInterval(this.timer);
52
+ this.timer = undefined;
53
+ }
54
+ }
55
+ //# sourceMappingURL=log-cleanup-scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-cleanup-scheduler.js","sourceRoot":"","sources":["../src/log-cleanup-scheduler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ export type DiagnosticLogKind = 'trace' | 'session' | 'metric' | 'error' | 'hook-debug' | 'http-error';
2
+ export type CleanupTrigger = 'startup' | 'periodic' | 'compensation' | 'manual';
3
+ export interface LogCleanupPolicy {
4
+ retentionDays: number;
5
+ maxFileBytes: number;
6
+ projectBudgetBytes: number;
7
+ globalBudgetBytes: number;
8
+ compensationIntervalMs: number;
9
+ lockStaleMs: number;
10
+ }
11
+ export interface DiagnosticLogCatalogEntry {
12
+ rootKind: 'project' | 'global';
13
+ relativePath: string;
14
+ kind: DiagnosticLogKind;
15
+ directory: boolean;
16
+ budgetGroup: 'project' | 'global';
17
+ }
18
+ export interface LogCleanupInput {
19
+ projectRoot?: string;
20
+ globalStateRoot?: string;
21
+ trigger: CleanupTrigger;
22
+ mode: 'dry-run' | 'execute';
23
+ policy?: Partial<LogCleanupPolicy>;
24
+ olderThanDays?: number;
25
+ maxBytes?: number;
26
+ now?: number;
27
+ activePaths?: ReadonlySet<string>;
28
+ scope?: 'project' | 'global' | 'all';
29
+ }
30
+ export interface LogCleanupResult {
31
+ trigger: CleanupTrigger;
32
+ scannedFiles: number;
33
+ deletedFiles: number;
34
+ rotatedFiles: number;
35
+ deletedBytes: number;
36
+ remainingBytes: number;
37
+ skippedFiles: number;
38
+ failureCount: number;
39
+ reasonCounts: Record<string, number>;
40
+ startedAt: number;
41
+ finishedAt: number;
42
+ }
43
+ export declare const DEFAULT_LOG_CLEANUP_POLICY: Readonly<LogCleanupPolicy>;
44
+ export declare function getDiagnosticLogCatalog(): readonly DiagnosticLogCatalogEntry[];
45
+ export declare class LogCleanupService {
46
+ cleanup(input: LogCleanupInput): LogCleanupResult;
47
+ private cleanupGroup;
48
+ }
49
+ export declare function rotateDiagnosticLogFile(input: {
50
+ path: string;
51
+ maxBytes: number;
52
+ maxFiles: number;
53
+ incomingBytes?: number;
54
+ }): {
55
+ rotated: boolean;
56
+ archivePath?: string;
57
+ };
58
+ //# sourceMappingURL=log-cleanup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-cleanup.d.ts","sourceRoot":"","sources":["../src/log-cleanup.ts"],"names":[],"mappings":"AAeA,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,YAAY,GAAG,YAAY,CAAC;AACvG,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,UAAU,GAAG,cAAc,GAAG,QAAQ,CAAC;AAEhF,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,iBAAiB,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,SAAS,GAAG,QAAQ,CAAC;CACnC;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,KAAK,CAAC;CACtC;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,cAAc,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,gBAAgB,CAOhE,CAAC;AAWH,wBAAgB,uBAAuB,IAAI,SAAS,yBAAyB,EAAE,CAE9E;AAgED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,KAAK,EAAE,eAAe,GAAG,gBAAgB;IAsBjD,OAAO,CAAC,YAAY;CAoErB;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAqB7C"}
@@ -0,0 +1,240 @@
1
+ import { chmodSync, existsSync, lstatSync, mkdirSync, readdirSync, renameSync, rmSync, statSync, writeFileSync, } from 'node:fs';
2
+ import { basename, dirname, isAbsolute, join, relative, resolve, sep } from 'node:path';
3
+ import { getDevFlowStateRoot } from '@devflow-tools/sdk';
4
+ import { acquireCleanupLock, releaseCleanupLock } from './log-cleanup-lock.js';
5
+ export const DEFAULT_LOG_CLEANUP_POLICY = Object.freeze({
6
+ retentionDays: 30,
7
+ maxFileBytes: 50 * 1024 * 1024,
8
+ projectBudgetBytes: 256 * 1024 * 1024,
9
+ globalBudgetBytes: 256 * 1024 * 1024,
10
+ compensationIntervalMs: 60 * 60 * 1000,
11
+ lockStaleMs: 30 * 1000,
12
+ });
13
+ const CATALOG = Object.freeze([
14
+ { rootKind: 'project', relativePath: 'traces', kind: 'trace', directory: true, budgetGroup: 'project' },
15
+ { rootKind: 'project', relativePath: 'sessions', kind: 'session', directory: true, budgetGroup: 'project' },
16
+ { rootKind: 'project', relativePath: 'errors.jsonl', kind: 'error', directory: false, budgetGroup: 'project' },
17
+ { rootKind: 'project', relativePath: 'metrics.jsonl', kind: 'metric', directory: false, budgetGroup: 'project' },
18
+ { rootKind: 'global', relativePath: 'logs/hook-debug', kind: 'hook-debug', directory: true, budgetGroup: 'global' },
19
+ { rootKind: 'global', relativePath: 'errors/http-errors.log', kind: 'http-error', directory: false, budgetGroup: 'global' },
20
+ ]);
21
+ export function getDiagnosticLogCatalog() {
22
+ return CATALOG;
23
+ }
24
+ function count(result, reason) {
25
+ result.reasonCounts[reason] = (result.reasonCounts[reason] ?? 0) + 1;
26
+ }
27
+ function inside(root, path) {
28
+ const rel = relative(resolve(root), resolve(path));
29
+ return rel === '' || (!rel.startsWith(`..${sep}`) && rel !== '..' && !isAbsolute(rel));
30
+ }
31
+ function parsedDate(path) {
32
+ const match = path.match(/(?:^|[/\\])(\d{4}-\d{2}-\d{2})(?:[/\\]|-|$)/u);
33
+ if (!match)
34
+ return undefined;
35
+ const value = Date.parse(`${match[1]}T00:00:00.000Z`);
36
+ return Number.isFinite(value) ? value : undefined;
37
+ }
38
+ function isArchive(path) {
39
+ return /\.\d+(?:\.jsonl)?$/u.test(path) || /\.jsonl\.\d+$/u.test(path) || /-session\.\d+\.jsonl$/u.test(path);
40
+ }
41
+ function discoverFiles(path, expectedRoot, result) {
42
+ if (!existsSync(path) || !inside(expectedRoot, path))
43
+ return [];
44
+ let stat;
45
+ try {
46
+ stat = lstatSync(path);
47
+ }
48
+ catch {
49
+ result.skippedFiles += 1;
50
+ count(result, 'stat_failed');
51
+ return [];
52
+ }
53
+ if (stat.isSymbolicLink()) {
54
+ result.skippedFiles += 1;
55
+ count(result, 'symlink');
56
+ return [];
57
+ }
58
+ if (stat.isFile())
59
+ return [path];
60
+ if (!stat.isDirectory()) {
61
+ result.skippedFiles += 1;
62
+ count(result, 'not_regular');
63
+ return [];
64
+ }
65
+ const files = [];
66
+ for (const name of readdirSync(path)) {
67
+ if (name === '.cleanup.lock' || name === '.cleanup-state.json' || name.includes('.tmp'))
68
+ continue;
69
+ files.push(...discoverFiles(join(path, name), expectedRoot, result));
70
+ }
71
+ return files;
72
+ }
73
+ function discoverFileAndArchives(target, expectedRoot, result) {
74
+ const directory = dirname(target);
75
+ if (!existsSync(directory) || !inside(expectedRoot, directory))
76
+ return [];
77
+ const targetName = basename(target);
78
+ const files = [];
79
+ for (const name of readdirSync(directory)) {
80
+ if (name !== targetName && !name.startsWith(`${targetName}.`))
81
+ continue;
82
+ const path = join(directory, name);
83
+ try {
84
+ const stat = lstatSync(path);
85
+ if (stat.isFile() && !stat.isSymbolicLink())
86
+ files.push(path);
87
+ else {
88
+ result.skippedFiles += 1;
89
+ count(result, stat.isSymbolicLink() ? 'symlink' : 'not_regular');
90
+ }
91
+ }
92
+ catch {
93
+ result.skippedFiles += 1;
94
+ count(result, 'stat_failed');
95
+ }
96
+ }
97
+ return files;
98
+ }
99
+ export class LogCleanupService {
100
+ cleanup(input) {
101
+ const startedAt = input.now ?? Date.now();
102
+ const policy = { ...DEFAULT_LOG_CLEANUP_POLICY, ...input.policy };
103
+ if (input.olderThanDays !== undefined)
104
+ policy.retentionDays = input.olderThanDays;
105
+ if (input.maxBytes !== undefined) {
106
+ policy.projectBudgetBytes = input.maxBytes;
107
+ policy.globalBudgetBytes = input.maxBytes;
108
+ }
109
+ const result = {
110
+ trigger: input.trigger, scannedFiles: 0, deletedFiles: 0, rotatedFiles: 0,
111
+ deletedBytes: 0, remainingBytes: 0, skippedFiles: 0, failureCount: 0,
112
+ reasonCounts: {}, startedAt, finishedAt: startedAt,
113
+ };
114
+ const projectLogRoot = resolve(input.projectRoot ?? process.cwd(), '.devflow', 'logs');
115
+ const globalStateRoot = resolve(input.globalStateRoot ?? getDevFlowStateRoot());
116
+ const scope = input.scope ?? 'all';
117
+ if (scope !== 'global')
118
+ this.cleanupGroup('project', projectLogRoot, projectLogRoot, policy.projectBudgetBytes, input, policy, result);
119
+ if (scope !== 'project')
120
+ this.cleanupGroup('global', join(globalStateRoot, 'logs'), globalStateRoot, policy.globalBudgetBytes, input, policy, result);
121
+ result.finishedAt = input.now ?? Date.now();
122
+ return result;
123
+ }
124
+ cleanupGroup(group, lockRoot, catalogRoot, budget, input, policy, result) {
125
+ const entries = CATALOG.filter(entry => entry.rootKind === group);
126
+ if (!entries.some(entry => existsSync(join(catalogRoot, entry.relativePath))))
127
+ return;
128
+ const lock = acquireCleanupLock(lockRoot, result.startedAt, policy.lockStaleMs);
129
+ if (lock.status === 'busy') {
130
+ count(result, 'lock_busy');
131
+ return;
132
+ }
133
+ try {
134
+ const cutoff = result.startedAt - policy.retentionDays * 24 * 60 * 60 * 1000;
135
+ const candidates = [];
136
+ for (const entry of entries) {
137
+ const target = join(catalogRoot, entry.relativePath);
138
+ const paths = entry.directory
139
+ ? discoverFiles(target, catalogRoot, result)
140
+ : discoverFileAndArchives(target, catalogRoot, result);
141
+ for (const path of paths) {
142
+ result.scannedFiles += 1;
143
+ try {
144
+ const stat = statSync(path);
145
+ const date = parsedDate(path);
146
+ const ageTime = date === undefined ? stat.mtimeMs : Math.max(date, stat.mtimeMs);
147
+ const activeBase = !isArchive(path) && (entry.kind === 'metric' || entry.kind === 'error' || entry.kind === 'http-error' || entry.kind === 'hook-debug');
148
+ const active = input.activePaths?.has(resolve(path)) ?? false;
149
+ const today = new Date(result.startedAt).toISOString().slice(0, 10);
150
+ const currentDayLog = path.includes(today);
151
+ const protectedFile = activeBase || active || currentDayLog;
152
+ if (protectedFile) {
153
+ result.skippedFiles += 1;
154
+ count(result, active ? 'active' : 'protected');
155
+ }
156
+ candidates.push({
157
+ path, kind: entry.kind, bytes: stat.size, ageTime,
158
+ expired: !protectedFile && ageTime < cutoff,
159
+ archive: isArchive(path), protected: protectedFile,
160
+ });
161
+ }
162
+ catch {
163
+ result.skippedFiles += 1;
164
+ count(result, 'stat_failed');
165
+ }
166
+ }
167
+ }
168
+ let remaining = candidates.reduce((sum, item) => sum + item.bytes, 0);
169
+ const planned = new Set();
170
+ for (const item of [...candidates].filter(item => item.expired).sort((a, b) => a.ageTime - b.ageTime))
171
+ planned.add(item.path);
172
+ let afterExpired = remaining - candidates.filter(item => planned.has(item.path)).reduce((sum, item) => sum + item.bytes, 0);
173
+ if (afterExpired > budget) {
174
+ for (const item of [...candidates].filter(item => item.archive && !item.protected && !planned.has(item.path)).sort((a, b) => a.ageTime - b.ageTime)) {
175
+ planned.add(item.path);
176
+ afterExpired -= item.bytes;
177
+ if (afterExpired <= budget)
178
+ break;
179
+ }
180
+ }
181
+ if (afterExpired > budget) {
182
+ for (const item of [...candidates].filter(item => !item.protected && !planned.has(item.path)).sort((a, b) => a.ageTime - b.ageTime)) {
183
+ planned.add(item.path);
184
+ afterExpired -= item.bytes;
185
+ if (afterExpired <= budget)
186
+ break;
187
+ }
188
+ }
189
+ for (const item of candidates) {
190
+ if (!planned.has(item.path))
191
+ continue;
192
+ if (input.mode === 'execute') {
193
+ try {
194
+ rmSync(item.path, { force: true });
195
+ }
196
+ catch {
197
+ result.failureCount += 1;
198
+ count(result, 'delete_failed');
199
+ continue;
200
+ }
201
+ }
202
+ result.deletedFiles += 1;
203
+ result.deletedBytes += item.bytes;
204
+ remaining -= item.bytes;
205
+ }
206
+ result.remainingBytes += Math.max(0, remaining);
207
+ }
208
+ finally {
209
+ releaseCleanupLock(lock);
210
+ }
211
+ }
212
+ }
213
+ export function rotateDiagnosticLogFile(input) {
214
+ const path = resolve(input.path);
215
+ mkdirSync(dirname(path), { recursive: true, mode: 0o700 });
216
+ const currentBytes = existsSync(path) ? statSync(path).size : 0;
217
+ if (currentBytes === 0 || currentBytes + (input.incomingBytes ?? 0) <= input.maxBytes)
218
+ return { rotated: false };
219
+ const maxFiles = Math.max(1, Math.floor(input.maxFiles));
220
+ if (maxFiles === 1) {
221
+ rmSync(path, { force: true });
222
+ writeFileSync(path, '', { mode: 0o600 });
223
+ return { rotated: true };
224
+ }
225
+ rmSync(`${path}.${maxFiles - 1}`, { force: true });
226
+ for (let index = maxFiles - 2; index >= 1; index -= 1) {
227
+ const source = `${path}.${index}`;
228
+ if (existsSync(source))
229
+ renameSync(source, `${path}.${index + 1}`);
230
+ }
231
+ const archivePath = `${path}.1`;
232
+ renameSync(path, archivePath);
233
+ writeFileSync(path, '', { mode: 0o600 });
234
+ try {
235
+ chmodSync(path, 0o600);
236
+ }
237
+ catch { }
238
+ return { rotated: true, archivePath };
239
+ }
240
+ //# sourceMappingURL=log-cleanup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-cleanup.js","sourceRoot":"","sources":["../src/log-cleanup.ts"],"names":[],"mappings":"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"}
@@ -54,11 +54,11 @@ export declare class LogWriter {
54
54
  private sessionFd;
55
55
  private sessionFileSize;
56
56
  private activeSpans;
57
+ private activePaths;
57
58
  private noop;
58
59
  constructor(projectRoot: string);
59
60
  private ensureDirs;
60
61
  private openSessionFile;
61
- private cleanupStaleFiles;
62
62
  startRun(meta: RunMeta): string;
63
63
  startStep(runId: string, meta: StepMeta): string;
64
64
  endStep(stepId: string, summary: StepEnd): void;
@@ -1 +1 @@
1
- {"version":3,"file":"log-writer.d.ts","sourceRoot":"","sources":["../src/log-writer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"log-writer.d.ts","sourceRoot":"","sources":["../src/log-writer.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
- import { appendFileSync, existsSync, mkdirSync, openSync, writeSync, closeSync, readdirSync, statSync, rmSync } from "fs";
1
+ import { appendFileSync, existsSync, mkdirSync, openSync, writeSync, closeSync, statSync } from "fs";
2
2
  import { join } from "path";
3
+ import { LogCleanupService, rotateDiagnosticLogFile } from './log-cleanup.js';
3
4
  const SENSITIVE_KEYS = new Set(["password", "apikey", "token", "secret", "authorization"]);
4
5
  const DEFAULT_MAX_OUTPUT_BYTES = 16384;
5
6
  const MAX_FILE_BYTES = 50 * 1024 * 1024;
6
- const RETENTION_DAYS = 30;
7
+ const MAX_ARCHIVE_FILES = 5;
7
8
  export class LogWriter {
8
9
  logRoot;
9
10
  tracesDir;
@@ -14,6 +15,7 @@ export class LogWriter {
14
15
  sessionFd = null;
15
16
  sessionFileSize = 0;
16
17
  activeSpans = new Map();
18
+ activePaths = new Set();
17
19
  noop = false;
18
20
  constructor(projectRoot) {
19
21
  this.logRoot = join(projectRoot, ".devflow", "logs");
@@ -25,7 +27,16 @@ export class LogWriter {
25
27
  try {
26
28
  this.ensureDirs();
27
29
  this.openSessionFile();
28
- this.cleanupStaleFiles();
30
+ try {
31
+ new LogCleanupService().cleanup({
32
+ projectRoot,
33
+ trigger: 'startup',
34
+ mode: 'execute',
35
+ activePaths: this.activePaths,
36
+ scope: 'project',
37
+ });
38
+ }
39
+ catch { /* cleanup must never disable logging */ }
29
40
  }
30
41
  catch {
31
42
  this.noop = true;
@@ -46,40 +57,13 @@ export class LogWriter {
46
57
  const fpath = join(this.sessionsDir, fname);
47
58
  try {
48
59
  this.sessionFd = openSync(fpath, "a");
60
+ this.activePaths.add(fpath);
49
61
  this.sessionFileSize = existsSync(fpath) ? statSync(fpath).size : 0;
50
62
  }
51
63
  catch {
52
64
  this.sessionFd = null;
53
65
  }
54
66
  }
55
- cleanupStaleFiles() {
56
- const cutoff = Date.now() - RETENTION_DAYS * 24 * 60 * 60 * 1000;
57
- try {
58
- if (existsSync(this.tracesDir)) {
59
- for (const dir of readdirSync(this.tracesDir)) {
60
- const dp = join(this.tracesDir, dir);
61
- try {
62
- if (statSync(dp).isDirectory() && statSync(dp).mtimeMs < cutoff) {
63
- rmSync(dp, { recursive: true, force: true });
64
- }
65
- }
66
- catch { /* skip individual entry errors */ }
67
- }
68
- }
69
- if (existsSync(this.sessionsDir)) {
70
- for (const f of readdirSync(this.sessionsDir)) {
71
- const fp = join(this.sessionsDir, f);
72
- try {
73
- if (existsSync(fp) && statSync(fp).mtimeMs < cutoff) {
74
- rmSync(fp, { force: true });
75
- }
76
- }
77
- catch { /* skip */ }
78
- }
79
- }
80
- }
81
- catch { /* best effort */ }
82
- }
83
67
  // ── Public API ──
84
68
  startRun(meta) {
85
69
  if (this.noop)
@@ -244,6 +228,7 @@ export class LogWriter {
244
228
  catch { }
245
229
  this.sessionFd = null;
246
230
  }
231
+ this.activePaths.clear();
247
232
  }
248
233
  // ── Private helpers ──
249
234
  writeSpan(data, overrideRunId) {
@@ -257,17 +242,8 @@ export class LogWriter {
257
242
  const fname = `${resolvedRunId || "orphan"}.jsonl`;
258
243
  const fpath = join(traceDayDir, fname);
259
244
  // Rotate if too large
260
- if (existsSync(fpath) && statSync(fpath).size > MAX_FILE_BYTES) {
261
- const base = fname.replace(".jsonl", "");
262
- let n = 2;
263
- while (existsSync(join(traceDayDir, `${base}.${n}.jsonl`)))
264
- n++;
265
- try {
266
- rmSync(fpath, { force: true });
267
- }
268
- catch { } // write fresh — large files already rotated
269
- // Alternative: rename to keep old content
270
- }
245
+ rotateDiagnosticLogFile({ path: fpath, maxBytes: MAX_FILE_BYTES, maxFiles: MAX_ARCHIVE_FILES });
246
+ this.activePaths.add(fpath);
271
247
  try {
272
248
  appendFileSync(fpath, JSON.stringify(data) + "\n", "utf-8");
273
249
  }
@@ -278,6 +254,8 @@ export class LogWriter {
278
254
  writeSessionEvent(data) {
279
255
  const today = new Date().toISOString().slice(0, 10);
280
256
  if (today !== this.sessionDate) {
257
+ const previous = join(this.sessionsDir, `${this.sessionDate}-session.jsonl`);
258
+ this.activePaths.delete(previous);
281
259
  this.sessionDate = today;
282
260
  if (this.sessionFd !== null) {
283
261
  try {
@@ -296,7 +274,9 @@ export class LogWriter {
296
274
  closeSync(this.sessionFd);
297
275
  const n = Date.now();
298
276
  const fname = `${today}-session.${n}.jsonl`;
299
- this.sessionFd = openSync(join(this.sessionsDir, fname), "a");
277
+ const rotatedPath = join(this.sessionsDir, fname);
278
+ this.sessionFd = openSync(rotatedPath, "a");
279
+ this.activePaths.add(rotatedPath);
300
280
  this.sessionFileSize = 0;
301
281
  }
302
282
  }
@@ -308,7 +288,14 @@ export class LogWriter {
308
288
  }
309
289
  writeLine(fpath, data) {
310
290
  try {
311
- appendFileSync(fpath, JSON.stringify(data) + "\n", "utf-8");
291
+ const line = JSON.stringify(data) + "\n";
292
+ rotateDiagnosticLogFile({
293
+ path: fpath,
294
+ maxBytes: MAX_FILE_BYTES,
295
+ maxFiles: MAX_ARCHIVE_FILES,
296
+ incomingBytes: Buffer.byteLength(line),
297
+ });
298
+ appendFileSync(fpath, line, "utf-8");
312
299
  }
313
300
  catch { /* best effort */ }
314
301
  }
@@ -1 +1 @@
1
- {"version":3,"file":"log-writer.js","sourceRoot":"","sources":["../src/log-writer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"log-writer.js","sourceRoot":"","sources":["../src/log-writer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devflow-tools/telemetry",
3
- "version": "0.18.0",
3
+ "version": "0.18.2",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -17,8 +17,8 @@
17
17
  "clean": "rm -rf dist"
18
18
  },
19
19
  "dependencies": {
20
- "@devflow-tools/database": "0.18.0",
21
- "@devflow-tools/sdk": "0.18.0"
20
+ "@devflow-tools/database": "0.18.2",
21
+ "@devflow-tools/sdk": "0.18.2"
22
22
  },
23
23
  "devDependencies": {
24
24
  "typescript": "^5.5.0",