Skip to content

Commit 446a94f

Browse files
committed
add engine version header to core api client requests
1 parent 9d24fc1 commit 446a94f

File tree

8 files changed

+39
-11
lines changed

8 files changed

+39
-11
lines changed

apps/webapp/app/routes/api.v1.tasks.$taskId.trigger.ts

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
import { json } from "@remix-run/server-runtime";
2-
import { generateJWT as internal_generateJWT, TriggerTaskRequestBody } from "@trigger.dev/core/v3";
2+
import {
3+
generateJWT as internal_generateJWT,
4+
RunEngineVersionSchema,
5+
TriggerTaskRequestBody,
6+
} from "@trigger.dev/core/v3";
37
import { TaskRun } from "@trigger.dev/database";
48
import { z } from "zod";
59
import { env } from "~/env.server";
@@ -21,6 +25,7 @@ export const HeadersSchema = z.object({
2125
"x-trigger-span-parent-as-link": z.coerce.number().nullish(),
2226
"x-trigger-worker": z.string().nullish(),
2327
"x-trigger-client": z.string().nullish(),
28+
"x-trigger-engine-version": RunEngineVersionSchema.nullish(),
2429
traceparent: z.string().optional(),
2530
tracestate: z.string().optional(),
2631
});
@@ -49,6 +54,7 @@ const { action, loader } = createActionApiRoute(
4954
tracestate,
5055
"x-trigger-worker": isFromWorker,
5156
"x-trigger-client": triggerClient,
57+
"x-trigger-engine-version": engineVersion,
5258
} = headers;
5359

5460
const service = new TriggerTaskService();
@@ -74,14 +80,20 @@ const { action, loader } = createActionApiRoute(
7480

7581
const idempotencyKeyExpiresAt = resolveIdempotencyKeyTTL(idempotencyKeyTTL);
7682

77-
const run = await service.call(params.taskId, authentication.environment, body, {
78-
idempotencyKey: idempotencyKey ?? undefined,
79-
idempotencyKeyExpiresAt: idempotencyKeyExpiresAt,
80-
triggerVersion: triggerVersion ?? undefined,
81-
traceContext,
82-
spanParentAsLink: spanParentAsLink === 1,
83-
oneTimeUseToken,
84-
});
83+
const run = await service.call(
84+
params.taskId,
85+
authentication.environment,
86+
body,
87+
{
88+
idempotencyKey: idempotencyKey ?? undefined,
89+
idempotencyKeyExpiresAt: idempotencyKeyExpiresAt,
90+
triggerVersion: triggerVersion ?? undefined,
91+
traceContext,
92+
spanParentAsLink: spanParentAsLink === 1,
93+
oneTimeUseToken,
94+
},
95+
engineVersion ?? undefined
96+
);
8597

8698
if (!run) {
8799
return json({ error: "Task not found" }, { status: 404 });

apps/webapp/app/routes/api.v1.tasks.batch.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ const { action, loader } = createActionApiRoute(
5858
"x-trigger-span-parent-as-link": spanParentAsLink,
5959
"x-trigger-worker": isFromWorker,
6060
"x-trigger-client": triggerClient,
61+
"x-trigger-engine-version": engineVersion,
6162
"batch-processing-strategy": batchProcessingStrategy,
6263
traceparent,
6364
tracestate,
@@ -87,7 +88,11 @@ const { action, loader } = createActionApiRoute(
8788
resolveIdempotencyKeyTTL(idempotencyKeyTTL) ??
8889
new Date(Date.now() + 24 * 60 * 60 * 1000 * 30);
8990

90-
const version = await determineEngineVersion({ environment: authentication.environment });
91+
const version = await determineEngineVersion({
92+
environment: authentication.environment,
93+
version: engineVersion ?? undefined,
94+
});
95+
9196
const service =
9297
version === "V1"
9398
? new BatchTriggerV2Service(batchProcessingStrategy ?? undefined)

packages/cli-v3/src/entryPoints/deploy-run-controller.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -879,7 +879,10 @@ class ProdWorker {
879879
this._taskRunProcess = new TaskRunProcess({
880880
workerManifest: this.workerManifest,
881881
env,
882-
serverWorker: execution.worker,
882+
serverWorker: {
883+
...execution.worker,
884+
engine: "V1",
885+
},
883886
payload: createAttempt.result.executionPayload,
884887
messageId: message.lazyPayload.messageId,
885888
});

packages/cli-v3/src/entryPoints/managed-run-controller.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -453,6 +453,7 @@ class ManagedRunController {
453453
id: "unmanaged",
454454
contentHash: env.TRIGGER_CONTENT_HASH,
455455
version: env.TRIGGER_DEPLOYMENT_VERSION,
456+
engine: "V2",
456457
},
457458
payload: {
458459
execution,

packages/cli-v3/src/entryPoints/unmanaged-run-controller.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ class UnmanagedRunController {
6565
id: "unmanaged",
6666
contentHash: env.TRIGGER_CONTENT_HASH,
6767
version: env.TRIGGER_DEPLOYMENT_VERSION,
68+
engine: "V2",
6869
},
6970
payload: {
7071
execution,

packages/core/src/v3/apiClient/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -692,6 +692,7 @@ export class ApiClient {
692692
"Content-Type": "application/json",
693693
Authorization: `Bearer ${this.accessToken}`,
694694
"trigger-version": VERSION,
695+
"x-trigger-engine-version": taskContext.worker?.engine ?? "V1",
695696
...Object.entries(additionalHeaders ?? {}).reduce(
696697
(acc, [key, value]) => {
697698
if (value !== undefined) {

packages/core/src/v3/schemas/messages.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
EnvironmentType,
1313
ProdTaskRunExecution,
1414
ProdTaskRunExecutionPayload,
15+
RunEngineVersionSchema,
1516
RuntimeWait,
1617
TaskRunExecutionLazyAttemptPayload,
1718
WaitReason,
@@ -103,6 +104,7 @@ export const ServerBackgroundWorker = z.object({
103104
id: z.string(),
104105
version: z.string(),
105106
contentHash: z.string(),
107+
engine: RunEngineVersionSchema.optional(),
106108
});
107109

108110
export type ServerBackgroundWorker = z.infer<typeof ServerBackgroundWorker>;

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import { MachineConfig, MachinePreset, TaskRunExecution } from "./common.js";
88
export const EnvironmentType = z.enum(["PRODUCTION", "STAGING", "DEVELOPMENT", "PREVIEW"]);
99
export type EnvironmentType = z.infer<typeof EnvironmentType>;
1010

11+
export const RunEngineVersionSchema = z.enum(["V1", "V2"]);
12+
1113
export const TaskRunExecutionPayload = z.object({
1214
execution: TaskRunExecution,
1315
traceContext: z.record(z.unknown()),
@@ -25,6 +27,7 @@ export const ProdTaskRunExecution = TaskRunExecution.extend({
2527
id: z.string(),
2628
contentHash: z.string(),
2729
version: z.string(),
30+
type: RunEngineVersionSchema.optional(),
2831
}),
2932
machine: MachinePreset.default({ name: "small-1x", cpu: 1, memory: 1, centsPerMs: 0 }),
3033
});

0 commit comments

Comments
 (0)