@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 +12 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +248 -227
- package/dist/sandbox-backends/docker.d.ts.map +1 -1
- package/dist/sandbox-backends/docker.js +35 -0
- package/package.json +3 -3
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;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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":"AAkBA,OAAO,KAAK,EACV,IAAI,EAEJ,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EAGjB,mBAAmB,EACnB,mBAAmB,EAEnB,qBAAqB,EAErB,4BAA4B,EAE5B,sBAAsB,EAEtB,6BAA6B,EAI7B,2BAA2B,EAC3B,YAAY,EAEZ,mBAAmB,EACnB,qBAAqB,EAErB,eAAe,EAGf,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,4BAA4B,EAE5B,oBAAoB,EACpB,eAAe,EACf,uBAAuB,EACvB,cAAc,EAEd,gBAAgB,EAChB,YAAY,EACb,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAYL,KAAK,iCAAiC,EAMvC,MAAM,kCAAkC,CAAC;AAmB1C,OAAO,KAAK,EACV,0BAA0B,EAC1B,0BAA0B,EAC3B,MAAM,mBAAmB,CAAC;AAO3B,OAAO,EAEL,KAAK,yBAAyB,EAC9B,KAAK,YAAY,EAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,8BAA8B,EAC/B,MAAM,8BAA8B,CAAC;AA4CtC,YAAY,EACV,IAAI,EACJ,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACrB,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,6BAA6B,EAC7B,oBAAoB,EACpB,8BAA8B,EAC9B,gCAAgC,EAChC,2BAA2B,EAC3B,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,eAAe,EACf,wBAAwB,EACxB,YAAY,EACZ,cAAc,EACd,sBAAsB,EACtB,4BAA4B,EAC5B,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,uBAAuB,EACvB,cAAc,EACd,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,8BAA8B,EAC9B,+CAA+C,EAC/C,+BAA+B,GAChC,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EACV,8BAA8B,EAC9B,4BAA4B,GAC7B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,EAC3B,+BAA+B,EAC/B,sCAAsC,EACtC,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,kCAAkC,EAClC,gCAAgC,EAChC,qCAAqC,EACrC,mCAAmC,EACnC,+BAA+B,EAC/B,yCAAyC,EACzC,gCAAgC,EAChC,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,EAC9B,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC7B,KAAK,YAAY,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oCAAoC,EACpC,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,WAAW,EACX,YAAY,EACZ,wBAAwB,EACxB,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,6BAA6B,EAClC,KAAK,2BAA2B,EAChC,KAAK,6BAA6B,GACnC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,2BAA2B,EAC3B,oCAAoC,EACpC,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,qBAAqB,EACrB,wBAAwB,EACxB,0BAA0B,EAC1B,aAAa,EACb,gBAAgB,EAChB,4BAA4B,EAC5B,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,eAAe,EACf,8BAA8B,EAC9B,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,6CAA6C,EAC7C,KAAK,gCAAgC,GACtC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,oBAAoB,EACpB,gCAAgC,EAChC,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,sCAAsC,EACtC,mCAAmC,EACnC,uBAAuB,EACvB,sCAAsC,EACtC,KAAK,gCAAgC,EACrC,KAAK,gCAAgC,GACtC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,kCAAkC,GACnC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,cAAc,EACd,gCAAgC,EAChC,oCAAoC,EACpC,8BAA8B,EAC9B,mCAAmC,EACnC,+BAA+B,EAC/B,kCAAkC,EAClC,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,EAC/B,KAAK,gCAAgC,EACrC,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,GAChC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,oCAAoC,EACpC,6BAA6B,EAC7B,kCAAkC,GACnC,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,uBAAuB;IACtC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAqB,SAAQ,uBAAuB;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,eAAe,CAAC,EAAE,SAAS,4BAA4B,EAAE,CAAC;IAC1D,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,eAAe,CAAC,EAAE,SAAS,4BAA4B,EAAE,CAAC;IAC1D,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,4BAA4B;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,iCAAiC;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oCAAqC,SAAQ,iCAAiC;IAC7F,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,IAAI,CAAC;IACT,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE;QACJ,MAAM,EAAE;YACN,UAAU,EAAE,MAAM,CAAC;YACnB,SAAS,EAAE,MAAM,CAAC;YAClB,SAAS,EAAE,MAAM,CAAC;YAClB,cAAc,EAAE,MAAM,CAAC;SACxB,CAAC;QACF,MAAM,EAAE,KAAK,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,UAAU,EAAE,MAAM,CAAC;YACnB,kBAAkB,EAAE,MAAM,CAAC;YAC3B,SAAS,EAAE,MAAM,CAAC;SACnB,CAAC,CAAC;QACH,MAAM,EAAE,KAAK,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,MAAM,CAAC;YAChB,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,cAAc,EAAE,OAAO,CAAC;YACxB,aAAa,EAAE,eAAe,GAAG,iBAAiB,CAAC;YACnD,OAAO,EAAE,sBAAsB,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC;YACrD,SAAS,EAAE,sBAAsB,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC;YACzD,KAAK,EAAE,MAAM,CAAC;YACd,IAAI,CAAC,EAAE,oBAAoB,CAAC;SAC7B,CAAC,CAAC;KACJ,CAAC;CACH;AAED,MAAM,WAAW,4BAA4B;IAC3C,cAAc,EAAE,MAAM,CAAC;IACvB,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,qBAAqB,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,0BAA0B,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3F,4BAA4B,CAAC,EAAE,CAC7B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,8BAA8B,EACpC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,yBAAyB,KACjC,YAAY,CAAC;CACnB;AAED,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,8BAA8B,EACpC,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,kBAAkB,CAAC,CA4B7B;AAmDD,wBAAgB,kDAAkD,CAChE,IAAI,EAAE,IAAI,CAAC,8BAA8B,EAAE,KAAK,GAAG,kBAAkB,GAAG,yBAAyB,GAAG,MAAM,CAAC,GAC1G,0BAA0B,EAAE,CAE9B;AAED,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,kBAAkB,GACtB,sBAAsB,CAAC,SAAS,CAAC,GAAG,IAAI,CAE1C;AAED,wBAAgB,yCAAyC,CACvD,IAAI,EAAE,IAAI,CAAC,8BAA8B,EAAE,KAAK,GAAG,kBAAkB,GAAG,yBAAyB,GAAG,MAAM,CAAC,GAC1G,iCAAiC,CAcnC;AAcD,wBAAsB,8BAA8B,CAClD,IAAI,EAAE,8BAA8B,EACpC,SAAS,EAAE,sBAAsB,EACjC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,CAAC,CAkC7B;AA6qBD,wBAAsB,sDAAsD,CAC1E,IAAI,EAAE,8BAA8B,EACpC,SAAS,EAAE,sBAAsB,EACjC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,CAAC,CAgC7B;AA2wCD,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAWvE;AAED,MAAM,WAAW,uBAAwB,SAAQ,uBAAuB;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,YAAY,CAAC;IAClB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAwB,SAAQ,uBAAuB;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAuB,SAAQ,uBAAuB;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,uBAAwB,SAAQ,uBAAuB;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,0BAA0B,CAAC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,MAAM,0BAA0B,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE3E,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,UAAU,EAAE,0BAA0B,CAAC;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,yBAA0B,SAAQ,uBAAuB;IACxE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,OAAO,GAAG,WAAW,GAAG,UAAU,CAAC;IAC9C,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,eAAe,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE;QACZ,MAAM,EAAE,WAAW,GAAG,aAAa,CAAC;QACpC,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gCAAgC;IAC/C,IAAI,EAAE,6BAA6B,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,qBAAqB,CAAC;IAC7B,mBAAmB,CAAC,EAAE,SAAS,0BAA0B,EAAE,CAAC;CAC7D;AAED,MAAM,WAAW,wBAAyB,SAAQ,mBAAmB;IACnE,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,kCAAkC;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,qBAAqB,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,cAAc,CAAC;IACtB,YAAY,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC7C,WAAW,EAAE,wBAAwB,CAAC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,qCAAqC;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,cAAc,CAAC;IACtB,SAAS,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC1C,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,yCAAyC;IACxD,KAAK,EAAE,qBAAqB,CAAC;IAC7B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;CAClB;AAmDD,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,eAAe,CAAC,CAkGxG;AAED,wBAAsB,eAAe,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,eAAe,CAAC,CAerG;AAED,wBAAsB,uBAAuB,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC,CAsFnI;AA8BD,wBAAsB,mBAAmB,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA6D9G;AAED,wBAAsB,qBAAqB,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAS9G;AAED,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAsEpG;AAED,wBAAsB,gCAAgC,CACpD,OAAO,GAAE,IAAI,CAAC,oBAAoB,EAAE,KAAK,GAAG,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAM,GAC5F,OAAO,CAAC,iCAAiC,CAAC,CAc5C;AAED,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,qBAAqB,EAC5B,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC;IAAE,KAAK,EAAE,qBAAqB,CAAC;IAAC,IAAI,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC,CAqCjE;AAED,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,qBAAqB,EAC5B,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC;IAAE,KAAK,EAAE,qBAAqB,CAAC;IAAC,IAAI,EAAE,YAAY,EAAE,CAAA;CAAE,CAAC,CAoCjE;AAED,wBAAsB,mCAAmC,CACvD,OAAO,GAAE,IAAI,CAAC,uBAAuB,EAAE,KAAK,GAAG,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAM,GAC1G,OAAO,CAAC,oCAAoC,CAAC,CAe/C;AAED,wBAAsB,kCAAkC,CACtD,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAYhC;AAED,wBAAsB,yCAAyC,CAC7D,KAAK,EAAE,qBAAqB,EAC5B,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAWrC;AAED,wBAAgB,oCAAoC,CAClD,IAAI,EAAE,kCAAkC,GACvC,8BAA8B,CAwHhC;AAED,wBAAgB,uCAAuC,CACrD,IAAI,EAAE,qCAAqC,GAC1C,8BAA8B,CAgHhC;AAED,wBAAgB,sCAAsC,CACpD,MAAM,EAAE,SAAS,cAAc,EAAE,GAChC,MAAM,EAAE,CAEV;AAED,wBAAgB,kCAAkC,CAChD,MAAM,EAAE,SAAS,cAAc,EAAE,GAChC,cAAc,EAAE,CAElB;AAED,wBAAgB,4CAA4C,CAC1D,KAAK,EAAE,qBAAqB,EAC5B,OAAO,EAAE;IACP,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B,GACA,cAAc,EAAE,CAyBlB;AAyFD,wBAAgB,wCAAwC,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAEvF;AAED,wBAAgB,8CAA8C,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAE5F;AAED,wBAAgB,+CAA+C,CAC7D,SAAS,EAAE,kBAAkB,GAC5B,mBAAmB,GAAG,IAAI,CA2B5B;AA4BD,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,qBAAqB,EAC5B,IAAI,EAAE;IACJ,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,mBAAmB,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GACA,yCAAyC,CAkC3C;AAED,wBAAgB,mCAAmC,CACjD,GAAG,EAAE,YAAY,EACjB,YAAY,EAAE,YAAY,GAAG,SAAS,GACrC;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAEvC;AAED,wBAAgB,gDAAgD,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAM/G;AAED,MAAM,WAAW,+BAA+B;IAC9C,YAAY,EAAE,qBAAqB,CAAC;IACpC,KAAK,EAAE,wBAAwB,EAAE,CAAC;IAClC,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,cAAc,EAAE,cAAc,EAAE,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,oBAAoB,EAAE,CAAC;IACrC,YAAY,EAAE,4BAA4B,EAAE,CAAC;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,wBAAsB,qCAAqC,CACzD,OAAO,EAAE,gBAAgB,EACzB,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACf,GACL,OAAO,CAAC,+BAA+B,CAAC,CA0D1C;AAED,wBAAsB,kCAAkC,CACtD,KAAK,EAAE,gCAAgC,GACtC,OAAO,CAAC;IACT,GAAG,EAAE,YAAY,CAAC;IAClB,GAAG,EAAE,YAAY,CAAC;IAClB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,KAAK,EAAE,cAAc,CAAC;CACvB,CAAC,CA4FD;AAED,wBAAsB,qBAAqB,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,sBAAsB,CAAC,CA6JlH;AA4CD,wBAAsB,gBAAgB,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAmF1G;AAED,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,qBAAqB,EAC5B,OAAO,GAAE,IAAI,CAAC,uBAAuB,EAAE,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAM,GAC5E,mBAAmB,CAyFrB;AAED,wBAAsB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAajI;AAED,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAc/H;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,OAAO,CAAC,CAmE3G;AA6BD,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAyB7H;AAWD,wBAAsB,mBAAmB,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAS1G;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,uBAAuB,GAAG;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CAC/B,GAAG,OAAO,CAAC,cAAc,CAAC,CA0B1B;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAwB5H;AAED,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAmBrI;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,yBAA8B,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAgC9I;AAYD,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAY9I;AAED,wBAAsB,oBAAoB,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAU5G;AAED,wBAAsB,mBAAmB,CAAC,OAAO,GAAE,sBAA2B,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAiF5G;AAED,wBAAsB,uBAAuB,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,sBAAsB,CAAC,CA8CpH;AAaD,MAAM,WAAW,2CAA2C;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,qBAAqB,CAAC;IAC7B,YAAY,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC/C,cAAc,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,OAAO,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,2BAA2B,CAAC,aAAa,CAAC,CAAC;CAC1D;AAED,wBAAgB,0CAA0C,CACxD,OAAO,EAAE,2CAA2C,GACnD,2BAA2B,CA8D7B;AAED,wBAAgB,kCAAkC,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,GAAG,SAAS,CAEnG;AAED,wBAAgB,uCAAuC,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,GAAG,SAAS,CAQxG;AAED,wBAAgB,uCAAuC,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,GAAG,SAAS,CAYxG;AA0BD,wBAAsB,yCAAyC,CAC7D,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,2BAA2B,CAAC,CA6BtC;AAED,wBAAsB,iCAAiC,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAoBnI;AAED,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,2BAA2B,EACrC,QAAQ,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACzC,6BAA6B,GAAG,IAAI,CAsDtC;AA0YD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,mBAAmB,CAiBlF;AAiJD,UAAU,uBAAuB;IAC/B,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACxC;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,qBAAqB,EAC5B,IAAI,EAAE,mBAAmB,EACzB,OAAO,GAAE,uBAA4B,GACpC,IAAI,CAmEN;AA+FD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE/C;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,mBAAmB,EAAE,GAAG,MAAM,CAOvE;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,4BAA4B,GAAG,MAAM,CAS1F;AA8cD,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAUpF;AAED,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,OAAO,GAAG,YAAY,GAAG,SAAS,CAO1F;AAED,wBAAgB,qCAAqC,CAAC,OAAO,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,GAAG,SAAS,CAKrG;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAKlG;AA0DD,wBAAgB,gDAAgD,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAExF;AAwqDD,wBAAsB,wBAAwB,CAAC,CAAC,EAC9C,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAEZ;AA24CD,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,qBAAqB,EAC/B,QAAQ,EAAE,qBAAqB,GAC9B,qBAAqB,CAwBvB"}
|
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 ?
|
|
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 =
|
|
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
|
|
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 =
|
|
1564
|
-
|
|
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
|
|
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.
|
|
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) =>
|
|
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.
|
|
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 (
|
|
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:
|
|
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
|
-
|
|
2829
|
-
|
|
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(
|
|
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:
|
|
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:
|
|
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
|
-
|
|
3278
|
-
const
|
|
3279
|
-
|
|
3280
|
-
|
|
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
|
|
3359
|
-
return
|
|
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, {
|
|
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
|
|
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
|
|
3639
|
+
visibility,
|
|
3667
3640
|
});
|
|
3668
|
-
const publishedRefs = publicationRefsForVersion(version.id, publication,
|
|
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
|
|
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) =>
|
|
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
|
-
|
|
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
|
-
|
|
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) =>
|
|
4476
|
-
|
|
4477
|
-
|
|
4478
|
-
|
|
4479
|
-
|
|
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 =
|
|
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
|
|
4810
|
-
|
|
4811
|
-
|
|
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 (
|
|
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 (
|
|
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
|
-
...(
|
|
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
|
|
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.
|
|
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.
|
|
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
|
|
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,
|
|
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.
|
|
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.
|
|
26
|
-
"@workbench-ai/workbench-protocol": "0.0.
|
|
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",
|