@ideonate/evals-viewer-core

Reusable Vue 3 components, composables, router factory, and inspector registry for the evals-viewer framework — a lightweight, configurable viewer for LLM evaluation results.
1,875
Install
npm install @ideonate/evals-viewer-core
Latest Version:0.3.9
Vue:3
License:MIT
Last Updated:Sep 3, 2026
Links: GitHub  ·  npm
Maintainer: danlester

@ideonate/evals-viewer-core

Reusable Vue 3 components, composables, and a router/registry factory for the evals-viewer framework — a lightweight, configurable viewer for LLM evaluation results.

This package contains the JS/Vue side of the framework. Pair it with @ideonate/evals-viewer-server for the filesystem-backed Vite plugin that serves eval result data, and (optionally) the Python evals-viewer-io package for writing those results from your test suite.

Install

npm install @ideonate/evals-viewer-core @ideonate/evals-viewer-server vue vue-router
npm install -D vite @vitejs/plugin-vue

Quickstart

// src/main.js
import { createApp, h } from "vue";
import {
  AppShell,
  createEvalsRouter,
  installInspectors,
  installCompares,
} from "@ideonate/evals-viewer-core";
import { inspectors, compares } from "./registry.js";

const app = createApp({
  render: () => h(AppShell, { title: "Evals Viewer" }),
});

app.use(createEvalsRouter());
installInspectors(app, inspectors);
installCompares(app, compares);
app.mount("#app");
// src/registry.js — auto-discover inspectors and compares from folders
import { inspectorsFromGlob } from "@ideonate/evals-viewer-core";

export const inspectors = inspectorsFromGlob(
  import.meta.glob("./inspectors/*.vue", { eager: true }),
);
export const compares = inspectorsFromGlob(
  import.meta.glob("./compares/*.vue", { eager: true }),
);

Drop a file at src/inspectors/{eval_name}.vue and it auto-registers as the custom viewer for the {eval_name} eval. Same for src/compares/{eval_name}.vue. No registration step needed.

Writing a custom inspector

<template>
  <CaseInspectorLayout v-bind="layoutProps">
    <template #meta><span>my badge</span></template>
    <pre>{{ caseData.output }}</pre>
  </CaseInspectorLayout>
</template>

<script setup>
import { computed } from "vue";
import { CaseInspectorLayout, useCaseInspector } from "@ideonate/evals-viewer-core";

const { loading, error, caseData, runId, evalName, caseName } = useCaseInspector();
const layoutProps = computed(() => ({
  runId: runId.value,
  evalName: evalName.value,
  caseName: caseName.value,
  loading: loading.value,
  error: error.value,
  caseData: caseData.value,
}));
</script>

caseData exposes output, caseInput, scores, judgeReasons, questionScores, integrity, plus any extras returned by your caseDataLoader hook on the server side.

Public API

import {
  // App shell + routing
  AppShell,
  createEvalsRouter,

  // Registry installation
  installInspectors,
  installCompares,
  inspectorsFromGlob,

  // Composable for inspector components
  useCaseInspector,
  CASE_INSPECTOR_DATA,

  // Layouts and base components
  CaseInspectorLayout,
  GenericCaseInspector,
  InspectorProvider,
  CaseCompareView,

  // Generic views
  EvalsList,
  EvalDetail,
  CompareEvals,

  // Helpers
  formatEvaluatorName,
  formatPercent,
  getScoreClass,
  formatDate,
} from "@ideonate/evals-viewer-core";

Documentation

License

MIT

Related Packages

@tato30/vue-pdf

PDF component for Vue 3

2,130,711 692
vue-pdf

vue.js pdf viewer

864,848 2,295
@teckel/vue-pdf

vue.js pdf viewer

163,440 2
vue3-xml-viewer

A Vue 3 component to display a formatted and colored XML document. The project i...

116,610 2
vue3-pdf

vue.js pdf viewer

12,460

Version History

Version Released Vue License
0.3.9 ^3.4.0 MIT
0.3.8 ^3.4.0 MIT
0.3.7 ^3.4.0 MIT
0.3.6 ^3.4.0 MIT
0.3.5 ^3.4.0 MIT