Add shared parseBooleanValue()/isTruthyEnvValue() and apply across CLI, gateway, memory, and live-test flags for consistent env handling. Introduce route-first fast paths, lazy subcommand registration, and deferred plugin loading to reduce CLI startup overhead. Centralize config validation via ensureConfigReady() and add config caching/deferred shell env fallback for fewer IO passes. Harden logger initialization/imports and add focused tests for argv, boolean parsing, frontmatter, and CLI subcommands.
30 lines
857 B
TypeScript
30 lines
857 B
TypeScript
import fs from "node:fs";
|
|
import path from "node:path";
|
|
|
|
import { resolveStateDir } from "../config/paths.js";
|
|
import { isTruthyEnvValue } from "../infra/env.js";
|
|
|
|
const RAW_STREAM_ENABLED = isTruthyEnvValue(process.env.CLAWDBOT_RAW_STREAM);
|
|
const RAW_STREAM_PATH =
|
|
process.env.CLAWDBOT_RAW_STREAM_PATH?.trim() ||
|
|
path.join(resolveStateDir(), "logs", "raw-stream.jsonl");
|
|
|
|
let rawStreamReady = false;
|
|
|
|
export function appendRawStream(payload: Record<string, unknown>) {
|
|
if (!RAW_STREAM_ENABLED) return;
|
|
if (!rawStreamReady) {
|
|
rawStreamReady = true;
|
|
try {
|
|
fs.mkdirSync(path.dirname(RAW_STREAM_PATH), { recursive: true });
|
|
} catch {
|
|
// ignore raw stream mkdir failures
|
|
}
|
|
}
|
|
try {
|
|
void fs.promises.appendFile(RAW_STREAM_PATH, `${JSON.stringify(payload)}\n`);
|
|
} catch {
|
|
// ignore raw stream write failures
|
|
}
|
|
}
|