@crowandraven/evalkeeper 0.0.0-stage → 0.1.1
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 +21 -0
- package/README.md +6 -2
- package/bin/evalkeeper.mjs +9 -0
- package/dist/attention.d.ts +49 -0
- package/dist/attention.js +48 -0
- package/dist/attention.js.map +1 -0
- package/dist/board.d.ts +55 -0
- package/dist/board.js +2 -0
- package/dist/board.js.map +1 -0
- package/dist/cli/addPages.d.ts +79 -0
- package/dist/cli/addPages.js +181 -0
- package/dist/cli/addPages.js.map +1 -0
- package/dist/cli/main.d.ts +18 -0
- package/dist/cli/main.js +115 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/common.d.ts +72 -0
- package/dist/common.js +276 -0
- package/dist/common.js.map +1 -0
- package/dist/compare.d.ts +85 -0
- package/dist/compare.js +185 -0
- package/dist/compare.js.map +1 -0
- package/dist/decisions.d.ts +84 -0
- package/dist/decisions.js +146 -0
- package/dist/decisions.js.map +1 -0
- package/dist/feedback.d.ts +114 -0
- package/dist/feedback.js +116 -0
- package/dist/feedback.js.map +1 -0
- package/dist/format.d.ts +6 -0
- package/dist/format.js +22 -0
- package/dist/format.js.map +1 -0
- package/dist/glossary.d.ts +46 -0
- package/dist/glossary.js +45 -0
- package/dist/glossary.js.map +1 -0
- package/dist/health.d.ts +40 -0
- package/dist/health.js +101 -0
- package/dist/health.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/labels.d.ts +8 -0
- package/dist/labels.js +15 -0
- package/dist/labels.js.map +1 -0
- package/dist/legs.d.ts +23 -0
- package/dist/legs.js +22 -0
- package/dist/legs.js.map +1 -0
- package/dist/memoryStore.d.ts +21 -0
- package/dist/memoryStore.js +228 -0
- package/dist/memoryStore.js.map +1 -0
- package/dist/models.d.ts +50 -0
- package/dist/models.js +39 -0
- package/dist/models.js.map +1 -0
- package/dist/prune.d.ts +48 -0
- package/dist/prune.js +77 -0
- package/dist/prune.js.map +1 -0
- package/dist/quickSet.d.ts +26 -0
- package/dist/quickSet.js +44 -0
- package/dist/quickSet.js.map +1 -0
- package/dist/runner.d.ts +193 -0
- package/dist/runner.js +706 -0
- package/dist/runner.js.map +1 -0
- package/dist/settings.d.ts +157 -0
- package/dist/settings.js +183 -0
- package/dist/settings.js.map +1 -0
- package/dist/stableJson.d.ts +11 -0
- package/dist/stableJson.js +15 -0
- package/dist/stableJson.js.map +1 -0
- package/dist/stats.d.ts +98 -0
- package/dist/stats.js +119 -0
- package/dist/stats.js.map +1 -0
- package/dist/store.d.ts +146 -0
- package/dist/store.js +3 -0
- package/dist/store.js.map +1 -0
- package/dist/suggest.d.ts +75 -0
- package/dist/suggest.js +150 -0
- package/dist/suggest.js.map +1 -0
- package/dist/summary.d.ts +51 -0
- package/dist/summary.js +61 -0
- package/dist/summary.js.map +1 -0
- package/dist/testing.d.ts +26 -0
- package/dist/testing.js +341 -0
- package/dist/testing.js.map +1 -0
- package/dist/timeout.d.ts +2 -0
- package/dist/timeout.js +15 -0
- package/dist/timeout.js.map +1 -0
- package/dist/types.d.ts +219 -0
- package/dist/types.js +46 -0
- package/dist/types.js.map +1 -0
- package/dist/upkeepRules.d.ts +28 -0
- package/dist/upkeepRules.js +40 -0
- package/dist/upkeepRules.js.map +1 -0
- package/dist/util.d.ts +8 -0
- package/dist/util.js +18 -0
- package/dist/util.js.map +1 -0
- package/dist/weekly.d.ts +80 -0
- package/dist/weekly.js +111 -0
- package/dist/weekly.js.map +1 -0
- package/package.json +81 -4
- package/src/attention.ts +88 -0
- package/src/board.ts +56 -0
- package/src/cli/addPages.ts +256 -0
- package/src/cli/main.ts +125 -0
- package/src/common.ts +338 -0
- package/src/compare.ts +261 -0
- package/src/decisions.ts +230 -0
- package/src/feedback.ts +225 -0
- package/src/format.ts +19 -0
- package/src/glossary.ts +75 -0
- package/src/health.ts +147 -0
- package/src/index.ts +33 -0
- package/src/labels.ts +18 -0
- package/src/legs.ts +38 -0
- package/src/memoryStore.ts +268 -0
- package/src/models.ts +82 -0
- package/src/prune.ts +95 -0
- package/src/quickSet.ts +55 -0
- package/src/runner.ts +971 -0
- package/src/settings.ts +331 -0
- package/src/stableJson.ts +24 -0
- package/src/stats.ts +215 -0
- package/src/store.ts +167 -0
- package/src/suggest.ts +245 -0
- package/src/summary.ts +109 -0
- package/src/testing.ts +392 -0
- package/src/timeout.ts +14 -0
- package/src/types.ts +252 -0
- package/src/upkeepRules.ts +46 -0
- package/src/util.ts +17 -0
- package/src/weekly.ts +167 -0
- package/starter/index.ts +86 -0
- package/templates/app/api/cron/evals-weekly/route.ts +24 -0
- package/templates/app/evals/[suite]/page.tsx +449 -0
- package/templates/app/evals/[suite]/runs/[runId]/page.tsx +95 -0
- package/templates/app/evals/feedback/page.tsx +219 -0
- package/templates/app/evals/page.tsx +313 -0
- package/templates/components/evalkeeper/AddCase.tsx +62 -0
- package/templates/components/evalkeeper/AnswerKey.tsx +360 -0
- package/templates/components/evalkeeper/CaseMenu.tsx +122 -0
- package/templates/components/evalkeeper/Fields.tsx +110 -0
- package/templates/components/evalkeeper/RefreshWhile.tsx +25 -0
- package/templates/components/evalkeeper/SettingsHistory.tsx +191 -0
- package/templates/components/evalkeeper/Submit.tsx +58 -0
- package/templates/components/evalkeeper/Thumbs.tsx +117 -0
- package/templates/components/evalkeeper/Tip.tsx +98 -0
- package/templates/components/evalkeeper/WeeklyCheck.tsx +124 -0
- package/templates/components/evalkeeper/evalkeeper.css +71 -0
- package/templates/components/evalkeeper/ui.tsx +103 -0
- package/templates/lib/evalkeeper/actions.ts +263 -0
- package/templates/lib/evalkeeper/cronAuth.ts +18 -0
- package/templates/lib/evalkeeper/paths.ts +11 -0
- package/templates/lib/evalkeeper/time.ts +4 -0
- package/templates/lib/evalkeeper/weekly.ts +51 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import type { ReasoningEffort } from "./models.js";
|
|
2
|
+
import type { Route } from "./runner.js";
|
|
3
|
+
/**
|
|
4
|
+
* Versioned model settings. Each AI feature's settings (its model,
|
|
5
|
+
* fallback, reasoning setting, and output limit, with the instructions they
|
|
6
|
+
* ran with) are numbered versions that never change. Changing a setting
|
|
7
|
+
* makes a new version live; rolling back makes an earlier one live again;
|
|
8
|
+
* every switch is logged with who, when, why, and its evidence. A feature
|
|
9
|
+
* never changed runs on its default from code. Optional: use it, or keep
|
|
10
|
+
* your own routing and pass `route` to the runner yourself.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* A feature's model settings: live model, fallback, reasoning setting, and output limit.
|
|
14
|
+
*/
|
|
15
|
+
export type Settings = {
|
|
16
|
+
model: string;
|
|
17
|
+
fallbackModel: string | null;
|
|
18
|
+
/** Null: the model's own default. */
|
|
19
|
+
reasoningEffort: ReasoningEffort | null;
|
|
20
|
+
/** Null: the call's own default. */
|
|
21
|
+
maxOutputTokens: number | null;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* One numbered version of a feature's settings, with the instructions it ran with. Never changed.
|
|
25
|
+
*/
|
|
26
|
+
export type SettingsVersion = Settings & {
|
|
27
|
+
id: string;
|
|
28
|
+
operation: string;
|
|
29
|
+
/** 1, 2, 3, … per feature. */
|
|
30
|
+
number: number;
|
|
31
|
+
/** The instructions' hash when this version was made. */
|
|
32
|
+
promptVersion: string | null;
|
|
33
|
+
createdAt: Date;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* CHANGE: a person changed a setting. PROMOTE: a model was made live or
|
|
37
|
+
* the fallback from a test, with the test as evidence. ROLLBACK: an
|
|
38
|
+
* earlier version made live again. DEPLOY: the instructions changed in code
|
|
39
|
+
* under the live settings.
|
|
40
|
+
*/
|
|
41
|
+
export type ChangeKind = "CHANGE" | "PROMOTE" | "ROLLBACK" | "DEPLOY";
|
|
42
|
+
/**
|
|
43
|
+
* One switch in a feature's history: its kind, the versions it went from and to, who, why,
|
|
44
|
+
* and the evidence.
|
|
45
|
+
*/
|
|
46
|
+
export type SettingsChange = {
|
|
47
|
+
id: string;
|
|
48
|
+
operation: string;
|
|
49
|
+
kind: ChangeKind;
|
|
50
|
+
fromVersionId: string | null;
|
|
51
|
+
toVersionId: string;
|
|
52
|
+
reason: string | null;
|
|
53
|
+
/** Who made it; null for the system (a deploy, the first default). */
|
|
54
|
+
by: string | null;
|
|
55
|
+
/** Why it's safe: the tests compared, the verdict. */
|
|
56
|
+
evidence: unknown;
|
|
57
|
+
createdAt: Date;
|
|
58
|
+
};
|
|
59
|
+
/** One atomic switch: maybe a new version, then live, then the log. */
|
|
60
|
+
export type SettingsSwitch = {
|
|
61
|
+
/** Make a new version with these settings (numbered next). */
|
|
62
|
+
create?: {
|
|
63
|
+
settings: Settings;
|
|
64
|
+
promptVersion: string | null;
|
|
65
|
+
};
|
|
66
|
+
/** Or make this existing version live. */
|
|
67
|
+
versionId?: string;
|
|
68
|
+
kind: ChangeKind;
|
|
69
|
+
reason: string | null;
|
|
70
|
+
by: string | null;
|
|
71
|
+
evidence?: unknown;
|
|
72
|
+
/**
|
|
73
|
+
* The live version this switch was decided against (null: none). The
|
|
74
|
+
* store refuses the switch if another one got in first.
|
|
75
|
+
*/
|
|
76
|
+
expectLive: string | null;
|
|
77
|
+
};
|
|
78
|
+
/** Where versions live. `@crowandraven/evalkeeper-prisma` and `memoryStore` implement it. */
|
|
79
|
+
export interface SettingsStore {
|
|
80
|
+
liveVersion(operation: string): Promise<SettingsVersion | null>;
|
|
81
|
+
/** Newest first. */
|
|
82
|
+
listVersions(operation: string): Promise<SettingsVersion[]>;
|
|
83
|
+
/** Newest first. */
|
|
84
|
+
listChanges(operation: string, opts?: {
|
|
85
|
+
limit?: number;
|
|
86
|
+
}): Promise<SettingsChange[]>;
|
|
87
|
+
/**
|
|
88
|
+
* Applies a switch atomically. Throws SettingsConflict when the live
|
|
89
|
+
* version is no longer `expectLive`.
|
|
90
|
+
*/
|
|
91
|
+
switchTo(operation: string, s: SettingsSwitch): Promise<SettingsVersion>;
|
|
92
|
+
}
|
|
93
|
+
/** Another change landed first: reload and decide again. */
|
|
94
|
+
export declare class SettingsConflict extends Error {
|
|
95
|
+
constructor(operation: string);
|
|
96
|
+
}
|
|
97
|
+
/** Whether two settings are the same in every field. */
|
|
98
|
+
export declare function sameSettings(a: Settings, b: Settings): boolean;
|
|
99
|
+
/** Just the settings of a version. */
|
|
100
|
+
export declare function settingsOf(v: Settings): Settings;
|
|
101
|
+
/** What changed between two settings, in plain words. */
|
|
102
|
+
export declare function describeChange(from: Settings | null, to: Settings, label?: (model: string) => string): string[];
|
|
103
|
+
/** A switch with the versions it went from and to, for a history page. */
|
|
104
|
+
export type HistoryEntry = SettingsChange & {
|
|
105
|
+
to: SettingsVersion;
|
|
106
|
+
from: SettingsVersion | null;
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Versioned settings: each feature's settings as numbered versions, with every change,
|
|
110
|
+
* promotion, rollback, and deploy logged. Its `route` is the runner's route.
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* ```ts
|
|
114
|
+
* const settings = createSettings({
|
|
115
|
+
* store: prismaSettingsStore(prisma),
|
|
116
|
+
* defaults: (op) => DEFAULTS[op],
|
|
117
|
+
* promptVersion: (op) => PROMPT_VERSIONS[op],
|
|
118
|
+
* });
|
|
119
|
+
* await settings.update("ticket_triage", { model: "claude-haiku-5-5" }, {
|
|
120
|
+
* by: admin.name,
|
|
121
|
+
* reason: "About as accurate at half the cost",
|
|
122
|
+
* evidence: { runId },
|
|
123
|
+
* });
|
|
124
|
+
* await settings.rollBack("ticket_triage", versionId, { by: admin.name, reason: "Worse in production" });
|
|
125
|
+
* ```
|
|
126
|
+
*/
|
|
127
|
+
export declare function createSettings(opts: {
|
|
128
|
+
store: SettingsStore;
|
|
129
|
+
/** Each feature's settings in code, used until it's first changed. */
|
|
130
|
+
defaults: (operation: string) => Settings;
|
|
131
|
+
/** The instructions' current hash, so a version records what it ran. */
|
|
132
|
+
promptVersion?: (operation: string) => string | Promise<string>;
|
|
133
|
+
}): {
|
|
134
|
+
current: (operation: string) => Promise<{
|
|
135
|
+
settings: Settings;
|
|
136
|
+
version: SettingsVersion | null;
|
|
137
|
+
}>;
|
|
138
|
+
route: (operation: string) => Promise<Route>;
|
|
139
|
+
change: (operation: string, next: Settings, by: {
|
|
140
|
+
by: string | null;
|
|
141
|
+
reason: string | null;
|
|
142
|
+
evidence?: unknown;
|
|
143
|
+
}) => Promise<SettingsVersion | null>;
|
|
144
|
+
update: (operation: string, patch: Partial<Settings>, by: {
|
|
145
|
+
by: string | null;
|
|
146
|
+
reason: string | null;
|
|
147
|
+
evidence?: unknown;
|
|
148
|
+
}) => Promise<SettingsVersion | null>;
|
|
149
|
+
rollBack: (operation: string, versionId: string, by: {
|
|
150
|
+
by: string | null;
|
|
151
|
+
reason: string;
|
|
152
|
+
}) => Promise<SettingsVersion>;
|
|
153
|
+
syncPrompt: (operation: string) => Promise<SettingsVersion | null>;
|
|
154
|
+
history: (operation: string, limit?: number) => Promise<HistoryEntry[]>;
|
|
155
|
+
};
|
|
156
|
+
/** What createSettings returns. */
|
|
157
|
+
export type VersionedSettings = ReturnType<typeof createSettings>;
|
package/dist/settings.js
ADDED
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/** Another change landed first: reload and decide again. */
|
|
2
|
+
export class SettingsConflict extends Error {
|
|
3
|
+
constructor(operation) {
|
|
4
|
+
super(`The settings for ${operation} changed meanwhile. Reload and try again.`);
|
|
5
|
+
this.name = "SettingsConflict";
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
/** Whether two settings are the same in every field. */
|
|
9
|
+
export function sameSettings(a, b) {
|
|
10
|
+
return (a.model === b.model &&
|
|
11
|
+
a.fallbackModel === b.fallbackModel &&
|
|
12
|
+
a.reasoningEffort === b.reasoningEffort &&
|
|
13
|
+
a.maxOutputTokens === b.maxOutputTokens);
|
|
14
|
+
}
|
|
15
|
+
/** Just the settings of a version. */
|
|
16
|
+
export function settingsOf(v) {
|
|
17
|
+
return {
|
|
18
|
+
model: v.model,
|
|
19
|
+
fallbackModel: v.fallbackModel,
|
|
20
|
+
reasoningEffort: v.reasoningEffort,
|
|
21
|
+
maxOutputTokens: v.maxOutputTokens,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/** What changed between two settings, in plain words. */
|
|
25
|
+
export function describeChange(from, to, label = (m) => m) {
|
|
26
|
+
if (!from)
|
|
27
|
+
return [`Live: ${label(to.model)}`];
|
|
28
|
+
const out = [];
|
|
29
|
+
if (from.model !== to.model)
|
|
30
|
+
out.push(`Live: ${label(from.model)} → ${label(to.model)}`);
|
|
31
|
+
if (from.fallbackModel !== to.fallbackModel)
|
|
32
|
+
out.push(`Fallback: ${from.fallbackModel ? label(from.fallbackModel) : "none"} → ${to.fallbackModel ? label(to.fallbackModel) : "none"}`);
|
|
33
|
+
if (from.reasoningEffort !== to.reasoningEffort)
|
|
34
|
+
out.push(`Reasoning: ${from.reasoningEffort ?? "default"} → ${to.reasoningEffort ?? "default"}`);
|
|
35
|
+
if (from.maxOutputTokens !== to.maxOutputTokens)
|
|
36
|
+
out.push(`Output limit: ${from.maxOutputTokens ?? "default"} → ${to.maxOutputTokens ?? "default"}`);
|
|
37
|
+
return out;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Versioned settings: each feature's settings as numbered versions, with every change,
|
|
41
|
+
* promotion, rollback, and deploy logged. Its `route` is the runner's route.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```ts
|
|
45
|
+
* const settings = createSettings({
|
|
46
|
+
* store: prismaSettingsStore(prisma),
|
|
47
|
+
* defaults: (op) => DEFAULTS[op],
|
|
48
|
+
* promptVersion: (op) => PROMPT_VERSIONS[op],
|
|
49
|
+
* });
|
|
50
|
+
* await settings.update("ticket_triage", { model: "claude-haiku-5-5" }, {
|
|
51
|
+
* by: admin.name,
|
|
52
|
+
* reason: "About as accurate at half the cost",
|
|
53
|
+
* evidence: { runId },
|
|
54
|
+
* });
|
|
55
|
+
* await settings.rollBack("ticket_triage", versionId, { by: admin.name, reason: "Worse in production" });
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export function createSettings(opts) {
|
|
59
|
+
const { store } = opts;
|
|
60
|
+
const prompt = async (op) => opts.promptVersion ? await opts.promptVersion(op) : null;
|
|
61
|
+
/** The live settings: the live version's, else the default from code. */
|
|
62
|
+
async function current(operation) {
|
|
63
|
+
const version = await store.liveVersion(operation);
|
|
64
|
+
return {
|
|
65
|
+
settings: version ? settingsOf(version) : opts.defaults(operation),
|
|
66
|
+
version,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/** The runner's route for a feature, from its live settings. */
|
|
70
|
+
async function route(operation) {
|
|
71
|
+
const { settings } = await current(operation);
|
|
72
|
+
return {
|
|
73
|
+
model: settings.model,
|
|
74
|
+
fallbackModel: settings.fallbackModel,
|
|
75
|
+
reasoningEffort: settings.reasoningEffort,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Makes new settings live as a new version. The first change to a
|
|
80
|
+
* feature first records its default as version 1, so there's always
|
|
81
|
+
* something to roll back to. With `evidence`, it's a promotion. Returns
|
|
82
|
+
* null when nothing changed.
|
|
83
|
+
*/
|
|
84
|
+
async function change(operation, next, by) {
|
|
85
|
+
const promptVersion = await prompt(operation);
|
|
86
|
+
let live = await store.liveVersion(operation);
|
|
87
|
+
if (!live) {
|
|
88
|
+
const initial = opts.defaults(operation);
|
|
89
|
+
if (sameSettings(initial, next))
|
|
90
|
+
return null;
|
|
91
|
+
live = await store.switchTo(operation, {
|
|
92
|
+
create: { settings: initial, promptVersion },
|
|
93
|
+
kind: "CHANGE",
|
|
94
|
+
reason: "The default from code, before the first change",
|
|
95
|
+
by: null,
|
|
96
|
+
expectLive: null,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
else if (sameSettings(settingsOf(live), next))
|
|
100
|
+
return null;
|
|
101
|
+
return store.switchTo(operation, {
|
|
102
|
+
create: { settings: settingsOf(next), promptVersion },
|
|
103
|
+
kind: by.evidence === undefined ? "CHANGE" : "PROMOTE",
|
|
104
|
+
reason: by.reason,
|
|
105
|
+
by: by.by,
|
|
106
|
+
evidence: by.evidence,
|
|
107
|
+
expectLive: live.id,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
/** Changes only some settings (e.g. the fallback), keeping the rest. */
|
|
111
|
+
async function update(operation, patch, by) {
|
|
112
|
+
const { settings } = await current(operation);
|
|
113
|
+
return change(operation, { ...settings, ...patch }, by);
|
|
114
|
+
}
|
|
115
|
+
/** Makes an earlier version live again. */
|
|
116
|
+
async function rollBack(operation, versionId, by) {
|
|
117
|
+
const versions = await store.listVersions(operation);
|
|
118
|
+
const to = versions.find((v) => v.id === versionId);
|
|
119
|
+
if (!to)
|
|
120
|
+
throw new Error("No such version for this feature");
|
|
121
|
+
const live = await store.liveVersion(operation);
|
|
122
|
+
if (live?.id === to.id)
|
|
123
|
+
return to;
|
|
124
|
+
return store.switchTo(operation, {
|
|
125
|
+
versionId: to.id,
|
|
126
|
+
kind: "ROLLBACK",
|
|
127
|
+
reason: by.reason,
|
|
128
|
+
by: by.by,
|
|
129
|
+
expectLive: live?.id ?? null,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Instructions live in code, so a deploy can change them under live
|
|
134
|
+
* settings. When it has, records a version with the same settings and the
|
|
135
|
+
* new instructions, so the history says what changed and when. Call it
|
|
136
|
+
* where the feature's settings are read (or after each deploy).
|
|
137
|
+
*/
|
|
138
|
+
async function syncPrompt(operation) {
|
|
139
|
+
const live = await store.liveVersion(operation);
|
|
140
|
+
const now = await prompt(operation);
|
|
141
|
+
if (!live || !now || now === live.promptVersion)
|
|
142
|
+
return live;
|
|
143
|
+
try {
|
|
144
|
+
return await store.switchTo(operation, {
|
|
145
|
+
create: { settings: settingsOf(live), promptVersion: now },
|
|
146
|
+
kind: "DEPLOY",
|
|
147
|
+
reason: live.promptVersion
|
|
148
|
+
? `Instructions changed (${live.promptVersion} → ${now})`
|
|
149
|
+
: `Instructions recorded (${now})`,
|
|
150
|
+
by: null,
|
|
151
|
+
expectLive: live.id,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
catch (e) {
|
|
155
|
+
// Another request recorded the same deploy first.
|
|
156
|
+
if (e instanceof SettingsConflict)
|
|
157
|
+
return store.liveVersion(operation);
|
|
158
|
+
throw e;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/** Every switch, newest first, with the versions it went from and to. */
|
|
162
|
+
async function history(operation, limit = 50) {
|
|
163
|
+
const [changes, versions] = await Promise.all([
|
|
164
|
+
store.listChanges(operation, { limit }),
|
|
165
|
+
store.listVersions(operation),
|
|
166
|
+
]);
|
|
167
|
+
const byId = new Map(versions.map((v) => [v.id, v]));
|
|
168
|
+
return changes.flatMap((c) => {
|
|
169
|
+
const to = byId.get(c.toVersionId);
|
|
170
|
+
if (!to)
|
|
171
|
+
return [];
|
|
172
|
+
return [
|
|
173
|
+
{
|
|
174
|
+
...c,
|
|
175
|
+
to,
|
|
176
|
+
from: c.fromVersionId ? (byId.get(c.fromVersionId) ?? null) : null,
|
|
177
|
+
},
|
|
178
|
+
];
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
return { current, route, change, update, rollBack, syncPrompt, history };
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON with object keys sorted, so a case's input compares equal however
|
|
3
|
+
* its keys were ordered (Postgres jsonb reorders them on save).
|
|
4
|
+
*/
|
|
5
|
+
export declare function stableJson(value: unknown): string;
|
|
6
|
+
/** Drafted cases not yet in the answer key. */
|
|
7
|
+
export declare function newStarters<T extends {
|
|
8
|
+
input: unknown;
|
|
9
|
+
}>(starter: T[] | undefined, existing: {
|
|
10
|
+
input: unknown;
|
|
11
|
+
}[]): T[];
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON with object keys sorted, so a case's input compares equal however
|
|
3
|
+
* its keys were ordered (Postgres jsonb reorders them on save).
|
|
4
|
+
*/
|
|
5
|
+
export function stableJson(value) {
|
|
6
|
+
return JSON.stringify(value, (_key, v) => v && typeof v === "object" && !Array.isArray(v)
|
|
7
|
+
? Object.fromEntries(Object.entries(v).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0))
|
|
8
|
+
: v);
|
|
9
|
+
}
|
|
10
|
+
/** Drafted cases not yet in the answer key. */
|
|
11
|
+
export function newStarters(starter, existing) {
|
|
12
|
+
const have = new Set(existing.map((c) => stableJson(c.input)));
|
|
13
|
+
return (starter ?? []).filter((c) => !have.has(stableJson(c.input)));
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=stableJson.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stableJson.js","sourceRoot":"","sources":["../src/stableJson.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAU,EAAE,EAAE,CAChD,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,CAA4B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7D,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC3B,CACF;QACH,CAAC,CAAC,CAAC,CACN,CAAC;AACJ,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,WAAW,CACzB,OAAwB,EACxB,QAA8B;IAE9B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/D,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC"}
|
package/dist/stats.d.ts
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import type { CheckResult } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Summary numbers for a run: pass rates per check with a 95% range, so a
|
|
4
|
+
* small dataset doesn't look more certain than it is. Pure; no database.
|
|
5
|
+
*/
|
|
6
|
+
/** A pass rate with its 95% range; null when nothing was measured. */
|
|
7
|
+
export type Rate = {
|
|
8
|
+
passed: number;
|
|
9
|
+
/** Outputs the check applied to. */
|
|
10
|
+
n: number;
|
|
11
|
+
rate: number | null;
|
|
12
|
+
/** 95% Wilson interval. */
|
|
13
|
+
low: number | null;
|
|
14
|
+
high: number | null;
|
|
15
|
+
};
|
|
16
|
+
/** Wilson score interval: honest for small n and rates near 0 or 1. */
|
|
17
|
+
export declare function wilson(passed: number, n: number, z?: number): Rate;
|
|
18
|
+
/** One graded answer, as the metrics read it. */
|
|
19
|
+
export type ScoredOutput = {
|
|
20
|
+
caseId: string;
|
|
21
|
+
repeat: number;
|
|
22
|
+
/** null when the call failed. */
|
|
23
|
+
checks: CheckResult[] | null;
|
|
24
|
+
costUsd: number;
|
|
25
|
+
ms: number;
|
|
26
|
+
reused: boolean;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* A test's numbers: answers right, partial credit, each check's pass rate, consistency,
|
|
30
|
+
* cost, time, and reuse.
|
|
31
|
+
*/
|
|
32
|
+
export type SuiteMetrics = {
|
|
33
|
+
cases: number;
|
|
34
|
+
outputs: number;
|
|
35
|
+
failed: number;
|
|
36
|
+
/** Every applicable check passed. Failed calls count as not passing. */
|
|
37
|
+
allPass: Rate;
|
|
38
|
+
/**
|
|
39
|
+
* Partial credit summed over answers (e.g. items right of items
|
|
40
|
+
* expected), where the suite gives it; the headline when present.
|
|
41
|
+
*/
|
|
42
|
+
units: {
|
|
43
|
+
right: number;
|
|
44
|
+
total: number;
|
|
45
|
+
} | null;
|
|
46
|
+
byCheck: Record<string, Rate>;
|
|
47
|
+
/**
|
|
48
|
+
* Of cases run more than once, the share whose all-pass result was the
|
|
49
|
+
* same every time. Low: the model is inconsistent on these cases.
|
|
50
|
+
*/
|
|
51
|
+
consistency: Rate | null;
|
|
52
|
+
/** What grading's judge spent, apart from the model under test (runner). */
|
|
53
|
+
judgeCostUsd?: number;
|
|
54
|
+
/** The error most failed answers share (runner). */
|
|
55
|
+
failureReason?: string | null;
|
|
56
|
+
/**
|
|
57
|
+
* Per check, the mean of each measure its answers carried (brier,
|
|
58
|
+
* logLoss, …), and, where answers carried a confidence, the calibration
|
|
59
|
+
* error. Only checks with measures appear.
|
|
60
|
+
*/
|
|
61
|
+
measures?: Record<string, CheckMeasures>;
|
|
62
|
+
/** What this run spent: reused outputs cost nothing. */
|
|
63
|
+
costUsd: number;
|
|
64
|
+
/** What one answer costs on this model, reused or not. */
|
|
65
|
+
costPerAnswer: number | null;
|
|
66
|
+
/** How long one answer takes on this model. */
|
|
67
|
+
avgMs: number;
|
|
68
|
+
reused: number;
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Whether an answer passed every check that applied. A failed answer (null) didn't.
|
|
72
|
+
*/
|
|
73
|
+
export declare function allPassed(checks: CheckResult[] | null): boolean;
|
|
74
|
+
/** Sums each answer's partial credit; null when the suite gives none. */
|
|
75
|
+
export declare function sumUnits(outputs: {
|
|
76
|
+
checks: CheckResult[] | null;
|
|
77
|
+
}[]): {
|
|
78
|
+
right: number;
|
|
79
|
+
total: number;
|
|
80
|
+
} | null;
|
|
81
|
+
/** One answer's score from 0 to 1: its partial credit, else all-or-nothing. */
|
|
82
|
+
export declare function answerScore(checks: CheckResult[] | null): number;
|
|
83
|
+
/** A test's numbers from its graded answers. */
|
|
84
|
+
/** One check's measures across a test. */
|
|
85
|
+
export type CheckMeasures = {
|
|
86
|
+
/** Answers that carried measures. */
|
|
87
|
+
n: number;
|
|
88
|
+
/** The mean of each measure, over the answers that carried it. */
|
|
89
|
+
mean: Record<string, number>;
|
|
90
|
+
/** Expected calibration error, from confidence and correctness; null without both. */
|
|
91
|
+
calibrationError: number | null;
|
|
92
|
+
};
|
|
93
|
+
/** One check's measures across a test's answers; null when none carried any. */
|
|
94
|
+
export declare function measuresFor(outputs: ScoredOutput[], key: string): CheckMeasures | null;
|
|
95
|
+
/**
|
|
96
|
+
*
|
|
97
|
+
*/
|
|
98
|
+
export declare function suiteMetrics(outputs: ScoredOutput[], checkKeys: string[]): SuiteMetrics;
|
package/dist/stats.js
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { calibrationError } from "./decisions.js";
|
|
2
|
+
/** Wilson score interval: honest for small n and rates near 0 or 1. */
|
|
3
|
+
export function wilson(passed, n, z = 1.96) {
|
|
4
|
+
if (n === 0)
|
|
5
|
+
return { passed, n, rate: null, low: null, high: null };
|
|
6
|
+
const p = passed / n;
|
|
7
|
+
const denom = 1 + (z * z) / n;
|
|
8
|
+
const center = (p + (z * z) / (2 * n)) / denom;
|
|
9
|
+
const half = (z * Math.sqrt((p * (1 - p)) / n + (z * z) / (4 * n * n))) / denom;
|
|
10
|
+
return {
|
|
11
|
+
passed,
|
|
12
|
+
n,
|
|
13
|
+
rate: p,
|
|
14
|
+
low: Math.max(0, center - half),
|
|
15
|
+
high: Math.min(1, center + half),
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Whether an answer passed every check that applied. A failed answer (null) didn't.
|
|
20
|
+
*/
|
|
21
|
+
export function allPassed(checks) {
|
|
22
|
+
return checks !== null && checks.every((c) => c.pass !== false);
|
|
23
|
+
}
|
|
24
|
+
/** Sums each answer's partial credit; null when the suite gives none. */
|
|
25
|
+
export function sumUnits(outputs) {
|
|
26
|
+
let right = 0;
|
|
27
|
+
let total = 0;
|
|
28
|
+
let any = false;
|
|
29
|
+
for (const o of outputs)
|
|
30
|
+
for (const c of o.checks ?? [])
|
|
31
|
+
if (c.units) {
|
|
32
|
+
any = true;
|
|
33
|
+
right += c.units.right;
|
|
34
|
+
total += c.units.total;
|
|
35
|
+
}
|
|
36
|
+
return any ? { right, total } : null;
|
|
37
|
+
}
|
|
38
|
+
/** One answer's score from 0 to 1: its partial credit, else all-or-nothing. */
|
|
39
|
+
export function answerScore(checks) {
|
|
40
|
+
if (!checks)
|
|
41
|
+
return 0;
|
|
42
|
+
const u = checks.find((c) => c.units)?.units;
|
|
43
|
+
if (u)
|
|
44
|
+
return u.total ? u.right / u.total : 1;
|
|
45
|
+
return allPassed(checks) ? 1 : 0;
|
|
46
|
+
}
|
|
47
|
+
/** One check's measures across a test's answers; null when none carried any. */
|
|
48
|
+
export function measuresFor(outputs, key) {
|
|
49
|
+
const all = outputs
|
|
50
|
+
.map((o) => o.checks?.find((c) => c.key === key)?.measures)
|
|
51
|
+
.filter((m) => m !== undefined);
|
|
52
|
+
if (!all.length)
|
|
53
|
+
return null;
|
|
54
|
+
const sums = new Map();
|
|
55
|
+
for (const m of all)
|
|
56
|
+
for (const [name, v] of Object.entries(m)) {
|
|
57
|
+
const s = sums.get(name) ?? { total: 0, n: 0 };
|
|
58
|
+
s.total += v;
|
|
59
|
+
s.n++;
|
|
60
|
+
sums.set(name, s);
|
|
61
|
+
}
|
|
62
|
+
const pairs = all.flatMap((m) => m.confidence !== undefined && m.correct !== undefined
|
|
63
|
+
? [{ confidence: m.confidence, correct: m.correct === 1 }]
|
|
64
|
+
: []);
|
|
65
|
+
return {
|
|
66
|
+
n: all.length,
|
|
67
|
+
mean: Object.fromEntries([...sums].map(([k, s]) => [k, s.total / s.n])),
|
|
68
|
+
calibrationError: calibrationError(pairs),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
*
|
|
73
|
+
*/
|
|
74
|
+
export function suiteMetrics(outputs, checkKeys) {
|
|
75
|
+
const byCheck = {};
|
|
76
|
+
for (const key of checkKeys) {
|
|
77
|
+
const applied = outputs
|
|
78
|
+
.map((o) => o.checks?.find((c) => c.key === key))
|
|
79
|
+
.filter((c) => c !== undefined && c.pass !== null);
|
|
80
|
+
byCheck[key] = wilson(applied.filter((c) => c.pass).length, applied.length);
|
|
81
|
+
}
|
|
82
|
+
const measures = {};
|
|
83
|
+
for (const key of checkKeys) {
|
|
84
|
+
const m = measuresFor(outputs, key);
|
|
85
|
+
if (m)
|
|
86
|
+
measures[key] = m;
|
|
87
|
+
}
|
|
88
|
+
const byCase = new Map();
|
|
89
|
+
for (const o of outputs)
|
|
90
|
+
byCase.set(o.caseId, [
|
|
91
|
+
...(byCase.get(o.caseId) ?? []),
|
|
92
|
+
allPassed(o.checks),
|
|
93
|
+
]);
|
|
94
|
+
const repeated = [...byCase.values()].filter((r) => r.length > 1);
|
|
95
|
+
const called = outputs.filter((o) => !o.reused);
|
|
96
|
+
// Answers with a recorded time (older reused rows have none).
|
|
97
|
+
const timed = outputs.filter((o) => o.checks && o.ms > 0);
|
|
98
|
+
return {
|
|
99
|
+
cases: byCase.size,
|
|
100
|
+
outputs: outputs.length,
|
|
101
|
+
failed: outputs.filter((o) => !o.checks).length,
|
|
102
|
+
allPass: wilson(outputs.filter((o) => allPassed(o.checks)).length, outputs.length),
|
|
103
|
+
units: sumUnits(outputs),
|
|
104
|
+
byCheck,
|
|
105
|
+
...(Object.keys(measures).length ? { measures } : {}),
|
|
106
|
+
consistency: repeated.length
|
|
107
|
+
? wilson(repeated.filter((r) => r.every((x) => x === r[0])).length, repeated.length)
|
|
108
|
+
: null,
|
|
109
|
+
costUsd: called.reduce((t, o) => t + o.costUsd, 0),
|
|
110
|
+
costPerAnswer: timed.length
|
|
111
|
+
? timed.reduce((t, o) => t + o.costUsd, 0) / timed.length
|
|
112
|
+
: null,
|
|
113
|
+
avgMs: timed.length
|
|
114
|
+
? Math.round(timed.reduce((t, o) => t + o.ms, 0) / timed.length)
|
|
115
|
+
: 0,
|
|
116
|
+
reused: outputs.length - called.length,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=stats.js.map
|