diff --git a/apps/server/src/mcp/WorktreeMcpService.test.ts b/apps/server/src/mcp/WorktreeMcpService.test.ts index c6a00aabcb0cc..3be8705cc0bb0 100644 --- a/apps/server/src/mcp/WorktreeMcpService.test.ts +++ b/apps/server/src/mcp/WorktreeMcpService.test.ts @@ -350,9 +350,7 @@ const expectTypedFailure = (exit: Exit.Exit, expected: object) // Resolve once so calls share the in-flight guard. const resolveService = (harness: ReturnType) => - Effect.gen(function* () { - return yield* WorktreeMcpService.WorktreeMcpService; - }).pipe(Effect.provide(harness.layer)); + WorktreeMcpService.WorktreeMcpService.pipe(Effect.provide(harness.layer)); const runHandoff = ( harness: ReturnType, diff --git a/packages/provider-acp/src/server/adapter.ts b/packages/provider-acp/src/server/adapter.ts index bf39035f1f415..5eb12a80d9df9 100644 --- a/packages/provider-acp/src/server/adapter.ts +++ b/packages/provider-acp/src/server/adapter.ts @@ -5339,12 +5339,10 @@ export const makeAcpAdapterV2 = Effect.fn("makeAcpAdapterV2")(function* ( Effect.ensuring( runRuntimeCallbackAtGeneration( generation, - Effect.gen(function* () { - yield* Ref.update(pendingRuntimeRequests, (current) => { - const updated = new Map(current); - updated.delete(String(requestId)); - return updated; - }); + Ref.update(pendingRuntimeRequests, (current) => { + const updated = new Map(current); + updated.delete(String(requestId)); + return updated; }), ).pipe(Effect.asVoid), ), @@ -6032,12 +6030,10 @@ export const makeAcpAdapterV2 = Effect.fn("makeAcpAdapterV2")(function* ( Effect.ensuring( runRuntimeCallbackAtGeneration( handlerGeneration, - Effect.gen(function* () { - yield* Ref.update(pendingRuntimeRequests, (current) => { - const updated = new Map(current); - updated.delete(String(requestId)); - return updated; - }); + Ref.update(pendingRuntimeRequests, (current) => { + const updated = new Map(current); + updated.delete(String(requestId)); + return updated; }), ).pipe(Effect.asVoid), ), diff --git a/packages/provider-cursor/src/server/usageLimits.test.ts b/packages/provider-cursor/src/server/usageLimits.test.ts index ce8a2cbc27cf3..1b4cadf88ae3f 100644 --- a/packages/provider-cursor/src/server/usageLimits.test.ts +++ b/packages/provider-cursor/src/server/usageLimits.test.ts @@ -71,49 +71,47 @@ describe("Cursor usage limits", () => { }); it.effect("reads the instance's credentials and endpoint even when usage enabled is false", () => - Effect.gen(function* () { - yield* withNodeServices( - Effect.gen(function* () { - const fs = yield* FileSystem.FileSystem; - const path = yield* Path.Path; - const directory = yield* fs.makeTempDirectoryScoped(); - yield* fs.makeDirectory(path.join(directory, "cursor")); - yield* fs.writeFileString( - path.join(directory, "cursor", "auth.json"), - '{"accessToken":"instance-token"}', + withNodeServices( + Effect.gen(function* () { + const fs = yield* FileSystem.FileSystem; + const path = yield* Path.Path; + const directory = yield* fs.makeTempDirectoryScoped(); + yield* fs.makeDirectory(path.join(directory, "cursor")); + yield* fs.writeFileString( + path.join(directory, "cursor", "auth.json"), + '{"accessToken":"instance-token"}', + ); + const client = HttpClient.make((request) => { + expect(request.url).toBe( + "https://cursor.example/aiserver.v1.DashboardService/GetCurrentPeriodUsage", ); - const client = HttpClient.make((request) => { - expect(request.url).toBe( - "https://cursor.example/aiserver.v1.DashboardService/GetCurrentPeriodUsage", - ); - expect(request.method).toBe("POST"); - expect(request.headers.authorization).toBe("Bearer instance-token"); - expect(request.headers["connect-protocol-version"]).toBe("1"); - return Effect.succeed( - HttpClientResponse.fromWeb( - request, - Response.json({ enabled: false, planUsage: { totalPercentUsed: 42 } }), - ), - ); - }); - yield* fs.makeDirectory(path.join(directory, ".cursor")); - yield* fs.writeFileString( - path.join(directory, ".cursor", "auth.json"), - '{"accessToken":"instance-token"}', + expect(request.method).toBe("POST"); + expect(request.headers.authorization).toBe("Bearer instance-token"); + expect(request.headers["connect-protocol-version"]).toBe("1"); + return Effect.succeed( + HttpClientResponse.fromWeb( + request, + Response.json({ enabled: false, planUsage: { totalPercentUsed: 42 } }), + ), ); - for (const platform of ["linux", "darwin"] as const) { - const limits = yield* readCursorUsageLimits( - { apiEndpoint: "https://cursor.example/" }, - { XDG_CONFIG_HOME: directory, HOME: directory, AGENT_CLI_CREDENTIAL_STORE: "file" }, - ).pipe( - Effect.provideService(HostProcess.Platform, platform), - Effect.provideService(HttpClient.HttpClient, client), - ); - expect(limits.windows[0]?.usedPercent).toBe(42); - } - }).pipe(Effect.scoped), - ); - }), + }); + yield* fs.makeDirectory(path.join(directory, ".cursor")); + yield* fs.writeFileString( + path.join(directory, ".cursor", "auth.json"), + '{"accessToken":"instance-token"}', + ); + for (const platform of ["linux", "darwin"] as const) { + const limits = yield* readCursorUsageLimits( + { apiEndpoint: "https://cursor.example/" }, + { XDG_CONFIG_HOME: directory, HOME: directory, AGENT_CLI_CREDENTIAL_STORE: "file" }, + ).pipe( + Effect.provideService(HostProcess.Platform, platform), + Effect.provideService(HttpClient.HttpClient, client), + ); + expect(limits.windows[0]?.usedPercent).toBe(42); + } + }).pipe(Effect.scoped), + ), ); it.effect( diff --git a/tsconfig.base.json b/tsconfig.base.json index bd872178ff210..d1aca92648b50 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -24,6 +24,7 @@ "namespaceImportPackages": ["@effect/platform-node", "effect"], "effectFn": ["span", "inferred-span", "suggested-span"], "diagnosticSeverity": { + "unnecessaryEffectGen": "error", "allOfMapToForEach": "error", "catchToOrElseSucceed": "error", "unnecessaryFailYieldableError": "error",