@cef-ai/eval 0.0.0-stage → 0.1.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/README.md +202 -2
- package/dist/capture.d.ts +37 -0
- package/dist/capture.d.ts.map +1 -0
- package/dist/capture.js +70 -0
- package/dist/capture.js.map +1 -0
- package/dist/conformance.d.ts +6 -0
- package/dist/conformance.d.ts.map +1 -0
- package/dist/conformance.js +257 -0
- package/dist/conformance.js.map +1 -0
- package/dist/contract.d.ts +18 -0
- package/dist/contract.d.ts.map +1 -0
- package/dist/contract.js +176 -0
- package/dist/contract.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/layout.d.ts +112 -0
- package/dist/layout.d.ts.map +1 -0
- package/dist/layout.js +222 -0
- package/dist/layout.js.map +1 -0
- package/dist/migrate.d.ts +30 -0
- package/dist/migrate.d.ts.map +1 -0
- package/dist/migrate.js +113 -0
- package/dist/migrate.js.map +1 -0
- package/dist/pool.d.ts +13 -0
- package/dist/pool.d.ts.map +1 -0
- package/dist/pool.js +34 -0
- package/dist/pool.js.map +1 -0
- package/dist/result.d.ts +11 -0
- package/dist/result.d.ts.map +1 -0
- package/dist/result.js +72 -0
- package/dist/result.js.map +1 -0
- package/dist/run.d.ts +86 -0
- package/dist/run.d.ts.map +1 -0
- package/dist/run.js +240 -0
- package/dist/run.js.map +1 -0
- package/dist/score.d.ts +102 -0
- package/dist/score.d.ts.map +1 -0
- package/dist/score.js +433 -0
- package/dist/score.js.map +1 -0
- package/dist/storage.d.ts +218 -0
- package/dist/storage.d.ts.map +1 -0
- package/dist/storage.js +577 -0
- package/dist/storage.js.map +1 -0
- package/dist/summary.d.ts +105 -0
- package/dist/summary.d.ts.map +1 -0
- package/dist/summary.js +219 -0
- package/dist/summary.js.map +1 -0
- package/dist/types.d.ts +265 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +14 -0
- package/dist/types.js.map +1 -0
- package/package.json +27 -3
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import type { Case, DatasetDiff, Experiment, Header, Limits, RunRecord, VersionEntry, VersionManifest } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* How `putIfAbsent` decides who wins, DECLARED by the implementation:
|
|
4
|
+
* `conditional-write` (the server adjudicates, e.g. S3 `If-None-Match: *`) or
|
|
5
|
+
* `single-threaded` (the check and the write run with nothing suspending
|
|
6
|
+
* between them). No in-process test can tell a real compare-and-set from a
|
|
7
|
+
* write-then-verify, so `storeConformance` asks instead of guessing.
|
|
8
|
+
*/
|
|
9
|
+
export type StoreAtomicity = "conditional-write" | "single-threaded";
|
|
10
|
+
/** The storage seam. Keys are full paths; bodies are UTF-8 JSON text. */
|
|
11
|
+
export interface EvalStore {
|
|
12
|
+
/** Every key under `prefix`, across all pages, sorted. */
|
|
13
|
+
list(prefix: string): Promise<string[]>;
|
|
14
|
+
/** The body, or null when the key does not exist. Other failures throw. */
|
|
15
|
+
get(key: string): Promise<string | null>;
|
|
16
|
+
put(key: string, body: string): Promise<void>;
|
|
17
|
+
/** Write only if absent; true when this call wrote. */
|
|
18
|
+
putIfAbsent(key: string, body: string): Promise<boolean>;
|
|
19
|
+
/** Required by `storeConformance`; see {@link StoreAtomicity}. */
|
|
20
|
+
readonly atomicity?: StoreAtomicity;
|
|
21
|
+
/**
|
|
22
|
+
* Optional: the immediate child "directories" of `prefix` — each a full key
|
|
23
|
+
* prefix ending in `/`, once, sorted, across all pages (S3 `ListObjectsV2`
|
|
24
|
+
* with `Delimiter: "/"`). Lets the library find datasets and experiments
|
|
25
|
+
* without listing every case revision and run record under them. Without
|
|
26
|
+
* it they are derived from `list(prefix)`.
|
|
27
|
+
*/
|
|
28
|
+
listPrefixes?(prefix: string): Promise<string[]>;
|
|
29
|
+
}
|
|
30
|
+
/** The immediate child prefixes of `prefix`, through `store.listPrefixes` when it has one. */
|
|
31
|
+
export declare function childPrefixes(store: EvalStore, prefix: string): Promise<string[]>;
|
|
32
|
+
/** An in-memory store, for tests and dry runs. */
|
|
33
|
+
export declare function memoryStore(seed?: Record<string, string>): EvalStore & {
|
|
34
|
+
dump(): Record<string, string>;
|
|
35
|
+
};
|
|
36
|
+
export interface CreateDatasetInput {
|
|
37
|
+
dataset: string;
|
|
38
|
+
workflowId: string;
|
|
39
|
+
description?: string;
|
|
40
|
+
limits?: Limits;
|
|
41
|
+
createdAt?: string;
|
|
42
|
+
}
|
|
43
|
+
/** Create a dataset. Refuses a name the workflow already has (names are unique per workflow). */
|
|
44
|
+
export declare function createDataset(store: EvalStore, input: CreateDatasetInput): Promise<Header>;
|
|
45
|
+
export declare function getHeader(store: EvalStore, workflowId: string, dataset: string): Promise<Header | null>;
|
|
46
|
+
/** Read the header, or throw naming the dataset. */
|
|
47
|
+
export declare function requireHeader(store: EvalStore, workflowId: string, dataset: string): Promise<Header>;
|
|
48
|
+
/** Replace the header (description, limits, baselineId). Versions keep the snapshot they were cut with. */
|
|
49
|
+
export declare function updateHeader(store: EvalStore, header: Header): Promise<Header>;
|
|
50
|
+
/** Make `expId` the dataset's baseline — the experiment others are compared to. `null` clears it. */
|
|
51
|
+
export declare function setBaseline(store: EvalStore, workflowId: string, dataset: string, expId: string | null): Promise<Header>;
|
|
52
|
+
export interface DatasetSummary {
|
|
53
|
+
dataset: string;
|
|
54
|
+
workflowId: string;
|
|
55
|
+
description?: string;
|
|
56
|
+
baselineId?: string;
|
|
57
|
+
/** Live cases: not deleted, not archived. */
|
|
58
|
+
cases: number;
|
|
59
|
+
latestVersion: number | null;
|
|
60
|
+
/** Experiments that ran this dataset. */
|
|
61
|
+
experiments: number;
|
|
62
|
+
}
|
|
63
|
+
/** The workflows that have anything stored: one delimiter listing. */
|
|
64
|
+
export declare function listWorkflows(store: EvalStore): Promise<string[]>;
|
|
65
|
+
/**
|
|
66
|
+
* A workflow's datasets.
|
|
67
|
+
*
|
|
68
|
+
* Listed by part, never as one tree: cases, flags and versions are listed under
|
|
69
|
+
* their own prefixes. Experiments are a sibling of the datasets, so each one's
|
|
70
|
+
* meta is read once to see which dataset it ran.
|
|
71
|
+
*/
|
|
72
|
+
export declare function listDatasets(store: EvalStore, workflowId: string): Promise<DatasetSummary[]>;
|
|
73
|
+
/** Case ids in the working set. Archived ones only when asked; deleted ones never. */
|
|
74
|
+
export declare function listCaseIds(store: EvalStore, workflowId: string, dataset: string, opts?: {
|
|
75
|
+
includeArchived?: boolean;
|
|
76
|
+
}): Promise<string[]>;
|
|
77
|
+
export declare function listArchivedCaseIds(store: EvalStore, workflowId: string, dataset: string): Promise<string[]>;
|
|
78
|
+
/** Case ids whose tombstone is on. Their revisions stay, and their ids stay taken. */
|
|
79
|
+
export declare function listDeletedCaseIds(store: EvalStore, workflowId: string, dataset: string): Promise<string[]>;
|
|
80
|
+
export declare function listCaseRevisions(store: EvalStore, workflowId: string, dataset: string, caseId: string): Promise<number[]>;
|
|
81
|
+
export declare function getCaseRevision(store: EvalStore, workflowId: string, dataset: string, caseId: string, rev: number): Promise<Case | null>;
|
|
82
|
+
/** The latest revision of a live (not deleted) case, with its number. */
|
|
83
|
+
export declare function getCase(store: EvalStore, workflowId: string, dataset: string, caseId: string): Promise<{
|
|
84
|
+
case: Case;
|
|
85
|
+
rev: number;
|
|
86
|
+
} | null>;
|
|
87
|
+
/**
|
|
88
|
+
* Save a case: the first revision if it is new, the next one if its content
|
|
89
|
+
* changed, nothing if it is identical to the latest. This is what `cef eval
|
|
90
|
+
* push` and ROC's editor both call.
|
|
91
|
+
*
|
|
92
|
+
* SINGLE WRITER PER CASE for the "nothing if identical" promise. Revision
|
|
93
|
+
* numbers are safe under any concurrency (`putIfAbsent` gives each writer its
|
|
94
|
+
* own), but the identical-content check reads the latest revision before
|
|
95
|
+
* writing: two writers saving the SAME new content at once can both see the
|
|
96
|
+
* old latest and each write a revision, leaving two identical consecutive
|
|
97
|
+
* revisions. Nothing is lost — versions pin by sha256, and the next save of
|
|
98
|
+
* that content is a no-op — it is only a redundant revision. The same holds
|
|
99
|
+
* for `addCase`'s "refuses an id that exists".
|
|
100
|
+
*/
|
|
101
|
+
export declare function saveCase(store: EvalStore, workflowId: string, dataset: string, c: Case): Promise<{
|
|
102
|
+
rev: number;
|
|
103
|
+
changed: boolean;
|
|
104
|
+
created: boolean;
|
|
105
|
+
}>;
|
|
106
|
+
/** Add a new case; refuses an id that exists. */
|
|
107
|
+
export declare function addCase(store: EvalStore, workflowId: string, dataset: string, c: Case): Promise<{
|
|
108
|
+
rev: number;
|
|
109
|
+
}>;
|
|
110
|
+
/** Hide a case from new versions without touching its bytes; versions that pin it still load. */
|
|
111
|
+
export declare function archiveCase(store: EvalStore, workflowId: string, dataset: string, caseId: string): Promise<void>;
|
|
112
|
+
export declare function unarchiveCase(store: EvalStore, workflowId: string, dataset: string, caseId: string): Promise<void>;
|
|
113
|
+
/**
|
|
114
|
+
* Delete a case from the working set. Its revisions stay — a version may pin
|
|
115
|
+
* them, and a write-once store has no business removing what a reproducibility
|
|
116
|
+
* record points at — and its id stays taken.
|
|
117
|
+
*/
|
|
118
|
+
export declare function deleteCase(store: EvalStore, workflowId: string, dataset: string, caseId: string): Promise<{
|
|
119
|
+
pinnedBy: number[];
|
|
120
|
+
}>;
|
|
121
|
+
export declare function undeleteCase(store: EvalStore, workflowId: string, dataset: string, caseId: string): Promise<void>;
|
|
122
|
+
/** The working set: every live case at its latest revision. */
|
|
123
|
+
export declare function loadWorkingSet(store: EvalStore, workflowId: string, dataset: string): Promise<{
|
|
124
|
+
header: Header;
|
|
125
|
+
cases: Array<{
|
|
126
|
+
case: Case;
|
|
127
|
+
rev: number;
|
|
128
|
+
}>;
|
|
129
|
+
}>;
|
|
130
|
+
export declare function listVersions(store: EvalStore, workflowId: string, dataset: string): Promise<VersionManifest[]>;
|
|
131
|
+
export declare function latestVersionNumber(store: EvalStore, workflowId: string, dataset: string): Promise<number | null>;
|
|
132
|
+
export declare function getVersion(store: EvalStore, workflowId: string, dataset: string, version: number): Promise<VersionManifest>;
|
|
133
|
+
/**
|
|
134
|
+
* Freeze the working set as the next version: every live case pinned at its
|
|
135
|
+
* latest revision by sha256, with a snapshot of the header.
|
|
136
|
+
*/
|
|
137
|
+
export declare function cutVersion(store: EvalStore, workflowId: string, dataset: string, opts?: {
|
|
138
|
+
note?: string;
|
|
139
|
+
now?: Date;
|
|
140
|
+
}): Promise<VersionManifest>;
|
|
141
|
+
/** How the cases in `to` differ from those in `from`, by id and revision. Each list sorted. */
|
|
142
|
+
export declare function diffVersionEntries(from: ReadonlyArray<Pick<VersionEntry, "id" | "rev">>, to: ReadonlyArray<Pick<VersionEntry, "id" | "rev">>): DatasetDiff;
|
|
143
|
+
/** The note an automatic cut carries. `versionHistory` tells auto from manual cuts by its prefix. */
|
|
144
|
+
export declare const autoVersionNote: (d: DatasetDiff) => string;
|
|
145
|
+
/**
|
|
146
|
+
* The dataset version an experiment should run when none was chosen: the
|
|
147
|
+
* latest, if the working set (live cases at their latest revisions) is exactly
|
|
148
|
+
* what it pins; otherwise a new version, cut now with an `auto:` note.
|
|
149
|
+
*
|
|
150
|
+
* Revisions are write-once and numbered, so "same id at the same rev" is "same
|
|
151
|
+
* bytes" — no hashing is needed to decide.
|
|
152
|
+
*/
|
|
153
|
+
export declare function ensureDatasetVersion(store: EvalStore, workflowId: string, dataset: string, opts?: {
|
|
154
|
+
now?: Date;
|
|
155
|
+
}): Promise<{
|
|
156
|
+
version: number;
|
|
157
|
+
created: boolean;
|
|
158
|
+
diff: DatasetDiff;
|
|
159
|
+
manifest: VersionManifest;
|
|
160
|
+
}>;
|
|
161
|
+
export interface VersionHistoryEntry {
|
|
162
|
+
version: number;
|
|
163
|
+
createdAt: string;
|
|
164
|
+
note?: string;
|
|
165
|
+
/** Cut automatically by `ensureDatasetVersion` (its note starts `auto:`). */
|
|
166
|
+
auto: boolean;
|
|
167
|
+
cases: number;
|
|
168
|
+
/** Against the previous version; every case is `added` for v1. */
|
|
169
|
+
diff: DatasetDiff;
|
|
170
|
+
/** Experiments that ran this version. */
|
|
171
|
+
experiments: number;
|
|
172
|
+
}
|
|
173
|
+
/** A dataset's versions, newest first, each with what changed and how many experiments ran it. */
|
|
174
|
+
export declare function versionHistory(store: EvalStore, workflowId: string, dataset: string): Promise<VersionHistoryEntry[]>;
|
|
175
|
+
/** A version's cases, each checked against the sha256 the version pinned. */
|
|
176
|
+
export declare function loadVersion(store: EvalStore, workflowId: string, dataset: string, version: number): Promise<{
|
|
177
|
+
manifest: VersionManifest;
|
|
178
|
+
cases: Array<{
|
|
179
|
+
case: Case;
|
|
180
|
+
rev: number;
|
|
181
|
+
}>;
|
|
182
|
+
}>;
|
|
183
|
+
/** Write an experiment's meta. Mutable: it moves running → done/cancelled/error. */
|
|
184
|
+
export declare function putExperiment(store: EvalStore, exp: Experiment): Promise<void>;
|
|
185
|
+
/**
|
|
186
|
+
* Claim the next attempt of an experiment: `putIfAbsent` on `attempts/a<n>.json`
|
|
187
|
+
* from just past the highest attempt on file (or `atLeast`, the meta's), n
|
|
188
|
+
* upward until this call wins one. Two resumers of one experiment therefore
|
|
189
|
+
* never hold the same attempt, and so never publish into the same run
|
|
190
|
+
* contexts — reading the meta's `attempt` and writing it back +1 would let both
|
|
191
|
+
* compute the same number.
|
|
192
|
+
*/
|
|
193
|
+
export declare function claimAttempt(store: EvalStore, workflowId: string, expId: string, opts?: {
|
|
194
|
+
atLeast?: number;
|
|
195
|
+
claimedAt?: string;
|
|
196
|
+
}): Promise<number>;
|
|
197
|
+
export declare function getExperiment(store: EvalStore, workflowId: string, expId: string): Promise<Experiment | null>;
|
|
198
|
+
/**
|
|
199
|
+
* A workflow's experiments, oldest first (ids sort by creation time); only one
|
|
200
|
+
* dataset's when asked. One delimiter listing and one read per experiment —
|
|
201
|
+
* never a listing of their run records.
|
|
202
|
+
*/
|
|
203
|
+
export declare function listExperiments(store: EvalStore, workflowId: string, opts?: {
|
|
204
|
+
dataset?: string;
|
|
205
|
+
}): Promise<Experiment[]>;
|
|
206
|
+
/** Write one run record, once. False when it was already there (a resumed experiment). */
|
|
207
|
+
export declare function putRunRecord(store: EvalStore, workflowId: string, expId: string, run: RunRecord): Promise<boolean>;
|
|
208
|
+
export declare function getRunRecord(store: EvalStore, workflowId: string, expId: string, caseId: string, repeat: number): Promise<RunRecord | null>;
|
|
209
|
+
/** Every run record of an experiment, by case id then repeat. */
|
|
210
|
+
export declare function listRunRecords(store: EvalStore, workflowId: string, expId: string): Promise<RunRecord[]>;
|
|
211
|
+
/** An experiment and its runs. */
|
|
212
|
+
export declare function loadExperiment(store: EvalStore, workflowId: string, expId: string): Promise<{
|
|
213
|
+
experiment: Experiment;
|
|
214
|
+
runs: RunRecord[];
|
|
215
|
+
}>;
|
|
216
|
+
/** Find an experiment by id when the workflow is not known (the CLI's `compare`). */
|
|
217
|
+
export declare function findExperiment(store: EvalStore, expId: string): Promise<Experiment | null>;
|
|
218
|
+
//# sourceMappingURL=storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
|