vskill 0.2.90 → 0.2.92

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.
@@ -2,7 +2,7 @@ import { describe, it, expect, beforeEach, afterEach } from "vitest";
2
2
  import { mkdirSync, rmSync, readFileSync } from "node:fs";
3
3
  import { join } from "node:path";
4
4
  import { tmpdir } from "node:os";
5
- import { writeHistoryEntry, listHistory, readHistoryEntry, computeRegressions, } from "../benchmark-history.js";
5
+ import { writeHistoryEntry, listHistory, readHistoryEntry, computeRegressions, getCaseHistory, } from "../benchmark-history.js";
6
6
  let testDir;
7
7
  const mkResult = (overrides = {}) => ({
8
8
  timestamp: "2026-03-08T12:00:00.000Z",
@@ -196,5 +196,134 @@ describe("benchmark-history", () => {
196
196
  expect(regressions).toEqual([]);
197
197
  });
198
198
  });
199
+ describe("listHistory with filters", () => {
200
+ beforeEach(async () => {
201
+ const r1 = mkResult({
202
+ timestamp: "2026-03-01T10:00:00.000Z",
203
+ model: "gpt-4o",
204
+ type: "benchmark",
205
+ });
206
+ const r2 = mkResult({
207
+ timestamp: "2026-03-05T10:00:00.000Z",
208
+ model: "sonnet",
209
+ type: "baseline",
210
+ });
211
+ const r3 = mkResult({
212
+ timestamp: "2026-03-08T10:00:00.000Z",
213
+ model: "gpt-4o",
214
+ type: "comparison",
215
+ });
216
+ await writeHistoryEntry(testDir, r1);
217
+ await writeHistoryEntry(testDir, r2);
218
+ await writeHistoryEntry(testDir, r3);
219
+ });
220
+ it("filters by model", async () => {
221
+ const list = await listHistory(testDir, { model: "gpt-4o" });
222
+ expect(list).toHaveLength(2);
223
+ expect(list.every((e) => e.model === "gpt-4o")).toBe(true);
224
+ });
225
+ it("filters by type", async () => {
226
+ const list = await listHistory(testDir, { type: "baseline" });
227
+ expect(list).toHaveLength(1);
228
+ expect(list[0].type).toBe("baseline");
229
+ expect(list[0].model).toBe("sonnet");
230
+ });
231
+ it("filters by date range", async () => {
232
+ const list = await listHistory(testDir, {
233
+ from: "2026-03-04T00:00:00.000Z",
234
+ to: "2026-03-06T00:00:00.000Z",
235
+ });
236
+ expect(list).toHaveLength(1);
237
+ expect(list[0].timestamp).toBe("2026-03-05T10:00:00.000Z");
238
+ });
239
+ it("returns all when no filters", async () => {
240
+ const list = await listHistory(testDir);
241
+ expect(list).toHaveLength(3);
242
+ });
243
+ it("combines model and type filters", async () => {
244
+ const list = await listHistory(testDir, { model: "gpt-4o", type: "benchmark" });
245
+ expect(list).toHaveLength(1);
246
+ expect(list[0].model).toBe("gpt-4o");
247
+ expect(list[0].type).toBe("benchmark");
248
+ expect(list[0].timestamp).toBe("2026-03-01T10:00:00.000Z");
249
+ });
250
+ });
251
+ describe("getCaseHistory", () => {
252
+ beforeEach(async () => {
253
+ const r1 = mkResult({
254
+ timestamp: "2026-03-01T10:00:00.000Z",
255
+ model: "gpt-4o",
256
+ cases: [
257
+ {
258
+ eval_id: 1,
259
+ eval_name: "test-case",
260
+ status: "pass",
261
+ error_message: null,
262
+ pass_rate: 1.0,
263
+ assertions: [
264
+ { id: "a1", text: "Check 1", pass: true, reasoning: "OK" },
265
+ ],
266
+ },
267
+ ],
268
+ });
269
+ const r2 = mkResult({
270
+ timestamp: "2026-03-05T10:00:00.000Z",
271
+ model: "sonnet",
272
+ cases: [
273
+ {
274
+ eval_id: 1,
275
+ eval_name: "test-case",
276
+ status: "fail",
277
+ error_message: null,
278
+ pass_rate: 0.5,
279
+ assertions: [
280
+ { id: "a1", text: "Check 1", pass: true, reasoning: "OK" },
281
+ { id: "a2", text: "Check 2", pass: false, reasoning: "Fail" },
282
+ ],
283
+ },
284
+ ],
285
+ });
286
+ const r3 = mkResult({
287
+ timestamp: "2026-03-08T10:00:00.000Z",
288
+ model: "gpt-4o",
289
+ cases: [
290
+ {
291
+ eval_id: 1,
292
+ eval_name: "test-case",
293
+ status: "pass",
294
+ error_message: null,
295
+ pass_rate: 1.0,
296
+ assertions: [
297
+ { id: "a1", text: "Check 1", pass: true, reasoning: "OK" },
298
+ { id: "a2", text: "Check 2", pass: true, reasoning: "OK" },
299
+ ],
300
+ },
301
+ ],
302
+ });
303
+ await writeHistoryEntry(testDir, r1);
304
+ await writeHistoryEntry(testDir, r2);
305
+ await writeHistoryEntry(testDir, r3);
306
+ });
307
+ it("returns cases from all files sorted newest-first", async () => {
308
+ const history = await getCaseHistory(testDir, 1);
309
+ expect(history).toHaveLength(3);
310
+ expect(history[0].timestamp).toBe("2026-03-08T10:00:00.000Z");
311
+ expect(history[1].timestamp).toBe("2026-03-05T10:00:00.000Z");
312
+ expect(history[2].timestamp).toBe("2026-03-01T10:00:00.000Z");
313
+ });
314
+ it("filters by model", async () => {
315
+ const history = await getCaseHistory(testDir, 1, { model: "gpt-4o" });
316
+ expect(history).toHaveLength(2);
317
+ expect(history.every((e) => e.model === "gpt-4o")).toBe(true);
318
+ });
319
+ it("returns empty array for missing eval_id", async () => {
320
+ const history = await getCaseHistory(testDir, 999);
321
+ expect(history).toEqual([]);
322
+ });
323
+ it("returns empty for nonexistent skill dir", async () => {
324
+ const history = await getCaseHistory(join(testDir, "nonexistent"), 1);
325
+ expect(history).toEqual([]);
326
+ });
327
+ });
199
328
  });
200
329
  //# sourceMappingURL=benchmark-history.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"benchmark-history.test.js","sourceRoot":"","sources":["../../../src/eval/__tests__/benchmark-history.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"benchmark-history.test.js","sourceRoot":"","sources":["../../../src/eval/__tests__/benchmark-history.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,301 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Integration tests for benchmark-runner.ts
3
+ // ---------------------------------------------------------------------------
4
+ import { describe, it, expect, vi, beforeEach } from "vitest";
5
+ // ---------------------------------------------------------------------------
6
+ // Mocks
7
+ // ---------------------------------------------------------------------------
8
+ vi.mock("../../eval/judge.js", () => ({
9
+ judgeAssertion: vi.fn(),
10
+ }));
11
+ vi.mock("../sse-helpers.js", () => ({
12
+ sendSSE: vi.fn(),
13
+ sendSSEDone: vi.fn(),
14
+ withHeartbeat: vi.fn((_res, _id, _phase, _msg, fn) => fn()),
15
+ }));
16
+ vi.mock("../../eval/benchmark-history.js", () => ({
17
+ writeHistoryEntry: vi.fn(),
18
+ }));
19
+ import { assembleBulkResult, runSingleCaseSSE } from "../benchmark-runner.js";
20
+ import { judgeAssertion } from "../../eval/judge.js";
21
+ import { sendSSE } from "../sse-helpers.js";
22
+ // ---------------------------------------------------------------------------
23
+ // Helpers
24
+ // ---------------------------------------------------------------------------
25
+ function makeCase(overrides = {}) {
26
+ return {
27
+ eval_id: 1,
28
+ eval_name: "test-case",
29
+ status: "pass",
30
+ error_message: null,
31
+ pass_rate: 1,
32
+ durationMs: 100,
33
+ tokens: 50,
34
+ inputTokens: 20,
35
+ outputTokens: 30,
36
+ output: "some output",
37
+ assertions: [
38
+ { id: "a1", text: "checks something", pass: true, reasoning: "ok" },
39
+ ],
40
+ ...overrides,
41
+ };
42
+ }
43
+ function makeEvalCase(overrides = {}) {
44
+ return {
45
+ id: 1,
46
+ name: "test eval",
47
+ prompt: "do something",
48
+ expected_output: "something done",
49
+ files: [],
50
+ assertions: [
51
+ { id: "a1", text: "output is correct", type: "boolean" },
52
+ ],
53
+ ...overrides,
54
+ };
55
+ }
56
+ function makeMockClient(overrides = {}) {
57
+ return {
58
+ model: "test-model",
59
+ generate: vi.fn().mockResolvedValue({
60
+ text: "generated output",
61
+ durationMs: 150,
62
+ inputTokens: 10,
63
+ outputTokens: 20,
64
+ }),
65
+ ...overrides,
66
+ };
67
+ }
68
+ function makeMockRes() {
69
+ return { write: vi.fn() };
70
+ }
71
+ // ---------------------------------------------------------------------------
72
+ // assembleBulkResult
73
+ // ---------------------------------------------------------------------------
74
+ describe("assembleBulkResult", () => {
75
+ const defaultMeta = {
76
+ model: "claude-sonnet",
77
+ skillName: "my-skill",
78
+ runType: "benchmark",
79
+ provider: "anthropic",
80
+ };
81
+ it("computes overall_pass_rate correctly from cases", () => {
82
+ const cases = [
83
+ makeCase({
84
+ assertions: [
85
+ { id: "a1", text: "x", pass: true, reasoning: "" },
86
+ { id: "a2", text: "y", pass: false, reasoning: "" },
87
+ ],
88
+ }),
89
+ makeCase({
90
+ eval_id: 2,
91
+ assertions: [
92
+ { id: "a3", text: "z", pass: true, reasoning: "" },
93
+ { id: "a4", text: "w", pass: true, reasoning: "" },
94
+ ],
95
+ }),
96
+ ];
97
+ const result = assembleBulkResult(cases, defaultMeta);
98
+ // 3 passed out of 4 total
99
+ expect(result.overall_pass_rate).toBe(0.75);
100
+ });
101
+ it("sets type from meta.runType", () => {
102
+ const result = assembleBulkResult([makeCase()], { ...defaultMeta, runType: "baseline" });
103
+ expect(result.type).toBe("baseline");
104
+ });
105
+ it("computes totalDurationMs from cases", () => {
106
+ const cases = [
107
+ makeCase({ durationMs: 200 }),
108
+ makeCase({ eval_id: 2, durationMs: 350 }),
109
+ ];
110
+ const result = assembleBulkResult(cases, defaultMeta);
111
+ expect(result.totalDurationMs).toBe(550);
112
+ });
113
+ it("computes totalInputTokens and totalOutputTokens when present", () => {
114
+ const cases = [
115
+ makeCase({ inputTokens: 10, outputTokens: 20 }),
116
+ makeCase({ eval_id: 2, inputTokens: 30, outputTokens: 40 }),
117
+ ];
118
+ const result = assembleBulkResult(cases, defaultMeta);
119
+ expect(result.totalInputTokens).toBe(40);
120
+ expect(result.totalOutputTokens).toBe(60);
121
+ });
122
+ it("sets totalInputTokens/totalOutputTokens to null when no cases have them", () => {
123
+ const cases = [
124
+ makeCase({ inputTokens: undefined, outputTokens: undefined }),
125
+ ];
126
+ const result = assembleBulkResult(cases, defaultMeta);
127
+ expect(result.totalInputTokens).toBeNull();
128
+ expect(result.totalOutputTokens).toBeNull();
129
+ });
130
+ it("returns 0 overall_pass_rate when there are no assertions", () => {
131
+ const cases = [makeCase({ assertions: [] })];
132
+ const result = assembleBulkResult(cases, defaultMeta);
133
+ expect(result.overall_pass_rate).toBe(0);
134
+ });
135
+ it("sets scope to bulk", () => {
136
+ const result = assembleBulkResult([makeCase()], defaultMeta);
137
+ expect(result.scope).toBe("bulk");
138
+ });
139
+ it("preserves model, skill_name, and provider from meta", () => {
140
+ const result = assembleBulkResult([makeCase()], defaultMeta);
141
+ expect(result.model).toBe("claude-sonnet");
142
+ expect(result.skill_name).toBe("my-skill");
143
+ expect(result.provider).toBe("anthropic");
144
+ });
145
+ });
146
+ // ---------------------------------------------------------------------------
147
+ // runSingleCaseSSE
148
+ // ---------------------------------------------------------------------------
149
+ describe("runSingleCaseSSE", () => {
150
+ beforeEach(() => {
151
+ vi.clearAllMocks();
152
+ });
153
+ it("emits case_start, output_ready, assertion_result, case_complete SSE events", async () => {
154
+ const res = makeMockRes();
155
+ const client = makeMockClient();
156
+ const evalCase = makeEvalCase();
157
+ vi.mocked(judgeAssertion).mockResolvedValue({
158
+ id: "a1",
159
+ text: "output is correct",
160
+ pass: true,
161
+ reasoning: "looks good",
162
+ });
163
+ await runSingleCaseSSE({
164
+ res,
165
+ evalCase,
166
+ systemPrompt: "you are a helper",
167
+ client,
168
+ isAborted: () => false,
169
+ });
170
+ const sseEvents = vi.mocked(sendSSE).mock.calls.map((c) => c[1]);
171
+ expect(sseEvents).toContain("case_start");
172
+ expect(sseEvents).toContain("output_ready");
173
+ expect(sseEvents).toContain("assertion_result");
174
+ expect(sseEvents).toContain("case_complete");
175
+ });
176
+ it("maps inputTokens and outputTokens from LLM result to BenchmarkCase", async () => {
177
+ const res = makeMockRes();
178
+ const client = makeMockClient({
179
+ model: "test-model",
180
+ generate: vi.fn().mockResolvedValue({
181
+ text: "output text",
182
+ durationMs: 200,
183
+ inputTokens: 42,
184
+ outputTokens: 58,
185
+ }),
186
+ });
187
+ const evalCase = makeEvalCase();
188
+ vi.mocked(judgeAssertion).mockResolvedValue({
189
+ id: "a1",
190
+ text: "output is correct",
191
+ pass: true,
192
+ reasoning: "ok",
193
+ });
194
+ const result = await runSingleCaseSSE({
195
+ res,
196
+ evalCase,
197
+ systemPrompt: "system",
198
+ client,
199
+ isAborted: () => false,
200
+ });
201
+ expect(result.inputTokens).toBe(42);
202
+ expect(result.outputTokens).toBe(58);
203
+ expect(result.tokens).toBe(100); // 42 + 58
204
+ });
205
+ it("handles LLM error gracefully (returns error status case)", async () => {
206
+ const res = makeMockRes();
207
+ const client = makeMockClient({
208
+ model: "test-model",
209
+ generate: vi.fn().mockRejectedValue(new Error("LLM timeout")),
210
+ });
211
+ const evalCase = makeEvalCase();
212
+ const result = await runSingleCaseSSE({
213
+ res,
214
+ evalCase,
215
+ systemPrompt: "system",
216
+ client,
217
+ isAborted: () => false,
218
+ });
219
+ expect(result.status).toBe("error");
220
+ expect(result.error_message).toBe("LLM timeout");
221
+ expect(result.pass_rate).toBe(0);
222
+ expect(result.assertions).toEqual([]);
223
+ });
224
+ it("sets status to fail when an assertion fails", async () => {
225
+ const res = makeMockRes();
226
+ const client = makeMockClient();
227
+ const evalCase = makeEvalCase({
228
+ assertions: [
229
+ { id: "a1", text: "first check", type: "boolean" },
230
+ { id: "a2", text: "second check", type: "boolean" },
231
+ ],
232
+ });
233
+ vi.mocked(judgeAssertion)
234
+ .mockResolvedValueOnce({ id: "a1", text: "first check", pass: true, reasoning: "ok" })
235
+ .mockResolvedValueOnce({ id: "a2", text: "second check", pass: false, reasoning: "nope" });
236
+ const result = await runSingleCaseSSE({
237
+ res,
238
+ evalCase,
239
+ systemPrompt: "system",
240
+ client,
241
+ isAborted: () => false,
242
+ });
243
+ expect(result.status).toBe("fail");
244
+ expect(result.pass_rate).toBe(0.5);
245
+ expect(result.assertions).toHaveLength(2);
246
+ });
247
+ it("stops evaluating assertions when aborted", async () => {
248
+ const res = makeMockRes();
249
+ const client = makeMockClient();
250
+ const evalCase = makeEvalCase({
251
+ assertions: [
252
+ { id: "a1", text: "first", type: "boolean" },
253
+ { id: "a2", text: "second", type: "boolean" },
254
+ ],
255
+ });
256
+ // Abort after the first assertion loop check
257
+ let callCount = 0;
258
+ const isAborted = () => {
259
+ callCount++;
260
+ return callCount > 1; // first call returns false, second returns true
261
+ };
262
+ vi.mocked(judgeAssertion).mockResolvedValue({
263
+ id: "a1",
264
+ text: "first",
265
+ pass: true,
266
+ reasoning: "ok",
267
+ });
268
+ const result = await runSingleCaseSSE({
269
+ res,
270
+ evalCase,
271
+ systemPrompt: "system",
272
+ client,
273
+ isAborted,
274
+ });
275
+ // Only one assertion should have been evaluated
276
+ expect(result.assertions).toHaveLength(1);
277
+ });
278
+ it("passes totalCases through to case_start event", async () => {
279
+ const res = makeMockRes();
280
+ const client = makeMockClient();
281
+ const evalCase = makeEvalCase();
282
+ vi.mocked(judgeAssertion).mockResolvedValue({
283
+ id: "a1",
284
+ text: "output is correct",
285
+ pass: true,
286
+ reasoning: "ok",
287
+ });
288
+ await runSingleCaseSSE({
289
+ res,
290
+ evalCase,
291
+ systemPrompt: "system",
292
+ client,
293
+ isAborted: () => false,
294
+ totalCases: 5,
295
+ });
296
+ const caseStartCall = vi.mocked(sendSSE).mock.calls.find((c) => c[1] === "case_start");
297
+ expect(caseStartCall).toBeDefined();
298
+ expect(caseStartCall[2].total).toBe(5);
299
+ });
300
+ });
301
+ //# sourceMappingURL=benchmark-runner.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"benchmark-runner.test.js","sourceRoot":"","sources":["../../../src/eval-server/__tests__/benchmark-runner.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vskill",
3
- "version": "0.2.90",
3
+ "version": "0.2.92",
4
4
  "type": "module",
5
5
  "description": "Secure multi-platform AI skill installer — scan before you install",
6
6
  "bin": {