Skip to content

Commit 16b344d

Browse files
committed
update supervisor and schema
1 parent 52a57a4 commit 16b344d

File tree

5 files changed

+49
-8
lines changed

5 files changed

+49
-8
lines changed

apps/supervisor/src/workloadServer/index.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import {
1717
WorkloadRunAttemptStartRequestBody,
1818
type WorkloadRunAttemptStartResponseBody,
1919
type WorkloadRunLatestSnapshotResponseBody,
20+
WorkloadRunSnapshotsSinceResponseBody,
2021
type WorkloadServerToClientEvents,
2122
type WorkloadSuspendRunResponseBody,
2223
} from "@trigger.dev/core/v3/workers";
@@ -341,6 +342,31 @@ export class WorkloadServer extends EventEmitter<WorkloadServerEvents> {
341342
} satisfies WorkloadRunLatestSnapshotResponseBody);
342343
},
343344
})
345+
.route(
346+
"/api/v1/workload-actions/runs/:runFriendlyId/snapshots/since/:snapshotFriendlyId",
347+
"GET",
348+
{
349+
paramsSchema: WorkloadActionParams,
350+
handler: async ({ req, reply, params }) => {
351+
const sinceSnapshotResponse = await this.workerClient.getSnapshotsSince(
352+
params.runFriendlyId,
353+
params.snapshotFriendlyId,
354+
this.runnerIdFromRequest(req)
355+
);
356+
357+
if (!sinceSnapshotResponse.success) {
358+
console.error("Failed to get snapshots since", {
359+
runId: params.runFriendlyId,
360+
error: sinceSnapshotResponse.error,
361+
});
362+
reply.empty(500);
363+
return;
364+
}
365+
366+
reply.json(sinceSnapshotResponse.data satisfies WorkloadRunSnapshotsSinceResponseBody);
367+
},
368+
}
369+
)
344370
.route("/api/v1/workload-actions/runs/:runFriendlyId/logs/debug", "POST", {
345371
paramsSchema: WorkloadActionParams.pick({ runFriendlyId: true }),
346372
bodySchema: WorkloadDebugLogRequestBody,

apps/webapp/app/routes/engine.v1.worker-actions.runs.$runFriendlyId.snapshots.since.$snapshotId.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@ export const loader = createLoaderWorkerApiRoute(
1616
}): Promise<TypedResponse<WorkerApiRunSnapshotsSinceResponseBody>> => {
1717
const { runFriendlyId, snapshotId } = params;
1818

19-
const executions = await authenticatedWorker.getSnapshotsSince({
19+
const snapshots = await authenticatedWorker.getSnapshotsSince({
2020
runFriendlyId,
2121
snapshotId,
2222
});
2323

24-
if (!executions) {
24+
if (!snapshots) {
2525
throw new Error("Failed to retrieve snapshots since given snapshot");
2626
}
2727

28-
return json({ executions });
28+
return json({ snapshots });
2929
}
3030
);

packages/cli-v3/src/entryPoints/managed/execution.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1105,22 +1105,22 @@ export class RunExecution {
11051105
return;
11061106
}
11071107

1108-
const { executions } = response.data;
1108+
const { snapshots } = response.data;
11091109

1110-
if (!executions.length) {
1110+
if (!snapshots.length) {
11111111
this.sendDebugLog(`fetchAndProcessSnapshotChanges: no new snapshots`, { source });
11121112
return;
11131113
}
11141114

11151115
// Only act on the last snapshot
1116-
const lastSnapshot = executions[executions.length - 1];
1116+
const lastSnapshot = snapshots[snapshots.length - 1];
11171117

11181118
if (!lastSnapshot) {
11191119
this.sendDebugLog(`fetchAndProcessSnapshotChanges: no last snapshot`, { source });
11201120
return;
11211121
}
11221122

1123-
const previousSnapshots = executions.slice(0, -1);
1123+
const previousSnapshots = snapshots.slice(0, -1);
11241124

11251125
// If any previous snapshot is QUEUED or SUSPENDED, deprecate this worker
11261126
const deprecatedStatus: TaskRunExecutionStatus[] = ["QUEUED", "SUSPENDED"];

packages/core/src/v3/runEngineWorker/supervisor/http.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import {
1717
WorkerApiDebugLogBody,
1818
WorkerApiSuspendRunRequestBody,
1919
WorkerApiSuspendRunResponseBody,
20+
WorkerApiRunSnapshotsSinceResponseBody,
2021
} from "./schemas.js";
2122
import { SupervisorClientCommonOptions } from "./types.js";
2223
import { getDefaultWorkerHeaders } from "./util.js";
@@ -185,6 +186,20 @@ export class SupervisorHttpClient {
185186
);
186187
}
187188

189+
async getSnapshotsSince(runId: string, snapshotId: string, runnerId?: string) {
190+
return wrapZodFetch(
191+
WorkerApiRunSnapshotsSinceResponseBody,
192+
`${this.apiUrl}/engine/v1/worker-actions/runs/${runId}/snapshots/since/${snapshotId}`,
193+
{
194+
method: "GET",
195+
headers: {
196+
...this.defaultHeaders,
197+
...this.runnerIdHeader(runnerId),
198+
},
199+
}
200+
);
201+
}
202+
188203
async sendDebugLog(runId: string, body: WorkerApiDebugLogBody, runnerId?: string): Promise<void> {
189204
try {
190205
const res = await wrapZodFetch(

packages/core/src/v3/runEngineWorker/supervisor/schemas.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ export type WorkerApiSuspendCompletionResponseBody = z.infer<
164164
>;
165165

166166
export const WorkerApiRunSnapshotsSinceResponseBody = z.object({
167-
executions: z.array(RunExecutionData),
167+
snapshots: z.array(RunExecutionData),
168168
});
169169
export type WorkerApiRunSnapshotsSinceResponseBody = z.infer<
170170
typeof WorkerApiRunSnapshotsSinceResponseBody

0 commit comments

Comments
 (0)