@crowandraven/evalkeeper 0.2.0 → 0.4.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 (55) hide show
  1. package/dist/common.js +4 -2
  2. package/dist/common.js.map +1 -1
  3. package/dist/importCases.d.ts +94 -0
  4. package/dist/importCases.js +185 -0
  5. package/dist/importCases.js.map +1 -0
  6. package/dist/index.d.ts +1 -0
  7. package/dist/index.js +1 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/labels.d.ts +9 -3
  10. package/dist/labels.js +2 -0
  11. package/dist/labels.js.map +1 -1
  12. package/dist/memoryStore.js +16 -2
  13. package/dist/memoryStore.js.map +1 -1
  14. package/dist/models.d.ts +17 -6
  15. package/dist/models.js +29 -5
  16. package/dist/models.js.map +1 -1
  17. package/dist/runner.d.ts +16 -1
  18. package/dist/runner.js +68 -18
  19. package/dist/runner.js.map +1 -1
  20. package/dist/settings.js +1 -0
  21. package/dist/settings.js.map +1 -1
  22. package/dist/stats.d.ts +5 -1
  23. package/dist/stats.js +21 -6
  24. package/dist/stats.js.map +1 -1
  25. package/dist/store.d.ts +24 -2
  26. package/dist/testing.js +77 -0
  27. package/dist/testing.js.map +1 -1
  28. package/dist/types.d.ts +5 -0
  29. package/dist/types.js.map +1 -1
  30. package/dist/weekly.js +3 -2
  31. package/dist/weekly.js.map +1 -1
  32. package/package.json +1 -1
  33. package/src/common.ts +5 -2
  34. package/src/importCases.ts +252 -0
  35. package/src/index.ts +1 -0
  36. package/src/labels.ts +9 -4
  37. package/src/memoryStore.ts +24 -2
  38. package/src/models.ts +35 -7
  39. package/src/runner.ts +126 -49
  40. package/src/settings.ts +1 -0
  41. package/src/stats.ts +19 -6
  42. package/src/store.ts +28 -2
  43. package/src/testing.ts +91 -0
  44. package/src/types.ts +5 -0
  45. package/src/weekly.ts +3 -2
  46. package/templates/app/evals/[suite]/page.tsx +15 -10
  47. package/templates/app/evals/feedback/page.tsx +11 -6
  48. package/templates/app/evals/page.tsx +59 -15
  49. package/templates/components/evalkeeper/AddCase.tsx +2 -1
  50. package/templates/components/evalkeeper/AnswerKey.tsx +14 -15
  51. package/templates/components/evalkeeper/ConfirmAnswer.tsx +46 -0
  52. package/templates/components/evalkeeper/RefreshWhile.tsx +16 -7
  53. package/templates/components/evalkeeper/RollBack.tsx +62 -0
  54. package/templates/components/evalkeeper/SettingsHistory.tsx +6 -20
  55. package/templates/components/evalkeeper/Submit.tsx +13 -4
package/dist/common.js CHANGED
@@ -55,9 +55,11 @@ export function withCountedWords(text) {
55
55
  * A number with an optional "k" or "m" ("150k", "1.5m"). It starts only
56
56
  * where a number starts and reads it once (the lookahead and backreference
57
57
  * keep the digits from being retried), so long digit runs in model output
58
- * stay linear. A number glued to a word ("3rd", "10am") doesn't count.
58
+ * stay linear. A number glued to a word ("3rd", "10am") doesn't count. A
59
+ * comma belongs to a number only as a thousands separator ("150,000"), so
60
+ * "In 2020, I joined" reads 2020, not "2020,".
59
61
  */
60
- const NUMBER = /(?<![\d,.])(?=(\d[\d,]*(?:\.\d+)?))\1\s*([km])?\b/gi;
62
+ const NUMBER = /(?<![\d,.])(?=((?:\d{1,3}(?:,\d{3})+|\d+)(?:\.\d+)?))\1\s*([km])?\b/gi;
61
63
  /**
62
64
  * Numbers the text states that appear in none of the sources: likely invented.
63
65
  * Standard phrasing (a 30-60-90 day plan, list markers, fact ids) doesn't count.
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ import type { EvalStore } from "./store.js";
2
+ import type { AnySuite } from "./types.js";
3
+ /** One row of an import, mapped to the suite's shapes. */
4
+ export type ImportedCase = {
5
+ /** Stable within its source (a row id in the file), so a rerun skips it. */
6
+ id: string;
7
+ /** The suite's input; checked against `suite.input`. */
8
+ input: unknown;
9
+ /** The answer, checked against `suite.labelValue`; null: none yet. */
10
+ label: unknown;
11
+ tags?: string[];
12
+ note?: string | null;
13
+ /** This row's set, instead of the import's `split`. */
14
+ split?: "DEV" | "TEST";
15
+ };
16
+ /**
17
+ * How imported answers arrive. Pending (the default): a person confirms
18
+ * each one on the pages before tests use it. Provisional: tests use them
19
+ * now, every score says it rests on unreviewed answers, and the rows carry
20
+ * `tag` so the review queue is findable. Use provisional only when the
21
+ * owner said so; `allowedBy` and `at` record who and when. Nothing is
22
+ * imported confirmed: only a person confirms an answer.
23
+ */
24
+ export type ImportAnswers = {
25
+ status: "PENDING";
26
+ } | {
27
+ status: "PROVISIONAL";
28
+ /** Who drafted the answers: an agent's name, recorded as the rater. */
29
+ rater: string;
30
+ /** The person who allowed using them before review. */
31
+ allowedBy: string;
32
+ /** When they allowed it; default now. */
33
+ at?: Date;
34
+ /** Added to each row's tags; default "needs-review". */
35
+ tag?: string;
36
+ };
37
+ /** A row that couldn't be imported, and why. */
38
+ export type ImportProblem = {
39
+ id: string;
40
+ problem: string;
41
+ };
42
+ /** Rows that don't fit the suite. Nothing was written. */
43
+ export declare class CaseImportError extends Error {
44
+ readonly problems: ImportProblem[];
45
+ constructor(source: string, problems: ImportProblem[]);
46
+ }
47
+ /** What an import did. */
48
+ export type ImportResult = {
49
+ /** Cases created. */
50
+ added: number;
51
+ /** Rows imported before (by source and id), left alone. */
52
+ skipped: number;
53
+ };
54
+ /**
55
+ * Imports existing test data as cases for one suite. Every row is mapped
56
+ * and checked against the suite's input and answer schemas first; if any
57
+ * row fails, nothing is written and `CaseImportError` lists them. Rows
58
+ * imported before (same source and id, retired ones included) are skipped,
59
+ * so it can run again after the file grows.
60
+ *
61
+ * Splits: "DEV" for cases you tune against, "TEST" for a held-out file,
62
+ * "auto" (the default) for new cases, split like cases added by hand.
63
+ *
64
+ * Run it against your development database; an app's own guard should
65
+ * refuse a production one.
66
+ *
67
+ * @example
68
+ * ```ts
69
+ * const { added, skipped } = await importCases({
70
+ * store,
71
+ * suite: ticketTriage,
72
+ * source: "tickets-heldout.json",
73
+ * rows: JSON.parse(await readFile("tickets-heldout.json", "utf8")),
74
+ * map: (r) => ({ id: r.id, input: { body: r.text }, label: { queue: r.queue } }),
75
+ * split: "TEST",
76
+ * });
77
+ * ```
78
+ */
79
+ export declare function importCases<Row>(opts: {
80
+ store: EvalStore;
81
+ suite: AnySuite;
82
+ /** Where the rows came from, such as a file name. */
83
+ source: string;
84
+ rows: readonly Row[];
85
+ map: (row: Row, index: number) => ImportedCase;
86
+ split?: "DEV" | "TEST" | "auto";
87
+ answers?: ImportAnswers;
88
+ }): Promise<ImportResult>;
89
+ /**
90
+ * Adds a suite's `starter` cases as drafts with pending answers, for a
91
+ * person to confirm on the pages. Safe to run again: starters already
92
+ * added (by their input) are skipped.
93
+ */
94
+ export declare function importStarters(store: EvalStore, suite: AnySuite): Promise<ImportResult>;
@@ -0,0 +1,185 @@
1
+ import { nextSplit } from "./quickSet.js";
2
+ import { stableJson } from "./stableJson.js";
3
+ /** Rows that don't fit the suite. Nothing was written. */
4
+ export class CaseImportError extends Error {
5
+ problems;
6
+ constructor(source, problems) {
7
+ super(`${problems.length} row${problems.length === 1 ? "" : "s"} in ${source} can't be imported, so none were: ${problems
8
+ .slice(0, 5)
9
+ .map((p) => `${p.id} (${p.problem})`)
10
+ .join("; ")}${problems.length > 5 ? "; …" : ""}`);
11
+ this.name = "CaseImportError";
12
+ this.problems = problems;
13
+ }
14
+ }
15
+ const sourceRefOf = (source, id) => `${source}#${id}`;
16
+ /**
17
+ * Imports existing test data as cases for one suite. Every row is mapped
18
+ * and checked against the suite's input and answer schemas first; if any
19
+ * row fails, nothing is written and `CaseImportError` lists them. Rows
20
+ * imported before (same source and id, retired ones included) are skipped,
21
+ * so it can run again after the file grows.
22
+ *
23
+ * Splits: "DEV" for cases you tune against, "TEST" for a held-out file,
24
+ * "auto" (the default) for new cases, split like cases added by hand.
25
+ *
26
+ * Run it against your development database; an app's own guard should
27
+ * refuse a production one.
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * const { added, skipped } = await importCases({
32
+ * store,
33
+ * suite: ticketTriage,
34
+ * source: "tickets-heldout.json",
35
+ * rows: JSON.parse(await readFile("tickets-heldout.json", "utf8")),
36
+ * map: (r) => ({ id: r.id, input: { body: r.text }, label: { queue: r.queue } }),
37
+ * split: "TEST",
38
+ * });
39
+ * ```
40
+ */
41
+ export async function importCases(opts) {
42
+ const { store, suite, source } = opts;
43
+ const answers = opts.answers ?? { status: "PENDING" };
44
+ // 1. Map and check every row before writing anything.
45
+ const problems = [];
46
+ const seen = new Set();
47
+ const mapped = [];
48
+ opts.rows.forEach((row, i) => {
49
+ let c;
50
+ try {
51
+ c = opts.map(row, i);
52
+ }
53
+ catch (e) {
54
+ problems.push({
55
+ id: `row ${i + 1}`,
56
+ problem: e instanceof Error ? e.message : String(e),
57
+ });
58
+ return;
59
+ }
60
+ const id = c.id || `row ${i + 1}`;
61
+ if (!c.id)
62
+ problems.push({ id, problem: "no id" });
63
+ else if (seen.has(c.id))
64
+ problems.push({ id, problem: "the same id as an earlier row" });
65
+ seen.add(c.id);
66
+ const input = suite.input.safeParse(c.input);
67
+ if (!input.success)
68
+ problems.push({
69
+ id,
70
+ problem: `input: ${input.error.issues[0]?.message ?? "invalid"}`,
71
+ });
72
+ let label = null;
73
+ if (c.label !== null && c.label !== undefined) {
74
+ const l = suite.labelValue.safeParse(c.label);
75
+ if (!l.success)
76
+ problems.push({
77
+ id,
78
+ problem: `answer: ${l.error.issues[0]?.message ?? "invalid"}`,
79
+ });
80
+ else
81
+ label = l.data;
82
+ }
83
+ if (input.success)
84
+ mapped.push({ ...c, input: input.data, label });
85
+ });
86
+ if (problems.length)
87
+ throw new CaseImportError(source, problems);
88
+ // 2. Skip what's already there, retired cases included.
89
+ const existing = await store.listCases(suite.key, { includeRetired: true });
90
+ const refs = new Set(existing.map((c) => c.sourceRef));
91
+ const counts = { DEV: 0, TEST: 0 };
92
+ for (const c of existing)
93
+ if (c.status !== "RETIRED")
94
+ counts[c.split] += 1;
95
+ const at = answers.status === "PROVISIONAL" ? (answers.at ?? new Date()) : null;
96
+ let added = 0;
97
+ let skipped = 0;
98
+ for (const c of mapped) {
99
+ const sourceRef = sourceRefOf(source, c.id);
100
+ if (refs.has(sourceRef)) {
101
+ skipped += 1;
102
+ continue;
103
+ }
104
+ const split = c.split ??
105
+ (opts.split === "DEV" || opts.split === "TEST"
106
+ ? opts.split
107
+ : nextSplit(counts));
108
+ counts[split] += 1;
109
+ const labels = [];
110
+ if (c.label !== null)
111
+ labels.push(answers.status === "PROVISIONAL"
112
+ ? {
113
+ kind: "EXPECTED",
114
+ status: "PROVISIONAL",
115
+ value: c.label,
116
+ raterRole: "AGENT",
117
+ raterId: answers.rater,
118
+ note: `Drafted by ${answers.rater}; ${answers.allowedBy} allowed testing on it before review (${at?.toISOString().slice(0, 10)}).`,
119
+ }
120
+ : {
121
+ kind: "EXPECTED",
122
+ status: "PENDING",
123
+ value: c.label,
124
+ raterRole: "IMPORT",
125
+ raterId: null,
126
+ note: null,
127
+ });
128
+ const tags = [...(c.tags ?? [])];
129
+ if (answers.status === "PROVISIONAL" && c.label !== null) {
130
+ const tag = answers.tag ?? "needs-review";
131
+ if (!tags.includes(tag))
132
+ tags.push(tag);
133
+ }
134
+ const data = {
135
+ suite: suite.key,
136
+ input: c.input,
137
+ tags,
138
+ split,
139
+ // In use only with an answer tests may grade against.
140
+ status: c.label !== null && answers.status === "PROVISIONAL"
141
+ ? "ACTIVE"
142
+ : "DRAFT",
143
+ source: "IMPORT",
144
+ sourceRef,
145
+ note: c.note ?? null,
146
+ labels,
147
+ };
148
+ await store.createCase(data);
149
+ refs.add(sourceRef);
150
+ added += 1;
151
+ }
152
+ return { added, skipped };
153
+ }
154
+ /** A short, stable id for a starter case: a hash of its input. */
155
+ function starterId(input) {
156
+ // FNV-1a: the core stays free of node:crypto; this only names rows.
157
+ let h = 0x811c9dc5;
158
+ for (const ch of stableJson(input)) {
159
+ h ^= ch.charCodeAt(0);
160
+ h = Math.imul(h, 0x01000193) >>> 0;
161
+ }
162
+ return h.toString(16).padStart(8, "0");
163
+ }
164
+ /**
165
+ * Adds a suite's `starter` cases as drafts with pending answers, for a
166
+ * person to confirm on the pages. Safe to run again: starters already
167
+ * added (by their input) are skipped.
168
+ */
169
+ export function importStarters(store, suite) {
170
+ return importCases({
171
+ store,
172
+ suite,
173
+ source: `starter:${suite.key}`,
174
+ rows: suite.starter ?? [],
175
+ map: (s) => ({
176
+ id: starterId(s.input),
177
+ input: s.input,
178
+ label: s.label,
179
+ tags: s.tags,
180
+ note: s.note,
181
+ split: s.split,
182
+ }),
183
+ });
184
+ }
185
+ //# sourceMappingURL=importCases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"importCases.js","sourceRoot":"","sources":["../src/importCases.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -29,3 +29,4 @@ export * from "./settings.js";
29
29
  export * from "./decisions.js";
30
30
  export * from "./store.js";
31
31
  export * from "./labels.js";
32
+ export * from "./importCases.js";
package/dist/index.js CHANGED
@@ -31,4 +31,5 @@ export * from "./store.js";
31
31
  export * from "./labels.js";
32
32
  // Server-only (node:crypto): import from "@crowandraven/evalkeeper/runner".
33
33
  // In-memory store for tests and demos: "@crowandraven/evalkeeper/memory".
34
+ export * from "./importCases.js";
34
35
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,4EAA4E;AAC5E,0EAA0E"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,4EAA4E;AAC5E,0EAA0E;AAC1E,cAAc,kBAAkB,CAAC"}
package/dist/labels.d.ts CHANGED
@@ -1,8 +1,14 @@
1
- import type { LabelRecord } from "./store.js";
1
+ /** What the answer-in-use rule needs from a label: the store's, or an app's own row. */
2
+ export type LabelLike = {
3
+ status: string;
4
+ updatedAt: Date;
5
+ };
2
6
  /**
3
7
  * The EXPECTED answer tests use: the newest confirmed one, or failing that a
4
8
  * provisional one (put to use before review). Pending answers never count.
9
+ * Generic, so pages that read their own label rows (with extra columns)
10
+ * share the rule and keep their row type.
5
11
  */
6
- export declare function confirmedLabel(labels: LabelRecord[]): LabelRecord | null;
12
+ export declare function confirmedLabel<L extends LabelLike>(labels: readonly L[]): L | null;
7
13
  /** In use on an answer nobody has reviewed yet. */
8
- export declare function isProvisional(labels: LabelRecord[]): boolean;
14
+ export declare function isProvisional(labels: readonly LabelLike[]): boolean;
package/dist/labels.js CHANGED
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * The EXPECTED answer tests use: the newest confirmed one, or failing that a
3
3
  * provisional one (put to use before review). Pending answers never count.
4
+ * Generic, so pages that read their own label rows (with extra columns)
5
+ * share the rule and keep their row type.
4
6
  */
5
7
  export function confirmedLabel(labels) {
6
8
  const newest = (status) => labels
@@ -1 +1 @@
1
- {"version":3,"file":"labels.js","sourceRoot":"","sources":["../src/labels.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAqB;IAClD,MAAM,MAAM,GAAG,CAAC,MAA6B,EAAE,EAAE,CAC/C,MAAM;SACH,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;SAClC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAC5D,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC;AACtD,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,aAAa,CAAC,MAAqB;IACjD,OAAO,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,aAAa,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"labels.js","sourceRoot":"","sources":["../src/labels.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAoB;IAEpB,MAAM,MAAM,GAAG,CAAC,MAAc,EAAE,EAAE,CAChC,MAAM;SACH,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC;SAClC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAC5D,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC;AACtD,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,aAAa,CAAC,MAA4B;IACxD,OAAO,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,aAAa,CAAC;AAC1D,CAAC"}
@@ -127,9 +127,10 @@ export function memoryStore() {
127
127
  f.updatedAt = now();
128
128
  }
129
129
  },
130
- async listCases(suite) {
130
+ async listCases(suite, opts) {
131
131
  return cases
132
- .filter((c) => c.suite === suite && c.status !== "RETIRED")
132
+ .filter((c) => c.suite === suite &&
133
+ (opts?.includeRetired || c.status !== "RETIRED"))
133
134
  .sort((a, b) => +a.createdAt - +b.createdAt);
134
135
  },
135
136
  async createCase({ labels = [], ...data }) {
@@ -205,6 +206,10 @@ export function memoryStore() {
205
206
  async listOutputs(runId) {
206
207
  return outputs.filter((o) => o.runId === runId);
207
208
  },
209
+ async listOutputsFor(runIds) {
210
+ const ids = new Set(runIds);
211
+ return outputs.filter((o) => ids.has(o.runId));
212
+ },
208
213
  async findReusableOutput(requestHash, since) {
209
214
  return (outputs
210
215
  .filter((o) => o.requestHash === requestHash &&
@@ -213,6 +218,15 @@ export function memoryStore() {
213
218
  o.createdAt >= since)
214
219
  .sort((a, b) => +b.createdAt - +a.createdAt)[0] ?? null);
215
220
  },
221
+ async findReusableHashes(requestHashes, since) {
222
+ const wanted = new Set(requestHashes);
223
+ return new Set(outputs
224
+ .filter((o) => wanted.has(o.requestHash) &&
225
+ !o.reused &&
226
+ !o.error &&
227
+ o.createdAt >= since)
228
+ .map((o) => o.requestHash));
229
+ },
216
230
  async createOutput(data) {
217
231
  const o = { ...data, id: id("out"), createdAt: now() };
218
232
  outputs.push(o);
@@ -1 +1 @@
1
- {"version":3,"file":"memoryStore.js","sourceRoot":"","sources":["../src/memoryStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memoryStore.js","sourceRoot":"","sources":["../src/memoryStore.ts"],"names":[],"mappings":"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"}
package/dist/models.d.ts CHANGED
@@ -2,10 +2,19 @@
2
2
  * What Evalkeeper needs to know about the models your app can use. You
3
3
  * pass a catalog in; Evalkeeper never picks a provider itself. Pure.
4
4
  */
5
- /** How hard a reasoning model thinks, where the model takes a setting. */
6
- export declare const REASONING_EFFORTS: readonly ["none", "low", "medium", "high"];
7
- /** A reasoning setting a model may accept. */
8
- export type ReasoningEffort = (typeof REASONING_EFFORTS)[number];
5
+ /**
6
+ * The reasoning settings providers name, lowest first, so a setting one
7
+ * model lacks can be placed against the ones it has. A model's own
8
+ * `efforts` say which it takes.
9
+ */
10
+ export declare const REASONING_EFFORTS: readonly ["none", "minimal", "low", "medium", "high", "xhigh", "max"];
11
+ /** A setting from REASONING_EFFORTS. */
12
+ export type KnownReasoningEffort = (typeof REASONING_EFFORTS)[number];
13
+ /**
14
+ * A reasoning setting a model may accept: one of REASONING_EFFORTS, or any
15
+ * other name a provider uses. The catalog's `efforts` order them per model.
16
+ */
17
+ export type ReasoningEffort = KnownReasoningEffort | (string & {});
9
18
  /**
10
19
  * What Evalkeeper needs to know about one model: its label, provider, prices, reasoning
11
20
  * settings, and retirement date.
@@ -70,7 +79,9 @@ export declare function priceCall(models: ModelCatalog, model: string, tokens: {
70
79
  }): number | null;
71
80
  /**
72
81
  * The effort a model actually gets for a requested one: the same if it
73
- * takes it; for "none" on a model without it, its lowest; otherwise its own
74
- * default. Undefined: send nothing.
82
+ * takes it; one below the lowest it takes (say "none" on a model that
83
+ * starts at "minimal"), its lowest; one above its highest, its highest;
84
+ * otherwise (a name it doesn't place) its own default. Undefined: send
85
+ * nothing.
75
86
  */
76
87
  export declare function effortFor(models: ModelCatalog, model: string, requested: ReasoningEffort | null | undefined): ReasoningEffort | undefined;
package/dist/models.js CHANGED
@@ -2,8 +2,20 @@
2
2
  * What Evalkeeper needs to know about the models your app can use. You
3
3
  * pass a catalog in; Evalkeeper never picks a provider itself. Pure.
4
4
  */
5
- /** How hard a reasoning model thinks, where the model takes a setting. */
6
- export const REASONING_EFFORTS = ["none", "low", "medium", "high"];
5
+ /**
6
+ * The reasoning settings providers name, lowest first, so a setting one
7
+ * model lacks can be placed against the ones it has. A model's own
8
+ * `efforts` say which it takes.
9
+ */
10
+ export const REASONING_EFFORTS = [
11
+ "none",
12
+ "minimal",
13
+ "low",
14
+ "medium",
15
+ "high",
16
+ "xhigh",
17
+ "max",
18
+ ];
7
19
  /** Whether a catalog entry is a baseline (code, not a model): never suggested. */
8
20
  export function isBaseline(models, model) {
9
21
  return models[model]?.baseline === true;
@@ -42,8 +54,10 @@ export function priceCall(models, model, tokens) {
42
54
  }
43
55
  /**
44
56
  * The effort a model actually gets for a requested one: the same if it
45
- * takes it; for "none" on a model without it, its lowest; otherwise its own
46
- * default. Undefined: send nothing.
57
+ * takes it; one below the lowest it takes (say "none" on a model that
58
+ * starts at "minimal"), its lowest; one above its highest, its highest;
59
+ * otherwise (a name it doesn't place) its own default. Undefined: send
60
+ * nothing.
47
61
  */
48
62
  export function effortFor(models, model, requested) {
49
63
  const efforts = models[model]?.efforts;
@@ -51,6 +65,16 @@ export function effortFor(models, model, requested) {
51
65
  return undefined;
52
66
  if (efforts.includes(requested))
53
67
  return requested;
54
- return requested === "none" ? efforts[0] : undefined;
68
+ const rank = (e) => REASONING_EFFORTS.indexOf(e);
69
+ const want = rank(requested);
70
+ const lowest = efforts[0];
71
+ const highest = efforts.at(-1);
72
+ if (want < 0 || lowest === undefined || highest === undefined)
73
+ return undefined;
74
+ if (rank(lowest) >= 0 && want < rank(lowest))
75
+ return lowest;
76
+ if (rank(highest) >= 0 && want > rank(highest))
77
+ return highest;
78
+ return undefined;
55
79
  }
56
80
  //# sourceMappingURL=models.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,0EAA0E;AAC1E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAoD5E,kFAAkF;AAClF,MAAM,UAAU,UAAU,CAAC,MAAoB,EAAE,KAAa;IAC5D,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,KAAK,IAAI,CAAC;AAC1C,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,YAAY,CAC1B,MAAoB,EACpB,KAAa;IAEb,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;IACrC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtD,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE;QACxE,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CACvB,MAAoB,EACpB,KAAa,EACb,MAKC;IAED,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACxB,IAAI,CAAC,EAAE,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,WAAW,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5E,sEAAsE;IACtE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CACtB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,EAAE,CAAC,CAAC,EACxC,MAAM,CAAC,KAAK,GAAG,MAAM,CACtB,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;IAC9C,OAAO,CACL,CAAC,KAAK,GAAG,CAAC,CAAC,UAAU;QACnB,MAAM,GAAG,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,UAAU,CAAC;QAC7C,OAAO,GAAG,CAAC,CAAC,CAAC,oBAAoB,IAAI,CAAC,CAAC,UAAU,CAAC;QAClD,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,WAAW,CAAC;QAChC,GAAG,CACJ,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CACvB,MAAoB,EACpB,KAAa,EACb,SAA6C;IAE7C,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACvC,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC7C,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAClD,OAAO,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}