@workbench-ai/workbench-core 0.0.73 → 0.0.75

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/dist/index.d.ts CHANGED
@@ -60,6 +60,15 @@ export interface WorkbenchStateImproveOptions {
60
60
  parentRunId?: string;
61
61
  evidenceTraceIds?: readonly string[];
62
62
  }
63
+ export interface WorkbenchPreparedCloudEvalRequest {
64
+ versionId: string;
65
+ skill?: string;
66
+ agent?: string;
67
+ samples: number;
68
+ }
69
+ export interface WorkbenchPreparedCloudImproveRequest extends WorkbenchPreparedCloudEvalRequest {
70
+ budget: number;
71
+ }
63
72
  export interface WorkbenchCaseSampleSelection {
64
73
  caseId: string;
65
74
  sample: number;
@@ -113,7 +122,6 @@ export interface WorkbenchImproveOptions extends WorkbenchCommandOptions {
113
122
  version?: string;
114
123
  skill?: string;
115
124
  agent?: string;
116
- improverAgent?: WorkbenchAgent;
117
125
  budget?: number;
118
126
  samples?: number;
119
127
  parentRunId?: string;
@@ -258,6 +266,7 @@ export declare function workbenchStatusSnapshot(options?: WorkbenchCommandOption
258
266
  export declare function checkWorkbenchSkill(options?: WorkbenchCommandOptions): Promise<WorkbenchCheckResult>;
259
267
  export declare function listWorkbenchVersions(options?: WorkbenchCommandOptions): Promise<WorkbenchVersion[]>;
260
268
  export declare function evalWorkbenchSkill(options?: WorkbenchEvalOptions): Promise<WorkbenchRun[]>;
269
+ export declare function prepareWorkbenchCloudEvalRequest(options?: Pick<WorkbenchEvalOptions, "dir" | "authToken" | "skill" | "agent" | "samples">): Promise<WorkbenchPreparedCloudEvalRequest>;
261
270
  export declare function evalWorkbenchProjectState(state: WorkbenchProjectState, options?: WorkbenchStateEvalOptions): Promise<{
262
271
  state: WorkbenchProjectState;
263
272
  runs: WorkbenchRun[];
@@ -266,6 +275,7 @@ export declare function improveWorkbenchProjectState(state: WorkbenchProjectStat
266
275
  state: WorkbenchProjectState;
267
276
  runs: WorkbenchRun[];
268
277
  }>;
278
+ export declare function prepareWorkbenchCloudImproveRequest(options?: Pick<WorkbenchImproveOptions, "dir" | "authToken" | "skill" | "agent" | "budget" | "samples">): Promise<WorkbenchPreparedCloudImproveRequest>;
269
279
  export declare function listWorkbenchProjectStateEvalCases(state: WorkbenchProjectState): Promise<WorkbenchCaseRecord[]>;
270
280
  export declare function listWorkbenchProjectStateEvalRuntimeCases(state: WorkbenchProjectState, evalHash?: string): Promise<WorkbenchEvalCaseRuntime[]>;
271
281
  export declare function createWorkbenchSkillEvalRuntimeInput(args: WorkbenchSkillEvalRuntimeInputArgs): WorkbenchExecutionRuntimeInput;
@@ -324,14 +334,6 @@ export declare function switchWorkbenchVersion(versionRef: string, options?: Wor
324
334
  export declare function diffWorkbenchVersions(range: string, options?: WorkbenchCommandOptions): Promise<WorkbenchDiffEntry[]>;
325
335
  export declare function showWorkbenchRef(ref: string, options?: WorkbenchCommandOptions): Promise<unknown>;
326
336
  export declare function filesForWorkbenchRef(ref: string, options?: WorkbenchCommandOptions): Promise<SurfaceSnapshotFile[]>;
327
- export declare function listWorkbenchCases(options?: WorkbenchCommandOptions): Promise<WorkbenchCaseRecord[]>;
328
- export declare function showWorkbenchCase(caseId: string, options?: WorkbenchCommandOptions): Promise<WorkbenchCaseRecord>;
329
- export declare function addWorkbenchCase(options?: WorkbenchCommandOptions & {
330
- fromTraceId?: string;
331
- }): Promise<WorkbenchCaseRecord>;
332
- export declare function removeWorkbenchCase(caseId: string, options?: WorkbenchCommandOptions): Promise<{
333
- removed: string;
334
- }>;
335
337
  export declare function listWorkbenchAgents(options?: WorkbenchCommandOptions): Promise<WorkbenchAgent[]>;
336
338
  export declare function addWorkbenchAgent(input: WorkbenchCommandOptions & {
337
339
  name: string;
@@ -378,6 +380,7 @@ export declare function workbenchJobEvidenceForSnapshot(snapshot: WorkbenchInspe
378
380
  export declare function exportObjectPack(state: WorkbenchProjectState): WorkbenchObjectPack;
379
381
  interface ImportObjectPackOptions {
380
382
  refs?: "merge" | "none";
383
+ lifecycleObjects?: "merge" | "replace";
381
384
  }
382
385
  export declare function importObjectPack(state: WorkbenchProjectState, pack: WorkbenchObjectPack, options?: ImportObjectPackOptions): void;
383
386
  export declare function hashJson(value: unknown): string;
@@ -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
@@ -938,7 +938,7 @@ function runtimeControlStepTimeoutMs(execution) {
938
938
  function runtimeControlStepFailureMessage(args) {
939
939
  const descriptor = runtimeControlStepDescriptor(args.operation);
940
940
  const prefix = `${args.prefix ?? "Runtime-control step"} ${args.label} (${descriptor})`;
941
- const errorMessage = args.result.error?.message ? singleLine(args.result.error.message) : undefined;
941
+ const errorMessage = args.result.error?.message ? publicRuntimeErrorSummary(args.result.error.message) : undefined;
942
942
  const summarizedError = errorMessage ? runtimeControlKnownFailureSummary(errorMessage) : undefined;
943
943
  if (summarizedError) {
944
944
  return `${prefix} ${summarizedError}`;
@@ -951,7 +951,7 @@ function runtimeControlStepFailureMessage(args) {
951
951
  if (summarizedDetail) {
952
952
  return `${prefix} ${summarizedDetail}`;
953
953
  }
954
- const detail = singleLine(rawDetail);
954
+ const detail = publicRuntimeErrorSummary(rawDetail);
955
955
  const status = args.result.status ?? "unknown";
956
956
  return detail
957
957
  ? `${prefix} exited with status ${status}: ${detail}`
@@ -1557,18 +1557,29 @@ async function executeSkillEvalExecutionInCurrentRuntime(args, execution, starte
1557
1557
  const exitCode = result.status ?? undefined;
1558
1558
  const outputFiles = await readFilesUnder(outputDir, "output").catch(() => []);
1559
1559
  const commandSucceeded = result.status === 0 && !result.error;
1560
- const adapterResult = commandSucceeded && await exists(workbenchAdapterOperationResultPath(outputDir))
1560
+ const publicResult = await readPublicSkillEvalResult({
1561
+ filePath: path.join(outputDir, "result.json"),
1562
+ caseId: typeof execution.metadata.caseId === "string" ? execution.metadata.caseId : "current",
1563
+ durationMs: Math.max(0, Date.now() - startedMs),
1564
+ });
1565
+ const adapterResult = !publicResult && commandSucceeded && await exists(workbenchAdapterOperationResultPath(outputDir))
1561
1566
  ? await readWorkbenchAdapterOperationResult(outputDir, "engine.run")
1562
1567
  : null;
1563
- const succeeded = commandSucceeded && adapterResult?.ok !== false;
1564
- const error = result.error
1568
+ const succeeded = publicResult
1569
+ ? publicResult.passed ?? commandSucceeded
1570
+ : commandSucceeded && adapterResult?.ok !== false;
1571
+ const commandError = result.error
1565
1572
  ? result.error.message
1566
1573
  : result.status !== 0
1567
1574
  ? (stderr || stdout || `Command exited with status ${result.status ?? "unknown"}`).trim()
1568
1575
  : adapterResult?.ok === false
1569
1576
  ? adapterResult.summary ?? "Command engine returned ok false."
1570
1577
  : undefined;
1571
- const resultPayload = workbenchResultFromAdapterResult(adapterResult) ??
1578
+ const error = publicResult
1579
+ ? !succeeded ? publicResult.error ?? commandError : undefined
1580
+ : commandError;
1581
+ const resultPayload = publicResult?.result ??
1582
+ workbenchResultFromAdapterResult(adapterResult) ??
1572
1583
  skillEvalResultPayload({
1573
1584
  succeeded,
1574
1585
  exitCode,
@@ -1603,6 +1614,76 @@ async function executeSkillEvalExecutionInCurrentRuntime(args, execution, starte
1603
1614
  },
1604
1615
  };
1605
1616
  }
1617
+ async function readPublicSkillEvalResult(args) {
1618
+ if (!await exists(args.filePath)) {
1619
+ return null;
1620
+ }
1621
+ const parsed = await readJson(args.filePath);
1622
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
1623
+ throw new WorkbenchUserError("OUTPUT_DIR/result.json must contain a JSON object.");
1624
+ }
1625
+ const record = parsed;
1626
+ const passed = typeof record.ok === "boolean"
1627
+ ? record.ok
1628
+ : typeof record.passed === "boolean"
1629
+ ? record.passed
1630
+ : typeof record.pass === "boolean"
1631
+ ? record.pass
1632
+ : undefined;
1633
+ const score = typeof record.score === "number"
1634
+ ? record.score
1635
+ : passed !== undefined
1636
+ ? passed ? 1 : 0
1637
+ : undefined;
1638
+ if (score === undefined || !Number.isFinite(score)) {
1639
+ throw new WorkbenchUserError("OUTPUT_DIR/result.json must include a finite numeric score or boolean ok/passed/pass.");
1640
+ }
1641
+ const metrics = publicSkillEvalResultMetrics(record, score);
1642
+ const message = typeof record.message === "string"
1643
+ ? record.message
1644
+ : typeof record.summary === "string"
1645
+ ? record.summary
1646
+ : undefined;
1647
+ const caseStatus = passed === false ? "error" : "completed";
1648
+ const result = {
1649
+ score,
1650
+ metrics,
1651
+ cases: [{
1652
+ id: args.caseId,
1653
+ status: caseStatus,
1654
+ durationMs: args.durationMs,
1655
+ metrics,
1656
+ ...(passed === false
1657
+ ? { feedback: { message: message ?? "Test failed." } }
1658
+ : {}),
1659
+ }],
1660
+ ...(typeof record.summary === "string"
1661
+ ? { summary: record.summary }
1662
+ : message
1663
+ ? { summary: message }
1664
+ : {}),
1665
+ feedback: {
1666
+ result: toJson(record),
1667
+ },
1668
+ };
1669
+ return {
1670
+ result,
1671
+ ...(passed !== undefined ? { passed } : {}),
1672
+ ...(passed === false ? { error: message ?? "Test failed." } : {}),
1673
+ };
1674
+ }
1675
+ function publicSkillEvalResultMetrics(record, score) {
1676
+ const metrics = { score };
1677
+ const source = record.metrics && typeof record.metrics === "object" && !Array.isArray(record.metrics)
1678
+ ? record.metrics
1679
+ : {};
1680
+ for (const [key, value] of Object.entries(source)) {
1681
+ if (typeof value === "number" && Number.isFinite(value)) {
1682
+ metrics[key] = value;
1683
+ }
1684
+ }
1685
+ return metrics;
1686
+ }
1606
1687
  function workbenchResultFromAdapterResult(result) {
1607
1688
  const value = result?.value;
1608
1689
  if (!value || typeof value !== "object" || Array.isArray(value)) {
@@ -1900,7 +1981,7 @@ export async function workbenchStatusSnapshot(options = {}) {
1900
1981
  ...(lastRun ? {
1901
1982
  lastRunId: lastRun.id,
1902
1983
  lastStatus: lastRun.status,
1903
- ...(lastRun.status === "succeeded" && lastRun.score !== undefined ? { lastScore: lastRun.score } : {}),
1984
+ ...(lastRun.score !== undefined ? { lastScore: lastRun.score } : {}),
1904
1985
  } : {}),
1905
1986
  },
1906
1987
  remotes,
@@ -1909,7 +1990,6 @@ export async function workbenchStatusSnapshot(options = {}) {
1909
1990
  });
1910
1991
  }
1911
1992
  async function workbenchStatusUnlocked(root, options = {}) {
1912
- await autoSyncDefaultRemote(root, options);
1913
1993
  const [state, agents, skillSources] = await Promise.all([
1914
1994
  loadState(root),
1915
1995
  readAgents(root),
@@ -1917,9 +1997,8 @@ async function workbenchStatusUnlocked(root, options = {}) {
1917
1997
  ]);
1918
1998
  const version = await reconcileWorkbenchVersion(root, state, "current source");
1919
1999
  await saveState(root, state);
1920
- await autoSyncDefaultRemote(root, options);
1921
2000
  const lastRun = state.runs
1922
- .filter((run) => run.status === "succeeded" && typeof run.score === "number")
2001
+ .filter((run) => typeof run.score === "number")
1923
2002
  .sort((left, right) => right.createdAt.localeCompare(left.createdAt))[0];
1924
2003
  return {
1925
2004
  root,
@@ -2003,11 +2082,9 @@ export async function listWorkbenchVersions(options = {}) {
2003
2082
  const root = resolveRoot(options.dir);
2004
2083
  return withWorkbenchProjectLockIfInitialized(root, async () => {
2005
2084
  await requireInitialized(root);
2006
- await autoSyncDefaultRemote(root, options);
2007
2085
  const state = await loadState(root);
2008
2086
  await reconcileWorkbenchVersion(root, state, "current source");
2009
2087
  await saveState(root, state);
2010
- await autoSyncDefaultRemote(root, options);
2011
2088
  return [...state.versions].sort(compareVersionIds);
2012
2089
  });
2013
2090
  }
@@ -2015,7 +2092,6 @@ export async function evalWorkbenchSkill(options = {}) {
2015
2092
  const root = resolveRoot(options.dir);
2016
2093
  return withWorkbenchProjectLockIfInitialized(root, async () => {
2017
2094
  await requireInitialized(root);
2018
- await autoSyncDefaultRemote(root, options);
2019
2095
  const state = await loadState(root);
2020
2096
  const version = await resolveOrCreateRunVersion(root, state, options.version);
2021
2097
  await saveState(root, state);
@@ -2080,10 +2156,24 @@ export async function evalWorkbenchSkill(options = {}) {
2080
2156
  }
2081
2157
  }
2082
2158
  await saveState(root, state);
2083
- await autoSyncDefaultRemote(root, options);
2084
2159
  return runs;
2085
2160
  });
2086
2161
  }
2162
+ export async function prepareWorkbenchCloudEvalRequest(options = {}) {
2163
+ const root = resolveRoot(options.dir);
2164
+ return withWorkbenchProjectLockIfInitialized(root, async () => {
2165
+ await requireInitialized(root);
2166
+ const state = await loadState(root);
2167
+ const version = await resolveOrCreateRunVersion(root, state);
2168
+ await saveState(root, state);
2169
+ return {
2170
+ versionId: version.id,
2171
+ ...(options.skill !== undefined ? { skill: options.skill } : {}),
2172
+ ...(options.agent !== undefined ? { agent: options.agent } : {}),
2173
+ samples: options.samples ?? 1,
2174
+ };
2175
+ });
2176
+ }
2087
2177
  export async function evalWorkbenchProjectState(state, options = {}) {
2088
2178
  const tempRoot = await fs.mkdtemp(path.join(os.tmpdir(), "workbench-cloud-eval-"));
2089
2179
  const originalRoot = state.root;
@@ -2161,6 +2251,22 @@ export async function improveWorkbenchProjectState(state, options = {}) {
2161
2251
  await fs.rm(tempRoot, { recursive: true, force: true });
2162
2252
  }
2163
2253
  }
2254
+ export async function prepareWorkbenchCloudImproveRequest(options = {}) {
2255
+ const root = resolveRoot(options.dir);
2256
+ return withWorkbenchProjectLockIfInitialized(root, async () => {
2257
+ await requireInitialized(root);
2258
+ const state = await loadState(root);
2259
+ const base = await resolveOrCreateRunVersion(root, state);
2260
+ await saveState(root, state);
2261
+ return {
2262
+ versionId: base.id,
2263
+ ...(options.skill !== undefined ? { skill: options.skill } : {}),
2264
+ ...(options.agent !== undefined ? { agent: options.agent } : {}),
2265
+ samples: options.samples ?? 1,
2266
+ budget: options.budget ?? 1,
2267
+ };
2268
+ });
2269
+ }
2164
2270
  export async function listWorkbenchProjectStateEvalCases(state) {
2165
2271
  const tempRoot = await fs.mkdtemp(path.join(os.tmpdir(), "workbench-cloud-cases-"));
2166
2272
  try {
@@ -2512,12 +2618,6 @@ function traceEvalHashMatches(state, trace, evalHash) {
2512
2618
  }
2513
2619
  function isImprovementEvidenceTrace(trace) {
2514
2620
  const result = asRuntimeRecord(trace.result);
2515
- const request = asRuntimeRecord(trace.request);
2516
- const execution = asRuntimeRecord(request.execution);
2517
- const executionMetadata = asRuntimeRecord(execution.metadata);
2518
- if (request.smoke === true || executionMetadata.smoke === true) {
2519
- return false;
2520
- }
2521
2621
  const status = typeof result.status === "string" ? result.status : undefined;
2522
2622
  const error = textFromJson(result.error);
2523
2623
  const feedback = asRuntimeRecord(result.feedback);
@@ -2538,7 +2638,7 @@ export function workbenchSkillImproveCanUseQueuedAdapter(agent) {
2538
2638
  return agentImproveAdapterInvocation(agent) !== null;
2539
2639
  }
2540
2640
  export function workbenchSkillImproveAdapterRequirementMessage(agent) {
2541
- return `Agent ${agent.name} cannot run improve because it has no skill-improvement adapter. Run workbench login claude (or codex) to connect an improver.`;
2641
+ return `Agent ${agent.name} cannot run improve because it has no skill-improvement adapter. Select an improvement-capable agent, for example workbench improve --agents codex after connecting that agent with workbench login codex.`;
2542
2642
  }
2543
2643
  export function readWorkbenchSkillImprovementPatchFromRemoteJob(remoteJob) {
2544
2644
  const output = asRuntimeRecord(remoteJob.output);
@@ -2766,7 +2866,7 @@ export async function executeQueuedWorkbenchSkillEvalJob(input) {
2766
2866
  finishedAt,
2767
2867
  ...(result.job.error ? { error: result.job.error } : {}),
2768
2868
  };
2769
- if (proofStatus === "succeeded" && result.job.score !== undefined) {
2869
+ if (result.job.score !== undefined) {
2770
2870
  run.score = result.job.score;
2771
2871
  }
2772
2872
  else {
@@ -2787,7 +2887,6 @@ export async function improveWorkbenchSkill(options = {}) {
2787
2887
  const root = resolveRoot(options.dir);
2788
2888
  return withWorkbenchProjectLockIfInitialized(root, async () => {
2789
2889
  await requireInitialized(root);
2790
- await autoSyncDefaultRemote(root, options);
2791
2890
  let state = await loadState(root);
2792
2891
  const base = await resolveOrCreateRunVersion(root, state, options.version);
2793
2892
  await saveState(root, state);
@@ -2796,17 +2895,23 @@ export async function improveWorkbenchSkill(options = {}) {
2796
2895
  agent: options.agent,
2797
2896
  authToken: options.authToken,
2798
2897
  });
2799
- const externalImprover = options.improverAgent && !options.agent ? options.improverAgent : undefined;
2800
2898
  if (runtime.skillBundles.length !== 1 || runtime.selectedAgents.length !== 1) {
2801
2899
  const configuredSkills = [...new Set(runtime.skillBundles.map((bundle) => bundle.skillName))].sort();
2802
2900
  const configuredAgents = [...new Set(runtime.selectedAgents.map((agent) => agent.name))].sort();
2901
+ const improvementCapableAgents = runtime.selectedAgents
2902
+ .filter(workbenchSkillImproveCanUseQueuedAdapter)
2903
+ .map((agent) => agent.name)
2904
+ .sort();
2803
2905
  throw new WorkbenchCodedError("usage", [
2804
2906
  "workbench improve requires exactly one skill and one eval agent.",
2805
2907
  `Configured skills: ${configuredSkills.length > 0 ? configuredSkills.join(", ") : "none"}.`,
2806
2908
  `Configured agents: ${configuredAgents.length > 0 ? configuredAgents.join(", ") : "none"}.`,
2909
+ ...(improvementCapableAgents.length > 0
2910
+ ? [`Improvement-capable agents: ${improvementCapableAgents.join(", ")}.`]
2911
+ : []),
2807
2912
  ].join(" "), {
2808
- remediation: `Run workbench improve --skills ${configuredSkills[0] ?? PRIMARY_SKILL_NAME} --agents ${configuredAgents[0] ?? "default"}.`,
2809
- subject: { configuredSkills, configuredAgents },
2913
+ remediation: improveSelectorRemediation(configuredSkills, improvementCapableAgents),
2914
+ subject: { configuredSkills, configuredAgents, improvementCapableAgents },
2810
2915
  exitCode: 2,
2811
2916
  });
2812
2917
  }
@@ -2825,9 +2930,8 @@ export async function improveWorkbenchSkill(options = {}) {
2825
2930
  if (!evalAgent) {
2826
2931
  throw new WorkbenchUserError("No eval agent selected for improve.");
2827
2932
  }
2828
- const improverAgent = externalImprover ?? evalAgent;
2829
- if (externalImprover) {
2830
- upsertAgentSnapshots(state.agents, [externalImprover]);
2933
+ if (!workbenchSkillImproveCanUseQueuedAdapter(evalAgent)) {
2934
+ throw new WorkbenchUserError(workbenchSkillImproveAdapterRequirementMessage(evalAgent));
2831
2935
  }
2832
2936
  const selectedEvidenceTraceIds = options.evidenceTraceIds?.length
2833
2937
  ? new Set(options.evidenceTraceIds)
@@ -2835,13 +2939,12 @@ export async function improveWorkbenchSkill(options = {}) {
2835
2939
  const historicalTraces = workbenchImprovementEvidenceTracesForVersion(state, {
2836
2940
  versionId: base.id,
2837
2941
  skillName: skillBundle.skillName,
2838
- agent: evalAgent,
2839
2942
  evalHash: runtime.evalSnapshot.hash,
2840
2943
  ...(selectedEvidenceTraceIds ? { traceIds: [...selectedEvidenceTraceIds] } : {}),
2841
2944
  });
2842
2945
  const improvementEvidence = improvementEvidenceFromTraces(historicalTraces);
2843
2946
  if (improvementEvidence.length === 0) {
2844
- throw new WorkbenchUserError(`workbench improve needs failed or reviewed trace evidence for ${evalAgent.name} on this version. Run \`workbench eval --agents ${evalAgent.name}\` until a failure is recorded, or edit SKILL.md directly.`);
2947
+ throw new WorkbenchUserError("workbench improve needs failed or reviewed eval evidence for the selected skill on this eval. Run `workbench eval` until a failure is recorded, or edit SKILL.md directly.");
2845
2948
  }
2846
2949
  const evalSnapshot = runtime.evalSnapshot;
2847
2950
  upsertEvalSnapshotObject(state.evals, evalSnapshot);
@@ -2857,7 +2960,7 @@ export async function improveWorkbenchSkill(options = {}) {
2857
2960
  const improvement = await createSkillImprovementPatch({
2858
2961
  root,
2859
2962
  state,
2860
- agent: improverAgent,
2963
+ agent: evalAgent,
2861
2964
  base,
2862
2965
  evalHash: evalSnapshot.hash,
2863
2966
  environmentDockerfile: runtime.environmentDockerfile,
@@ -2866,7 +2969,7 @@ export async function improveWorkbenchSkill(options = {}) {
2866
2969
  });
2867
2970
  const applied = applyWorkbenchSkillImprovementPatch(state, {
2868
2971
  baseVersionId: base.id,
2869
- agent: improverAgent,
2972
+ agent: evalAgent,
2870
2973
  patch: improvement.patch,
2871
2974
  createdAt: now(),
2872
2975
  });
@@ -2885,9 +2988,6 @@ export async function improveWorkbenchSkill(options = {}) {
2885
2988
  upsertByHash(state.skillBundles, bundle);
2886
2989
  }
2887
2990
  upsertAgentSnapshots(state.agents, outputRuntime.agents);
2888
- if (externalImprover) {
2889
- upsertAgentSnapshots(state.agents, [externalImprover]);
2890
- }
2891
2991
  const run = await executeWorkbenchEvaluationRun({
2892
2992
  root,
2893
2993
  state,
@@ -2919,7 +3019,6 @@ export async function improveWorkbenchSkill(options = {}) {
2919
3019
  run.outputVersionId = version.id;
2920
3020
  if (run.status !== "succeeded") {
2921
3021
  await saveState(root, state);
2922
- await autoSyncDefaultRemote(root, options);
2923
3022
  throw new WorkbenchUserError(improveProofEvalFailureMessage(version, run));
2924
3023
  }
2925
3024
  const promotion = improvementPromotionDecision(run, incumbentRun);
@@ -2930,7 +3029,6 @@ export async function improveWorkbenchSkill(options = {}) {
2930
3029
  switched = true;
2931
3030
  }
2932
3031
  await saveState(root, state);
2933
- await autoSyncDefaultRemote(root, options);
2934
3032
  return {
2935
3033
  run,
2936
3034
  version,
@@ -2943,6 +3041,14 @@ export async function improveWorkbenchSkill(options = {}) {
2943
3041
  };
2944
3042
  });
2945
3043
  }
3044
+ function improveSelectorRemediation(configuredSkills, improvementCapableAgents) {
3045
+ const skill = configuredSkills[0] ?? PRIMARY_SKILL_NAME;
3046
+ const agent = improvementCapableAgents[0];
3047
+ if (agent) {
3048
+ return `Run workbench improve --skills ${skill} --agents ${agent}.`;
3049
+ }
3050
+ return `Select one improvement-capable agent, for example workbench improve --skills ${skill} --agents codex after connecting that agent with workbench login codex.`;
3051
+ }
2946
3052
  function improveProofEvalFailureMessage(version, run) {
2947
3053
  return [
2948
3054
  `Improve proof eval failed for ${version.id} in run ${run.id}.`,
@@ -2967,7 +3073,6 @@ export async function compareWorkbench(options = {}) {
2967
3073
  const root = resolveRoot(options.dir);
2968
3074
  return withWorkbenchProjectLockIfInitialized(root, async () => {
2969
3075
  await requireInitialized(root);
2970
- await autoSyncDefaultRemote(root, options);
2971
3076
  const state = await loadState(root);
2972
3077
  await reconcileWorkbenchVersion(root, state, "current source");
2973
3078
  let versions = resolveVersionSelection(state, options.versions ?? "all");
@@ -3039,7 +3144,6 @@ export async function compareWorkbench(options = {}) {
3039
3144
  throw new WorkbenchUserError("No selected versions define the requested compare skills or agents.");
3040
3145
  }
3041
3146
  await saveState(root, state);
3042
- await autoSyncDefaultRemote(root, options);
3043
3147
  const [onlyEvalHash] = [...evalHashes];
3044
3148
  return {
3045
3149
  ...(evalHashes.size === 1 && onlyEvalHash ? { evalHash: onlyEvalHash } : {}),
@@ -3126,7 +3230,6 @@ export async function switchWorkbenchVersion(versionRef, options = {}) {
3126
3230
  const root = resolveRoot(options.dir);
3127
3231
  return withWorkbenchProjectLockIfInitialized(root, async () => {
3128
3232
  await requireInitialized(root);
3129
- await autoSyncDefaultRemote(root, options);
3130
3233
  const state = await loadState(root);
3131
3234
  await reconcileWorkbenchVersion(root, state, "current source");
3132
3235
  const version = resolveVersion(state, versionRef);
@@ -3134,7 +3237,6 @@ export async function switchWorkbenchVersion(versionRef, options = {}) {
3134
3237
  state.remotes = await readWorkbenchRemotesFile(root);
3135
3238
  state.refs.current = version.id;
3136
3239
  await saveState(root, state);
3137
- await autoSyncDefaultRemote(root, options);
3138
3240
  return version;
3139
3241
  });
3140
3242
  }
@@ -3142,11 +3244,9 @@ export async function diffWorkbenchVersions(range, options = {}) {
3142
3244
  const root = resolveRoot(options.dir);
3143
3245
  return withWorkbenchProjectLockIfInitialized(root, async () => {
3144
3246
  await requireInitialized(root);
3145
- await autoSyncDefaultRemote(root, options);
3146
3247
  const state = await loadState(root);
3147
3248
  await reconcileWorkbenchVersion(root, state, "current source");
3148
3249
  await saveState(root, state);
3149
- await autoSyncDefaultRemote(root, options);
3150
3250
  const [leftRef, rightRef] = range.includes("..")
3151
3251
  ? range.split("..", 2)
3152
3252
  : [state.refs.current ?? "current", range];
@@ -3159,11 +3259,9 @@ export async function showWorkbenchRef(ref, options = {}) {
3159
3259
  const root = resolveRoot(options.dir);
3160
3260
  return withWorkbenchProjectLockIfInitialized(root, async () => {
3161
3261
  await requireInitialized(root);
3162
- await autoSyncDefaultRemote(root, options);
3163
3262
  const state = await loadState(root);
3164
3263
  await reconcileWorkbenchVersion(root, state, "current source");
3165
3264
  await saveState(root, state);
3166
- await autoSyncDefaultRemote(root, options);
3167
3265
  const [objectRef, filePath] = splitObjectPath(ref);
3168
3266
  const version = findVersion(state, objectRef);
3169
3267
  if (version) {
@@ -3191,7 +3289,7 @@ export async function showWorkbenchRef(ref, options = {}) {
3191
3289
  const trace = resolveStateObjectByRef(state.traces, objectRef, "trace");
3192
3290
  if (trace) {
3193
3291
  if (filePath) {
3194
- const file = trace.files.find((entry) => entry.path === filePath);
3292
+ const file = trace.files.filter(isUserFacingTraceFile).find((entry) => entry.path === filePath);
3195
3293
  if (!file) {
3196
3294
  throw new WorkbenchCodedError("ref_not_found", `File not found in ${trace.id}: ${filePath}`, {
3197
3295
  remediation: `Run workbench show ${trace.id}.`,
@@ -3250,18 +3348,16 @@ export async function filesForWorkbenchRef(ref, options = {}) {
3250
3348
  const root = resolveRoot(options.dir);
3251
3349
  return withWorkbenchProjectLockIfInitialized(root, async () => {
3252
3350
  await requireInitialized(root);
3253
- await autoSyncDefaultRemote(root, options);
3254
3351
  const state = await loadState(root);
3255
3352
  await reconcileWorkbenchVersion(root, state, "current source");
3256
3353
  await saveState(root, state);
3257
- await autoSyncDefaultRemote(root, options);
3258
3354
  const version = findVersion(state, ref);
3259
3355
  if (version) {
3260
3356
  return version.files.map(copyFile);
3261
3357
  }
3262
3358
  const trace = resolveStateObjectByRef(state.traces, ref, "trace");
3263
3359
  if (trace) {
3264
- return trace.files.map(copyFile);
3360
+ return trace.files.filter(isUserFacingTraceFile).map(copyFile);
3265
3361
  }
3266
3362
  const artifact = resolveStateObjectByRef(state.artifacts, ref, "artifact");
3267
3363
  if (artifact) {
@@ -3274,139 +3370,21 @@ export async function filesForWorkbenchRef(ref, options = {}) {
3274
3370
  });
3275
3371
  });
3276
3372
  }
3277
- export async function listWorkbenchCases(options = {}) {
3278
- const root = resolveRoot(options.dir);
3279
- return withWorkbenchProjectLockIfInitialized(root, async () => {
3280
- await requireInitialized(root);
3281
- await autoSyncDefaultRemote(root, options);
3282
- const state = await loadState(root);
3283
- await reconcileWorkbenchVersion(root, state, "current source");
3284
- await saveState(root, state);
3285
- await autoSyncDefaultRemote(root, options);
3286
- return (await readEvalCases(root)).map((entry) => ({
3287
- id: entry.id,
3288
- path: entry.path,
3289
- content: entry.content,
3290
- }));
3291
- });
3292
- }
3293
- export async function showWorkbenchCase(caseId, options = {}) {
3294
- const found = (await listWorkbenchCases(options)).find((entry) => entry.id === caseId || entry.path === caseId);
3295
- if (!found) {
3296
- throw new WorkbenchUserError(`Case not found: ${caseId}`);
3297
- }
3298
- return found;
3299
- }
3300
- export async function addWorkbenchCase(options = {}) {
3301
- const root = resolveRoot(options.dir);
3302
- return withWorkbenchProjectLockIfInitialized(root, async () => {
3303
- await requireInitialized(root);
3304
- await autoSyncDefaultRemote(root, options);
3305
- const state = await loadState(root);
3306
- const trace = options.fromTraceId
3307
- ? state.traces.find((entry) => entry.id === options.fromTraceId)
3308
- : undefined;
3309
- if (options.fromTraceId && !trace) {
3310
- throw new WorkbenchUserError(`Trace not found: ${options.fromTraceId}`);
3311
- }
3312
- const cases = await listWorkbenchCases({ dir: root });
3313
- const id = `case-${String(cases.length + 1).padStart(3, "0")}`;
3314
- const content = caseDescriptorYaml(id, trace);
3315
- const caseRoot = path.join(workbenchDir(root), CASES_DIR, id);
3316
- await fs.mkdir(path.join(caseRoot, "tests"), { recursive: true });
3317
- await fs.writeFile(path.join(caseRoot, "case.yaml"), content);
3318
- await fs.writeFile(path.join(caseRoot, "tests", "test.sh"), caseDraftTestScript(id, trace));
3319
- await fs.chmod(path.join(caseRoot, "tests", "test.sh"), 0o755);
3320
- if (trace) {
3321
- await writeSurfaceFiles(path.join(caseRoot, "trace"), trace.files.map(copyFile));
3322
- }
3323
- const stateAfter = await loadState(root);
3324
- await reconcileWorkbenchVersion(root, stateAfter, "case source");
3325
- await saveState(root, stateAfter);
3326
- await autoSyncDefaultRemote(root, options);
3327
- return { id, path: id, content };
3328
- });
3329
- }
3330
- function caseDescriptorYaml(id, trace) {
3331
- const descriptor = trace
3332
- ? {
3333
- version: 1,
3334
- id,
3335
- sourceTraceId: trace.id,
3336
- prompt: tracePromptForCase(trace),
3337
- rubric: traceRubricForCase(trace),
3338
- command: "sh \"$CASE_DIR/tests/test.sh\"",
3339
- }
3340
- : {
3341
- version: 1,
3342
- id,
3343
- prompt: "Replace this draft with a representative workflow prompt.",
3344
- rubric: [
3345
- "Replace this draft with observable acceptance criteria.",
3346
- "Add a deterministic test or grader before using this case in score comparisons.",
3347
- ],
3348
- command: "sh \"$CASE_DIR/tests/test.sh\"",
3349
- };
3350
- return `${YAML.stringify(descriptor).trimEnd()}\n`;
3351
- }
3352
- function tracePromptForCase(trace) {
3353
- const request = asRuntimeRecord(trace.request);
3354
- const explicitPrompt = textFromJson(request.prompt) ?? textFromJson(asRuntimeRecord(request.case).prompt);
3355
- if (explicitPrompt) {
3356
- return `Re-run the workflow captured by trace ${trace.id}: ${truncateText(singleLine(explicitPrompt), 320)}`;
3373
+ function isUserFacingTraceFile(file) {
3374
+ const normalized = normalizeRelativePath(file.path);
3375
+ if (normalized.split("/").includes(".workbench")) {
3376
+ return false;
3357
3377
  }
3358
- const caseId = typeof request.caseId === "string" ? request.caseId : undefined;
3359
- return caseId
3360
- ? `Re-run the workflow captured by trace ${trace.id} for source case ${caseId}.`
3361
- : `Re-run the workflow captured by trace ${trace.id}.`;
3362
- }
3363
- function traceRubricForCase(trace) {
3364
- const result = asRuntimeRecord(trace.result);
3365
- const request = asRuntimeRecord(trace.request);
3366
- const caseId = typeof request.caseId === "string" ? request.caseId : undefined;
3367
- const error = textFromJson(result.error) ?? traceFileSnippet(trace, "stderr.log");
3368
- return [
3369
- `Preserves the intended behavior represented by trace ${trace.id}${caseId ? ` / ${caseId}` : ""}.`,
3370
- error ? `Addresses the observed failure: ${truncateText(singleLine(error), 220)}` : "Matches or improves on the useful output captured in the trace evidence.",
3371
- "Replace this draft rubric with expert-approved pass/fail criteria before using the score as workflow evidence.",
3372
- ];
3373
- }
3374
- function caseDraftTestScript(id, trace) {
3375
- const message = trace
3376
- ? `Draft trace-derived case ${id} needs expert acceptance criteria before it can pass. Source trace: ${trace.id}.`
3377
- : `Draft case ${id} needs a workflow-specific prompt, rubric, and test before it can pass.`;
3378
- return [
3379
- "#!/bin/sh",
3380
- "set -eu",
3381
- "mkdir -p \"$OUTPUT_DIR\"",
3382
- `printf '%s\\n' ${quoteShellLiteral(message)} >&2`,
3383
- `printf '{"ok":false,"kind":"draft-case","message":%s}\\n' ${quoteShellLiteral(JSON.stringify(message))} > "$OUTPUT_DIR/result.json"`,
3384
- "exit 2",
3385
- "",
3386
- ].join("\n");
3387
- }
3388
- export async function removeWorkbenchCase(caseId, options = {}) {
3389
- const root = resolveRoot(options.dir);
3390
- return withWorkbenchProjectLockIfInitialized(root, async () => {
3391
- await autoSyncDefaultRemote(root, options);
3392
- const found = await showWorkbenchCase(caseId, { dir: root, authToken: options.authToken });
3393
- await fs.rm(path.join(workbenchDir(root), CASES_DIR, found.path), { recursive: true, force: true });
3394
- const state = await loadState(root);
3395
- await reconcileWorkbenchVersion(root, state, "case source");
3396
- await saveState(root, state);
3397
- await autoSyncDefaultRemote(root, options);
3398
- return { removed: found.id };
3399
- });
3378
+ const basename = path.basename(normalized);
3379
+ return basename !== "request.json" && basename !== "result.json" && basename !== "trace.json";
3400
3380
  }
3401
3381
  export async function listWorkbenchAgents(options = {}) {
3402
3382
  const root = resolveRoot(options.dir);
3403
3383
  return withWorkbenchProjectLockIfInitialized(root, async () => {
3404
3384
  await requireInitialized(root);
3405
- await autoSyncDefaultRemote(root, options);
3406
3385
  const state = await loadState(root);
3407
3386
  await reconcileWorkbenchVersion(root, state, "current source");
3408
3387
  await saveState(root, state);
3409
- await autoSyncDefaultRemote(root, options);
3410
3388
  return readAgents(root);
3411
3389
  });
3412
3390
  }
@@ -3414,7 +3392,6 @@ export async function addWorkbenchAgent(input) {
3414
3392
  const root = resolveRoot(input.dir);
3415
3393
  return withWorkbenchProjectLockIfInitialized(root, async () => {
3416
3394
  await requireInitialized(root);
3417
- await autoSyncDefaultRemote(root, input);
3418
3395
  const agents = await readAgents(root);
3419
3396
  const agentName = normalizeManifestEntryName(input.name, path.join(".workbench", AGENTS_FILE), "agent");
3420
3397
  const adapter = input.adapter.trim();
@@ -3435,7 +3412,6 @@ export async function addWorkbenchAgent(input) {
3435
3412
  upsertAgentSnapshots(state.agents, next);
3436
3413
  await reconcileWorkbenchVersion(root, state, "agent source");
3437
3414
  await saveState(root, state);
3438
- await autoSyncDefaultRemote(root, input);
3439
3415
  return agent;
3440
3416
  });
3441
3417
  }
@@ -3443,7 +3419,6 @@ export async function removeWorkbenchAgent(name, options = {}) {
3443
3419
  const root = resolveRoot(options.dir);
3444
3420
  return withWorkbenchProjectLockIfInitialized(root, async () => {
3445
3421
  await requireInitialized(root);
3446
- await autoSyncDefaultRemote(root, options);
3447
3422
  const agents = await readAgents(root);
3448
3423
  const agentName = name.trim();
3449
3424
  const next = agents.filter((entry) => entry.name !== agentName);
@@ -3462,7 +3437,6 @@ export async function removeWorkbenchAgent(name, options = {}) {
3462
3437
  upsertAgentSnapshots(state.agents, next);
3463
3438
  await reconcileWorkbenchVersion(root, state, "agent source");
3464
3439
  await saveState(root, state);
3465
- await autoSyncDefaultRemote(root, options);
3466
3440
  return { removed: agentName };
3467
3441
  });
3468
3442
  }
@@ -3470,7 +3444,6 @@ export async function setDefaultWorkbenchAgent(name, options = {}) {
3470
3444
  const root = resolveRoot(options.dir);
3471
3445
  return withWorkbenchProjectLockIfInitialized(root, async () => {
3472
3446
  await requireInitialized(root);
3473
- await autoSyncDefaultRemote(root, options);
3474
3447
  const agents = await readAgents(root);
3475
3448
  const selection = name.trim();
3476
3449
  if (!selection) {
@@ -3484,7 +3457,6 @@ export async function setDefaultWorkbenchAgent(name, options = {}) {
3484
3457
  upsertAgentSnapshots(state.agents, agents);
3485
3458
  await reconcileWorkbenchVersion(root, state, "agent source");
3486
3459
  await saveState(root, state);
3487
- await autoSyncDefaultRemote(root, options);
3488
3460
  return { defaultAgent: selection };
3489
3461
  });
3490
3462
  }
@@ -3518,7 +3490,6 @@ export async function addWorkbenchRemote(name, url, options = {}) {
3518
3490
  }
3519
3491
  state.remotes[remoteName] = remote;
3520
3492
  await saveState(root, state);
3521
- await autoSyncDefaultRemote(root, options);
3522
3493
  return { remote, operation };
3523
3494
  });
3524
3495
  }
@@ -3548,11 +3519,9 @@ export async function listWorkbenchRemotes(options = {}) {
3548
3519
  const root = resolveRoot(options.dir);
3549
3520
  return withWorkbenchProjectLockIfInitialized(root, async () => {
3550
3521
  await requireInitialized(root);
3551
- await autoSyncDefaultRemote(root, options);
3552
3522
  const state = await loadState(root);
3553
3523
  await reconcileWorkbenchVersion(root, state, "current source");
3554
3524
  await saveState(root, state);
3555
- await autoSyncDefaultRemote(root, options);
3556
3525
  const syncedState = await loadState(root);
3557
3526
  return Object.values(syncedState.remotes).sort((left, right) => left.name.localeCompare(right.name));
3558
3527
  });
@@ -3575,7 +3544,10 @@ export async function syncWorkbenchRemote(options = {}) {
3575
3544
  throw error;
3576
3545
  });
3577
3546
  const before = objectPackSize(localPack);
3578
- importObjectPack(state, remotePack, { refs: "none" });
3547
+ importObjectPack(state, remotePack, {
3548
+ refs: "none",
3549
+ lifecycleObjects: isHttpRemote(remote) ? "replace" : "merge",
3550
+ });
3579
3551
  if (remote.kind === "workbench-cloud") {
3580
3552
  state.refs = withPublicationRefsFromRemote(state.refs, remotePack.refs);
3581
3553
  }
@@ -3590,7 +3562,7 @@ export async function syncWorkbenchRemote(options = {}) {
3590
3562
  : mergedLocalPack.refs,
3591
3563
  };
3592
3564
  const remoteWritePack = isHttpRemote(remote)
3593
- ? objectPackDeltaForRemoteWrite(merged, remotePack)
3565
+ ? objectPackDeltaForRemoteWrite(merged, remotePack, { remoteOwnsLifecycleObjects: true })
3594
3566
  : merged;
3595
3567
  const pushed = Math.max(0, objectPackSize(merged) - objectPackSize(remotePack));
3596
3568
  const pulled = Math.max(0, objectPackSize(merged) - before);
@@ -3649,11 +3621,12 @@ export async function publishWorkbenchVersion(options = {}) {
3649
3621
  await saveState(root, state);
3650
3622
  const sync = await syncWorkbenchRemote({ dir: root, remote: remote.name, authToken: options.authToken, dryRun: options.dryRun });
3651
3623
  const syncedState = await loadState(root);
3624
+ const visibility = options.visibility ?? publicationVisibilityFromRefs(syncedState.refs, sync.remote.name) ?? "private";
3652
3625
  if (options.dryRun === true) {
3653
3626
  return {
3654
3627
  remote: sync.remote,
3655
3628
  version,
3656
- visibility: options.visibility ?? "private",
3629
+ visibility,
3657
3630
  installHandle: workbenchRemoteInstallHandle(sync.remote),
3658
3631
  installUrl: workbenchRemoteSourceUrl(sync.remote),
3659
3632
  pinnedInstallUrl: workbenchRemoteReleaseSourceUrl(sync.remote, version.id),
@@ -3663,16 +3636,16 @@ export async function publishWorkbenchVersion(options = {}) {
3663
3636
  const publication = await writeRemotePublishedSource(sync.remote, version, {
3664
3637
  authToken: options.authToken,
3665
3638
  state: syncedState,
3666
- visibility: options.visibility ?? "private",
3639
+ visibility,
3667
3640
  });
3668
- const publishedRefs = publicationRefsForVersion(version.id, publication, options.visibility ?? "private");
3641
+ const publishedRefs = publicationRefsForVersion(version.id, publication, visibility);
3669
3642
  Object.assign(syncedState.refs, publishedRefs);
3670
3643
  syncedState.refs = withMergedRemoteTrackingRefs(syncedState.refs, sync.remote.name, publishedRefs);
3671
3644
  await saveState(root, syncedState);
3672
3645
  return {
3673
3646
  remote: sync.remote,
3674
3647
  version,
3675
- visibility: options.visibility ?? "private",
3648
+ visibility,
3676
3649
  installHandle: publication.installHandle,
3677
3650
  installUrl: publication.installUrl,
3678
3651
  pinnedInstallUrl: publication.pinnedInstallUrl,
@@ -3689,13 +3662,6 @@ function assertPublishableRemote(remote) {
3689
3662
  exitCode: 1,
3690
3663
  });
3691
3664
  }
3692
- async function autoSyncDefaultRemote(root, options = {}) {
3693
- const state = await loadState(root);
3694
- if (Object.keys(state.remotes).length === 0) {
3695
- return;
3696
- }
3697
- await syncWorkbenchRemote({ dir: root, authToken: options.authToken }).catch(() => undefined);
3698
- }
3699
3665
  export function createWorkbenchInspectionSnapshotFromState(options) {
3700
3666
  const state = options.state;
3701
3667
  const root = options.root ?? state.root;
@@ -3718,7 +3684,7 @@ export function createWorkbenchInspectionSnapshotFromState(options) {
3718
3684
  .map((remote) => ({ ...remote }))
3719
3685
  .sort((left, right) => left.name.localeCompare(right.name));
3720
3686
  const lastRun = state.runs
3721
- .filter((run) => run.status === "succeeded" && typeof run.score === "number")
3687
+ .filter((run) => typeof run.score === "number")
3722
3688
  .sort((left, right) => right.createdAt.localeCompare(left.createdAt))[0];
3723
3689
  const status = {
3724
3690
  root,
@@ -4350,6 +4316,14 @@ function publicationStatusFromRefs(refs, remoteName) {
4350
4316
  ...(refs[`${prefix}publication/pinned-install-url`] ? { pinnedInstallUrl: refs[`${prefix}publication/pinned-install-url`] } : {}),
4351
4317
  };
4352
4318
  }
4319
+ function publicationVisibilityFromRefs(refs, remoteName) {
4320
+ const prefix = remoteName ? `remotes/${safeObjectFileName(remoteName)}/` : "";
4321
+ return normalizePublishVisibilityRef(refs["publication/visibility"]) ??
4322
+ (remoteName ? normalizePublishVisibilityRef(refs[`${prefix}publication/visibility`]) : undefined);
4323
+ }
4324
+ function normalizePublishVisibilityRef(value) {
4325
+ return value === "private" || value === "internal" || value === "public" ? value : undefined;
4326
+ }
4353
4327
  function unpublishedPublicationStatus() {
4354
4328
  return { status: "unpublished" };
4355
4329
  }
@@ -4358,9 +4332,11 @@ function withPublicationRefsFromRemote(refs, remoteRefs) {
4358
4332
  .filter(([name]) => name !== "published" &&
4359
4333
  !name.startsWith("releases/") &&
4360
4334
  !name.startsWith("publication/")));
4335
+ const localVisibility = normalizePublishVisibilityRef(refs["publication/visibility"]);
4361
4336
  return {
4362
4337
  ...nonPublicationRefs,
4363
4338
  ...publicationRefs(remoteRefs),
4339
+ ...(localVisibility ? { "publication/visibility": localVisibility } : {}),
4364
4340
  };
4365
4341
  }
4366
4342
  export function importObjectPack(state, pack, options = {}) {
@@ -4403,20 +4379,31 @@ export function importObjectPack(state, pack, options = {}) {
4403
4379
  for (const edge of pack.lineage) {
4404
4380
  upsertLineageObject(state, edge);
4405
4381
  }
4382
+ const replaceLifecycleObjects = options.lifecycleObjects === "replace";
4406
4383
  for (const run of pack.runs) {
4407
- upsertRunObject(state.runs, copyRun(run));
4384
+ upsertRunObject(state.runs, copyRun(run), { replace: replaceLifecycleObjects });
4408
4385
  }
4409
4386
  for (const job of pack.jobs) {
4410
- upsertJobObject(state.jobs, copyJob(job));
4387
+ upsertJobObject(state.jobs, copyJob(job), { replace: replaceLifecycleObjects });
4411
4388
  }
4412
4389
  for (const trace of pack.traces) {
4413
- upsertImmutableById(state.traces, copyTrace(trace), "trace");
4390
+ if (replaceLifecycleObjects) {
4391
+ upsertById(state.traces, copyTrace(trace));
4392
+ }
4393
+ else {
4394
+ upsertImmutableById(state.traces, copyTrace(trace), "trace");
4395
+ }
4414
4396
  }
4415
4397
  for (const batch of pack.executionEvents) {
4416
- upsertExecutionEventBatch(state.executionEvents, copyExecutionEventBatch(batch));
4398
+ upsertExecutionEventBatch(state.executionEvents, copyExecutionEventBatch(batch), { replace: replaceLifecycleObjects });
4417
4399
  }
4418
4400
  for (const artifact of pack.artifacts) {
4419
- upsertImmutableById(state.artifacts, copyArtifact(artifact), "artifact");
4401
+ if (replaceLifecycleObjects) {
4402
+ upsertById(state.artifacts, copyArtifact(artifact));
4403
+ }
4404
+ else {
4405
+ upsertImmutableById(state.artifacts, copyArtifact(artifact), "artifact");
4406
+ }
4420
4407
  }
4421
4408
  if ((options.refs ?? "merge") === "merge") {
4422
4409
  state.refs = { ...state.refs, ...pack.refs };
@@ -4453,7 +4440,7 @@ function objectPackSize(pack) {
4453
4440
  pack.artifacts.length +
4454
4441
  pack.lineage.length;
4455
4442
  }
4456
- function objectPackDeltaForRemoteWrite(merged, remote) {
4443
+ function objectPackDeltaForRemoteWrite(merged, remote, options = {}) {
4457
4444
  const remoteVersions = mapBy(remote.versions, (entry) => entry.id);
4458
4445
  const remoteSkillSources = mapBy(remote.skillSources, (entry) => entry.name);
4459
4446
  const remoteSkillBundles = mapBy(remote.skillBundles, (entry) => entry.hash);
@@ -4472,11 +4459,21 @@ function objectPackDeltaForRemoteWrite(merged, remote) {
4472
4459
  skillBundles: merged.skillBundles.filter((entry) => !sameSkillBundleObject(remoteSkillBundles.get(entry.hash), entry)),
4473
4460
  evals: merged.evals.filter((entry) => !sameJsonObject(remoteEvals.get(entry.hash), entry)),
4474
4461
  agents: merged.agents.filter((entry) => !remoteAgentHashes.has(hashJson(entry))),
4475
- runs: merged.runs.filter((entry) => !sameJsonObject(remoteRuns.get(entry.id), entry)),
4476
- jobs: merged.jobs.filter((entry) => !sameJsonObject(remoteJobs.get(entry.id), entry)),
4477
- traces: merged.traces.filter((entry) => !sameJsonObject(remoteTraces.get(entry.id), entry)),
4478
- executionEvents: merged.executionEvents.filter((entry) => !sameJsonObject(remoteExecutionEvents.get(workbenchExecutionEventBatchId(entry)), entry)),
4479
- artifacts: merged.artifacts.filter((entry) => !sameJsonObject(remoteArtifacts.get(entry.id), entry)),
4462
+ runs: merged.runs.filter((entry) => options.remoteOwnsLifecycleObjects
4463
+ ? !remoteRuns.has(entry.id)
4464
+ : !sameJsonObject(remoteRuns.get(entry.id), entry)),
4465
+ jobs: merged.jobs.filter((entry) => options.remoteOwnsLifecycleObjects
4466
+ ? !remoteJobs.has(entry.id)
4467
+ : !sameJsonObject(remoteJobs.get(entry.id), entry)),
4468
+ traces: merged.traces.filter((entry) => options.remoteOwnsLifecycleObjects
4469
+ ? !remoteTraces.has(entry.id)
4470
+ : !sameJsonObject(remoteTraces.get(entry.id), entry)),
4471
+ executionEvents: merged.executionEvents.filter((entry) => options.remoteOwnsLifecycleObjects
4472
+ ? !remoteExecutionEvents.has(workbenchExecutionEventBatchId(entry))
4473
+ : !sameJsonObject(remoteExecutionEvents.get(workbenchExecutionEventBatchId(entry)), entry)),
4474
+ artifacts: merged.artifacts.filter((entry) => options.remoteOwnsLifecycleObjects
4475
+ ? !remoteArtifacts.has(entry.id)
4476
+ : !sameJsonObject(remoteArtifacts.get(entry.id), entry)),
4480
4477
  lineage: merged.lineage.filter((entry) => !remoteLineageHashes.has(hashJson(entry))),
4481
4478
  };
4482
4479
  }
@@ -4720,9 +4717,7 @@ async function executeWorkbenchEvaluationRun(args) {
4720
4717
  run.finishedAt = finishedAt;
4721
4718
  run.status = jobs.every((job) => job.status === "succeeded") ? "succeeded" : "failed";
4722
4719
  delete run.score;
4723
- const scoredJobs = run.status === "succeeded"
4724
- ? jobs.filter((job) => job.status === "succeeded" && typeof job.score === "number")
4725
- : [];
4720
+ const scoredJobs = jobs.filter((job) => typeof job.score === "number");
4726
4721
  if (scoredJobs.length > 0) {
4727
4722
  run.score = Number((scoredJobs.reduce((sum, job) => sum + (job.score ?? 0), 0) / scoredJobs.length).toFixed(3));
4728
4723
  }
@@ -4806,12 +4801,15 @@ function skillEvalObjectsFromRemoteJob(args) {
4806
4801
  const output = asRuntimeRecord(args.remoteJob.output);
4807
4802
  const status = args.remoteJob.status === "succeeded" ? "succeeded" :
4808
4803
  args.remoteJob.status === "cancelled" ? "canceled" : "failed";
4809
- const score = status === "succeeded" && args.runtimeCase.smoke !== true
4810
- ? readWorkbenchSkillRunOutputScore(output)
4811
- : undefined;
4804
+ const outputScore = readWorkbenchSkillRunOutputScore(output);
4805
+ const score = outputScore !== undefined
4806
+ ? outputScore
4807
+ : status === "succeeded"
4808
+ ? 0
4809
+ : undefined;
4812
4810
  const usage = readWorkbenchSkillRunOutputUsage(output);
4813
4811
  const outputResult = jsonRecord(output.result);
4814
- if (args.runtimeCase.smoke === true || status !== "succeeded") {
4812
+ if (status !== "succeeded" && score === undefined) {
4815
4813
  stripResultScores(outputResult);
4816
4814
  }
4817
4815
  const resultPayload = {
@@ -4822,7 +4820,7 @@ function skillEvalObjectsFromRemoteJob(args) {
4822
4820
  ...(score !== undefined ? { score } : {}),
4823
4821
  ...(args.remoteJob.error ? { error: args.remoteJob.error } : {}),
4824
4822
  };
4825
- if (args.runtimeCase.smoke === true || status !== "succeeded") {
4823
+ if (status !== "succeeded" && score === undefined) {
4826
4824
  stripResultScores(resultPayload);
4827
4825
  }
4828
4826
  const files = Array.isArray(output.files)
@@ -4882,7 +4880,7 @@ function skillEvalObjectsFromRemoteJob(args) {
4882
4880
  caseId: args.runtimeCase.id,
4883
4881
  sample: args.sample,
4884
4882
  status,
4885
- ...(status === "succeeded" && score !== undefined ? { score } : {}),
4883
+ ...(score !== undefined ? { score } : {}),
4886
4884
  command: configString(asRuntimeRecord(asRuntimeRecord(jsonRecord(args.remoteJob.input).execution).adapter).with, "command"),
4887
4885
  artifactIds: [artifact.id],
4888
4886
  traceIds: [trace.id],
@@ -5393,7 +5391,7 @@ async function executeAdapterBackedSkillImprovementPatch(args) {
5393
5391
  loadLocalAdapterAuthProfiles: isProviderBackedSkillEvalAgent(args.agent),
5394
5392
  });
5395
5393
  if (completed.status !== "succeeded") {
5396
- throw new WorkbenchUserError(`Improve adapter failed: ${completed.error ?? "no patch produced"}`);
5394
+ throw new WorkbenchUserError(`Improve adapter failed: ${completed.error ? publicRuntimeErrorSummary(completed.error) : "no patch produced"}`);
5397
5395
  }
5398
5396
  const patch = readWorkbenchSkillImprovementPatchFromRemoteJob(completed);
5399
5397
  if (!patch || patch.fileChanges.length === 0) {
@@ -5530,12 +5528,23 @@ function traceFileSnippet(trace, filePath) {
5530
5528
  function singleLine(value) {
5531
5529
  return value.replace(/\s+/gu, " ").trim();
5532
5530
  }
5531
+ function publicRuntimeErrorSummary(value) {
5532
+ const lines = value
5533
+ .split(/\r?\n/u)
5534
+ .map((line) => line.trim())
5535
+ .filter(Boolean);
5536
+ const errorLine = lines.find((line) => /^[A-Za-z_$][\w.$]*Error:/u.test(line));
5537
+ if (errorLine) {
5538
+ return singleLine(errorLine);
5539
+ }
5540
+ const nonStackLine = lines.find((line) => !/^at\s/u.test(line) &&
5541
+ !/^\(?node:/u.test(line) &&
5542
+ !/:\d+:\d+\)?$/u.test(line));
5543
+ return singleLine(nonStackLine ?? value);
5544
+ }
5533
5545
  function truncateText(value, maxLength) {
5534
5546
  return value.length > maxLength ? `${value.slice(0, Math.max(0, maxLength - 3))}...` : value;
5535
5547
  }
5536
- function quoteShellLiteral(value) {
5537
- return `'${value.replace(/'/gu, "'\\''")}'`;
5538
- }
5539
5548
  async function resolveOrCreateRunVersion(root, state, ref) {
5540
5549
  await reconcileWorkbenchVersion(root, state, "current source");
5541
5550
  if (ref) {
@@ -6943,7 +6952,7 @@ async function writeObjectPackFiles(root, pack) {
6943
6952
  }
6944
6953
  await writeJsonl(path.join(root, "indexes", "versions.jsonl"), pack.versions);
6945
6954
  await writeJsonl(path.join(root, "indexes", "lineage.jsonl"), pack.lineage);
6946
- await writeJsonl(path.join(root, "indexes", "measurements.jsonl"), pack.runs.filter((run) => run.status === "succeeded" && run.score !== undefined));
6955
+ await writeJsonl(path.join(root, "indexes", "measurements.jsonl"), pack.runs.filter((run) => run.score !== undefined));
6947
6956
  await writeJsonl(path.join(root, "indexes", "runs.jsonl"), pack.runs);
6948
6957
  await writeJsonl(path.join(root, "indexes", "jobs.jsonl"), pack.jobs);
6949
6958
  await writeJsonl(path.join(root, "indexes", "execution-events.jsonl"), pack.executionEvents);
@@ -7309,7 +7318,7 @@ function comparisonCellRunFields(run, jobs) {
7309
7318
  return {
7310
7319
  runId: run.id,
7311
7320
  status: run.status,
7312
- ...(run.status === "succeeded" && run.score !== undefined ? { score: run.score } : {}),
7321
+ ...(run.score !== undefined ? { score: run.score } : {}),
7313
7322
  ...(run.costUsd !== undefined ? { costUsd: run.costUsd } : {}),
7314
7323
  ...(run.latencyMs !== undefined ? { latencyMs: run.latencyMs } : {}),
7315
7324
  ...(run.error ? { error: run.error } : {}),
@@ -7608,12 +7617,16 @@ function upsertImmutableById(records, record, label) {
7608
7617
  records.push(record);
7609
7618
  }
7610
7619
  }
7611
- function upsertRunObject(records, run) {
7620
+ function upsertRunObject(records, run, options = {}) {
7612
7621
  const index = records.findIndex((entry) => entry.id === run.id);
7613
7622
  if (index < 0) {
7614
7623
  records.push(run);
7615
7624
  return;
7616
7625
  }
7626
+ if (options.replace === true) {
7627
+ records[index] = run;
7628
+ return;
7629
+ }
7617
7630
  const existing = records[index];
7618
7631
  if (hashJson(existing) === hashJson(run)) {
7619
7632
  records[index] = run;
@@ -7635,12 +7648,16 @@ function upsertRunObject(records, run) {
7635
7648
  }
7636
7649
  throw new WorkbenchUserError(`Workbench object conflict for run ${run.id}; sync the remote state before creating a divergent object id.`);
7637
7650
  }
7638
- function upsertJobObject(records, job) {
7651
+ function upsertJobObject(records, job, options = {}) {
7639
7652
  const index = records.findIndex((entry) => entry.id === job.id);
7640
7653
  if (index < 0) {
7641
7654
  records.push(job);
7642
7655
  return;
7643
7656
  }
7657
+ if (options.replace === true) {
7658
+ records[index] = job;
7659
+ return;
7660
+ }
7644
7661
  const existing = records[index];
7645
7662
  if (hashJson(existing) === hashJson(job)) {
7646
7663
  records[index] = job;
@@ -7662,13 +7679,17 @@ function upsertJobObject(records, job) {
7662
7679
  }
7663
7680
  throw new WorkbenchUserError(`Workbench object conflict for job ${job.id}; sync the remote state before creating a divergent object id.`);
7664
7681
  }
7665
- function upsertExecutionEventBatch(records, batch) {
7682
+ function upsertExecutionEventBatch(records, batch, options = {}) {
7666
7683
  const id = workbenchExecutionEventBatchId(batch);
7667
7684
  const index = records.findIndex((entry) => workbenchExecutionEventBatchId(entry) === id);
7668
7685
  if (index < 0) {
7669
7686
  records.push(batch);
7670
7687
  return;
7671
7688
  }
7689
+ if (options.replace === true) {
7690
+ records[index] = batch;
7691
+ return;
7692
+ }
7672
7693
  const existing = records[index];
7673
7694
  if (hashJson(existing) === hashJson(batch)) {
7674
7695
  records[index] = batch;
@@ -7682,7 +7703,7 @@ function assertLifecycleIdentityCompatible(existing, incoming, label, id, identi
7682
7703
  }
7683
7704
  }
7684
7705
  function isTerminalRunStatus(status) {
7685
- return status !== "running";
7706
+ return status === "succeeded" || status === "failed" || status === "canceled";
7686
7707
  }
7687
7708
  function isTerminalJobStatus(status) {
7688
7709
  return status !== "queued" && status !== "running";
@@ -1 +1 @@
1
- {"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../src/sandbox-backends/docker.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EACV,8BAA8B,EAC/B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,KAAK,wBAAwB,EAE7B,KAAK,yBAAyB,EAE9B,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AA8C7B,wBAAgB,oCAAoC,IACjD,wBAAwB,CAY1B;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,8BAA8B,EACpC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,yBAAyB,GACnC,YAAY,CAmDd"}
1
+ {"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../src/sandbox-backends/docker.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EACV,8BAA8B,EAC/B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,KAAK,wBAAwB,EAE7B,KAAK,yBAAyB,EAE9B,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AA8C7B,wBAAgB,oCAAoC,IACjD,wBAAwB,CAY1B;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,8BAA8B,EACpC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,yBAAyB,GACnC,YAAY,CAoDd"}
@@ -40,6 +40,7 @@ export function createDockerSandboxPlane(args, startedAt, fileStore) {
40
40
  importNodeModule(nodeBuiltin("util")),
41
41
  ]);
42
42
  const execFileAsync = promisify(execFile);
43
+ await assertDockerSandboxAvailable(execFileAsync);
43
44
  const templateImage = await prepareDockerTemplateImage(execution, args, execFileAsync);
44
45
  await ensureDockerExecutionImage(templateImage, execFileAsync);
45
46
  return {
@@ -136,6 +137,7 @@ async function prepareDockerSandboxWorkspace(args, request, startedAt) {
136
137
  importNodeModule(nodeBuiltin("util")),
137
138
  ]);
138
139
  const execFileAsync = promisify(execFile);
140
+ await assertDockerSandboxAvailable(execFileAsync);
139
141
  const sandboxUser = dockerSandboxUser();
140
142
  const workdir = args.workdir ?? os.tmpdir();
141
143
  const sandboxRoot = path.join(workdir, "workbench-docker", request.allocation.sandboxId);
@@ -171,6 +173,39 @@ async function prepareDockerSandboxWorkspace(args, request, startedAt) {
171
173
  ...(args.progress ? { progressTarget: args.progress } : {}),
172
174
  };
173
175
  }
176
+ async function assertDockerSandboxAvailable(execFileAsync) {
177
+ try {
178
+ await execFileAsync("docker", ["info", "--format", "{{json .ServerVersion}}"], { maxBuffer: 1024 * 1024 });
179
+ }
180
+ catch (error) {
181
+ throw new Error(`Docker sandbox unavailable: Docker must be installed and running before Workbench can execute this eval. ${dockerUnavailableDetail(error)}`);
182
+ }
183
+ }
184
+ function dockerUnavailableDetail(error) {
185
+ const record = error && typeof error === "object" ? error : {};
186
+ const code = typeof record.code === "string" ? record.code : "";
187
+ if (code === "ENOENT") {
188
+ return "The docker CLI was not found on PATH.";
189
+ }
190
+ const stderr = bufferLikeToString(record.stderr).trim();
191
+ if (stderr) {
192
+ return stderr.split(/\r?\n/u)[0] ?? stderr;
193
+ }
194
+ const stdout = bufferLikeToString(record.stdout).trim();
195
+ if (stdout) {
196
+ return stdout.split(/\r?\n/u)[0] ?? stdout;
197
+ }
198
+ return error instanceof Error ? error.message : String(error);
199
+ }
200
+ function bufferLikeToString(value) {
201
+ if (typeof value === "string") {
202
+ return value;
203
+ }
204
+ if (Buffer.isBuffer(value)) {
205
+ return value.toString("utf8");
206
+ }
207
+ return "";
208
+ }
174
209
  async function runDockerSandboxExecution(args, sandbox, execution) {
175
210
  const metadata = asRuntimeRecord(sandbox.metadata);
176
211
  const root = readRequiredMetadataString(metadata, "root", DOCKER_SANDBOX_BACKEND);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@workbench-ai/workbench-core",
3
- "version": "0.0.73",
3
+ "version": "0.0.75",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/workbench-ai/workbench.git",
@@ -22,8 +22,8 @@
22
22
  ],
23
23
  "dependencies": {
24
24
  "yaml": "^2.8.2",
25
- "@workbench-ai/workbench-contract": "0.0.73",
26
- "@workbench-ai/workbench-protocol": "0.0.73"
25
+ "@workbench-ai/workbench-contract": "0.0.75",
26
+ "@workbench-ai/workbench-protocol": "0.0.75"
27
27
  },
28
28
  "devDependencies": {
29
29
  "@types/node": "^24.3.1",