mirror of
https://github.com/KeygraphHQ/shannon.git
synced 2026-07-20 03:27:26 +02:00
c12eca046c
- Fix save_deliverable race condition using closure pattern instead of global variable - Fix error classification order so OutputValidationError matches before generic validation - Fix ApplicationFailure re-classification bug by checking instanceof before re-throwing - Add per-error-type retry limits (3 for output validation, 50 for billing) - Add fast retry intervals for pipeline testing mode (10s vs 5min) - Increase worker concurrent activities to 25 for parallel workflows
40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
// Copyright (C) 2025 Keygraph, Inc.
|
|
//
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU Affero General Public License version 3
|
|
// as published by the Free Software Foundation.
|
|
|
|
/**
|
|
* File Operations Utilities
|
|
*
|
|
* Handles file system operations for deliverable saving.
|
|
* Ported from tools/save_deliverable.js (lines 117-130).
|
|
*/
|
|
|
|
import { writeFileSync, mkdirSync } from 'fs';
|
|
import { join } from 'path';
|
|
|
|
/**
|
|
* Save deliverable file to deliverables/ directory
|
|
*
|
|
* @param targetDir - Target directory for deliverables (passed explicitly to avoid race conditions)
|
|
* @param filename - Name of the deliverable file
|
|
* @param content - File content to save
|
|
*/
|
|
export function saveDeliverableFile(targetDir: string, filename: string, content: string): string {
|
|
const deliverablesDir = join(targetDir, 'deliverables');
|
|
const filepath = join(deliverablesDir, filename);
|
|
|
|
// Ensure deliverables directory exists
|
|
try {
|
|
mkdirSync(deliverablesDir, { recursive: true });
|
|
} catch {
|
|
// Directory might already exist, ignore
|
|
}
|
|
|
|
// Write file (atomic write - single operation)
|
|
writeFileSync(filepath, content, 'utf8');
|
|
|
|
return filepath;
|
|
}
|