@workbench-ai/workbench-core 0.0.50 → 0.0.51

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.
@@ -29,8 +29,18 @@ export interface AuthoredBenchmarkSpec {
29
29
  export interface WorkbenchCandidateRunSpec extends WorkbenchAdapterInvocation {
30
30
  name: string;
31
31
  }
32
+ export interface WorkbenchCaseSelector {
33
+ all?: true;
34
+ split?: string;
35
+ }
36
+ export interface WorkbenchSelectionSpec {
37
+ metric: string;
38
+ cases?: WorkbenchCaseSelector;
39
+ }
32
40
  export interface WorkbenchCandidateImproveSpec extends WorkbenchAdapterInvocation {
33
41
  edits: string[];
42
+ optimizeOn?: WorkbenchCaseSelector;
43
+ selectBy?: WorkbenchSelectionSpec;
34
44
  }
35
45
  export interface WorkbenchCandidateManifestSpec {
36
46
  version: 4;
@@ -71,6 +81,8 @@ export interface GenericRunSpec {
71
81
  runs: Record<string, WorkbenchCandidateRunSpec>;
72
82
  improve?: {
73
83
  edits: string[];
84
+ optimizeOn?: WorkbenchCaseSelector;
85
+ selectBy?: WorkbenchSelectionSpec;
74
86
  };
75
87
  };
76
88
  environment: WorkbenchRuntimeSpec;
@@ -1 +1 @@
1
- {"version":3,"file":"generic-spec.d.ts","sourceRoot":"","sources":["../src/generic-spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generic-spec.d.ts","sourceRoot":"","sources":["../src/generic-spec.ts"],"names":[],"mappings":"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"}
@@ -161,6 +161,8 @@ function genericSpecFromAuthoredBundle(source) {
161
161
  ? {
162
162
  improve: {
163
163
  edits: [...candidate.improve.edits],
164
+ ...(candidate.improve.optimizeOn ? { optimizeOn: cloneJson(candidate.improve.optimizeOn) } : {}),
165
+ ...(candidate.improve.selectBy ? { selectBy: cloneJson(candidate.improve.selectBy) } : {}),
164
166
  },
165
167
  }
166
168
  : {}),
@@ -315,16 +317,67 @@ function normalizeCandidateImprove(value, label, errors) {
315
317
  if (!record) {
316
318
  return undefined;
317
319
  }
318
- rejectUnknownKeys(record, label, ["edits", "use", "with", "auth"], errors);
320
+ rejectUnknownKeys(record, label, ["edits", "use", "with", "auth", "optimizeOn", "selectBy"], errors);
319
321
  const edits = normalizeRelativePathList(record.edits, `${label}.edits`, errors);
320
322
  const invocation = normalizePhaseAdapter(adapterRecordFrom(record), label, errors);
323
+ const optimizeOn = normalizeCaseSelector(record.optimizeOn, `${label}.optimizeOn`, errors);
324
+ const selectBy = normalizeSelectionSpec(record.selectBy, `${label}.selectBy`, errors);
321
325
  return edits.length > 0 && invocation
322
326
  ? {
323
327
  ...invocation,
324
328
  edits,
329
+ ...(optimizeOn ? { optimizeOn } : {}),
330
+ ...(selectBy ? { selectBy } : {}),
325
331
  }
326
332
  : undefined;
327
333
  }
334
+ function normalizeSelectionSpec(value, label, errors) {
335
+ if (value === undefined) {
336
+ return undefined;
337
+ }
338
+ const record = readRequiredRecord(value, label, errors);
339
+ if (!record) {
340
+ return undefined;
341
+ }
342
+ rejectUnknownKeys(record, label, ["metric", "cases"], errors);
343
+ const metric = readRequiredString(record.metric, `${label}.metric`, errors);
344
+ const cases = normalizeCaseSelector(record.cases, `${label}.cases`, errors);
345
+ return metric
346
+ ? {
347
+ metric,
348
+ ...(cases ? { cases } : {}),
349
+ }
350
+ : undefined;
351
+ }
352
+ function normalizeCaseSelector(value, label, errors) {
353
+ if (value === undefined) {
354
+ return undefined;
355
+ }
356
+ const record = readRequiredRecord(value, label, errors);
357
+ if (!record) {
358
+ return undefined;
359
+ }
360
+ rejectUnknownKeys(record, label, ["all", "split"], errors);
361
+ const hasAll = Object.prototype.hasOwnProperty.call(record, "all");
362
+ const hasSplit = Object.prototype.hasOwnProperty.call(record, "split");
363
+ if (hasAll && hasSplit) {
364
+ errors.push(`${label} must specify either all or split, not both.`);
365
+ return undefined;
366
+ }
367
+ if (!hasAll && !hasSplit) {
368
+ errors.push(`${label} must specify all: true or split.`);
369
+ return undefined;
370
+ }
371
+ if (hasAll) {
372
+ if (record.all !== true) {
373
+ errors.push(`${label}.all must be true when provided.`);
374
+ return undefined;
375
+ }
376
+ return { all: true };
377
+ }
378
+ const split = readRequiredString(record.split, `${label}.split`, errors);
379
+ return split ? { split } : undefined;
380
+ }
328
381
  function adapterRecordFrom(record) {
329
382
  return {
330
383
  use: record.use,
package/dist/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- import type { AuthoredWorkbenchSourceDocument, CandidateCaseExecutionRef, CandidateCaseReview, CandidateFilePreview, CandidateFileSummary, CandidateLineageGraph, CandidateRecord, CandidateSummary, EvalCaseResult, EvaluationRecord, EvaluationScorecard, HostedWorkbenchEnvironment, HostedWorkbenchEnvironmentVersion, HostedWorkbenchFileInput, HostedWorkbenchJob, Json, SurfaceSnapshotFile, UsageSummary, WorkbenchCandidatePatch, WorkbenchExecutionCapability, WorkbenchExecutionSpec, WorkbenchResult } from "@workbench-ai/workbench-contract";
1
+ import type { AuthoredWorkbenchSourceDocument, CandidateCaseExecutionRef, CandidateCaseReview, CandidateFilePreview, CandidateFileSummary, CandidateLineageGraph, CandidateRecord, CandidateSummary, EvalCaseResult, EvaluationRecord, EvaluationScorecard, HostedWorkbenchEnvironment, HostedWorkbenchEnvironmentVersion, HostedWorkbenchFileInput, HostedWorkbenchJob, Json, SurfaceSnapshotFile, UsageSummary, WorkbenchRuntimeBundle, WorkbenchRuntimeBundleStats, WorkbenchProjectStateSource, WorkbenchCandidatePatch, WorkbenchExecutionCapability, WorkbenchExecutionSpec, WorkbenchResult } from "@workbench-ai/workbench-contract";
2
2
  import { type WorkbenchAdapterOperationExecutor, type WorkbenchAdapterOperationResult } from "@workbench-ai/workbench-protocol";
3
- import { type GenericEngineCaseSpec, type GenericRunSpec, type WorkbenchEngineCase } from "./generic-spec.ts";
3
+ import { type GenericEngineCaseSpec, type GenericRunSpec, type WorkbenchCaseSelector, type WorkbenchEngineCase } from "./generic-spec.ts";
4
4
  import type { WorkbenchExecutionRuntimeInput } from "./execution-runtime-types.ts";
5
5
  import { createWorkbenchExecutionCapability, type SandboxExecutionFileStore, type SandboxPlane } from "./sandbox-plane.ts";
6
- export { BENCHMARK_SPEC_FILE, CANDIDATE_SPEC_FILE, DEFAULT_EXECUTION_RESOURCES, engineCasePrivateFiles, engineCaseFilesForRuntimeInput, engineCasePublicFiles, engineResolveInvocationForSpec, engineResolveBindingForSpec, engineResolveBindingForSourceYaml, isWorkbenchCandidateManifestPath, parseWorkbenchSourceFiles, resolveEngineCaseExecutionConfig, resolveWorkbenchResolvedSourceYaml, resolveWorkbenchSourceFiles, runtimeNetwork, runtimeResources, serializeWorkbenchResolvedSourceYaml, validateWorkbenchResolvedSourceYaml, type AuthoredBenchmarkSpec, type WorkbenchCandidateImproveSpec, type WorkbenchCandidateManifestSpec, type WorkbenchCandidateRunSpec, type GenericRunSpec, type GenericEngineCaseSpec, type WorkbenchEngineCase, type WorkbenchResolvedSource, } from "./generic-spec.ts";
6
+ export { BENCHMARK_SPEC_FILE, CANDIDATE_SPEC_FILE, DEFAULT_EXECUTION_RESOURCES, engineCasePrivateFiles, engineCaseFilesForRuntimeInput, engineCasePublicFiles, engineResolveInvocationForSpec, engineResolveBindingForSpec, engineResolveBindingForSourceYaml, isWorkbenchCandidateManifestPath, parseWorkbenchSourceFiles, resolveEngineCaseExecutionConfig, resolveWorkbenchResolvedSourceYaml, resolveWorkbenchSourceFiles, runtimeNetwork, runtimeResources, serializeWorkbenchResolvedSourceYaml, validateWorkbenchResolvedSourceYaml, type AuthoredBenchmarkSpec, type WorkbenchCandidateImproveSpec, type WorkbenchCandidateManifestSpec, type WorkbenchCandidateRunSpec, type WorkbenchCaseSelector, type WorkbenchSelectionSpec, type GenericRunSpec, type GenericEngineCaseSpec, type WorkbenchEngineCase, type WorkbenchResolvedSource, } from "./generic-spec.ts";
7
7
  export { composeRuntimeDockerfileWithAdapterInstallers, type WorkbenchRuntimeAdapterInstaller, type WorkbenchRuntimeAdapterInstallerFile, } from "./runtime-dockerfile.ts";
8
8
  export { adapterCommandName, cloneWorkbenchAdapterManifest, collectWorkbenchAdapterAuthRequirements, collectWorkbenchAdapterInvocations, parseWorkbenchAdapterManifest, workbenchAdapterManifestRequiresAuth, workbenchAdapterManifestSupportsOperation, workbenchAdapterOperationCommand, workbenchAdapterOperationExecutor, withDefaultWorkbenchAdapterAuth, withDefaultWorkbenchAdapterAuthProfiles, type WorkbenchPrimitiveAdapterOperation, type WorkbenchAdapterOperation, type WorkbenchAdapterOperationExecutor, type WorkbenchAdapterOperationManifest, type WorkbenchAdapterSlotManifest, type WorkbenchAdapterAuthRequirement, type WorkbenchAdapterAuthManifest, type WorkbenchAdapterAuthMethodManifest, type WorkbenchAdapterInvocationLike, type WorkbenchAdapterManifest, } from "@workbench-ai/workbench-protocol";
9
9
  export { adapterAuthEnv, createWorkbenchAdapterAuthBundle, defaultWorkbenchAdapterAuthStoreRoot, localWorkbenchAdapterAuthStore, normalizeWorkbenchAdapterAuthTarget, parseWorkbenchAdapterAuthTarget, sanitizeWorkbenchAdapterAuthBundle, type WorkbenchAdapterAuthBundle, type WorkbenchAdapterAuthEnvVar, type WorkbenchAdapterAuthFile, type WorkbenchAdapterAuthStatus, type WorkbenchAdapterAuthStatusRecord, type WorkbenchAdapterAuthStore, type WorkbenchAdapterAuthTarget, } from "./adapter-auth.ts";
@@ -25,7 +25,13 @@ export { buildCandidateCaseExecutionRefs, buildWorkbenchExecutionEvidence, isWor
25
25
  export { buildWorkbenchTraceSessionsFromFiles, combineWorkbenchTraceSessions, finalizeWorkbenchExecutionTraceForJob, mergeWorkbenchExecutionTracesByJob, readWorkbenchExecutionTraceFiles, traceSessionLabel, type WorkbenchTraceMergeJob, } from "./execution-traces.ts";
26
26
  export { DOCKER_SANDBOX_BACKEND, assertSandboxHostHealthForProvider, createDockerSandboxBackendDescriptor, createDockerSandboxPlane, resolveWorkbenchSandboxProviderName, sandboxProviderAdmissionForResources, sandboxProviderDefaultMaxConcurrentJobs, sandboxProviderLeaseScope, sandboxHostHealthExpectationForProvider, type SandboxProviderAdmission, type SandboxProviderHostCost, type SandboxProviderLeaseRequest, type SandboxProviderRequestedResources, type SandboxHostHealthExpectation, type WorkbenchSandboxProviderName, } from "./sandbox-backends/index.ts";
27
27
  export type { WorkbenchExecutionEventPublisher, WorkbenchExecutionProgressTarget, } from "./execution-events.ts";
28
- export type { CandidateCaseReview, CandidateRecord, EngineResolveBinding, EvaluationScorecard, HostedWorkbenchJob, Json, RunSummary, RuntimeEvent, SurfaceSnapshotFile, WorkbenchExecutionCapability, WorkbenchExecutionTrace, WorkbenchTraceSession, WorkbenchSandboxHandle, WorkbenchSandboxExecutionMetadata, } from "@workbench-ai/workbench-contract";
28
+ export type { CandidateCaseReview, CandidateRecord, EngineResolveBinding, EvaluationScorecard, HostedWorkbenchJob, Json, RunSummary, RuntimeEvent, SurfaceSnapshotFile, WorkbenchRuntimeBundle, WorkbenchRuntimeBundleStats, WorkbenchRuntimeRun, WorkbenchRuntimeCandidateFiles, WorkbenchRuntimeExecutionFiles, WorkbenchRuntimeImportResult, WorkbenchProjectSourceResources, WorkbenchProjectState, WorkbenchProjectStateBase, WorkbenchProjectStateImportResult, WorkbenchProjectStateRemote, WorkbenchProjectStateSource, WorkbenchExecutionCapability, WorkbenchExecutionTrace, WorkbenchTraceSession, WorkbenchSandboxHandle, WorkbenchSandboxExecutionMetadata, } from "@workbench-ai/workbench-contract";
29
+ export declare function sanitizeWorkbenchRuntimeJobForExchange(job: HostedWorkbenchJob): HostedWorkbenchJob;
30
+ export declare function sanitizeWorkbenchRuntimeCandidateForExchange(candidate: CandidateRecord): CandidateRecord;
31
+ export declare function workbenchProjectSourceFingerprint(input: Omit<WorkbenchProjectStateSource, "files" | "revisionId" | "fingerprint">): string;
32
+ export declare function workbenchRuntimeBundleFingerprint(bundle: WorkbenchRuntimeBundle): string;
33
+ export declare function workbenchSurfaceFilesEqualForExchange(left: readonly SurfaceSnapshotFile[], right: readonly SurfaceSnapshotFile[]): boolean;
34
+ export declare function workbenchRuntimeBundleStats(bundle: WorkbenchRuntimeBundle): WorkbenchRuntimeBundleStats;
29
35
  export interface WorkbenchRunMaterialization {
30
36
  candidates: CandidateRecord[];
31
37
  candidateFiles: Record<string, SurfaceSnapshotFile[]>;
@@ -89,6 +95,11 @@ export declare function materializeWorkbenchRunResult(args: {
89
95
  jobs: readonly HostedWorkbenchJob[];
90
96
  previousCandidate?: CandidateRecord | null;
91
97
  existingCandidateCount: number;
98
+ selection?: {
99
+ metric: string;
100
+ caseIds?: readonly string[];
101
+ label?: string;
102
+ };
92
103
  }): WorkbenchRunMaterialization;
93
104
  export declare function evaluationScorecardId(runId: string, candidateId: string): string;
94
105
  export declare function selectExecutionOutputFilesForInspection(args: {
@@ -100,6 +111,21 @@ export declare function isWorkbenchInternalOutputPath(filePath: string): boolean
100
111
  export declare function createOptimizerTraceInputFiles(args: {
101
112
  jobs: readonly HostedWorkbenchJob[];
102
113
  }): SurfaceSnapshotFile[];
114
+ export interface WorkbenchSelectionPolicy {
115
+ metric: string;
116
+ selector: WorkbenchCaseSelector;
117
+ }
118
+ export declare function workbenchImproveOptimizeSelector(spec: GenericRunSpec): WorkbenchCaseSelector;
119
+ export declare function workbenchImproveSelectionPolicy(spec: GenericRunSpec): WorkbenchSelectionPolicy;
120
+ export declare function workbenchEngineCaseIdsForSelector(engineCases: readonly WorkbenchEngineCase[], selector: WorkbenchCaseSelector): string[];
121
+ export declare function workbenchEngineCaseIdsForImproveEvaluation(args: {
122
+ spec: GenericRunSpec;
123
+ engineCases: readonly WorkbenchEngineCase[];
124
+ }): string[];
125
+ export declare function filterOptimizerTraceJobsForCaseIds(jobs: readonly HostedWorkbenchJob[], caseIds: readonly string[]): HostedWorkbenchJob[];
126
+ export declare function formatWorkbenchCaseSelector(selector: WorkbenchCaseSelector): string;
127
+ export declare function formatWorkbenchSelectionPolicy(policy: WorkbenchSelectionPolicy): string;
128
+ export declare function workbenchCaseSelectorUsesAllCases(selector: WorkbenchCaseSelector): boolean;
103
129
  export declare function evaluationMeanMetrics(evaluation: Pick<EvaluationRecord, "metrics"> | null | undefined): Record<string, number> | undefined;
104
130
  export declare function candidateRecordWithoutDerivedFields(candidate: CandidateRecord): CandidateRecord;
105
131
  export declare function candidateSummaryFromRecord(candidate: CandidateRecord): CandidateSummary;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -4,7 +4,7 @@ import path from "node:path";
4
4
  import { fileURLToPath } from "node:url";
5
5
  import YAML from "yaml";
6
6
  import { adapterCommandName, assertWorkbenchAdapterOperationResultOk, collectWorkbenchAdapterAuthRequirements, parseWorkbenchAdapterManifest, readWorkbenchAdapterOperationResult, WORKBENCH_RUNTIME_CONTROL_TOKEN_ENV, WORKBENCH_RUNTIME_CONTROL_URL_ENV, workbenchAdapterOperationCommand, workbenchAdapterOperationExecutor, workbenchAdapterOperationResultPath, } from "@workbench-ai/workbench-protocol";
7
- import { BENCHMARK_SPEC_FILE, engineCasePrivateFiles, engineCaseFilesForRuntimeInput, engineCasePublicFiles, resolveEngineCaseExecutionConfig, resolveWorkbenchResolvedSourceYaml as resolveWorkbenchResolvedSourceYamlInternal, validateWorkbenchResolvedSourceYaml as validateWorkbenchResolvedSourceYamlInternal, isWorkbenchCandidateManifestPath, } from "./generic-spec.js";
7
+ import { BENCHMARK_SPEC_FILE, DEFAULT_EXECUTION_RESOURCES, engineCasePrivateFiles, engineCaseFilesForRuntimeInput, engineCasePublicFiles, resolveEngineCaseExecutionConfig, resolveWorkbenchResolvedSourceYaml as resolveWorkbenchResolvedSourceYamlInternal, validateWorkbenchResolvedSourceYaml as validateWorkbenchResolvedSourceYamlInternal, isWorkbenchCandidateManifestPath, } from "./generic-spec.js";
8
8
  import { attachSandboxMetadataToJob, createWorkbenchSandboxFileStore, isSurfaceSnapshotFile, readWorkbenchExecutionSpec, } from "./sandbox-inputs.js";
9
9
  import { asRuntimeRecord, importNodeModule, isJsonPayload, jsonRecord, nodeBuiltin, quoteShellArg, resolveWorkbenchWorkerId, } from "./runtime-utils.js";
10
10
  import { createWorkbenchExecutionCapability, createWorkbenchSandboxAllocation, collectExecutionCapabilityScopeIssues, collectSandboxAllocationScopeIssues, collectSandboxHandleScopeIssues, assertSandboxBackendSupportsNetworkPolicy, executeValidatedSandboxExecution, } from "./sandbox-plane.js";
@@ -36,6 +36,117 @@ export { collectSandboxAllocationScopeIssues, collectExecutionCapabilityScopeIss
36
36
  export { buildCandidateCaseExecutionRefs, buildWorkbenchExecutionEvidence, isWorkbenchExecutionActive, readWorkbenchExecutionId, readWorkbenchExecutionMetadataNumber, readWorkbenchExecutionMetadataString, readWorkbenchExecutionPurpose, resolveWorkbenchJobGroupStatus, } from "./execution-evidence.js";
37
37
  export { buildWorkbenchTraceSessionsFromFiles, combineWorkbenchTraceSessions, finalizeWorkbenchExecutionTraceForJob, mergeWorkbenchExecutionTracesByJob, readWorkbenchExecutionTraceFiles, traceSessionLabel, } from "./execution-traces.js";
38
38
  export { DOCKER_SANDBOX_BACKEND, assertSandboxHostHealthForProvider, createDockerSandboxBackendDescriptor, createDockerSandboxPlane, resolveWorkbenchSandboxProviderName, sandboxProviderAdmissionForResources, sandboxProviderDefaultMaxConcurrentJobs, sandboxProviderLeaseScope, sandboxHostHealthExpectationForProvider, } from "./sandbox-backends/index.js";
39
+ export function sanitizeWorkbenchRuntimeJobForExchange(job) {
40
+ const { leaseUntil: _leaseUntil, wakeupLeaseUntil: _wakeupLeaseUntil, hostId: _hostId, workerId: _workerId, claimTokenHash: _claimTokenHash, trace: _trace, traceSessions: _traceSessions, ...portable } = job;
41
+ return { ...portable };
42
+ }
43
+ export function sanitizeWorkbenchRuntimeCandidateForExchange(candidate) {
44
+ const { ownerUserId: _ownerUserId, ownerUsername: _ownerUsername, visibility: _visibility, metrics: _metrics, candidateRunId: _candidateRunId, candidateRunName: _candidateRunName, ...portable } = candidate;
45
+ return { ...portable };
46
+ }
47
+ export function workbenchProjectSourceFingerprint(input) {
48
+ const canonical = {
49
+ sourceYaml: normalizeTextForProjectStateFingerprint(input.source),
50
+ candidateFiles: canonicalFilesForProjectStateFingerprint(input.candidateFiles),
51
+ engineResolveFiles: canonicalFilesForProjectStateFingerprint(input.engineResolveFiles),
52
+ engineResolveBinding: {
53
+ engine: input.engineResolveBinding.engine,
54
+ resolver: {
55
+ use: input.engineResolveBinding.resolver.use,
56
+ withFingerprint: input.engineResolveBinding.resolver.withFingerprint,
57
+ },
58
+ },
59
+ adapterFiles: canonicalFilesForProjectStateFingerprint(input.adapterFiles),
60
+ runtimeFiles: canonicalFilesForProjectStateFingerprint(input.runtimeFiles),
61
+ dockerfile: normalizeTextForProjectStateFingerprint(input.dockerfile),
62
+ runtimeDockerfile: normalizeTextForProjectStateFingerprint(input.runtimeDockerfile),
63
+ resources: normalizeProjectStateResources(input.resources),
64
+ network: input.network,
65
+ };
66
+ return createHash("sha256").update(JSON.stringify(canonicalizeProjectState(canonical))).digest("hex");
67
+ }
68
+ export function workbenchRuntimeBundleFingerprint(bundle) {
69
+ const canonical = {
70
+ schema: bundle.schema,
71
+ activeId: bundle.activeId,
72
+ candidates: sortByStableKey(bundle.candidates.map(sanitizeWorkbenchRuntimeCandidateForExchange), (candidate) => candidate.id),
73
+ candidateFiles: sortByStableKey(bundle.candidateFiles.map((group) => ({
74
+ candidateId: group.candidateId,
75
+ files: canonicalFilesForProjectStateFingerprint(group.files),
76
+ })), (group) => group.candidateId),
77
+ evaluations: sortByStableKey(bundle.evaluations, (evaluation) => evaluation.id),
78
+ runs: sortByStableKey(bundle.runs, (run) => run.id),
79
+ jobs: sortByStableKey(bundle.jobs.map(runtimeJobForProjectStateFingerprint), (job) => job.id),
80
+ executionFiles: sortByStableKey(bundle.executionFiles.map((group) => ({
81
+ jobId: group.jobId,
82
+ files: canonicalFilesForProjectStateFingerprint(group.files),
83
+ })), (group) => group.jobId),
84
+ events: sortByStableKey(bundle.events, (event) => [event.runId ?? "_", event.jobId ?? "_", event.at, event.id].join("#")),
85
+ };
86
+ return createHash("sha256").update(JSON.stringify(canonicalizeProjectState(canonical))).digest("hex");
87
+ }
88
+ export function workbenchSurfaceFilesEqualForExchange(left, right) {
89
+ return JSON.stringify(canonicalFilesForProjectStateFingerprint(left)) ===
90
+ JSON.stringify(canonicalFilesForProjectStateFingerprint(right));
91
+ }
92
+ export function workbenchRuntimeBundleStats(bundle) {
93
+ return {
94
+ candidates: bundle.candidates.length,
95
+ candidateFiles: bundle.candidateFiles.reduce((sum, group) => sum + group.files.length, 0),
96
+ evaluations: bundle.evaluations.length,
97
+ runs: bundle.runs.length,
98
+ jobs: bundle.jobs.length,
99
+ executionFiles: bundle.executionFiles.reduce((sum, group) => sum + group.files.length, 0),
100
+ events: bundle.events.length,
101
+ activeId: bundle.activeId,
102
+ };
103
+ }
104
+ function runtimeJobForProjectStateFingerprint(job) {
105
+ const portable = sanitizeWorkbenchRuntimeJobForExchange(job);
106
+ const output = portable.output;
107
+ if (!output || typeof output !== "object" || Array.isArray(output)) {
108
+ return portable;
109
+ }
110
+ const { files: _files, fileSet: _fileSet, ...portableOutput } = output;
111
+ return {
112
+ ...portable,
113
+ output: portableOutput,
114
+ };
115
+ }
116
+ function canonicalFilesForProjectStateFingerprint(files) {
117
+ return sortByStableKey(files.map((file) => ({
118
+ path: file.path,
119
+ encoding: file.encoding,
120
+ executable: Boolean(file.executable),
121
+ content: file.content,
122
+ })), (file) => file.path);
123
+ }
124
+ function normalizeTextForProjectStateFingerprint(value) {
125
+ return value.replace(/\r\n/gu, "\n").replace(/\r/gu, "\n");
126
+ }
127
+ function normalizeProjectStateResources(resources) {
128
+ return {
129
+ cpu: resources.cpu ?? DEFAULT_EXECUTION_RESOURCES.cpu,
130
+ memoryGb: resources.memoryGb ?? DEFAULT_EXECUTION_RESOURCES.memoryGb,
131
+ diskGb: resources.diskGb ?? DEFAULT_EXECUTION_RESOURCES.diskGb,
132
+ timeoutMinutes: resources.timeoutMinutes ?? DEFAULT_EXECUTION_RESOURCES.timeoutMinutes,
133
+ };
134
+ }
135
+ function sortByStableKey(items, keyFor) {
136
+ return [...items].sort((left, right) => keyFor(left).localeCompare(keyFor(right)));
137
+ }
138
+ function canonicalizeProjectState(value) {
139
+ if (Array.isArray(value)) {
140
+ return value.map(canonicalizeProjectState);
141
+ }
142
+ if (!value || typeof value !== "object") {
143
+ return value;
144
+ }
145
+ const record = value;
146
+ return Object.fromEntries(Object.keys(record)
147
+ .sort()
148
+ .map((key) => [key, canonicalizeProjectState(record[key])]));
149
+ }
39
150
  export const DEFAULT_ENVIRONMENT_VERSIONS = [
40
151
  {
41
152
  id: "envv_python_3_12",
@@ -407,10 +518,7 @@ export function materializeWorkbenchRunResult(args) {
407
518
  const candidateId = candidateRevision.candidateId;
408
519
  const candidateJobs = evaluationsByCandidate.get(candidateId) ?? [];
409
520
  const succeededEvaluationJobs = candidateJobs.filter((job) => job.status === "succeeded");
410
- const outputs = normalizeEvaluationSampleOutputs({
411
- jobs: succeededEvaluationJobs,
412
- allJobs: completed,
413
- })
521
+ const outputs = normalizeEvaluationSampleOutputs(succeededEvaluationJobs)
414
522
  .sort((left, right) => compareSampleOutputs(left.output, right.output));
415
523
  const outputJobIds = new Set(outputs.flatMap(({ jobs }) => jobs.map((job) => job.id)));
416
524
  const completedSampleKeys = new Set(outputs
@@ -490,6 +598,15 @@ export function materializeWorkbenchRunResult(args) {
490
598
  candidateRunId: args.spec.candidate.selectedRunId,
491
599
  candidateRunName: args.spec.candidate.selectedRunName,
492
600
  evaluation: evalRecord,
601
+ ...(args.selection
602
+ ? {
603
+ selection: {
604
+ metric: args.selection.metric,
605
+ caseIds: args.selection.caseIds,
606
+ ...(args.selection.label ? { label: args.selection.label } : {}),
607
+ },
608
+ }
609
+ : {}),
493
610
  }));
494
611
  candidateFiles[candidateId] = materializedCandidateFiles({
495
612
  candidateRevisionFiles: candidateRevision.files,
@@ -498,6 +615,7 @@ export function materializeWorkbenchRunResult(args) {
498
615
  const selectedCandidate = selectCandidate({
499
616
  candidates,
500
617
  previousCandidate: args.previousCandidate ?? null,
618
+ selection: args.selection,
501
619
  });
502
620
  return {
503
621
  candidates,
@@ -619,6 +737,9 @@ function materializedCandidateFiles(args) {
619
737
  }
620
738
  function createEvaluationScorecard(args) {
621
739
  const evaluation = args.evaluation;
740
+ const selectionScore = args.selection
741
+ ? readEvaluationSelectionStats(evaluation, args.selection.metric, args.selection.caseIds)
742
+ : null;
622
743
  return {
623
744
  id: evaluationScorecardId(args.runId, args.candidate.id),
624
745
  runId: args.runId,
@@ -636,6 +757,9 @@ function createEvaluationScorecard(args) {
636
757
  completedSampleCount: evaluation.completedSampleCount,
637
758
  errorSampleCount: evaluation.errorSampleCount,
638
759
  ...(evaluation.metrics ? { metrics: evaluation.metrics } : {}),
760
+ ...(args.selection ? { selectionMetric: args.selection.metric } : {}),
761
+ ...(args.selection ? { selectionLabel: args.selection.label ?? `${args.selection.metric} on selected cases` } : {}),
762
+ ...(selectionScore ? { selectionScore } : {}),
639
763
  ...(evaluation.durationMs ? { durationMs: evaluation.durationMs } : {}),
640
764
  ...(evaluation.usage ? { usage: evaluation.usage } : {}),
641
765
  ...(evaluation.error ? { error: evaluation.error } : {}),
@@ -703,6 +827,62 @@ export function createOptimizerTraceInputFiles(args) {
703
827
  }, null, 2)}\n`));
704
828
  return dedupeSurfaceFiles(files);
705
829
  }
830
+ export function workbenchImproveOptimizeSelector(spec) {
831
+ return cloneWorkbenchCaseSelector(spec.candidate.improve?.optimizeOn ?? { all: true });
832
+ }
833
+ export function workbenchImproveSelectionPolicy(spec) {
834
+ const optimizeOn = workbenchImproveOptimizeSelector(spec);
835
+ const selectBy = spec.candidate.improve?.selectBy;
836
+ return {
837
+ metric: selectBy?.metric ?? "score",
838
+ selector: cloneWorkbenchCaseSelector(selectBy?.cases ?? optimizeOn),
839
+ };
840
+ }
841
+ export function workbenchEngineCaseIdsForSelector(engineCases, selector) {
842
+ return engineCases
843
+ .filter((engineCase) => workbenchEngineCaseMatchesSelector(engineCase, selector))
844
+ .map((engineCase) => engineCase.id);
845
+ }
846
+ export function workbenchEngineCaseIdsForImproveEvaluation(args) {
847
+ const optimizeIds = new Set(workbenchEngineCaseIdsForSelector(args.engineCases, workbenchImproveOptimizeSelector(args.spec)));
848
+ const selectionIds = new Set(workbenchEngineCaseIdsForSelector(args.engineCases, workbenchImproveSelectionPolicy(args.spec).selector));
849
+ return args.engineCases
850
+ .map((engineCase) => engineCase.id)
851
+ .filter((caseId) => optimizeIds.has(caseId) || selectionIds.has(caseId));
852
+ }
853
+ export function filterOptimizerTraceJobsForCaseIds(jobs, caseIds) {
854
+ const allowed = new Set(caseIds);
855
+ if (allowed.size === 0) {
856
+ return [];
857
+ }
858
+ return jobs.filter((job) => {
859
+ if (workbenchExecutionPurpose(job) !== "attempt") {
860
+ return false;
861
+ }
862
+ const caseId = readJobString(job.input, "caseId");
863
+ return caseId !== null && allowed.has(caseId);
864
+ });
865
+ }
866
+ export function formatWorkbenchCaseSelector(selector) {
867
+ return workbenchCaseSelectorUsesAllCases(selector)
868
+ ? "all cases"
869
+ : `split=${selector.split}`;
870
+ }
871
+ export function formatWorkbenchSelectionPolicy(policy) {
872
+ return `${policy.metric} on ${formatWorkbenchCaseSelector(policy.selector)}`;
873
+ }
874
+ export function workbenchCaseSelectorUsesAllCases(selector) {
875
+ return !selector.split;
876
+ }
877
+ function workbenchEngineCaseMatchesSelector(engineCase, selector) {
878
+ if (workbenchCaseSelectorUsesAllCases(selector)) {
879
+ return true;
880
+ }
881
+ return engineCase.case.split === selector.split;
882
+ }
883
+ function cloneWorkbenchCaseSelector(selector) {
884
+ return selector.split ? { split: selector.split } : { all: true };
885
+ }
706
886
  export function evaluationMeanMetrics(evaluation) {
707
887
  const entries = Object.entries(evaluation?.metrics ?? {})
708
888
  .filter((entry) => Number.isFinite(entry[1].mean));
@@ -1104,6 +1284,12 @@ function parseAuthoredWorkbenchSourceSpec(source) {
1104
1284
  ? {
1105
1285
  improve: {
1106
1286
  edits: [...resolved.candidate.improve.edits],
1287
+ ...(resolved.candidate.improve.optimizeOn
1288
+ ? { optimizeOn: resolved.candidate.improve.optimizeOn }
1289
+ : {}),
1290
+ ...(resolved.candidate.improve.selectBy
1291
+ ? { selectBy: resolved.candidate.improve.selectBy }
1292
+ : {}),
1107
1293
  ...improveSpecFromInvocation(resolved.improve),
1108
1294
  },
1109
1295
  }
@@ -1780,6 +1966,7 @@ async function executeAttemptExecutionInCurrentRuntime(args, execution, startedA
1780
1966
  attemptIndex: workload.attemptIndex,
1781
1967
  sampleIndex: workload.sampleIndex,
1782
1968
  caseId: workload.caseId,
1969
+ split: workload.engineCaseSpec?.split,
1783
1970
  startedAt,
1784
1971
  finishedAt,
1785
1972
  durationMs: workloadResult.durationMs,
@@ -2671,6 +2858,7 @@ async function writeWorkbenchAdapterRequest(root, workload, execution, step, aut
2671
2858
  const requestPath = path.join(root, ".workbench", "request.json");
2672
2859
  await fs.mkdir(path.dirname(requestPath), { recursive: true });
2673
2860
  const casePrompt = workload.engineCaseSpec?.prompt;
2861
+ const caseSplit = workload.engineCaseSpec?.split;
2674
2862
  const adapter = step.adapter ?? execution.adapter;
2675
2863
  const candidateCommand = adapterProtocolCommandSpec(workload.spec.run, "candidate.run", manifests).command;
2676
2864
  const payload = {
@@ -2709,6 +2897,7 @@ async function writeWorkbenchAdapterRequest(root, workload, execution, step, aut
2709
2897
  case: {
2710
2898
  id: workload.caseId,
2711
2899
  ...(casePrompt ? { prompt: casePrompt } : {}),
2900
+ ...(caseSplit ? { split: caseSplit } : {}),
2712
2901
  },
2713
2902
  },
2714
2903
  paths: {
@@ -3117,6 +3306,7 @@ function evaluateSample(args) {
3117
3306
  }
3118
3307
  const cases = runtimeTimedCaseResults({
3119
3308
  caseId: args.caseId,
3309
+ split: args.split,
3120
3310
  status: "completed",
3121
3311
  durationMs,
3122
3312
  metrics,
@@ -3181,8 +3371,8 @@ function normalizeSampleJobOutput(value) {
3181
3371
  : traceFilePaths(files),
3182
3372
  };
3183
3373
  }
3184
- function normalizeEvaluationSampleOutputs(args) {
3185
- return args.jobs.flatMap((job) => {
3374
+ function normalizeEvaluationSampleOutputs(jobs) {
3375
+ return jobs.flatMap((job) => {
3186
3376
  const output = normalizeSampleJobOutput(job.output);
3187
3377
  if (!output) {
3188
3378
  return [];
@@ -3194,6 +3384,7 @@ function normalizeEvaluationSampleOutputs(args) {
3194
3384
  ...output.sample,
3195
3385
  cases: runtimeTimedCaseResults({
3196
3386
  caseId,
3387
+ split: readJobEngineCaseSplit(job),
3197
3388
  status: output.sample.status === "error" ? "error" : "completed",
3198
3389
  durationMs,
3199
3390
  metrics: output.sample.metrics ?? {},
@@ -3220,11 +3411,22 @@ function runtimeTimedCaseResults(args) {
3220
3411
  }];
3221
3412
  return cases.map((entry) => ({
3222
3413
  ...entry,
3414
+ ...(!entry.split && args.split && entry.id === args.caseId ? { split: args.split } : {}),
3223
3415
  status: entry.status ?? args.status,
3224
3416
  metrics: entry.metrics ?? args.metrics,
3225
3417
  durationMs: args.durationMs,
3226
3418
  }));
3227
3419
  }
3420
+ function readJobEngineCaseSplit(job) {
3421
+ const input = jsonRecord(job.input);
3422
+ const execution = jsonRecord(input.execution);
3423
+ const metadata = jsonRecord(execution.metadata);
3424
+ const engineCase = jsonRecord(metadata.engineCase);
3425
+ const split = engineCase.split;
3426
+ return typeof split === "string" && split.trim().length > 0
3427
+ ? split.trim()
3428
+ : undefined;
3429
+ }
3228
3430
  function runtimeJobDurationMs(job) {
3229
3431
  if (typeof job.startedAt !== "string" || typeof job.finishedAt !== "string") {
3230
3432
  return undefined;
@@ -3318,6 +3520,7 @@ function errorEvaluationSampleFromJobGroup(jobs, candidateId, attemptIndex) {
3318
3520
  }
3319
3521
  const sampleIndex = readOptionalJobNumber(job.input, "sampleIndex");
3320
3522
  const caseId = readJobString(job.input, "caseId");
3523
+ const split = readJobEngineCaseSplit(job);
3321
3524
  if (sampleIndex === null || !caseId) {
3322
3525
  return null;
3323
3526
  }
@@ -3342,6 +3545,7 @@ function errorEvaluationSampleFromJobGroup(jobs, candidateId, attemptIndex) {
3342
3545
  ...(error ? { error } : {}),
3343
3546
  cases: [{
3344
3547
  id: caseId,
3548
+ ...(split ? { split } : {}),
3345
3549
  status: "error",
3346
3550
  ...(durationMs !== undefined ? { durationMs } : {}),
3347
3551
  metrics: {},
@@ -3586,15 +3790,16 @@ function aggregateCaseStatus(results) {
3586
3790
  function selectCandidate(args) {
3587
3791
  let selected = args.previousCandidate;
3588
3792
  for (const candidate of args.candidates) {
3589
- if (!selected || hasHigherScore(candidate, selected)) {
3793
+ if (!selected || hasHigherEvaluationMetric(candidate, selected, args.selection)) {
3590
3794
  selected = candidate;
3591
3795
  }
3592
3796
  }
3593
3797
  return selected;
3594
3798
  }
3595
- function hasHigherScore(candidate, incumbent) {
3596
- const candidateValue = readEvaluationMean(candidate.eval, "score");
3597
- const incumbentValue = readEvaluationMean(incumbent.eval, "score");
3799
+ function hasHigherEvaluationMetric(candidate, incumbent, selection) {
3800
+ const metric = selection?.metric ?? "score";
3801
+ const candidateValue = readEvaluationSelectionMean(candidate.eval, metric, selection?.caseIds);
3802
+ const incumbentValue = readEvaluationSelectionMean(incumbent.eval, metric, selection?.caseIds);
3598
3803
  if (candidateValue == null) {
3599
3804
  return false;
3600
3805
  }
@@ -3603,9 +3808,28 @@ function hasHigherScore(candidate, incumbent) {
3603
3808
  }
3604
3809
  return candidateValue > incumbentValue;
3605
3810
  }
3606
- function readEvaluationMean(evaluation, metric) {
3607
- const direct = evaluation?.metrics?.[metric]?.mean;
3608
- return typeof direct === "number" && Number.isFinite(direct) ? direct : null;
3811
+ function readEvaluationSelectionMean(evaluation, metric, caseIds) {
3812
+ const stats = readEvaluationSelectionStats(evaluation, metric, caseIds);
3813
+ return stats ? stats.mean : null;
3814
+ }
3815
+ function readEvaluationSelectionStats(evaluation, metric, caseIds) {
3816
+ if (!caseIds) {
3817
+ const direct = evaluation?.metrics?.[metric];
3818
+ return direct && Number.isFinite(direct.mean) ? direct : null;
3819
+ }
3820
+ if (caseIds.length === 0) {
3821
+ return null;
3822
+ }
3823
+ const allowed = new Set(caseIds);
3824
+ const values = (evaluation?.samples ?? [])
3825
+ .flatMap((sample) => sample.cases ?? [])
3826
+ .flatMap((caseResult) => {
3827
+ const metricValue = caseResult.metrics[metric];
3828
+ return allowed.has(caseResult.id) && typeof metricValue === "number" && Number.isFinite(metricValue)
3829
+ ? [metricValue]
3830
+ : [];
3831
+ });
3832
+ return values.length > 0 ? metricStats(values) : null;
3609
3833
  }
3610
3834
  function metricStats(values) {
3611
3835
  const count = values.length;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@workbench-ai/workbench-core",
3
- "version": "0.0.50",
3
+ "version": "0.0.51",
4
4
  "type": "module",
5
5
  "repository": {
6
6
  "type": "git",
@@ -22,8 +22,8 @@
22
22
  ],
23
23
  "dependencies": {
24
24
  "yaml": "^2.8.2",
25
- "@workbench-ai/workbench-contract": "0.0.50",
26
- "@workbench-ai/workbench-protocol": "0.0.50"
25
+ "@workbench-ai/workbench-contract": "0.0.51",
26
+ "@workbench-ai/workbench-protocol": "0.0.51"
27
27
  },
28
28
  "devDependencies": {
29
29
  "@types/node": "^24.3.1",