refactor: extract shared error detection and token rotation utilities (SSOT)

- Create agent-error-detection.ts: single source for error classification
  (isClaudeUsageExhaustedMessage, isClaudeAuthExpiredMessage, classifyAgentError, etc.)
- Create token-rotation-base.ts: shared rotation algorithm
  (parseRetryAfterFromError, computeCooldownUntil, findNextAvailable)
- Remove 6 duplicated functions from message-agent-executor and task-scheduler
- Delegate detectFallbackTrigger/detectCodexRotationTrigger to shared classifiers
- Split canFallback into isClaudeAgent/canRotateToken/canFallback (3-way separation)
- Cache env.ts with getEnv() to eliminate repeated disk I/O
- Migrate config, discord, provider-fallback, token-rotation, memento-client to getEnv()

Net: -146 lines, 0 new dependencies, 354/354 tests passing
This commit is contained in:
Eyejoker
2026-03-25 03:56:22 +09:00
parent 906a3dfadb
commit 80490ab162
5 changed files with 2 additions and 9 deletions

View File

@@ -70,8 +70,7 @@ export const STATUS_UPDATE_INTERVAL = 10000; // 10s
export const USAGE_UPDATE_INTERVAL = 300000; // 5 minutes
export const STATUS_SHOW_ROOMS =
(getEnv('STATUS_SHOW_ROOMS') || 'true') !== 'false';
export const USAGE_DASHBOARD_ENABLED =
getEnv('USAGE_DASHBOARD') === 'true';
export const USAGE_DASHBOARD_ENABLED = getEnv('USAGE_DASHBOARD') === 'true';
// Timezone for scheduled tasks (cron expressions, etc.)
// Uses system timezone by default