-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathreviewSummary.ts
53 lines (46 loc) · 1.28 KB
/
reviewSummary.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import {
logger,
metadata,
task,
wait,
WaitpointTimeoutError,
} from "@trigger.dev/sdk";
export type ReviewPayload =
| {
approved: true;
approvedAt: Date;
approvedBy: string;
}
| {
approved: false;
rejectedAt: Date;
rejectedBy: string;
reason: string;
};
export type ReviewStatus = "pending" | "approved" | "rejected" | "timeout";
export const reviewSummary = task({
id: "review-summary",
run: async (payload: {
audioSummaryUrl: string;
waitpointTokenId: string;
}) => {
metadata.set("waitpointTokenId", payload.waitpointTokenId);
metadata.set("audioSummaryUrl", payload.audioSummaryUrl);
metadata.set("reviewStatus", "pending" satisfies ReviewStatus);
const result = await wait.forToken<ReviewPayload>({
id: payload.waitpointTokenId,
});
if (!result.ok) {
if (result.error instanceof WaitpointTimeoutError) {
metadata.set("reviewStatus", "timeout" satisfies ReviewStatus);
logger.warn("Review summary waitpoint timed out");
}
throw result.error;
}
metadata.set(
"reviewStatus",
(result.output.approved ? "approved" : "rejected") satisfies ReviewStatus
);
return { ...result.output, audioSummaryUrl: payload.audioSummaryUrl };
},
});