From 929dc2ac5a5049dea3d9206fc1d0ca606997aed4 Mon Sep 17 00:00:00 2001 From: ejclaw Date: Tue, 28 Apr 2026 21:58:02 +0900 Subject: [PATCH] Extract config path loading --- quality/code-quality-budgets.json | 4 --- src/config/load-config.ts | 52 +++++++++++++++++-------------- 2 files changed, 29 insertions(+), 27 deletions(-) diff --git a/quality/code-quality-budgets.json b/quality/code-quality-budgets.json index 27127e3..b812b6b 100644 --- a/quality/code-quality-budgets.json +++ b/quality/code-quality-budgets.json @@ -72,10 +72,6 @@ "maxFunctionLines": 277, "owner": "codex warmup test hotspot" }, - "src/config/load-config.ts": { - "maxFunctionLines": 187, - "owner": "config loading hotspot" - }, "src/db/base-schema.ts": { "maxFunctionLines": 436, "owner": "db schema hotspot" diff --git a/src/config/load-config.ts b/src/config/load-config.ts index cee46da..a077c71 100644 --- a/src/config/load-config.ts +++ b/src/config/load-config.ts @@ -135,6 +135,34 @@ function assertNoLegacyEnvAliasesConfigured(): void { ); } +function buildPathsConfig( + projectRoot: string, + homeDir: string, +): AppConfig['paths'] { + return { + projectRoot, + homeDir, + senderAllowlistPath: path.join( + homeDir, + '.config', + 'ejclaw', + 'sender-allowlist.json', + ), + storeDir: path.resolve( + readNonEmptyText('EJCLAW_STORE_DIR') ?? path.join(projectRoot, 'store'), + ), + groupsDir: path.resolve( + readNonEmptyText('EJCLAW_GROUPS_DIR') ?? path.join(projectRoot, 'groups'), + ), + dataDir: path.resolve( + readNonEmptyText('EJCLAW_DATA_DIR') ?? path.join(projectRoot, 'data'), + ), + cacheDir: path.resolve( + readNonEmptyText('EJCLAW_CACHE_DIR') ?? path.join(projectRoot, 'cache'), + ), + }; +} + export function loadConfig(): AppConfig { assertNoLegacyEnvAliasesConfigured(); @@ -176,29 +204,7 @@ export function loadConfig(): AppConfig { codexMainId: codexMainServiceId, codexReviewId: codexReviewServiceId, }, - paths: { - projectRoot, - homeDir, - senderAllowlistPath: path.join( - homeDir, - '.config', - 'ejclaw', - 'sender-allowlist.json', - ), - storeDir: path.resolve( - readNonEmptyText('EJCLAW_STORE_DIR') ?? path.join(projectRoot, 'store'), - ), - groupsDir: path.resolve( - readNonEmptyText('EJCLAW_GROUPS_DIR') ?? - path.join(projectRoot, 'groups'), - ), - dataDir: path.resolve( - readNonEmptyText('EJCLAW_DATA_DIR') ?? path.join(projectRoot, 'data'), - ), - cacheDir: path.resolve( - readNonEmptyText('EJCLAW_CACHE_DIR') ?? path.join(projectRoot, 'cache'), - ), - }, + paths: buildPathsConfig(projectRoot, homeDir), runtime: { pollInterval: 2000, schedulerPollInterval: 60000,