zon-format
Version:
ZON: The most token-efficient serialization format for LLMs - beats CSV, TOON, JSON, and all competitors
101 lines (100 loc) • 2.55 kB
JavaScript
;
/**
* Dataset Management for ZON Evaluations
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.globalRegistry = exports.DatasetRegistry = void 0;
exports.createDataset = createDataset;
/**
* Registry for managing evaluation datasets
*/
class DatasetRegistry {
constructor() {
this.datasets = new Map();
}
/**
* Register a dataset
*/
register(dataset) {
const key = `${dataset.id}@${dataset.version}`;
this.datasets.set(key, dataset);
}
/**
* Get a dataset by ID and optional version
*/
get(id, version) {
if (version) {
return this.datasets.get(`${id}@${version}`) || null;
}
const matching = Array.from(this.datasets.values())
.filter(d => d.id === id)
.sort((a, b) => this.compareVersions(b.version, a.version));
return matching[0] || null;
}
/**
* Get all datasets with a specific tag
*/
getByTag(tag) {
return Array.from(this.datasets.values())
.filter(d => d.tags.includes(tag));
}
/**
* Get all golden (baseline) datasets
*/
getGolden() {
return this.getByTag('golden');
}
/**
* List all registered datasets
*/
list() {
return Array.from(this.datasets.values());
}
/**
* Remove a dataset
*/
remove(id, version) {
return this.datasets.delete(`${id}@${version}`);
}
/**
* Clear all datasets
*/
clear() {
this.datasets.clear();
}
/**
* Compare semantic versions
*/
compareVersions(v1, v2) {
const parts1 = v1.split('.').map(Number);
const parts2 = v2.split('.').map(Number);
for (let i = 0; i < Math.max(parts1.length, parts2.length); i++) {
const p1 = parts1[i] || 0;
const p2 = parts2[i] || 0;
if (p1 > p2)
return 1;
if (p1 < p2)
return -1;
}
return 0;
}
}
exports.DatasetRegistry = DatasetRegistry;
/**
* Global dataset registry
*/
exports.globalRegistry = new DatasetRegistry();
/**
* Helper to create a dataset
*/
function createDataset(id, version, name, data, questions, options) {
return {
id,
version,
name,
data,
questions,
schema: options === null || options === void 0 ? void 0 : options.schema,
tags: (options === null || options === void 0 ? void 0 : options.tags) || []
};
}