UNPKG

zon-format

Version:

ZON: The most token-efficient serialization format for LLMs - beats CSV, TOON, JSON, and all competitors

126 lines (125 loc) 4.34 kB
"use strict"; /** * Storage for Evaluation Results */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultStorage = exports.MemoryEvalStorage = exports.FileEvalStorage = void 0; const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); /** * File-based storage for evaluation results */ class FileEvalStorage { constructor(storageDir = './eval-results') { this.storageDir = storageDir; this.ensureDir(); } /** * Ensure storage directory exists */ ensureDir() { if (!fs_1.default.existsSync(this.storageDir)) { fs_1.default.mkdirSync(this.storageDir, { recursive: true }); } } /** * Save evaluation result */ async save(result) { const filename = `${result.testId}.json`; const filepath = path_1.default.join(this.storageDir, filename); fs_1.default.writeFileSync(filepath, JSON.stringify(result, null, 2), 'utf-8'); const latestFilename = `${result.config.name}-latest.json`; const latestFilepath = path_1.default.join(this.storageDir, latestFilename); fs_1.default.writeFileSync(latestFilepath, JSON.stringify(result, null, 2), 'utf-8'); } /** * Load evaluation result by test ID */ async load(testId) { const filename = `${testId}.json`; const filepath = path_1.default.join(this.storageDir, filename); if (!fs_1.default.existsSync(filepath)) { return null; } const content = fs_1.default.readFileSync(filepath, 'utf-8'); return JSON.parse(content); } /** * Get latest result for a config */ async getLatest(configName) { const filename = `${configName}-latest.json`; const filepath = path_1.default.join(this.storageDir, filename); if (!fs_1.default.existsSync(filepath)) { return null; } const content = fs_1.default.readFileSync(filepath, 'utf-8'); return JSON.parse(content); } /** * List all results */ async list(filter) { const files = fs_1.default.readdirSync(this.storageDir) .filter(f => f.endsWith('.json') && !f.endsWith('-latest.json')); let results = []; for (const file of files) { const filepath = path_1.default.join(this.storageDir, file); const content = fs_1.default.readFileSync(filepath, 'utf-8'); const result = JSON.parse(content); if ((filter === null || filter === void 0 ? void 0 : filter.configName) && result.config.name !== filter.configName) { continue; } results.push(result); } results.sort((a, b) => b.timestamp - a.timestamp); if (filter === null || filter === void 0 ? void 0 : filter.limit) { results = results.slice(0, filter.limit); } return results; } } exports.FileEvalStorage = FileEvalStorage; /** * In-memory storage for evaluation results (useful for testing) */ class MemoryEvalStorage { constructor() { this.results = new Map(); this.latest = new Map(); } async save(result) { this.results.set(result.testId, result); this.latest.set(result.config.name, result); } async load(testId) { return this.results.get(testId) || null; } async getLatest(configName) { return this.latest.get(configName) || null; } async list(filter) { let results = Array.from(this.results.values()); if (filter === null || filter === void 0 ? void 0 : filter.configName) { results = results.filter(r => r.config.name === filter.configName); } results.sort((a, b) => b.timestamp - a.timestamp); if (filter === null || filter === void 0 ? void 0 : filter.limit) { results = results.slice(0, filter.limit); } return results; } clear() { this.results.clear(); this.latest.clear(); } } exports.MemoryEvalStorage = MemoryEvalStorage; /** * Default storage instance */ exports.defaultStorage = new FileEvalStorage();