/** * Configuração da extensão usage-panel. * * REGRA: toda a configuração vem de variáveis de ambiente. * A chave Kimi vem EXCLUSIVAMENTE de process.env.KIMI_CODE_API — * nunca ler arquivos de credenciais, nunca logar/imprimir a chave. */ import { homedir } from "node:os"; import { join } from "node:path"; export const DEFAULT_CACHE_TTL_MS = 60_000; export const DEFAULT_TIME_ZONE = "America/Fortaleza"; export const KIMI_MISSING_REASON = "indisponível: variável KIMI_CODE_API não definida"; export interface UsagePanelConfig { /** Chave Kimi (undefined quando ausente). NUNCA logar. */ kimiApiKey: string | undefined; cacheTtlMs: number; sessionsDir: string; timeZone: string; } export function loadConfig(env: Record = process.env): UsagePanelConfig { const ttlRaw = Number(env.PI_USAGE_CACHE_TTL_MS); const sessionsDir = env.PI_SESSIONS_DIR?.trim(); const timeZone = env.PI_USAGE_TIMEZONE?.trim(); return { kimiApiKey: env.KIMI_CODE_API?.trim() || undefined, cacheTtlMs: Number.isFinite(ttlRaw) && ttlRaw > 0 ? ttlRaw : DEFAULT_CACHE_TTL_MS, sessionsDir: sessionsDir || join(homedir(), ".pi", "agent", "sessions"), timeZone: timeZone || DEFAULT_TIME_ZONE, }; }