diff --git a/apps/webapp/app/v3/mollifier/mollifierMollify.server.ts b/apps/webapp/app/v3/mollifier/mollifierMollify.server.ts new file mode 100644 index 000000000..6e9356755 --- /dev/null +++ b/apps/webapp/app/v3/mollifier/mollifierMollify.server.ts @@ -0,0 +1,46 @@ +import type { MollifierBuffer } from "@trigger.dev/redis-worker"; +import { serialiseMollifierSnapshot, type MollifierSnapshot } from "./mollifierSnapshot.server"; +import type { TripDecision } from "./mollifierGate.server"; + +export type MollifyNotice = { + code: "mollifier.queued"; + message: string; + docs: string; +}; + +export type MollifySyntheticResult = { + run: { friendlyId: string }; + error: undefined; + isCached: false; + notice: MollifyNotice; +}; + +const NOTICE: MollifyNotice = { + code: "mollifier.queued", + message: + "Trigger accepted into burst buffer. Consider batchTrigger for fan-outs of 100+.", + docs: "https://trigger.dev/docs/triggering#burst-handling", +}; + +export async function mollifyTrigger(args: { + runFriendlyId: string; + environmentId: string; + organizationId: string; + engineTriggerInput: MollifierSnapshot; + decision: Extract; + buffer: MollifierBuffer; +}): Promise { + await args.buffer.accept({ + runId: args.runFriendlyId, + envId: args.environmentId, + orgId: args.organizationId, + payload: serialiseMollifierSnapshot(args.engineTriggerInput), + }); + + return { + run: { friendlyId: args.runFriendlyId }, + error: undefined, + isCached: false, + notice: NOTICE, + }; +}