@workbench-ai/workbench-core 0.0.46 → 0.0.48

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 (39) hide show
  1. package/dist/execution-events.d.ts +2 -2
  2. package/dist/execution-events.d.ts.map +1 -1
  3. package/dist/execution-events.js +3 -3
  4. package/dist/{execution-phases.d.ts → execution-evidence.d.ts} +8 -7
  5. package/dist/execution-evidence.d.ts.map +1 -0
  6. package/dist/{execution-phases.js → execution-evidence.js} +91 -51
  7. package/dist/execution-graph.js +1 -2
  8. package/dist/execution-jobs.js +1 -1
  9. package/dist/execution-outputs.d.ts.map +1 -1
  10. package/dist/execution-outputs.js +5 -10
  11. package/dist/execution-runtime-types.d.ts +7 -3
  12. package/dist/execution-runtime-types.d.ts.map +1 -1
  13. package/dist/execution-traces.d.ts +11 -1
  14. package/dist/execution-traces.d.ts.map +1 -1
  15. package/dist/execution-traces.js +305 -2
  16. package/dist/generic-spec.d.ts +8 -3
  17. package/dist/generic-spec.d.ts.map +1 -1
  18. package/dist/generic-spec.js +26 -37
  19. package/dist/index.d.ts +22 -11
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +888 -218
  22. package/dist/runtime-dockerfile.d.ts +14 -0
  23. package/dist/runtime-dockerfile.d.ts.map +1 -0
  24. package/dist/runtime-dockerfile.js +65 -0
  25. package/dist/sandbox-backends/docker.d.ts.map +1 -1
  26. package/dist/sandbox-backends/docker.js +9 -12
  27. package/dist/sandbox-backends/index.d.ts.map +1 -1
  28. package/dist/sandbox-backends/index.js +2 -1
  29. package/dist/sandbox-inputs.d.ts.map +1 -1
  30. package/dist/sandbox-inputs.js +1 -0
  31. package/dist/sandbox-plane.d.ts +1 -0
  32. package/dist/sandbox-plane.d.ts.map +1 -1
  33. package/dist/sandbox-plane.js +12 -22
  34. package/dist/trace-files.d.ts +2 -2
  35. package/dist/trace-files.d.ts.map +1 -1
  36. package/dist/trace-files.js +4 -4
  37. package/package.json +3 -3
  38. package/worker/sandbox-adapter-runner.cjs +22 -13
  39. package/dist/execution-phases.d.ts.map +0 -1
@@ -29,8 +29,8 @@ export interface WorkbenchExecutionEventPublisher {
29
29
  }
30
30
  export declare const WORKBENCH_PROGRESS_STDOUT_PREFIX = "__WORKBENCH_PROGRESS__";
31
31
  export declare function createWorkbenchExecutionEventPublisher(context: WorkbenchExecutionEventPublisherContext): WorkbenchExecutionEventPublisher;
32
- export declare function publishCommandPhaseEvent(publisher: WorkbenchExecutionEventPublisher | undefined, args: {
33
- phase: string;
32
+ export declare function publishCommandStepEvent(publisher: WorkbenchExecutionEventPublisher | undefined, args: {
33
+ step: string;
34
34
  status: "started" | "succeeded" | "failed";
35
35
  role?: WorkbenchExecutionEvent["role"];
36
36
  exitCode?: number;
@@ -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,wBAAwB,CAC5C,SAAS,EAAE,gCAAgC,GAAG,SAAS,EACvD,IAAI,EAAE;IACJ,KAAK,EAAE,MAAM,CAAC;IACd,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,IAAI,EAAE,wBAAwB,CAAC;QAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,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,GACxC,OAAO,CAAC,IAAI,CAAC,CAEf"}
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,IAAI,EAAE,wBAAwB,CAAC;QAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,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,GACxC,OAAO,CAAC,IAAI,CAAC,CAEf"}
@@ -38,16 +38,16 @@ export function createWorkbenchExecutionEventPublisher(context) {
38
38
  },
39
39
  };
40
40
  }
41
- export async function publishCommandPhaseEvent(publisher, args) {
41
+ export async function publishCommandStepEvent(publisher, args) {
42
42
  if (!publisher?.enabled) {
43
43
  return;
44
44
  }
45
45
  await publisher.publish([{
46
46
  source: "command",
47
47
  ...(args.role ? { role: args.role } : {}),
48
- schema: "workbench.execution.phase.v1",
48
+ schema: "workbench.execution.step.v1",
49
49
  payload: {
50
- phase: args.phase,
50
+ step: args.step,
51
51
  status: args.status,
52
52
  ...(typeof args.exitCode === "number" ? { exitCode: args.exitCode } : {}),
53
53
  ...(args.error ? { error: args.error } : {}),
@@ -1,21 +1,22 @@
1
- import type { SubjectCaseReview, HostedWorkbenchJob, HostedWorkbenchJobStatus, WorkbenchExecutionEventRole, WorkbenchExecutionSpec, WorkbenchExecutionTrace, WorkbenchTracePhase } from "@workbench-ai/workbench-contract";
2
- export declare function buildSubjectCasePhaseRefs(args: {
1
+ import type { SubjectCaseReview, HostedWorkbenchJob, HostedWorkbenchJobStatus, WorkbenchExecutionEventRole, WorkbenchExecutionSpec, WorkbenchExecutionTrace, WorkbenchExecutionEvidence, WorkbenchTraceSession } from "@workbench-ai/workbench-contract";
2
+ export declare function buildSubjectCaseExecutionRefs(args: {
3
3
  jobs: readonly HostedWorkbenchJob[];
4
4
  subjectId: string;
5
5
  caseId: string;
6
6
  sampleIndex?: number;
7
- }): SubjectCaseReview["phases"];
8
- export declare function buildWorkbenchTracePhases(args: {
7
+ }): SubjectCaseReview["executions"];
8
+ export declare function buildWorkbenchExecutionEvidence(args: {
9
9
  jobs: readonly HostedWorkbenchJob[];
10
10
  traceIdPrefix: string;
11
11
  traceForJob: (job: HostedWorkbenchJob, role: WorkbenchExecutionEventRole) => WorkbenchExecutionTrace;
12
- }): WorkbenchTracePhase[];
12
+ traceSessionsForJob?: (job: HostedWorkbenchJob, role: WorkbenchExecutionEventRole) => WorkbenchTraceSession[];
13
+ }): WorkbenchExecutionEvidence[];
13
14
  export declare function readWorkbenchExecutionPurpose(job: HostedWorkbenchJob): WorkbenchExecutionSpec["purpose"] | null;
14
15
  export declare function readWorkbenchExecutionId(job: HostedWorkbenchJob): string | null;
15
16
  export declare function readWorkbenchExecutionMetadataString(job: HostedWorkbenchJob, key: string): string | null;
16
17
  export declare function readWorkbenchExecutionMetadataNumber(job: HostedWorkbenchJob, key: string): number | null;
17
- export declare function isWorkbenchPhaseActive(phase: SubjectCaseReview["phases"][number]): boolean;
18
+ export declare function isWorkbenchExecutionActive(execution: SubjectCaseReview["executions"][number]): boolean;
18
19
  export declare function resolveWorkbenchJobGroupStatus(jobs: readonly {
19
20
  status: HostedWorkbenchJobStatus;
20
21
  }[]): HostedWorkbenchJobStatus;
21
- //# sourceMappingURL=execution-phases.d.ts.map
22
+ //# sourceMappingURL=execution-evidence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-evidence.d.ts","sourceRoot":"","sources":["../src/execution-evidence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EAExB,2BAA2B,EAC3B,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,EAC1B,qBAAqB,EACtB,MAAM,kCAAkC,CAAC;AAI1C,wBAAgB,6BAA6B,CAAC,IAAI,EAAE;IAClD,IAAI,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAgElC;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE;IACpD,IAAI,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,CACX,GAAG,EAAE,kBAAkB,EACvB,IAAI,EAAE,2BAA2B,KAC9B,uBAAuB,CAAC;IAC7B,mBAAmB,CAAC,EAAE,CACpB,GAAG,EAAE,kBAAkB,EACvB,IAAI,EAAE,2BAA2B,KAC9B,qBAAqB,EAAE,CAAC;CAC9B,GAAG,0BAA0B,EAAE,CAgF/B;AAED,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,kBAAkB,GACtB,sBAAsB,CAAC,SAAS,CAAC,GAAG,IAAI,CAQ1C;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,kBAAkB,GAAG,MAAM,GAAG,IAAI,CAG/E;AAED,wBAAgB,oCAAoC,CAClD,GAAG,EAAE,kBAAkB,EACvB,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,IAAI,CAGf;AAED,wBAAgB,oCAAoC,CAClD,GAAG,EAAE,kBAAkB,EACvB,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,IAAI,CAGf;AAED,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,GACjD,OAAO,CAET;AAED,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,SAAS;IAAE,MAAM,EAAE,wBAAwB,CAAA;CAAE,EAAE,GACpD,wBAAwB,CAc1B"}
@@ -1,32 +1,32 @@
1
1
  import { mergeWorkbenchExecutionTracesByJob } from "./execution-traces.js";
2
- export function buildSubjectCasePhaseRefs(args) {
2
+ export function buildSubjectCaseExecutionRefs(args) {
3
3
  const groups = new Map();
4
4
  for (const job of args.jobs) {
5
- const phase = readWorkbenchExecutionPurpose(job);
5
+ const kind = readWorkbenchExecutionPurpose(job);
6
6
  const jobSubjectId = job.subjectId ?? readWorkbenchExecutionMetadataString(job, "subjectId");
7
7
  const jobCaseId = readWorkbenchExecutionMetadataString(job, "caseId");
8
8
  if (jobSubjectId === args.subjectId &&
9
- phase === "attempt" &&
9
+ kind === "attempt" &&
10
10
  caseReviewCaseIdsMatch(jobCaseId, args.caseId) &&
11
11
  caseReviewSampleIndicesMatch(readWorkbenchExecutionMetadataNumber(job, "sampleIndex"), args.sampleIndex)) {
12
12
  const key = [
13
13
  job.runId,
14
- phase,
14
+ kind,
15
15
  jobCaseId ?? "",
16
16
  readWorkbenchExecutionMetadataNumber(job, "sampleIndex") ?? "",
17
17
  ].join("\0");
18
18
  groups.set(key, [...(groups.get(key) ?? []), job]);
19
19
  }
20
20
  }
21
- const phases = [...groups.values()]
22
- .map((group) => group.slice().sort(compareWorkbenchPhaseJobs))
21
+ const executions = [...groups.values()]
22
+ .map((group) => group.slice().sort(compareWorkbenchExecutionJobs))
23
23
  .flatMap((group) => {
24
24
  const first = group[0];
25
25
  if (!first) {
26
26
  return [];
27
27
  }
28
- const phase = readWorkbenchExecutionPurpose(first);
29
- if (phase !== "attempt") {
28
+ const kind = readWorkbenchExecutionPurpose(first);
29
+ if (kind !== "attempt") {
30
30
  return [];
31
31
  }
32
32
  const startedAt = minTimestamp(group.map((job) => job.startedAt));
@@ -36,23 +36,32 @@ export function buildSubjectCasePhaseRefs(args) {
36
36
  : null;
37
37
  return [{
38
38
  runId: first.runId,
39
- phase,
39
+ kind,
40
40
  role: "engine",
41
41
  status: resolveWorkbenchJobGroupStatus(group),
42
42
  jobIds: group.map((job) => job.id),
43
+ executionIds: group.flatMap((job) => {
44
+ const executionId = readWorkbenchExecutionId(job);
45
+ return executionId ? [executionId] : [];
46
+ }),
43
47
  createdAt: minTimestamp(group.map((job) => job.createdAt)) ?? first.createdAt,
44
48
  ...(startedAt ? { startedAt } : {}),
45
49
  ...(finishedAt ? { finishedAt } : {}),
46
50
  ...(durationMs !== null ? { durationMs } : {}),
51
+ ...optionalString("caseId", readWorkbenchExecutionMetadataString(first, "caseId")),
47
52
  ...optionalNumber("sampleIndex", readWorkbenchExecutionMetadataNumber(first, "sampleIndex")),
53
+ ...optionalNumber("attemptIndex", readWorkbenchExecutionMetadataNumber(first, "attemptIndex")),
48
54
  }];
49
55
  })
50
- .sort(compareSubjectCasePhases);
51
- return selectCurrentPhaseRun(phases);
56
+ .sort(compareSubjectCaseExecutions);
57
+ return selectCurrentExecutionRun(executions);
52
58
  }
53
- export function buildWorkbenchTracePhases(args) {
59
+ export function buildWorkbenchExecutionEvidence(args) {
54
60
  const groups = new Map();
55
61
  for (const job of args.jobs) {
62
+ if (isBaselineMaterializationJob(job)) {
63
+ continue;
64
+ }
56
65
  const purpose = readWorkbenchExecutionPurpose(job);
57
66
  if (!purpose) {
58
67
  continue;
@@ -79,27 +88,52 @@ export function buildWorkbenchTracePhases(args) {
79
88
  return [];
80
89
  }
81
90
  const role = traceRoleForPurpose(purpose);
91
+ const sessions = group.flatMap((job) => args.traceSessionsForJob
92
+ ? args.traceSessionsForJob(job, role)
93
+ : []);
94
+ const jobIds = group.map((job) => job.id);
95
+ const executionIds = group.flatMap((job) => {
96
+ const executionId = readWorkbenchExecutionId(job);
97
+ return executionId ? [executionId] : [];
98
+ });
82
99
  return [{
83
- phase: purpose,
100
+ id: [
101
+ purpose,
102
+ first.runId,
103
+ readWorkbenchExecutionMetadataString(first, "caseId") ?? "current",
104
+ readWorkbenchExecutionMetadataNumber(first, "sampleIndex") ?? "sample",
105
+ readWorkbenchExecutionMetadataNumber(first, "attemptIndex") ?? "attempt",
106
+ jobIds.join("_"),
107
+ ].join(":"),
108
+ kind: purpose,
84
109
  executionId: group.length === 1 ? readWorkbenchExecutionId(first) : null,
85
110
  role,
86
111
  status: resolveWorkbenchJobGroupStatus(group),
87
- jobIds: group.map((job) => job.id),
112
+ jobIds,
113
+ executionIds,
88
114
  ...(first.subjectId ? { subjectId: first.subjectId } : {}),
89
115
  ...optionalString("caseId", readWorkbenchExecutionMetadataString(first, "caseId")),
90
116
  ...optionalNumber("sampleIndex", readWorkbenchExecutionMetadataNumber(first, "sampleIndex")),
91
117
  ...optionalNumber("attemptIndex", readWorkbenchExecutionMetadataNumber(first, "attemptIndex")),
118
+ sessions,
92
119
  trace: mergeWorkbenchExecutionTracesByJob({
93
120
  traceIdPrefix: args.traceIdPrefix,
94
121
  stageId: purpose,
95
- jobs: group.map((job) => ({
96
- id: job.id,
97
- trace: args.traceForJob(job, role),
98
- })),
122
+ jobs: [
123
+ ...group.map((job) => ({
124
+ id: job.id,
125
+ trace: args.traceForJob(job, role),
126
+ })),
127
+ ...sessions.map((session) => ({
128
+ id: session.id,
129
+ jobId: session.jobId,
130
+ trace: session.trace,
131
+ })),
132
+ ],
99
133
  }),
100
134
  }];
101
135
  })
102
- .sort(compareWorkbenchTracePhases);
136
+ .sort(compareWorkbenchExecutionEvidence);
103
137
  }
104
138
  export function readWorkbenchExecutionPurpose(job) {
105
139
  if (job.kind !== "execute") {
@@ -122,8 +156,8 @@ export function readWorkbenchExecutionMetadataNumber(job, key) {
122
156
  const raw = readWorkbenchExecutionMetadataValue(job, key);
123
157
  return typeof raw === "number" && Number.isFinite(raw) ? raw : null;
124
158
  }
125
- export function isWorkbenchPhaseActive(phase) {
126
- return phase.status === "queued" || phase.status === "running";
159
+ export function isWorkbenchExecutionActive(execution) {
160
+ return execution.status === "queued" || execution.status === "running";
127
161
  }
128
162
  export function resolveWorkbenchJobGroupStatus(jobs) {
129
163
  if (jobs.some((job) => job.status === "running")) {
@@ -150,44 +184,50 @@ function readExecutionRecord(job) {
150
184
  const input = asRecord(job.input);
151
185
  return asRecord(input?.execution);
152
186
  }
153
- function caseReviewCaseIdsMatch(jobCaseId, reviewCaseId) {
187
+ function isBaselineMaterializationJob(job) {
188
+ const input = asRecord(job.input);
189
+ const execution = asRecord(input?.execution);
190
+ const metadata = asRecord(execution?.metadata);
191
+ return metadata?.baseline === true || input?.baseline === true;
192
+ }
193
+ function caseReviewCaseIdsMatch(jobCaseId, requestedCaseId) {
154
194
  return Boolean(jobCaseId) &&
155
- (jobCaseId === reviewCaseId || reviewCaseId.startsWith(`${jobCaseId}__`));
195
+ (jobCaseId === requestedCaseId || requestedCaseId.startsWith(`${jobCaseId}__`));
156
196
  }
157
197
  function caseReviewSampleIndicesMatch(jobSampleIndex, reviewSampleIndex) {
158
198
  return typeof reviewSampleIndex !== "number" || jobSampleIndex === reviewSampleIndex;
159
199
  }
160
- function selectCurrentPhaseRun(phases) {
161
- if (phases.length <= 1) {
162
- return phases;
200
+ function selectCurrentExecutionRun(executions) {
201
+ if (executions.length <= 1) {
202
+ return executions;
163
203
  }
164
- const activeRunId = phases
165
- .filter(isWorkbenchPhaseActive)
166
- .sort(comparePhaseRecency)[0]?.runId;
167
- const selectedRunId = activeRunId ?? phases.slice().sort(comparePhaseRecency)[0]?.runId;
204
+ const activeRunId = executions
205
+ .filter(isWorkbenchExecutionActive)
206
+ .sort(compareExecutionRecency)[0]?.runId;
207
+ const selectedRunId = activeRunId ?? executions.slice().sort(compareExecutionRecency)[0]?.runId;
168
208
  return selectedRunId
169
- ? phases.filter((phase) => phase.runId === selectedRunId)
170
- : phases;
209
+ ? executions.filter((execution) => execution.runId === selectedRunId)
210
+ : executions;
171
211
  }
172
- function compareSubjectCasePhases(left, right) {
173
- return (phasePurposeOrder(left.phase) - phasePurposeOrder(right.phase) ||
212
+ function compareSubjectCaseExecutions(left, right) {
213
+ return (executionKindOrder(left.kind) - executionKindOrder(right.kind) ||
174
214
  (left.sampleIndex ?? -1) - (right.sampleIndex ?? -1) ||
175
- readPhaseRecencyMs(right) - readPhaseRecencyMs(left));
215
+ readExecutionRecencyMs(right) - readExecutionRecencyMs(left));
176
216
  }
177
- function comparePhaseRecency(left, right) {
178
- return readPhaseRecencyMs(right) - readPhaseRecencyMs(left);
217
+ function compareExecutionRecency(left, right) {
218
+ return readExecutionRecencyMs(right) - readExecutionRecencyMs(left);
179
219
  }
180
- function compareWorkbenchPhaseJobs(left, right) {
181
- return (phasePurposeOrder(readWorkbenchExecutionPurpose(left)) -
182
- phasePurposeOrder(readWorkbenchExecutionPurpose(right)) ||
220
+ function compareWorkbenchExecutionJobs(left, right) {
221
+ return (executionKindOrder(readWorkbenchExecutionPurpose(left)) -
222
+ executionKindOrder(readWorkbenchExecutionPurpose(right)) ||
183
223
  (readWorkbenchExecutionMetadataNumber(left, "sampleIndex") ?? -1) -
184
224
  (readWorkbenchExecutionMetadataNumber(right, "sampleIndex") ?? -1) ||
185
225
  readJobRecencyMs(right) - readJobRecencyMs(left) ||
186
226
  left.id.localeCompare(right.id));
187
227
  }
188
228
  function compareWorkbenchTraceJobs(left, right) {
189
- return (phasePurposeOrder(readWorkbenchExecutionPurpose(left)) -
190
- phasePurposeOrder(readWorkbenchExecutionPurpose(right)) ||
229
+ return (executionKindOrder(readWorkbenchExecutionPurpose(left)) -
230
+ executionKindOrder(readWorkbenchExecutionPurpose(right)) ||
191
231
  String(readWorkbenchExecutionMetadataString(left, "caseId") ?? "").localeCompare(String(readWorkbenchExecutionMetadataString(right, "caseId") ?? "")) ||
192
232
  (readWorkbenchExecutionMetadataNumber(left, "sampleIndex") ?? -1) -
193
233
  (readWorkbenchExecutionMetadataNumber(right, "sampleIndex") ?? -1) ||
@@ -195,8 +235,8 @@ function compareWorkbenchTraceJobs(left, right) {
195
235
  (readWorkbenchExecutionMetadataNumber(right, "attemptIndex") ?? -1) ||
196
236
  left.id.localeCompare(right.id));
197
237
  }
198
- function compareWorkbenchTracePhases(left, right) {
199
- return (phasePurposeOrder(left.phase) - phasePurposeOrder(right.phase) ||
238
+ function compareWorkbenchExecutionEvidence(left, right) {
239
+ return (executionKindOrder(left.kind) - executionKindOrder(right.kind) ||
200
240
  String(left.caseId ?? "").localeCompare(String(right.caseId ?? "")) ||
201
241
  (left.sampleIndex ?? -1) - (right.sampleIndex ?? -1) ||
202
242
  (left.attemptIndex ?? -1) - (right.attemptIndex ?? -1) ||
@@ -208,19 +248,19 @@ function traceRoleForPurpose(purpose) {
208
248
  }
209
249
  return "engine";
210
250
  }
211
- function phasePurposeOrder(purpose) {
212
- if (purpose === "improve") {
251
+ function executionKindOrder(kind) {
252
+ if (kind === "improve") {
213
253
  return 0;
214
254
  }
215
- if (purpose === "attempt") {
255
+ if (kind === "attempt") {
216
256
  return 1;
217
257
  }
218
258
  return 3;
219
259
  }
220
- function readPhaseRecencyMs(phase) {
221
- return (parseTimestampMs(phase.finishedAt) ??
222
- parseTimestampMs(phase.startedAt) ??
223
- parseTimestampMs(phase.createdAt) ??
260
+ function readExecutionRecencyMs(execution) {
261
+ return (parseTimestampMs(execution.finishedAt) ??
262
+ parseTimestampMs(execution.startedAt) ??
263
+ parseTimestampMs(execution.createdAt) ??
224
264
  0);
225
265
  }
226
266
  function readJobRecencyMs(job) {
@@ -80,8 +80,7 @@ function createExecution(args) {
80
80
  subjectId: args.input.subjectId,
81
81
  purpose: args.purpose,
82
82
  adapter: args.adapter,
83
- sandbox: args.input.environmentRef &&
84
- runtimeSandboxRef(args.runtime) === runtimeSandboxRef(args.input.spec.environment)
83
+ sandbox: args.input.environmentRef
85
84
  ? {
86
85
  kind: "oci",
87
86
  ref: args.input.environmentRef,
@@ -76,7 +76,7 @@ export function engineCaseIds(engineCases) {
76
76
  export function engineCaseForCase(engineCases, caseId) {
77
77
  const engineCase = engineCases.find((bundle) => bundle.id === caseId);
78
78
  if (!engineCase) {
79
- throw new Error(`Task bundle not found for case ${caseId}.`);
79
+ throw new Error(`Engine case not found for case ${caseId}.`);
80
80
  }
81
81
  return engineCase;
82
82
  }
@@ -1 +1 @@
1
- {"version":3,"file":"execution-outputs.d.ts","sourceRoot":"","sources":["../src/execution-outputs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,IAAI,EAEJ,qBAAqB,EAErB,sBAAsB,EACtB,eAAe,EAChB,MAAM,kCAAkC,CAAC;AAI1C,MAAM,WAAW,gCAAgC;IAC/C,YAAY,CAAC,EAAE,qBAAqB,CAAC;IACrC,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,CAoFpG;AAsBD,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,qBAAqB,EAErB,sBAAsB,EACtB,eAAe,EAChB,MAAM,kCAAkC,CAAC;AAI1C,MAAM,WAAW,gCAAgC;IAC/C,YAAY,CAAC,EAAE,qBAAqB,CAAC;IACrC,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,CAkFpG;AAsBD,wBAAgB,iCAAiC,CAAC,SAAS,EAAE,sBAAsB,GAAG,IAAI,CAKzF"}
@@ -87,6 +87,7 @@ export function collectWorkbenchExecutionIsolationIssues(execution) {
87
87
  }
88
88
  const outputNames = new Set();
89
89
  const expectedOutput = expectedOutputForPurpose(execution.purpose);
90
+ const isRuntimeControlExecution = execution.metadata.runtimeControl === true;
90
91
  for (const output of execution.outputs) {
91
92
  if (outputNames.has(output.name)) {
92
93
  issues.push(`Execution ${execution.id} declares duplicate output ${output.name}.`);
@@ -102,7 +103,7 @@ export function collectWorkbenchExecutionIsolationIssues(execution) {
102
103
  issues.push(`Execution ${execution.id} cannot declare ${output.schema} for purpose ${execution.purpose}.`);
103
104
  }
104
105
  }
105
- if (expectedOutput !== null && !outputNames.has(expectedOutput)) {
106
+ if (expectedOutput !== null && !outputNames.has(expectedOutput) && !isRuntimeControlExecution) {
106
107
  issues.push(`Execution ${execution.id} missing required output ${expectedOutput} for purpose ${execution.purpose}.`);
107
108
  }
108
109
  const resources = execution.policy.resources;
@@ -111,9 +112,6 @@ export function collectWorkbenchExecutionIsolationIssues(execution) {
111
112
  issues.push(`Execution ${execution.id} policy.resources.${name} must be a positive number.`);
112
113
  }
113
114
  }
114
- if (execution.policy.network.egress === "allowlist" && (!execution.policy.network.allow || execution.policy.network.allow.length === 0)) {
115
- issues.push(`Execution ${execution.id} allowlist network policy must include at least one allowed host.`);
116
- }
117
115
  return issues;
118
116
  }
119
117
  function expectedInputsForPurpose(purpose) {
@@ -271,13 +269,10 @@ function normalizeCaseCriteria(value, label, issues) {
271
269
  if (!record || !criterionId || score === null) {
272
270
  return [];
273
271
  }
274
- const pass = record.pass === undefined
275
- ? score >= 0.5
276
- : typeof record.pass === "boolean"
277
- ? record.pass
278
- : null;
272
+ const pass = typeof record.pass === "boolean" ? record.pass : null;
279
273
  if (pass === null) {
280
274
  issues.push(`${itemLabel}.pass must be a boolean.`);
275
+ return [];
281
276
  }
282
277
  const errors = record.errors === undefined
283
278
  ? []
@@ -294,7 +289,7 @@ function normalizeCaseCriteria(value, label, issues) {
294
289
  criterion_id: criterionId,
295
290
  label: typeof record.label === "string" ? record.label : criterionId,
296
291
  score,
297
- pass: pass ?? false,
292
+ pass,
298
293
  ...(errors && errors.length > 0 ? { errors } : {}),
299
294
  ...(rationale ? { rationale } : {}),
300
295
  }];
@@ -2,7 +2,7 @@ import type { HostedWorkbenchEnvironmentVersion, HostedWorkbenchJob, Json, Surfa
2
2
  import type { GenericRunSpec, WorkbenchEngineCase } from "./generic-spec.ts";
3
3
  import type { WorkbenchExecutionProgressTarget } from "./execution-events.ts";
4
4
  import type { WorkbenchAdapterAuthBundle } from "./adapter-auth.ts";
5
- import type { WorkbenchAdapterOperation, WorkbenchAdapterManifest } from "@workbench-ai/workbench-protocol";
5
+ import type { WorkbenchAdapterOperation, WorkbenchAdapterOperationExecutor, WorkbenchAdapterManifest, WorkbenchRuntimeControlOperationSequenceRequest } from "@workbench-ai/workbench-protocol";
6
6
  export interface WorkbenchExecutionRuntimeInput {
7
7
  job: HostedWorkbenchJob;
8
8
  spec: GenericRunSpec;
@@ -11,6 +11,7 @@ export interface WorkbenchExecutionRuntimeInput {
11
11
  baseFiles: readonly SurfaceSnapshotFile[];
12
12
  engineResolveFiles: readonly SurfaceSnapshotFile[];
13
13
  engineCases: readonly WorkbenchEngineCase[];
14
+ adapterFiles?: readonly SurfaceSnapshotFile[];
14
15
  traceFiles?: readonly SurfaceSnapshotFile[];
15
16
  now?: string;
16
17
  adapterAuthProfiles?: readonly WorkbenchAdapterAuthBundle[];
@@ -18,16 +19,19 @@ export interface WorkbenchExecutionRuntimeInput {
18
19
  adapterAuthRoot?: string;
19
20
  adapterAuthRequest?: Json;
20
21
  adapterAuthEnv?: Record<string, string>;
22
+ adapterRuntimeEnv?: Record<string, string>;
21
23
  progress?: WorkbenchExecutionProgressTarget;
22
24
  runtimeRegistry?: string;
23
25
  pullImages?: boolean;
24
26
  workdir?: string;
25
27
  workspaceRoot?: string;
28
+ runtimeControlOperation?: WorkbenchRuntimeControlOperationSequenceRequest;
26
29
  }
27
- export interface WorkbenchWorkloadPhaseCommand {
28
- kind: "optimizer" | "runner" | "engine";
30
+ export interface WorkbenchWorkloadStepCommand {
31
+ kind: "optimizer" | "subject" | "engine";
29
32
  label: string;
30
33
  operation: WorkbenchAdapterOperation;
34
+ executor: WorkbenchAdapterOperationExecutor;
31
35
  adapter?: WorkbenchAdapterInvocation;
32
36
  command?: string;
33
37
  okExitCodes?: number[];
@@ -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,wBAAwB,EACzB,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,UAAU,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mBAAmB,CAAC,EAAE,SAAS,0BAA0B,EAAE,CAAC;IAC5D,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,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;CACxB;AAED,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,yBAAyB,CAAC;IACrC,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,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,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;IACzC,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,6 +1,7 @@
1
- import type { HostedWorkbenchJob, WorkbenchExecutionTrace } from "@workbench-ai/workbench-contract";
1
+ import type { HostedWorkbenchJob, SurfaceSnapshotFile, WorkbenchExecutionTrace, WorkbenchTraceSession } from "@workbench-ai/workbench-contract";
2
2
  export interface WorkbenchTraceMergeJob {
3
3
  id: string;
4
+ jobId?: string;
4
5
  trace: WorkbenchExecutionTrace;
5
6
  }
6
7
  export declare function finalizeWorkbenchExecutionTraceForJob(args: {
@@ -13,4 +14,13 @@ export declare function mergeWorkbenchExecutionTracesByJob(args: {
13
14
  stageId?: string | null;
14
15
  jobs: readonly WorkbenchTraceMergeJob[];
15
16
  }): WorkbenchExecutionTrace;
17
+ export declare function buildWorkbenchTraceSessionsFromFiles(args: {
18
+ job: HostedWorkbenchJob;
19
+ files: readonly SurfaceSnapshotFile[];
20
+ purpose?: string | null;
21
+ fallbackRole: WorkbenchTraceSession["role"];
22
+ }): WorkbenchTraceSession[];
23
+ export declare function combineWorkbenchTraceSessions(sessions: readonly WorkbenchTraceSession[]): WorkbenchExecutionTrace;
24
+ export declare function readWorkbenchExecutionTraceFiles(files: readonly SurfaceSnapshotFile[]): WorkbenchExecutionTrace | null;
25
+ export declare function traceSessionLabel(filePath: string, role: WorkbenchTraceSession["role"]): string;
16
26
  //# sourceMappingURL=execution-traces.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"execution-traces.d.ts","sourceRoot":"","sources":["../src/execution-traces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAElB,uBAAuB,EACxB,MAAM,kCAAkC,CAAC;AAE1C,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,uBAAuB,CAAC;CAChC;AAED,wBAAgB,qCAAqC,CAAC,IAAI,EAAE;IAC1D,GAAG,EAAE,kBAAkB,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,uBAAuB,CAAC;CAChC,GAAG,uBAAuB,CAsD1B;AAED,wBAAgB,kCAAkC,CAAC,IAAI,EAAE;IACvD,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACzC,GAAG,uBAAuB,CAoC1B"}
1
+ {"version":3,"file":"execution-traces.d.ts","sourceRoot":"","sources":["../src/execution-traces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAElB,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACtB,MAAM,kCAAkC,CAAC;AAE1C,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,uBAAuB,CAAC;CAChC;AAED,wBAAgB,qCAAqC,CAAC,IAAI,EAAE;IAC1D,GAAG,EAAE,kBAAkB,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,uBAAuB,CAAC;CAChC,GAAG,uBAAuB,CAsD1B;AAED,wBAAgB,kCAAkC,CAAC,IAAI,EAAE;IACvD,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACzC,GAAG,uBAAuB,CAqC1B;AAED,wBAAgB,oCAAoC,CAAC,IAAI,EAAE;IACzD,GAAG,EAAE,kBAAkB,CAAC;IACxB,KAAK,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC;CAC7C,GAAG,qBAAqB,EAAE,CA2B1B;AAED,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,SAAS,qBAAqB,EAAE,GACzC,uBAAuB,CAOzB;AAED,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,SAAS,mBAAmB,EAAE,GACpC,uBAAuB,GAAG,IAAI,CAiBhC;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,qBAAqB,CAAC,MAAM,CAAC,GAClC,MAAM,CAaR"}