@pfoundation/ocadvisor 26.9.0 → 26.9.2
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 +420 -43
- package/dist/artificialAnalysis.d.ts +4 -0
- package/dist/artificialAnalysis.d.ts.map +1 -0
- package/dist/artificialAnalysis.js +77 -0
- package/dist/artificialAnalysis.js.map +1 -0
- package/dist/benchmarkConfig.d.ts +19 -0
- package/dist/benchmarkConfig.d.ts.map +1 -0
- package/dist/benchmarkConfig.js +58 -0
- package/dist/benchmarkConfig.js.map +1 -0
- package/dist/benchmarkEvidence.d.ts +37 -0
- package/dist/benchmarkEvidence.d.ts.map +1 -0
- package/dist/benchmarkEvidence.js +81 -0
- package/dist/benchmarkEvidence.js.map +1 -0
- package/dist/benchmarkMatch.d.ts +57 -0
- package/dist/benchmarkMatch.d.ts.map +1 -0
- package/dist/benchmarkMatch.js +236 -0
- package/dist/benchmarkMatch.js.map +1 -0
- package/dist/benchmarkStore.d.ts +44 -0
- package/dist/benchmarkStore.d.ts.map +1 -0
- package/dist/benchmarkStore.js +308 -0
- package/dist/benchmarkStore.js.map +1 -0
- package/dist/benchmarkTypes.d.ts +48 -0
- package/dist/benchmarkTypes.d.ts.map +1 -0
- package/dist/benchmarkTypes.js +298 -0
- package/dist/benchmarkTypes.js.map +1 -0
- package/dist/benchmarkUpdate.d.ts +33 -0
- package/dist/benchmarkUpdate.d.ts.map +1 -0
- package/dist/benchmarkUpdate.js +327 -0
- package/dist/benchmarkUpdate.js.map +1 -0
- package/dist/cli.d.ts +13 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +377 -0
- package/dist/cli.js.map +1 -0
- package/dist/data/artificialAnalysis.mappings.json +197 -0
- package/dist/data/artificialAnalysis.snapshot.json +17684 -0
- package/dist/modelProfiles.d.ts +45 -0
- package/dist/modelProfiles.d.ts.map +1 -0
- package/dist/modelProfiles.js +141 -0
- package/dist/modelProfiles.js.map +1 -0
- package/dist/ocAdvisor.d.ts +152 -7
- package/dist/ocAdvisor.d.ts.map +1 -1
- package/dist/ocAdvisor.js +681 -54
- package/dist/ocAdvisor.js.map +1 -1
- package/dist/typesafeGate.d.ts +89 -0
- package/dist/typesafeGate.d.ts.map +1 -0
- package/dist/typesafeGate.js +463 -0
- package/dist/typesafeGate.js.map +1 -0
- package/dist/typesafeState.d.ts +94 -0
- package/dist/typesafeState.d.ts.map +1 -0
- package/dist/typesafeState.js +301 -0
- package/dist/typesafeState.js.map +1 -0
- package/package.json +9 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"benchmarkTypes.js","sourceRoot":"","sources":["../src/benchmarkTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export declare const AA_API_KEY_ENV = "ARTIFICIAL_ANALYSIS_API_KEY";
|
|
2
|
+
export declare const BENCHMARK_UPDATE_TIMEOUT_MS = 30000;
|
|
3
|
+
export declare const BENCHMARK_UPDATE_MAX_BYTES: number;
|
|
4
|
+
export type BenchmarkUpdateErrorCode = "missing_key" | "invalid_path" | "timeout" | "too_large" | "http" | "transport" | "invalid_response" | "busy" | "write_failed";
|
|
5
|
+
export interface BenchmarkUpdateSuccess {
|
|
6
|
+
ok: true;
|
|
7
|
+
path: string;
|
|
8
|
+
fetchedAt: string;
|
|
9
|
+
modelCount: number;
|
|
10
|
+
contentHash: string;
|
|
11
|
+
unchanged: boolean;
|
|
12
|
+
metricCoverage: Record<string, number>;
|
|
13
|
+
}
|
|
14
|
+
export interface BenchmarkUpdateFailure {
|
|
15
|
+
ok: false;
|
|
16
|
+
code: BenchmarkUpdateErrorCode;
|
|
17
|
+
message: string;
|
|
18
|
+
status?: number;
|
|
19
|
+
}
|
|
20
|
+
export type BenchmarkUpdateResult = BenchmarkUpdateSuccess | BenchmarkUpdateFailure;
|
|
21
|
+
export interface BenchmarkUpdateDeps {
|
|
22
|
+
fetchImpl?: typeof fetch;
|
|
23
|
+
env?: Record<string, string | undefined>;
|
|
24
|
+
apiKey?: string;
|
|
25
|
+
now?: () => string;
|
|
26
|
+
timeoutMs?: number;
|
|
27
|
+
maxBytes?: number;
|
|
28
|
+
randomId?: () => string;
|
|
29
|
+
currentPid?: number;
|
|
30
|
+
processAlive?: (pid: number) => boolean;
|
|
31
|
+
}
|
|
32
|
+
export declare function updateBenchmarkSnapshot(targetPath: string, deps?: BenchmarkUpdateDeps): Promise<BenchmarkUpdateResult>;
|
|
33
|
+
//# sourceMappingURL=benchmarkUpdate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"benchmarkUpdate.d.ts","sourceRoot":"","sources":["../src/benchmarkUpdate.ts"],"names":[],"mappings":"AAyBA,eAAO,MAAM,cAAc,gCAAgC,CAAC;AAC5D,eAAO,MAAM,2BAA2B,QAAS,CAAC;AAClD,eAAO,MAAM,0BAA0B,QAAmB,CAAC;AAE3D,MAAM,MAAM,wBAAwB,GAChC,aAAa,GACb,cAAc,GACd,SAAS,GACT,WAAW,GACX,MAAM,GACN,WAAW,GACX,kBAAkB,GAClB,MAAM,GACN,cAAc,CAAC;AAEnB,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,IAAI,CAAC;IACT,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,KAAK,CAAC;IACV,IAAI,EAAE,wBAAwB,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,qBAAqB,GAC/B,sBAAsB,GAAG,sBAAsB,CAAC;AAElD,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;CACzC;AAwLD,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC,qBAAqB,CAAC,CAyIhC"}
|
|
@@ -0,0 +1,327 @@
|
|
|
1
|
+
// Transactional Artificial Analysis snapshot refresh: one bounded,
|
|
2
|
+
// authenticated fetch is validated, staged next to the target, and
|
|
3
|
+
// atomically renamed over it. Any failure before the rename leaves the
|
|
4
|
+
// previous file byte-for-byte intact. A per-target PID lock coordinates
|
|
5
|
+
// concurrent updaters; stale locks from dead processes are recovered,
|
|
6
|
+
// live locks fail promptly with `busy`.
|
|
7
|
+
import { mkdir, open, readdir, readFile, rename, rm, writeFile, } from "node:fs/promises";
|
|
8
|
+
import { basename, dirname, isAbsolute, join } from "node:path";
|
|
9
|
+
import { AA_LLM_MODELS_ENDPOINT, normalizeAAResponse, } from "./artificialAnalysis.js";
|
|
10
|
+
import { RECOGNIZED_METRICS, } from "./benchmarkTypes.js";
|
|
11
|
+
export const AA_API_KEY_ENV = "ARTIFICIAL_ANALYSIS_API_KEY";
|
|
12
|
+
export const BENCHMARK_UPDATE_TIMEOUT_MS = 30_000;
|
|
13
|
+
export const BENCHMARK_UPDATE_MAX_BYTES = 16 * 1024 * 1024;
|
|
14
|
+
function defaultProcessAlive(pid) {
|
|
15
|
+
try {
|
|
16
|
+
process.kill(pid, 0);
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function defaultRandomId() {
|
|
24
|
+
return `${process.pid}.${Date.now().toString(36)}.${Math.random().toString(36).slice(2, 10)}`;
|
|
25
|
+
}
|
|
26
|
+
function lockPathFor(targetPath) {
|
|
27
|
+
return `${targetPath}.lock`;
|
|
28
|
+
}
|
|
29
|
+
function stagePrefixFor(targetPath) {
|
|
30
|
+
return `.${basename(targetPath)}.`;
|
|
31
|
+
}
|
|
32
|
+
// Removes interrupted staging files for this target left by crashed runs.
|
|
33
|
+
// Other targets sharing the directory use a different prefix and are kept.
|
|
34
|
+
async function reapStaleStaging(targetPath) {
|
|
35
|
+
const dir = dirname(targetPath);
|
|
36
|
+
const prefix = stagePrefixFor(targetPath);
|
|
37
|
+
let names;
|
|
38
|
+
try {
|
|
39
|
+
names = await readdir(dir);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
for (const name of names) {
|
|
45
|
+
if (!name.startsWith(prefix) || !name.endsWith(".tmp"))
|
|
46
|
+
continue;
|
|
47
|
+
try {
|
|
48
|
+
await rm(join(dir, name), { force: true });
|
|
49
|
+
}
|
|
50
|
+
catch { }
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
async function readLockPid(lockPath) {
|
|
54
|
+
try {
|
|
55
|
+
const raw = await readFile(lockPath, "utf8");
|
|
56
|
+
const parsed = JSON.parse(raw);
|
|
57
|
+
if (typeof parsed !== "object" || parsed === null)
|
|
58
|
+
return null;
|
|
59
|
+
const pid = parsed.pid;
|
|
60
|
+
return typeof pid === "number" && Number.isInteger(pid) && pid > 0
|
|
61
|
+
? pid
|
|
62
|
+
: null;
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// Acquires the per-target lock. Returns true when held; a live holder means
|
|
69
|
+
// `busy`, while a dead or corrupt holder is removed and acquisition retried
|
|
70
|
+
// once (losing a takeover race still reports `busy`).
|
|
71
|
+
async function acquireLock(lockPath, currentPid, processAlive, fetchedAt) {
|
|
72
|
+
const payload = JSON.stringify({ pid: currentPid, createdAt: fetchedAt });
|
|
73
|
+
for (let attempt = 0; attempt < 2; attempt++) {
|
|
74
|
+
try {
|
|
75
|
+
await writeFile(lockPath, payload, { flag: "wx" });
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
if (error?.code !== "EEXIST")
|
|
80
|
+
throw error;
|
|
81
|
+
}
|
|
82
|
+
const holder = await readLockPid(lockPath);
|
|
83
|
+
if (holder !== null && processAlive(holder))
|
|
84
|
+
return false;
|
|
85
|
+
try {
|
|
86
|
+
await rm(lockPath, { force: true });
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
async function releaseLock(lockPath) {
|
|
95
|
+
try {
|
|
96
|
+
await rm(lockPath, { force: true });
|
|
97
|
+
}
|
|
98
|
+
catch { }
|
|
99
|
+
}
|
|
100
|
+
function classifyFetchError(error) {
|
|
101
|
+
const name = error && typeof error === "object" && "name" in error
|
|
102
|
+
? String(error.name)
|
|
103
|
+
: "";
|
|
104
|
+
return name === "TimeoutError" || name === "AbortError"
|
|
105
|
+
? "timeout"
|
|
106
|
+
: "transport";
|
|
107
|
+
}
|
|
108
|
+
async function readBoundedBody(response, maxBytes) {
|
|
109
|
+
const declared = response.headers.get("content-length");
|
|
110
|
+
if (declared && Number(declared) > maxBytes) {
|
|
111
|
+
try {
|
|
112
|
+
await response.body?.cancel();
|
|
113
|
+
}
|
|
114
|
+
catch { }
|
|
115
|
+
return {
|
|
116
|
+
ok: false,
|
|
117
|
+
code: "too_large",
|
|
118
|
+
message: `Artificial Analysis response exceeds the ${maxBytes} byte limit.`,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
if (!response.body)
|
|
122
|
+
return "";
|
|
123
|
+
const reader = response.body.getReader();
|
|
124
|
+
const chunks = [];
|
|
125
|
+
let total = 0;
|
|
126
|
+
try {
|
|
127
|
+
for (;;) {
|
|
128
|
+
const { done, value } = await reader.read();
|
|
129
|
+
if (done)
|
|
130
|
+
break;
|
|
131
|
+
total += value.byteLength;
|
|
132
|
+
if (total > maxBytes) {
|
|
133
|
+
try {
|
|
134
|
+
await reader.cancel();
|
|
135
|
+
}
|
|
136
|
+
catch { }
|
|
137
|
+
return {
|
|
138
|
+
ok: false,
|
|
139
|
+
code: "too_large",
|
|
140
|
+
message: `Artificial Analysis response exceeds the ${maxBytes} byte limit.`,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
chunks.push(value);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
finally {
|
|
147
|
+
reader.releaseLock();
|
|
148
|
+
}
|
|
149
|
+
let size = 0;
|
|
150
|
+
for (const chunk of chunks)
|
|
151
|
+
size += chunk.byteLength;
|
|
152
|
+
const merged = new Uint8Array(size);
|
|
153
|
+
let offset = 0;
|
|
154
|
+
for (const chunk of chunks) {
|
|
155
|
+
merged.set(chunk, offset);
|
|
156
|
+
offset += chunk.byteLength;
|
|
157
|
+
}
|
|
158
|
+
return new TextDecoder().decode(merged);
|
|
159
|
+
}
|
|
160
|
+
function httpFailure(status) {
|
|
161
|
+
let hint = `Artificial Analysis request failed with HTTP ${status}.`;
|
|
162
|
+
if (status === 401 || status === 403) {
|
|
163
|
+
hint += " Check that ARTIFICIAL_ANALYSIS_API_KEY is valid.";
|
|
164
|
+
}
|
|
165
|
+
else if (status === 429) {
|
|
166
|
+
hint += " Rate limit exceeded; retry later.";
|
|
167
|
+
}
|
|
168
|
+
return { ok: false, code: "http", message: hint, status };
|
|
169
|
+
}
|
|
170
|
+
function metricCoverage(snapshot) {
|
|
171
|
+
const coverage = {};
|
|
172
|
+
for (const metric of RECOGNIZED_METRICS) {
|
|
173
|
+
coverage[metric.key] = snapshot.models.filter((model) => typeof model.evaluations[metric.key] === "number").length;
|
|
174
|
+
}
|
|
175
|
+
return coverage;
|
|
176
|
+
}
|
|
177
|
+
// Best-effort read of the previous snapshot hash for unchanged detection.
|
|
178
|
+
// Any failure means "treat as changed", never an update failure.
|
|
179
|
+
async function previousContentHash(targetPath) {
|
|
180
|
+
try {
|
|
181
|
+
const raw = await readFile(targetPath, "utf8");
|
|
182
|
+
const parsed = JSON.parse(raw);
|
|
183
|
+
if (typeof parsed !== "object" || parsed === null)
|
|
184
|
+
return null;
|
|
185
|
+
const hash = parsed.contentHash;
|
|
186
|
+
return typeof hash === "string" ? hash : null;
|
|
187
|
+
}
|
|
188
|
+
catch {
|
|
189
|
+
return null;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
export async function updateBenchmarkSnapshot(targetPath, deps = {}) {
|
|
193
|
+
if (typeof targetPath !== "string" || !isAbsolute(targetPath)) {
|
|
194
|
+
return {
|
|
195
|
+
ok: false,
|
|
196
|
+
code: "invalid_path",
|
|
197
|
+
message: "Benchmark snapshot path must be an absolute path.",
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
const env = deps.env ?? process.env;
|
|
201
|
+
const apiKey = (deps.apiKey ?? env[AA_API_KEY_ENV] ?? "").trim();
|
|
202
|
+
if (!apiKey) {
|
|
203
|
+
return {
|
|
204
|
+
ok: false,
|
|
205
|
+
code: "missing_key",
|
|
206
|
+
message: `Set ${AA_API_KEY_ENV} to refresh Artificial Analysis benchmarks.`,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
const timeoutMs = deps.timeoutMs ?? BENCHMARK_UPDATE_TIMEOUT_MS;
|
|
210
|
+
const maxBytes = deps.maxBytes ?? BENCHMARK_UPDATE_MAX_BYTES;
|
|
211
|
+
const now = deps.now ?? (() => new Date().toISOString());
|
|
212
|
+
const randomId = deps.randomId ?? defaultRandomId;
|
|
213
|
+
const currentPid = deps.currentPid ?? process.pid;
|
|
214
|
+
const processAlive = deps.processAlive ?? defaultProcessAlive;
|
|
215
|
+
const fetchImpl = deps.fetchImpl ?? fetch;
|
|
216
|
+
const dir = dirname(targetPath);
|
|
217
|
+
try {
|
|
218
|
+
await mkdir(dir, { recursive: true });
|
|
219
|
+
}
|
|
220
|
+
catch {
|
|
221
|
+
return {
|
|
222
|
+
ok: false,
|
|
223
|
+
code: "write_failed",
|
|
224
|
+
message: `Cannot create the benchmark directory for ${targetPath}.`,
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
const lockPath = lockPathFor(targetPath);
|
|
228
|
+
const fetchedAt = now();
|
|
229
|
+
let locked = false;
|
|
230
|
+
try {
|
|
231
|
+
locked = await acquireLock(lockPath, currentPid, processAlive, fetchedAt);
|
|
232
|
+
}
|
|
233
|
+
catch {
|
|
234
|
+
return {
|
|
235
|
+
ok: false,
|
|
236
|
+
code: "write_failed",
|
|
237
|
+
message: `Cannot coordinate the benchmark update for ${targetPath}.`,
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
if (!locked) {
|
|
241
|
+
return {
|
|
242
|
+
ok: false,
|
|
243
|
+
code: "busy",
|
|
244
|
+
message: `Another benchmarks update is already running for ${targetPath}. ` +
|
|
245
|
+
`If no updater is running, remove ${lockPath} and retry.`,
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
const stagePath = join(dir, `${stagePrefixFor(targetPath)}${currentPid}.${randomId()}.tmp`);
|
|
249
|
+
try {
|
|
250
|
+
await reapStaleStaging(targetPath);
|
|
251
|
+
let response;
|
|
252
|
+
try {
|
|
253
|
+
response = await fetchImpl(AA_LLM_MODELS_ENDPOINT, {
|
|
254
|
+
headers: { "x-api-key": apiKey },
|
|
255
|
+
signal: AbortSignal.timeout(timeoutMs),
|
|
256
|
+
redirect: "error",
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
const code = classifyFetchError(error);
|
|
261
|
+
return {
|
|
262
|
+
ok: false,
|
|
263
|
+
code,
|
|
264
|
+
message: code === "timeout"
|
|
265
|
+
? `Artificial Analysis request timed out after ${timeoutMs} ms.`
|
|
266
|
+
: "Artificial Analysis request failed before a response arrived.",
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
if (!response.ok)
|
|
270
|
+
return httpFailure(response.status);
|
|
271
|
+
const text = await readBoundedBody(response, maxBytes);
|
|
272
|
+
if (typeof text !== "string")
|
|
273
|
+
return text;
|
|
274
|
+
let body;
|
|
275
|
+
try {
|
|
276
|
+
body = JSON.parse(text);
|
|
277
|
+
}
|
|
278
|
+
catch {
|
|
279
|
+
return {
|
|
280
|
+
ok: false,
|
|
281
|
+
code: "invalid_response",
|
|
282
|
+
message: "Artificial Analysis response was not valid JSON.",
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
const snapshot = normalizeAAResponse(body, fetchedAt);
|
|
286
|
+
if ("error" in snapshot) {
|
|
287
|
+
return { ok: false, code: "invalid_response", message: snapshot.error };
|
|
288
|
+
}
|
|
289
|
+
const unchanged = (await previousContentHash(targetPath)) === snapshot.contentHash;
|
|
290
|
+
const serialized = JSON.stringify(snapshot, null, 2);
|
|
291
|
+
try {
|
|
292
|
+
const handle = await open(stagePath, "w");
|
|
293
|
+
try {
|
|
294
|
+
await handle.writeFile(serialized, "utf8");
|
|
295
|
+
await handle.sync();
|
|
296
|
+
}
|
|
297
|
+
finally {
|
|
298
|
+
await handle.close();
|
|
299
|
+
}
|
|
300
|
+
await rename(stagePath, targetPath);
|
|
301
|
+
}
|
|
302
|
+
catch {
|
|
303
|
+
return {
|
|
304
|
+
ok: false,
|
|
305
|
+
code: "write_failed",
|
|
306
|
+
message: `Cannot publish the benchmark snapshot to ${targetPath}.`,
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
return {
|
|
310
|
+
ok: true,
|
|
311
|
+
path: targetPath,
|
|
312
|
+
fetchedAt: snapshot.fetchedAt,
|
|
313
|
+
modelCount: snapshot.models.length,
|
|
314
|
+
contentHash: snapshot.contentHash,
|
|
315
|
+
unchanged,
|
|
316
|
+
metricCoverage: metricCoverage(snapshot),
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
finally {
|
|
320
|
+
try {
|
|
321
|
+
await rm(stagePath, { force: true });
|
|
322
|
+
}
|
|
323
|
+
catch { }
|
|
324
|
+
await releaseLock(lockPath);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
//# sourceMappingURL=benchmarkUpdate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"benchmarkUpdate.js","sourceRoot":"","sources":["../src/benchmarkUpdate.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
import { type BenchmarkValidationError } from "./benchmarkTypes.js";
|
|
3
|
+
import type { ModelRef } from "./benchmarkMatch.js";
|
|
4
|
+
export interface CliDeps {
|
|
5
|
+
env?: Record<string, string | undefined>;
|
|
6
|
+
fetchImpl?: typeof fetch;
|
|
7
|
+
nowMs?: number;
|
|
8
|
+
out?: (line: string) => void;
|
|
9
|
+
err?: (line: string) => void;
|
|
10
|
+
}
|
|
11
|
+
export declare function parseModelCoordinate(value: string): ModelRef | BenchmarkValidationError;
|
|
12
|
+
export declare function runCli(argv: string[], deps?: CliDeps): Promise<number>;
|
|
13
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAeA,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAkB,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAOpE,MAAM,WAAW,OAAO;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAsGD,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,GACZ,QAAQ,GAAG,wBAAwB,CAgCrC;AA2ND,wBAAsB,MAAM,CAC1B,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE,OAAY,GACjB,OAAO,CAAC,MAAM,CAAC,CAsCjB"}
|