diff --git a/packages/trigger-sdk/src/v3/envvars.ts b/packages/trigger-sdk/src/v3/envvars.ts index 153be22a3d3..23a2a4341fc 100644 --- a/packages/trigger-sdk/src/v3/envvars.ts +++ b/packages/trigger-sdk/src/v3/envvars.ts @@ -332,13 +332,17 @@ export function update( throw new Error("projectRef is required"); } + if (typeof nameOrRequestOptions !== "string") { + throw new Error("name is required"); + } + if (!params) { throw new Error("params is required"); } $projectRef = projectRefOrName; $slug = slugOrParams; - $name = name!; + $name = nameOrRequestOptions; $params = params; } diff --git a/packages/trigger-sdk/src/v3/triggerClient.types.test.ts b/packages/trigger-sdk/src/v3/triggerClient.types.test.ts index 1a04e46e1e7..0e9c18c8b5a 100644 --- a/packages/trigger-sdk/src/v3/triggerClient.types.test.ts +++ b/packages/trigger-sdk/src/v3/triggerClient.types.test.ts @@ -40,6 +40,13 @@ describe("TriggerClient surface — type-level guarantees", () => { // Zero-arg form (uses task context — still typeable at the call site) expectTypeOf(client.envvars.list).toBeCallableWith(); }); + + it("preserves envvars.update overloads (out of task context form AND in-task form)", () => { + // Four-arg form (out-of-task context: projectRef, slug, name, params) + expectTypeOf(client.envvars.update).toBeCallableWith("proj_1234", "dev", "MY_VAR", { value: "secret" }); + // Two-arg form (in-task context: name, params) + expectTypeOf(client.envvars.update).toBeCallableWith("MY_VAR", { value: "secret" }); + }); }); describe("TriggerClient surface — curated subsets", () => {