For AI agents: the complete documentation index is available at https://viteval.dev/llms.txt, the full documentation bundle is available at https://viteval.dev/llms-full.txt, and this page is available as Markdown at https://viteval.dev/api/storage/provider-types.md.
V1 release candidate available.Migration guide →
GitHub

Provider types

Parameter and stored-record types for the provider interfaces. All types on this page are exported from viteval/provider.

Dataset parameters

interface CreateDatasetParams {
  name: string;
  description?: string;
  items?: {
    input: unknown;
    expected: unknown;
    extra?: Record<string, unknown>;
  }[];
  metadata?: Record<string, unknown>;
}

type GetDatasetParams =
  { id: string; name?: string } | { id?: string; name: string };

interface ListDatasetsParams {
  limit?: number;
  offset?: number;
}

interface UpdateDatasetParams {
  id: string;
  name?: string;
  description?: string;
  metadata?: Record<string, unknown>;
}

interface DeleteDatasetParams {
  id: string;
}

interface GetDatasetItemsParams {
  datasetId: string;
  limit?: number;
  offset?: number;
}

interface AddDatasetItemsParams {
  datasetId: string;
  items: {
    input: unknown;
    expected: unknown;
    extra?: Record<string, unknown>;
  }[];
}

get() requires an ID or a name. replaceItems() uses the same parameter type as addItems(). Additional case fields are stored in each item's extra object. Pagination defaults and supported update operations depend on the backend.

Evaluation parameters

interface CreateEvalRunParams {
  name: string;
  datasetId?: string;
  config: StoredEvalConfig;
  metadata?: Record<string, unknown>;
}

interface GetEvalRunParams {
  id: string;
  includeResults?: boolean;
}

interface ListEvalRunsParams {
  datasetId?: string;
  status?: 'running' | 'completed' | 'failed';
  limit?: number;
  offset?: number;
}

interface AddEvalResultParams {
  evalRunId: string;
  input: unknown;
  expected: unknown;
  output: unknown;
  scores: {
    name: string;
    score: number;
    metadata?: Record<string, unknown>;
  }[];
  meanScore: number;
  medianScore: number;
  sumScore: number;
  passed: boolean;
  duration?: number;
  metadata?: Record<string, unknown>;
}

interface CompleteEvalRunParams {
  id: string;
  status?: 'completed' | 'failed';
  summary: StoredEvalSummary;
}

Provider scores are numeric. The evaluator normalizes null scores to zero when persisting them. Provider records are not the same shape as JSON result snapshots.

Tag parameters

type TagEntityType = 'eval_run' | 'eval_result' | 'dataset' | 'dataset_item';

interface CreateTagParams {
  name: string;
  color?: string;
  description?: string;
}

interface UpdateTagParams {
  id: string;
  name?: string;
  color?: string;
  description?: string;
}

interface DeleteTagParams {
  id: string;
}

interface ListTagsParams {
  limit?: number;
  offset?: number;
}

interface AddTaggingParams {
  tagId: string;
  entityType: TagEntityType;
  entityId: string;
}

interface RemoveTaggingParams {
  tagId: string;
  entityType: TagEntityType;
  entityId: string;
}

interface ListTaggingsParams {
  entityType: TagEntityType;
  entityId: string;
}

interface ListEntitiesForTagParams {
  tagId: string;
  entityType?: TagEntityType;
}

Stored records

Record conventions
idstringrequired

Provider-assigned identifier. Related records refer to it through datasetId, evalRunId, or tagId.

metadataRecord<string, unknown>optional

Required on dataset, run, and result records. Optional in their creation parameters. Not every stored record has metadata.

Provider interfaces expose timestamps as Date objects. Serialized JSON uses ISO strings. Payload values must follow the selected backend's serialization rules.

Datasets and items

interface StoredDataset {
  id: string;
  name: string;
  description?: string;
  version: number;
  itemCount: number;
  metadata: Record<string, unknown>;
  createdAt: Date;
  updatedAt: Date;
}

interface StoredDataItem {
  id: string;
  datasetId: string;
  input: unknown;
  expected: unknown;
  extra: Record<string, unknown>;
  ordinal: number;
}

Runs, configuration, and summaries

interface StoredEvalRun {
  id: string;
  name: string;
  datasetId?: string;
  status: 'running' | 'completed' | 'failed';
  config: StoredEvalConfig;
  summary?: StoredEvalSummary;
  results?: StoredEvalResult[];
  metadata: Record<string, unknown>;
  startedAt: Date;
  completedAt?: Date;
}

interface StoredEvalConfig {
  aggregation: 'mean' | 'median' | 'sum';
  threshold: number;
  scorerNames: string[];
  timeout?: number;
}

interface StoredEvalSummary {
  meanScore: number;
  medianScore: number;
  sumScore: number;
  passedCount: number;
  failedCount: number;
  totalCount: number;
  passed: boolean;
}

Case results

interface StoredEvalResult {
  id: string;
  evalRunId: string;
  input: unknown;
  expected: unknown;
  output: unknown;
  scores: {
    name: string;
    score: number;
    metadata?: Record<string, unknown>;
  }[];
  meanScore: number;
  medianScore: number;
  sumScore: number;
  passed: boolean;
  duration?: number;
  metadata: Record<string, unknown>;
}

Tags and taggings

interface StoredTag {
  id: string;
  name: string;
  color?: string;
  description?: string;
  createdAt: Date;
}

interface StoredTagging {
  id: string;
  tagId: string;
  entityType: TagEntityType;
  entityId: string;
  createdAt: Date;
}