refactor(logging): split config + subsystem imports

This commit is contained in:
Peter Steinberger
2026-01-18 23:24:17 +00:00
parent ee36e12f81
commit 50fdd514ae
48 changed files with 109 additions and 72 deletions

22
src/logging/config.ts Normal file
View File

@@ -0,0 +1,22 @@
import fs from "node:fs";
import json5 from "json5";
import { resolveConfigPath } from "../config/paths.js";
import type { ClawdbotConfig } from "../config/types.js";
type LoggingConfig = ClawdbotConfig["logging"];
export function readLoggingConfig(): LoggingConfig | undefined {
const configPath = resolveConfigPath();
try {
if (!fs.existsSync(configPath)) return undefined;
const raw = fs.readFileSync(configPath, "utf-8");
const parsed = json5.parse(raw) as Record<string, unknown>;
const logging = parsed?.logging;
if (!logging || typeof logging !== "object" || Array.isArray(logging)) return undefined;
return logging as LoggingConfig;
} catch {
return undefined;
}
}

View File

@@ -1,11 +1,12 @@
import { createRequire } from "node:module";
import util from "node:util";
import type { ClawdbotConfig } from "../config/config.js";
import type { ClawdbotConfig } from "../config/types.js";
import { isVerbose } from "../globals.js";
import { stripAnsi } from "../terminal/ansi.js";
import { type LogLevel, normalizeLogLevel } from "./levels.js";
import { getLogger, type LoggerSettings } from "./logger.js";
import { readLoggingConfig } from "./config.js";
import { loggingState } from "./state.js";
export type ConsoleStyle = "pretty" | "compact" | "json";
@@ -31,10 +32,9 @@ function normalizeConsoleStyle(style?: string): ConsoleStyle {
}
function resolveConsoleSettings(): ConsoleSettings {
let cfg: ClawdbotConfig["logging"] | undefined;
if (loggingState.overrideSettings) {
cfg = loggingState.overrideSettings as LoggerSettings;
} else {
let cfg: ClawdbotConfig["logging"] | undefined =
(loggingState.overrideSettings as LoggerSettings | null) ?? readLoggingConfig();
if (!cfg) {
try {
const loaded = requireConfig("../config/config.js") as {
loadConfig?: () => ClawdbotConfig;

View File

@@ -4,9 +4,10 @@ import path from "node:path";
import { Logger as TsLogger } from "tslog";
import type { ClawdbotConfig } from "../config/config.js";
import type { ClawdbotConfig } from "../config/types.js";
import type { ConsoleStyle } from "./console.js";
import { type LogLevel, levelToMinLevel, normalizeLogLevel } from "./levels.js";
import { readLoggingConfig } from "./config.js";
import { loggingState } from "./state.js";
// Pin to /tmp so mac Debug UI and docs match; os.tmpdir() can be a per-user
@@ -36,10 +37,9 @@ type ResolvedSettings = {
export type LoggerResolvedSettings = ResolvedSettings;
function resolveSettings(): ResolvedSettings {
let cfg: ClawdbotConfig["logging"] | undefined;
if (loggingState.overrideSettings) {
cfg = loggingState.overrideSettings as LoggerSettings;
} else {
let cfg: ClawdbotConfig["logging"] | undefined =
(loggingState.overrideSettings as LoggerSettings | null) ?? readLoggingConfig();
if (!cfg) {
try {
const loaded = requireConfig("../config/config.js") as {
loadConfig?: () => ClawdbotConfig;