Этап 4 / Волна 10: корректировка settlement-кейса — доменная фиксация синтеза, честное покрытие, удержание фокуса / Этап 4 / Волна 11: бизнес-якоря, доменное заземление и устранение утечки дебага

This commit is contained in:
2026-03-28 02:17:19 +03:00
parent 914843a8ba
commit a06e575be4
367 changed files with 432257 additions and 3627 deletions
@@ -52,10 +52,22 @@ function redactSecrets(payload: Record<string, unknown>): Record<string, unknown
return output;
}
function isNoSpaceError(error: unknown): boolean {
const code = (error as { code?: unknown } | null)?.code;
return code === "ENOSPC";
}
export function saveTrace(record: TraceRecord): void {
ensureDir(TRACES_DIR);
const target = path.resolve(TRACES_DIR, `${record.trace_id}.json`);
writeJsonFile(target, record);
try {
ensureDir(TRACES_DIR);
const target = path.resolve(TRACES_DIR, `${record.trace_id}.json`);
writeJsonFile(target, record);
} catch (error) {
if (isNoSpaceError(error)) {
return;
}
throw error;
}
}
export function listTraces(limit = 100): HistoryListItem[] {
@@ -97,8 +109,15 @@ export function getTrace(traceId: string): TraceRecord | null {
}
export function savePreset(preset: PromptPreset): void {
ensureDir(PRESETS_DIR);
writeJsonFile(path.resolve(PRESETS_DIR, `${preset.id}.json`), preset);
try {
ensureDir(PRESETS_DIR);
writeJsonFile(path.resolve(PRESETS_DIR, `${preset.id}.json`), preset);
} catch (error) {
if (isNoSpaceError(error)) {
return;
}
throw error;
}
}
export function listPresets(): PromptPreset[] {
@@ -114,9 +133,15 @@ export function listPresets(): PromptPreset[] {
}
export function saveEvalCase(casePayload: Record<string, unknown>): string {
ensureDir(EVAL_CASES_DIR);
const id = String(casePayload.case_id ?? `NQ-${Date.now()}`);
writeJsonFile(path.resolve(EVAL_CASES_DIR, `${id}.json`), casePayload);
try {
ensureDir(EVAL_CASES_DIR);
writeJsonFile(path.resolve(EVAL_CASES_DIR, `${id}.json`), casePayload);
} catch (error) {
if (!isNoSpaceError(error)) {
throw error;
}
}
return id;
}