@cef-ai/cli 2.7.5 → 2.8.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.
Files changed (62) hide show
  1. package/README.md +15 -0
  2. package/dist/cli-program.d.ts +2 -0
  3. package/dist/cli-program.d.ts.map +1 -1
  4. package/dist/cli-program.js +17 -0
  5. package/dist/cli-program.js.map +1 -1
  6. package/dist/commands/cubby.d.ts +7 -0
  7. package/dist/commands/cubby.d.ts.map +1 -1
  8. package/dist/commands/cubby.js +8 -4
  9. package/dist/commands/cubby.js.map +1 -1
  10. package/dist/commands/eval.d.ts +217 -0
  11. package/dist/commands/eval.d.ts.map +1 -0
  12. package/dist/commands/eval.js +860 -0
  13. package/dist/commands/eval.js.map +1 -0
  14. package/dist/commands/eval.test.d.ts +2 -0
  15. package/dist/commands/eval.test.d.ts.map +1 -0
  16. package/dist/commands/eval.test.js +474 -0
  17. package/dist/commands/eval.test.js.map +1 -0
  18. package/dist/commands/push.d.ts +23 -0
  19. package/dist/commands/push.d.ts.map +1 -1
  20. package/dist/commands/push.js +70 -1
  21. package/dist/commands/push.js.map +1 -1
  22. package/dist/lib/access-token.d.ts +33 -0
  23. package/dist/lib/access-token.d.ts.map +1 -1
  24. package/dist/lib/access-token.js +89 -20
  25. package/dist/lib/access-token.js.map +1 -1
  26. package/dist/lib/bucket-owner.d.ts +45 -0
  27. package/dist/lib/bucket-owner.d.ts.map +1 -0
  28. package/dist/lib/bucket-owner.js +107 -0
  29. package/dist/lib/bucket-owner.js.map +1 -0
  30. package/dist/lib/ddc.d.ts +22 -0
  31. package/dist/lib/ddc.d.ts.map +1 -1
  32. package/dist/lib/ddc.js +72 -20
  33. package/dist/lib/ddc.js.map +1 -1
  34. package/dist/lib/eval-auth.d.ts +139 -0
  35. package/dist/lib/eval-auth.d.ts.map +1 -0
  36. package/dist/lib/eval-auth.js +385 -0
  37. package/dist/lib/eval-auth.js.map +1 -0
  38. package/dist/lib/eval-auth.test.d.ts +2 -0
  39. package/dist/lib/eval-auth.test.d.ts.map +1 -0
  40. package/dist/lib/eval-auth.test.js +192 -0
  41. package/dist/lib/eval-auth.test.js.map +1 -0
  42. package/dist/lib/eval-store.d.ts +62 -0
  43. package/dist/lib/eval-store.d.ts.map +1 -0
  44. package/dist/lib/eval-store.js +334 -0
  45. package/dist/lib/eval-store.js.map +1 -0
  46. package/dist/lib/eval-store.test.d.ts +2 -0
  47. package/dist/lib/eval-store.test.d.ts.map +1 -0
  48. package/dist/lib/eval-store.test.js +155 -0
  49. package/dist/lib/eval-store.test.js.map +1 -0
  50. package/dist/lib/eval-target.d.ts +122 -0
  51. package/dist/lib/eval-target.d.ts.map +1 -0
  52. package/dist/lib/eval-target.js +320 -0
  53. package/dist/lib/eval-target.js.map +1 -0
  54. package/dist/lib/eval-target.test.d.ts +2 -0
  55. package/dist/lib/eval-target.test.d.ts.map +1 -0
  56. package/dist/lib/eval-target.test.js +209 -0
  57. package/dist/lib/eval-target.test.js.map +1 -0
  58. package/dist/lib/eval-workflow.d.ts +24 -0
  59. package/dist/lib/eval-workflow.d.ts.map +1 -0
  60. package/dist/lib/eval-workflow.js +91 -0
  61. package/dist/lib/eval-workflow.js.map +1 -0
  62. package/package.json +8 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval.js","sourceRoot":"","sources":["../../src/commands/eval.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=eval.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval.test.d.ts","sourceRoot":"","sources":["../../src/commands/eval.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,474 @@
1
+ import { mkdir, mkdtemp, readdir, readFile, rm, writeFile } from "node:fs/promises";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { afterEach, beforeEach, describe, expect, it } from "vitest";
5
+ import { addCase, archiveCase, cutVersion, deleteCase, getCase, getHeader, loadWorkingSet, emptyMetrics, listCaseRevisions, listVersions, memoryStore, putExperiment, putRunRecord, saveCase, setBaseline, } from "@cef-ai/eval";
6
+ import { buildProgram } from "../cli-program.js";
7
+ import { resolveWorkflowId } from "../lib/eval-workflow.js";
8
+ import { evalCheckResult, evalCompare, evalCreate, evalMigrate, evalPull, evalPush, evalResultCheck, evalRun, formatComparison, formatCompatibility, formatDatasets, formatExperiments, formatMigration, formatResultCheck, resultFieldsFor, table, VERSIONS_FILE, } from "./eval.js";
9
+ const WF = "ticket-triage";
10
+ let dir;
11
+ beforeEach(async () => {
12
+ dir = await mkdtemp(path.join(os.tmpdir(), "cef-eval-"));
13
+ });
14
+ afterEach(async () => {
15
+ await rm(dir, { recursive: true, force: true });
16
+ });
17
+ async function seeded() {
18
+ const store = memoryStore();
19
+ await evalCreate({ store, dataset: "triage", workflowId: WF, description: "tickets" });
20
+ await addCase(store, WF, "triage", { id: "refund", input: { text: "refund please" }, expected: { category: "billing" } });
21
+ await addCase(store, WF, "triage", { id: "hello", input: { text: "hello" }, expected: { category: "other" } });
22
+ return store;
23
+ }
24
+ const caseFile = (id) => path.join(dir, "triage", "cases", `${id}.json`);
25
+ const readCase = async (id) => JSON.parse(await readFile(caseFile(id), "utf8"));
26
+ describe("the baseline", () => {
27
+ it("stays on the platform: pull leaves it out of the repo and push keeps the bucket's", async () => {
28
+ const store = await seeded();
29
+ await setBaseline(store, WF, "triage", "exp-a-aaaa");
30
+ await evalPull({ store, workflowId: WF, dataset: "triage", dir });
31
+ const headerFile = path.join(dir, "triage", "header.json");
32
+ expect(JSON.parse(await readFile(headerFile, "utf8"))).not.toHaveProperty("baselineId");
33
+ // A stale baseline written into the repo by hand is ignored too: alone, it is no header change.
34
+ const pulled = JSON.parse(await readFile(headerFile, "utf8"));
35
+ await writeFile(headerFile, JSON.stringify({ ...pulled, baselineId: "exp-b-bbbb" }));
36
+ expect((await evalPush({ store, workflowId: WF, dataset: "triage", dir })).headerUpdated).toBe(false);
37
+ await writeFile(headerFile, JSON.stringify({
38
+ ...JSON.parse(await readFile(headerFile, "utf8")), description: "edited", baselineId: "exp-b-bbbb",
39
+ }));
40
+ expect((await evalPush({ store, workflowId: WF, dataset: "triage", dir })).headerUpdated).toBe(true);
41
+ expect(await getHeader(store, WF, "triage")).toMatchObject({ description: "edited", baselineId: "exp-a-aaaa" });
42
+ });
43
+ });
44
+ describe("the workflow", () => {
45
+ it("refuses to push a dataset whose header names another workflow", async () => {
46
+ const store = await seeded();
47
+ await evalPull({ store, workflowId: WF, dataset: "triage", dir });
48
+ await expect(evalPush({ store, workflowId: "other", dataset: "triage", dir })).rejects.toThrow(/is for workflow "ticket-triage", not "other"/);
49
+ });
50
+ it("refuses to pull over a dataset dir whose header names another workflow", async () => {
51
+ const store = await seeded();
52
+ await evalPull({ store, workflowId: WF, dataset: "triage", dir });
53
+ await evalCreate({ store, dataset: "triage", workflowId: "other" });
54
+ await addCase(store, "other", "triage", { id: "theirs", input: {} });
55
+ await expect(evalPull({ store, workflowId: "other", dataset: "triage", dir }))
56
+ .rejects.toThrow(/is for workflow "ticket-triage", not "other"/);
57
+ expect((await readdir(path.join(dir, "triage", "cases"))).sort()).toEqual(["hello.json", "refund.json"]);
58
+ });
59
+ it("defaults to the one workflow the project declares: cef.config.ts first, then dist/", async () => {
60
+ const graphParams = { graph: { type: "string", default: "{}" } };
61
+ await mkdir(path.join(dir, "dist", "built"), { recursive: true });
62
+ await writeFile(path.join(dir, "dist", "built", "manifest.json"), JSON.stringify({ alias: "built", version: "1", params: graphParams }));
63
+ expect(await resolveWorkflowId(undefined, { cwd: dir })).toBe("built");
64
+ await writeFile(path.join(dir, "cef.config.ts"), "export default {}");
65
+ const loadConfigImpl = async () => ({ id: "configured", version: "1", entry: "x", params: graphParams });
66
+ expect(await resolveWorkflowId(undefined, { cwd: dir, loadConfigImpl })).toBe("configured");
67
+ expect(await resolveWorkflowId("explicit", { cwd: dir, loadConfigImpl })).toBe("explicit");
68
+ // An agent without a graph is not a workflow.
69
+ const notWorkflow = async () => ({ id: "plain", version: "1", entry: "x" });
70
+ expect(await resolveWorkflowId(undefined, { cwd: dir, loadConfigImpl: notWorkflow })).toBe("built");
71
+ await mkdir(path.join(dir, "dist", "second"), { recursive: true });
72
+ await writeFile(path.join(dir, "dist", "second", "manifest.json"), JSON.stringify({ alias: "second", params: graphParams }));
73
+ await expect(resolveWorkflowId(undefined, { cwd: dir, loadConfigImpl: notWorkflow })).rejects.toThrow(/several workflows \(built, second\)/);
74
+ });
75
+ });
76
+ describe("pull", () => {
77
+ it("writes the header, one file per live case, and what was pulled", async () => {
78
+ const store = await seeded();
79
+ await cutVersion(store, WF, "triage", { note: "first" });
80
+ const r = await evalPull({ store, workflowId: WF, dataset: "triage", dir });
81
+ expect(r.cases).toBe(2);
82
+ expect((await readdir(path.join(dir, "triage", "cases"))).sort()).toEqual(["hello.json", "refund.json"]);
83
+ expect(await readCase("refund")).toEqual({ id: "refund", input: { text: "refund please" }, expected: { category: "billing" } });
84
+ const header = JSON.parse(await readFile(path.join(dir, "triage", "header.json"), "utf8"));
85
+ expect(header).toMatchObject({ dataset: "triage", workflowId: "ticket-triage", description: "tickets" });
86
+ const state = JSON.parse(await readFile(path.join(dir, "triage", VERSIONS_FILE), "utf8"));
87
+ expect(state).toMatchObject({ dataset: "triage", cases: { hello: 1, refund: 1 }, versions: [{ version: 1, note: "first", cases: 2 }] });
88
+ });
89
+ it("removes a pulled case file that is no longer live, and never touches one it did not pull", async () => {
90
+ const store = await seeded();
91
+ await evalPull({ store, workflowId: WF, dataset: "triage", dir });
92
+ await deleteCase(store, WF, "triage", "hello");
93
+ // A case being added in the repo, not pushed yet.
94
+ await writeFile(caseFile("drafted"), JSON.stringify({ id: "drafted", input: {} }));
95
+ const r = await evalPull({ store, workflowId: WF, dataset: "triage", dir });
96
+ expect(r).toMatchObject({ removed: ["hello"], localOnly: ["drafted"] });
97
+ expect((await readdir(path.join(dir, "triage", "cases"))).sort()).toEqual(["drafted.json", "refund.json"]);
98
+ // Still local-only on the next pull: it is not in the pulled state.
99
+ expect((await evalPull({ store, workflowId: WF, dataset: "triage", dir })).localOnly).toEqual(["drafted"]);
100
+ });
101
+ });
102
+ describe("pull over local edits", () => {
103
+ const edit = async (id, text) => {
104
+ const c = await readCase(id);
105
+ await writeFile(caseFile(id), JSON.stringify({ ...c, input: { text } }));
106
+ };
107
+ it("refuses to overwrite a case edited locally and in the bucket, writing nothing; --force overwrites", async () => {
108
+ const store = await seeded();
109
+ await evalPull({ store, workflowId: WF, dataset: "triage", dir });
110
+ await edit("refund", "local edit");
111
+ await saveCase(store, WF, "triage", { id: "refund", input: { text: "bucket edit" }, expected: { category: "billing" } });
112
+ await saveCase(store, WF, "triage", { id: "hello", input: { text: "hello there" }, expected: { category: "other" } });
113
+ const stateBefore = await readFile(path.join(dir, "triage", VERSIONS_FILE), "utf8");
114
+ await expect(evalPull({ store, workflowId: WF, dataset: "triage", dir }))
115
+ .rejects.toThrow(/edited since the last pull\/push and differ from the bucket:\n {2}refund\n[\s\S]*--force/);
116
+ // Nothing written: neither the edited file, nor the other case, nor the state.
117
+ expect((await readCase("refund")).input).toEqual({ text: "local edit" });
118
+ expect((await readCase("hello")).input).toEqual({ text: "hello" });
119
+ expect(await readFile(path.join(dir, "triage", VERSIONS_FILE), "utf8")).toBe(stateBefore);
120
+ await evalPull({ store, workflowId: WF, dataset: "triage", dir, force: true });
121
+ expect((await readCase("refund")).input).toEqual({ text: "bucket edit" });
122
+ });
123
+ it("refuses to overwrite an unpushed local edit even when the bucket did not change", async () => {
124
+ const store = await seeded();
125
+ await evalPull({ store, workflowId: WF, dataset: "triage", dir });
126
+ await edit("refund", "local edit");
127
+ await expect(evalPull({ store, workflowId: WF, dataset: "triage", dir })).rejects.toThrow(/\n {2}refund\n/);
128
+ });
129
+ it("overwrites a stale, unedited copy, and accepts a local edit that already matches the bucket", async () => {
130
+ const store = await seeded();
131
+ await evalPull({ store, workflowId: WF, dataset: "triage", dir });
132
+ await saveCase(store, WF, "triage", { id: "refund", input: { text: "bucket edit" }, expected: { category: "billing" } });
133
+ // hello edited locally to exactly what the bucket now holds, key order aside.
134
+ await saveCase(store, WF, "triage", { id: "hello", input: { text: "hi" }, expected: { category: "other" } });
135
+ await writeFile(caseFile("hello"), JSON.stringify({ input: { text: "hi" }, id: "hello", expected: { category: "other" } }));
136
+ await evalPull({ store, workflowId: WF, dataset: "triage", dir });
137
+ expect((await readCase("refund")).input).toEqual({ text: "bucket edit" });
138
+ expect((await readCase("hello")).input).toEqual({ text: "hi" });
139
+ });
140
+ it("does not count a pushed edit as unpushed", async () => {
141
+ const store = await seeded();
142
+ await evalPull({ store, workflowId: WF, dataset: "triage", dir });
143
+ await edit("refund", "pushed edit");
144
+ await evalPush({ store, workflowId: WF, dataset: "triage", dir });
145
+ await saveCase(store, WF, "triage", { id: "refund", input: { text: "bucket edit" }, expected: { category: "billing" } });
146
+ await evalPull({ store, workflowId: WF, dataset: "triage", dir });
147
+ expect((await readCase("refund")).input).toEqual({ text: "bucket edit" });
148
+ });
149
+ it("refuses to remove an edited case file whose case was deleted in the bucket", async () => {
150
+ const store = await seeded();
151
+ await evalPull({ store, workflowId: WF, dataset: "triage", dir });
152
+ await edit("hello", "local edit");
153
+ await deleteCase(store, WF, "triage", "hello");
154
+ await expect(evalPull({ store, workflowId: WF, dataset: "triage", dir })).rejects.toThrow(/hello \(removed in the bucket\)/);
155
+ expect((await readCase("hello")).input).toEqual({ text: "local edit" });
156
+ expect((await evalPull({ store, workflowId: WF, dataset: "triage", dir, force: true })).removed).toEqual(["hello"]);
157
+ });
158
+ it("falls back to the pulled revision's content for a .versions.json written before hashes", async () => {
159
+ const store = await seeded();
160
+ await evalPull({ store, workflowId: WF, dataset: "triage", dir });
161
+ const stateFile = path.join(dir, "triage", VERSIONS_FILE);
162
+ const { hashes: _h, ...legacy } = JSON.parse(await readFile(stateFile, "utf8"));
163
+ await writeFile(stateFile, JSON.stringify(legacy));
164
+ await saveCase(store, WF, "triage", { id: "hello", input: { text: "bucket edit" }, expected: { category: "other" } });
165
+ await saveCase(store, WF, "triage", { id: "refund", input: { text: "bucket edit" }, expected: { category: "billing" } });
166
+ await edit("refund", "local edit");
167
+ // refund: edited locally → refused; hello: an unedited stale copy, not reported.
168
+ await expect(evalPull({ store, workflowId: WF, dataset: "triage", dir })).rejects.toThrow(/:\n {2}refund\nNothing/);
169
+ });
170
+ });
171
+ describe("push", () => {
172
+ it("writes a new revision only for a case that changed, adds new ones, and cuts a version", async () => {
173
+ const store = await seeded();
174
+ await evalPull({ store, workflowId: WF, dataset: "triage", dir });
175
+ await writeFile(caseFile("refund"), JSON.stringify({ ...(await readCase("refund")), expected: { category: { $oneOf: ["billing", "refunds"] } } }));
176
+ await writeFile(caseFile("angry"), JSON.stringify({ id: "angry", input: { text: "!!!" }, expected: { category: "other" } }));
177
+ const r = await evalPush({ store, workflowId: WF, dataset: "triage", dir, cut: "edited in git" });
178
+ expect(r).toMatchObject({
179
+ created: false, headerUpdated: false, added: ["angry"], updated: [{ id: "refund", rev: 2 }], unchanged: ["hello"],
180
+ missingLocally: [], cut: { version: 1, cases: 3 },
181
+ });
182
+ expect(await listCaseRevisions(store, WF, "triage", "hello")).toEqual([1]);
183
+ expect((await listVersions(store, WF, "triage"))[0].note).toBe("edited in git");
184
+ const state = JSON.parse(await readFile(path.join(dir, "triage", VERSIONS_FILE), "utf8"));
185
+ expect(state.cases).toEqual({ angry: 1, hello: 1, refund: 2 });
186
+ });
187
+ it("refuses a case edited in the bucket since the pull, and writes nothing", async () => {
188
+ const store = await seeded();
189
+ await evalPull({ store, workflowId: WF, dataset: "triage", dir });
190
+ await saveCase(store, WF, "triage", { id: "refund", input: { text: "refund please" }, notes: "edited in ROC" });
191
+ await writeFile(caseFile("refund"), JSON.stringify({ ...(await readCase("refund")), notes: "edited in git" }));
192
+ await writeFile(caseFile("new"), JSON.stringify({ id: "new", input: {} }));
193
+ await expect(evalPush({ store, workflowId: WF, dataset: "triage", dir })).rejects.toThrow(/refund \(bucket r2, pulled r1\)/);
194
+ expect(await listCaseRevisions(store, WF, "triage", "new")).toEqual([]);
195
+ const forced = await evalPush({ store, workflowId: WF, dataset: "triage", dir, force: true });
196
+ expect(forced.updated).toEqual([{ id: "refund", rev: 3 }]);
197
+ });
198
+ it("keeps a case missing from the repo unless told to prune it", async () => {
199
+ const store = await seeded();
200
+ await evalPull({ store, workflowId: WF, dataset: "triage", dir });
201
+ await rm(caseFile("hello"));
202
+ expect((await evalPush({ store, workflowId: WF, dataset: "triage", dir })).missingLocally).toEqual(["hello"]);
203
+ expect((await evalPush({ store, workflowId: WF, dataset: "triage", dir, prune: true })).deleted).toEqual(["hello"]);
204
+ });
205
+ it("never prunes a case added in the bucket after the pull", async () => {
206
+ const store = await seeded();
207
+ await evalPull({ store, workflowId: WF, dataset: "triage", dir });
208
+ await addCase(store, WF, "triage", { id: "from-roc", input: { text: "added in ROC" } });
209
+ await rm(caseFile("hello"));
210
+ const r = await evalPush({ store, workflowId: WF, dataset: "triage", dir, prune: true });
211
+ expect(r).toMatchObject({ deleted: ["hello"], notPulled: ["from-roc"], missingLocally: [] });
212
+ expect(await getCase(store, WF, "triage", "from-roc")).not.toBeNull();
213
+ // And it stays unpulled: the next --prune leaves it alone too.
214
+ expect((await evalPush({ store, workflowId: WF, dataset: "triage", dir, prune: true })).deleted).toEqual([]);
215
+ expect(await getCase(store, WF, "triage", "from-roc")).not.toBeNull();
216
+ });
217
+ it("refuses to prune a case edited in the bucket since the pull, unless forced", async () => {
218
+ const store = await seeded();
219
+ await evalPull({ store, workflowId: WF, dataset: "triage", dir });
220
+ await saveCase(store, WF, "triage", { id: "hello", input: { text: "hello" }, notes: "edited in ROC" });
221
+ await rm(caseFile("hello"));
222
+ const refused = await evalPush({ store, workflowId: WF, dataset: "triage", dir, prune: true }).catch((e) => e.message);
223
+ expect(refused).toMatch(/hello \(removed from the repo, but bucket r2/);
224
+ // There is no repo version to write for a removed case: the remediation is prune's own, not the edit conflict's.
225
+ expect(refused).toMatch(/Pull to get the edited case back into the repo dir, or push with --prune --force to delete it/);
226
+ expect(refused).not.toMatch(/write the repo's version over them/);
227
+ expect(await getCase(store, WF, "triage", "hello")).not.toBeNull();
228
+ expect((await evalPush({ store, workflowId: WF, dataset: "triage", dir, prune: true, force: true })).deleted).toEqual(["hello"]);
229
+ });
230
+ it("refuses a repo case that is deleted or archived in the bucket, before writing anything", async () => {
231
+ const store = await seeded();
232
+ await evalPull({ store, workflowId: WF, dataset: "triage", dir });
233
+ await deleteCase(store, WF, "triage", "hello");
234
+ await archiveCase(store, WF, "triage", "refund");
235
+ const headerFile = path.join(dir, "triage", "header.json");
236
+ await writeFile(headerFile, JSON.stringify({ ...JSON.parse(await readFile(headerFile, "utf8")), description: "edited" }));
237
+ await writeFile(caseFile("new"), JSON.stringify({ id: "new", input: {} }));
238
+ const before = JSON.stringify(store.dump());
239
+ await expect(evalPush({ store, workflowId: WF, dataset: "triage", dir })).rejects.toThrow(/hello \(deleted\)\n {2}refund \(archived\)/);
240
+ // No partial writes: not the header, not the new case, not a revision of either hidden one.
241
+ expect(JSON.stringify(store.dump())).toBe(before);
242
+ // --force overwrites edits; it does not resurrect.
243
+ await expect(evalPush({ store, workflowId: WF, dataset: "triage", dir, force: true })).rejects.toThrow(/--restore/);
244
+ const r = await evalPush({ store, workflowId: WF, dataset: "triage", dir, restore: true });
245
+ expect(r).toMatchObject({ restored: ["hello", "refund"], added: ["new"], headerUpdated: true });
246
+ expect((await loadWorkingSet(store, WF, "triage")).cases.map((x) => x.case.id)).toEqual(["hello", "new", "refund"]);
247
+ });
248
+ it("creates the dataset from the repo dir, and updates the header's description", async () => {
249
+ const store = memoryStore();
250
+ const src = await seeded();
251
+ await evalPull({ store: src, workflowId: WF, dataset: "triage", dir });
252
+ const created = await evalPush({ store, workflowId: WF, dataset: "triage", dir });
253
+ expect(created).toMatchObject({ created: true, added: ["hello", "refund"] });
254
+ const headerFile = path.join(dir, "triage", "header.json");
255
+ const header = JSON.parse(await readFile(headerFile, "utf8"));
256
+ await writeFile(headerFile, JSON.stringify({ ...header, description: "support tickets", limits: { maxSteps: 5 } }));
257
+ expect((await evalPush({ store, workflowId: WF, dataset: "triage", dir })).headerUpdated).toBe(true);
258
+ });
259
+ it("creates a dataset from a hand-written header without createdAt, and does not rewrite it on the next push", async () => {
260
+ const store = memoryStore();
261
+ await mkdir(path.join(dir, "fresh", "cases"), { recursive: true });
262
+ await writeFile(path.join(dir, "fresh", "header.json"), JSON.stringify({ dataset: "fresh", workflowId: "wf" }));
263
+ await writeFile(path.join(dir, "fresh", "cases", "a.json"), JSON.stringify({ id: "a", input: {} }));
264
+ expect((await evalPush({ store, workflowId: "wf", dataset: "fresh", dir })).created).toBe(true);
265
+ expect((await evalPush({ store, workflowId: "wf", dataset: "fresh", dir })).headerUpdated).toBe(false);
266
+ });
267
+ it("refuses a case file whose name and id disagree", async () => {
268
+ const store = await seeded();
269
+ await evalPull({ store, workflowId: WF, dataset: "triage", dir });
270
+ await writeFile(caseFile("other-name"), JSON.stringify({ id: "refund", input: {} }));
271
+ await expect(evalPush({ store, workflowId: WF, dataset: "triage", dir })).rejects.toThrow(/file name must be <id>.json/);
272
+ });
273
+ });
274
+ describe("run and compare", () => {
275
+ const target = (category, durationMs) => {
276
+ const inputs = new Map();
277
+ return {
278
+ async start(input, context) {
279
+ inputs.set(context, input);
280
+ },
281
+ async waitForEnd(context) {
282
+ return { status: "done", output: { category: category(String(inputs.get(context)?.text)) } };
283
+ },
284
+ async metrics() {
285
+ return { ...emptyMetrics(), durationMs, totalTokens: durationMs / 10 };
286
+ },
287
+ };
288
+ };
289
+ it("runs the latest version (cut automatically), then shows a regression against the baseline", async () => {
290
+ const store = await seeded();
291
+ const good = (t) => (t.includes("refund") ? "billing" : "other");
292
+ const v1 = await evalRun({ store, workflowId: WF, target: target(good, 1000), dataset: "triage", workflowVersion: "1.0.0", live: true, repeats: 2 });
293
+ const v2 = await evalRun({
294
+ store, workflowId: WF, target: target(() => "other", 3000), dataset: "triage", workflowVersion: "2.0.0", live: true, repeats: 2, baselineId: v1.id,
295
+ });
296
+ expect(v1.summary).toMatchObject({ passRate: 1, runs: 4 });
297
+ expect([v1.datasetVersion, v2.datasetVersion]).toEqual([1, 1]);
298
+ expect(v2).toMatchObject({ baselineId: v1.id, summary: { passRate: 0.5 } });
299
+ const cmp = await evalCompare({ store, base: v1.id, candidate: v2.id });
300
+ expect(cmp.counts).toMatchObject({ regressed: 2, unchanged: 2 });
301
+ expect(cmp.metrics.durationP50).toMatchObject({ base: 1000, candidate: 3000, delta: 2000 });
302
+ const text = formatComparison(cmp);
303
+ expect(text).toContain("2 regressed");
304
+ expect(text).toMatch(/refund\s+1\s+regressed/);
305
+ expect(text).not.toContain("Dataset changed");
306
+ const list = formatExperiments([v1, v2], v1.id);
307
+ expect(list).toContain("50%");
308
+ expect(list).toContain(`★ ${v1.id}`);
309
+ expect(list).toContain("workflow 2.0.0 · dataset v1");
310
+ });
311
+ it("compares across dataset versions on the unchanged cases, and says what changed", async () => {
312
+ const store = await seeded();
313
+ const good = (t) => (t.includes("refund") ? "billing" : "other");
314
+ const v1 = await evalRun({ store, workflowId: WF, target: target(good, 1), dataset: "triage", workflowVersion: "1.0.0", live: true });
315
+ await saveCase(store, WF, "triage", { id: "hello", input: { text: "hello" }, expected: { category: "greeting" } });
316
+ await addCase(store, WF, "triage", { id: "new", input: { text: "new" } });
317
+ const v2 = await evalRun({ store, workflowId: WF, target: target(good, 1), dataset: "triage", workflowVersion: "1.0.0", live: true });
318
+ expect(v2.datasetVersion).toBe(2);
319
+ const cmp = await evalCompare({ store, base: v1.id, candidate: v2.id });
320
+ expect(cmp).toMatchObject({ datasetDiff: { added: ["new"], removed: [], edited: ["hello"] }, comparedOn: 1 });
321
+ expect(formatComparison(cmp)).toContain("Dataset changed between these experiments: 1 case added, 1 expectation edited. Compared on the 1 unchanged case.");
322
+ });
323
+ it("takes each experiment's cases from its dataset version, so a case with no run still counts as changed", async () => {
324
+ const store = await seeded();
325
+ const v1 = await cutVersion(store, WF, "triage");
326
+ await saveCase(store, WF, "triage", { id: "hello", input: { text: "hello" }, expected: { category: "greeting" } });
327
+ const v2 = await cutVersion(store, WF, "triage");
328
+ const meta = (id, datasetVersion) => ({
329
+ id, dataset: "triage", datasetVersion, workflowId: WF, workflowVersion: "1", repeats: 1,
330
+ startedAt: "t", status: "cancelled", origin: "cli",
331
+ });
332
+ const run = (caseId) => ({
333
+ caseId, caseRev: 1, repeat: 1, context: caseId, runId: caseId, status: "done", output: null,
334
+ startedAt: "t", endedAt: "t", metrics: emptyMetrics(), scores: [], pass: true,
335
+ });
336
+ await putExperiment(store, meta("exp-a-aaaa", v1.version));
337
+ await putRunRecord(store, WF, "exp-a-aaaa", run("hello"));
338
+ await putRunRecord(store, WF, "exp-a-aaaa", run("refund"));
339
+ // Cancelled before it ran the edited case: only its version knows hello is at r2.
340
+ await putExperiment(store, meta("exp-b-aaaa", v2.version));
341
+ await putRunRecord(store, WF, "exp-b-aaaa", run("refund"));
342
+ const cmp = await evalCompare({ store, base: "exp-a-aaaa", candidate: "exp-b-aaaa" });
343
+ expect(cmp).toMatchObject({ datasetDiff: { added: [], removed: [], edited: ["hello"] }, comparedOn: 1 });
344
+ });
345
+ it("scores expectations a version's Result rules out as n/a, and warns about them up front", async () => {
346
+ const store = await seeded();
347
+ const resultFields = [{ name: "label", type: "string" }];
348
+ const fit = await evalCheckResult({ store, workflowId: WF, dataset: "triage", resultFields });
349
+ expect(fit).toEqual({ missing: [{ field: "category", caseIds: ["hello", "refund"] }], typeChanged: [], unexpectedNew: ["label"] });
350
+ expect(formatCompatibility(fit, "2.0.0")).toEqual([
351
+ "2 dataset cases expect `category`, which 2.0.0 does not return — scored n/a (hello, refund)",
352
+ "2.0.0 returns `label`, which no case expects yet",
353
+ ]);
354
+ const exp = await evalRun({
355
+ store, workflowId: WF, target: target(() => "x", 1), dataset: "triage", workflowVersion: "2.0.0", live: true, resultFields,
356
+ });
357
+ expect(exp.resultFields).toEqual(resultFields);
358
+ expect(exp.summary).toMatchObject({ passed: 0, failed: 0, fields: { category: { notApplicable: 2, rate: null } } });
359
+ });
360
+ it("produces the Result pre-check as data, for --json as much as for the printed warnings", async () => {
361
+ const store = await seeded();
362
+ const resultFields = [{ name: "label", type: "string" }];
363
+ const check = await evalResultCheck({
364
+ store, workflowId: WF, dataset: "triage", workflowVersion: "2.0.0", result: { fields: resultFields, from: "cef.config.ts" },
365
+ });
366
+ expect(check).toEqual({
367
+ workflowVersion: "2.0.0", fields: resultFields, from: "cef.config.ts",
368
+ compatibility: { missing: [{ field: "category", caseIds: ["hello", "refund"] }], typeChanged: [], unexpectedNew: ["label"] },
369
+ });
370
+ expect(formatResultCheck(check)).toEqual([
371
+ "Result of 2.0.0 (from cef.config.ts): label",
372
+ "! 2 dataset cases expect `category`, which 2.0.0 does not return — scored n/a (hello, refund)",
373
+ "! 2.0.0 returns `label`, which no case expects yet",
374
+ ]);
375
+ const unknown = await evalResultCheck({ store, workflowId: WF, dataset: "triage", workflowVersion: "2.0.0", result: { why: "no graph here" } });
376
+ expect(unknown).toEqual({ workflowVersion: "2.0.0", unknown: "no graph here" });
377
+ });
378
+ });
379
+ describe("the Result of the version being run", () => {
380
+ const graph = (fields) => ({
381
+ type: "string",
382
+ default: JSON.stringify({
383
+ nodes: [{ id: "out", kind: "output", params: { result: Object.fromEntries(Object.keys(fields).map((k) => [k, "=x"])), resultTypes: fields } }],
384
+ }),
385
+ });
386
+ const manifest = async (id, version, fields) => {
387
+ await mkdir(path.join(dir, "dist", id), { recursive: true });
388
+ await writeFile(path.join(dir, "dist", id, "manifest.json"), JSON.stringify({ alias: id, version, params: { graph: graph(fields) } }));
389
+ };
390
+ it("reads the live deployment's graph when the version is the live one", async () => {
391
+ await manifest(WF, "1.0.0", { local: "string" });
392
+ const r = await resultFieldsFor({
393
+ workflowId: WF, workflowVersion: "1.0.0", local: { cwd: dir },
394
+ liveRow: { version: "1.0.0", params: { graph: graph({ category: "string" }) } },
395
+ });
396
+ expect(r).toEqual({ fields: [{ name: "category", type: "string" }], from: "the live deployment" });
397
+ });
398
+ it("reads the project's graph of exactly that version otherwise", async () => {
399
+ await manifest(WF, "2.0.0", { priority: "number" });
400
+ const live = { version: "1.0.0", params: { graph: graph({ category: "string" }) } };
401
+ expect(await resultFieldsFor({ workflowId: WF, workflowVersion: "2.0.0", local: { cwd: dir }, liveRow: live }))
402
+ .toEqual({ fields: [{ name: "priority", type: "number" }], from: path.join("dist", WF, "manifest.json") });
403
+ expect((await resultFieldsFor({ workflowId: WF, workflowVersion: "3.0.0", local: { cwd: dir }, liveRow: live })).fields)
404
+ .toBeUndefined();
405
+ });
406
+ });
407
+ describe("migrate", () => {
408
+ it("copies a v1 bucket into the per-workflow layout and reports it", async () => {
409
+ const store = memoryStore({
410
+ "evals/datasets/triage/header.json": JSON.stringify({ dataset: "triage", workflowId: WF, createdAt: "t" }),
411
+ "evals/datasets/triage/cases/a/r1.json": JSON.stringify({ id: "a", input: {} }),
412
+ });
413
+ const r = await evalMigrate({ store });
414
+ expect(r).toMatchObject({ copied: 2, datasets: [{ dataset: "triage", workflowId: WF }] });
415
+ expect((await getCase(store, WF, "triage", "a"))?.rev).toBe(1);
416
+ expect(formatMigration(r)).toContain(`triage → workflows/${WF}/ (2 keys, 0 experiments)`);
417
+ expect(formatMigration(await evalMigrate({ store }))).toMatch(/Already migrated/);
418
+ });
419
+ });
420
+ describe("output", () => {
421
+ it("lays out a table", () => {
422
+ expect(table(["A", "BB"], [["x", null], ["long", 2]])).toBe("A BB\n---- --\nx –\nlong 2");
423
+ });
424
+ it("formats an empty dataset list", () => {
425
+ expect(formatDatasets([])).toBe("No datasets.");
426
+ });
427
+ });
428
+ describe("wiring", () => {
429
+ it("registers every eval command", () => {
430
+ const ev = buildProgram({ onError: (e) => { throw e; } }).commands.find((c) => c.name() === "eval");
431
+ expect(ev.commands.map((c) => c.name()).sort()).toEqual(["compare", "create", "datasets", "experiments", "migrate", "pull", "push", "run"]);
432
+ const pull = ev.commands.find((c) => c.name() === "pull");
433
+ expect(pull.options.find((o) => o.long === "--dir")?.defaultValue).toBe("datasets");
434
+ for (const name of ["create", "datasets", "experiments", "pull", "push", "run"]) {
435
+ expect(ev.commands.find((c) => c.name() === name).options.map((o) => o.long)).toContain("--workflow");
436
+ }
437
+ });
438
+ it("refuses a dataset command when no workflow is named or found in the directory", async () => {
439
+ const program = buildProgram({ onError: (e) => { throw e; }, cwd: () => dir });
440
+ await expect(program.parseAsync([
441
+ "node", "cef", "eval", "create", "triage", "--access-key", "k", "--secret", "s", "--bucket", "b",
442
+ ])).rejects.toThrow(/--workflow <id> is required/);
443
+ });
444
+ it("takes the dataset version as --dataset-version, leaving --version to the CLI itself", async () => {
445
+ const ev = buildProgram({ onError: (e) => { throw e; } }).commands.find((c) => c.name() === "eval");
446
+ const flags = ev.commands.find((c) => c.name() === "run").options.map((o) => o.long);
447
+ expect(flags).toContain("--dataset-version");
448
+ expect(flags).not.toContain("--version");
449
+ await expect(buildProgram({ onError: (e) => { throw e; } }).parseAsync([
450
+ "node", "cef", "eval", "run", "triage", "--dataset-version", "two", "--access-key", "k", "--secret", "s", "--bucket", "b",
451
+ ])).rejects.toThrow(/--dataset-version must be a whole number/);
452
+ });
453
+ it.each([
454
+ ["--max-tokens", "abc", /--max-tokens must be a whole number ≥ 1 \(got "abc"\)/],
455
+ ["--max-steps", "1.5", /--max-steps must be a whole number ≥ 1/],
456
+ ["--max-duration-ms", "-1", /--max-duration-ms must be a whole number ≥ 1/],
457
+ ["--max-cost", "x", /--max-cost must be a number ≥ 0 \(got "x"\)/],
458
+ ])("refuses create %s %s before reaching the gateway", async (flag, value, error) => {
459
+ const program = buildProgram({ onError: (e) => { throw e; } });
460
+ await expect(program.parseAsync([
461
+ "node", "cef", "eval", "create", "triage", "--workflow", "wf", flag, value,
462
+ "--access-key", "k", "--secret", "s", "--bucket", "b", "--gateway", "http://127.0.0.1:9",
463
+ ])).rejects.toThrow(error);
464
+ });
465
+ it("creates a dataset from the command line with explicit gateway credentials", async () => {
466
+ const program = buildProgram({ onError: (e) => { throw e; } });
467
+ // No network: an unreachable gateway is the failure we expect, after argument parsing succeeded.
468
+ await expect(program.parseAsync([
469
+ "node", "cef", "eval", "create", "triage", "--workflow", "wf",
470
+ "--access-key", "k", "--secret", "s", "--bucket", "b", "--gateway", "http://127.0.0.1:9",
471
+ ])).rejects.toThrow(/ECONNREFUSED/);
472
+ });
473
+ });
474
+ //# sourceMappingURL=eval.test.js.map