Skip to content

Commit 6472427

Browse files
committed
we now convert schema to jsonSchema on the CLI side via the indexing
1 parent 66f136d commit 6472427

File tree

16 files changed

+75
-27
lines changed

16 files changed

+75
-27
lines changed

apps/webapp/app/v3/services/createBackgroundWorker.server.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ export class CreateBackgroundWorkerService extends BaseService {
7777
version: nextVersion,
7878
runtimeEnvironmentId: environment.id,
7979
projectId: project.id,
80-
metadata: body.metadata,
80+
metadata: body.metadata as any,
8181
contentHash: body.metadata.contentHash,
8282
cliVersion: body.metadata.cliPackageVersion,
8383
sdkVersion: body.metadata.packageVersion,
@@ -280,7 +280,7 @@ async function createWorkerTask(
280280
fileId: tasksToBackgroundFiles?.get(task.id) ?? null,
281281
maxDurationInSeconds: task.maxDuration ? clampMaxDuration(task.maxDuration) : null,
282282
queueId: queue.id,
283-
payloadSchema: task.payloadSchema,
283+
payloadSchema: task.payloadSchema as any,
284284
},
285285
});
286286
} catch (error) {

apps/webapp/app/v3/services/createDeploymentBackgroundWorkerV3.server.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export class CreateDeploymentBackgroundWorkerServiceV3 extends BaseService {
4848
version: deployment.version,
4949
runtimeEnvironmentId: environment.id,
5050
projectId: environment.projectId,
51-
metadata: body.metadata,
51+
metadata: body.metadata as any,
5252
contentHash: body.metadata.contentHash,
5353
cliVersion: body.metadata.cliPackageVersion,
5454
sdkVersion: body.metadata.packageVersion,

apps/webapp/app/v3/services/createDeploymentBackgroundWorkerV4.server.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ export class CreateDeploymentBackgroundWorkerServiceV4 extends BaseService {
6565
version: deployment.version,
6666
runtimeEnvironmentId: environment.id,
6767
projectId: environment.projectId,
68-
metadata: body.metadata,
68+
metadata: body.metadata as any,
6969
contentHash: body.metadata.contentHash,
7070
cliVersion: body.metadata.cliPackageVersion,
7171
sdkVersion: body.metadata.packageVersion,

packages/cli-v3/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@
9191
"@opentelemetry/semantic-conventions": "1.36.0",
9292
"@trigger.dev/build": "workspace:4.0.0-v4-beta.26",
9393
"@trigger.dev/core": "workspace:4.0.0-v4-beta.26",
94+
"@trigger.dev/schema-to-json": "workspace:4.0.0-v4-beta.25",
9495
"ansi-escapes": "^7.0.0",
9596
"braces": "^3.0.3",
9697
"c12": "^1.11.1",

packages/cli-v3/src/entryPoints/dev-index-worker.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import { registerResources } from "../indexing/registerResources.js";
1818
import { env } from "std-env";
1919
import { normalizeImportPath } from "../utilities/normalizeImportPath.js";
2020
import { detectRuntimeVersion } from "@trigger.dev/core/v3/build";
21+
import { schemaToJsonSchema, initializeSchemaConverters } from "@trigger.dev/schema-to-json";
2122

2223
sourceMapSupport.install({
2324
handleUncaughtExceptions: false,
@@ -100,7 +101,7 @@ async function bootstrap() {
100101

101102
const { buildManifest, importErrors, config, timings } = await bootstrap();
102103

103-
let tasks = resourceCatalog.listTaskManifests();
104+
let tasks = await convertSchemasToJsonSchemas(resourceCatalog.listTaskManifests());
104105

105106
// If the config has retry defaults, we need to apply them to all tasks that don't have any retry settings
106107
if (config.retries?.default) {
@@ -190,3 +191,20 @@ await new Promise<void>((resolve) => {
190191
resolve();
191192
}, 10);
192193
});
194+
195+
async function convertSchemasToJsonSchemas(tasks: TaskManifest[]): Promise<TaskManifest[]> {
196+
await initializeSchemaConverters();
197+
198+
const convertedTasks = tasks.map((task) => {
199+
const schema = resourceCatalog.getTaskSchema(task.id);
200+
201+
if (schema) {
202+
const result = schemaToJsonSchema(schema);
203+
return { ...task, payloadSchema: result?.jsonSchema };
204+
}
205+
206+
return task;
207+
});
208+
209+
return convertedTasks;
210+
}

packages/cli-v3/src/entryPoints/managed-index-worker.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import { registerResources } from "../indexing/registerResources.js";
1818
import { env } from "std-env";
1919
import { normalizeImportPath } from "../utilities/normalizeImportPath.js";
2020
import { detectRuntimeVersion } from "@trigger.dev/core/v3/build";
21+
import { schemaToJsonSchema, initializeSchemaConverters } from "@trigger.dev/schema-to-json";
2122

2223
sourceMapSupport.install({
2324
handleUncaughtExceptions: false,
@@ -100,7 +101,7 @@ async function bootstrap() {
100101

101102
const { buildManifest, importErrors, config, timings } = await bootstrap();
102103

103-
let tasks = resourceCatalog.listTaskManifests();
104+
let tasks = await convertSchemasToJsonSchemas(resourceCatalog.listTaskManifests());
104105

105106
// If the config has retry defaults, we need to apply them to all tasks that don't have any retry settings
106107
if (config.retries?.default) {
@@ -196,3 +197,20 @@ await new Promise<void>((resolve) => {
196197
resolve();
197198
}, 10);
198199
});
200+
201+
async function convertSchemasToJsonSchemas(tasks: TaskManifest[]): Promise<TaskManifest[]> {
202+
await initializeSchemaConverters();
203+
204+
const convertedTasks = tasks.map((task) => {
205+
const schema = resourceCatalog.getTaskSchema(task.id);
206+
207+
if (schema) {
208+
const result = schemaToJsonSchema(schema);
209+
return { ...task, payloadSchema: result?.jsonSchema };
210+
}
211+
212+
return task;
213+
});
214+
215+
return convertedTasks;
216+
}

packages/core/src/v3/resource-catalog/catalog.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { QueueManifest, TaskManifest, WorkerManifest } from "../schemas/index.js";
2-
import { TaskMetadataWithFunctions } from "../types/index.js";
2+
import { TaskMetadataWithFunctions, TaskSchema } from "../types/index.js";
33

44
export interface ResourceCatalog {
55
setCurrentFileContext(filePath: string, entryPoint: string): void;
@@ -13,4 +13,5 @@ export interface ResourceCatalog {
1313
registerWorkerManifest(workerManifest: WorkerManifest): void;
1414
registerQueueMetadata(queue: QueueManifest): void;
1515
listQueueManifests(): Array<QueueManifest>;
16+
getTaskSchema(id: string): TaskSchema | undefined;
1617
}

packages/core/src/v3/resource-catalog/index.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const API_NAME = "resource-catalog";
22

33
import { QueueManifest, TaskManifest, WorkerManifest } from "../schemas/index.js";
4-
import { TaskMetadataWithFunctions } from "../types/index.js";
4+
import { TaskMetadataWithFunctions, TaskSchema } from "../types/index.js";
55
import { getGlobal, registerGlobal, unregisterGlobal } from "../utils/globals.js";
66
import { type ResourceCatalog } from "./catalog.js";
77
import { NoopResourceCatalog } from "./noopResourceCatalog.js";
@@ -65,6 +65,10 @@ export class ResourceCatalogAPI {
6565
return this.#getCatalog().getTask(id);
6666
}
6767

68+
public getTaskSchema(id: string): TaskSchema | undefined {
69+
return this.#getCatalog().getTaskSchema(id);
70+
}
71+
6872
public taskExists(id: string): boolean {
6973
return this.#getCatalog().taskExists(id);
7074
}

packages/core/src/v3/resource-catalog/noopResourceCatalog.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { QueueManifest, TaskManifest, WorkerManifest } from "../schemas/index.js";
2-
import { TaskMetadataWithFunctions } from "../types/index.js";
2+
import { TaskMetadataWithFunctions, TaskSchema } from "../types/index.js";
33
import { ResourceCatalog } from "./catalog.js";
44

55
export class NoopResourceCatalog implements ResourceCatalog {
@@ -31,6 +31,10 @@ export class NoopResourceCatalog implements ResourceCatalog {
3131
return undefined;
3232
}
3333

34+
getTaskSchema(id: string): TaskSchema | undefined {
35+
return undefined;
36+
}
37+
3438
taskExists(id: string): boolean {
3539
return false;
3640
}

packages/core/src/v3/resource-catalog/standardResourceCatalog.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@ import {
55
WorkerManifest,
66
QueueManifest,
77
} from "../schemas/index.js";
8-
import { TaskMetadataWithFunctions } from "../types/index.js";
8+
import { TaskMetadataWithFunctions, TaskSchema } from "../types/index.js";
99
import { ResourceCatalog } from "./catalog.js";
1010

1111
export class StandardResourceCatalog implements ResourceCatalog {
12+
private _taskSchemas: Map<string, TaskSchema> = new Map();
1213
private _taskMetadata: Map<string, TaskMetadata> = new Map();
1314
private _taskFunctions: Map<string, TaskMetadataWithFunctions["fns"]> = new Map();
1415
private _taskFileMetadata: Map<string, TaskFileMetadata> = new Map();
@@ -72,6 +73,10 @@ export class StandardResourceCatalog implements ResourceCatalog {
7273

7374
this._taskMetadata.set(task.id, metadata);
7475
this._taskFunctions.set(task.id, fns);
76+
77+
if (task.schema) {
78+
this._taskSchemas.set(task.id, task.schema);
79+
}
7580
}
7681

7782
updateTaskMetadata(id: string, updates: Partial<TaskMetadataWithFunctions>): void {
@@ -107,15 +112,21 @@ export class StandardResourceCatalog implements ResourceCatalog {
107112
continue;
108113
}
109114

110-
result.push({
115+
const taskManifest = {
111116
...metadata,
112117
...fileMetadata,
113-
});
118+
};
119+
120+
result.push(taskManifest);
114121
}
115122

116123
return result;
117124
}
118125

126+
getTaskSchema(id: string): TaskSchema | undefined {
127+
return this._taskSchemas.get(id);
128+
}
129+
119130
listQueueManifests(): Array<QueueManifest> {
120131
return Array.from(this._queueMetadata.values());
121132
}

0 commit comments

Comments
 (0)