@workbench-ai/workbench-core 0.0.67 → 0.0.69

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.
Files changed (51) hide show
  1. package/dist/coded-errors.d.ts +27 -0
  2. package/dist/coded-errors.d.ts.map +1 -0
  3. package/dist/coded-errors.js +52 -0
  4. package/dist/execution-events.d.ts +5 -1
  5. package/dist/execution-events.d.ts.map +1 -1
  6. package/dist/execution-events.js +13 -3
  7. package/dist/execution-graph.d.ts +4 -3
  8. package/dist/execution-graph.d.ts.map +1 -1
  9. package/dist/execution-graph.js +15 -14
  10. package/dist/execution-jobs.d.ts +5 -20
  11. package/dist/execution-jobs.d.ts.map +1 -1
  12. package/dist/execution-jobs.js +7 -91
  13. package/dist/execution-outputs.d.ts +2 -2
  14. package/dist/execution-outputs.d.ts.map +1 -1
  15. package/dist/execution-outputs.js +10 -10
  16. package/dist/execution-runtime-types.d.ts +1 -1
  17. package/dist/execution-runtime-types.d.ts.map +1 -1
  18. package/dist/execution-scheduler.d.ts +5 -3
  19. package/dist/execution-scheduler.d.ts.map +1 -1
  20. package/dist/execution-scheduler.js +33 -9
  21. package/dist/execution-traces.js +1 -1
  22. package/dist/generic-spec.d.ts +7 -61
  23. package/dist/generic-spec.d.ts.map +1 -1
  24. package/dist/generic-spec.js +0 -679
  25. package/dist/index.d.ts +377 -220
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +7887 -3881
  28. package/dist/remote-model.d.ts +17 -0
  29. package/dist/remote-model.d.ts.map +1 -0
  30. package/dist/remote-model.js +86 -0
  31. package/dist/runtime-dockerfile.d.ts +1 -1
  32. package/dist/runtime-dockerfile.d.ts.map +1 -1
  33. package/dist/runtime-dockerfile.js +4 -4
  34. package/dist/sandbox-backends/docker.d.ts.map +1 -1
  35. package/dist/sandbox-backends/docker.js +34 -16
  36. package/dist/sandbox-inputs.js +3 -3
  37. package/dist/sandbox-plane.d.ts.map +1 -1
  38. package/dist/sandbox-plane.js +13 -9
  39. package/dist/skill-patch.d.ts +8 -0
  40. package/dist/skill-patch.d.ts.map +1 -0
  41. package/dist/{candidate-patch.js → skill-patch.js} +5 -5
  42. package/package.json +3 -3
  43. package/worker/sandbox-adapter-runner.cjs +2 -2
  44. package/dist/candidate-patch.d.ts +0 -8
  45. package/dist/candidate-patch.d.ts.map +0 -1
  46. package/dist/execution-evidence.d.ts +0 -22
  47. package/dist/execution-evidence.d.ts.map +0 -1
  48. package/dist/execution-evidence.js +0 -302
  49. package/dist/inspection.d.ts +0 -117
  50. package/dist/inspection.d.ts.map +0 -1
  51. package/dist/inspection.js +0 -224
@@ -0,0 +1,27 @@
1
+ import type { Json } from "@workbench-ai/workbench-contract";
2
+ export interface WorkbenchCodedErrorOptions {
3
+ retryable?: boolean;
4
+ remediation?: string;
5
+ subject?: Record<string, Json>;
6
+ exitCode?: number;
7
+ }
8
+ export declare class WorkbenchUserError extends Error {
9
+ constructor(message: string);
10
+ }
11
+ export declare class WorkbenchCodedError extends WorkbenchUserError {
12
+ readonly code: string;
13
+ readonly retryable: boolean;
14
+ readonly remediation?: string;
15
+ readonly subject?: Record<string, Json>;
16
+ readonly exitCode: number;
17
+ constructor(code: string, message: string, options?: WorkbenchCodedErrorOptions);
18
+ }
19
+ export declare function codedErrorFromUnknown(error: unknown, fallbackCode?: string): {
20
+ code: string;
21
+ message: string;
22
+ retryable: boolean;
23
+ remediation?: string;
24
+ subject?: Record<string, Json>;
25
+ exitCode: number;
26
+ };
27
+ //# sourceMappingURL=coded-errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coded-errors.d.ts","sourceRoot":"","sources":["../src/coded-errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kCAAkC,CAAC;AAE7D,MAAM,WAAW,0BAA0B;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,mBAAoB,SAAQ,kBAAkB;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,0BAA+B;CAapF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,SAAa,GAAG;IAChF,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;CAClB,CAyBA"}
@@ -0,0 +1,52 @@
1
+ export class WorkbenchUserError extends Error {
2
+ constructor(message) {
3
+ super(message);
4
+ this.name = "WorkbenchUserError";
5
+ }
6
+ }
7
+ export class WorkbenchCodedError extends WorkbenchUserError {
8
+ code;
9
+ retryable;
10
+ remediation;
11
+ subject;
12
+ exitCode;
13
+ constructor(code, message, options = {}) {
14
+ super(message);
15
+ this.name = "WorkbenchCodedError";
16
+ this.code = code;
17
+ this.retryable = options.retryable ?? false;
18
+ if (options.remediation) {
19
+ this.remediation = options.remediation;
20
+ }
21
+ if (options.subject) {
22
+ this.subject = options.subject;
23
+ }
24
+ this.exitCode = options.exitCode ?? 1;
25
+ }
26
+ }
27
+ export function codedErrorFromUnknown(error, fallbackCode = "internal") {
28
+ if (error instanceof WorkbenchCodedError) {
29
+ return {
30
+ code: error.code,
31
+ message: error.message,
32
+ retryable: error.retryable,
33
+ ...(error.remediation ? { remediation: error.remediation } : {}),
34
+ ...(error.subject ? { subject: error.subject } : {}),
35
+ exitCode: error.exitCode,
36
+ };
37
+ }
38
+ if (error instanceof WorkbenchUserError) {
39
+ return {
40
+ code: "usage",
41
+ message: error.message,
42
+ retryable: false,
43
+ exitCode: 2,
44
+ };
45
+ }
46
+ return {
47
+ code: fallbackCode,
48
+ message: error instanceof Error ? error.message : String(error),
49
+ retryable: false,
50
+ exitCode: 1,
51
+ };
52
+ }
@@ -5,6 +5,7 @@ export interface WorkbenchExecutionProgressTarget {
5
5
  ownerUserId?: string;
6
6
  flushWindowMs?: number;
7
7
  transport?: "http" | "stdout" | "both";
8
+ appendBatch?: (batch: WorkbenchExecutionEventBatch) => Promise<void>;
8
9
  }
9
10
  export interface WorkbenchExecutionEventPublisherContext {
10
11
  projectId: string;
@@ -45,9 +46,12 @@ export interface WorkbenchProgressStdoutEnvelope {
45
46
  batch: WorkbenchExecutionEventBatch;
46
47
  };
47
48
  }
49
+ export interface PublishWorkbenchProgressStdoutEnvelopeOptions {
50
+ forwardStdout?: boolean;
51
+ }
48
52
  export declare function createWorkbenchProgressStdoutParser(onEnvelope: (envelope: WorkbenchProgressStdoutEnvelope) => void): {
49
53
  write(chunk: Buffer | string): void;
50
54
  flush(): void;
51
55
  };
52
- export declare function publishWorkbenchProgressStdoutEnvelope(envelope: WorkbenchProgressStdoutEnvelope, expectedTarget?: WorkbenchExecutionProgressTarget): Promise<void>;
56
+ export declare function publishWorkbenchProgressStdoutEnvelope(envelope: WorkbenchProgressStdoutEnvelope, expectedTarget?: WorkbenchExecutionProgressTarget, options?: PublishWorkbenchProgressStdoutEnvelopeOptions): Promise<void>;
53
57
  //# sourceMappingURL=execution-events.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"execution-events.d.ts","sourceRoot":"","sources":["../src/execution-events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,uBAAuB,EACvB,4BAA4B,EAC5B,6BAA6B,EAC9B,MAAM,kCAAkC,CAAC;AAE1C,MAAM,WAAW,gCAAgC;IAC/C,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;CACxC;AAED,MAAM,WAAW,uCAAuC;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,gCAAgC,CAAC;CAC3C;AAED,MAAM,WAAW,4BAA4B;IAC3C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,6BAA6B,CAAC;IACtC,IAAI,CAAC,EAAE,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,EAAE,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAC1C,OAAO,EAAE,IAAI,CAAC;CACf;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,OAAO,CAAC,MAAM,EAAE,SAAS,4BAA4B,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,eAAO,MAAM,gCAAgC,2BAA2B,CAAC;AAEzE,wBAAgB,sCAAsC,CACpD,OAAO,EAAE,uCAAuC,GAC/C,gCAAgC,CAsClC;AAED,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,gCAAgC,GAAG,SAAS,EACvD,IAAI,EAAE;IACJ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC3C,IAAI,CAAC,EAAE,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACA,OAAO,CAAC,IAAI,CAAC,CAef;AAyCD,MAAM,WAAW,+BAA+B;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE;QACJ,MAAM,EAAE,kCAAkC,CAAC;QAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,4BAA4B,CAAC;KACrC,CAAC;CACH;AAED,wBAAgB,mCAAmC,CACjD,UAAU,EAAE,CAAC,QAAQ,EAAE,+BAA+B,KAAK,IAAI,GAC9D;IACD,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACpC,KAAK,IAAI,IAAI,CAAC;CACf,CA0DA;AAED,wBAAsB,sCAAsC,CAC1D,QAAQ,EAAE,+BAA+B,EACzC,cAAc,CAAC,EAAE,gCAAgC,GAChD,OAAO,CAAC,IAAI,CAAC,CAiBf"}
1
+ {"version":3,"file":"execution-events.d.ts","sourceRoot":"","sources":["../src/execution-events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,uBAAuB,EACvB,4BAA4B,EAC5B,6BAA6B,EAC9B,MAAM,kCAAkC,CAAC;AAE1C,MAAM,WAAW,gCAAgC;IAC/C,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IACvC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,4BAA4B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACtE;AAED,MAAM,WAAW,uCAAuC;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,gCAAgC,CAAC;CAC3C;AAED,MAAM,WAAW,4BAA4B;IAC3C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,6BAA6B,CAAC;IACtC,IAAI,CAAC,EAAE,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,EAAE,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAC1C,OAAO,EAAE,IAAI,CAAC;CACf;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,OAAO,CAAC,MAAM,EAAE,SAAS,4BAA4B,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,eAAO,MAAM,gCAAgC,2BAA2B,CAAC;AAEzE,wBAAgB,sCAAsC,CACpD,OAAO,EAAE,uCAAuC,GAC/C,gCAAgC,CAsClC;AAED,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,gCAAgC,GAAG,SAAS,EACvD,IAAI,EAAE;IACJ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC3C,IAAI,CAAC,EAAE,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACA,OAAO,CAAC,IAAI,CAAC,CAef;AA0CD,MAAM,WAAW,+BAA+B;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE;QACJ,MAAM,EAAE,kCAAkC,CAAC;QAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,4BAA4B,CAAC;KACrC,CAAC;CACH;AAED,MAAM,WAAW,6CAA6C;IAC5D,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAgB,mCAAmC,CACjD,UAAU,EAAE,CAAC,QAAQ,EAAE,+BAA+B,KAAK,IAAI,GAC9D;IACD,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACpC,KAAK,IAAI,IAAI,CAAC;CACf,CA0DA;AAED,wBAAsB,sCAAsC,CAC1D,QAAQ,EAAE,+BAA+B,EACzC,cAAc,CAAC,EAAE,gCAAgC,EACjD,OAAO,GAAE,6CAAkD,GAC1D,OAAO,CAAC,IAAI,CAAC,CA0Bf"}
@@ -75,6 +75,7 @@ function validProgressTarget(target) {
75
75
  ? { flushWindowMs: target.flushWindowMs }
76
76
  : {}),
77
77
  ...(target.transport === "stdout" || target.transport === "both" ? { transport: target.transport } : { transport: "http" }),
78
+ ...(target.appendBatch ? { appendBatch: target.appendBatch } : {}),
78
79
  };
79
80
  }
80
81
  async function publishProgressBatch(target, batch) {
@@ -147,7 +148,7 @@ export function createWorkbenchProgressStdoutParser(onEnvelope) {
147
148
  },
148
149
  };
149
150
  }
150
- export async function publishWorkbenchProgressStdoutEnvelope(envelope, expectedTarget) {
151
+ export async function publishWorkbenchProgressStdoutEnvelope(envelope, expectedTarget, options = {}) {
151
152
  const target = validProgressTarget(expectedTarget);
152
153
  if (!target) {
153
154
  await postProgressBody(envelope);
@@ -156,14 +157,23 @@ export async function publishWorkbenchProgressStdoutEnvelope(envelope, expectedT
156
157
  if (!progressEnvelopeMatchesTarget(envelope, target)) {
157
158
  return;
158
159
  }
159
- await postProgressBody({
160
+ if (target.appendBatch) {
161
+ await target.appendBatch(envelope.body.batch);
162
+ return;
163
+ }
164
+ const deliveredEnvelope = {
160
165
  url: target.url,
161
166
  body: {
162
167
  ...envelope.body,
163
168
  ...(target.ownerUserId ? { ownerUserId: target.ownerUserId } : {}),
164
169
  leaseToken: target.token,
165
170
  },
166
- });
171
+ };
172
+ if (target.transport === "stdout" && options.forwardStdout === true) {
173
+ process.stdout.write(`${WORKBENCH_PROGRESS_STDOUT_PREFIX}${JSON.stringify(deliveredEnvelope)}\n`);
174
+ return;
175
+ }
176
+ await postProgressBody(deliveredEnvelope);
167
177
  }
168
178
  function progressEnvelopeMatchesTarget(envelope, target) {
169
179
  return envelope.url === target.url &&
@@ -1,19 +1,20 @@
1
- import type { WorkbenchExecutionSpec } from "@workbench-ai/workbench-contract";
1
+ import type { Json, WorkbenchExecutionSpec } from "@workbench-ai/workbench-contract";
2
2
  import { type GenericRunSpec, type GenericEngineCaseSpec } from "./generic-spec.ts";
3
3
  export interface CompileExecutionGraphInput {
4
4
  ownerUserId: string;
5
5
  projectId: string;
6
6
  runId: string;
7
- candidateId: string;
7
+ versionId: string;
8
8
  attemptIndex: number;
9
9
  sampleIndex?: number;
10
10
  caseId?: string;
11
11
  engineCase?: GenericEngineCaseSpec;
12
12
  spec: GenericRunSpec;
13
13
  workflow?: "eval" | "improve";
14
- candidateRef?: string;
14
+ skillRef?: string;
15
15
  caseRef?: string;
16
16
  environmentRef?: string;
17
+ metadata?: Record<string, Json>;
17
18
  }
18
19
  export interface WorkbenchExecutionGraph {
19
20
  nodes: WorkbenchExecutionGraphNode[];
@@ -1 +1 @@
1
- {"version":3,"file":"execution-graph.d.ts","sourceRoot":"","sources":["../src/execution-graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,sBAAsB,EAEvB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAKL,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAE3B,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,qBAAqB,CAAC;IACnC,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,2BAA2B,EAAE,CAAC;IACrC,UAAU,EAAE,sBAAsB,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,sBAAsB,CAAC;IAClC,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,0BAA0B,GAAG,uBAAuB,CAoEzG"}
1
+ {"version":3,"file":"execution-graph.d.ts","sourceRoot":"","sources":["../src/execution-graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EAGJ,sBAAsB,EAEvB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAKL,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAE3B,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,qBAAqB,CAAC;IACnC,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,2BAA2B,EAAE,CAAC;IACrC,UAAU,EAAE,sBAAsB,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,sBAAsB,CAAC;IAClC,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,0BAA0B,GAAG,uBAAuB,CAqEzG"}
@@ -3,8 +3,8 @@ export function compileWorkbenchExecutionGraph(input) {
3
3
  const workflow = input.workflow ?? "improve";
4
4
  const sampleIndex = input.sampleIndex ?? 0;
5
5
  const caseId = input.caseId ?? "current";
6
- const candidateRef = input.candidateRef ?? `workbench://benchmarks/${input.projectId}/candidates/${input.candidateId}`;
7
- const caseRef = input.caseRef ?? `workbench://benchmarks/${input.projectId}/engine-cases/${caseId}`;
6
+ const skillRef = input.skillRef ?? `workbench://skills/${input.projectId}/versions/${input.versionId}`;
7
+ const caseRef = input.caseRef ?? `workbench://skills/${input.projectId}/cases/${caseId}`;
8
8
  if (!input.engineCase) {
9
9
  throw new Error("Execution graph compilation requires an engine case.");
10
10
  }
@@ -16,44 +16,45 @@ export function compileWorkbenchExecutionGraph(input) {
16
16
  const nodes = [];
17
17
  const executions = [];
18
18
  const improveExecutionId = executionId(input, "improve", "current", 0);
19
- const improveOutputRef = `execution://${improveExecutionId}/candidate_patch`;
20
19
  const engineAdapter = input.spec.engineRun;
21
20
  if (workflow === "improve") {
22
- if (!input.spec.candidate.improve || !input.spec.improve) {
23
- throw new Error("Candidate improve configuration is required for improve execution graphs.");
21
+ if (!input.spec.skill.improve || !input.spec.improve) {
22
+ throw new Error("Skill improve configuration is required for improve execution graphs.");
24
23
  }
25
24
  pushExecution(nodes, executions, createExecution({
26
25
  input,
27
26
  purpose: "improve",
28
27
  adapter: input.spec.improve,
29
28
  inputs: [
30
- inputRef("candidate", candidateRef, "/workspace", true),
31
- inputRef("traces", `workbench://benchmarks/${input.projectId}/runs/${input.runId}/traces`, "/workspace/input/traces", false),
29
+ inputRef("skill", skillRef, "/workspace", true),
30
+ inputRef("traces", `workbench://skills/${input.projectId}/runs/${input.runId}/traces`, "/workspace/input/traces", false),
32
31
  ],
33
- outputs: [outputContract("candidate_patch", "workbench.candidate_patch.v1")],
32
+ outputs: [outputContract("skill_patch", "workbench.skill_patch.v1")],
34
33
  metadata: {
34
+ ...(input.metadata ?? {}),
35
35
  attemptIndex: input.attemptIndex,
36
36
  sampleIndex: 0,
37
37
  caseId: "current",
38
- benchmark: input.spec.benchmark.name,
39
- edits: input.spec.candidate.improve.edits,
38
+ eval: input.spec.eval.name,
39
+ edits: input.spec.skill.improve.edits,
40
40
  },
41
41
  runtime: input.spec.environment,
42
42
  idOverride: improveExecutionId,
43
43
  }), []);
44
+ return { nodes, executions };
44
45
  }
45
- const runCandidateRef = workflow === "improve" ? improveOutputRef : candidateRef;
46
46
  const attemptExecutionId = executionId(input, "attempt", caseId, sampleIndex);
47
47
  pushExecution(nodes, executions, createExecution({
48
48
  input,
49
49
  purpose: "attempt",
50
50
  adapter: engineAdapter,
51
51
  inputs: [
52
- inputRef("candidate", runCandidateRef, "/workspace/input/candidate", false),
52
+ inputRef("skills", skillRef, "/workspace/input/skills", false),
53
53
  inputRef("case", caseRef, "/workspace/input/case", false),
54
54
  ],
55
55
  outputs: [outputContract("result", "workbench.result.v1")],
56
56
  metadata: {
57
+ ...(input.metadata ?? {}),
57
58
  attemptIndex: input.attemptIndex,
58
59
  sampleIndex,
59
60
  caseId,
@@ -62,7 +63,7 @@ export function compileWorkbenchExecutionGraph(input) {
62
63
  },
63
64
  runtime: executionConfig.environment,
64
65
  idOverride: attemptExecutionId,
65
- }), workflow === "improve" ? [improveExecutionId] : []);
66
+ }), []);
66
67
  return { nodes, executions };
67
68
  }
68
69
  function pushExecution(nodes, executions, execution, dependsOn) {
@@ -77,7 +78,7 @@ function createExecution(args) {
77
78
  id: args.idOverride ?? executionId(args.input, args.purpose, args.input.caseId ?? "current", args.input.sampleIndex ?? 0),
78
79
  projectId: args.input.projectId,
79
80
  runId: args.input.runId,
80
- candidateId: args.input.candidateId,
81
+ versionId: args.input.versionId,
81
82
  purpose: args.purpose,
82
83
  adapter: args.adapter,
83
84
  sandbox: args.input.environmentRef
@@ -19,7 +19,7 @@ export declare function planWorkbenchExecutionJobsForPurpose(args: {
19
19
  ownerUserId: string;
20
20
  projectId: string;
21
21
  runId: string;
22
- candidateId: string;
22
+ versionId: string;
23
23
  attemptIndex: number;
24
24
  samples: number;
25
25
  caseIds?: readonly string[];
@@ -32,15 +32,18 @@ export declare function planWorkbenchExecutionJobsForPurpose(args: {
32
32
  engineCases: readonly WorkbenchEngineCase[];
33
33
  traceFiles?: readonly SurfaceSnapshotFile[];
34
34
  environmentRef?: string;
35
+ skillRef?: string;
36
+ caseRef?: string;
35
37
  environmentRefsByCase?: ReadonlyMap<string, string>;
36
38
  baseId?: string | null;
39
+ metadata?: Record<string, Json>;
37
40
  }): RemoteWorkbenchJob[];
38
41
  export declare function engineCaseIds(engineCases: readonly WorkbenchEngineCase[]): string[];
39
42
  export declare function engineCaseForCase(engineCases: readonly WorkbenchEngineCase[], caseId: string): WorkbenchEngineCase;
40
43
  export declare function createWorkbenchExecutionJob(args: {
41
44
  projectId: string;
42
45
  runId: string;
43
- candidateId: string;
46
+ versionId: string;
44
47
  execution: WorkbenchExecutionSpec;
45
48
  dependsOn: readonly string[];
46
49
  now: string;
@@ -48,24 +51,6 @@ export declare function createWorkbenchExecutionJob(args: {
48
51
  traceFiles?: readonly SurfaceSnapshotFile[];
49
52
  baseId?: string | null;
50
53
  }): RemoteWorkbenchJob;
51
- export declare function createBaselineCandidateExecution(args: {
52
- ownerUserId: string;
53
- projectId: string;
54
- runId: string;
55
- candidateId: string;
56
- attemptIndex: number;
57
- }): WorkbenchExecutionSpec;
58
- export declare function createBaselineCandidateJob(args: {
59
- ownerUserId: string;
60
- projectId: string;
61
- runId: string;
62
- candidateId: string;
63
- files: readonly SurfaceSnapshotFile[];
64
- now: string;
65
- baseId: string | null;
66
- attemptIndex: number;
67
- fileSet?: Json;
68
- }): RemoteWorkbenchJob;
69
54
  export declare function workbenchExecutionJobId(executionId: string): string;
70
55
  export declare function workbenchExecutionJobPurpose(job: RemoteWorkbenchJob): WorkbenchExecutionSpec["purpose"] | null;
71
56
  //# sourceMappingURL=execution-jobs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"execution-jobs.d.ts","sourceRoot":"","sources":["../src/execution-jobs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execution-jobs.d.ts","sourceRoot":"","sources":["../src/execution-jobs.ts"],"names":[],"mappings":"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"}
@@ -46,13 +46,16 @@ export function planWorkbenchExecutionJobsForPurpose(args) {
46
46
  ownerUserId: args.ownerUserId,
47
47
  projectId: args.projectId,
48
48
  runId: args.runId,
49
- candidateId: args.candidateId,
49
+ versionId: args.versionId,
50
50
  attemptIndex: args.attemptIndex,
51
51
  sampleIndex,
52
52
  caseId,
53
53
  spec: args.spec,
54
54
  engineCase: engineCase.case,
55
55
  environmentRef: args.environmentRefsByCase?.get(caseId) ?? args.environmentRef,
56
+ skillRef: args.skillRef,
57
+ caseRef: args.caseRef,
58
+ metadata: args.metadata,
56
59
  workflow: args.workflow === "improve" ? "improve" : "eval",
57
60
  });
58
61
  for (const node of graph.nodes) {
@@ -62,7 +65,7 @@ export function planWorkbenchExecutionJobsForPurpose(args) {
62
65
  jobs.push(createWorkbenchExecutionJob({
63
66
  projectId: args.projectId,
64
67
  runId: args.runId,
65
- candidateId: args.candidateId,
68
+ versionId: args.versionId,
66
69
  execution: node.execution,
67
70
  dependsOn: node.dependsOn,
68
71
  now: args.now,
@@ -103,7 +106,7 @@ export function createWorkbenchExecutionJob(args) {
103
106
  id: workbenchExecutionJobId(args.execution.id),
104
107
  projectId: args.projectId,
105
108
  runId: args.runId,
106
- candidateId: args.candidateId,
109
+ versionId: args.versionId,
107
110
  kind: "execute",
108
111
  status: "queued",
109
112
  attempt: 0,
@@ -112,7 +115,7 @@ export function createWorkbenchExecutionJob(args) {
112
115
  input: {
113
116
  execution: args.execution,
114
117
  dependsOn: args.dependsOn.map(workbenchExecutionJobId),
115
- candidateId: args.candidateId,
118
+ versionId: args.versionId,
116
119
  attemptIndex,
117
120
  sampleIndex,
118
121
  caseId,
@@ -122,93 +125,6 @@ export function createWorkbenchExecutionJob(args) {
122
125
  },
123
126
  };
124
127
  }
125
- export function createBaselineCandidateExecution(args) {
126
- return {
127
- id: `exec_${args.runId.replace(/[^a-z0-9_]/giu, "_")}_attempt_${String(args.attemptIndex).padStart(3, "0")}_case_current_sample_000_improve`,
128
- projectId: args.projectId,
129
- runId: args.runId,
130
- candidateId: args.candidateId,
131
- purpose: "improve",
132
- adapter: {
133
- use: "baseline",
134
- with: {},
135
- },
136
- sandbox: {
137
- kind: "snapshot",
138
- ref: "workbench/baseline-candidate",
139
- },
140
- inputs: [],
141
- outputs: [{
142
- name: "candidate_patch",
143
- schema: "workbench.candidate_patch.v1",
144
- required: true,
145
- }],
146
- policy: {
147
- tenantId: args.ownerUserId,
148
- resources: {
149
- cpu: 1,
150
- memoryGb: 1,
151
- diskGb: 1,
152
- timeoutMinutes: 1,
153
- },
154
- network: {
155
- egress: "none",
156
- },
157
- },
158
- metadata: {
159
- attemptIndex: args.attemptIndex,
160
- sampleIndex: 0,
161
- caseId: "current",
162
- baseline: true,
163
- },
164
- };
165
- }
166
- export function createBaselineCandidateJob(args) {
167
- const execution = createBaselineCandidateExecution({
168
- ownerUserId: args.ownerUserId,
169
- projectId: args.projectId,
170
- runId: args.runId,
171
- candidateId: args.candidateId,
172
- attemptIndex: args.attemptIndex,
173
- });
174
- const files = args.files.map((file) => ({ ...file }));
175
- return {
176
- id: workbenchExecutionJobId(execution.id),
177
- projectId: args.projectId,
178
- runId: args.runId,
179
- candidateId: args.candidateId,
180
- kind: "execute",
181
- status: "succeeded",
182
- attempt: 1,
183
- createdAt: args.now,
184
- startedAt: args.now,
185
- finishedAt: args.now,
186
- updatedAt: args.now,
187
- input: {
188
- execution,
189
- dependsOn: [],
190
- candidateId: args.candidateId,
191
- attemptIndex: args.attemptIndex,
192
- baseline: true,
193
- },
194
- output: {
195
- ok: true,
196
- executionId: execution.id,
197
- purpose: "improve",
198
- candidateId: args.candidateId,
199
- attemptIndex: args.attemptIndex,
200
- baseId: args.baseId,
201
- candidatePatch: {
202
- files,
203
- fileChanges: [],
204
- },
205
- fileChanges: [],
206
- files,
207
- ...(args.fileSet ? { fileSet: args.fileSet } : {}),
208
- traces: [],
209
- },
210
- };
211
- }
212
128
  export function workbenchExecutionJobId(executionId) {
213
129
  return `job_${executionId.replace(/[^a-z0-9_]/giu, "_")}`;
214
130
  }
@@ -1,6 +1,6 @@
1
- import type { Json, WorkbenchCandidatePatch, WorkbenchExecutionSpec, WorkbenchResult } from "@workbench-ai/workbench-contract";
1
+ import type { Json, WorkbenchSkillPatch, WorkbenchExecutionSpec, WorkbenchResult } from "@workbench-ai/workbench-contract";
2
2
  export interface WorkbenchExecutionOutputPayloads {
3
- candidatePatch?: WorkbenchCandidatePatch;
3
+ skillPatch?: WorkbenchSkillPatch;
4
4
  result?: WorkbenchResult;
5
5
  }
6
6
  export declare function validateWorkbenchExecutionOutputPayloads(execution: WorkbenchExecutionSpec, payloads: Record<string, Json>): WorkbenchExecutionOutputPayloads;
@@ -1 +1 @@
1
- {"version":3,"file":"execution-outputs.d.ts","sourceRoot":"","sources":["../src/execution-outputs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,IAAI,EAEJ,uBAAuB,EAEvB,sBAAsB,EACtB,eAAe,EAChB,MAAM,kCAAkC,CAAC;AAK1C,MAAM,WAAW,gCAAgC;IAC/C,cAAc,CAAC,EAAE,uBAAuB,CAAC;IACzC,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B;AAED,wBAAgB,wCAAwC,CACtD,SAAS,EAAE,sBAAsB,EACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAC7B,gCAAgC,CAoClC;AAED,wBAAgB,wCAAwC,CAAC,SAAS,EAAE,sBAAsB,GAAG,MAAM,EAAE,CAuFpG;AAuCD,wBAAgB,iCAAiC,CAAC,SAAS,EAAE,sBAAsB,GAAG,IAAI,CAKzF"}
1
+ {"version":3,"file":"execution-outputs.d.ts","sourceRoot":"","sources":["../src/execution-outputs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,IAAI,EAEJ,mBAAmB,EAEnB,sBAAsB,EACtB,eAAe,EAChB,MAAM,kCAAkC,CAAC;AAK1C,MAAM,WAAW,gCAAgC;IAC/C,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B;AAED,wBAAgB,wCAAwC,CACtD,SAAS,EAAE,sBAAsB,EACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAC7B,gCAAgC,CAoClC;AAED,wBAAgB,wCAAwC,CAAC,SAAS,EAAE,sBAAsB,GAAG,MAAM,EAAE,CAuFpG;AAuCD,wBAAgB,iCAAiC,CAAC,SAAS,EAAE,sBAAsB,GAAG,IAAI,CAKzF"}
@@ -20,8 +20,8 @@ export function validateWorkbenchExecutionOutputPayloads(execution, payloads) {
20
20
  continue;
21
21
  }
22
22
  switch (contract.schema) {
23
- case "workbench.candidate_patch.v1":
24
- validated.candidatePatch = normalizeCandidatePatch(payload, execution, contract, issues);
23
+ case "workbench.skill_patch.v1":
24
+ validated.skillPatch = normalizeSkillPatch(payload, execution, contract, issues);
25
25
  break;
26
26
  case "workbench.result.v1":
27
27
  validated.result = normalizeResult(payload, execution, contract, issues);
@@ -120,25 +120,25 @@ export function collectWorkbenchExecutionIsolationIssues(execution) {
120
120
  }
121
121
  function expectedInputsForPurpose(purpose) {
122
122
  if (purpose === "improve") {
123
- return new Set(["candidate", "traces"]);
123
+ return new Set(["skill", "traces"]);
124
124
  }
125
125
  if (purpose === "attempt") {
126
- return new Set(["candidate", "case"]);
126
+ return new Set(["skills", "case"]);
127
127
  }
128
128
  return new Set();
129
129
  }
130
130
  function expectedInputMountPath(purpose, name) {
131
- if (purpose === "improve" && name === "candidate") {
131
+ if (purpose === "improve" && name === "skill") {
132
132
  return "/workspace";
133
133
  }
134
134
  return `/workspace/input/${name}`;
135
135
  }
136
136
  function expectedInputWritable(purpose, name) {
137
- return purpose === "improve" && name === "candidate";
137
+ return purpose === "improve" && name === "skill";
138
138
  }
139
139
  function expectedOutputForPurpose(purpose) {
140
140
  if (purpose === "improve") {
141
- return "candidate_patch";
141
+ return "skill_patch";
142
142
  }
143
143
  if (purpose === "attempt") {
144
144
  return "result";
@@ -153,20 +153,20 @@ export function assertWorkbenchExecutionIsolation(execution) {
153
153
  }
154
154
  function outputAllowedForPurpose(purpose, output) {
155
155
  if (purpose === "improve") {
156
- return output.schema === "workbench.candidate_patch.v1";
156
+ return output.schema === "workbench.skill_patch.v1";
157
157
  }
158
158
  if (purpose === "attempt") {
159
159
  return output.schema === "workbench.result.v1";
160
160
  }
161
161
  return false;
162
162
  }
163
- function normalizeCandidatePatch(value, execution, contract, issues) {
163
+ function normalizeSkillPatch(value, execution, contract, issues) {
164
164
  const record = readRecord(value, contract.name, issues);
165
165
  const files = normalizeSnapshotFiles(record?.files, `${contract.name}.files`, issues);
166
166
  const fileChanges = normalizeStringArray(record?.fileChanges, `${contract.name}.fileChanges`, issues);
167
167
  const edits = normalizeMetadataStringArray(execution.metadata.edits);
168
168
  if (edits.length === 0) {
169
- issues.push(`Execution ${execution.id} candidate patch validation requires metadata.edits.`);
169
+ issues.push(`Execution ${execution.id} skill patch validation requires metadata.edits.`);
170
170
  }
171
171
  for (const file of files) {
172
172
  if (!isAllowedEditPath(file.path, edits)) {
@@ -29,7 +29,7 @@ export interface WorkbenchExecutionRuntimeInput {
29
29
  runtimeControlOperation?: WorkbenchRuntimeControlOperationSequenceRequest;
30
30
  }
31
31
  export interface WorkbenchWorkloadStepCommand {
32
- kind: "improver" | "candidate" | "engine";
32
+ kind: "improver" | "skill" | "engine";
33
33
  label: string;
34
34
  operation: WorkbenchAdapterOperation;
35
35
  executor: WorkbenchAdapterOperationExecutor;
@@ -1 +1 @@
1
- {"version":3,"file":"execution-runtime-types.d.ts","sourceRoot":"","sources":["../src/execution-runtime-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iCAAiC,EACjC,kBAAkB,EAClB,IAAI,EACJ,mBAAmB,EACnB,0BAA0B,EAC3B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,gCAAgC,EACjC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EACV,0BAA0B,EAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,yBAAyB,EACzB,iCAAiC,EACjC,wBAAwB,EACxB,+CAA+C,EAChD,MAAM,kCAAkC,CAAC;AAE1C,MAAM,WAAW,8BAA8B;IAC7C,GAAG,EAAE,kBAAkB,CAAC;IACxB,IAAI,EAAE,cAAc,CAAC;IACrB,kBAAkB,CAAC,EAAE,IAAI,CAAC,iCAAiC,EAAE,IAAI,GAAG,UAAU,GAAG,YAAY,GAAG,MAAM,CAAC,CAAC;IACxG,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,SAAS,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC1C,kBAAkB,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACnD,WAAW,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC5C,YAAY,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC9C,UAAU,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mBAAmB,CAAC,EAAE,SAAS,0BAA0B,EAAE,CAAC;IAC5D,qBAAqB,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,0BAA0B,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3F,gBAAgB,CAAC,EAAE,SAAS,wBAAwB,EAAE,CAAC;IACvD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,QAAQ,CAAC,EAAE,gCAAgC,CAAC;IAC5C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uBAAuB,CAAC,EAAE,+CAA+C,CAAC;CAC3E;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,yBAAyB,CAAC;IACrC,QAAQ,EAAE,iCAAiC,CAAC;IAC5C,OAAO,CAAC,EAAE,0BAA0B,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB"}
1
+ {"version":3,"file":"execution-runtime-types.d.ts","sourceRoot":"","sources":["../src/execution-runtime-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iCAAiC,EACjC,kBAAkB,EAClB,IAAI,EACJ,mBAAmB,EACnB,0BAA0B,EAC3B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,gCAAgC,EACjC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EACV,0BAA0B,EAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,yBAAyB,EACzB,iCAAiC,EACjC,wBAAwB,EACxB,+CAA+C,EAChD,MAAM,kCAAkC,CAAC;AAE1C,MAAM,WAAW,8BAA8B;IAC7C,GAAG,EAAE,kBAAkB,CAAC;IACxB,IAAI,EAAE,cAAc,CAAC;IACrB,kBAAkB,CAAC,EAAE,IAAI,CAAC,iCAAiC,EAAE,IAAI,GAAG,UAAU,GAAG,YAAY,GAAG,MAAM,CAAC,CAAC;IACxG,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,SAAS,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC1C,kBAAkB,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACnD,WAAW,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC5C,YAAY,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC9C,UAAU,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mBAAmB,CAAC,EAAE,SAAS,0BAA0B,EAAE,CAAC;IAC5D,qBAAqB,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,0BAA0B,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3F,gBAAgB,CAAC,EAAE,SAAS,wBAAwB,EAAE,CAAC;IACvD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,IAAI,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,QAAQ,CAAC,EAAE,gCAAgC,CAAC;IAC5C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uBAAuB,CAAC,EAAE,+CAA+C,CAAC;CAC3E;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,yBAAyB,CAAC;IACrC,QAAQ,EAAE,iCAAiC,CAAC;IAC5C,OAAO,CAAC,EAAE,0BAA0B,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB"}
@@ -11,15 +11,16 @@ export interface WorkbenchExecutionDagResult {
11
11
  startedJobCount: number;
12
12
  cancelledJobCount: number;
13
13
  }
14
+ type WorkbenchExecutionDagJobHook = (job: RemoteWorkbenchJob) => void | Promise<void>;
14
15
  export interface WorkbenchExecutionDagRunInput {
15
16
  jobs: readonly RemoteWorkbenchJob[];
16
17
  capacity: WorkbenchExecutionDagCapacity;
17
18
  sandboxBackend: WorkbenchSandboxBackendName;
18
19
  executeJob: (job: RemoteWorkbenchJob) => Promise<RemoteWorkbenchJob>;
19
20
  now?: () => string;
20
- onJobQueued?: (job: RemoteWorkbenchJob) => void;
21
- onJobStarted?: (job: RemoteWorkbenchJob) => void;
22
- onJobFinished?: (job: RemoteWorkbenchJob) => void;
21
+ onJobQueued?: WorkbenchExecutionDagJobHook;
22
+ onJobStarted?: WorkbenchExecutionDagJobHook;
23
+ onJobFinished?: WorkbenchExecutionDagJobHook;
23
24
  }
24
25
  export declare function runWorkbenchExecutionDag(args: WorkbenchExecutionDagRunInput): Promise<WorkbenchExecutionDagResult>;
25
26
  export declare function workbenchJobDependencies(job: RemoteWorkbenchJob): string[];
@@ -28,4 +29,5 @@ export declare function workbenchJobHostCost(job: RemoteWorkbenchJob, backend: W
28
29
  export declare function addCapacity(left: WorkbenchExecutionDagCapacity, right: WorkbenchExecutionDagCapacity): WorkbenchExecutionDagCapacity;
29
30
  export declare function subtractCapacity(left: WorkbenchExecutionDagCapacity, right: WorkbenchExecutionDagCapacity): WorkbenchExecutionDagCapacity;
30
31
  export declare function capacityFits(available: WorkbenchExecutionDagCapacity, cost: WorkbenchExecutionDagCapacity): boolean;
32
+ export {};
31
33
  //# sourceMappingURL=execution-scheduler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"execution-scheduler.d.ts","sourceRoot":"","sources":["../src/execution-scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAEnB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,gCAAgC,EACrC,KAAK,2BAA2B,EACjC,MAAM,6BAA6B,CAAC;AAErC,MAAM,WAAW,6BAA6B;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,kBAAkB,EAAE,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACpC,QAAQ,EAAE,6BAA6B,CAAC;IACxC,cAAc,EAAE,2BAA2B,CAAC;IAC5C,UAAU,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAChD,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACjD,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,IAAI,CAAC;CACnD;AASD,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,6BAA6B,GAClC,OAAO,CAAC,2BAA2B,CAAC,CAuLtC;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAM1E;AAED,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,kBAAkB,GACtB,gCAAgC,CASlC;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,kBAAkB,EACvB,OAAO,EAAE,2BAA2B,GACnC,sBAAsB,CAExB;AAED,wBAAgB,WAAW,CACzB,IAAI,EAAE,6BAA6B,EACnC,KAAK,EAAE,6BAA6B,GACnC,6BAA6B,CAM/B;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,6BAA6B,EACnC,KAAK,EAAE,6BAA6B,GACnC,6BAA6B,CAM/B;AAED,wBAAgB,YAAY,CAC1B,SAAS,EAAE,6BAA6B,EACxC,IAAI,EAAE,6BAA6B,GAClC,OAAO,CAIT"}
1
+ {"version":3,"file":"execution-scheduler.d.ts","sourceRoot":"","sources":["../src/execution-scheduler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAEnB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,gCAAgC,EACrC,KAAK,2BAA2B,EACjC,MAAM,6BAA6B,CAAC;AAErC,MAAM,WAAW,6BAA6B;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,kBAAkB,EAAE,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,KAAK,4BAA4B,GAAG,CAAC,GAAG,EAAE,kBAAkB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEtF,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACpC,QAAQ,EAAE,6BAA6B,CAAC;IACxC,cAAc,EAAE,2BAA2B,CAAC;IAC5C,UAAU,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,4BAA4B,CAAC;IAC3C,YAAY,CAAC,EAAE,4BAA4B,CAAC;IAC5C,aAAa,CAAC,EAAE,4BAA4B,CAAC;CAC9C;AASD,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,6BAA6B,GAClC,OAAO,CAAC,2BAA2B,CAAC,CAuMtC;AAYD,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAM1E;AAED,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,kBAAkB,GACtB,gCAAgC,CAYlC;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,kBAAkB,EACvB,OAAO,EAAE,2BAA2B,GACnC,sBAAsB,CAExB;AAED,wBAAgB,WAAW,CACzB,IAAI,EAAE,6BAA6B,EACnC,KAAK,EAAE,6BAA6B,GACnC,6BAA6B,CAM/B;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,6BAA6B,EACnC,KAAK,EAAE,6BAA6B,GACnC,6BAA6B,CAM/B;AAED,wBAAgB,YAAY,CAC1B,SAAS,EAAE,6BAA6B,EACxC,IAAI,EAAE,6BAA6B,GAClC,OAAO,CAIT"}