@nexus-cortex/core 4.130.0 → 4.131.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/.env.defaults +168 -2
- package/dist/adapters/ChatCompletionsAPIAdapter.d.ts.map +1 -1
- package/dist/adapters/ChatCompletionsAPIAdapter.js +5 -1
- package/dist/adapters/ChatCompletionsAPIAdapter.js.map +1 -1
- package/dist/commands/SlashCommandRegistry.d.ts.map +1 -1
- package/dist/commands/SlashCommandRegistry.js +7 -0
- package/dist/commands/SlashCommandRegistry.js.map +1 -1
- package/dist/config/AnthropicCredentialService.d.ts.map +1 -1
- package/dist/config/AnthropicCredentialService.js +2 -1
- package/dist/config/AnthropicCredentialService.js.map +1 -1
- package/dist/config/RuntimeConfigRegistry.d.ts.map +1 -1
- package/dist/config/RuntimeConfigRegistry.js +18 -0
- package/dist/config/RuntimeConfigRegistry.js.map +1 -1
- package/dist/config/SettingsLoader.d.ts +3 -0
- package/dist/config/SettingsLoader.d.ts.map +1 -1
- package/dist/config/SettingsLoader.js +42 -0
- package/dist/config/SettingsLoader.js.map +1 -1
- package/dist/config/SettingsSchema.d.ts +19 -0
- package/dist/config/SettingsSchema.d.ts.map +1 -1
- package/dist/config/SettingsSchema.js +172 -0
- package/dist/config/SettingsSchema.js.map +1 -1
- package/dist/config/effectiveConfig.d.ts.map +1 -1
- package/dist/config/effectiveConfig.js +20 -2
- package/dist/config/effectiveConfig.js.map +1 -1
- package/dist/config/index.d.ts +4 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +4 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/localBrowser.d.ts +13 -0
- package/dist/config/localBrowser.d.ts.map +1 -0
- package/dist/config/localBrowser.js +53 -0
- package/dist/config/localBrowser.js.map +1 -0
- package/dist/config/logRedaction.d.ts +5 -0
- package/dist/config/logRedaction.d.ts.map +1 -0
- package/dist/config/logRedaction.js +68 -0
- package/dist/config/logRedaction.js.map +1 -0
- package/dist/config/secretProviders.d.ts +16 -0
- package/dist/config/secretProviders.d.ts.map +1 -0
- package/dist/config/secretProviders.js +26 -0
- package/dist/config/secretProviders.js.map +1 -0
- package/dist/config/secretsVault.d.ts +121 -0
- package/dist/config/secretsVault.d.ts.map +1 -0
- package/dist/config/secretsVault.js +320 -0
- package/dist/config/secretsVault.js.map +1 -0
- package/dist/config/spaSecretTypes.d.ts +329 -0
- package/dist/config/spaSecretTypes.d.ts.map +1 -0
- package/dist/config/spaSecretTypes.js +326 -0
- package/dist/config/spaSecretTypes.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/McpClient.d.ts +2 -0
- package/dist/mcp/McpClient.d.ts.map +1 -1
- package/dist/mcp/McpClient.js +9 -1
- package/dist/mcp/McpClient.js.map +1 -1
- package/dist/mcp/McpServerRegistry.d.ts +2 -13
- package/dist/mcp/McpServerRegistry.d.ts.map +1 -1
- package/dist/mcp/McpServerRegistry.js +17 -2
- package/dist/mcp/McpServerRegistry.js.map +1 -1
- package/dist/mcp/essentialMcpTools.d.ts +11 -0
- package/dist/mcp/essentialMcpTools.d.ts.map +1 -0
- package/dist/mcp/essentialMcpTools.js +22 -0
- package/dist/mcp/essentialMcpTools.js.map +1 -0
- package/dist/mcp/mcpSchemaCompat.d.ts +9 -0
- package/dist/mcp/mcpSchemaCompat.d.ts.map +1 -0
- package/dist/mcp/mcpSchemaCompat.js +32 -0
- package/dist/mcp/mcpSchemaCompat.js.map +1 -0
- package/dist/middleware/HelperModelMiddleware.d.ts +4 -0
- package/dist/middleware/HelperModelMiddleware.d.ts.map +1 -1
- package/dist/middleware/HelperModelMiddleware.js +2 -2
- package/dist/middleware/HelperModelMiddleware.js.map +1 -1
- package/dist/middleware/SystemMessageMiddleware.d.ts.map +1 -1
- package/dist/middleware/SystemMessageMiddleware.js +6 -0
- package/dist/middleware/SystemMessageMiddleware.js.map +1 -1
- package/dist/middleware/permissions/DefaultPolicies.d.ts.map +1 -1
- package/dist/middleware/permissions/DefaultPolicies.js +2 -0
- package/dist/middleware/permissions/DefaultPolicies.js.map +1 -1
- package/dist/orchestrator/APIClient.d.ts.map +1 -1
- package/dist/orchestrator/APIClient.js +46 -1
- package/dist/orchestrator/APIClient.js.map +1 -1
- package/dist/orchestrator/CortexOrchestrator.d.ts +43 -8
- package/dist/orchestrator/CortexOrchestrator.d.ts.map +1 -1
- package/dist/orchestrator/CortexOrchestrator.js +339 -38
- package/dist/orchestrator/CortexOrchestrator.js.map +1 -1
- package/dist/orchestrator/HerdrSubAgentRunner.d.ts.map +1 -1
- package/dist/orchestrator/HerdrSubAgentRunner.js +2 -1
- package/dist/orchestrator/HerdrSubAgentRunner.js.map +1 -1
- package/dist/orchestrator/SubAgentProcessManager.d.ts.map +1 -1
- package/dist/orchestrator/SubAgentProcessManager.js +2 -0
- package/dist/orchestrator/SubAgentProcessManager.js.map +1 -1
- package/dist/orchestrator/browserWallNudge.d.ts +93 -0
- package/dist/orchestrator/browserWallNudge.d.ts.map +1 -0
- package/dist/orchestrator/browserWallNudge.js +227 -0
- package/dist/orchestrator/browserWallNudge.js.map +1 -0
- package/dist/orchestrator/citationVerification.d.ts.map +1 -1
- package/dist/orchestrator/citationVerification.js +16 -0
- package/dist/orchestrator/citationVerification.js.map +1 -1
- package/dist/orchestrator/cortexProxyFetch.d.ts +8 -0
- package/dist/orchestrator/cortexProxyFetch.d.ts.map +1 -1
- package/dist/orchestrator/cortexProxyFetch.js +32 -0
- package/dist/orchestrator/cortexProxyFetch.js.map +1 -1
- package/dist/orchestrator/endTurnGates.d.ts +39 -0
- package/dist/orchestrator/endTurnGates.d.ts.map +1 -1
- package/dist/orchestrator/endTurnGates.js +159 -3
- package/dist/orchestrator/endTurnGates.js.map +1 -1
- package/dist/orchestrator/imageTtl.d.ts.map +1 -1
- package/dist/orchestrator/imageTtl.js +14 -5
- package/dist/orchestrator/imageTtl.js.map +1 -1
- package/dist/orchestrator/integrityVerification.d.ts +2 -0
- package/dist/orchestrator/integrityVerification.d.ts.map +1 -1
- package/dist/orchestrator/integrityVerification.js +2 -2
- package/dist/orchestrator/integrityVerification.js.map +1 -1
- package/dist/orchestrator/requestDebugLog.d.ts +4 -0
- package/dist/orchestrator/requestDebugLog.d.ts.map +1 -0
- package/dist/orchestrator/requestDebugLog.js +55 -0
- package/dist/orchestrator/requestDebugLog.js.map +1 -0
- package/dist/orchestrator/requirementsVerification.d.ts +4 -0
- package/dist/orchestrator/requirementsVerification.d.ts.map +1 -1
- package/dist/orchestrator/requirementsVerification.js +12 -6
- package/dist/orchestrator/requirementsVerification.js.map +1 -1
- package/dist/orchestrator/subAgentTimeout.d.ts +3 -0
- package/dist/orchestrator/subAgentTimeout.d.ts.map +1 -1
- package/dist/orchestrator/subAgentTimeout.js +6 -0
- package/dist/orchestrator/subAgentTimeout.js.map +1 -1
- package/dist/orchestrator/toolAllowlist.d.ts +29 -0
- package/dist/orchestrator/toolAllowlist.d.ts.map +1 -1
- package/dist/orchestrator/toolAllowlist.js +45 -0
- package/dist/orchestrator/toolAllowlist.js.map +1 -1
- package/dist/tools/ToolProfile.d.ts +5 -21
- package/dist/tools/ToolProfile.d.ts.map +1 -1
- package/dist/tools/ToolProfile.js +17 -2
- package/dist/tools/ToolProfile.js.map +1 -1
- package/dist/tools/registries/BaseToolRegistry.d.ts.map +1 -1
- package/dist/tools/registries/BaseToolRegistry.js +26 -6
- package/dist/tools/registries/BaseToolRegistry.js.map +1 -1
- package/dist/training/AutoResearchConfirm.d.ts +105 -0
- package/dist/training/AutoResearchConfirm.d.ts.map +1 -0
- package/dist/training/AutoResearchConfirm.js +111 -0
- package/dist/training/AutoResearchConfirm.js.map +1 -0
- package/dist/training/AutoResearchGate.d.ts +6 -0
- package/dist/training/AutoResearchGate.d.ts.map +1 -1
- package/dist/training/AutoResearchGate.js +8 -2
- package/dist/training/AutoResearchGate.js.map +1 -1
- package/dist/training/AutoResearchGuards.d.ts +86 -0
- package/dist/training/AutoResearchGuards.d.ts.map +1 -0
- package/dist/training/AutoResearchGuards.js +81 -0
- package/dist/training/AutoResearchGuards.js.map +1 -0
- package/dist/training/BenchRunner.d.ts +21 -5
- package/dist/training/BenchRunner.d.ts.map +1 -1
- package/dist/training/BenchRunner.js +126 -54
- package/dist/training/BenchRunner.js.map +1 -1
- package/dist/training/EvalGuard.d.ts +43 -0
- package/dist/training/EvalGuard.d.ts.map +1 -0
- package/dist/training/EvalGuard.js +131 -0
- package/dist/training/EvalGuard.js.map +1 -0
- package/dist/training/ExperimentRunner.d.ts +22 -0
- package/dist/training/ExperimentRunner.d.ts.map +1 -1
- package/dist/training/ExperimentRunner.js +45 -9
- package/dist/training/ExperimentRunner.js.map +1 -1
- package/dist/training/endTurnResolver.d.ts +23 -1
- package/dist/training/endTurnResolver.d.ts.map +1 -1
- package/dist/training/endTurnResolver.js +35 -3
- package/dist/training/endTurnResolver.js.map +1 -1
- package/dist/training/mentorRole.d.ts.map +1 -1
- package/dist/training/mentorRole.js +6 -1
- package/dist/training/mentorRole.js.map +1 -1
- package/dist/training/scopeCheck.d.ts +41 -0
- package/dist/training/scopeCheck.d.ts.map +1 -0
- package/dist/training/scopeCheck.js +119 -0
- package/dist/training/scopeCheck.js.map +1 -0
- package/dist/training/usageAccounting.d.ts +13 -0
- package/dist/training/usageAccounting.d.ts.map +1 -1
- package/dist/training/usageAccounting.js +11 -0
- package/dist/training/usageAccounting.js.map +1 -1
- package/dist/utils/repairToolJson.d.ts +19 -0
- package/dist/utils/repairToolJson.d.ts.map +1 -0
- package/dist/utils/repairToolJson.js +122 -0
- package/dist/utils/repairToolJson.js.map +1 -0
- package/package.json +5 -4
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { normalQuantile } from './AutoResearchConfirm.js';
|
|
2
|
+
function round4(n) { return Math.round(n * 10000) / 10000; }
|
|
3
|
+
/** Student-t quantile via the Cornish–Fisher expansion (df >= 1; exact enough for bounds). */
|
|
4
|
+
export function tQuantile(p, df) {
|
|
5
|
+
const z = normalQuantile(p);
|
|
6
|
+
if (!Number.isFinite(df) || df > 1e6)
|
|
7
|
+
return z;
|
|
8
|
+
const z3 = z ** 3, z5 = z ** 5, z7 = z ** 7;
|
|
9
|
+
return z + (z3 + z) / (4 * df) + (5 * z5 + 16 * z3 + 3 * z) / (96 * df ** 2)
|
|
10
|
+
+ (3 * z7 + 19 * z5 + 17 * z3 - 15 * z) / (384 * df ** 3);
|
|
11
|
+
}
|
|
12
|
+
function variance(xs) {
|
|
13
|
+
const m = xs.reduce((a, b) => a + b, 0) / xs.length;
|
|
14
|
+
return xs.reduce((a, b) => a + (b - m) ** 2, 0) / (xs.length - 1);
|
|
15
|
+
}
|
|
16
|
+
const avg = (xs) => xs.reduce((a, b) => a + b, 0) / xs.length;
|
|
17
|
+
/** Per-family effects: mean over the family's tasks of (candMean - baseMean), its SE from
|
|
18
|
+
* the sample variances, Welch–Satterthwaite df, and the one-sided upper bound at
|
|
19
|
+
* alpha / nFamilies. */
|
|
20
|
+
export function familyEffects(tasks, opts = {}) {
|
|
21
|
+
const minRuns = opts.minRunsPerArm ?? 2;
|
|
22
|
+
const usable = tasks.filter((t) => t.baseScores.length >= minRuns && t.candScores.length >= minRuns);
|
|
23
|
+
const groups = new Map();
|
|
24
|
+
for (const t of usable) {
|
|
25
|
+
const f = t.taskFamily ?? 'unlabeled';
|
|
26
|
+
groups.set(f, [...(groups.get(f) ?? []), t]);
|
|
27
|
+
}
|
|
28
|
+
const nFam = Math.max(1, groups.size);
|
|
29
|
+
const alpha = opts.alpha ?? 0.05;
|
|
30
|
+
const out = [];
|
|
31
|
+
for (const [family, arms] of [...groups.entries()].sort(([a], [b]) => a.localeCompare(b))) {
|
|
32
|
+
const k = arms.length;
|
|
33
|
+
const effect = avg(arms.map((t) => avg(t.candScores) - avg(t.baseScores)));
|
|
34
|
+
// Var(effect) = Σ_t (s_b²/n_b + s_c²/n_c) / k²; components feed Welch–Satterthwaite.
|
|
35
|
+
const comps = arms.flatMap((t) => [
|
|
36
|
+
{ v: variance(t.baseScores) / t.baseScores.length / (k * k), df: t.baseScores.length - 1 },
|
|
37
|
+
{ v: variance(t.candScores) / t.candScores.length / (k * k), df: t.candScores.length - 1 },
|
|
38
|
+
]);
|
|
39
|
+
const vSum = comps.reduce((a, c) => a + c.v, 0);
|
|
40
|
+
const dfDen = comps.reduce((a, c) => a + (c.v * c.v) / c.df, 0);
|
|
41
|
+
const df = vSum === 0 || dfDen === 0 ? Infinity : (vSum * vSum) / dfDen;
|
|
42
|
+
const se = Math.sqrt(vSum);
|
|
43
|
+
const upper = effect + tQuantile(1 - alpha / nFam, Math.max(1, df)) * se;
|
|
44
|
+
out.push({ family, nTasks: k, effect: round4(effect), se: round4(se), df: Number.isFinite(df) ? round4(df) : 1e9, upper: round4(upper) });
|
|
45
|
+
}
|
|
46
|
+
return out;
|
|
47
|
+
}
|
|
48
|
+
function verdict(scope, family, effect, se, q, margin) {
|
|
49
|
+
const upper = round4(effect + q * se);
|
|
50
|
+
return { family, scope, effect: round4(effect), se: round4(se), upper, margin, blocked: effect < -margin && upper < 0 };
|
|
51
|
+
}
|
|
52
|
+
/** The STEP guard: one verdict per family of this candidate vs its base. */
|
|
53
|
+
export function stepGuards(families, opts = {}) {
|
|
54
|
+
const p = 1 - (opts.alpha ?? 0.05) / Math.max(1, families.length);
|
|
55
|
+
return families.map((f) => verdict('step', f.family, f.effect, f.se, tQuantile(p, Math.max(1, f.df)), opts.margin ?? 2));
|
|
56
|
+
}
|
|
57
|
+
/** The TOTAL guard: the ledger plus this step, per family this step measured. */
|
|
58
|
+
export function totalGuards(ledger, families, opts = {}) {
|
|
59
|
+
const p = 1 - (opts.alpha ?? 0.05) / Math.max(1, families.length);
|
|
60
|
+
return families.map((f) => {
|
|
61
|
+
const prior = ledger.get(f.family);
|
|
62
|
+
// conservative df for the sum: the smallest df of any step in it
|
|
63
|
+
const df = Math.max(1, Math.min(f.df, prior?.df ?? Infinity));
|
|
64
|
+
return verdict('total', f.family, (prior?.effect ?? 0) + f.effect, Math.sqrt((prior?.variance ?? 0) + f.se ** 2), tQuantile(p, df), opts.totalMargin ?? 5);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
/** Add a merged step's family effects to the drift ledger (mutates and returns it). */
|
|
68
|
+
export function recordDrift(ledger, families) {
|
|
69
|
+
for (const f of families) {
|
|
70
|
+
const prior = ledger.get(f.family) ?? { effect: 0, variance: 0, steps: 0, df: Infinity };
|
|
71
|
+
ledger.set(f.family, { effect: round4(prior.effect + f.effect), variance: prior.variance + f.se ** 2, steps: prior.steps + 1, df: Math.min(prior.df, f.df) });
|
|
72
|
+
}
|
|
73
|
+
return ledger;
|
|
74
|
+
}
|
|
75
|
+
/** One-line summary of the blocking guards (empty when none block). */
|
|
76
|
+
export function describeGuardBlocks(vs) {
|
|
77
|
+
return vs.filter((v) => v.blocked)
|
|
78
|
+
.map((v) => `${v.family} ${v.scope === 'step' ? 'step' : 'total'} ${v.effect} (upper ${v.upper} < 0, margin -${v.margin})`)
|
|
79
|
+
.join('; ');
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=AutoResearchGuards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AutoResearchGuards.js","sourceRoot":"","sources":["../../src/training/AutoResearchGuards.ts"],"names":[],"mappings":"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"}
|
|
@@ -193,6 +193,8 @@ export interface BenchTaskSummary {
|
|
|
193
193
|
runs: number;
|
|
194
194
|
passRate: number;
|
|
195
195
|
meanScore: number;
|
|
196
|
+
/** sample SD of the per-run qualitative scores (run-count planning). */
|
|
197
|
+
scoreSd?: number;
|
|
196
198
|
}
|
|
197
199
|
export interface BenchSummary {
|
|
198
200
|
experimentTag: string;
|
|
@@ -203,13 +205,27 @@ export interface BenchSummary {
|
|
|
203
205
|
/** Number of deficiencies seeded into `opts.backlog` this run (0 when no sink). */
|
|
204
206
|
seededDeficiencies: number;
|
|
205
207
|
}
|
|
208
|
+
export declare function runBench(tasks: TaskSpec[], runner: HarnessRunner, matrix: ModelRouterMatrix, opts: RunBenchOptions): Promise<BenchSummary>;
|
|
209
|
+
export interface PairedBenchArm {
|
|
210
|
+
runner: HarnessRunner;
|
|
211
|
+
/** this arm's per-arm bench options (harnessRef, strategy, …); the shared fields come
|
|
212
|
+
* from the `opts` passed to runBenchPaired. */
|
|
213
|
+
harnessRef?: string;
|
|
214
|
+
}
|
|
206
215
|
/**
|
|
207
|
-
*
|
|
208
|
-
*
|
|
209
|
-
*
|
|
210
|
-
*
|
|
216
|
+
* Bench a BASE and a CANDIDATE arm INTERLEAVED: for each task and each run index the
|
|
217
|
+
* two arms run back to back, in a seeded random order. Provider drift (latency, load,
|
|
218
|
+
* a silent model update, rate limiting) then lands on both arms instead of all on the
|
|
219
|
+
* one that ran second. Records are identical to two runBench calls (same matrix rows,
|
|
220
|
+
* same summaries); only the run order differs.
|
|
211
221
|
*/
|
|
212
|
-
export declare function
|
|
222
|
+
export declare function runBenchPaired(tasks: TaskSpec[], base: PairedBenchArm, candidate: PairedBenchArm, matrix: ModelRouterMatrix, opts: RunBenchOptions & {
|
|
223
|
+
orderSeed?: number;
|
|
224
|
+
}): Promise<{
|
|
225
|
+
base: BenchSummary;
|
|
226
|
+
candidate: BenchSummary;
|
|
227
|
+
order: ('base' | 'candidate')[];
|
|
228
|
+
}>;
|
|
213
229
|
/** Validate a parsed task-set JSON value, throwing on malformed entries. */
|
|
214
230
|
export declare function parseTaskSet(raw: unknown, source?: string): TaskSpec[];
|
|
215
231
|
//# sourceMappingURL=BenchRunner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BenchRunner.d.ts","sourceRoot":"","sources":["../../src/training/BenchRunner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"BenchRunner.d.ts","sourceRoot":"","sources":["../../src/training/BenchRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,6 +21,8 @@
|
|
|
21
21
|
*/
|
|
22
22
|
import { ModelRouterMatrix } from './ModelRouterMatrix.js';
|
|
23
23
|
import { classifyTask } from './TaskClassifier.js';
|
|
24
|
+
import { mulberry32 } from './AutoResearchStats.js';
|
|
25
|
+
import { sampleSd } from './AutoResearchConfirm.js';
|
|
24
26
|
function normalizeWs(s) {
|
|
25
27
|
return s.replace(/\s+/g, ' ').trim().toLowerCase();
|
|
26
28
|
}
|
|
@@ -117,50 +119,67 @@ export async function gradeRun(output, verifier, judge, extras) {
|
|
|
117
119
|
* overridden; taskFingerprint = hash of prompt+verifier so it's the stable
|
|
118
120
|
* comparability key the gate joins on).
|
|
119
121
|
*/
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
122
|
+
/** Per-task accumulator shared by runBench and runBenchPaired: one arm × one task. */
|
|
123
|
+
class TaskBench {
|
|
124
|
+
task;
|
|
125
|
+
runner;
|
|
126
|
+
matrix;
|
|
127
|
+
opts;
|
|
128
|
+
taskType;
|
|
129
|
+
taskFingerprint;
|
|
130
|
+
passes = 0;
|
|
131
|
+
scores = [];
|
|
132
|
+
sampleFailure;
|
|
133
|
+
observedModelId;
|
|
134
|
+
constructor(task, runner, matrix, opts) {
|
|
135
|
+
this.task = task;
|
|
136
|
+
this.runner = runner;
|
|
137
|
+
this.matrix = matrix;
|
|
138
|
+
this.opts = opts;
|
|
139
|
+
this.taskType = task.taskType ?? classifyTask(task.prompt).taskType;
|
|
140
|
+
this.taskFingerprint = ModelRouterMatrix.fingerprintTask(task.prompt, JSON.stringify(task.verifier));
|
|
141
|
+
this.observedModelId = opts.modelId;
|
|
142
|
+
}
|
|
143
|
+
/** One run: execute, grade, record to the matrix, notify. */
|
|
144
|
+
async runOnce() {
|
|
145
|
+
const { task, opts } = this;
|
|
146
|
+
const res = await this.runner.run(task.prompt, { model: opts.modelId });
|
|
147
|
+
const grade = await gradeRun(res.text, task.verifier, opts.judge, { toolUses: res.toolUses });
|
|
148
|
+
if (!grade.pass && this.sampleFailure === undefined)
|
|
149
|
+
this.sampleFailure = res.text;
|
|
150
|
+
this.observedModelId = res.modelId ?? this.observedModelId;
|
|
151
|
+
this.passes += grade.pass ? 1 : 0;
|
|
152
|
+
this.scores.push(grade.qualitativeScore);
|
|
153
|
+
this.matrix.record({
|
|
154
|
+
modelId: res.modelId ?? opts.modelId ?? 'unknown',
|
|
155
|
+
taskType: this.taskType,
|
|
156
|
+
toolCallCount: res.toolCallCount,
|
|
157
|
+
inputTokens: res.inputTokens,
|
|
158
|
+
outputTokens: res.outputTokens,
|
|
159
|
+
latencyMs: res.latencyMs,
|
|
160
|
+
pass: grade.pass,
|
|
161
|
+
qualitativeScore: grade.qualitativeScore,
|
|
162
|
+
taskFingerprint: this.taskFingerprint,
|
|
163
|
+
experimentTag: opts.experimentTag,
|
|
164
|
+
split: opts.split ?? 'train',
|
|
165
|
+
benchmarkSource: opts.benchmarkSource,
|
|
166
|
+
...(opts.harnessRef ? { harnessRef: opts.harnessRef } : {}),
|
|
167
|
+
...(opts.temperature !== undefined ? { temperature: opts.temperature } : {}),
|
|
168
|
+
...(opts.strategy ? { strategy: opts.strategy } : {}),
|
|
169
|
+
...(opts.toolProfile && opts.toolProfile !== 'full' ? { toolProfile: opts.toolProfile } : {}),
|
|
170
|
+
});
|
|
171
|
+
opts.onRun?.({ taskId: task.id, run: this.scores.length, pass: grade.pass, qualitativeScore: grade.qualitativeScore });
|
|
172
|
+
}
|
|
173
|
+
/** Summarize (and seed the backlog on a train failure). Returns the seeded count (0|1). */
|
|
174
|
+
finish() {
|
|
175
|
+
const { task, opts } = this;
|
|
176
|
+
const runs = this.scores.length;
|
|
177
|
+
const split = opts.split ?? 'train';
|
|
178
|
+
const scoreSum = this.scores.reduce((a, b) => a + b, 0);
|
|
179
|
+
const passRate = runs ? Math.round((this.passes / runs) * 1000) / 1000 : 0;
|
|
180
|
+
const meanScore = runs ? Math.round((scoreSum / runs) * 100) / 100 : 0;
|
|
181
|
+
const scoreSd = Math.round(sampleSd(this.scores) * 100) / 100;
|
|
182
|
+
let seeded = 0;
|
|
164
183
|
// Deterministic backlog seeding: a sub-100% pass-rate is direct evidence of a
|
|
165
184
|
// harness weakness, so seed it here rather than relying on the model to call the
|
|
166
185
|
// ResearchBacklog tool. Idempotent by title (`Bench failure: <taskId>`), so a
|
|
@@ -172,12 +191,12 @@ export async function runBench(tasks, runner, matrix, opts) {
|
|
|
172
191
|
const sampleWeight = Math.min(1, runs / 3); // 1 run = weak evidence; ~3+ = solid
|
|
173
192
|
const confidence = Math.round(Math.min(0.9, Math.max(0.25, 0.3 + 0.6 * failRate * sampleWeight)) * 100) / 100;
|
|
174
193
|
const severity = meanScore <= 10 ? 'high' : meanScore < 60 ? 'medium' : 'low';
|
|
175
|
-
const clip = (
|
|
194
|
+
const clip = (x, n) => (x.length > n ? x.slice(0, n) + '…' : x);
|
|
176
195
|
try {
|
|
177
196
|
opts.backlog.add({
|
|
178
197
|
title: `Bench failure: ${task.id}`,
|
|
179
198
|
description: `Harness failed benchmark task "${task.id}" (${task.verifier.type} verifier). ` +
|
|
180
|
-
`passRate=${passes}/${runs}, meanScore=${meanScore}. Prompt: ${clip(task.prompt, 200)}`,
|
|
199
|
+
`passRate=${this.passes}/${runs}, meanScore=${meanScore}. Prompt: ${clip(task.prompt, 200)}`,
|
|
181
200
|
bugClass: opts.deficiencyBugClass ?? 'Other',
|
|
182
201
|
severity,
|
|
183
202
|
impact: 3,
|
|
@@ -185,27 +204,80 @@ export async function runBench(tasks, runner, matrix, opts) {
|
|
|
185
204
|
confidence,
|
|
186
205
|
discoveredRound: opts.discoveredRound,
|
|
187
206
|
discoveredRef: opts.discoveredRef,
|
|
188
|
-
affectedModels: observedModelId ? [observedModelId] : undefined,
|
|
189
|
-
affectedTaskFingerprints: [taskFingerprint],
|
|
190
|
-
notes: `taskType=${taskType}; split=${split}; sample output: ${clip(sampleFailure ?? '(empty output)', 300)}`,
|
|
207
|
+
affectedModels: this.observedModelId ? [this.observedModelId] : undefined,
|
|
208
|
+
affectedTaskFingerprints: [this.taskFingerprint],
|
|
209
|
+
notes: `taskType=${this.taskType}; split=${split}; sample output: ${clip(this.sampleFailure ?? '(empty output)', 300)}`,
|
|
191
210
|
});
|
|
192
|
-
|
|
211
|
+
seeded = 1;
|
|
193
212
|
}
|
|
194
213
|
catch {
|
|
195
214
|
// A backlog write error must never fail the benchmark itself.
|
|
196
215
|
}
|
|
197
216
|
}
|
|
198
|
-
|
|
217
|
+
return {
|
|
218
|
+
summary: { taskId: task.id, taskFingerprint: this.taskFingerprint, taskType: this.taskType, runs, passRate, meanScore, scoreSd },
|
|
219
|
+
seeded,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
function summarize(opts, benches) {
|
|
224
|
+
const tasks = [];
|
|
225
|
+
let seededDeficiencies = 0;
|
|
226
|
+
for (const b of benches) {
|
|
227
|
+
const { summary, seeded } = b.finish();
|
|
228
|
+
tasks.push(summary);
|
|
229
|
+
seededDeficiencies += seeded;
|
|
199
230
|
}
|
|
200
231
|
return {
|
|
201
232
|
experimentTag: opts.experimentTag,
|
|
202
|
-
split,
|
|
233
|
+
split: opts.split ?? 'train',
|
|
203
234
|
harnessRef: opts.harnessRef,
|
|
204
|
-
totalRuns,
|
|
205
|
-
tasks
|
|
235
|
+
totalRuns: tasks.reduce((s, t) => s + t.runs, 0),
|
|
236
|
+
tasks,
|
|
206
237
|
seededDeficiencies,
|
|
207
238
|
};
|
|
208
239
|
}
|
|
240
|
+
export async function runBench(tasks, runner, matrix, opts) {
|
|
241
|
+
const runs = opts.runs ?? 2;
|
|
242
|
+
const benches = [];
|
|
243
|
+
for (const task of tasks) {
|
|
244
|
+
const b = new TaskBench(task, runner, matrix, opts);
|
|
245
|
+
for (let i = 0; i < runs; i++)
|
|
246
|
+
await b.runOnce();
|
|
247
|
+
benches.push(b);
|
|
248
|
+
}
|
|
249
|
+
return summarize(opts, benches);
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Bench a BASE and a CANDIDATE arm INTERLEAVED: for each task and each run index the
|
|
253
|
+
* two arms run back to back, in a seeded random order. Provider drift (latency, load,
|
|
254
|
+
* a silent model update, rate limiting) then lands on both arms instead of all on the
|
|
255
|
+
* one that ran second. Records are identical to two runBench calls (same matrix rows,
|
|
256
|
+
* same summaries); only the run order differs.
|
|
257
|
+
*/
|
|
258
|
+
export async function runBenchPaired(tasks, base, candidate, matrix, opts) {
|
|
259
|
+
const runs = opts.runs ?? 2;
|
|
260
|
+
const rng = mulberry32(opts.orderSeed ?? 0x5eed);
|
|
261
|
+
const baseOpts = { ...opts, harnessRef: base.harnessRef };
|
|
262
|
+
const candOpts = { ...opts, harnessRef: candidate.harnessRef };
|
|
263
|
+
const baseBenches = [];
|
|
264
|
+
const candBenches = [];
|
|
265
|
+
const order = [];
|
|
266
|
+
for (const task of tasks) {
|
|
267
|
+
const b = new TaskBench(task, base.runner, matrix, baseOpts);
|
|
268
|
+
const c = new TaskBench(task, candidate.runner, matrix, candOpts);
|
|
269
|
+
for (let i = 0; i < runs; i++) {
|
|
270
|
+
const baseFirst = rng() < 0.5;
|
|
271
|
+
for (const arm of baseFirst ? ['base', 'candidate'] : ['candidate', 'base']) {
|
|
272
|
+
order.push(arm);
|
|
273
|
+
await (arm === 'base' ? b : c).runOnce();
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
baseBenches.push(b);
|
|
277
|
+
candBenches.push(c);
|
|
278
|
+
}
|
|
279
|
+
return { base: summarize(baseOpts, baseBenches), candidate: summarize(candOpts, candBenches), order };
|
|
280
|
+
}
|
|
209
281
|
/** Validate a parsed task-set JSON value, throwing on malformed entries. */
|
|
210
282
|
export function parseTaskSet(raw, source = '<task-set>') {
|
|
211
283
|
const arr = Array.isArray(raw) ? raw : [raw];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BenchRunner.js","sourceRoot":"","sources":["../../src/training/BenchRunner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BenchRunner.js","sourceRoot":"","sources":["../../src/training/BenchRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/** Convert a glob to an anchored RegExp over repo-relative POSIX paths.
|
|
2
|
+
* `**` matches across directories (and `dir/**` also matches `dir` itself), `*` and `?`
|
|
3
|
+
* stay inside one path segment. A glob with no slash matches the basename at any depth. */
|
|
4
|
+
export declare function globToRegExp(glob: string): RegExp;
|
|
5
|
+
export declare function matchesAny(path: string, globs: readonly string[]): boolean;
|
|
6
|
+
export interface GuardViolation {
|
|
7
|
+
path: string;
|
|
8
|
+
rule: 'protected' | 'outside-editable';
|
|
9
|
+
}
|
|
10
|
+
export interface GuardPolicy {
|
|
11
|
+
/** globs no candidate may touch (the task-sets' in-repo paths are added by the loop). */
|
|
12
|
+
protect: readonly string[];
|
|
13
|
+
/** when non-empty, every changed path must match one of these. */
|
|
14
|
+
editable?: readonly string[];
|
|
15
|
+
}
|
|
16
|
+
/** Check a candidate's changed paths (repo-relative, POSIX) against the policy. */
|
|
17
|
+
export declare function checkCandidateChanges(changed: readonly string[], policy: GuardPolicy): {
|
|
18
|
+
ok: boolean;
|
|
19
|
+
violations: GuardViolation[];
|
|
20
|
+
};
|
|
21
|
+
/** One-line human summary of the violations (capped). */
|
|
22
|
+
export declare function describeViolations(v: readonly GuardViolation[], max?: number): string;
|
|
23
|
+
/** The repo-relative POSIX path of `absPath` when it lies inside `repoDir`, else undefined. */
|
|
24
|
+
export declare function repoRelative(absPath: string, repoDir: string): string | undefined;
|
|
25
|
+
/** Glob that protects a task-set path (a file, or every file under a directory). */
|
|
26
|
+
export declare function protectGlobFor(relPath: string, isDir: boolean): string;
|
|
27
|
+
/** sha256 over a file, or over a directory's files (sorted relative path + content). */
|
|
28
|
+
export declare function hashPath(p: string): string;
|
|
29
|
+
export interface SealedSet {
|
|
30
|
+
/** where the loop read it from */
|
|
31
|
+
source: string;
|
|
32
|
+
/** the private copy every experiment grades against */
|
|
33
|
+
sealed: string;
|
|
34
|
+
sha256: string;
|
|
35
|
+
isDir: boolean;
|
|
36
|
+
/** repo-relative path when the source lies inside the repo (then it is hidden + protected) */
|
|
37
|
+
inRepo?: string;
|
|
38
|
+
}
|
|
39
|
+
/** Copy a task-set (file or dir) into `sealDir/<label>-<basename>` and fingerprint it. */
|
|
40
|
+
export declare function sealTaskSet(source: string, sealDir: string, label: string, repoDir: string): SealedSet;
|
|
41
|
+
/** Task ids declared in a task-set (file or dir of *.json; array or single object). */
|
|
42
|
+
export declare function taskIdsIn(p: string): Set<string>;
|
|
43
|
+
//# sourceMappingURL=EvalGuard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EvalGuard.d.ts","sourceRoot":"","sources":["../../src/training/EvalGuard.ts"],"names":[],"mappings":"AA0BA;;4FAE4F;AAC5F,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAuBjD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAG1E;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,GAAG,kBAAkB,CAAC;CACxC;AAED,MAAM,WAAW,WAAW;IAC1B,yFAAyF;IACzF,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,kEAAkE;IAClE,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B;AAED,mFAAmF;AACnF,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE,WAAW,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,cAAc,EAAE,CAAA;CAAE,CAQpI;AAED,yDAAyD;AACzD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,SAAS,cAAc,EAAE,EAAE,GAAG,SAAI,GAAG,MAAM,CAGhF;AAED,+FAA+F;AAC/F,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIjF;AAED,oFAAoF;AACpF,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAEtE;AAED,wFAAwF;AACxF,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAa1C;AAED,MAAM,WAAW,SAAS;IACxB,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,8FAA8F;IAC9F,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,0FAA0F;AAC1F,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAKtG;AAED,uFAAuF;AACvF,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAYhD"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EvalGuard — keep the Fixer away from the evaluation (autoresearch hardening A1).
|
|
3
|
+
*
|
|
4
|
+
* The statistical gate can only be trusted if the thing being improved cannot reach
|
|
5
|
+
* the thing that grades it. Library home of the three mechanisms, so every entry point
|
|
6
|
+
* can apply them (the CLI `cortex autoresearch loop` applies all three):
|
|
7
|
+
*
|
|
8
|
+
* 1. SEAL — the train/holdout task-sets are copied ONCE, at loop start, into a private
|
|
9
|
+
* temp dir outside the repo, and every experiment grades against those sealed copies.
|
|
10
|
+
* Editing the in-repo task-set (or the main checkout) changes nothing the gate reads.
|
|
11
|
+
* 2. HIDE — a task-set that lives inside the repo is deleted from each candidate worktree
|
|
12
|
+
* before the Fixer runs and restored to the base version before the candidate is
|
|
13
|
+
* committed, so the Fixer neither reads it in the tree nor ships an edit to it.
|
|
14
|
+
* (Best-effort secrecy: the files are still in git history. For a holdout the Fixer
|
|
15
|
+
* must never see, keep it OUTSIDE the repo; the loop warns when it is inside.)
|
|
16
|
+
* 3. REFUSE — before a candidate is benched, its changed paths are checked against the
|
|
17
|
+
* protected globs (verifier scripts, graders, benches: `--protect`) and the optional
|
|
18
|
+
* editable allowlist (`--editable`). A candidate that touches a protected path or
|
|
19
|
+
* strays outside the allowlist is refused unbenched (`skipped: 'eval-guard'`).
|
|
20
|
+
*
|
|
21
|
+
* Pure helpers + small fs helpers; no git here (the caller owns git).
|
|
22
|
+
*/
|
|
23
|
+
import { createHash } from 'node:crypto';
|
|
24
|
+
import { cpSync, readdirSync, readFileSync, statSync } from 'node:fs';
|
|
25
|
+
import { basename, isAbsolute, join, relative, sep } from 'node:path';
|
|
26
|
+
/** Convert a glob to an anchored RegExp over repo-relative POSIX paths.
|
|
27
|
+
* `**` matches across directories (and `dir/**` also matches `dir` itself), `*` and `?`
|
|
28
|
+
* stay inside one path segment. A glob with no slash matches the basename at any depth. */
|
|
29
|
+
export function globToRegExp(glob) {
|
|
30
|
+
let g = glob.trim().replace(/\\/g, '/').replace(/^\.\//, '');
|
|
31
|
+
if (!g.includes('/'))
|
|
32
|
+
g = `**/${g}`;
|
|
33
|
+
let re = '';
|
|
34
|
+
for (let i = 0; i < g.length; i++) {
|
|
35
|
+
const c = g[i];
|
|
36
|
+
if (c === '*') {
|
|
37
|
+
if (g[i + 1] === '*') {
|
|
38
|
+
const slashAfter = g[i + 2] === '/';
|
|
39
|
+
re += slashAfter ? '(?:.*/)?' : '.*';
|
|
40
|
+
i += slashAfter ? 2 : 1;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
re += '[^/]*';
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else if (c === '?') {
|
|
47
|
+
re += '[^/]';
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
re += c.replace(/[.+^${}()|[\]\\]/g, '\\$&');
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// `dir/**` also covers the directory path itself.
|
|
54
|
+
if (re.endsWith('/.*'))
|
|
55
|
+
re = `${re.slice(0, -3)}(?:/.*)?`;
|
|
56
|
+
return new RegExp(`^${re}$`);
|
|
57
|
+
}
|
|
58
|
+
export function matchesAny(path, globs) {
|
|
59
|
+
const p = path.replace(/\\/g, '/').replace(/^\.\//, '');
|
|
60
|
+
return globs.some((g) => globToRegExp(g).test(p));
|
|
61
|
+
}
|
|
62
|
+
/** Check a candidate's changed paths (repo-relative, POSIX) against the policy. */
|
|
63
|
+
export function checkCandidateChanges(changed, policy) {
|
|
64
|
+
const violations = [];
|
|
65
|
+
const editable = policy.editable ?? [];
|
|
66
|
+
for (const path of changed) {
|
|
67
|
+
if (matchesAny(path, policy.protect))
|
|
68
|
+
violations.push({ path, rule: 'protected' });
|
|
69
|
+
else if (editable.length && !matchesAny(path, editable))
|
|
70
|
+
violations.push({ path, rule: 'outside-editable' });
|
|
71
|
+
}
|
|
72
|
+
return { ok: violations.length === 0, violations };
|
|
73
|
+
}
|
|
74
|
+
/** One-line human summary of the violations (capped). */
|
|
75
|
+
export function describeViolations(v, max = 5) {
|
|
76
|
+
const head = v.slice(0, max).map((x) => `${x.path} (${x.rule})`).join(', ');
|
|
77
|
+
return v.length > max ? `${head}, +${v.length - max} more` : head;
|
|
78
|
+
}
|
|
79
|
+
/** The repo-relative POSIX path of `absPath` when it lies inside `repoDir`, else undefined. */
|
|
80
|
+
export function repoRelative(absPath, repoDir) {
|
|
81
|
+
const rel = relative(repoDir, absPath);
|
|
82
|
+
if (!rel || rel.startsWith('..') || isAbsolute(rel))
|
|
83
|
+
return undefined;
|
|
84
|
+
return rel.split(sep).join('/');
|
|
85
|
+
}
|
|
86
|
+
/** Glob that protects a task-set path (a file, or every file under a directory). */
|
|
87
|
+
export function protectGlobFor(relPath, isDir) {
|
|
88
|
+
return isDir ? `${relPath.replace(/\/+$/, '')}/**` : relPath;
|
|
89
|
+
}
|
|
90
|
+
/** sha256 over a file, or over a directory's files (sorted relative path + content). */
|
|
91
|
+
export function hashPath(p) {
|
|
92
|
+
const h = createHash('sha256');
|
|
93
|
+
const walk = (abs, rel) => {
|
|
94
|
+
if (statSync(abs).isDirectory()) {
|
|
95
|
+
for (const name of readdirSync(abs).sort())
|
|
96
|
+
walk(join(abs, name), rel ? `${rel}/${name}` : name);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
h.update(`${rel}\0`);
|
|
100
|
+
h.update(readFileSync(abs));
|
|
101
|
+
h.update('\0');
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
walk(p, '');
|
|
105
|
+
return h.digest('hex');
|
|
106
|
+
}
|
|
107
|
+
/** Copy a task-set (file or dir) into `sealDir/<label>-<basename>` and fingerprint it. */
|
|
108
|
+
export function sealTaskSet(source, sealDir, label, repoDir) {
|
|
109
|
+
const isDir = statSync(source).isDirectory();
|
|
110
|
+
const sealed = join(sealDir, `${label}-${basename(source)}`);
|
|
111
|
+
cpSync(source, sealed, { recursive: true });
|
|
112
|
+
return { source, sealed, sha256: hashPath(sealed), isDir, inRepo: repoRelative(source, repoDir) };
|
|
113
|
+
}
|
|
114
|
+
/** Task ids declared in a task-set (file or dir of *.json; array or single object). */
|
|
115
|
+
export function taskIdsIn(p) {
|
|
116
|
+
const ids = new Set();
|
|
117
|
+
const files = statSync(p).isDirectory()
|
|
118
|
+
? readdirSync(p).filter((f) => f.endsWith('.json')).map((f) => join(p, f))
|
|
119
|
+
: [p];
|
|
120
|
+
for (const f of files) {
|
|
121
|
+
try {
|
|
122
|
+
const raw = JSON.parse(readFileSync(f, 'utf8'));
|
|
123
|
+
for (const t of Array.isArray(raw) ? raw : [raw])
|
|
124
|
+
if (t && typeof t.id === 'string')
|
|
125
|
+
ids.add(t.id);
|
|
126
|
+
}
|
|
127
|
+
catch { /* unreadable file: the experiment reports it */ }
|
|
128
|
+
}
|
|
129
|
+
return ids;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=EvalGuard.js.map
|