Skip to main content

Installation

npm install @geval-labs/core

Quick Start

import {
  parseContractFromYaml,
  parseEvalFile,
  evaluate,
  formatDecision,
} from "@geval-labs/core";
import { readFileSync } from "fs";

// Load contract
const contractYaml = readFileSync("contract.yaml", "utf-8");
const contract = parseContractFromYaml(contractYaml);

// Parse eval results
const csvContent = readFileSync("results.csv", "utf-8");
const evalResult = parseEvalFile(csvContent, "results.csv", contract);

// Evaluate
const decision = evaluate({
  contract,
  evalResults: [evalResult],
  baselines: {},
});

// Check result
console.log(decision.status); // "PASS" | "BLOCK" | "REQUIRES_APPROVAL"

// Format output
console.log(formatDecision(decision, { colors: true, verbose: true }));

Core Concepts

Contracts

Contracts define quality requirements:
import { parseContractFromYaml } from "@geval-labs/core";

const contract = parseContractFromYaml(contractYaml);

Eval Results

Eval results contain metrics from your evaluation runs:
import { parseEvalFile } from "@geval-labs/core";

const evalResult = parseEvalFile(csvContent, "results.csv", contract);

Evaluation

Evaluate contracts against results:
import { evaluate } from "@geval-labs/core";

const decision = evaluate({
  contract,
  evalResults: [evalResult],
  baselines: {},
});

Decisions

Decisions contain the evaluation outcome:
type Decision = {
  status: "PASS" | "BLOCK" | "REQUIRES_APPROVAL";
  contract: EvalContract;
  evals: EvalDecision[];
  violations: Violation[];
};

Common Use Cases

Validate Contract

import { validateContract } from "@geval-labs/core";

const errors = validateContract(contract);
if (errors.length > 0) {
  console.error("Contract validation failed:", errors);
}

Compare Eval Runs

import { diffEvalResults } from "@geval-labs/core";

const diff = diffEvalResults(previousResults, currentResults);
console.log(`Improved: ${diff.stats.improved}`);
console.log(`Regressed: ${diff.stats.regressed}`);

Parse Different Formats

import { parseEvalResult, GenericAdapter } from "@geval-labs/core";

// Auto-detect format
const result = parseEvalResult(anyEvalData);

// Use specific adapter
const adapter = new GenericAdapter();
const result = adapter.parse(customJsonData);

Next Steps