diff --git a/rivetkit-typescript/artifacts/registry-config.json b/rivetkit-typescript/artifacts/registry-config.json index 7a3ea83489..7d4d862de2 100644 --- a/rivetkit-typescript/artifacts/registry-config.json +++ b/rivetkit-typescript/artifacts/registry-config.json @@ -133,6 +133,10 @@ "description": "Maximum lifespan of a request in seconds.", "type": "number" }, + "drainGracePeriod": { + "description": "Grace period before the serverless request is forcibly closed, in seconds.", + "type": "number" + }, "metadata": { "description": "Additional metadata to pass to the serverless platform.", "type": "object", diff --git a/rivetkit-typescript/packages/rivetkit/src/engine-client/api-endpoints.ts b/rivetkit-typescript/packages/rivetkit/src/engine-client/api-endpoints.ts index 59fd5c0d5d..f2b01e5b1f 100644 --- a/rivetkit-typescript/packages/rivetkit/src/engine-client/api-endpoints.ts +++ b/rivetkit-typescript/packages/rivetkit/src/engine-client/api-endpoints.ts @@ -116,6 +116,7 @@ export interface RegistryConfigRequest { serverless?: { url: string; headers: Record; + drain_grace_period?: number; max_runners: number; min_runners: number; request_lifespan: number; diff --git a/rivetkit-typescript/packages/rivetkit/src/registry/config/index.ts b/rivetkit-typescript/packages/rivetkit/src/registry/config/index.ts index 4c0fb830a4..3a820871c6 100644 --- a/rivetkit-typescript/packages/rivetkit/src/registry/config/index.ts +++ b/rivetkit-typescript/packages/rivetkit/src/registry/config/index.ts @@ -366,6 +366,12 @@ export const DocConfigurePoolSchema = z .number() .optional() .describe("Maximum lifespan of a request in seconds."), + drainGracePeriod: z + .number() + .optional() + .describe( + "Grace period before the serverless request is forcibly closed, in seconds.", + ), metadata: z .record(z.string(), z.unknown()) .optional() diff --git a/rivetkit-typescript/packages/rivetkit/src/registry/config/serverless.ts b/rivetkit-typescript/packages/rivetkit/src/registry/config/serverless.ts index e4d7f4f7bb..f2ffe1891e 100644 --- a/rivetkit-typescript/packages/rivetkit/src/registry/config/serverless.ts +++ b/rivetkit-typescript/packages/rivetkit/src/registry/config/serverless.ts @@ -7,6 +7,7 @@ export const ConfigurePoolSchema = z url: z.string(), headers: z.record(z.string(), z.string()).optional(), requestLifespan: z.number().optional(), + drainGracePeriod: z.number().optional(), metadata: z.record(z.string(), z.unknown()).optional(), metadataPollInterval: z.number().optional(), drainOnVersionUpgrade: z.boolean().optional(), diff --git a/rivetkit-typescript/packages/rivetkit/src/serverless/configure.ts b/rivetkit-typescript/packages/rivetkit/src/serverless/configure.ts index 0524d426cd..63baf10317 100644 --- a/rivetkit-typescript/packages/rivetkit/src/serverless/configure.ts +++ b/rivetkit-typescript/packages/rivetkit/src/serverless/configure.ts @@ -35,6 +35,7 @@ export async function configureServerlessPool( url: customConfig.url, headers, request_lifespan: customConfig.requestLifespan ?? 15 * 60, + drain_grace_period: customConfig.drainGracePeriod, metadata_poll_interval: customConfig.metadataPollInterval ?? 1000, max_runners: 100_000,