@crowandraven/evalkeeper 0.0.0-stage → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +6 -2
- package/bin/evalkeeper.mjs +9 -0
- package/dist/attention.d.ts +49 -0
- package/dist/attention.js +49 -0
- package/dist/attention.js.map +1 -0
- package/dist/board.d.ts +57 -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 +76 -0
- package/dist/models.js +56 -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 +202 -0
- package/dist/runner.js +734 -0
- package/dist/runner.js.map +1 -0
- package/dist/settings.d.ts +196 -0
- package/dist/settings.js +272 -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 +151 -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 +152 -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 +362 -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 +225 -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 +113 -0
- package/dist/weekly.js.map +1 -0
- package/package.json +81 -4
- package/src/attention.ts +89 -0
- package/src/board.ts +58 -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 +149 -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 +127 -0
- package/src/prune.ts +95 -0
- package/src/quickSet.ts +55 -0
- package/src/runner.ts +1010 -0
- package/src/settings.ts +441 -0
- package/src/stableJson.ts +24 -0
- package/src/stats.ts +215 -0
- package/src/store.ts +172 -0
- package/src/suggest.ts +247 -0
- package/src/summary.ts +109 -0
- package/src/testing.ts +415 -0
- package/src/timeout.ts +14 -0
- package/src/types.ts +258 -0
- package/src/upkeepRules.ts +46 -0
- package/src/util.ts +17 -0
- package/src/weekly.ts +169 -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,196 @@
|
|
|
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,
|
|
14
|
+
* output limit, and temperature.
|
|
15
|
+
*/
|
|
16
|
+
export type Settings = {
|
|
17
|
+
model: string;
|
|
18
|
+
fallbackModel: string | null;
|
|
19
|
+
/** Null: the model's own default. */
|
|
20
|
+
reasoningEffort: ReasoningEffort | null;
|
|
21
|
+
/** Null: the call's own default. */
|
|
22
|
+
maxOutputTokens: number | null;
|
|
23
|
+
/**
|
|
24
|
+
* The sampling temperature the feature sends. Null or unset: none sent,
|
|
25
|
+
* so the model's own default. Tests record it, and a test at another
|
|
26
|
+
* temperature than the live one is out of date.
|
|
27
|
+
*/
|
|
28
|
+
temperature?: number | null;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* One numbered version of a feature's settings, with the instructions it ran with. Never changed.
|
|
32
|
+
*/
|
|
33
|
+
export type SettingsVersion = Settings & {
|
|
34
|
+
id: string;
|
|
35
|
+
operation: string;
|
|
36
|
+
/** 1, 2, 3, … per feature. */
|
|
37
|
+
number: number;
|
|
38
|
+
/** The instructions' hash when this version was made. */
|
|
39
|
+
promptVersion: string | null;
|
|
40
|
+
createdAt: Date;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* CHANGE: a person changed a setting. PROMOTE: a model was made live or
|
|
44
|
+
* the fallback from a test, with the test as evidence. ROLLBACK: an
|
|
45
|
+
* earlier version made live again. DEPLOY: the instructions changed in code
|
|
46
|
+
* under the live settings.
|
|
47
|
+
*/
|
|
48
|
+
export type ChangeKind = "CHANGE" | "PROMOTE" | "ROLLBACK" | "DEPLOY";
|
|
49
|
+
/**
|
|
50
|
+
* One switch in a feature's history: its kind, the versions it went from and to, who, why,
|
|
51
|
+
* and the evidence.
|
|
52
|
+
*/
|
|
53
|
+
export type SettingsChange = {
|
|
54
|
+
id: string;
|
|
55
|
+
operation: string;
|
|
56
|
+
kind: ChangeKind;
|
|
57
|
+
fromVersionId: string | null;
|
|
58
|
+
toVersionId: string;
|
|
59
|
+
reason: string | null;
|
|
60
|
+
/** Who made it; null for the system (a deploy, the first default). */
|
|
61
|
+
by: string | null;
|
|
62
|
+
/** Why it's safe: the tests compared, the verdict. */
|
|
63
|
+
evidence: unknown;
|
|
64
|
+
createdAt: Date;
|
|
65
|
+
};
|
|
66
|
+
/** One atomic switch: maybe a new version, then live, then the log. */
|
|
67
|
+
export type SettingsSwitch = {
|
|
68
|
+
/** Make a new version with these settings (numbered next). */
|
|
69
|
+
create?: {
|
|
70
|
+
settings: Settings;
|
|
71
|
+
promptVersion: string | null;
|
|
72
|
+
};
|
|
73
|
+
/** Or make this existing version live. */
|
|
74
|
+
versionId?: string;
|
|
75
|
+
kind: ChangeKind;
|
|
76
|
+
reason: string | null;
|
|
77
|
+
by: string | null;
|
|
78
|
+
evidence?: unknown;
|
|
79
|
+
/**
|
|
80
|
+
* The live version this switch was decided against (null: none). The
|
|
81
|
+
* store refuses the switch if another one got in first.
|
|
82
|
+
*/
|
|
83
|
+
expectLive: string | null;
|
|
84
|
+
};
|
|
85
|
+
/** Where versions live. `@crowandraven/evalkeeper-prisma` and `memoryStore` implement it. */
|
|
86
|
+
export interface SettingsStore {
|
|
87
|
+
liveVersion(operation: string): Promise<SettingsVersion | null>;
|
|
88
|
+
/** Newest first. */
|
|
89
|
+
listVersions(operation: string): Promise<SettingsVersion[]>;
|
|
90
|
+
/** Newest first. */
|
|
91
|
+
listChanges(operation: string, opts?: {
|
|
92
|
+
limit?: number;
|
|
93
|
+
}): Promise<SettingsChange[]>;
|
|
94
|
+
/**
|
|
95
|
+
* Applies a switch atomically. Throws SettingsConflict when the live
|
|
96
|
+
* version is no longer `expectLive`.
|
|
97
|
+
*/
|
|
98
|
+
switchTo(operation: string, s: SettingsSwitch): Promise<SettingsVersion>;
|
|
99
|
+
}
|
|
100
|
+
/** Another change landed first: reload and decide again. */
|
|
101
|
+
export declare class SettingsConflict extends Error {
|
|
102
|
+
constructor(operation: string);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* A feature has no settings: no version yet, and no default in code. Apps
|
|
106
|
+
* whose models are chosen in an admin page, not in code, see this until
|
|
107
|
+
* the feature's first version is recorded (`seed` or `change`).
|
|
108
|
+
*/
|
|
109
|
+
export declare class NoSettingsError extends Error {
|
|
110
|
+
/** The feature with no settings. */
|
|
111
|
+
readonly operation: string;
|
|
112
|
+
constructor(operation: string);
|
|
113
|
+
}
|
|
114
|
+
/** Whether two settings are the same in every field. */
|
|
115
|
+
export declare function sameSettings(a: Settings, b: Settings): boolean;
|
|
116
|
+
/** Just the settings of a version. */
|
|
117
|
+
export declare function settingsOf(v: Settings): Settings;
|
|
118
|
+
/** What changed between two settings, in plain words. */
|
|
119
|
+
export declare function describeChange(from: Settings | null, to: Settings, label?: (model: string) => string): string[];
|
|
120
|
+
/** A switch with the versions it went from and to, for a history page. */
|
|
121
|
+
export type HistoryEntry = SettingsChange & {
|
|
122
|
+
to: SettingsVersion;
|
|
123
|
+
from: SettingsVersion | null;
|
|
124
|
+
};
|
|
125
|
+
/**
|
|
126
|
+
* Versioned settings: each feature's settings as numbered versions, with every change,
|
|
127
|
+
* promotion, rollback, and deploy logged. Its `route` is the runner's route.
|
|
128
|
+
*
|
|
129
|
+
* @example
|
|
130
|
+
* ```ts
|
|
131
|
+
* const settings = createSettings({
|
|
132
|
+
* store: prismaSettingsStore(prisma),
|
|
133
|
+
* defaults: (op) => DEFAULTS[op],
|
|
134
|
+
* promptVersion: (op) => PROMPT_VERSIONS[op],
|
|
135
|
+
* });
|
|
136
|
+
* await settings.update("ticket_triage", { model: "claude-haiku-5-5" }, {
|
|
137
|
+
* by: admin.name,
|
|
138
|
+
* reason: "About as accurate at half the cost",
|
|
139
|
+
* evidence: { runId },
|
|
140
|
+
* });
|
|
141
|
+
* await settings.rollBack("ticket_triage", versionId, { by: admin.name, reason: "Worse in production" });
|
|
142
|
+
* ```
|
|
143
|
+
*
|
|
144
|
+
* When models are chosen in an admin page rather than in code, return null
|
|
145
|
+
* from `defaults` and record each feature's existing config as version 1
|
|
146
|
+
* with `seed`:
|
|
147
|
+
*
|
|
148
|
+
* ```ts
|
|
149
|
+
* const settings = createSettings({ store, defaults: () => null });
|
|
150
|
+
* for (const row of await db.aiConfig.findMany())
|
|
151
|
+
* await settings.seed(row.operation, settingsFromRow(row), {
|
|
152
|
+
* by: null,
|
|
153
|
+
* reason: "Imported from the admin config",
|
|
154
|
+
* });
|
|
155
|
+
* ```
|
|
156
|
+
*/
|
|
157
|
+
export declare function createSettings(opts: {
|
|
158
|
+
store: SettingsStore;
|
|
159
|
+
/**
|
|
160
|
+
* Each feature's settings in code, used until it's first changed. Null:
|
|
161
|
+
* the feature has no default, and reading its settings throws
|
|
162
|
+
* `NoSettingsError` until a version is recorded.
|
|
163
|
+
*/
|
|
164
|
+
defaults: (operation: string) => Settings | null;
|
|
165
|
+
/** The instructions' current hash, so a version records what it ran. */
|
|
166
|
+
promptVersion?: (operation: string) => string | Promise<string>;
|
|
167
|
+
}): {
|
|
168
|
+
current: (operation: string) => Promise<{
|
|
169
|
+
settings: Settings;
|
|
170
|
+
version: SettingsVersion | null;
|
|
171
|
+
}>;
|
|
172
|
+
route: (operation: string) => Promise<Route>;
|
|
173
|
+
change: (operation: string, next: Settings, by: {
|
|
174
|
+
by: string | null;
|
|
175
|
+
reason: string | null;
|
|
176
|
+
evidence?: unknown;
|
|
177
|
+
}) => Promise<SettingsVersion | null>;
|
|
178
|
+
update: (operation: string, patch: Partial<Settings>, by: {
|
|
179
|
+
by: string | null;
|
|
180
|
+
reason: string | null;
|
|
181
|
+
evidence?: unknown;
|
|
182
|
+
}) => Promise<SettingsVersion | null>;
|
|
183
|
+
rollBack: (operation: string, versionId: string, by: {
|
|
184
|
+
by: string | null;
|
|
185
|
+
reason: string;
|
|
186
|
+
}) => Promise<SettingsVersion>;
|
|
187
|
+
syncPrompt: (operation: string) => Promise<SettingsVersion | null>;
|
|
188
|
+
seed: (operation: string, initial: Settings, by: {
|
|
189
|
+
by: string | null;
|
|
190
|
+
reason: string | null;
|
|
191
|
+
promptVersion?: string | null;
|
|
192
|
+
}) => Promise<SettingsVersion | null>;
|
|
193
|
+
history: (operation: string, limit?: number) => Promise<HistoryEntry[]>;
|
|
194
|
+
};
|
|
195
|
+
/** What createSettings returns. */
|
|
196
|
+
export type VersionedSettings = ReturnType<typeof createSettings>;
|
package/dist/settings.js
ADDED
|
@@ -0,0 +1,272 @@
|
|
|
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
|
+
/**
|
|
9
|
+
* A feature has no settings: no version yet, and no default in code. Apps
|
|
10
|
+
* whose models are chosen in an admin page, not in code, see this until
|
|
11
|
+
* the feature's first version is recorded (`seed` or `change`).
|
|
12
|
+
*/
|
|
13
|
+
export class NoSettingsError extends Error {
|
|
14
|
+
/** The feature with no settings. */
|
|
15
|
+
operation;
|
|
16
|
+
constructor(operation) {
|
|
17
|
+
super(`${operation} has no settings yet: no version, and no default in code.`);
|
|
18
|
+
this.name = "NoSettingsError";
|
|
19
|
+
this.operation = operation;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/** Whether two settings are the same in every field. */
|
|
23
|
+
export function sameSettings(a, b) {
|
|
24
|
+
return (a.model === b.model &&
|
|
25
|
+
a.fallbackModel === b.fallbackModel &&
|
|
26
|
+
a.reasoningEffort === b.reasoningEffort &&
|
|
27
|
+
a.maxOutputTokens === b.maxOutputTokens &&
|
|
28
|
+
(a.temperature ?? null) === (b.temperature ?? null));
|
|
29
|
+
}
|
|
30
|
+
/** Just the settings of a version. */
|
|
31
|
+
export function settingsOf(v) {
|
|
32
|
+
return {
|
|
33
|
+
model: v.model,
|
|
34
|
+
fallbackModel: v.fallbackModel,
|
|
35
|
+
reasoningEffort: v.reasoningEffort,
|
|
36
|
+
maxOutputTokens: v.maxOutputTokens,
|
|
37
|
+
temperature: v.temperature ?? null,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/** What changed between two settings, in plain words. */
|
|
41
|
+
export function describeChange(from, to, label = (m) => m) {
|
|
42
|
+
if (!from)
|
|
43
|
+
return [`Live: ${label(to.model)}`];
|
|
44
|
+
const out = [];
|
|
45
|
+
if (from.model !== to.model)
|
|
46
|
+
out.push(`Live: ${label(from.model)} → ${label(to.model)}`);
|
|
47
|
+
if (from.fallbackModel !== to.fallbackModel)
|
|
48
|
+
out.push(`Fallback: ${from.fallbackModel ? label(from.fallbackModel) : "none"} → ${to.fallbackModel ? label(to.fallbackModel) : "none"}`);
|
|
49
|
+
if (from.reasoningEffort !== to.reasoningEffort)
|
|
50
|
+
out.push(`Reasoning: ${from.reasoningEffort ?? "default"} → ${to.reasoningEffort ?? "default"}`);
|
|
51
|
+
if (from.maxOutputTokens !== to.maxOutputTokens)
|
|
52
|
+
out.push(`Output limit: ${from.maxOutputTokens ?? "default"} → ${to.maxOutputTokens ?? "default"}`);
|
|
53
|
+
if ((from.temperature ?? null) !== (to.temperature ?? null))
|
|
54
|
+
out.push(`Temperature: ${from.temperature ?? "default"} → ${to.temperature ?? "default"}`);
|
|
55
|
+
return out;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Versioned settings: each feature's settings as numbered versions, with every change,
|
|
59
|
+
* promotion, rollback, and deploy logged. Its `route` is the runner's route.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```ts
|
|
63
|
+
* const settings = createSettings({
|
|
64
|
+
* store: prismaSettingsStore(prisma),
|
|
65
|
+
* defaults: (op) => DEFAULTS[op],
|
|
66
|
+
* promptVersion: (op) => PROMPT_VERSIONS[op],
|
|
67
|
+
* });
|
|
68
|
+
* await settings.update("ticket_triage", { model: "claude-haiku-5-5" }, {
|
|
69
|
+
* by: admin.name,
|
|
70
|
+
* reason: "About as accurate at half the cost",
|
|
71
|
+
* evidence: { runId },
|
|
72
|
+
* });
|
|
73
|
+
* await settings.rollBack("ticket_triage", versionId, { by: admin.name, reason: "Worse in production" });
|
|
74
|
+
* ```
|
|
75
|
+
*
|
|
76
|
+
* When models are chosen in an admin page rather than in code, return null
|
|
77
|
+
* from `defaults` and record each feature's existing config as version 1
|
|
78
|
+
* with `seed`:
|
|
79
|
+
*
|
|
80
|
+
* ```ts
|
|
81
|
+
* const settings = createSettings({ store, defaults: () => null });
|
|
82
|
+
* for (const row of await db.aiConfig.findMany())
|
|
83
|
+
* await settings.seed(row.operation, settingsFromRow(row), {
|
|
84
|
+
* by: null,
|
|
85
|
+
* reason: "Imported from the admin config",
|
|
86
|
+
* });
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
export function createSettings(opts) {
|
|
90
|
+
const { store } = opts;
|
|
91
|
+
const prompt = async (op) => opts.promptVersion ? await opts.promptVersion(op) : null;
|
|
92
|
+
/**
|
|
93
|
+
* The live settings: the live version's, else the default from code.
|
|
94
|
+
* Throws `NoSettingsError` when the feature has neither.
|
|
95
|
+
*/
|
|
96
|
+
async function current(operation) {
|
|
97
|
+
const version = await store.liveVersion(operation);
|
|
98
|
+
if (version)
|
|
99
|
+
return { settings: settingsOf(version), version };
|
|
100
|
+
const fallback = opts.defaults(operation);
|
|
101
|
+
if (!fallback)
|
|
102
|
+
throw new NoSettingsError(operation);
|
|
103
|
+
return { settings: fallback, version };
|
|
104
|
+
}
|
|
105
|
+
/** The runner's route for a feature, from its live settings; throws `NoSettingsError` when it has none. */
|
|
106
|
+
async function route(operation) {
|
|
107
|
+
const { settings } = await current(operation);
|
|
108
|
+
return {
|
|
109
|
+
model: settings.model,
|
|
110
|
+
fallbackModel: settings.fallbackModel,
|
|
111
|
+
reasoningEffort: settings.reasoningEffort,
|
|
112
|
+
temperature: settings.temperature ?? null,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Makes new settings live as a new version. The first change to a
|
|
117
|
+
* feature first records its default as version 1, so there's always
|
|
118
|
+
* something to roll back to; a feature with no default gets `next` as
|
|
119
|
+
* version 1. With `evidence`, it's a promotion. Returns null when
|
|
120
|
+
* nothing changed.
|
|
121
|
+
*/
|
|
122
|
+
async function change(operation, next, by) {
|
|
123
|
+
const promptVersion = await prompt(operation);
|
|
124
|
+
let live = await store.liveVersion(operation);
|
|
125
|
+
if (!live) {
|
|
126
|
+
const initial = opts.defaults(operation);
|
|
127
|
+
if (!initial)
|
|
128
|
+
return store.switchTo(operation, {
|
|
129
|
+
create: { settings: settingsOf(next), promptVersion },
|
|
130
|
+
kind: by.evidence === undefined ? "CHANGE" : "PROMOTE",
|
|
131
|
+
reason: by.reason,
|
|
132
|
+
by: by.by,
|
|
133
|
+
evidence: by.evidence,
|
|
134
|
+
expectLive: null,
|
|
135
|
+
});
|
|
136
|
+
if (sameSettings(initial, next))
|
|
137
|
+
return null;
|
|
138
|
+
live = await store.switchTo(operation, {
|
|
139
|
+
create: { settings: initial, promptVersion },
|
|
140
|
+
kind: "CHANGE",
|
|
141
|
+
reason: "The default from code, before the first change",
|
|
142
|
+
by: null,
|
|
143
|
+
expectLive: null,
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
else if (sameSettings(settingsOf(live), next))
|
|
147
|
+
return null;
|
|
148
|
+
return store.switchTo(operation, {
|
|
149
|
+
create: { settings: settingsOf(next), promptVersion },
|
|
150
|
+
kind: by.evidence === undefined ? "CHANGE" : "PROMOTE",
|
|
151
|
+
reason: by.reason,
|
|
152
|
+
by: by.by,
|
|
153
|
+
evidence: by.evidence,
|
|
154
|
+
expectLive: live.id,
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Changes only some settings (e.g. the fallback), keeping the rest.
|
|
159
|
+
* Throws `NoSettingsError` for a feature with no settings to keep: use
|
|
160
|
+
* `change` or `seed` with full settings first.
|
|
161
|
+
*/
|
|
162
|
+
async function update(operation, patch, by) {
|
|
163
|
+
const { settings } = await current(operation);
|
|
164
|
+
return change(operation, { ...settings, ...patch }, by);
|
|
165
|
+
}
|
|
166
|
+
/** Makes an earlier version live again. */
|
|
167
|
+
async function rollBack(operation, versionId, by) {
|
|
168
|
+
const versions = await store.listVersions(operation);
|
|
169
|
+
const to = versions.find((v) => v.id === versionId);
|
|
170
|
+
if (!to)
|
|
171
|
+
throw new Error("No such version for this feature");
|
|
172
|
+
const live = await store.liveVersion(operation);
|
|
173
|
+
if (live?.id === to.id)
|
|
174
|
+
return to;
|
|
175
|
+
return store.switchTo(operation, {
|
|
176
|
+
versionId: to.id,
|
|
177
|
+
kind: "ROLLBACK",
|
|
178
|
+
reason: by.reason,
|
|
179
|
+
by: by.by,
|
|
180
|
+
expectLive: live?.id ?? null,
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Instructions live in code, so a deploy can change them under live
|
|
185
|
+
* settings. When it has, records a version with the same settings and the
|
|
186
|
+
* new instructions, so the history says what changed and when. Call it
|
|
187
|
+
* where the feature's settings are read (or after each deploy).
|
|
188
|
+
*/
|
|
189
|
+
async function syncPrompt(operation) {
|
|
190
|
+
const live = await store.liveVersion(operation);
|
|
191
|
+
const now = await prompt(operation);
|
|
192
|
+
if (!live || !now || now === live.promptVersion)
|
|
193
|
+
return live;
|
|
194
|
+
try {
|
|
195
|
+
return await store.switchTo(operation, {
|
|
196
|
+
create: { settings: settingsOf(live), promptVersion: now },
|
|
197
|
+
kind: "DEPLOY",
|
|
198
|
+
reason: live.promptVersion
|
|
199
|
+
? `Instructions changed (${live.promptVersion} → ${now})`
|
|
200
|
+
: `Instructions recorded (${now})`,
|
|
201
|
+
by: null,
|
|
202
|
+
expectLive: live.id,
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
catch (e) {
|
|
206
|
+
// Another request recorded the same deploy first.
|
|
207
|
+
if (e instanceof SettingsConflict)
|
|
208
|
+
return store.liveVersion(operation);
|
|
209
|
+
throw e;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Records existing settings as a feature's version 1, for an app moving
|
|
214
|
+
* its model choices into versioned settings (an import from its own
|
|
215
|
+
* config table). Only when the feature has no version yet: otherwise it
|
|
216
|
+
* changes nothing and returns null, so an import can run again safely.
|
|
217
|
+
* `promptVersion` defaults to the instructions' current hash.
|
|
218
|
+
*/
|
|
219
|
+
async function seed(operation, initial, by) {
|
|
220
|
+
if (await store.liveVersion(operation))
|
|
221
|
+
return null;
|
|
222
|
+
const promptVersion = by.promptVersion !== undefined
|
|
223
|
+
? by.promptVersion
|
|
224
|
+
: await prompt(operation);
|
|
225
|
+
try {
|
|
226
|
+
return await store.switchTo(operation, {
|
|
227
|
+
create: { settings: settingsOf(initial), promptVersion },
|
|
228
|
+
kind: "CHANGE",
|
|
229
|
+
reason: by.reason,
|
|
230
|
+
by: by.by,
|
|
231
|
+
expectLive: null,
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
catch (e) {
|
|
235
|
+
// Another request seeded it first: that version stands.
|
|
236
|
+
if (e instanceof SettingsConflict)
|
|
237
|
+
return null;
|
|
238
|
+
throw e;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
/** Every switch, newest first, with the versions it went from and to. */
|
|
242
|
+
async function history(operation, limit = 50) {
|
|
243
|
+
const [changes, versions] = await Promise.all([
|
|
244
|
+
store.listChanges(operation, { limit }),
|
|
245
|
+
store.listVersions(operation),
|
|
246
|
+
]);
|
|
247
|
+
const byId = new Map(versions.map((v) => [v.id, v]));
|
|
248
|
+
return changes.flatMap((c) => {
|
|
249
|
+
const to = byId.get(c.toVersionId);
|
|
250
|
+
if (!to)
|
|
251
|
+
return [];
|
|
252
|
+
return [
|
|
253
|
+
{
|
|
254
|
+
...c,
|
|
255
|
+
to,
|
|
256
|
+
from: c.fromVersionId ? (byId.get(c.fromVersionId) ?? null) : null,
|
|
257
|
+
},
|
|
258
|
+
];
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
return {
|
|
262
|
+
current,
|
|
263
|
+
route,
|
|
264
|
+
change,
|
|
265
|
+
update,
|
|
266
|
+
rollBack,
|
|
267
|
+
syncPrompt,
|
|
268
|
+
seed,
|
|
269
|
+
history,
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
//# 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"}
|