diff --git a/lib/db/schema.ts b/lib/db/schema.ts index 82bd0a5..83e6908 100644 --- a/lib/db/schema.ts +++ b/lib/db/schema.ts @@ -60,6 +60,14 @@ export const sessionSchema = z.object({ }) export type Session = z.infer +export const jobStateSchema = z.enum([ + "QUEUED", + "RUNNING", + "COMPLETED", + "FAILED", + "READY_TO_START", +]) + export const jobSchema = z.object({ job_id: z.string(), created_at: z.string(), @@ -68,7 +76,7 @@ export const jobSchema = z.object({ output: jobOutputSchema.optional(), session_id: z.string(), name: z.string(), - state: z.enum(["QUEUED", "RUNNING", "COMPLETED", "FAILED", "READY_TO_START"]), + state: jobStateSchema, priority: z.enum(["LOW", "NORMAL", "HIGH"]), stage: z.enum(["IDLE", "ROUTING"]), router_settings: routerSettingsSchema, diff --git a/routes/v1/jobs/[job_id].ts b/routes/v1/jobs/[job_id].ts index fa769d8..7ce5977 100644 --- a/routes/v1/jobs/[job_id].ts +++ b/routes/v1/jobs/[job_id].ts @@ -2,7 +2,11 @@ import { withRouteSpec } from "lib/middleware/with-winter-spec" import { z } from "zod" import { withApiKeyAuth } from "lib/middleware/with-api-key-auth" import { NotFoundError } from "winterspec/middleware" -import { jobInputSchema, routerSettingsSchema } from "lib/db/schema" +import { + jobInputSchema, + jobStateSchema, + routerSettingsSchema, +} from "lib/db/schema" export default withRouteSpec({ methods: ["GET"], @@ -16,7 +20,7 @@ export default withRouteSpec({ input: jobInputSchema.optional(), session_id: z.string(), name: z.string(), - state: z.enum(["QUEUED", "RUNNING", "COMPLETED", "FAILED"]), + state: jobStateSchema, priority: z.enum(["LOW", "NORMAL", "HIGH"]), stage: z.enum(["IDLE", "ROUTING"]), router_settings: routerSettingsSchema, diff --git a/routes/v1/jobs/[job_id]/input.ts b/routes/v1/jobs/[job_id]/input.ts index 4d7d3ce..7a92e11 100644 --- a/routes/v1/jobs/[job_id]/input.ts +++ b/routes/v1/jobs/[job_id]/input.ts @@ -2,7 +2,7 @@ import { withRouteSpec } from "lib/middleware/with-winter-spec" import { z } from "zod" import { withApiKeyAuth } from "lib/middleware/with-api-key-auth" import { NotFoundError } from "winterspec/middleware" -import { jobInputSchema } from "lib/db/schema" +import { jobInputSchema, jobStateSchema } from "lib/db/schema" export default withRouteSpec({ methods: ["POST"], @@ -19,7 +19,7 @@ export default withRouteSpec({ input: jobInputSchema.optional(), session_id: z.string(), name: z.string(), - state: z.enum(["QUEUED", "RUNNING", "COMPLETED", "FAILED"]), + state: jobStateSchema, priority: z.enum(["LOW", "NORMAL", "HIGH"]), stage: z.enum(["IDLE", "ROUTING"]), router_settings: z.object({ diff --git a/routes/v1/jobs/[job_id]/settings.ts b/routes/v1/jobs/[job_id]/settings.ts index 7ece51f..a806357 100644 --- a/routes/v1/jobs/[job_id]/settings.ts +++ b/routes/v1/jobs/[job_id]/settings.ts @@ -2,7 +2,7 @@ import { withRouteSpec } from "lib/middleware/with-winter-spec" import { z } from "zod" import { withApiKeyAuth } from "lib/middleware/with-api-key-auth" import { NotFoundError } from "winterspec/middleware" -import { routerSettingsSchema } from "lib/db/schema" +import { jobStateSchema, routerSettingsSchema } from "lib/db/schema" export default withRouteSpec({ methods: ["POST"], @@ -35,7 +35,7 @@ export default withRouteSpec({ .optional(), session_id: z.string(), name: z.string(), - state: z.enum(["QUEUED", "RUNNING", "COMPLETED", "FAILED"]), + state: jobStateSchema, priority: z.enum(["LOW", "NORMAL", "HIGH"]), stage: z.enum(["IDLE", "ROUTING"]), router_settings: routerSettingsSchema, diff --git a/routes/v1/jobs/[job_id]/start.ts b/routes/v1/jobs/[job_id]/start.ts index 707cd93..e24e056 100644 --- a/routes/v1/jobs/[job_id]/start.ts +++ b/routes/v1/jobs/[job_id]/start.ts @@ -2,7 +2,11 @@ import { withRouteSpec } from "lib/middleware/with-winter-spec" import { z } from "zod" import { withApiKeyAuth } from "lib/middleware/with-api-key-auth" import { NotFoundError } from "winterspec/middleware" -import { jobInputSchema, routerSettingsSchema } from "lib/db/schema" +import { + jobInputSchema, + jobStateSchema, + routerSettingsSchema, +} from "lib/db/schema" export default withRouteSpec({ methods: ["PUT"], @@ -17,13 +21,7 @@ export default withRouteSpec({ input: jobInputSchema.optional(), session_id: z.string(), name: z.string(), - state: z.enum([ - "QUEUED", - "RUNNING", - "COMPLETED", - "FAILED", - "READY_TO_START", - ]), + state: jobStateSchema, priority: z.enum(["LOW", "NORMAL", "HIGH"]), stage: z.enum(["IDLE", "ROUTING"]), router_settings: routerSettingsSchema, diff --git a/routes/v1/jobs/enqueue.ts b/routes/v1/jobs/enqueue.ts index 29143f6..61d3ace 100644 --- a/routes/v1/jobs/enqueue.ts +++ b/routes/v1/jobs/enqueue.ts @@ -1,7 +1,7 @@ import { withRouteSpec } from "lib/middleware/with-winter-spec" import { z } from "zod" import { randomUUID } from "node:crypto" -import { routerSettingsSchema } from "lib/db/schema" +import { jobStateSchema, routerSettingsSchema } from "lib/db/schema" import { withApiKeyAuth } from "lib/middleware/with-api-key-auth" export default withRouteSpec({ @@ -17,7 +17,7 @@ export default withRouteSpec({ created_at: z.string(), session_id: z.string(), name: z.string(), - state: z.enum(["QUEUED", "RUNNING", "COMPLETED", "FAILED"]), + state: jobStateSchema, priority: z.enum(["LOW", "NORMAL", "HIGH"]), stage: z.enum(["IDLE", "ROUTING"]), router_settings: routerSettingsSchema, @@ -49,7 +49,12 @@ export default withRouteSpec({ created_at: job.created_at, session_id: job.session_id, name: job.name, - state: job.state as "QUEUED" | "RUNNING" | "COMPLETED" | "FAILED", + state: job.state as + | "QUEUED" + | "RUNNING" + | "COMPLETED" + | "FAILED" + | "READY_TO_START", priority: job.priority, stage: job.stage as "IDLE" | "ROUTING", router_settings: job.router_settings,