@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.
- package/dist/coded-errors.d.ts +27 -0
- package/dist/coded-errors.d.ts.map +1 -0
- package/dist/coded-errors.js +52 -0
- package/dist/execution-events.d.ts +5 -1
- package/dist/execution-events.d.ts.map +1 -1
- package/dist/execution-events.js +13 -3
- package/dist/execution-graph.d.ts +4 -3
- package/dist/execution-graph.d.ts.map +1 -1
- package/dist/execution-graph.js +15 -14
- package/dist/execution-jobs.d.ts +5 -20
- package/dist/execution-jobs.d.ts.map +1 -1
- package/dist/execution-jobs.js +7 -91
- package/dist/execution-outputs.d.ts +2 -2
- package/dist/execution-outputs.d.ts.map +1 -1
- package/dist/execution-outputs.js +10 -10
- package/dist/execution-runtime-types.d.ts +1 -1
- package/dist/execution-runtime-types.d.ts.map +1 -1
- package/dist/execution-scheduler.d.ts +5 -3
- package/dist/execution-scheduler.d.ts.map +1 -1
- package/dist/execution-scheduler.js +33 -9
- package/dist/execution-traces.js +1 -1
- package/dist/generic-spec.d.ts +7 -61
- package/dist/generic-spec.d.ts.map +1 -1
- package/dist/generic-spec.js +0 -679
- package/dist/index.d.ts +377 -220
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7887 -3881
- package/dist/remote-model.d.ts +17 -0
- package/dist/remote-model.d.ts.map +1 -0
- package/dist/remote-model.js +86 -0
- package/dist/runtime-dockerfile.d.ts +1 -1
- package/dist/runtime-dockerfile.d.ts.map +1 -1
- package/dist/runtime-dockerfile.js +4 -4
- package/dist/sandbox-backends/docker.d.ts.map +1 -1
- package/dist/sandbox-backends/docker.js +34 -16
- package/dist/sandbox-inputs.js +3 -3
- package/dist/sandbox-plane.d.ts.map +1 -1
- package/dist/sandbox-plane.js +13 -9
- package/dist/skill-patch.d.ts +8 -0
- package/dist/skill-patch.d.ts.map +1 -0
- package/dist/{candidate-patch.js → skill-patch.js} +5 -5
- package/package.json +3 -3
- package/worker/sandbox-adapter-runner.cjs +2 -2
- package/dist/candidate-patch.d.ts +0 -8
- package/dist/candidate-patch.d.ts.map +0 -1
- package/dist/execution-evidence.d.ts +0 -22
- package/dist/execution-evidence.d.ts.map +0 -1
- package/dist/execution-evidence.js +0 -302
- package/dist/inspection.d.ts +0 -117
- package/dist/inspection.d.ts.map +0 -1
- 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;
|
|
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"}
|
package/dist/execution-events.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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"}
|
package/dist/execution-graph.js
CHANGED
|
@@ -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
|
|
7
|
-
const caseRef = input.caseRef ?? `workbench://
|
|
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.
|
|
23
|
-
throw new Error("
|
|
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("
|
|
31
|
-
inputRef("traces", `workbench://
|
|
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("
|
|
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
|
-
|
|
39
|
-
edits: input.spec.
|
|
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("
|
|
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
|
-
}),
|
|
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
|
-
|
|
81
|
+
versionId: args.input.versionId,
|
|
81
82
|
purpose: args.purpose,
|
|
82
83
|
adapter: args.adapter,
|
|
83
84
|
sandbox: args.input.environmentRef
|
package/dist/execution-jobs.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export declare function planWorkbenchExecutionJobsForPurpose(args: {
|
|
|
19
19
|
ownerUserId: string;
|
|
20
20
|
projectId: string;
|
|
21
21
|
runId: string;
|
|
22
|
-
|
|
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
|
-
|
|
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":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,IAAI,EACJ,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,kCAAkC,CAAC;AAK1C,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,SAAS,CAAC;AAEtD,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,wBAAgB,4BAA4B,CAAC,IAAI,EAAE;IACjD,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,MAAM,CAMT;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE;IACjD,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,MAAM,GAAG,IAAI,CAchB;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAEvE;AAED,wBAAgB,oCAAoC,CAAC,IAAI,EAAE;IACzD,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,
|
|
1
|
+
{"version":3,"file":"execution-jobs.d.ts","sourceRoot":"","sources":["../src/execution-jobs.ts"],"names":[],"mappings":"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"}
|
package/dist/execution-jobs.js
CHANGED
|
@@ -46,13 +46,16 @@ export function planWorkbenchExecutionJobsForPurpose(args) {
|
|
|
46
46
|
ownerUserId: args.ownerUserId,
|
|
47
47
|
projectId: args.projectId,
|
|
48
48
|
runId: args.runId,
|
|
49
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
1
|
+
import type { Json, WorkbenchSkillPatch, WorkbenchExecutionSpec, WorkbenchResult } from "@workbench-ai/workbench-contract";
|
|
2
2
|
export interface WorkbenchExecutionOutputPayloads {
|
|
3
|
-
|
|
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,
|
|
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.
|
|
24
|
-
validated.
|
|
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(["
|
|
123
|
+
return new Set(["skill", "traces"]);
|
|
124
124
|
}
|
|
125
125
|
if (purpose === "attempt") {
|
|
126
|
-
return new Set(["
|
|
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 === "
|
|
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 === "
|
|
137
|
+
return purpose === "improve" && name === "skill";
|
|
138
138
|
}
|
|
139
139
|
function expectedOutputForPurpose(purpose) {
|
|
140
140
|
if (purpose === "improve") {
|
|
141
|
-
return "
|
|
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.
|
|
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
|
|
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}
|
|
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" | "
|
|
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,
|
|
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?:
|
|
21
|
-
onJobStarted?:
|
|
22
|
-
onJobFinished?:
|
|
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,
|
|
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"}
|