@hasna/evals 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +190 -0
- package/README.md +244 -0
- package/datasets/examples/mcp-eval.jsonl +3 -0
- package/datasets/examples/multi-turn.jsonl +3 -0
- package/datasets/examples/smoke.jsonl +5 -0
- package/datasets/examples/tool-use.jsonl +3 -0
- package/dist/adapters/adapters.test.d.ts +2 -0
- package/dist/adapters/adapters.test.d.ts.map +1 -0
- package/dist/adapters/anthropic.d.ts +4 -0
- package/dist/adapters/anthropic.d.ts.map +1 -0
- package/dist/adapters/cli.d.ts +4 -0
- package/dist/adapters/cli.d.ts.map +1 -0
- package/dist/adapters/function.d.ts +4 -0
- package/dist/adapters/function.d.ts.map +1 -0
- package/dist/adapters/http.d.ts +16 -0
- package/dist/adapters/http.d.ts.map +1 -0
- package/dist/adapters/mcp.d.ts +4 -0
- package/dist/adapters/mcp.d.ts.map +1 -0
- package/dist/adapters/openai.d.ts +4 -0
- package/dist/adapters/openai.d.ts.map +1 -0
- package/dist/cli/adapter-parser.d.ts +3 -0
- package/dist/cli/adapter-parser.d.ts.map +1 -0
- package/dist/cli/cli.test.d.ts +2 -0
- package/dist/cli/cli.test.d.ts.map +1 -0
- package/dist/cli/commands/calibrate.d.ts +3 -0
- package/dist/cli/commands/calibrate.d.ts.map +1 -0
- package/dist/cli/commands/capture.d.ts +3 -0
- package/dist/cli/commands/capture.d.ts.map +1 -0
- package/dist/cli/commands/ci.d.ts +3 -0
- package/dist/cli/commands/ci.d.ts.map +1 -0
- package/dist/cli/commands/compare.d.ts +3 -0
- package/dist/cli/commands/compare.d.ts.map +1 -0
- package/dist/cli/commands/doctor.d.ts +3 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/estimate.d.ts +3 -0
- package/dist/cli/commands/estimate.d.ts.map +1 -0
- package/dist/cli/commands/generate.d.ts +3 -0
- package/dist/cli/commands/generate.d.ts.map +1 -0
- package/dist/cli/commands/judge.d.ts +3 -0
- package/dist/cli/commands/judge.d.ts.map +1 -0
- package/dist/cli/commands/mcp.d.ts +3 -0
- package/dist/cli/commands/mcp.d.ts.map +1 -0
- package/dist/cli/commands/run.d.ts +3 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +18455 -0
- package/dist/core/assertions.d.ts +18 -0
- package/dist/core/assertions.d.ts.map +1 -0
- package/dist/core/assertions.test.d.ts +2 -0
- package/dist/core/assertions.test.d.ts.map +1 -0
- package/dist/core/e2e.test.d.ts +2 -0
- package/dist/core/e2e.test.d.ts.map +1 -0
- package/dist/core/judge.d.ts +13 -0
- package/dist/core/judge.d.ts.map +1 -0
- package/dist/core/judge.test.d.ts +2 -0
- package/dist/core/judge.test.d.ts.map +1 -0
- package/dist/core/reporter.d.ts +21 -0
- package/dist/core/reporter.d.ts.map +1 -0
- package/dist/core/runner.d.ts +4 -0
- package/dist/core/runner.d.ts.map +1 -0
- package/dist/core/runner.test.d.ts +2 -0
- package/dist/core/runner.test.d.ts.map +1 -0
- package/dist/datasets/loader.d.ts +18 -0
- package/dist/datasets/loader.d.ts.map +1 -0
- package/dist/datasets/loader.test.d.ts +2 -0
- package/dist/datasets/loader.test.d.ts.map +1 -0
- package/dist/db/store.d.ts +17 -0
- package/dist/db/store.d.ts.map +1 -0
- package/dist/db/store.test.d.ts +2 -0
- package/dist/db/store.test.d.ts.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22903 -0
- package/dist/mcp/index.d.ts +3 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +20120 -0
- package/dist/mcp/mcp.test.d.ts +2 -0
- package/dist/mcp/mcp.test.d.ts.map +1 -0
- package/dist/server/index.d.ts +3 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +22835 -0
- package/dist/types/index.d.ts +171 -0
- package/dist/types/index.d.ts.map +1 -0
- package/package.json +77 -0
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
export type Verdict = "PASS" | "FAIL" | "UNKNOWN";
|
|
2
|
+
export interface HttpAdapterConfig {
|
|
3
|
+
type: "http";
|
|
4
|
+
url: string;
|
|
5
|
+
method?: "GET" | "POST" | "PUT" | "PATCH";
|
|
6
|
+
headers?: Record<string, string>;
|
|
7
|
+
/** Path into request body where the input message goes, e.g. "messages[-1].content" */
|
|
8
|
+
inputPath?: string;
|
|
9
|
+
/** Path into response body where the output text lives, e.g. "choices[0].message.content" */
|
|
10
|
+
outputPath?: string;
|
|
11
|
+
timeoutMs?: number;
|
|
12
|
+
}
|
|
13
|
+
export interface AnthropicAdapterConfig {
|
|
14
|
+
type: "anthropic";
|
|
15
|
+
model: string;
|
|
16
|
+
systemPrompt?: string;
|
|
17
|
+
maxTokens?: number;
|
|
18
|
+
apiKey?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface OpenAIAdapterConfig {
|
|
21
|
+
type: "openai";
|
|
22
|
+
model: string;
|
|
23
|
+
systemPrompt?: string;
|
|
24
|
+
maxTokens?: number;
|
|
25
|
+
baseURL?: string;
|
|
26
|
+
apiKey?: string;
|
|
27
|
+
}
|
|
28
|
+
export interface McpAdapterConfig {
|
|
29
|
+
type: "mcp";
|
|
30
|
+
/** Command to start the MCP server, e.g. ["node", "dist/mcp/index.js"] */
|
|
31
|
+
command: string[];
|
|
32
|
+
/** Tool name to call */
|
|
33
|
+
tool: string;
|
|
34
|
+
/** How to map the EvalCase input into tool arguments */
|
|
35
|
+
inputMapping?: Record<string, string>;
|
|
36
|
+
timeoutMs?: number;
|
|
37
|
+
}
|
|
38
|
+
export interface FunctionAdapterConfig {
|
|
39
|
+
type: "function";
|
|
40
|
+
/** Absolute path to module */
|
|
41
|
+
modulePath: string;
|
|
42
|
+
/** Named export to call */
|
|
43
|
+
exportName?: string;
|
|
44
|
+
}
|
|
45
|
+
export interface CliAdapterConfig {
|
|
46
|
+
type: "cli";
|
|
47
|
+
/** Command template — use {{input}} as placeholder */
|
|
48
|
+
command: string;
|
|
49
|
+
timeoutMs?: number;
|
|
50
|
+
env?: Record<string, string>;
|
|
51
|
+
}
|
|
52
|
+
export type AdapterConfig = HttpAdapterConfig | AnthropicAdapterConfig | OpenAIAdapterConfig | McpAdapterConfig | FunctionAdapterConfig | CliAdapterConfig;
|
|
53
|
+
export type AssertionType = "contains" | "not_contains" | "starts_with" | "ends_with" | "equals" | "regex" | "not_regex" | "max_length" | "min_length" | "json_valid" | "json_schema" | "tool_called" | "tool_not_called" | "tool_call_count" | "tool_args_match" | "response_time_ms" | "token_count" | "cost_usd" | "semantic_similarity";
|
|
54
|
+
export interface Assertion {
|
|
55
|
+
type: AssertionType;
|
|
56
|
+
/** The value to check against — type depends on assertion type */
|
|
57
|
+
value?: string | number | boolean | Record<string, unknown>;
|
|
58
|
+
/** For range-based assertions */
|
|
59
|
+
min?: number;
|
|
60
|
+
max?: number;
|
|
61
|
+
/** For semantic_similarity — 0.0 to 1.0, default 0.8 */
|
|
62
|
+
threshold?: number;
|
|
63
|
+
/** Human-readable label for reports */
|
|
64
|
+
label?: string;
|
|
65
|
+
}
|
|
66
|
+
export interface AssertionResult {
|
|
67
|
+
type: AssertionType;
|
|
68
|
+
passed: boolean;
|
|
69
|
+
reason: string;
|
|
70
|
+
label?: string;
|
|
71
|
+
durationMs?: number;
|
|
72
|
+
}
|
|
73
|
+
export interface JudgeConfig {
|
|
74
|
+
/** Plain-English grading criteria. Required. */
|
|
75
|
+
rubric: string;
|
|
76
|
+
/** Judge model. Default: claude-sonnet-4-6 */
|
|
77
|
+
model?: string;
|
|
78
|
+
/** Judge provider. Default: anthropic */
|
|
79
|
+
provider?: "anthropic" | "openai";
|
|
80
|
+
/** API key override — falls back to env */
|
|
81
|
+
apiKey?: string;
|
|
82
|
+
}
|
|
83
|
+
export interface JudgeResult {
|
|
84
|
+
verdict: Verdict;
|
|
85
|
+
/** Chain-of-thought reasoning — always present before verdict */
|
|
86
|
+
reasoning: string;
|
|
87
|
+
durationMs: number;
|
|
88
|
+
inputTokens?: number;
|
|
89
|
+
outputTokens?: number;
|
|
90
|
+
costUsd?: number;
|
|
91
|
+
}
|
|
92
|
+
export interface ConversationTurn {
|
|
93
|
+
role: "user" | "assistant";
|
|
94
|
+
content: string;
|
|
95
|
+
/** For assistant turns: what the expected behavior should be (natural language) */
|
|
96
|
+
expected?: string;
|
|
97
|
+
}
|
|
98
|
+
export interface EvalCase {
|
|
99
|
+
id: string;
|
|
100
|
+
/** Single-turn: plain string input */
|
|
101
|
+
input?: string;
|
|
102
|
+
/** Multi-turn: conversation turns. If present, input is ignored. */
|
|
103
|
+
turns?: ConversationTurn[];
|
|
104
|
+
/** Natural language description of expected output (for judge) */
|
|
105
|
+
expected?: string;
|
|
106
|
+
/** Adapter config override — falls back to run-level config */
|
|
107
|
+
adapter?: AdapterConfig;
|
|
108
|
+
assertions?: Assertion[];
|
|
109
|
+
judge?: JudgeConfig;
|
|
110
|
+
/** Run this case N times and report pass_rate (Pass^k metric) */
|
|
111
|
+
repeat?: number;
|
|
112
|
+
/** Minimum pass rate for Pass^k to be considered passing (0.0–1.0, default 1.0) */
|
|
113
|
+
passThreshold?: number;
|
|
114
|
+
tags?: string[];
|
|
115
|
+
metadata?: Record<string, unknown>;
|
|
116
|
+
}
|
|
117
|
+
export interface EvalResult {
|
|
118
|
+
caseId: string;
|
|
119
|
+
verdict: Verdict;
|
|
120
|
+
/** Raw output from the app under test */
|
|
121
|
+
output: string;
|
|
122
|
+
/** For multi-turn: all turn outputs */
|
|
123
|
+
turnOutputs?: string[];
|
|
124
|
+
assertionResults: AssertionResult[];
|
|
125
|
+
judgeResult?: JudgeResult;
|
|
126
|
+
/** For Pass^k: individual verdicts per repeat */
|
|
127
|
+
repeatVerdicts?: Verdict[];
|
|
128
|
+
passRate?: number;
|
|
129
|
+
durationMs: number;
|
|
130
|
+
inputTokens?: number;
|
|
131
|
+
outputTokens?: number;
|
|
132
|
+
costUsd?: number;
|
|
133
|
+
error?: string;
|
|
134
|
+
}
|
|
135
|
+
export interface EvalRunStats {
|
|
136
|
+
total: number;
|
|
137
|
+
passed: number;
|
|
138
|
+
failed: number;
|
|
139
|
+
unknown: number;
|
|
140
|
+
errors: number;
|
|
141
|
+
passRate: number;
|
|
142
|
+
totalDurationMs: number;
|
|
143
|
+
totalCostUsd: number;
|
|
144
|
+
totalTokens: number;
|
|
145
|
+
}
|
|
146
|
+
export interface EvalRun {
|
|
147
|
+
id: string;
|
|
148
|
+
createdAt: string;
|
|
149
|
+
dataset: string;
|
|
150
|
+
adapterConfig?: AdapterConfig;
|
|
151
|
+
results: EvalResult[];
|
|
152
|
+
stats: EvalRunStats;
|
|
153
|
+
/** Named baseline tag if set */
|
|
154
|
+
baselineName?: string;
|
|
155
|
+
}
|
|
156
|
+
export interface RunOptions {
|
|
157
|
+
dataset: string;
|
|
158
|
+
adapter?: AdapterConfig;
|
|
159
|
+
concurrency?: number;
|
|
160
|
+
tags?: string[];
|
|
161
|
+
skipJudge?: boolean;
|
|
162
|
+
repeat?: number;
|
|
163
|
+
outputFormat?: "terminal" | "json" | "markdown";
|
|
164
|
+
verbose?: boolean;
|
|
165
|
+
}
|
|
166
|
+
export interface CiOptions extends RunOptions {
|
|
167
|
+
baselineName?: string;
|
|
168
|
+
baselineRunId?: string;
|
|
169
|
+
failIfRegressionPct?: number;
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@hasna/evals",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Open source AI evaluation framework — LLM-as-judge + assertion-based evals for any AI app. CLI + MCP server.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"bin": {
|
|
9
|
+
"evals": "dist/cli/index.js",
|
|
10
|
+
"evals-mcp": "dist/mcp/index.js",
|
|
11
|
+
"evals-serve": "dist/server/index.js"
|
|
12
|
+
},
|
|
13
|
+
"exports": {
|
|
14
|
+
".": {
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
|
+
"import": "./dist/index.js"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"files": [
|
|
20
|
+
"dist",
|
|
21
|
+
"datasets/examples",
|
|
22
|
+
"LICENSE",
|
|
23
|
+
"README.md"
|
|
24
|
+
],
|
|
25
|
+
"scripts": {
|
|
26
|
+
"build": "bun build src/cli/index.ts --outdir dist/cli --target bun --external ink --external react --external chalk --external @modelcontextprotocol/sdk && bun build src/mcp/index.ts --outdir dist/mcp --target bun --external @modelcontextprotocol/sdk && bun build src/server/index.ts --outdir dist/server --target bun && bun build src/index.ts --outdir dist --target bun && tsc --emitDeclarationOnly --outDir dist",
|
|
27
|
+
"typecheck": "tsc --noEmit",
|
|
28
|
+
"test": "bun test",
|
|
29
|
+
"dev:cli": "bun run src/cli/index.ts",
|
|
30
|
+
"dev:mcp": "bun run src/mcp/index.ts",
|
|
31
|
+
"dev:serve": "bun run src/server/index.ts",
|
|
32
|
+
"prepublishOnly": "bun run typecheck && bun test && bun run build",
|
|
33
|
+
"postinstall": "mkdir -p $HOME/.hasna/evals 2>/dev/null || true"
|
|
34
|
+
},
|
|
35
|
+
"keywords": [
|
|
36
|
+
"evals",
|
|
37
|
+
"llm",
|
|
38
|
+
"ai",
|
|
39
|
+
"testing",
|
|
40
|
+
"evaluation",
|
|
41
|
+
"mcp",
|
|
42
|
+
"claude",
|
|
43
|
+
"llm-as-judge",
|
|
44
|
+
"typescript",
|
|
45
|
+
"cli"
|
|
46
|
+
],
|
|
47
|
+
"publishConfig": {
|
|
48
|
+
"registry": "https://registry.npmjs.org",
|
|
49
|
+
"access": "public"
|
|
50
|
+
},
|
|
51
|
+
"repository": {
|
|
52
|
+
"type": "git",
|
|
53
|
+
"url": "https://github.com/hasna/open-evals.git"
|
|
54
|
+
},
|
|
55
|
+
"homepage": "https://github.com/hasna/open-evals",
|
|
56
|
+
"bugs": {
|
|
57
|
+
"url": "https://github.com/hasna/open-evals/issues"
|
|
58
|
+
},
|
|
59
|
+
"engines": {
|
|
60
|
+
"bun": ">=1.0.0"
|
|
61
|
+
},
|
|
62
|
+
"author": "Andrei Hasna <andrei@hasna.com>",
|
|
63
|
+
"license": "Apache-2.0",
|
|
64
|
+
"dependencies": {
|
|
65
|
+
"@anthropic-ai/sdk": "^0.39.0",
|
|
66
|
+
"@modelcontextprotocol/sdk": "^1.12.1",
|
|
67
|
+
"ajv": "^8.18.0",
|
|
68
|
+
"chalk": "^5.4.1",
|
|
69
|
+
"commander": "^13.1.0",
|
|
70
|
+
"openai": "^4.98.0",
|
|
71
|
+
"zod": "^3.24.2"
|
|
72
|
+
},
|
|
73
|
+
"devDependencies": {
|
|
74
|
+
"@types/bun": "^1.2.4",
|
|
75
|
+
"typescript": "^5.7.3"
|
|
76
|
+
}
|
|
77
|
+
}
|