GitHub check

256 KB of 530 KB loaded Download the full log (530 KB)
274 KB of earlier output not loaded
7047: This expression can be rewritten in the reusable function form `Effect.fn("BitbucketPullRequestApi.setCommentResolution")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4173324Z
2026-10-24T14:31:16.4173381Z 862     setCommentResolution: (input) =>
2026-10-24T14:31:16.4173521Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4173593Z
2026-10-24T14:31:16.4173993Z src/server/BitbucketSourceControlProvider.ts:47:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.listChangeRequests")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4174432Z
2026-10-24T14:31:16.4174488Z 47     listChangeRequests: (input) => {
2026-10-24T14:31:16.4174623Z        ~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4174696Z
2026-10-24T14:31:16.4175087Z src/server/BitbucketSourceControlProvider.ts:75:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4175542Z
2026-10-24T14:31:16.4175593Z 75     getChangeRequest: (input) =>
2026-10-24T14:31:16.4175723Z        ~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4175789Z
2026-10-24T14:31:16.4176189Z src/server/BitbucketSourceControlProvider.ts:92:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.createChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4176627Z
2026-10-24T14:31:16.4176685Z 92     createChangeRequest: (input) => {
2026-10-24T14:31:16.4176820Z        ~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4176891Z
2026-10-24T14:31:16.4177299Z src/server/BitbucketSourceControlProvider.ts:121:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getRepositoryCloneUrls")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4177747Z
2026-10-24T14:31:16.4177805Z 121     getRepositoryCloneUrls: (input) =>
2026-10-24T14:31:16.4177945Z         ~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4178023Z
2026-10-24T14:31:16.4178411Z src/server/BitbucketSourceControlProvider.ts:137:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.createRepository")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4178846Z
2026-10-24T14:31:16.4178899Z 137     createRepository: (input) =>
2026-10-24T14:31:16.4179095Z         ~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4179166Z
2026-10-24T14:31:16.4179557Z src/server/BitbucketSourceControlProvider.ts:153:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getDefaultBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4180054Z
2026-10-24T14:31:16.4180103Z 153     getDefaultBranch: (input) =>
2026-10-24T14:31:16.4180235Z         ~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4180305Z
2026-10-24T14:31:16.4180706Z src/server/BitbucketSourceControlProvider.ts:171:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.checkoutChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4181150Z
2026-10-24T14:31:16.4181210Z 171     checkoutChangeRequest: (input) =>
2026-10-24T14:31:16.4181348Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4181427Z
2026-10-24T14:31:16.4181432Z
2026-10-24T14:31:16.4181500Z ~/packages/source-control-forgejo$ tsc --noEmit
2026-10-24T14:31:16.4181609Z
2026-10-24T14:31:16.4181662Z ~/packages/provider-pi$ tsc --noEmit
2026-10-24T14:31:16.4182047Z src/server/GitCafeCredentials.ts:170:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitCafeCredentials.get")((host) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4182382Z
2026-10-24T14:31:16.4182427Z 170     get: (host) =>
2026-10-24T14:31:16.4182534Z         ~~~
2026-10-24T14:31:16.4182590Z
2026-10-24T14:31:16.4182891Z src/server/GitCafeCredentials.ts:183:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitCafeCredentials.invalidate")((host) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4183236Z
2026-10-24T14:31:16.4183334Z 183     invalidate: (host) => Cache.invalidate(cache, normalizeHost(host)),
2026-10-24T14:31:16.4183517Z         ~~~~~~~~~~
2026-10-24T14:31:16.4183582Z
2026-10-24T14:31:16.4183881Z src/server/GitCafeCredentials.ts:184:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitCafeCredentials.cliEnv")((host) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4184218Z
2026-10-24T14:31:16.4184268Z 184     cliEnv: (host) =>
2026-10-24T14:31:16.4184381Z         ~~~~~~
2026-10-24T14:31:16.4184440Z
2026-10-24T14:31:16.4184694Z src/server/GitCafePullRequestProvider.ts:341:9 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T14:31:16.4184982Z
2026-10-24T14:31:16.4185034Z 341         Effect.map(Option.some),
2026-10-24T14:31:16.4185195Z             ~~~~~~~~~~
2026-10-24T14:31:16.4185263Z
2026-10-24T14:31:16.4185510Z src/server/GitCafePullRequestProvider.ts:346:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4185796Z
2026-10-24T14:31:16.4185858Z 346               : Effect.succeed(Option.none()),
2026-10-24T14:31:16.4186006Z                     ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4186088Z
2026-10-24T14:31:16.4186337Z src/server/GitCafePullRequestProvider.ts:655:13 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T14:31:16.4186624Z
2026-10-24T14:31:16.4186678Z 655             Effect.map(Option.some),
2026-10-24T14:31:16.4186811Z                 ~~~~~~~~~~
2026-10-24T14:31:16.4186880Z
2026-10-24T14:31:16.4187122Z src/server/GitCafePullRequestProvider.ts:660:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4187405Z
2026-10-24T14:31:16.4187469Z 660                   : Effect.succeed(Option.none()),
2026-10-24T14:31:16.4187617Z                         ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4187701Z
2026-10-24T14:31:16.4188059Z src/server/GitCafePullRequestProvider.ts:673:15 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("readPage")((rows, after) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4188392Z
2026-10-24T14:31:16.4188477Z 673         const readPage = (rows: number, after: string | null) => {
2026-10-24T14:31:16.4188714Z                   ~~~~~~~~
2026-10-24T14:31:16.4188784Z
2026-10-24T14:31:16.4189133Z src/server/GitCafePullRequestProvider.ts:790:13 - suggestion TS377116: `Effect.catchIf` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T14:31:16.4189518Z
2026-10-24T14:31:16.4189570Z 790             Effect.catch((error) =>
2026-10-24T14:31:16.4189703Z                 ~~~~~~~~~~~~
2026-10-24T14:31:16.4189778Z
2026-10-24T14:31:16.4190125Z src/server/GitCafePullRequestProvider.ts:868:19 - suggestion TS377116: `Effect.catchIf` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T14:31:16.4190506Z
2026-10-24T14:31:16.4190563Z 868                   Effect.catch((error) =>
2026-10-24T14:31:16.4190706Z                       ~~~~~~~~~~~~
2026-10-24T14:31:16.4190788Z
2026-10-24T14:31:16.4190790Z
2026-10-24T14:31:16.4190847Z ~/packages/provider-muse$ tsc --noEmit
2026-10-24T14:31:16.4191335Z src/server/ForgejoSourceControlProvider.ts:362:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4191770Z
2026-10-24T14:31:16.4191820Z 362     getChangeRequest: (input) =>
2026-10-24T14:31:16.4191950Z         ~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4192018Z
2026-10-24T14:31:16.4192020Z
2026-10-24T14:31:16.4192081Z ~/packages/provider-opencode$ tsc --noEmit
2026-10-24T14:31:16.4192502Z src/server/adapter.ts:440:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.getCapabilities")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4192862Z
2026-10-24T14:31:16.4192956Z 440     getCapabilities: () => Effect.succeed(PiProviderCapabilitiesV2),
2026-10-24T14:31:16.4193141Z         ~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4193209Z
2026-10-24T14:31:16.4193545Z src/server/adapter.ts:441:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.planSelectionTransition")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4193920Z
2026-10-24T14:31:16.4194044Z 441     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T14:31:16.4194252Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4194465Z
2026-10-24T14:31:16.4194687Z src/server/adapter.ts:1694:31 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T14:31:16.4194950Z
2026-10-24T14:31:16.4195017Z 1694                               Effect.map(Option.some),
2026-10-24T14:31:16.4195198Z                                    ~~~~~~~~~~
2026-10-24T14:31:16.4195289Z
2026-10-24T14:31:16.4195502Z src/server/adapter.ts:1697:29 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4195754Z
2026-10-24T14:31:16.4195825Z 1697                           : Effect.succeed(Option.none()),
2026-10-24T14:31:16.4195985Z                                  ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4196078Z
2026-10-24T14:31:16.4196329Z src/server/rpc.ts:334:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("onSuccess")(function*() { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4196620Z
2026-10-24T14:31:16.4196665Z 334       onSuccess: () =>
2026-10-24T14:31:16.4196870Z           ~~~~~~~~~
2026-10-24T14:31:16.4196933Z
2026-10-24T14:31:16.4197139Z src/server/rpc.ts:342:17 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T14:31:16.4197388Z
2026-10-24T14:31:16.4197517Z 342                 Effect.map(Option.some),
2026-10-24T14:31:16.4197653Z                     ~~~~~~~~~~
2026-10-24T14:31:16.4197729Z
2026-10-24T14:31:16.4197731Z
2026-10-24T14:31:16.4197789Z ~/packages/provider-cursor$ tsc --noEmit
2026-10-24T14:31:16.4198202Z src/server/adapter.ts:284:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.getCapabilities")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4198563Z
2026-10-24T14:31:16.4198662Z 284     getCapabilities: () => Effect.succeed(MuseProviderCapabilitiesV2),
2026-10-24T14:31:16.4198845Z         ~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4198914Z
2026-10-24T14:31:16.4199253Z src/server/adapter.ts:285:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.planSelectionTransition")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4199628Z
2026-10-24T14:31:16.4199746Z 285     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T14:31:16.4199952Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4200029Z
2026-10-24T14:31:16.4200296Z src/server/adapter.ts:388:13 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("TimeoutError")(function*(cause) { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4200602Z
2026-10-24T14:31:16.4200655Z 388             TimeoutError: (cause) =>
2026-10-24T14:31:16.4200786Z                 ~~~~~~~~~~~~
2026-10-24T14:31:16.4200862Z
2026-10-24T14:31:16.4201079Z src/server/adapter.ts:1366:35 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T14:31:16.4201336Z
2026-10-24T14:31:16.4201461Z 1366                   wake === held ? Effect.map(dispatch, Option.some) : Effect.succeed(Option.none()),
2026-10-24T14:31:16.4201680Z                                        ~~~~~~~~~~
2026-10-24T14:31:16.4201777Z
2026-10-24T14:31:16.4201992Z src/server/adapter.ts:1366:71 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4202245Z
2026-10-24T14:31:16.4202369Z 1366                   wake === held ? Effect.map(dispatch, Option.some) : Effect.succeed(Option.none()),
2026-10-24T14:31:16.4202601Z                                                                            ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4202714Z
2026-10-24T14:31:16.4202716Z
2026-10-24T14:31:16.4202773Z ~/packages/provider-grok$ tsc --noEmit
2026-10-24T14:31:16.4203216Z src/server/CursorAccountReader.ts:31:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("CursorAccountReader.read")((credentialSource, sinceMs, untilMs) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4203595Z
2026-10-24T14:31:16.4203664Z 31       read: (credentialSource, sinceMs, untilMs) =>
2026-10-24T14:31:16.4203818Z          ~~~~
2026-10-24T14:31:16.4203874Z
2026-10-24T14:31:16.4204164Z src/server/CursorSdkCatalog.ts:82:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("CursorSdkCatalog.read")((apiKey) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4204490Z
2026-10-24T14:31:16.4204538Z 82     read: (apiKey) =>
2026-10-24T14:31:16.4204649Z        ~~~~
2026-10-24T14:31:16.4204706Z
2026-10-24T14:31:16.4204990Z src/server/accountUsage.ts:360:5 - suggestion TS377095: `Effect.orElseSucceed` expresses the same recovery more directly than `Effect.catch` followed by `Effect.succeed`. effect(catchToOrElseSucceed)
2026-10-24T14:31:16.4205351Z
2026-10-24T14:31:16.4205466Z 360     Effect.catch(() =>
2026-10-24T14:31:16.4205587Z         ~~~~~~~~~~~~
2026-10-24T14:31:16.4205650Z
2026-10-24T14:31:16.4205974Z src/server/adapter.ts:904:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.getCapabilities")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4206404Z
2026-10-24T14:31:16.4206510Z 904     getCapabilities: () => Effect.succeed(CursorProviderCapabilitiesV2),
2026-10-24T14:31:16.4206698Z         ~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4206769Z
2026-10-24T14:31:16.4207103Z src/server/adapter.ts:905:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.planSelectionTransition")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4207480Z
2026-10-24T14:31:16.4207597Z 905     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T14:31:16.4207811Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4207887Z
2026-10-24T14:31:16.4208343Z src/server/credentialStore.ts:55:7 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T14:31:16.4208832Z
2026-10-24T14:31:16.4208883Z 55       Effect.runPromise(
2026-10-24T14:31:16.4209004Z          ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4209077Z
2026-10-24T14:31:16.4209349Z src/server/credentialStore.ts:59:29 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T14:31:16.4209659Z
2026-10-24T14:31:16.4209726Z 59               onNone: () => Effect.succeed(undefined),
2026-10-24T14:31:16.4209887Z                                ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4209985Z
2026-10-24T14:31:16.4210430Z src/server/credentialStore.ts:69:7 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T14:31:16.4210915Z
2026-10-24T14:31:16.4210966Z 69       Effect.runPromise(
2026-10-24T14:31:16.4211084Z          ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4211154Z
2026-10-24T14:31:16.4211598Z src/server/credentialStore.ts:82:18 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T14:31:16.4212085Z
2026-10-24T14:31:16.4212157Z 82     clear: () => Effect.runPromise(credentials.remove),
2026-10-24T14:31:16.4218465Z                     ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4218565Z
2026-10-24T14:31:16.4218909Z src/server/driver.ts:228:11 - suggestion TS377120: `Effect.filterOrElse` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-24T14:31:16.4219287Z
2026-10-24T14:31:16.4219345Z 228           Effect.flatMap((snapshot) =>
2026-10-24T14:31:16.4219482Z               ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4219558Z
2026-10-24T14:31:16.4219757Z src/server/usageLimits.test.ts:74:5 - suggestion TS377017: This Effect.gen contains a single return statement. effect(unnecessaryEffectGen)
2026-10-24T14:31:16.4219991Z
2026-10-24T14:31:16.4220041Z  74     Effect.gen(function* () {
2026-10-24T14:31:16.4220170Z         ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4220295Z  75       yield* withNodeServices(
2026-10-24T14:31:16.4220424Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4220541Z ...
2026-10-24T14:31:16.4220721Z 115       );
2026-10-24T14:31:16.4220817Z     ~~~~~~~~
2026-10-24T14:31:16.4220910Z 116     }),
2026-10-24T14:31:16.4221005Z     ~~~~~~
2026-10-24T14:31:16.4221060Z
2026-10-24T14:31:16.4221062Z
2026-10-24T14:31:16.4221128Z ~/packages/provider-acp-registry$ tsc --noEmit
2026-10-24T14:31:16.4221591Z src/server/OpenCodeServerLedger.ts:147:12 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T14:31:16.4221913Z
2026-10-24T14:31:16.4221966Z 147     return Effect.succeed(undefined);
2026-10-24T14:31:16.4222106Z                ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4222194Z
2026-10-24T14:31:16.4222586Z src/server/OpenCodeServerLedger.ts:188:24 - suggestion TS377014: This generator returns an Effect-able value directly, which produces a nested `Effect<Effect<...>>`. If the intended result is the inner Effect value, `return yield*` represents that form. effect(returnEffectInGen)
2026-10-24T14:31:16.4223021Z
2026-10-24T14:31:16.4223081Z 188       if (!recordable) return Effect.void;
2026-10-24T14:31:16.4223223Z                            ~~~~~~
2026-10-24T14:31:16.4223303Z
2026-10-24T14:31:16.4223689Z src/server/OpenCodeServerLedger.ts:208:9 - suggestion TS377014: This generator returns an Effect-able value directly, which produces a nested `Effect<Effect<...>>`. If the intended result is the inner Effect value, `return yield*` represents that form. effect(returnEffectInGen)
2026-10-24T14:31:16.4224115Z
2026-10-24T14:31:16.4224164Z 208         return Effect.void;
2026-10-24T14:31:16.4224284Z             ~~~~~~
2026-10-24T14:31:16.4224348Z
2026-10-24T14:31:16.4224730Z src/server/OpenCodeServerLedger.ts:228:7 - suggestion TS377014: This generator returns an Effect-able value directly, which produces a nested `Effect<Effect<...>>`. If the intended result is the inner Effect value, `return yield*` represents that form. effect(returnEffectInGen)
2026-10-24T14:31:16.4225183Z
2026-10-24T14:31:16.4225230Z 228       return fs
2026-10-24T14:31:16.4225335Z           ~~~~~~
2026-10-24T14:31:16.4225393Z
2026-10-24T14:31:16.4225694Z src/server/OpenCodeServerLedger.ts:311:29 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OpenCodeServerLedger.track")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4226037Z
2026-10-24T14:31:16.4226143Z 311   OpenCodeServerLedger.of({ track: () => Effect.succeed(Effect.void) }),
2026-10-24T14:31:16.4226335Z                                 ~~~~~
2026-10-24T14:31:16.4226418Z
2026-10-24T14:31:16.4226730Z src/server/OpenCodeServerOwner.ts:169:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OpenCodeServerOwner.withServer")((use) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4227082Z
2026-10-24T14:31:16.4227131Z 169     withServer: (use) =>
2026-10-24T14:31:16.4227249Z         ~~~~~~~~~~
2026-10-24T14:31:16.4227308Z
2026-10-24T14:31:16.4227703Z src/server/adapter.test.ts:103:39 - suggestion TS377112: This input is already assignable to the schema's Encoded type. Use `decodeSync` to preserve compile-time type checking instead of discarding the input type through `decodeUnknownSync`. effect(preferTypedSchemaDecoder)
2026-10-24T14:31:16.4228132Z
2026-10-24T14:31:16.4228247Z 103 const OPENCODE_TEST_SETTINGS = Schema.decodeUnknownSync(OpenCodeSettings)({});
2026-10-24T14:31:16.4228463Z                                           ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4228564Z
2026-10-24T14:31:16.4228889Z src/server/adapter.ts:938:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.getCapabilities")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4229250Z
2026-10-24T14:31:16.4229357Z 938     getCapabilities: () => Effect.succeed(OpenCodeProviderCapabilitiesV2),
2026-10-24T14:31:16.4229548Z         ~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4229615Z
2026-10-24T14:31:16.4230020Z src/server/adapter.ts:939:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.planSelectionTransition")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4230398Z
2026-10-24T14:31:16.4230589Z 939     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T14:31:16.4230795Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4230872Z
2026-10-24T14:31:16.4231166Z src/server/adapter.ts:1011:33 - suggestion TS377111: `AbortController` is manually constructed inside Effect code. Use `Effect.abortSignal` for Effect-managed cancellation. effect(abortControllerInEffect)
2026-10-24T14:31:16.4231495Z
2026-10-24T14:31:16.4231569Z 1011         const abortController = new AbortController();
2026-10-24T14:31:16.4231735Z                                      ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4231832Z
2026-10-24T14:31:16.4232155Z src/server/adapter.ts:1088:31 - suggestion TS377019: This `yield* Effect.fail(...)` passes a yieldable error value. `yield*` represents that value directly without wrapping it in `Effect.fail`. effect(unnecessaryFailYieldableError)
2026-10-24T14:31:16.4232509Z
2026-10-24T14:31:16.4232583Z 1088           if (failure) return yield* Effect.fail(failure);
2026-10-24T14:31:16.4232746Z                                    ~~~~~
2026-10-24T14:31:16.4232830Z
2026-10-24T14:31:16.4233107Z src/server/adapter.ts:1584:15 - suggestion TS377095: `Effect.orElseSucceed` expresses the same recovery more directly than `Effect.catch` followed by `Effect.succeed`. effect(catchToOrElseSucceed)
2026-10-24T14:31:16.4233420Z
2026-10-24T14:31:16.4233497Z 1584               Effect.catch(() => Effect.succeed(undefined)),
2026-10-24T14:31:16.4233653Z                    ~~~~~~~~~~~~
2026-10-24T14:31:16.4233730Z
2026-10-24T14:31:16.4233987Z src/server/adapter.ts:1584:34 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T14:31:16.4234279Z
2026-10-24T14:31:16.4234446Z 1584               Effect.catch(() => Effect.succeed(undefined)),
2026-10-24T14:31:16.4234613Z                                       ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4234711Z
2026-10-24T14:31:16.4235003Z src/server/adapter.ts:3194:43 - suggestion TS377111: `AbortController` is manually constructed inside Effect code. Use `Effect.abortSignal` for Effect-managed cancellation. effect(abortControllerInEffect)
2026-10-24T14:31:16.4235355Z
2026-10-24T14:31:16.4235438Z 3194                 admissionAbortController: new AbortController(),
2026-10-24T14:31:16.4235616Z                                                ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4235716Z
2026-10-24T14:31:16.4236008Z src/server/adapter.ts:3354:47 - suggestion TS377111: `AbortController` is manually constructed inside Effect code. Use `Effect.abortSignal` for Effect-managed cancellation. effect(abortControllerInEffect)
2026-10-24T14:31:16.4236332Z
2026-10-24T14:31:16.4236419Z 3354               turn.admissionAbortController = new AbortController();
2026-10-24T14:31:16.4236608Z                                                    ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4236714Z
2026-10-24T14:31:16.4237004Z src/server/v2/OpenCode2Client.ts:158:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OpenCode2Client.connect")((_) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4237333Z
2026-10-24T14:31:16.4237393Z 158     connect: ({ baseUrl, password }) => {
2026-10-24T14:31:16.4237532Z         ~~~~~~~
2026-10-24T14:31:16.4237591Z
2026-10-24T14:31:16.4237895Z src/server/v2/OpenCode2Server.ts:160:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OpenCode2Server.withConnection")((use) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4238239Z
2026-10-24T14:31:16.4238387Z 160       withConnection: (use) =>
2026-10-24T14:31:16.4238516Z           ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4238588Z
2026-10-24T14:31:16.4238886Z src/server/v2/OpenCode2Server.ts:175:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OpenCode2Server.withConnection")((use) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4239304Z
2026-10-24T14:31:16.4239355Z 175     withConnection: (use) =>
2026-10-24T14:31:16.4239476Z         ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4239542Z
2026-10-24T14:31:16.4239763Z src/server/v2/adapter.ts:1544:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4240022Z
2026-10-24T14:31:16.4240146Z 1544           wake.dropped ? Effect.succeed(Option.none()) : Effect.map(dispatch, Option.some),
2026-10-24T14:31:16.4240360Z                               ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4240449Z
2026-10-24T14:31:16.4240672Z src/server/v2/adapter.ts:1544:58 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T14:31:16.4240933Z
2026-10-24T14:31:16.4241054Z 1544           wake.dropped ? Effect.succeed(Option.none()) : Effect.map(dispatch, Option.some),
2026-10-24T14:31:16.4241273Z                                                               ~~~~~~~~~~
2026-10-24T14:31:16.4241380Z
2026-10-24T14:31:16.4241710Z src/server/v2/adapter.ts:4137:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.getCapabilities")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4242076Z
2026-10-24T14:31:16.4242182Z 4137     getCapabilities: () => Effect.succeed(OpenCode2ProviderCapabilities),
2026-10-24T14:31:16.4242371Z          ~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4242440Z
2026-10-24T14:31:16.4242787Z src/server/v2/adapter.ts:4138:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.planSelectionTransition")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4243171Z
2026-10-24T14:31:16.4243293Z 4138     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T14:31:16.4243502Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4243579Z
2026-10-24T14:31:16.4243581Z
2026-10-24T14:31:16.4243652Z ~/packages/source-control-definitions$ tsc --noEmit
2026-10-24T14:31:16.4244092Z src/server/driver.ts:174:7 - suggestion TS377120: `Effect.filterOrElse` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-24T14:31:16.4244457Z
2026-10-24T14:31:16.4244512Z 174       Effect.flatMap((snapshot) =>
2026-10-24T14:31:16.4244642Z           ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4244708Z
2026-10-24T14:31:16.4244950Z src/server/xaiAcpExtension.ts:1507:15 - suggestion TS377009: The previous Effect does not fail, so this error-handling branch will never run. effect(catchUnfailableEffect)
2026-10-24T14:31:16.4245271Z
2026-10-24T14:31:16.4245337Z 1507       }).pipe(Effect.catch(() => Effect.void));
2026-10-24T14:31:16.4245483Z                    ~~~~~~~~~~~~
2026-10-24T14:31:16.4245559Z
2026-10-24T14:31:16.4245819Z src/server/xaiAcpExtension.ts:1507:15 - suggestion TS377099: `Effect.ignore` expresses ignored failure more directly than `Effect.catch` returning `Effect.void`. effect(catchToIgnore)
2026-10-24T14:31:16.4246114Z
2026-10-24T14:31:16.4246177Z 1507       }).pipe(Effect.catch(() => Effect.void));
2026-10-24T14:31:16.4246320Z                    ~~~~~~~~~~~~
2026-10-24T14:31:16.4246393Z
2026-10-24T14:31:16.4246748Z src/server/xaiAcpExtension.ts:1588:13 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T14:31:16.4247139Z
2026-10-24T14:31:16.4247266Z 1588             Effect.catchCause((cause) =>
2026-10-24T14:31:16.4247409Z                  ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4247491Z
2026-10-24T14:31:16.4247493Z
2026-10-24T14:31:16.4247495Z
2026-10-24T14:31:16.4247551Z ~/packages/client-runtime$ tsc --noEmit
2026-10-24T14:31:16.4247962Z src/server/AcpRegistryRuntimeCoordinator.ts:154:52 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T14:31:16.4248258Z
2026-10-24T14:31:16.4248393Z 154         return yield* Effect.raceFirst(effect.pipe(Effect.map(Option.some)), foregroundStarted);
2026-10-24T14:31:16.4248626Z                                                        ~~~~~~~~~~
2026-10-24T14:31:16.4248728Z
2026-10-24T14:31:16.4249064Z src/server/AcpRegistrySupport.ts:1301:9 - suggestion TS377116: `Effect.catchIf` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T14:31:16.4249433Z
2026-10-24T14:31:16.4249481Z 1301         Effect.catch((error) =>
2026-10-24T14:31:16.4249609Z              ~~~~~~~~~~~~
2026-10-24T14:31:16.4249679Z
2026-10-24T14:31:16.4249971Z src/server/auth.ts:146:13 - suggestion TS377118: `Effect.fromOption` expresses this Option-to-Effect conversion more directly than `Option.match` or an Option tag conditional. effect(optionMatchToFromOption)
2026-10-24T14:31:16.4250304Z
2026-10-24T14:31:16.4250355Z 146             Option.isSome(result)
2026-10-24T14:31:16.4250485Z                 ~~~~~~~~~~~~~
2026-10-24T14:31:16.4250560Z
2026-10-24T14:31:16.4250817Z src/server/driver.ts:640:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("enrichSnapshot")((_) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4251108Z
2026-10-24T14:31:16.4251203Z 640       enrichSnapshot: ({ snapshot, getSnapshot, publishSnapshot }) => {
2026-10-24T14:31:16.4251386Z           ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4251458Z
2026-10-24T14:31:16.4251669Z src/server/driver.ts:650:51 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T14:31:16.4251921Z
2026-10-24T14:31:16.4252021Z 650             : enrichProviderCached(snapshot).pipe(Effect.map(Option.some))
2026-10-24T14:31:16.4252219Z                                                       ~~~~~~~~~~
2026-10-24T14:31:16.4252320Z
2026-10-24T14:31:16.4252322Z
2026-10-24T14:31:16.4252552Z src/authorization/remote.test.ts:232:25 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4252820Z
2026-10-24T14:31:16.4252927Z 232               identity: Effect.succeed(Option.some({ accountId: "user_connect" })),
2026-10-24T14:31:16.4253122Z                             ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4253209Z
2026-10-24T14:31:16.4253438Z src/authorization/remote.test.ts:237:17 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4253705Z
2026-10-24T14:31:16.4253778Z 237             id: Effect.succeed(Option.some("device-1")),
2026-10-24T14:31:16.4253933Z                     ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4254014Z
2026-10-24T14:31:16.4254347Z src/authorization/service.ts:553:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("RemoteEnvironmentAuthorization.authorizeDpop")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4254718Z
2026-10-24T14:31:16.4254768Z 553     authorizeDpop: (input) =>
2026-10-24T14:31:16.4254890Z         ~~~~~~~~~~~~~
2026-10-24T14:31:16.4254956Z
2026-10-24T14:31:16.4255316Z src/authorization/service.ts:555:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("RemoteEnvironmentAuthorization.authorizeDpopHttp")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4255759Z
2026-10-24T14:31:16.4255813Z 555     authorizeDpopHttp: (input) =>
2026-10-24T14:31:16.4255943Z         ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4256012Z
2026-10-24T14:31:16.4256323Z src/connection/onboarding.ts:298:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ConnectionOnboarding.registerPairing")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4256758Z
2026-10-24T14:31:16.4256809Z 298     registerPairing: (input) =>
2026-10-24T14:31:16.4256935Z         ~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4257002Z
2026-10-24T14:31:16.4257303Z src/connection/onboarding.ts:304:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ConnectionOnboarding.registerSsh")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4257644Z
2026-10-24T14:31:16.4257694Z 304     registerSsh: (input) =>
2026-10-24T14:31:16.4257813Z         ~~~~~~~~~~~
2026-10-24T14:31:16.4257872Z
2026-10-24T14:31:16.4258180Z src/connection/onboarding.ts:309:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ConnectionOnboarding.updateBearer")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4258525Z
2026-10-24T14:31:16.4258579Z 309     updateBearer: (input) =>
2026-10-24T14:31:16.4258701Z         ~~~~~~~~~~~~
2026-10-24T14:31:16.4258765Z
2026-10-24T14:31:16.4259109Z src/connection/pullRequestRoutingPermissions.ts:138:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestRoutingPermissions.get")((entry) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4259490Z
2026-10-24T14:31:16.4259535Z 138       get: (entry) =>
2026-10-24T14:31:16.4259646Z           ~~~
2026-10-24T14:31:16.4259701Z
2026-10-24T14:31:16.4260060Z src/connection/pullRequestRoutingPermissions.ts:143:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestRoutingPermissions.set")((entry, permission) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4260463Z
2026-10-24T14:31:16.4260515Z 143       set: (entry, permission) => {
2026-10-24T14:31:16.4260642Z           ~~~
2026-10-24T14:31:16.4260699Z
2026-10-24T14:31:16.4261060Z src/connection/pullRequestRoutingPermissions.ts:159:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestRoutingPermissions.forget")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4261462Z
2026-10-24T14:31:16.4261512Z 159       forget: (environmentId) =>
2026-10-24T14:31:16.4261637Z           ~~~~~~
2026-10-24T14:31:16.4261695Z
2026-10-24T14:31:16.4261966Z src/connection/registry.test.ts:1392:15 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T14:31:16.4262274Z
2026-10-24T14:31:16.4262331Z 1392             ? Effect.succeed(undefined)
2026-10-24T14:31:16.4262472Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4262559Z
2026-10-24T14:31:16.4262826Z src/connection/registry.test.ts:1476:15 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T14:31:16.4263133Z
2026-10-24T14:31:16.4263186Z 1476             ? Effect.succeed(undefined)
2026-10-24T14:31:16.4263322Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4263405Z
2026-10-24T14:31:16.4263670Z src/connection/registry.test.ts:1489:23 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T14:31:16.4263976Z
2026-10-24T14:31:16.4264040Z 1489                     : Effect.succeed(undefined),
2026-10-24T14:31:16.4264195Z                            ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4264288Z
2026-10-24T14:31:16.4264615Z src/platform/orchestrationCache.test.ts:104:15 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T14:31:16.4264904Z
2026-10-24T14:31:16.4264959Z 104       }).pipe(Effect.map(Option.some));
2026-10-24T14:31:16.4265194Z                   ~~~~~~~~~~
2026-10-24T14:31:16.4265266Z
2026-10-24T14:31:16.4265642Z src/state/boundedThreadSnapshotHttp.ts:72:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadSnapshotLoader.ThreadSnapshotLoader.load")((prepared, threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4266054Z
2026-10-24T14:31:16.4266143Z 72       load: (prepared: PreparedConnection, threadId: ThreadId) => {
2026-10-24T14:31:16.4266309Z          ~~~~
2026-10-24T14:31:16.4266365Z
2026-10-24T14:31:16.4266660Z src/state/commandPermissions.ts:56:13 - suggestion TS377095: `Effect.orElseSucceed` expresses the same recovery more directly than `Effect.catch` followed by `Effect.succeed`. effect(catchToOrElseSucceed)
2026-10-24T14:31:16.4266990Z
2026-10-24T14:31:16.4267088Z 56             Effect.catch(() => Effect.succeed(Option.none<AuthSessionState>())),
2026-10-24T14:31:16.4267272Z                ~~~~~~~~~~~~
2026-10-24T14:31:16.4267347Z
2026-10-24T14:31:16.4267680Z src/state/commandPermissions.ts:62:20 - suggestion TS377019: This `yield* Effect.fail(...)` passes a yieldable error value. `yield*` represents that value directly without wrapping it in `Effect.fail`. effect(unnecessaryFailYieldableError)
2026-10-24T14:31:16.4268051Z
2026-10-24T14:31:16.4268102Z 62             return yield* Effect.fail(
2026-10-24T14:31:16.4268233Z                       ~~~~~
2026-10-24T14:31:16.4268304Z
2026-10-24T14:31:16.4268597Z src/state/outdatedServerUpdate.ts:57:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("execute")((target, atomRegistry) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4268927Z
2026-10-24T14:31:16.4269017Z 57     execute: (target: OutdatedServerUpdateTarget, atomRegistry) => {
2026-10-24T14:31:16.4269192Z        ~~~~~~~
2026-10-24T14:31:16.4269249Z
2026-10-24T14:31:16.4269562Z src/state/pullRequestDiffHttp.ts:90:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestDiffLoader.load")((prepared, input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4269917Z
2026-10-24T14:31:16.4269969Z 90       load: (prepared, input) =>
2026-10-24T14:31:16.4270091Z          ~~~~
2026-10-24T14:31:16.4270147Z
2026-10-24T14:31:16.4270548Z src/state/queryPersistence.ts:34:28 - suggestion TS377112: This input is already assignable to the schema's Encoded type. Use `decodeEffect` to preserve compile-time type checking instead of discarding the input type through `decodeUnknownEffect`. effect(preferTypedSchemaDecoder)
2026-10-24T14:31:16.4270983Z
2026-10-24T14:31:16.4271084Z 34       return yield* Schema.decodeUnknownEffect(codec)(stored.value).pipe(
2026-10-24T14:31:16.4271273Z                               ~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4271368Z
2026-10-24T14:31:16.4271595Z src/state/queryPersistence.ts:35:9 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T14:31:16.4271858Z
2026-10-24T14:31:16.4271909Z 35         Effect.map(Option.some),
2026-10-24T14:31:16.4272033Z            ~~~~~~~~~~
2026-10-24T14:31:16.4272096Z
2026-10-24T14:31:16.4272361Z src/state/server.ts:680:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("execute")((target, atomRegistry) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4272663Z
2026-10-24T14:31:16.4272718Z 680     execute: (target, atomRegistry) => {
2026-10-24T14:31:16.4272849Z         ~~~~~~~
2026-10-24T14:31:16.4272909Z
2026-10-24T14:31:16.4273307Z src/state/server.ts:1125:11 - suggestion TS377120: `Effect.filterOrElse` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-24T14:31:16.4273676Z
2026-10-24T14:31:16.4273731Z 1125           Effect.flatMap((summary) =>
2026-10-24T14:31:16.4273866Z                ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4274012Z
2026-10-24T14:31:16.4274232Z src/state/shell-sync.test.ts:90:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4274549Z
2026-10-24T14:31:16.4274619Z 90         loadShell: () => Effect.succeed(Option.none()),
2026-10-24T14:31:16.4274774Z                             ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4274860Z
2026-10-24T14:31:16.4275076Z src/state/shell-sync.test.ts:96:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4275353Z
2026-10-24T14:31:16.4275427Z 96         loadThread: () => Effect.succeed(Option.none()),
2026-10-24T14:31:16.4275477Z                              ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4275480Z
2026-10-24T14:31:16.4275694Z src/state/shell-sync.test.ts:99:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4275700Z
2026-10-24T14:31:16.4275780Z 99         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-24T14:31:16.4275829Z                                    ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4275831Z
2026-10-24T14:31:16.4276048Z src/state/shell-sync.test.ts:101:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4276051Z
2026-10-24T14:31:16.4276123Z 101         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-24T14:31:16.4276172Z                                ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4276174Z
2026-10-24T14:31:16.4276390Z src/state/shell-sync.test.ts:108:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4276393Z
2026-10-24T14:31:16.4276457Z 108         load: () => Effect.succeed(Option.none()),
2026-10-24T14:31:16.4276504Z                         ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4276508Z
2026-10-24T14:31:16.4276725Z src/state/shell-sync.test.ts:229:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4276727Z
2026-10-24T14:31:16.4276798Z 229         loadShell: () => Effect.succeed(Option.none()),
2026-10-24T14:31:16.4276843Z                              ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4276845Z
2026-10-24T14:31:16.4277060Z src/state/shell-sync.test.ts:238:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4277062Z
2026-10-24T14:31:16.4277134Z 238         loadThread: () => Effect.succeed(Option.none()),
2026-10-24T14:31:16.4277183Z                               ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4277185Z
2026-10-24T14:31:16.4277401Z src/state/shell-sync.test.ts:241:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4277406Z
2026-10-24T14:31:16.4277485Z 241         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-24T14:31:16.4277537Z                                     ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4277539Z
2026-10-24T14:31:16.4277755Z src/state/shell-sync.test.ts:243:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4277757Z
2026-10-24T14:31:16.4277829Z 243         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-24T14:31:16.4277877Z                                ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4277880Z
2026-10-24T14:31:16.4278171Z src/state/shell-sync.test.ts:250:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4278173Z
2026-10-24T14:31:16.4278237Z 250         load: () => Effect.succeed(Option.none()),
2026-10-24T14:31:16.4278285Z                         ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4278361Z
2026-10-24T14:31:16.4278576Z src/state/shell-sync.test.ts:349:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4278579Z
2026-10-24T14:31:16.4278646Z 349         loadShell: () => Effect.succeed(Option.none()),
2026-10-24T14:31:16.4278694Z                              ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4278696Z
2026-10-24T14:31:16.4278911Z src/state/shell-sync.test.ts:355:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4278914Z
2026-10-24T14:31:16.4278986Z 355         loadThread: () => Effect.succeed(Option.none()),
2026-10-24T14:31:16.4279035Z                               ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4279037Z
2026-10-24T14:31:16.4279251Z src/state/shell-sync.test.ts:358:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4279255Z
2026-10-24T14:31:16.4279334Z 358         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-24T14:31:16.4279384Z                                     ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4279387Z
2026-10-24T14:31:16.4279602Z src/state/shell-sync.test.ts:360:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4279604Z
2026-10-24T14:31:16.4279676Z 360         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-24T14:31:16.4279721Z                                ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4279724Z
2026-10-24T14:31:16.4279940Z src/state/shell-sync.test.ts:367:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4279942Z
2026-10-24T14:31:16.4280004Z 367         load: () => Effect.succeed(Option.none()),
2026-10-24T14:31:16.4280049Z                         ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4280054Z
2026-10-24T14:31:16.4280267Z src/state/shell-sync.test.ts:446:26 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4280271Z
2026-10-24T14:31:16.4280358Z 446         loadShell: () => Effect.succeed(Option.some(cachedSnapshot)),
2026-10-24T14:31:16.4280405Z                              ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4280407Z
2026-10-24T14:31:16.4280623Z src/state/shell-sync.test.ts:448:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4280625Z
2026-10-24T14:31:16.4280696Z 448         loadThread: () => Effect.succeed(Option.none()),
2026-10-24T14:31:16.4280742Z                               ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4280744Z
2026-10-24T14:31:16.4280959Z src/state/shell-sync.test.ts:451:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4280963Z
2026-10-24T14:31:16.4281040Z 451         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-24T14:31:16.4281090Z                                     ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4281092Z
2026-10-24T14:31:16.4281308Z src/state/shell-sync.test.ts:453:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4281310Z
2026-10-24T14:31:16.4281379Z 453         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-24T14:31:16.4281426Z                                ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4281429Z
2026-10-24T14:31:16.4281708Z src/state/shell-sync.test.ts:460:21 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4281711Z
2026-10-24T14:31:16.4281787Z 460         load: () => Effect.succeed(Option.some(httpSnapshot)),
2026-10-24T14:31:16.4281873Z                         ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4281877Z
2026-10-24T14:31:16.4282178Z src/state/shellSnapshotHttp.ts:98:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ShellSnapshotLoader.load")((prepared) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4282181Z
2026-10-24T14:31:16.4282243Z 98       load: (prepared: PreparedConnection) =>
2026-10-24T14:31:16.4282282Z          ~~~~
2026-10-24T14:31:16.4282284Z
2026-10-24T14:31:16.4282648Z src/state/threadHistoryController.ts:52:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadHistoryController.register")((environmentId, threadId, handler) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4282651Z
2026-10-24T14:31:16.4282717Z 52       register: (environmentId, threadId, handler) =>
2026-10-24T14:31:16.4282758Z          ~~~~~~~~
2026-10-24T14:31:16.4282760Z
2026-10-24T14:31:16.4283091Z src/state/threadHistoryController.ts:64:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadHistoryController.unregister")((registration) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4283096Z
2026-10-24T14:31:16.4283146Z 64       unregister: (registration) =>
2026-10-24T14:31:16.4283187Z          ~~~~~~~~~~
2026-10-24T14:31:16.4283189Z
2026-10-24T14:31:16.4283558Z src/state/threadHistoryController.ts:79:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadHistoryController.loadEarlier")((environmentId, threadId, throughEntryId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4283562Z
2026-10-24T14:31:16.4283644Z 79       loadEarlier: (environmentId, threadId, throughEntryId) =>
2026-10-24T14:31:16.4283685Z          ~~~~~~~~~~~
2026-10-24T14:31:16.4283687Z
2026-10-24T14:31:16.4284052Z src/state/threadHistoryController.ts:89:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadHistoryController.reconcilePendingWork")((environmentId, threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4284056Z
2026-10-24T14:31:16.4284130Z 89       reconcilePendingWork: (environmentId, threadId) =>
2026-10-24T14:31:16.4284173Z          ~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4284175Z
2026-10-24T14:31:16.4284400Z src/state/threads-sync.test.ts:1458:29 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4284402Z
2026-10-24T14:31:16.4284484Z 1458             : { loadCached: Effect.succeed(Option.some(saved!)) },
2026-10-24T14:31:16.4284536Z                                  ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4284538Z
2026-10-24T14:31:16.4284798Z src/state/vcsAction.ts:447:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("execute")((input, registry) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4284802Z
2026-10-24T14:31:16.4284885Z 447       execute: (input: RunVcsStackedActionInput, registry) => {
2026-10-24T14:31:16.4284926Z           ~~~~~~~
2026-10-24T14:31:16.4284928Z
2026-10-24T14:31:16.4284930Z
2026-10-24T14:31:16.4284979Z ~/apps/mobile$ tsc --noEmit
2026-10-24T14:31:16.4285025Z ~/infra/relay$ tsc --noEmit
2026-10-24T14:31:16.4285070Z ~/apps/web$ tsc --noEmit
2026-10-24T14:31:16.4285113Z Result (22 files):
2026-10-24T14:31:16.4285186Z - 0 errors
2026-10-24T14:31:16.4285228Z - 0 warnings
2026-10-24T14:31:16.4285267Z - 0 hints
2026-10-24T14:31:16.4285270Z
2026-10-24T14:31:16.4285272Z
2026-10-24T14:31:16.4285321Z ~/apps/desktop$ tsc --noEmit
2026-10-24T14:31:16.4285696Z src/app/DesktopAppActivation.ts:389:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppActivation.complete")((response) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4285699Z
2026-10-24T14:31:16.4285800Z 389     complete: (response) => Effect.sync(() => broker.complete(response)),
2026-10-24T14:31:16.4285913Z         ~~~~~~~~
2026-10-24T14:31:16.4285917Z
2026-10-24T14:31:16.4286138Z src/app/DesktopClerk.test.ts:300:27 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4286141Z
2026-10-24T14:31:16.4286224Z 300       currentMainOrFirst: Effect.succeed(Option.some(window)),
2026-10-24T14:31:16.4286273Z                               ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4286275Z
2026-10-24T14:31:16.4286552Z src/app/DesktopObservability.ts:461:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("onSome")(function*(logFile) { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4286555Z
2026-10-24T14:31:16.4286601Z 461     onSome: (logFile) =>
2026-10-24T14:31:16.4286641Z         ~~~~~~
2026-10-24T14:31:16.4286643Z
2026-10-24T14:31:16.4286972Z src/app/DesktopObservability.ts:591:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBackendOutputLogFactory.forInstance")((id) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4286976Z
2026-10-24T14:31:16.4287031Z 591       forInstance: (id) => makeForId(id),
2026-10-24T14:31:16.4287072Z           ~~~~~~~~~~~
2026-10-24T14:31:16.4287075Z
2026-10-24T14:31:16.4287299Z src/app/DesktopWebLinks.test.ts:29:31 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4287301Z
2026-10-24T14:31:16.4287386Z 29           currentMainOrFirst: Effect.succeed(Option.some(window)),
2026-10-24T14:31:16.4287438Z                                  ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4287440Z
2026-10-24T14:31:16.4287716Z src/app/DesktopWebLinks.ts:72:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWebLinks.receive")((url) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4287720Z
2026-10-24T14:31:16.4287764Z 72     receive: (url) =>
2026-10-24T14:31:16.4287803Z        ~~~~~~~
2026-10-24T14:31:16.4287805Z
2026-10-24T14:31:16.4288103Z src/app/DesktopWebLinks.ts:77:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWebLinks.setRendererReady")((ready) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4288105Z
2026-10-24T14:31:16.4288156Z 77     setRendererReady: (ready) =>
2026-10-24T14:31:16.4288199Z        ~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4288201Z
2026-10-24T14:31:16.4288484Z src/backend/DesktopBackendManager.ts:1062:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("onSome")(function*(run) { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4288488Z
2026-10-24T14:31:16.4288531Z 1062       onSome: (run) =>
2026-10-24T14:31:16.4288570Z            ~~~~~~
2026-10-24T14:31:16.4288572Z
2026-10-24T14:31:16.4288862Z src/backend/DesktopBackendPool.ts:307:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBackendPool.get")((id) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4288866Z
2026-10-24T14:31:16.4288908Z 307       get: (id) =>
2026-10-24T14:31:16.4288945Z           ~~~
2026-10-24T14:31:16.4288948Z
2026-10-24T14:31:16.4289232Z src/backend/DesktopBackendPool.ts:342:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBackendPool.get")((id) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4289234Z
2026-10-24T14:31:16.4289324Z 342         get: (id) => Effect.succeed(Option.fromNullishOr(byId.get(id))),
2026-10-24T14:31:16.4289427Z             ~~~
2026-10-24T14:31:16.4289430Z
2026-10-24T14:31:16.4289724Z src/backend/DesktopBackendPool.ts:345:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBackendPool.register")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4289784Z
2026-10-24T14:31:16.4289911Z 345         register: () => Effect.die("DesktopBackendPool.layerTest does not support register"),
2026-10-24T14:31:16.4289951Z             ~~~~~~~~
2026-10-24T14:31:16.4289953Z
2026-10-24T14:31:16.4290250Z src/backend/DesktopBackendPool.ts:346:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBackendPool.unregister")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4290253Z
2026-10-24T14:31:16.4290382Z 346         unregister: () => Effect.die("DesktopBackendPool.layerTest does not support unregister"),
2026-10-24T14:31:16.4290424Z             ~~~~~~~~~~
2026-10-24T14:31:16.4290428Z
2026-10-24T14:31:16.4290694Z src/electron/ElectronApp.ts:145:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.exit")((code) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4290696Z
2026-10-24T14:31:16.4290739Z 145   exit: (code) =>
2026-10-24T14:31:16.4290779Z       ~~~~
2026-10-24T14:31:16.4290782Z
2026-10-24T14:31:16.4291062Z src/electron/ElectronApp.ts:149:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.relaunch")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4291065Z
2026-10-24T14:31:16.4291112Z 149   relaunch: (options) =>
2026-10-24T14:31:16.4291151Z       ~~~~~~~~
2026-10-24T14:31:16.4291154Z
2026-10-24T14:31:16.4291434Z src/electron/ElectronApp.ts:153:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.setPath")((name, path) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4291438Z
2026-10-24T14:31:16.4291488Z 153   setPath: (name, path) =>
2026-10-24T14:31:16.4291529Z       ~~~~~~~
2026-10-24T14:31:16.4291531Z
2026-10-24T14:31:16.4291802Z src/electron/ElectronApp.ts:157:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.setName")((name) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4291806Z
2026-10-24T14:31:16.4291851Z 157   setName: (name) =>
2026-10-24T14:31:16.4291889Z       ~~~~~~~
2026-10-24T14:31:16.4291891Z
2026-10-24T14:31:16.4292194Z src/electron/ElectronApp.ts:161:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.setAboutPanelOptions")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4292196Z
2026-10-24T14:31:16.4292253Z 161   setAboutPanelOptions: (options) =>
2026-10-24T14:31:16.4292295Z       ~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4292297Z
2026-10-24T14:31:16.4292586Z src/electron/ElectronApp.ts:165:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.setAppUserModelId")((id) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4292588Z
2026-10-24T14:31:16.4292639Z 165   setAppUserModelId: (id) =>
2026-10-24T14:31:16.4292682Z       ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4292685Z
2026-10-24T14:31:16.4293018Z src/electron/ElectronApp.ts:170:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.setAsDefaultProtocolClient")((protocol, path, args) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4293022Z
2026-10-24T14:31:16.4293102Z 170   setAsDefaultProtocolClient: (protocol, path, args) =>
2026-10-24T14:31:16.4293147Z       ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4293149Z
2026-10-24T14:31:16.4293505Z src/electron/ElectronApp.ts:177:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.setDesktopName")((desktopName) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4293507Z
2026-10-24T14:31:16.4293561Z 177   setDesktopName: (desktopName) =>
2026-10-24T14:31:16.4293600Z       ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4293602Z
2026-10-24T14:31:16.4293887Z src/electron/ElectronApp.ts:184:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.setDockIcon")((iconPath) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4293956Z
2026-10-24T14:31:16.4294005Z 184   setDockIcon: (iconPath) =>
2026-10-24T14:31:16.4294044Z       ~~~~~~~~~~~
2026-10-24T14:31:16.4294046Z
2026-10-24T14:31:16.4294370Z src/electron/ElectronApp.ts:188:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.appendCommandLineSwitch")((switchName, value) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4294373Z
2026-10-24T14:31:16.4294445Z 188   appendCommandLineSwitch: (switchName, value) =>
2026-10-24T14:31:16.4294492Z       ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4294494Z
2026-10-24T14:31:16.4294799Z src/electron/ElectronApp.ts:196:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.onBeforeQuitForUpdate")((listener) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4294803Z
2026-10-24T14:31:16.4294860Z 196   onBeforeQuitForUpdate: (listener) =>
2026-10-24T14:31:16.4294902Z       ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4294904Z
2026-10-24T14:31:16.4295233Z src/electron/ElectronApp.ts:206:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.removeCommandLineSwitch")((switchName) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4295236Z
2026-10-24T14:31:16.4295298Z 206   removeCommandLineSwitch: (switchName) =>
2026-10-24T14:31:16.4295342Z       ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4295344Z
2026-10-24T14:31:16.4295658Z src/electron/ElectronDialog.ts:169:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronDialog.showMessageBox")((options, owner) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4295661Z
2026-10-24T14:31:16.4295715Z 169   showMessageBox: (options, owner) =>
2026-10-24T14:31:16.4295756Z       ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4295758Z
2026-10-24T14:31:16.4296067Z src/electron/ElectronDialog.ts:185:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronDialog.showErrorBox")((title, content) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4296069Z
2026-10-24T14:31:16.4296123Z 185   showErrorBox: (title, content) =>
2026-10-24T14:31:16.4296164Z       ~~~~~~~~~~~~
2026-10-24T14:31:16.4296166Z
2026-10-24T14:31:16.4296473Z src/electron/ElectronMenu.ts:193:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronMenu.setApplicationMenu")((template) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4296475Z
2026-10-24T14:31:16.4296529Z 193     setApplicationMenu: (template) =>
2026-10-24T14:31:16.4296572Z         ~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4296575Z
2026-10-24T14:31:16.4296865Z src/electron/ElectronMenu.ts:207:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronMenu.popupTemplate")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4296869Z
2026-10-24T14:31:16.4296920Z 207     popupTemplate: (input) =>
2026-10-24T14:31:16.4296960Z         ~~~~~~~~~~~~~
2026-10-24T14:31:16.4296962Z
2026-10-24T14:31:16.4297254Z src/electron/ElectronMenu.ts:225:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronMenu.showContextMenu")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4297256Z
2026-10-24T14:31:16.4297308Z 225     showContextMenu: (input) =>
2026-10-24T14:31:16.4297410Z         ~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4297413Z
2026-10-24T14:31:16.4297770Z src/electron/ElectronPowerMonitor.ts:82:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronPowerMonitor.getSystemIdleState")((idleThresholdSeconds) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4297835Z
2026-10-24T14:31:16.4297903Z 82   getSystemIdleState: (idleThresholdSeconds) =>
2026-10-24T14:31:16.4297945Z      ~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4297947Z
2026-10-24T14:31:16.4298263Z src/electron/ElectronSafeStorage.ts:77:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronSafeStorage.encryptString")((value) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4298266Z
2026-10-24T14:31:16.4298315Z 77     encryptString: (value) =>
2026-10-24T14:31:16.4298358Z        ~~~~~~~~~~~~~
2026-10-24T14:31:16.4298360Z
2026-10-24T14:31:16.4298673Z src/electron/ElectronSafeStorage.ts:82:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronSafeStorage.decryptString")((value) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4298676Z
2026-10-24T14:31:16.4298723Z 82     decryptString: (value) =>
2026-10-24T14:31:16.4298762Z        ~~~~~~~~~~~~~
2026-10-24T14:31:16.4298767Z
2026-10-24T14:31:16.4299057Z src/electron/ElectronShell.ts:68:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronShell.openExternal")((rawUrl) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4299060Z
2026-10-24T14:31:16.4299108Z 68   openExternal: (rawUrl) =>
2026-10-24T14:31:16.4299147Z      ~~~~~~~~~~~~
2026-10-24T14:31:16.4299149Z
2026-10-24T14:31:16.4299451Z src/electron/ElectronShell.ts:79:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronShell.openSystemSettings")((pane) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4299455Z
2026-10-24T14:31:16.4299507Z 79   openSystemSettings: (pane) =>
2026-10-24T14:31:16.4299548Z      ~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4299551Z
2026-10-24T14:31:16.4299827Z src/electron/ElectronShell.ts:86:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronShell.copyText")((text) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4299833Z
2026-10-24T14:31:16.4299877Z 86   copyText: (text) =>
2026-10-24T14:31:16.4299917Z      ~~~~~~~~
2026-10-24T14:31:16.4299919Z
2026-10-24T14:31:16.4300201Z src/electron/ElectronTheme.ts:34:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronTheme.setSource")((theme) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4300203Z
2026-10-24T14:31:16.4300249Z 34   setSource: (theme) =>
2026-10-24T14:31:16.4300289Z      ~~~~~~~~~
2026-10-24T14:31:16.4300292Z
2026-10-24T14:31:16.4300579Z src/electron/ElectronTheme.ts:41:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronTheme.onUpdated")((listener) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4300581Z
2026-10-24T14:31:16.4300628Z 41   onUpdated: (listener) =>
2026-10-24T14:31:16.4300668Z      ~~~~~~~~~
2026-10-24T14:31:16.4300672Z
2026-10-24T14:31:16.4300970Z src/electron/ElectronUpdater.ts:85:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronUpdater.setFeedURL")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4300973Z
2026-10-24T14:31:16.4301018Z 85   setFeedURL: (options) =>
2026-10-24T14:31:16.4301059Z      ~~~~~~~~~~
2026-10-24T14:31:16.4301061Z
2026-10-24T14:31:16.4301365Z src/electron/ElectronUpdater.ts:90:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronUpdater.setAutoDownload")((value) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4301367Z
2026-10-24T14:31:16.4301481Z 90   setAutoDownload: (value) =>
2026-10-24T14:31:16.4301522Z      ~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4301524Z
2026-10-24T14:31:16.4301844Z src/electron/ElectronUpdater.ts:95:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronUpdater.setAutoInstallOnAppQuit")((value) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4301909Z
2026-10-24T14:31:16.4301965Z 95   setAutoInstallOnAppQuit: (value) =>
2026-10-24T14:31:16.4302009Z      ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4302011Z
2026-10-24T14:31:16.4302306Z src/electron/ElectronUpdater.ts:100:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronUpdater.setChannel")((channel) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4302308Z
2026-10-24T14:31:16.4302353Z 100   setChannel: (channel) =>
2026-10-24T14:31:16.4302393Z       ~~~~~~~~~~
2026-10-24T14:31:16.4302395Z
2026-10-24T14:31:16.4302704Z src/electron/ElectronUpdater.ts:105:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronUpdater.setAllowPrerelease")((value) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4302706Z
2026-10-24T14:31:16.4302757Z 105   setAllowPrerelease: (value) =>
2026-10-24T14:31:16.4302801Z       ~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4302803Z
2026-10-24T14:31:16.4303109Z src/electron/ElectronUpdater.ts:111:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronUpdater.setAllowDowngrade")((value) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4303112Z
2026-10-24T14:31:16.4303161Z 111   setAllowDowngrade: (value) =>
2026-10-24T14:31:16.4303202Z       ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4303205Z
2026-10-24T14:31:16.4303511Z src/electron/ElectronUpdater.ts:116:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronUpdater.setFullChangelog")((value) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4303514Z
2026-10-24T14:31:16.4303563Z 116   setFullChangelog: (value) =>
2026-10-24T14:31:16.4303603Z       ~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4303605Z
2026-10-24T14:31:16.4303942Z src/electron/ElectronUpdater.ts:121:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronUpdater.setDisableDifferentialDownload")((value) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4303945Z
2026-10-24T14:31:16.4304012Z 121   setDisableDifferentialDownload: (value) =>
2026-10-24T14:31:16.4304058Z       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4304060Z
2026-10-24T14:31:16.4304355Z src/electron/ElectronUpdater.ts:140:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronUpdater.quitAndInstall")((_) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4304359Z
2026-10-24T14:31:16.4304431Z 140   quitAndInstall: ({ isSilent, isForceRunAfter }) =>
2026-10-24T14:31:16.4304471Z       ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4304473Z
2026-10-24T14:31:16.4304769Z src/electron/ElectronUpdater.ts:154:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronUpdater.on")((eventName, listener) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4304773Z
2026-10-24T14:31:16.4304821Z 154   on: (eventName, listener) => {
2026-10-24T14:31:16.4304860Z       ~~
2026-10-24T14:31:16.4304862Z
2026-10-24T14:31:16.4305179Z src/electron/ElectronWindow.ts:211:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronWindow.create")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4305182Z
2026-10-24T14:31:16.4305229Z 211     create: (options) => {
2026-10-24T14:31:16.4305267Z         ~~~~~~
2026-10-24T14:31:16.4305269Z
2026-10-24T14:31:16.4305614Z src/electron/ElectronWindow.ts:243:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronWindow.setMain")((window) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4305617Z
2026-10-24T14:31:16.4305709Z 243     setMain: (window) => Ref.set(mainWindowRef, Option.some(window)),
2026-10-24T14:31:16.4305799Z         ~~~~~~~
2026-10-24T14:31:16.4305801Z
2026-10-24T14:31:16.4306090Z src/electron/ElectronWindow.ts:244:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronWindow.clearMain")((window) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4306092Z
2026-10-24T14:31:16.4306138Z 244     clearMain: (window) =>
2026-10-24T14:31:16.4306179Z         ~~~~~~~~~
2026-10-24T14:31:16.4306181Z
2026-10-24T14:31:16.4306475Z src/electron/ElectronWindow.ts:254:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronWindow.prepareReveal")((window) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4306479Z
2026-10-24T14:31:16.4306529Z 254     prepareReveal: (window) =>
2026-10-24T14:31:16.4306571Z         ~~~~~~~~~~~~~
2026-10-24T14:31:16.4306573Z
2026-10-24T14:31:16.4306856Z src/electron/ElectronWindow.ts:264:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronWindow.reveal")((window) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4306860Z
2026-10-24T14:31:16.4306906Z 264     reveal: (window) =>
2026-10-24T14:31:16.4306943Z         ~~~~~~
2026-10-24T14:31:16.4306946Z
2026-10-24T14:31:16.4307295Z src/settings/DesktopAppSettings.ts:526:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setMainWindowBounds")((bounds, isMaximized) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4307298Z
2026-10-24T14:31:16.4307367Z 526     setMainWindowBounds: (bounds, isMaximized) =>
2026-10-24T14:31:16.4307409Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4307413Z
2026-10-24T14:31:16.4307740Z src/settings/DesktopAppSettings.ts:538:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setServerExposureMode")((mode) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4307744Z
2026-10-24T14:31:16.4307800Z 538     setServerExposureMode: (mode) =>
2026-10-24T14:31:16.4307843Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4307846Z
2026-10-24T14:31:16.4308168Z src/settings/DesktopAppSettings.ts:542:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setTailscaleServe")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4308170Z
2026-10-24T14:31:16.4308222Z 542     setTailscaleServe: (input) =>
2026-10-24T14:31:16.4308264Z         ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4308266Z
2026-10-24T14:31:16.4308589Z src/settings/DesktopAppSettings.ts:546:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setUpdateChannel")((channel) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4308591Z
2026-10-24T14:31:16.4308644Z 546     setUpdateChannel: (channel) =>
2026-10-24T14:31:16.4308686Z         ~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4308690Z
2026-10-24T14:31:16.4309017Z src/settings/DesktopAppSettings.ts:550:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setWslBackendEnabled")((enabled) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4309020Z
2026-10-24T14:31:16.4309075Z 550     setWslBackendEnabled: (enabled) =>
2026-10-24T14:31:16.4309118Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4309120Z
2026-10-24T14:31:16.4309432Z src/settings/DesktopAppSettings.ts:554:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setWslDistro")((distro) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4309496Z
2026-10-24T14:31:16.4309544Z 554     setWslDistro: (distro) =>
2026-10-24T14:31:16.4309586Z         ~~~~~~~~~~~~
2026-10-24T14:31:16.4309588Z
2026-10-24T14:31:16.4309894Z src/settings/DesktopAppSettings.ts:560:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setWslOnly")((enabled) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4309958Z
2026-10-24T14:31:16.4310007Z 560     setWslOnly: (enabled) =>
2026-10-24T14:31:16.4310047Z         ~~~~~~~~~~
2026-10-24T14:31:16.4310050Z
2026-10-24T14:31:16.4310391Z src/settings/DesktopAppSettings.ts:564:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setLocalEnvironmentEnabled")((enabled) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4310393Z
2026-10-24T14:31:16.4310458Z 564     setLocalEnvironmentEnabled: (enabled) =>
2026-10-24T14:31:16.4310503Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4310505Z
2026-10-24T14:31:16.4310849Z src/settings/DesktopAppSettings.ts:599:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setMainWindowBounds")((bounds, isMaximized) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4310853Z
2026-10-24T14:31:16.4310925Z 599         setMainWindowBounds: (bounds, isMaximized) =>
2026-10-24T14:31:16.4310970Z             ~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4310972Z
2026-10-24T14:31:16.4311297Z src/settings/DesktopAppSettings.ts:601:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setServerExposureMode")((mode) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4311300Z
2026-10-24T14:31:16.4311356Z 601         setServerExposureMode: (mode) =>
2026-10-24T14:31:16.4311400Z             ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4311402Z
2026-10-24T14:31:16.4311722Z src/settings/DesktopAppSettings.ts:603:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setTailscaleServe")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4311724Z
2026-10-24T14:31:16.4311853Z 603         setTailscaleServe: (input) => update((settings) => setTailscaleServe(settings, input)),
2026-10-24T14:31:16.4311897Z             ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4311901Z
2026-10-24T14:31:16.4312222Z src/settings/DesktopAppSettings.ts:604:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setUpdateChannel")((channel) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4312224Z
2026-10-24T14:31:16.4312352Z 604         setUpdateChannel: (channel) => update((settings) => setUpdateChannel(settings, channel)),
2026-10-24T14:31:16.4312394Z             ~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4312396Z
2026-10-24T14:31:16.4312727Z src/settings/DesktopAppSettings.ts:605:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setWslBackendEnabled")((enabled) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4312729Z
2026-10-24T14:31:16.4312788Z 605         setWslBackendEnabled: (enabled) =>
2026-10-24T14:31:16.4312832Z             ~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4312835Z
2026-10-24T14:31:16.4313146Z src/settings/DesktopAppSettings.ts:607:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setWslDistro")((distro) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4313148Z
2026-10-24T14:31:16.4313261Z 607         setWslDistro: (distro) => update((settings) => setWslDistro(settings, distro)),
2026-10-24T14:31:16.4313303Z             ~~~~~~~~~~~~
2026-10-24T14:31:16.4313305Z
2026-10-24T14:31:16.4313675Z src/settings/DesktopAppSettings.ts:608:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setWslOnly")((enabled) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4313680Z
2026-10-24T14:31:16.4313787Z 608         setWslOnly: (enabled) => update((settings) => setWslOnly(settings, enabled)),
2026-10-24T14:31:16.4313830Z             ~~~~~~~~~~
2026-10-24T14:31:16.4313869Z
2026-10-24T14:31:16.4314212Z src/settings/DesktopAppSettings.ts:609:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setLocalEnvironmentEnabled")((enabled) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4314214Z
2026-10-24T14:31:16.4314280Z 609         setLocalEnvironmentEnabled: (enabled) =>
2026-10-24T14:31:16.4314399Z             ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4314401Z
2026-10-24T14:31:16.4314716Z src/settings/DesktopClientSettings.ts:197:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopClientSettings.set")((settings) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4314718Z
2026-10-24T14:31:16.4314765Z 197     set: (settings) =>
2026-10-24T14:31:16.4314806Z         ~~~
2026-10-24T14:31:16.4314808Z
2026-10-24T14:31:16.4315118Z src/settings/DesktopClientSettings.ts:231:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopClientSettings.set")((settings) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4315122Z
2026-10-24T14:31:16.4315239Z 231         set: (settings) => Ref.set(settingsRef, Option.some(settings)),
2026-10-24T14:31:16.4315279Z             ~~~
2026-10-24T14:31:16.4315281Z
2026-10-24T14:31:16.4315619Z src/snapShot/DesktopSnapShot.ts:1729:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopSnapShot.setAnimationDestination")((id, destination) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4315622Z
2026-10-24T14:31:16.4315695Z 1729     setAnimationDestination: (id, destination) =>
2026-10-24T14:31:16.4315739Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4315741Z
2026-10-24T14:31:16.4316044Z src/snapShot/DesktopSnapShot.ts:1740:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopSnapShot.dismissAnimation")((id) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4316048Z
2026-10-24T14:31:16.4316097Z 1740     dismissAnimation: (id) =>
2026-10-24T14:31:16.4316141Z          ~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4316144Z
2026-10-24T14:31:16.4316436Z src/snapShot/DesktopSnapShot.ts:1745:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopSnapShot.acknowledge")((id) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4316440Z
2026-10-24T14:31:16.4316487Z 1745     acknowledge: (id) =>
2026-10-24T14:31:16.4316525Z          ~~~~~~~~~~~
2026-10-24T14:31:16.4316528Z
2026-10-24T14:31:16.4316846Z src/ssh/DesktopSshEnvironment.ts:136:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopSshEnvironment.discoverHosts")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4316848Z
2026-10-24T14:31:16.4316897Z 136     discoverHosts: (input) =>
2026-10-24T14:31:16.4316940Z         ~~~~~~~~~~~~~
2026-10-24T14:31:16.4316942Z
2026-10-24T14:31:16.4317254Z src/ssh/DesktopSshEnvironment.ts:141:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopSshEnvironment.resolveHost")((alias) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4317256Z
2026-10-24T14:31:16.4317302Z 141     resolveHost: (alias) =>
2026-10-24T14:31:16.4317344Z         ~~~~~~~~~~~
2026-10-24T14:31:16.4317346Z
2026-10-24T14:31:16.4317771Z src/ssh/DesktopSshEnvironment.ts:146:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopSshEnvironment.ensureEnvironment")((target, ensureOptions) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4317774Z
2026-10-24T14:31:16.4317842Z 146     ensureEnvironment: (target, ensureOptions) =>
2026-10-24T14:31:16.4317883Z         ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4317885Z
2026-10-24T14:31:16.4318216Z src/ssh/DesktopSshEnvironment.ts:154:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopSshEnvironment.disconnectEnvironment")((target) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4318298Z
2026-10-24T14:31:16.4318356Z 154     disconnectEnvironment: (target) =>
2026-10-24T14:31:16.4318399Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4318401Z
2026-10-24T14:31:16.4318721Z src/updates/DesktopUpdates.ts:1171:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopUpdates.installPrepared")((expectedVersion) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4318724Z
2026-10-24T14:31:16.4318852Z 1171     installPrepared: (expectedVersion) => installWithExpectedVersion(expectedVersion),
2026-10-24T14:31:16.4318894Z          ~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4318897Z
2026-10-24T14:31:16.4319195Z src/wsl/DesktopWslEnvironment.ts:1101:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.preWarm")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4319199Z
2026-10-24T14:31:16.4319253Z 1101       preWarm: () => Effect.void,
2026-10-24T14:31:16.4319297Z            ~~~~~~~
2026-10-24T14:31:16.4319299Z
2026-10-24T14:31:16.4319641Z src/wsl/DesktopWslEnvironment.ts:1102:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.windowsToWslPath")((distro, windowsPath) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4319646Z
2026-10-24T14:31:16.4319712Z 1102       windowsToWslPath: (distro, windowsPath) =>
2026-10-24T14:31:16.4319755Z            ~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4319758Z
2026-10-24T14:31:16.4320077Z src/wsl/DesktopWslEnvironment.ts:1104:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.getUserHome")((distro) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4320080Z
2026-10-24T14:31:16.4320223Z 1104       getUserHome: (distro) => Effect.succeed(stub.getUserHome?.(distro) ?? Option.none<string>()),
2026-10-24T14:31:16.4320263Z            ~~~~~~~~~~~
2026-10-24T14:31:16.4320266Z
2026-10-24T14:31:16.4320578Z src/wsl/DesktopWslEnvironment.ts:1105:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.getDistroIp")((distro) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4320580Z
2026-10-24T14:31:16.4320715Z 1105       getDistroIp: (distro) => Effect.succeed(stub.getDistroIp?.(distro) ?? Option.none<string>()),
2026-10-24T14:31:16.4320756Z            ~~~~~~~~~~~
2026-10-24T14:31:16.4320759Z
2026-10-24T14:31:16.4321094Z src/wsl/DesktopWslEnvironment.ts:1106:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.prepareRuntime")((distro, archive) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4321097Z
2026-10-24T14:31:16.4321157Z 1106       prepareRuntime: (distro, archive) =>
2026-10-24T14:31:16.4321200Z            ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4321203Z
2026-10-24T14:31:16.4321536Z src/wsl/DesktopWslEnvironment.ts:1113:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.pruneRuntimes")((distro, runtimeId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4321539Z
2026-10-24T14:31:16.4321671Z 1113       pruneRuntimes: (distro, runtimeId) => stub.pruneRuntimes?.(distro, runtimeId) ?? Effect.void,
2026-10-24T14:31:16.4321713Z            ~~~~~~~~~~~~~
2026-10-24T14:31:16.4321715Z
2026-10-24T14:31:16.4322112Z src/wsl/DesktopWslEnvironment.ts:1114:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.invalidateRuntime")((distro, runtimeId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4322116Z
2026-10-24T14:31:16.4322180Z 1114       invalidateRuntime: (distro, runtimeId) =>
2026-10-24T14:31:16.4322262Z            ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4322264Z
2026-10-24T14:31:16.4322601Z src/wsl/DesktopWslEnvironment.ts:1116:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.probeRuntime")((distro, linuxAppRoot) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4322603Z
2026-10-24T14:31:16.4322665Z 1116       probeRuntime: (distro, linuxAppRoot) =>
2026-10-24T14:31:16.4322706Z            ~~~~~~~~~~~~
2026-10-24T14:31:16.4322708Z
2026-10-24T14:31:16.4323065Z src/wsl/DesktopWslEnvironment.ts:1120:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.ensureNodePty")((distro, linuxAppRoot, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4323068Z
2026-10-24T14:31:16.4323143Z 1120       ensureNodePty: (distro, linuxAppRoot, options) =>
2026-10-24T14:31:16.4323184Z            ~~~~~~~~~~~~~
2026-10-24T14:31:16.4323188Z
2026-10-24T14:31:16.4323495Z src/wsl/DesktopWslEnvironment.ts:1187:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.preWarm")((distro) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4323497Z
2026-10-24T14:31:16.4323543Z 1187       preWarm: (distro) =>
2026-10-24T14:31:16.4323584Z            ~~~~~~~
2026-10-24T14:31:16.4323586Z
2026-10-24T14:31:16.4323918Z src/wsl/DesktopWslEnvironment.ts:1192:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.prepareRuntime")((distro, archive) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4323923Z
2026-10-24T14:31:16.4323981Z 1192       prepareRuntime: (distro, archive) =>
2026-10-24T14:31:16.4324023Z            ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4324026Z
2026-10-24T14:31:16.4324357Z src/wsl/DesktopWslEnvironment.ts:1196:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.pruneRuntimes")((distro, runtimeId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4324361Z
2026-10-24T14:31:16.4324420Z 1196       pruneRuntimes: (distro, runtimeId) =>
2026-10-24T14:31:16.4324462Z            ~~~~~~~~~~~~~
2026-10-24T14:31:16.4324464Z
2026-10-24T14:31:16.4324805Z src/wsl/DesktopWslEnvironment.ts:1200:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.invalidateRuntime")((distro, runtimeId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4324807Z
2026-10-24T14:31:16.4324872Z 1200       invalidateRuntime: (distro, runtimeId) =>
2026-10-24T14:31:16.4324915Z            ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4324917Z
2026-10-24T14:31:16.4325287Z src/wsl/DesktopWslEnvironment.ts:1204:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.probeRuntime")((distro, linuxAppRoot) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4325291Z
2026-10-24T14:31:16.4325352Z 1204       probeRuntime: (distro, linuxAppRoot) =>
2026-10-24T14:31:16.4325394Z            ~~~~~~~~~~~~
2026-10-24T14:31:16.4325396Z
2026-10-24T14:31:16.4325746Z src/wsl/DesktopWslEnvironment.ts:1208:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.ensureNodePty")((distro, linuxAppRoot, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4325750Z
2026-10-24T14:31:16.4325824Z 1208       ensureNodePty: (distro, linuxAppRoot, options) =>
2026-10-24T14:31:16.4325866Z            ~~~~~~~~~~~~~
2026-10-24T14:31:16.4325925Z
2026-10-24T14:31:16.4325927Z
2026-10-24T14:31:16.4326243Z src/agentActivity/ApnsDeliveryQueue.ts:220:11 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ApnsDeliveryQueueSender.send")((body) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4326301Z
2026-10-24T14:31:16.4326346Z 220           send: (body) =>
2026-10-24T14:31:16.4326385Z               ~~~~
2026-10-24T14:31:16.4326389Z
2026-10-24T14:31:16.4326688Z src/agentActivity/FcmDeliveryQueueConsumer.ts:12:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("onFailure")(function*(error) { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4326690Z
2026-10-24T14:31:16.4326738Z 12       onFailure: (error) =>
2026-10-24T14:31:16.4326778Z          ~~~~~~~~~
2026-10-24T14:31:16.4326780Z
2026-10-24T14:31:16.4327106Z src/environments/CloudflareApiPause.ts:64:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("CloudflareApiPause.pauseUntil")((untilMillis) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4327108Z
2026-10-24T14:31:16.4327158Z 64     pauseUntil: (untilMillis) =>
2026-10-24T14:31:16.4327198Z        ~~~~~~~~~~
2026-10-24T14:31:16.4327200Z
2026-10-24T14:31:16.4327440Z src/http/Api.ts:198:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("onNone")(function*() { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4327443Z
2026-10-24T14:31:16.4327488Z 198         onNone: () =>
2026-10-24T14:31:16.4327528Z             ~~~~~~
2026-10-24T14:31:16.4327530Z
2026-10-24T14:31:16.4327797Z src/previewTunnelSweep.test.ts:53:11 - suggestion TS377124: `Effect.provideService` provides this inline single-service layer directly. effect(provideLayerSucceedToProvideService)
2026-10-24T14:31:16.4327800Z
2026-10-24T14:31:16.4327919Z 53   }).pipe(Effect.provide(Layer.succeed(HttpClient.HttpClient, cloudflare.client)));
2026-10-24T14:31:16.4327965Z              ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4327968Z
2026-10-24T14:31:16.4328252Z src/worker.ts:92:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("HttpPlatform.HttpPlatform.fileResponse")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4328256Z
2026-10-24T14:31:16.4328365Z 92   fileResponse: () => Effect.die("Relay API does not serve filesystem responses"),
2026-10-24T14:31:16.4328404Z      ~~~~~~~~~~~~
2026-10-24T14:31:16.4328406Z
2026-10-24T14:31:16.4328691Z src/worker.ts:93:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("HttpPlatform.HttpPlatform.fileWebResponse")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4328693Z
2026-10-24T14:31:16.4328800Z 93   fileWebResponse: () => Effect.die("Relay API does not serve file responses"),
2026-10-24T14:31:16.4328841Z      ~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4328843Z
2026-10-24T14:31:16.4329100Z src/worker.ts:242:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("HookInbox.HookInbox.hold")((_) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4329103Z
2026-10-24T14:31:16.4329164Z 242       hold: ({ endpointKey, baseUrl, hook }) =>
2026-10-24T14:31:16.4329207Z           ~~~~
2026-10-24T14:31:16.4329209Z
2026-10-24T14:31:16.4329462Z src/worker.ts:244:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("HookInbox.HookInbox.wake")((_) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4329465Z
2026-10-24T14:31:16.4329521Z 244       wake: ({ endpointKey, baseUrl }) =>
2026-10-24T14:31:16.4329560Z           ~~~~
2026-10-24T14:31:16.4329562Z
2026-10-24T14:31:16.4329818Z src/worker.ts:246:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("HookInbox.HookInbox.clear")((_) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4329821Z
2026-10-24T14:31:16.4329935Z 246       clear: ({ endpointKey }) =>
2026-10-24T14:31:16.4329975Z           ~~~~~
2026-10-24T14:31:16.4329978Z
2026-10-24T14:31:16.4330293Z src/worker.ts:275:15 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("FcmDeliveryQueueSender.FcmDeliveryQueueSender.send")((body) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4330363Z
2026-10-24T14:31:16.4330408Z 275               send: (body) =>
2026-10-24T14:31:16.4330451Z                   ~~~~
2026-10-24T14:31:16.4330453Z
2026-10-24T14:31:16.4330455Z
2026-10-24T14:31:16.4330457Z
2026-10-24T14:31:16.4330796Z src/connection/platform.ts:820:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentOwnedDataCleanup.clear")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4330799Z
2026-10-24T14:31:16.4330846Z 820     clear: (environmentId) =>
2026-10-24T14:31:16.4330887Z         ~~~~~
2026-10-24T14:31:16.4330890Z
2026-10-24T14:31:16.4331189Z src/connection/platform.ts:830:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("EnvironmentRpcRequestObserver.observe")((_) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4331195Z
2026-10-24T14:31:16.4331278Z 830     observe: ({ environmentId, environmentLabel, method }) =>
2026-10-24T14:31:16.4331319Z         ~~~~~~~
2026-10-24T14:31:16.4331321Z
2026-10-24T14:31:16.4331619Z src/connection/storage.ts:551:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestRoutingPermissions.get")((entry) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4331621Z
2026-10-24T14:31:16.4331664Z 551     get: (entry) =>
2026-10-24T14:31:16.4331702Z         ~~~
2026-10-24T14:31:16.4331705Z
2026-10-24T14:31:16.4332022Z src/connection/storage.ts:578:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestRoutingPermissions.set")((entry, permission) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4332024Z
2026-10-24T14:31:16.4332075Z 578     set: (entry, permission) => {
2026-10-24T14:31:16.4332114Z         ~~~
2026-10-24T14:31:16.4332117Z
2026-10-24T14:31:16.4332433Z src/connection/storage.ts:598:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestRoutingPermissions.forget")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4332435Z
2026-10-24T14:31:16.4332512Z 598     forget: (environmentId) => write(environmentId, null),
2026-10-24T14:31:16.4332553Z         ~~~~~~
2026-10-24T14:31:16.4332555Z
2026-10-24T14:31:16.4332903Z src/connection/storage.ts:645:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.ConnectionRegistrationStore.register")((registration, routes) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4332907Z
2026-10-24T14:31:16.4332965Z 645       register: (registration, routes) =>
2026-10-24T14:31:16.4333004Z           ~~~~~~~~
2026-10-24T14:31:16.4333008Z
2026-10-24T14:31:16.4333360Z src/connection/storage.ts:649:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.ConnectionRegistrationStore.setRoutes")((environmentId, routes) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4333364Z
2026-10-24T14:31:16.4333423Z 649       setRoutes: (environmentId, routes) =>
2026-10-24T14:31:16.4333463Z           ~~~~~~~~~
2026-10-24T14:31:16.4333466Z
2026-10-24T14:31:16.4333798Z src/connection/storage.ts:653:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.ConnectionRegistrationStore.remove")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4333800Z
2026-10-24T14:31:16.4333849Z 653       remove: (environmentId) =>
2026-10-24T14:31:16.4333945Z           ~~~~~~
2026-10-24T14:31:16.4333948Z
2026-10-24T14:31:16.4334304Z src/connection/storage.ts:657:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.ConnectionRegistrationStore.setEnabled")((environmentId, enabled) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4334370Z
2026-10-24T14:31:16.4334432Z 657       setEnabled: (environmentId, enabled) =>
2026-10-24T14:31:16.4334473Z           ~~~~~~~~~~
2026-10-24T14:31:16.4334475Z
2026-10-24T14:31:16.4334801Z src/connection/storage.ts:734:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.loadShell")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4334805Z
2026-10-24T14:31:16.4334855Z 734       loadShell: (environmentId) =>
2026-10-24T14:31:16.4334896Z           ~~~~~~~~~
2026-10-24T14:31:16.4334898Z
2026-10-24T14:31:16.4335262Z src/connection/storage.ts:770:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.loadServerConfig")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4335264Z
2026-10-24T14:31:16.4335323Z 770       loadServerConfig: (environmentId) =>
2026-10-24T14:31:16.4335366Z           ~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4335368Z
2026-10-24T14:31:16.4335712Z src/connection/storage.ts:804:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.loadThread")((environmentId, threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4335714Z
2026-10-24T14:31:16.4335775Z 804       loadThread: (environmentId, threadId) =>
2026-10-24T14:31:16.4335816Z           ~~~~~~~~~~
2026-10-24T14:31:16.4335818Z
2026-10-24T14:31:16.4336158Z src/connection/storage.ts:853:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.loadVcsRefs")((environmentId, cwd) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4336161Z
2026-10-24T14:31:16.4336218Z 853       loadVcsRefs: (environmentId, cwd) =>
2026-10-24T14:31:16.4336260Z           ~~~~~~~~~~~
2026-10-24T14:31:16.4336262Z
2026-10-24T14:31:16.4336607Z src/connection/storage.ts:895:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.removeVcsRefs")((environmentId, cwd) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4336609Z
2026-10-24T14:31:16.4336668Z 895       removeVcsRefs: (environmentId, cwd) =>
2026-10-24T14:31:16.4336709Z           ~~~~~~~~~~~~~
2026-10-24T14:31:16.4336711Z
2026-10-24T14:31:16.4337043Z src/connection/storage.ts:901:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.clearVcsRefs")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4337047Z
2026-10-24T14:31:16.4337102Z 901       clearVcsRefs: (environmentId) =>
2026-10-24T14:31:16.4337143Z           ~~~~~~~~~~~~
2026-10-24T14:31:16.4337145Z
2026-10-24T14:31:16.4337491Z src/connection/storage.ts:907:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.removeThread")((environmentId, threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4337495Z
2026-10-24T14:31:16.4337560Z 907       removeThread: (environmentId, threadId) =>
2026-10-24T14:31:16.4337599Z           ~~~~~~~~~~~~
2026-10-24T14:31:16.4337601Z
2026-10-24T14:31:16.4337919Z src/connection/storage.ts:913:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.clear")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4337922Z
2026-10-24T14:31:16.4337972Z 913       clear: (environmentId) =>
2026-10-24T14:31:16.4338072Z           ~~~~~
2026-10-24T14:31:16.4338075Z
2026-10-24T14:31:16.4338077Z
2026-10-24T14:31:16.4338124Z ~/apps/server$ tsc --noEmit
2026-10-24T14:31:16.4338374Z scripts/acp-mock-agent.ts:941:16 - suggestion TS377015: This expression contains chained `pipe` calls that can be simplified to a single `pipe` call. effect(unnecessaryPipeChain)
2026-10-24T14:31:16.4338438Z
2026-10-24T14:31:16.4338497Z 941         yield* Effect.sleep("1200 millis")
2026-10-24T14:31:16.4338547Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4338589Z 942           .pipe(
2026-10-24T14:31:16.4338628Z     ~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4338667Z ...
2026-10-24T14:31:16.4338706Z 954           )
2026-10-24T14:31:16.4338745Z     ~~~~~~~~~~~
2026-10-24T14:31:16.4338797Z 955           .pipe(Effect.forkDetach);
2026-10-24T14:31:16.4338843Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4338845Z
2026-10-24T14:31:16.4339153Z scripts/record-codex-app-server-replay-fixture.ts:1175:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("logger")((event) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4339155Z
2026-10-24T14:31:16.4339201Z 1175     logger: (event) => {
2026-10-24T14:31:16.4339240Z          ~~~~~~
2026-10-24T14:31:16.4339242Z
2026-10-24T14:31:16.4339669Z scripts/record-grok-acp-replay-fixture.ts:376:38 - suggestion TS377112: This input is already assignable to the schema's Encoded type. Use `decodeSync` to preserve compile-time type checking instead of discarding the input type through `decodeUnknownSync`. effect(preferTypedSchemaDecoder)
2026-10-24T14:31:16.4339671Z
2026-10-24T14:31:16.4339776Z 376 const DEFAULT_GROK_SETTINGS = Schema.decodeUnknownSync(GrokSettings)({});
2026-10-24T14:31:16.4339833Z                                          ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4339836Z
2026-10-24T14:31:16.4340238Z src/assets/AssetAccess.test.ts:975:42 - suggestion TS377112: This input is already assignable to the schema's Encoded type. Use `decodeEffect` to preserve compile-time type checking instead of discarding the input type through `decodeUnknownEffect`. effect(preferTypedSchemaDecoder)
2026-10-24T14:31:16.4340241Z
2026-10-24T14:31:16.4340353Z 975       const { resource } = yield* Schema.decodeUnknownEffect(AssetCreateUrlInput)({
2026-10-24T14:31:16.4340416Z                                              ~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4340419Z
2026-10-24T14:31:16.4340713Z src/auth/EnvironmentAuth.ts:1346:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("EnvironmentAuth.getDescriptor")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4340716Z
2026-10-24T14:31:16.4340763Z 1346     getDescriptor: () =>
2026-10-24T14:31:16.4340804Z          ~~~~~~~~~~~~~
2026-10-24T14:31:16.4340806Z
2026-10-24T14:31:16.4341119Z src/auth/EnvironmentAuthPolicy.ts:55:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("EnvironmentAuthPolicy.getDescriptor")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4341122Z
2026-10-24T14:31:16.4341169Z 55     getDescriptor: () =>
2026-10-24T14:31:16.4341209Z        ~~~~~~~~~~~~~
2026-10-24T14:31:16.4341212Z
2026-10-24T14:31:16.4341538Z src/auth/McpOAuth.ts:540:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("McpHttpServer.McpClientAuthenticator.authenticate")((request) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4341542Z
2026-10-24T14:31:16.4341592Z 540       authenticate: (request) =>
2026-10-24T14:31:16.4341631Z           ~~~~~~~~~~~~
2026-10-24T14:31:16.4341633Z
2026-10-24T14:31:16.4341883Z src/cli/thread.ts:468:11 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T14:31:16.4341886Z
2026-10-24T14:31:16.4341939Z 468         : Effect.succeed(undefined),
2026-10-24T14:31:16.4342041Z               ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4342043Z
2026-10-24T14:31:16.4342326Z src/cloud/CliTokenManager.ts:328:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("HttpClientError")(function*(cause) { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4342388Z
2026-10-24T14:31:16.4342438Z 328       HttpClientError: (cause) =>
2026-10-24T14:31:16.4342481Z           ~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4342483Z
2026-10-24T14:31:16.4342720Z src/cloud/CloudLink.lifecycle.test.ts:166:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4342722Z
2026-10-24T14:31:16.4342788Z 166             latest: Effect.succeed(Option.none()),
2026-10-24T14:31:16.4342832Z                         ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4342834Z
2026-10-24T14:31:16.4343053Z src/cloud/CloudLink.test.ts:99:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4343055Z
2026-10-24T14:31:16.4343115Z 99         latest: Effect.succeed(Option.none()),
2026-10-24T14:31:16.4343159Z                    ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4343161Z
2026-10-24T14:31:16.4343503Z src/cloud/ManagedEndpointRuntime.ts:791:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("CloudManagedEndpointRuntime.requestRecovery")((config) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4343507Z
2026-10-24T14:31:16.4343635Z 791     requestRecovery: (config) => Queue.offer(recoveryRequests, config).pipe(Effect.asVoid),
2026-10-24T14:31:16.4343677Z         ~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4343679Z
2026-10-24T14:31:16.4343887Z src/cloud/http.test.ts:81:67 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4343890Z
2026-10-24T14:31:16.4344037Z 81     Layer.mock(ConnectReachability.ConnectReachability)({ latest: Effect.succeed(Option.none()) }),
2026-10-24T14:31:16.4344104Z                                                                      ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4344108Z
2026-10-24T14:31:16.4344445Z src/cloud/selfUpdate.ts:371:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ServerSelfUpdate.commitDesktopUpdate")((requestId, onHandoffAccepted) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4344449Z
2026-10-24T14:31:16.4344532Z 371     commitDesktopUpdate: (requestId, onHandoffAccepted) =>
2026-10-24T14:31:16.4344576Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4344578Z
2026-10-24T14:31:16.4344861Z src/device/DeviceService.ts:808:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DeviceService.updateTool")((tool) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4344863Z
2026-10-24T14:31:16.4344912Z 808       updateTool: (tool) =>
2026-10-24T14:31:16.4344953Z           ~~~~~~~~~~
2026-10-24T14:31:16.4344955Z
2026-10-24T14:31:16.4345267Z src/device/DeviceService.ts:823:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DeviceService.easAccount")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4345271Z
2026-10-24T14:31:16.4345317Z 823       easAccount: () =>
2026-10-24T14:31:16.4345357Z           ~~~~~~~~~~
2026-10-24T14:31:16.4345359Z
2026-10-24T14:31:16.4345670Z src/device/EasDeviceHost.ts:868:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DeviceHost.DeviceHost.ensureAgentReady")((onPhase) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4345674Z
2026-10-24T14:31:16.4345724Z 868     ensureAgentReady: (onPhase) =>
2026-10-24T14:31:16.4345767Z         ~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4345769Z
2026-10-24T14:31:16.4346057Z src/device/easProjectId.ts:201:7 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T14:31:16.4346059Z
2026-10-24T14:31:16.4346111Z 201       Effect.map(Option.some),
2026-10-24T14:31:16.4346150Z           ~~~~~~~~~~
2026-10-24T14:31:16.4346152Z
2026-10-24T14:31:16.4346442Z src/environment/DirectEndpoints.ts:141:31 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DirectEndpoints.resolve")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4346513Z
2026-10-24T14:31:16.4346590Z 141   return DirectEndpoints.of({ resolve: () => resolve });
2026-10-24T14:31:16.4346637Z                                   ~~~~~~~
2026-10-24T14:31:16.4346639Z
2026-10-24T14:31:16.4346947Z src/environment/RemoteOpenTargets.ts:83:33 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("RemoteOpenTargets.resolveTargets")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4346950Z
2026-10-24T14:31:16.4347051Z 83   return RemoteOpenTargets.of({ resolveTargets: () => resolveTargets });
2026-10-24T14:31:16.4347103Z                                    ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4347105Z
2026-10-24T14:31:16.4347406Z src/git/GitWorkflowService.ts:302:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitWorkflowService.isRepository")((cwd) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4347410Z
2026-10-24T14:31:16.4347458Z 302     isRepository: (cwd) =>
2026-10-24T14:31:16.4347498Z         ~~~~~~~~~~~~
2026-10-24T14:31:16.4347502Z
2026-10-24T14:31:16.4347796Z src/git/GitWorkflowService.ts:315:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitWorkflowService.hasCommit")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4347798Z
2026-10-24T14:31:16.4347846Z 315     hasCommit: (input) =>
2026-10-24T14:31:16.4347886Z         ~~~~~~~~~
2026-10-24T14:31:16.4347888Z
2026-10-24T14:31:16.4348189Z src/git/GitWorkflowService.ts:327:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitWorkflowService.hasRefNamed")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4348191Z
2026-10-24T14:31:16.4348238Z 327     hasRefNamed: (input) =>
2026-10-24T14:31:16.4348281Z         ~~~~~~~~~~~
2026-10-24T14:31:16.4348283Z
2026-10-24T14:31:16.4348571Z src/git/GitWorkflowService.ts:346:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitWorkflowService.status")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4348574Z
2026-10-24T14:31:16.4348620Z 346     status: (input) =>
2026-10-24T14:31:16.4348662Z         ~~~~~~
2026-10-24T14:31:16.4348664Z
2026-10-24T14:31:16.4348964Z src/git/GitWorkflowService.ts:352:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitWorkflowService.localStatus")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4348966Z
2026-10-24T14:31:16.4349014Z 352     localStatus: (input) =>
2026-10-24T14:31:16.4349055Z         ~~~~~~~~~~~
2026-10-24T14:31:16.4349057Z
2026-10-24T14:31:16.4349369Z src/git/GitWorkflowService.ts:360:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitWorkflowService.remoteStatus")((input, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4349374Z
2026-10-24T14:31:16.4349428Z 360     remoteStatus: (input, options) =>
2026-10-24T14:31:16.4349467Z         ~~~~~~~~~~~~
2026-10-24T14:31:16.4349469Z
2026-10-24T14:31:16.4349777Z src/git/GitWorkflowService.ts:369:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitWorkflowService.pullCurrentBranch")((cwd) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4349779Z
2026-10-24T14:31:16.4349829Z 369     pullCurrentBranch: (cwd) =>
2026-10-24T14:31:16.4349872Z         ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4349933Z
2026-10-24T14:31:16.4350251Z src/git/GitWorkflowService.ts:373:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitWorkflowService.runStackedAction")((input, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4350309Z
2026-10-24T14:31:16.4350367Z 373     runStackedAction: (input, options) =>
2026-10-24T14:31:16.4350409Z         ~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4350411Z
2026-10-24T14:31:16.4350735Z src/git/GitWorkflowService.ts:388:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitWorkflowService.preparePullRequestThread")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4350737Z
2026-10-24T14:31:16.4350797Z 388     preparePullRequestThread: (input) =>
2026-10-24T14:31:16.4350841Z         ~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4350843Z
2026-10-24T14:31:16.4351136Z src/git/GitWorkflowService.ts:399:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitWorkflowService.listRefs")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4351138Z
2026-10-24T14:31:16.4351186Z 399     listRefs: (input) =>
2026-10-24T14:31:16.4351226Z         ~~~~~~~~
2026-10-24T14:31:16.4351230Z
2026-10-24T14:31:16.4351545Z src/git/GitWorkflowService.ts:405:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitWorkflowService.createWorktree")((input, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4351548Z
2026-10-24T14:31:16.4351600Z 405     createWorktree: (input, options) =>
2026-10-24T14:31:16.4351642Z         ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4351644Z
2026-10-24T14:31:16.4351959Z src/git/GitWorkflowService.ts:409:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitWorkflowService.listLocalBranchNames")((cwd) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4351962Z
2026-10-24T14:31:16.4352015Z 409     listLocalBranchNames: (cwd) =>
2026-10-24T14:31:16.4352057Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4352059Z
2026-10-24T14:31:16.4352355Z src/git/GitWorkflowService.ts:413:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitWorkflowService.fetchRemote")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4352359Z
2026-10-24T14:31:16.4352406Z 413     fetchRemote: (input) =>
2026-10-24T14:31:16.4352447Z         ~~~~~~~~~~~
2026-10-24T14:31:16.4352449Z
2026-10-24T14:31:16.4352750Z src/git/GitWorkflowService.ts:417:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitWorkflowService.remoteExists")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4352753Z
2026-10-24T14:31:16.4352801Z 417     remoteExists: (input) =>
2026-10-24T14:31:16.4352839Z         ~~~~~~~~~~~~
2026-10-24T14:31:16.4352842Z
2026-10-24T14:31:16.4353155Z src/git/GitWorkflowService.ts:421:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitWorkflowService.remoteBranchExists")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4353158Z
2026-10-24T14:31:16.4353210Z 421     remoteBranchExists: (input) =>
2026-10-24T14:31:16.4353255Z         ~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4353257Z
2026-10-24T14:31:16.4353585Z src/git/GitWorkflowService.ts:425:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitWorkflowService.resolveRemoteTrackingCommit")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4353588Z
2026-10-24T14:31:16.4353650Z 425     resolveRemoteTrackingCommit: (input) =>
2026-10-24T14:31:16.4353694Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4353697Z
2026-10-24T14:31:16.4354079Z src/git/GitWorkflowService.ts:429:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitWorkflowService.resolveWorktreeBaseRemote")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4354082Z
2026-10-24T14:31:16.4354143Z 429     resolveWorktreeBaseRemote: (input) =>
2026-10-24T14:31:16.4354185Z         ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4354252Z
2026-10-24T14:31:16.4354634Z src/git/GitWorkflowService.ts:433:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitWorkflowService.fetchWorktreeBaseCommit")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4354636Z
2026-10-24T14:31:16.4354693Z 433     fetchWorktreeBaseCommit: (input) =>
2026-10-24T14:31:16.4354736Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4354738Z
2026-10-24T14:31:16.4355040Z src/git/GitWorkflowService.ts:437:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitWorkflowService.removeWorktree")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4355044Z
2026-10-24T14:31:16.4355093Z 437     removeWorktree: (input) =>
2026-10-24T14:31:16.4355165Z         ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4355168Z
2026-10-24T14:31:16.4355472Z src/git/GitWorkflowService.ts:441:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitWorkflowService.pruneWorktrees")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4355476Z
2026-10-24T14:31:16.4355526Z 441     pruneWorktrees: (input) =>
2026-10-24T14:31:16.4355567Z         ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4355569Z
2026-10-24T14:31:16.4355879Z src/git/GitWorkflowService.ts:445:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitWorkflowService.deleteLocalBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4355881Z
2026-10-24T14:31:16.4355934Z 445     deleteLocalBranch: (input) =>
2026-10-24T14:31:16.4355977Z         ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4355981Z
2026-10-24T14:31:16.4356278Z src/git/GitWorkflowService.ts:449:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitWorkflowService.createRef")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4356281Z
2026-10-24T14:31:16.4356330Z 449     createRef: (input) =>
2026-10-24T14:31:16.4356368Z         ~~~~~~~~~
2026-10-24T14:31:16.4356370Z
2026-10-24T14:31:16.4356707Z src/git/GitWorkflowService.ts:457:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitWorkflowService.switchRef")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4356709Z
2026-10-24T14:31:16.4356773Z 457     switchRef: (input) =>
2026-10-24T14:31:16.4356812Z         ~~~~~~~~~
2026-10-24T14:31:16.4356815Z
2026-10-24T14:31:16.4357125Z src/git/GitWorkflowService.ts:463:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitWorkflowService.renameBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4357129Z
2026-10-24T14:31:16.4357249Z 463     renameBranch: (input) =>
2026-10-24T14:31:16.4357330Z         ~~~~~~~~~~~~
2026-10-24T14:31:16.4357332Z
2026-10-24T14:31:16.4357659Z src/htmlRender/headlessChrome.ts:281:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("receive")((raw) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4357663Z
2026-10-24T14:31:16.4357763Z 281   const receive = (raw: string) => {
2026-10-24T14:31:16.4357804Z             ~~~~~~~
2026-10-24T14:31:16.4357806Z
2026-10-24T14:31:16.4358177Z src/mcp/AcpMcpStdioBridge.ts:284:7 - suggestion TS377012: This Effect generator contains `try/catch`; in this context, error handling is expressed with Effect APIs such as Effect.try, Effect.tryPromise, Effect.catch, Effect.catchTag). effect(tryCatchInEffectGen)
2026-10-24T14:31:16.4358179Z
2026-10-24T14:31:16.4358220Z 284       try {
2026-10-24T14:31:16.4358339Z           ~~~~~
2026-10-24T14:31:16.4358391Z 285         parsed = JSON.parse(line);
2026-10-24T14:31:16.4358433Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4358473Z ...
2026-10-24T14:31:16.4358569Z 287         return yield* respondWithError(null, "Parse error", -32700);
2026-10-24T14:31:16.4358684Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4358722Z 288       }
2026-10-24T14:31:16.4358761Z     ~~~~~~~
2026-10-24T14:31:16.4358764Z
2026-10-24T14:31:16.4359038Z src/mcp/AcpMcpStdioBridge.ts:324:7 - suggestion TS377099: `Effect.ignoreCause` expresses ignored failure more directly than `Effect.catchCause` returning `Effect.void`. effect(catchToIgnore)
2026-10-24T14:31:16.4359041Z
2026-10-24T14:31:16.4359126Z 324       Effect.catchCause(() => Effect.void),
2026-10-24T14:31:16.4359186Z           ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4359188Z
2026-10-24T14:31:16.4359444Z src/mcp/McpDeviceToolkit.test.ts:105:18 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4359449Z
2026-10-24T14:31:16.4359519Z 105   getById: () => Effect.succeed(Option.none()),
2026-10-24T14:31:16.4359565Z                      ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4359567Z
2026-10-24T14:31:16.4359856Z src/mcp/McpHttpServer.ts:421:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("previewSnapshotFailure")(<E>(cause) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4359858Z
2026-10-24T14:31:16.4359955Z 421 const previewSnapshotFailure = <E>(cause: Cause.Cause<E>) => {
2026-10-24T14:31:16.4359998Z           ~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4360001Z
2026-10-24T14:31:16.4360289Z src/mcp/McpHttpServer.ts:938:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("McpServer.McpServer.addTool")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4360292Z
2026-10-24T14:31:16.4360340Z 938       addTool: (options) =>
2026-10-24T14:31:16.4360382Z           ~~~~~~~
2026-10-24T14:31:16.4360385Z
2026-10-24T14:31:16.4360664Z src/mcp/McpSessionRegistry.testkit.ts:22:20 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T14:31:16.4360668Z
2026-10-24T14:31:16.4360726Z 22     resolve: () => Effect.succeed(undefined),
2026-10-24T14:31:16.4360776Z                       ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4360779Z
2026-10-24T14:31:16.4361068Z src/mcp/McpToolAccess.ts:112:7 - suggestion TS377132: `Effect.andThen` expresses this sequencing more directly than `Effect.flatMap` with a zero-parameter callback. effect(flatMapIgnoredParamToAndThen)
2026-10-24T14:31:16.4361070Z
2026-10-24T14:31:16.4361129Z 112       Effect.flatMap(() => writingCaller),
2026-10-24T14:31:16.4361170Z           ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4361174Z
2026-10-24T14:31:16.4361679Z src/mcp/OrchestratorMcpService.ts:2465:39 - suggestion TS377088: This generator applies the same inline `Effect.mapError(...)` to every yielded effect. Keep that `Effect.mapError(...)` inline and hoist it once to the generator result: `Effect.gen(...).pipe(Effect.mapError(...))`, or `Effect.fn(function*(){ ... }, Effect.mapError(...))`. effect(redundantMapError)
2026-10-24T14:31:16.4361683Z
2026-10-24T14:31:16.4361755Z 2465       const cancelOrphan = Effect.gen(function* () {
2026-10-24T14:31:16.4361809Z                                            ~~~~~~~~~
2026-10-24T14:31:16.4361811Z
2026-10-24T14:31:16.4362051Z   src/mcp/OrchestratorMcpService.ts:2480:17 - This repeated `Effect.mapError(...)` site participates in the hoistable generator-wide mapping. effect(redundantMapError)
2026-10-24T14:31:16.4362134Z     2480           .pipe(Effect.mapError(threadManagementFailure));
2026-10-24T14:31:16.4362179Z                          ~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4362182Z
2026-10-24T14:31:16.4362480Z   src/mcp/OrchestratorMcpService.ts:2483:17 - This repeated `Effect.mapError(...)` site participates in the hoistable generator-wide mapping. effect(redundantMapError)
2026-10-24T14:31:16.4362558Z     2483           .pipe(Effect.mapError(threadManagementFailure));
2026-10-24T14:31:16.4362604Z                          ~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4362672Z
2026-10-24T14:31:16.4362945Z src/mcp/PreviewAutomationBroker.ts:651:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("onNone")(function*() { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4362948Z
2026-10-24T14:31:16.4362994Z 651         onNone: () =>
2026-10-24T14:31:16.4363035Z             ~~~~~~
2026-10-24T14:31:16.4363038Z
2026-10-24T14:31:16.4363239Z src/mcp/WorktreeMcpService.test.ts:355:3 - suggestion TS377017: This Effect.gen contains a single return statement. effect(unnecessaryEffectGen)
2026-10-24T14:31:16.4363242Z
2026-10-24T14:31:16.4363290Z 355   Effect.gen(function* () {
2026-10-24T14:31:16.4363332Z       ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4363418Z 356     return yield* WorktreeMcpService.WorktreeMcpService;
2026-10-24T14:31:16.4363480Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4363539Z 357   }).pipe(Effect.provide(harness.layer));
2026-10-24T14:31:16.4363580Z     ~~~~
2026-10-24T14:31:16.4363582Z
2026-10-24T14:31:16.4363855Z src/mcp/toolkits/pullRequests/handlers.ts:217:27 - suggestion TS377015: This expression contains chained `pipe` calls that can be simplified to a single `pipe` call. effect(unnecessaryPipeChain)
2026-10-24T14:31:16.4363858Z
2026-10-24T14:31:16.4363907Z 217     const thread = yield* engine
2026-10-24T14:31:16.4363951Z                               ~~~~~~
2026-10-24T14:31:16.4363999Z 218       .getThreadShell(threadId)
2026-10-24T14:31:16.4364043Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4364108Z 219       .pipe(Effect.map(Option.fromNullishOr))
2026-10-24T14:31:16.4364164Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4364248Z 220       .pipe(Effect.mapError((cause) => new Failure({ cause })));
2026-10-24T14:31:16.4364313Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4364316Z
2026-10-24T14:31:16.4364603Z src/mcpApps/McpAppModelContext.ts:96:27 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("McpAppModelContext.set")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4364607Z
2026-10-24T14:31:16.4364730Z 96   McpAppModelContext.of({ set: () => Effect.void, forThread: () => Effect.succeed([]) }),
2026-10-24T14:31:16.4364773Z                              ~~~
2026-10-24T14:31:16.4364776Z
2026-10-24T14:31:16.4365074Z src/mcpApps/McpAppModelContext.ts:96:51 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("McpAppModelContext.forThread")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4365076Z
2026-10-24T14:31:16.4365224Z 96   McpAppModelContext.of({ set: () => Effect.void, forThread: () => Effect.succeed([]) }),
2026-10-24T14:31:16.4365287Z                                                      ~~~~~~~~~
2026-10-24T14:31:16.4365289Z
2026-10-24T14:31:16.4365614Z src/observability/BrowserTraceCollector.ts:16:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("BrowserTraceCollector.record")((records) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4365618Z
2026-10-24T14:31:16.4365663Z 16     record: (records) =>
2026-10-24T14:31:16.4365703Z        ~~~~~~
2026-10-24T14:31:16.4365705Z
2026-10-24T14:31:16.4366001Z src/observability/EventLoopMonitor.ts:41:49 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T14:31:16.4366003Z
2026-10-24T14:31:16.4366106Z 41   defaultValue: () => ({ latestNoticeableStall: Effect.succeed(undefined) }),
2026-10-24T14:31:16.4366245Z                                                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4366248Z
2026-10-24T14:31:16.4366716Z src/orchestration-v2/Adapters/AcpRegistryAdapterV2.testkit.ts:30:32 - suggestion TS377112: This input is already assignable to the schema's Encoded type. Use `decodeSync` to preserve compile-time type checking instead of discarding the input type through `decodeUnknownSync`. effect(preferTypedSchemaDecoder)
2026-10-24T14:31:16.4366795Z
2026-10-24T14:31:16.4366897Z 30 const REPLAY_SETTINGS = Schema.decodeUnknownSync(AcpRegistrySettings)({
2026-10-24T14:31:16.4366949Z                                   ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4366952Z
2026-10-24T14:31:16.4367263Z src/orchestration-v2/Adapters/AntigravityAdapterV2.test.ts:48:17 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T14:31:16.4367266Z
2026-10-24T14:31:16.4367327Z 48   defaultModel: Effect.succeed(undefined),
2026-10-24T14:31:16.4367376Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4367378Z
2026-10-24T14:31:16.4367691Z src/orchestration-v2/Adapters/AntigravityAdapterV2.test.ts:169:23 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T14:31:16.4367696Z
2026-10-24T14:31:16.4367762Z 169         defaultModel: Effect.succeed(undefined),
2026-10-24T14:31:16.4367814Z                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4367816Z
2026-10-24T14:31:16.4368128Z src/orchestration-v2/Adapters/AntigravityAdapterV2.test.ts:306:23 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T14:31:16.4368130Z
2026-10-24T14:31:16.4368192Z 306         defaultModel: Effect.succeed(undefined),
2026-10-24T14:31:16.4368242Z                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4368245Z
2026-10-24T14:31:16.4368553Z src/orchestration-v2/Adapters/AntigravityAdapterV2.test.ts:542:23 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T14:31:16.4368557Z
2026-10-24T14:31:16.4368620Z 542         defaultModel: Effect.succeed(undefined),
2026-10-24T14:31:16.4368668Z                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4368671Z
2026-10-24T14:31:16.4369012Z src/orchestration-v2/Adapters/ClaudeAdapterV2.test.ts:974:26 - suggestion TS377111: `AbortController` is manually constructed inside Effect code. Use `Effect.abortSignal` for Effect-managed cancellation. effect(abortControllerInEffect)
2026-10-24T14:31:16.4369016Z
2026-10-24T14:31:16.4369073Z 974       const controller = new AbortController();
2026-10-24T14:31:16.4369123Z                              ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4369126Z
2026-10-24T14:31:16.4369419Z src/orchestration-v2/Adapters/ClaudeAdapterV2.test.ts:1326:37 - suggestion TS377015: This expression contains chained `pipe` calls that can be simplified to a single `pipe` call. effect(unnecessaryPipeChain)
2026-10-24T14:31:16.4369422Z
2026-10-24T14:31:16.4369489Z 1326         const requestEvent = yield* runtime.events
2026-10-24T14:31:16.4369542Z                                          ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4369585Z 1327           .pipe(
2026-10-24T14:31:16.4369627Z      ~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4369667Z  ...
2026-10-24T14:31:16.4369706Z 1330           )
2026-10-24T14:31:16.4369747Z      ~~~~~~~~~~~
2026-10-24T14:31:16.4369801Z 1331           .pipe(Effect.forkScoped);
2026-10-24T14:31:16.4369846Z      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4369850Z
2026-10-24T14:31:16.4370250Z src/orchestration-v2/Adapters/ClaudeAdapterV2.test.ts:1332:28 - suggestion TS377111: `AbortController` is manually constructed inside Effect code. Use `Effect.abortSignal` for Effect-managed cancellation. effect(abortControllerInEffect)
2026-10-24T14:31:16.4370253Z
2026-10-24T14:31:16.4370320Z 1332         const controller = new AbortController();
2026-10-24T14:31:16.4370373Z                                 ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4370376Z
2026-10-24T14:31:16.4370781Z src/orchestration-v2/Adapters/ClaudeAdapterV2.test.ts:1355:37 - suggestion TS377111: `AbortController` is manually constructed inside Effect code. Use `Effect.abortSignal` for Effect-managed cancellation. effect(abortControllerInEffect)
2026-10-24T14:31:16.4370783Z
2026-10-24T14:31:16.4370863Z 1355         const cancelledController = new AbortController();
2026-10-24T14:31:16.4370921Z                                          ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4370923Z
2026-10-24T14:31:16.4371293Z src/orchestration-v2/Adapters/ClaudeAdapterV2.ts:4018:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.getCapabilities")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4371296Z
2026-10-24T14:31:16.4371401Z 4018     getCapabilities: () => Effect.succeed(ClaudeProviderCapabilitiesV2),
2026-10-24T14:31:16.4371444Z          ~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4371447Z
2026-10-24T14:31:16.4371830Z src/orchestration-v2/Adapters/ClaudeAdapterV2.ts:4019:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.planSelectionTransition")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4371833Z
2026-10-24T14:31:16.4371954Z 4019     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T14:31:16.4371999Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4372001Z
2026-10-24T14:31:16.4372363Z src/orchestration-v2/Adapters/ClaudeAgentSdkQueryRunner.test.ts:201:17 - suggestion TS377111: `AbortController` is manually constructed inside Effect code. Use `Effect.abortSignal` for Effect-managed cancellation. effect(abortControllerInEffect)
2026-10-24T14:31:16.4372365Z
2026-10-24T14:31:16.4372425Z 201         signal: new AbortController().signal,
2026-10-24T14:31:16.4372471Z                     ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4372474Z
2026-10-24T14:31:16.4372870Z src/orchestration-v2/Adapters/ClaudeTaskOutputTail.ts:74:17 - suggestion TS377121: This Effect first-completion race has exactly one sleep- or delay-based timer arm. `Effect.timeoutOrElse` expresses the timeout and fallback directly. effect(raceFirstWithSleepToTimeout)
2026-10-24T14:31:16.4372874Z
2026-10-24T14:31:16.4372925Z 74   const pause = Effect.raceFirst(
2026-10-24T14:31:16.4372971Z                    ~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4372974Z
2026-10-24T14:31:16.4373270Z src/orchestration-v2/Adapters/CodexAdapterV2.ts:1741:25 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T14:31:16.4373273Z
2026-10-24T14:31:16.4373380Z 1741     threadId === null ? Effect.succeed(undefined) : mcpSessions.read(threadId);
2026-10-24T14:31:16.4373433Z                              ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4373435Z
2026-10-24T14:31:16.4373798Z src/orchestration-v2/Adapters/CodexAdapterV2.ts:1748:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.getCapabilities")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4373802Z
2026-10-24T14:31:16.4373902Z 1748     getCapabilities: () => Effect.succeed(CodexProviderCapabilitiesV2),
2026-10-24T14:31:16.4373948Z          ~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4373950Z
2026-10-24T14:31:16.4374328Z src/orchestration-v2/Adapters/CodexAdapterV2.ts:1749:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.planSelectionTransition")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4374394Z
2026-10-24T14:31:16.4374512Z 1749     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T14:31:16.4374557Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4374559Z
2026-10-24T14:31:16.4374879Z src/orchestration-v2/Adapters/CodexAdapterV2.ts:3045:19 - suggestion TS377095: `Effect.orElseSucceed` expresses the same recovery more directly than `Effect.catch` followed by `Effect.succeed`. effect(catchToOrElseSucceed)
2026-10-24T14:31:16.4374948Z
2026-10-24T14:31:16.4375021Z 3045                   Effect.catch(() => Effect.succeed(null)),
2026-10-24T14:31:16.4375067Z                        ~~~~~~~~~~~~
2026-10-24T14:31:16.4375069Z
2026-10-24T14:31:16.4375473Z src/orchestration-v2/Adapters/CodexAdapterV2.ts:3046:19 - suggestion TS377120: `Effect.filterOrElse` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-24T14:31:16.4375478Z
2026-10-24T14:31:16.4375539Z 3046                   Effect.flatMap((response) =>
2026-10-24T14:31:16.4375586Z                        ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4375588Z
2026-10-24T14:31:16.4375870Z src/orchestration-v2/Adapters/CodexAdapterV2.ts:3068:19 - suggestion TS377099: `Effect.ignore` expresses ignored failure more directly than `Effect.catch` returning `Effect.void`. effect(catchToIgnore)
2026-10-24T14:31:16.4375874Z
2026-10-24T14:31:16.4375937Z 3068                   Effect.catch(() => Effect.void),
2026-10-24T14:31:16.4375980Z                        ~~~~~~~~~~~~
2026-10-24T14:31:16.4375982Z
2026-10-24T14:31:16.4376347Z src/orchestration-v2/Adapters/CodexAdapterV2.ts:7268:26 - suggestion TS377019: This `yield* Effect.fail(...)` passes a yieldable error value. `yield*` represents that value directly without wrapping it in `Effect.fail`. effect(unnecessaryFailYieldableError)
2026-10-24T14:31:16.4376349Z
2026-10-24T14:31:16.4376434Z 7268                   return yield* Effect.fail(failedTermination.error);
2026-10-24T14:31:16.4376479Z                               ~~~~~
2026-10-24T14:31:16.4376482Z
2026-10-24T14:31:16.4376919Z src/orchestration-v2/Adapters/GrokAdapterV2.testkit.ts:33:38 - suggestion TS377112: This input is already assignable to the schema's Encoded type. Use `decodeSync` to preserve compile-time type checking instead of discarding the input type through `decodeUnknownSync`. effect(preferTypedSchemaDecoder)
2026-10-24T14:31:16.4376923Z
2026-10-24T14:31:16.4377024Z 33 const DEFAULT_GROK_SETTINGS = Schema.decodeUnknownSync(GrokSettings)({});
2026-10-24T14:31:16.4377081Z                                         ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4377083Z
2026-10-24T14:31:16.4377516Z src/orchestration-v2/Adapters/MuseAdapterV2.testkit.ts:414:38 - suggestion TS377112: This input is already assignable to the schema's Encoded type. Use `decodeSync` to preserve compile-time type checking instead of discarding the input type through `decodeUnknownSync`. effect(preferTypedSchemaDecoder)
2026-10-24T14:31:16.4377519Z
2026-10-24T14:31:16.4377644Z 414 const DEFAULT_MUSE_SETTINGS = Schema.decodeUnknownSync(MuseSettings)({ enabled: true });
2026-10-24T14:31:16.4377703Z                                          ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4377705Z
2026-10-24T14:31:16.4378054Z src/orchestration-v2/CheckpointCaptureService.ts:242:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("CheckpointCaptureServiceV2.execute")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4378059Z
2026-10-24T14:31:16.4378105Z 242       execute: (input) =>
2026-10-24T14:31:16.4378147Z           ~~~~~~~
2026-10-24T14:31:16.4378149Z
2026-10-24T14:31:16.4378414Z src/orchestration-v2/CheckpointRestoreSafety.test.ts:104:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4378417Z
2026-10-24T14:31:16.4378590Z 104             get: () => Effect.succeed(Option.some({ workspaceRoot: parent } as never)),
2026-10-24T14:31:16.4378638Z                            ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4378641Z
2026-10-24T14:31:16.4378994Z src/orchestration-v2/CheckpointRestoreSafety.ts:41:13 - suggestion TS377116: `Effect.catchIf` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T14:31:16.4379060Z
2026-10-24T14:31:16.4379111Z 41             Effect.catch((error) =>
2026-10-24T14:31:16.4379155Z                ~~~~~~~~~~~~
2026-10-24T14:31:16.4379157Z
2026-10-24T14:31:16.4379507Z src/orchestration-v2/CheckpointRestoreSafety.ts:83:17 - suggestion TS377116: `Effect.catchIf` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T14:31:16.4379509Z
2026-10-24T14:31:16.4379562Z 83                 Effect.catch((error) =>
2026-10-24T14:31:16.4379609Z                    ~~~~~~~~~~~~
2026-10-24T14:31:16.4379611Z
2026-10-24T14:31:16.4379882Z src/orchestration-v2/CheckpointRollbackService.test.ts:233:22 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4379884Z
2026-10-24T14:31:16.4379983Z 233               return Effect.succeed(Option.some({ workspaceRoot } as never));
2026-10-24T14:31:16.4380030Z                          ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4380032Z
2026-10-24T14:31:16.4380395Z src/orchestration-v2/ClaudeAutomaticDelivery.integration.test.ts:142:28 - suggestion TS377111: `AbortController` is manually constructed inside Effect code. Use `Effect.abortSignal` for Effect-managed cancellation. effect(abortControllerInEffect)
2026-10-24T14:31:16.4380397Z
2026-10-24T14:31:16.4380463Z 142         const batchAbort = new AbortController();
2026-10-24T14:31:16.4380517Z                                ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4380519Z
2026-10-24T14:31:16.4380895Z src/orchestration-v2/CommandOutputHub.test.ts:168:5 - suggestion TS377120: `Effect.filterOrElse` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-24T14:31:16.4380898Z
2026-10-24T14:31:16.4380949Z 168     Effect.flatMap((frame) =>
2026-10-24T14:31:16.4380990Z         ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4380992Z
2026-10-24T14:31:16.4381240Z src/orchestration-v2/CommandReceiptStore.ts:164:29 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4381242Z
2026-10-24T14:31:16.4381314Z 164               onNone: () => Effect.succeed(Option.none()),
2026-10-24T14:31:16.4381365Z                                 ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4381367Z
2026-10-24T14:31:16.4381612Z src/orchestration-v2/CommandReceiptStore.ts:167:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4381615Z
2026-10-24T14:31:16.4381675Z 167                   ? Effect.succeed(Option.none())
2026-10-24T14:31:16.4381721Z                         ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4381723Z
2026-10-24T14:31:16.4381971Z src/orchestration-v2/CommandReceiptStore.ts:168:58 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T14:31:16.4381975Z
2026-10-24T14:31:16.4382076Z 168                   : fromApplicationReceipt(receipt).pipe(Effect.map(Option.some)),
2026-10-24T14:31:16.4382138Z                                                              ~~~~~~~~~~
2026-10-24T14:31:16.4382142Z
2026-10-24T14:31:16.4382383Z src/orchestration-v2/CommandReceiptStore.ts:183:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4382385Z
2026-10-24T14:31:16.4382504Z 183               ? Effect.succeed(Option.none())
2026-10-24T14:31:16.4382551Z                     ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4382553Z
2026-10-24T14:31:16.4382801Z src/orchestration-v2/CommandReceiptStore.ts:192:25 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T14:31:16.4382859Z
2026-10-24T14:31:16.4382921Z 192                 }).pipe(Effect.map(Option.some)),
2026-10-24T14:31:16.4382968Z                             ~~~~~~~~~~
2026-10-24T14:31:16.4382970Z
2026-10-24T14:31:16.4383204Z src/orchestration-v2/EffectOutbox.ts:429:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4383207Z
2026-10-24T14:31:16.4383263Z 429               ? Effect.succeed(Option.none())
2026-10-24T14:31:16.4383309Z                     ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4383311Z
2026-10-24T14:31:16.4383545Z src/orchestration-v2/EffectOutbox.ts:430:39 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T14:31:16.4383548Z
2026-10-24T14:31:16.4383627Z 430               : rowToEffect(row).pipe(Effect.map(Option.some));
2026-10-24T14:31:16.4389237Z                                           ~~~~~~~~~~
2026-10-24T14:31:16.4389245Z
2026-10-24T14:31:16.4389515Z src/orchestration-v2/EffectWorker.test.ts:107:20 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4389517Z
2026-10-24T14:31:16.4389584Z 107         get: () => Effect.succeed(Option.none()),
2026-10-24T14:31:16.4389631Z                        ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4389633Z
2026-10-24T14:31:16.4389875Z src/orchestration-v2/EffectWorker.test.ts:302:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4389877Z
2026-10-24T14:31:16.4389965Z 302       claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T14:31:16.4390014Z                            ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4390016Z
2026-10-24T14:31:16.4390256Z src/orchestration-v2/EffectWorker.test.ts:369:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4390261Z
2026-10-24T14:31:16.4390343Z 369       claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T14:31:16.4390391Z                            ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4390394Z
2026-10-24T14:31:16.4390630Z src/orchestration-v2/EffectWorker.test.ts:436:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4390633Z
2026-10-24T14:31:16.4390716Z 436       claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T14:31:16.4390759Z                            ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4390765Z
2026-10-24T14:31:16.4391002Z src/orchestration-v2/EffectWorker.test.ts:437:18 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4391004Z
2026-10-24T14:31:16.4391082Z 437       get: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T14:31:16.4391131Z                      ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4391133Z
2026-10-24T14:31:16.4391482Z src/orchestration-v2/EffectWorker.ts:98:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestrationEffectExecutorV2.execute")((effect, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4391485Z
2026-10-24T14:31:16.4391535Z 98       execute: (effect, options) => {
2026-10-24T14:31:16.4391577Z          ~~~~~~~
2026-10-24T14:31:16.4391580Z
2026-10-24T14:31:16.4391998Z src/orchestration-v2/EffectWorker.ts:180:17 - suggestion TS377116: `Effect.catchIf` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T14:31:16.4392000Z
2026-10-24T14:31:16.4392054Z 180                 Effect.catch((cause) =>
2026-10-24T14:31:16.4392100Z                     ~~~~~~~~~~~~
2026-10-24T14:31:16.4392102Z
2026-10-24T14:31:16.4392464Z src/orchestration-v2/EventStore.ts:110:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("EventStoreV2.append")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4392468Z
2026-10-24T14:31:16.4392517Z 110         append: (input) =>
2026-10-24T14:31:16.4392558Z             ~~~~~~
2026-10-24T14:31:16.4392561Z
2026-10-24T14:31:16.4392875Z src/orchestration-v2/EventStore.ts:120:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("EventStoreV2.appendProjectEvent")((event) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4392877Z
2026-10-24T14:31:16.4392935Z 120         appendProjectEvent: (event) =>
2026-10-24T14:31:16.4392979Z             ~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4392981Z
2026-10-24T14:31:16.4393283Z src/orchestration-v2/EventStore.ts:131:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("EventStoreV2.latestSequence")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4393287Z
2026-10-24T14:31:16.4393339Z 131         latestSequence: (input) =>
2026-10-24T14:31:16.4393383Z             ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4393385Z
2026-10-24T14:31:16.4393652Z src/orchestration-v2/FoundationPersistence.test.ts:1791:26 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4393654Z
2026-10-24T14:31:16.4393741Z 1791         claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T14:31:16.4393791Z                               ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4393793Z
2026-10-24T14:31:16.4394056Z src/orchestration-v2/FoundationPersistence.test.ts:1793:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4394058Z
2026-10-24T14:31:16.4394105Z 1793           Effect.succeed(
2026-10-24T14:31:16.4394152Z                ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4394154Z
2026-10-24T14:31:16.4394501Z src/orchestration-v2/FoundationPersistence.test.ts:2663:30 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4394503Z
2026-10-24T14:31:16.4394584Z 2663             nextClaimableAt: Effect.succeed(Option.none()),
2026-10-24T14:31:16.4394637Z                                   ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4394639Z
2026-10-24T14:31:16.4394901Z src/orchestration-v2/FoundationPersistence.test.ts:2880:30 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4394903Z
2026-10-24T14:31:16.4394977Z 2880             nextClaimableAt: Effect.succeed(Option.none()),
2026-10-24T14:31:16.4395028Z                                   ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4395031Z
2026-10-24T14:31:16.4395427Z src/orchestration-v2/Orchestrator.ts:11796:7 - suggestion TS377120: `Effect.filterOrFail` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-24T14:31:16.4395432Z
2026-10-24T14:31:16.4395485Z 11796       Effect.flatMap((planned) =>
2026-10-24T14:31:16.4395528Z             ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4395531Z
2026-10-24T14:31:16.4395869Z src/orchestration-v2/Orchestrator.ts:12219:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.restartContinuationPending")((run) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4395871Z
2026-10-24T14:31:16.4396015Z 12219     restartContinuationPending: (run) =>
2026-10-24T14:31:16.4396063Z           ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4396066Z
2026-10-24T14:31:16.4396397Z src/orchestration-v2/Orchestrator.ts:12221:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.awaitRestartContinuation")((run) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4396475Z
2026-10-24T14:31:16.4396535Z 12221     awaitRestartContinuation: (run) =>
2026-10-24T14:31:16.4396579Z           ~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4396581Z
2026-10-24T14:31:16.4396903Z src/orchestration-v2/Orchestrator.ts:12224:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.autoArmLimitRecovery")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4396905Z
2026-10-24T14:31:16.4396961Z 12224     autoArmLimitRecovery: (input) =>
2026-10-24T14:31:16.4397006Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4397010Z
2026-10-24T14:31:16.4397319Z src/orchestration-v2/Orchestrator.ts:12252:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.searchThread")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4397322Z
2026-10-24T14:31:16.4397371Z 12252     searchThread: (input) =>
2026-10-24T14:31:16.4397414Z           ~~~~~~~~~~~~
2026-10-24T14:31:16.4397417Z
2026-10-24T14:31:16.4397816Z src/orchestration-v2/Orchestrator.ts:12260:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadHistoryPage")((threadId, cursor, throughEntryId, conversationOnly) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4397818Z
2026-10-24T14:31:16.4397940Z 12260     getThreadHistoryPage: (threadId, cursor, throughEntryId, conversationOnly) =>
2026-10-24T14:31:16.4397984Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4397986Z
2026-10-24T14:31:16.4398320Z src/orchestration-v2/Orchestrator.ts:12264:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getTimelinePage")((threadId, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4398322Z
2026-10-24T14:31:16.4398384Z 12264     getTimelinePage: (threadId, options) =>
2026-10-24T14:31:16.4398430Z           ~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4398432Z
2026-10-24T14:31:16.4398749Z src/orchestration-v2/Orchestrator.ts:12268:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getMessageCount")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4398751Z
2026-10-24T14:31:16.4398804Z 12268     getMessageCount: (threadId) =>
2026-10-24T14:31:16.4398845Z           ~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4398848Z
2026-10-24T14:31:16.4399153Z src/orchestration-v2/Orchestrator.ts:12272:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getTurnItem")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4399156Z
2026-10-24T14:31:16.4399206Z 12272     getTurnItem: (input) =>
2026-10-24T14:31:16.4399249Z           ~~~~~~~~~~~
2026-10-24T14:31:16.4399251Z
2026-10-24T14:31:16.4399593Z src/orchestration-v2/Orchestrator.ts:12280:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadRecords")((threadId, fields, filter) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4399599Z
2026-10-24T14:31:16.4399670Z 12280     getThreadRecords: (threadId, fields, filter) =>
2026-10-24T14:31:16.4399715Z           ~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4399717Z
2026-10-24T14:31:16.4400042Z src/orchestration-v2/Orchestrator.ts:12284:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadProjection")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4400105Z
2026-10-24T14:31:16.4400165Z 12284     getThreadProjection: (threadId) =>
2026-10-24T14:31:16.4400208Z           ~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4400210Z
2026-10-24T14:31:16.4400538Z src/orchestration-v2/Orchestrator.ts:12288:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getCheckpointContext")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4400606Z
2026-10-24T14:31:16.4400666Z 12288     getCheckpointContext: (threadId) =>
2026-10-24T14:31:16.4400709Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4400711Z
2026-10-24T14:31:16.4401030Z src/orchestration-v2/Orchestrator.ts:12292:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadSnapshot")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4401032Z
2026-10-24T14:31:16.4401085Z 12292     getThreadSnapshot: (threadId) =>
2026-10-24T14:31:16.4401131Z           ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4401133Z
2026-10-24T14:31:16.4401478Z src/orchestration-v2/Orchestrator.ts:12296:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadSnapshotWindow")((threadId, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4401482Z
2026-10-24T14:31:16.4401556Z 12296     getThreadSnapshotWindow: (threadId, options) =>
2026-10-24T14:31:16.4401601Z           ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4401603Z
2026-10-24T14:31:16.4401918Z src/orchestration-v2/Orchestrator.ts:12300:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getShellSnapshot")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4401922Z
2026-10-24T14:31:16.4401973Z 12300     getShellSnapshot: (options) =>
2026-10-24T14:31:16.4402016Z           ~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4402018Z
2026-10-24T14:31:16.4402348Z src/orchestration-v2/Orchestrator.ts:12302:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.listActiveSubagentThreadIds")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4402350Z
2026-10-24T14:31:16.4402408Z 12302     listActiveSubagentThreadIds: () =>
2026-10-24T14:31:16.4402455Z           ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4402457Z
2026-10-24T14:31:16.4402775Z src/orchestration-v2/Orchestrator.ts:12304:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.readShellSnapshot")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4402777Z
2026-10-24T14:31:16.4402830Z 12304     readShellSnapshot: (options) =>
2026-10-24T14:31:16.4402873Z           ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4402876Z
2026-10-24T14:31:16.4403191Z src/orchestration-v2/Orchestrator.ts:12311:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadShell")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4403193Z
2026-10-24T14:31:16.4403244Z 12311     getThreadShell: (threadId) =>
2026-10-24T14:31:16.4403288Z           ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4403290Z
2026-10-24T14:31:16.4403623Z src/orchestration-v2/Orchestrator.ts:12315:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadEventSequence")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4403625Z
2026-10-24T14:31:16.4403686Z 12315     getThreadEventSequence: (threadId) =>
2026-10-24T14:31:16.4403731Z           ~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4403733Z
2026-10-24T14:31:16.4404068Z src/orchestration-v2/ProjectSettingsUpgrade.integration.test.ts:160:28 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T14:31:16.4404141Z
2026-10-24T14:31:16.4404211Z 160         getInstance: () => Effect.succeed(undefined),
2026-10-24T14:31:16.4404266Z                                ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4404269Z
2026-10-24T14:31:16.4404575Z src/orchestration-v2/ProjectStore.ts:269:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProjectStoreV2.getShell")((projectId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4404645Z
2026-10-24T14:31:16.4404758Z 269     getShell: (projectId) => get(projectId).pipe(Effect.map(Option.map(toShell))),
2026-10-24T14:31:16.4404798Z         ~~~~~~~~
2026-10-24T14:31:16.4404800Z
2026-10-24T14:31:16.4405107Z src/orchestration-v2/ProjectStore.ts:270:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProjectStoreV2.listShells")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4405110Z
2026-10-24T14:31:16.4405177Z 270     listShells: (options) =>
2026-10-24T14:31:16.4405218Z         ~~~~~~~~~~
2026-10-24T14:31:16.4405220Z
2026-10-24T14:31:16.4405483Z src/orchestration-v2/ProjectionControlReads.test.ts:279:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4405488Z
2026-10-24T14:31:16.4405534Z 279           Effect.succeed(
2026-10-24T14:31:16.4405578Z               ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4405580Z
2026-10-24T14:31:16.4405917Z src/orchestration-v2/ProviderAdapterRegistry.ts:78:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapterRegistryV2.get")((instanceId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4405920Z
2026-10-24T14:31:16.4405967Z 78       get: (instanceId) =>
2026-10-24T14:31:16.4406006Z          ~~~
2026-10-24T14:31:16.4406008Z
2026-10-24T14:31:16.4406336Z src/orchestration-v2/ProviderAdapterRegistry.ts:135:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapterRegistryV2.list")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4406338Z
2026-10-24T14:31:16.4406382Z 135       list: () =>
2026-10-24T14:31:16.4406423Z           ~~~~
2026-10-24T14:31:16.4406425Z
2026-10-24T14:31:16.4406757Z src/orchestration-v2/ProviderEventIngestor.ts:93:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderTurnAnalytics.record")((properties) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4406759Z
2026-10-24T14:31:16.4406843Z 93       record: (properties: Readonly<Record<string, unknown>>) =>
2026-10-24T14:31:16.4406883Z          ~~~~~~
2026-10-24T14:31:16.4406886Z
2026-10-24T14:31:16.4407265Z src/orchestration-v2/ProviderEventIngestor.ts:818:15 - suggestion TS377120: `Effect.filterOrElse` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-24T14:31:16.4407267Z
2026-10-24T14:31:16.4407328Z 818               Effect.flatMap((storedEvents) =>
2026-10-24T14:31:16.4407373Z                   ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4407375Z
2026-10-24T14:31:16.4407639Z src/orchestration-v2/ProviderSessionManager.test.ts:1155:19 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4407643Z
2026-10-24T14:31:16.4407769Z 1155                 : Effect.succeed(Option.some(makeBrowserAccessProject(requestedProjectId))),
2026-10-24T14:31:16.4407815Z                        ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4407817Z
2026-10-24T14:31:16.4408083Z src/orchestration-v2/ProviderTurnStartService.test.ts:150:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4408085Z
2026-10-24T14:31:16.4408132Z 150             Effect.succeed(
2026-10-24T14:31:16.4408233Z                 ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4408235Z
2026-10-24T14:31:16.4408497Z src/orchestration-v2/ProviderTurnStartService.test.ts:703:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4408499Z
2026-10-24T14:31:16.4408674Z 703             Effect.succeed(Option.some({ workspaceRoot: "/tmp/native-account-project" } as never)),
2026-10-24T14:31:16.4408717Z                 ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4408719Z
2026-10-24T14:31:16.4408985Z src/orchestration-v2/ProviderTurnStartService.testkit.ts:14:20 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4408990Z
2026-10-24T14:31:16.4409056Z 14     getById: () => Effect.succeed(Option.none()),
2026-10-24T14:31:16.4409104Z                       ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4409106Z
2026-10-24T14:31:16.4409407Z src/orchestration-v2/ProviderTurnStartService.ts:205:39 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T14:31:16.4409410Z
2026-10-24T14:31:16.4409490Z 205               Effect.catchCause(() => Effect.succeed(undefined)),
2026-10-24T14:31:16.4409552Z                                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4409554Z
2026-10-24T14:31:16.4409940Z src/orchestration-v2/ProviderTurnStartService.ts:512:15 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T14:31:16.4409942Z
2026-10-24T14:31:16.4409999Z 512               Effect.catchCause((cause) =>
2026-10-24T14:31:16.4410046Z                   ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4410048Z
2026-10-24T14:31:16.4410468Z src/orchestration-v2/ProviderTurnStartService.ts:1302:7 - suggestion TS377014: This generator returns an Effect-able value directly, which produces a nested `Effect<Effect<...>>`. If the intended result is the inner Effect value, `return yield*` represents that form. effect(returnEffectInGen)
2026-10-24T14:31:16.4410471Z
2026-10-24T14:31:16.4410532Z 1302       return runExecution.startRootRun({
2026-10-24T14:31:16.4410574Z            ~~~~~~
2026-10-24T14:31:16.4410576Z
2026-10-24T14:31:16.4410832Z src/orchestration-v2/PullRequestWatchReactor.ts:478:53 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T14:31:16.4410835Z
2026-10-24T14:31:16.4410937Z 478             ? pullRequests.activity(reference).pipe(Effect.map(Option.some))
2026-10-24T14:31:16.4411001Z                                                         ~~~~~~~~~~
2026-10-24T14:31:16.4411003Z
2026-10-24T14:31:16.4411369Z src/orchestration-v2/ResourceCleanupService.ts:49:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ResourceCleanupService.cleanupScheduledTasks")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4411374Z
2026-10-24T14:31:16.4411444Z 49       cleanupScheduledTasks: (threadId: ThreadId) =>
2026-10-24T14:31:16.4411488Z          ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4411492Z
2026-10-24T14:31:16.4411846Z src/orchestration-v2/ResourceCleanupService.ts:58:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ResourceCleanupService.cleanupTerminals")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4411849Z
2026-10-24T14:31:16.4411910Z 58       cleanupTerminals: (threadId: string) =>
2026-10-24T14:31:16.4411951Z          ~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4411953Z
2026-10-24T14:31:16.4412359Z src/orchestration-v2/ResourceCleanupService.ts:66:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ResourceCleanupService.cleanupPreviews")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4412362Z
2026-10-24T14:31:16.4412421Z 66       cleanupPreviews: (threadId: string) =>
2026-10-24T14:31:16.4412464Z          ~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4412467Z
2026-10-24T14:31:16.4412831Z src/orchestration-v2/ResourceCleanupService.ts:74:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ResourceCleanupService.cleanupAttachments")((attachmentIds) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4412893Z
2026-10-24T14:31:16.4412982Z 74       cleanupAttachments: (attachmentIds: ReadonlyArray<string>) =>
2026-10-24T14:31:16.4413026Z          ~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4413028Z
2026-10-24T14:31:16.4413291Z src/orchestration-v2/RunExecutionService.test.ts:1812:16 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T14:31:16.4413294Z
2026-10-24T14:31:16.4413353Z 1812         ).pipe(Effect.map(Option.some)),
2026-10-24T14:31:16.4413396Z                     ~~~~~~~~~~
2026-10-24T14:31:16.4413398Z
2026-10-24T14:31:16.4413771Z src/orchestration-v2/RunExecutionService.ts:931:15 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T14:31:16.4413776Z
2026-10-24T14:31:16.4413831Z 931               Effect.catchCause((cause) =>
2026-10-24T14:31:16.4413877Z                   ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4413879Z
2026-10-24T14:31:16.4414121Z src/orchestration-v2/RuntimePolicy.test.ts:90:9 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4414123Z
2026-10-24T14:31:16.4414170Z 90         Effect.succeed(
2026-10-24T14:31:16.4414211Z            ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4414213Z
2026-10-24T14:31:16.4414515Z src/orchestration-v2/RuntimePolicy.ts:54:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("RuntimePolicyV2.resolve")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4414518Z
2026-10-24T14:31:16.4414564Z 54   resolve: (input) =>
2026-10-24T14:31:16.4414606Z      ~~~~~~~
2026-10-24T14:31:16.4414608Z
2026-10-24T14:31:16.4414863Z src/orchestration-v2/RuntimeRequestService.test.ts:29:7 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4414866Z
2026-10-24T14:31:16.4414909Z 29       Effect.succeed(
2026-10-24T14:31:16.4414951Z          ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4414953Z
2026-10-24T14:31:16.4415242Z src/orchestration-v2/ThreadLaunchService.test.ts:189:33 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4415244Z
2026-10-24T14:31:16.4415340Z 189       getByWorkspaceRoot: () => Effect.succeed(Option.some(project)),
2026-10-24T14:31:16.4415392Z                                     ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4415394Z
2026-10-24T14:31:16.4415647Z src/orchestration-v2/ThreadLaunchService.test.ts:220:32 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4415651Z
2026-10-24T14:31:16.4415734Z 220         folderForThread: () => Effect.succeed(Option.none()),
2026-10-24T14:31:16.4415785Z                                    ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4415787Z
2026-10-24T14:31:16.4416116Z src/orchestration-v2/ThreadLifecycleService.ts:91:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadLifecycleService.archive")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4416119Z
2026-10-24T14:31:16.4416165Z 91     archive: (input) =>
2026-10-24T14:31:16.4416206Z        ~~~~~~~
2026-10-24T14:31:16.4416208Z
2026-10-24T14:31:16.4416602Z src/orchestration-v2/ThreadLifecycleService.ts:97:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadLifecycleService.unarchive")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4416605Z
2026-10-24T14:31:16.4416686Z 97     unarchive: (input) =>
2026-10-24T14:31:16.4416727Z        ~~~~~~~~~
2026-10-24T14:31:16.4416730Z
2026-10-24T14:31:16.4417076Z src/orchestration-v2/ThreadLifecycleService.ts:103:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadLifecycleService.delete")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4417079Z
2026-10-24T14:31:16.4417125Z 103     delete: (input) =>
2026-10-24T14:31:16.4417165Z         ~~~~~~
2026-10-24T14:31:16.4417167Z
2026-10-24T14:31:16.4417513Z src/orchestration-v2/ThreadLifecycleService.ts:109:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadLifecycleService.updateMetadata")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4417515Z
2026-10-24T14:31:16.4417566Z 109     updateMetadata: (input) =>
2026-10-24T14:31:16.4417606Z         ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4417608Z
2026-10-24T14:31:16.4417949Z src/orchestration-v2/ThreadLifecycleService.ts:118:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadLifecycleService.setRuntimeMode")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4417953Z
2026-10-24T14:31:16.4418002Z 118     setRuntimeMode: (input) =>
2026-10-24T14:31:16.4418043Z         ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4418045Z
2026-10-24T14:31:16.4418396Z src/orchestration-v2/ThreadLifecycleService.ts:125:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadLifecycleService.setInteractionMode")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4418400Z
2026-10-24T14:31:16.4418453Z 125     setInteractionMode: (input) =>
2026-10-24T14:31:16.4418495Z         ~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4418498Z
2026-10-24T14:31:16.4418848Z src/orchestration-v2/ThreadLifecycleService.ts:132:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadLifecycleService.setModelSelection")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4418852Z
2026-10-24T14:31:16.4418904Z 132     setModelSelection: (input) =>
2026-10-24T14:31:16.4418946Z         ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4418948Z
2026-10-24T14:31:16.4419327Z src/orchestration-v2/ThreadManagementService.ts:689:7 - suggestion TS377120: `Effect.filterOrFail` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-24T14:31:16.4419330Z
2026-10-24T14:31:16.4419384Z 689       Effect.flatMap((projection) =>
2026-10-24T14:31:16.4419426Z           ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4419428Z
2026-10-24T14:31:16.4419710Z src/orchestration-v2/ThreadManagementService.ts:706:5 - suggestion TS377015: This expression contains chained `pipe` calls that can be simplified to a single `pipe` call. effect(unnecessaryPipeChain)
2026-10-24T14:31:16.4419712Z
2026-10-24T14:31:16.4419779Z 706     ensureProjectionTranscript(input.threadId)
2026-10-24T14:31:16.4419831Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4419965Z 707       .pipe(Effect.andThen(orchestrator.getThreadRecords(input.threadId, fields, filter)))
2026-10-24T14:31:16.4420051Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4420089Z ...
2026-10-24T14:31:16.4420129Z 726         ),
2026-10-24T14:31:16.4420170Z     ~~~~~~~~~~
2026-10-24T14:31:16.4420209Z 727       );
2026-10-24T14:31:16.4420248Z     ~~~~~~~
2026-10-24T14:31:16.4420250Z
2026-10-24T14:31:16.4420708Z src/orchestration-v2/ThreadManagementService.ts:717:9 - suggestion TS377120: `Effect.filterOrFail` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-24T14:31:16.4420711Z
2026-10-24T14:31:16.4420768Z 717         Effect.flatMap((projection) =>
2026-10-24T14:31:16.4420853Z             ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4420855Z
2026-10-24T14:31:16.4421225Z src/orchestration-v2/ThreadManagementService.ts:1131:43 - suggestion TS377019: This `yield* Effect.fail(...)` passes a yieldable error value. `yield*` represents that value directly without wrapping it in `Effect.fail`. effect(unnecessaryFailYieldableError)
2026-10-24T14:31:16.4421228Z
2026-10-24T14:31:16.4421326Z 1131     if (failures[0] !== undefined) return yield* Effect.fail(failures[0]);
2026-10-24T14:31:16.4421382Z                                                ~~~~~
2026-10-24T14:31:16.4421388Z
2026-10-24T14:31:16.4421736Z src/orchestration-v2/ThreadManagementService.ts:1142:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.searchThread")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4421738Z
2026-10-24T14:31:16.4421788Z 1142     searchThread: (input) =>
2026-10-24T14:31:16.4421829Z          ~~~~~~~~~~~~
2026-10-24T14:31:16.4421833Z
2026-10-24T14:31:16.4422267Z src/orchestration-v2/ThreadManagementService.ts:1147:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.getThreadHistoryPage")((threadId, cursor, throughEntryId, conversationOnly) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4422269Z
2026-10-24T14:31:16.4422386Z 1147     getThreadHistoryPage: (threadId, cursor, throughEntryId, conversationOnly) =>
2026-10-24T14:31:16.4422429Z          ~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4422432Z
2026-10-24T14:31:16.4422800Z src/orchestration-v2/ThreadManagementService.ts:1153:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.getTimelinePage")((threadId, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4422802Z
2026-10-24T14:31:16.4422863Z 1153     getTimelinePage: (threadId, options) =>
2026-10-24T14:31:16.4422907Z          ~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4422909Z
2026-10-24T14:31:16.4423263Z src/orchestration-v2/ThreadManagementService.ts:1157:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.getMessageCount")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4423265Z
2026-10-24T14:31:16.4423317Z 1157     getMessageCount: (threadId) =>
2026-10-24T14:31:16.4423359Z          ~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4423361Z
2026-10-24T14:31:16.4423706Z src/orchestration-v2/ThreadManagementService.ts:1161:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.getTurnItem")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4423708Z
2026-10-24T14:31:16.4423757Z 1161     getTurnItem: (input) =>
2026-10-24T14:31:16.4423796Z          ~~~~~~~~~~~
2026-10-24T14:31:16.4423799Z
2026-10-24T14:31:16.4424179Z src/orchestration-v2/ThreadManagementService.ts:1166:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.getThreadRecords")((threadId, fields, filter) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4424183Z
2026-10-24T14:31:16.4424255Z 1166     getThreadRecords: (threadId, fields, filter) =>
2026-10-24T14:31:16.4424298Z          ~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4424301Z
2026-10-24T14:31:16.4424753Z src/orchestration-v2/ThreadManagementService.ts:1206:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("LegacyV1ThreadImporter.LegacyV1ThreadImporter.ensureTranscript")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4424755Z
2026-10-24T14:31:16.4424893Z 1206     ensureTranscript: () => Effect.succeed({ importedThreadCount: 0, importedMessageCount: 0 }),
2026-10-24T14:31:16.4424934Z          ~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4424937Z
2026-10-24T14:31:16.4425265Z src/orchestration-v2/ThreadPullRequestService.test.ts:119:29 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4425340Z
2026-10-24T14:31:16.4425419Z 119             getShell: () => Effect.succeed(Option.some(project)),
2026-10-24T14:31:16.4425469Z                                 ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4425471Z
2026-10-24T14:31:16.4425734Z src/orchestration-v2/ThreadPullRequestService.test.ts:238:31 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4425737Z
2026-10-24T14:31:16.4425818Z 238               getShell: () => Effect.succeed(Option.some(project)),
2026-10-24T14:31:16.4425870Z                                   ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4425872Z
2026-10-24T14:31:16.4426256Z src/orchestration-v2/ThreadPullRequestService.ts:326:17 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T14:31:16.4426260Z
2026-10-24T14:31:16.4426317Z 326                 Effect.catchCause((cause) =>
2026-10-24T14:31:16.4426361Z                     ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4426364Z
2026-10-24T14:31:16.4426743Z src/orchestration-v2/ThreadSettlementService.ts:342:11 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T14:31:16.4426746Z
2026-10-24T14:31:16.4426800Z 342           Effect.catchCause((cause) =>
2026-10-24T14:31:16.4426846Z               ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4426849Z
2026-10-24T14:31:16.4427225Z src/orchestration-v2/ThreadSettlementService.ts:505:11 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T14:31:16.4427230Z
2026-10-24T14:31:16.4427282Z 505           Effect.catchCause((cause) =>
2026-10-24T14:31:16.4427329Z               ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4427331Z
2026-10-24T14:31:16.4427707Z src/orchestration-v2/ThreadSettlementService.ts:523:7 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T14:31:16.4427709Z
2026-10-24T14:31:16.4427760Z 523       Effect.catchCause((cause) =>
2026-10-24T14:31:16.4427803Z           ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4427807Z
2026-10-24T14:31:16.4428180Z src/orchestration-v2/ThreadSettlementService.ts:565:9 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T14:31:16.4428185Z
2026-10-24T14:31:16.4428235Z 565         Effect.catchCause((cause) =>
2026-10-24T14:31:16.4428278Z             ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4428280Z
2026-10-24T14:31:16.4428632Z src/orchestration-v2/TurnItemPositionStore.ts:106:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("TurnItemPositionStoreV2.normalize")((item, runOrdinal) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4428634Z
2026-10-24T14:31:16.4428687Z 106       normalize: (item, runOrdinal) =>
2026-10-24T14:31:16.4428727Z           ~~~~~~~~~
2026-10-24T14:31:16.4428729Z
2026-10-24T14:31:16.4429206Z src/orchestration-v2/http.test.ts:54:23 - suggestion TS377112: This input is already assignable to the schema's Encoded type. Use `decodeSync` to preserve compile-time type checking instead of discarding the input type through `decodeUnknownSync`. effect(preferTypedSchemaDecoder)
2026-10-24T14:31:16.4429209Z
2026-10-24T14:31:16.4429309Z 54 const thread = Schema.decodeUnknownSync(OrchestrationV2AppThread)({
2026-10-24T14:31:16.4429402Z                          ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4429404Z
2026-10-24T14:31:16.4429776Z src/orchestration-v2/http.ts:231:11 - suggestion TS377012: This Effect generator contains `try/catch`; in this context, error handling is expressed with Effect APIs such as Effect.try, Effect.tryPromise, Effect.catch, Effect.catchTag). effect(tryCatchInEffectGen)
2026-10-24T14:31:16.4429778Z
2026-10-24T14:31:16.4429818Z 231           try {
2026-10-24T14:31:16.4429857Z               ~~~~~
2026-10-24T14:31:16.4429938Z 232             decodeThreadHistoryCursor(args.query.cursor);
2026-10-24T14:31:16.4430002Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4430040Z ...
2026-10-24T14:31:16.4430171Z 236             return yield* failEnvironmentInternal("orchestration_thread_history_failed", cause);
2026-10-24T14:31:16.4430258Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4430299Z 237           }
2026-10-24T14:31:16.4430337Z     ~~~~~~~~~~~
2026-10-24T14:31:16.4430339Z
2026-10-24T14:31:16.4430583Z src/orchestration-v2/runtimeLayer.test.ts:120:18 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4430585Z
2026-10-24T14:31:16.4430650Z 120   getById: () => Effect.succeed(Option.none()),
2026-10-24T14:31:16.4430695Z                      ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4430698Z
2026-10-24T14:31:16.4430939Z src/orchestration-v2/runtimeLayer.test.ts:997:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4430941Z
2026-10-24T14:31:16.4430986Z 997           Effect.succeed(
2026-10-24T14:31:16.4431030Z               ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4431032Z
2026-10-24T14:31:16.4431398Z src/orchestration-v2/testkit/CommandOutputRecorder.ts:40:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("CommandOutputHub.CommandOutputHub.append")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4431402Z
2026-10-24T14:31:16.4431449Z 40         append: (input) =>
2026-10-24T14:31:16.4431487Z            ~~~~~~
2026-10-24T14:31:16.4431491Z
2026-10-24T14:31:16.4431812Z src/orchestration-v2/testkit/OrchestratorScenario.ts:283:13 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("awaitDispatch")(function*(key) { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4431815Z
2026-10-24T14:31:16.4431874Z 283       const awaitDispatch = (key: string) =>
2026-10-24T14:31:16.4431917Z                 ~~~~~~~~~~~~~
2026-10-24T14:31:16.4431920Z
2026-10-24T14:31:16.4432339Z src/orchestration-v2/testkit/ProviderReplayHarness.ts:447:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadTitleRegenerationService.ThreadTitleRegenerationService.execute")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4432343Z
2026-10-24T14:31:16.4432392Z 447       execute: () => Effect.void,
2026-10-24T14:31:16.4432431Z           ~~~~~~~
2026-10-24T14:31:16.4432433Z
2026-10-24T14:31:16.4432773Z src/persistence/PullRequestFilesViewed.ts:92:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestFilesViewedRepository.list")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4432776Z
2026-10-24T14:31:16.4432820Z 92     list: (input) =>
2026-10-24T14:31:16.4432861Z        ~~~~
2026-10-24T14:31:16.4432863Z
2026-10-24T14:31:16.4433258Z src/persistence/PullRequestFilesViewed.ts:102:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestFilesViewedRepository.set")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4433262Z
2026-10-24T14:31:16.4433306Z 102     set: (input) =>
2026-10-24T14:31:16.4433382Z         ~~~
2026-10-24T14:31:16.4433384Z
2026-10-24T14:31:16.4433714Z src/persistence/PullRequestReviewGuides.ts:54:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestReviewGuideRepository.get")((key) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4433717Z
2026-10-24T14:31:16.4433759Z 54     get: (key) =>
2026-10-24T14:31:16.4433797Z        ~~~
2026-10-24T14:31:16.4433799Z
2026-10-24T14:31:16.4434142Z src/persistence/PullRequestReviewGuides.ts:64:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestReviewGuideRepository.put")((key, guide) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4434144Z
2026-10-24T14:31:16.4434189Z 64     put: (key, guide) =>
2026-10-24T14:31:16.4434229Z        ~~~
2026-10-24T14:31:16.4434231Z
2026-10-24T14:31:16.4434638Z src/persistence/initializeV2Database.ts:45:9 - suggestion TS377116: `Effect.catchIf` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T14:31:16.4434642Z
2026-10-24T14:31:16.4434690Z 45         Effect.catch((error) =>
2026-10-24T14:31:16.4434731Z            ~~~~~~~~~~~~
2026-10-24T14:31:16.4434734Z
2026-10-24T14:31:16.4435049Z src/preview/DesktopBrowserChannel.ts:75:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBrowserChannel.awaitAttached")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4435052Z
2026-10-24T14:31:16.4435116Z 75       awaitAttached: () => Effect.succeed(false),
2026-10-24T14:31:16.4435185Z          ~~~~~~~~~~~~~
2026-10-24T14:31:16.4435190Z
2026-10-24T14:31:16.4435498Z src/preview/DesktopBrowserChannel.ts:78:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBrowserChannel.isAttached")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4435502Z
2026-10-24T14:31:16.4435563Z 78       isAttached: () => Effect.succeed(false),
2026-10-24T14:31:16.4435605Z          ~~~~~~~~~~
2026-10-24T14:31:16.4435607Z
2026-10-24T14:31:16.4435913Z src/preview/DesktopBrowserChannel.ts:79:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBrowserChannel.endpoint")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4435915Z
2026-10-24T14:31:16.4436016Z 79       endpoint: () => Effect.die("No desktop app is attached to this server."),
2026-10-24T14:31:16.4436056Z          ~~~~~~~~
2026-10-24T14:31:16.4436058Z
2026-10-24T14:31:16.4436362Z src/preview/DesktopBrowserChannel.ts:80:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBrowserChannel.pointer")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4436364Z
2026-10-24T14:31:16.4436414Z 80       pointer: () => Effect.void,
2026-10-24T14:31:16.4436454Z          ~~~~~~~
2026-10-24T14:31:16.4436458Z
2026-10-24T14:31:16.4436790Z src/preview/DesktopBrowserChannel.ts:194:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBrowserChannel.awaitAttached")((key, timeout) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4436794Z
2026-10-24T14:31:16.4436845Z 194     awaitAttached: (key, timeout) =>
2026-10-24T14:31:16.4436887Z         ~~~~~~~~~~~~~
2026-10-24T14:31:16.4436889Z
2026-10-24T14:31:16.4437295Z src/preview/DesktopBrowserChannel.ts:216:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBrowserChannel.isAttached")((key) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4437297Z
2026-10-24T14:31:16.4437398Z 216     isAttached: (key) => Effect.sync(() => attachedTabs.has(keyOf(key))),
2026-10-24T14:31:16.4437437Z         ~~~~~~~~~~
2026-10-24T14:31:16.4437439Z
2026-10-24T14:31:16.4437759Z src/preview/DesktopBrowserChannel.ts:218:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBrowserChannel.pointer")((key, pointer) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4437833Z
2026-10-24T14:31:16.4437936Z 218     pointer: (key, pointer) => command({ type: "pointer", ...key, ...pointer }),
2026-10-24T14:31:16.4437976Z         ~~~~~~~
2026-10-24T14:31:16.4437978Z
2026-10-24T14:31:16.4438435Z src/preview/ServerBrowser.ts:481:23 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T14:31:16.4438438Z
2026-10-24T14:31:16.4438531Z 481     executable: () => Effect.runPromise(previewBrowser.executable),
2026-10-24T14:31:16.4438579Z                           ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4438582Z
2026-10-24T14:31:16.4439026Z src/preview/ServerBrowser.ts:688:9 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T14:31:16.4439030Z
2026-10-24T14:31:16.4439079Z 688       ? Effect.runPromise(
2026-10-24T14:31:16.4439122Z             ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4439125Z
2026-10-24T14:31:16.4439568Z src/preview/ServerBrowser.ts:697:25 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T14:31:16.4439572Z
2026-10-24T14:31:16.4439646Z 697     const scope = await Effect.runPromise(Scope.make());
2026-10-24T14:31:16.4439696Z                             ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4439700Z
2026-10-24T14:31:16.4440144Z src/preview/ServerBrowser.ts:699:30 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T14:31:16.4440146Z
2026-10-24T14:31:16.4440210Z 699       const endpoint = await Effect.runPromise(
2026-10-24T14:31:16.4440259Z                                  ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4440263Z
2026-10-24T14:31:16.4440704Z src/preview/ServerBrowser.ts:709:17 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T14:31:16.4440706Z
2026-10-24T14:31:16.4440790Z 709           await Effect.runPromise(Scope.close(scope, Exit.void));
2026-10-24T14:31:16.4440836Z                     ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4440839Z
2026-10-24T14:31:16.4441281Z src/preview/ServerBrowser.ts:713:13 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T14:31:16.4441283Z
2026-10-24T14:31:16.4441365Z 713       await Effect.runPromise(Scope.close(scope, Exit.void));
2026-10-24T14:31:16.4441408Z                 ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4441410Z
2026-10-24T14:31:16.4441914Z src/preview/ServerBrowser.ts:1200:11 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T14:31:16.4441950Z
2026-10-24T14:31:16.4441999Z 1200     await Effect.runPromise(
2026-10-24T14:31:16.4442043Z                ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4442045Z
2026-10-24T14:31:16.4442488Z src/preview/ServerBrowser.ts:1693:17 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T14:31:16.4442491Z
2026-10-24T14:31:16.4442541Z 1693         : await Effect.runPromise(
2026-10-24T14:31:16.4442588Z                      ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4442591Z
2026-10-24T14:31:16.4443033Z src/preview/ServerBrowser.ts:1757:21 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T14:31:16.4443038Z
2026-10-24T14:31:16.4443095Z 1757             ? await Effect.runPromise(
2026-10-24T14:31:16.4443142Z                          ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4443144Z
2026-10-24T14:31:16.4443410Z src/preview/ServerBrowser.ts:1760:58 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T14:31:16.4443413Z
2026-10-24T14:31:16.4443519Z 1760                     ServerBrowserTabNotFoundError: () => Effect.succeed(undefined),
2026-10-24T14:31:16.4443586Z                                                               ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4443589Z
2026-10-24T14:31:16.4444033Z src/preview/ServerBrowser.ts:1766:38 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T14:31:16.4444037Z
2026-10-24T14:31:16.4444108Z 1766           const { sessions } = await Effect.runPromise(
2026-10-24T14:31:16.4444164Z                                           ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4444168Z
2026-10-24T14:31:16.4444610Z src/preview/ServerBrowser.ts:1794:19 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T14:31:16.4444614Z
2026-10-24T14:31:16.4444667Z 1794             await Effect.runPromise(
2026-10-24T14:31:16.4444713Z                        ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4444715Z
2026-10-24T14:31:16.4445191Z src/preview/ServerBrowser.ts:1825:21 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T14:31:16.4445195Z
2026-10-24T14:31:16.4445251Z 1825               await Effect.runPromise(
2026-10-24T14:31:16.4445296Z                          ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4445298Z
2026-10-24T14:31:16.4445808Z src/preview/ServerBrowser.ts:1889:13 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T14:31:16.4445811Z
2026-10-24T14:31:16.4445944Z 1889       await Effect.runPromise(manager.close({ threadId: tab.threadId, tabId: tab.tabId }));
2026-10-24T14:31:16.4445990Z                  ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4445992Z
2026-10-24T14:31:16.4446492Z src/preview/ServerBrowser.ts:1957:15 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T14:31:16.4446494Z
2026-10-24T14:31:16.4446545Z 1957         await Effect.runPromise(
2026-10-24T14:31:16.4446593Z                    ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4446595Z
2026-10-24T14:31:16.4447039Z src/preview/ServerBrowser.ts:1969:32 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T14:31:16.4447041Z
2026-10-24T14:31:16.4447113Z 1969         const snapshot = await Effect.runPromise(
2026-10-24T14:31:16.4447168Z                                     ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4447172Z
2026-10-24T14:31:16.4447617Z src/preview/ServerBrowser.ts:2215:15 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T14:31:16.4447620Z
2026-10-24T14:31:16.4447669Z 2215         await Effect.runPromise(
2026-10-24T14:31:16.4447717Z                    ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4447719Z
2026-10-24T14:31:16.4447999Z src/preview/ServerBrowserStream.ts:179:13 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("receive")((chunk) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4448001Z
2026-10-24T14:31:16.4448073Z 179       const receive = (chunk: Uint8Array | string) => {
2026-10-24T14:31:16.4448113Z                 ~~~~~~~
2026-10-24T14:31:16.4448118Z
2026-10-24T14:31:16.4448414Z src/preview/ServerBrowserStream.ts:209:5 - suggestion TS377095: `Effect.orElseSucceed` expresses the same recovery more directly than `Effect.catch` followed by `Effect.succeed`. effect(catchToOrElseSucceed)
2026-10-24T14:31:16.4448416Z
2026-10-24T14:31:16.4448511Z 209     Effect.catch(() => Effect.succeed(HttpServerResponse.empty())),
2026-10-24T14:31:16.4448551Z         ~~~~~~~~~~~~
2026-10-24T14:31:16.4448553Z
2026-10-24T14:31:16.4448878Z src/process/externalLauncher.ts:860:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ExternalLauncher.resolveAvailableEditors")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4448881Z
2026-10-24T14:31:16.4448964Z 860     resolveAvailableEditors: () => cachedAvailableEditors,
2026-10-24T14:31:16.4449009Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4449011Z
2026-10-24T14:31:16.4449338Z src/process/externalLauncher.ts:861:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ExternalLauncher.resolveFileManagerRevealKind")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4449342Z
2026-10-24T14:31:16.4449400Z 861     resolveFileManagerRevealKind: () =>
2026-10-24T14:31:16.4449444Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4449446Z
2026-10-24T14:31:16.4449749Z src/process/externalLauncher.ts:865:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ExternalLauncher.launchBrowser")((target) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4449753Z
2026-10-24T14:31:16.4449800Z 865     launchBrowser: (target) =>
2026-10-24T14:31:16.4449903Z         ~~~~~~~~~~~~~
2026-10-24T14:31:16.4449905Z
2026-10-24T14:31:16.4450210Z src/process/externalLauncher.ts:869:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ExternalLauncher.launchEditor")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4450279Z
2026-10-24T14:31:16.4450328Z 869     launchEditor: (input) =>
2026-10-24T14:31:16.4450367Z         ~~~~~~~~~~~~
2026-10-24T14:31:16.4450369Z
2026-10-24T14:31:16.4450619Z src/project/AgentSessionImporter.test.ts:212:15 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4450621Z
2026-10-24T14:31:16.4450671Z 212               Effect.succeed(
2026-10-24T14:31:16.4450715Z                   ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4450717Z
2026-10-24T14:31:16.4450954Z src/project/ManagedProjectFolders.ts:346:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4450957Z
2026-10-24T14:31:16.4451037Z 346           ? Effect.succeed(Option.some(folderFor(id.slice(-8))))
2026-10-24T14:31:16.4451081Z                 ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4451083Z
2026-10-24T14:31:16.4451315Z src/project/ManagedProjectFolders.ts:348:15 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4451319Z
2026-10-24T14:31:16.4451387Z 348             ? Effect.succeed(Option.some(fullFolder))
2026-10-24T14:31:16.4451427Z                   ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4451430Z
2026-10-24T14:31:16.4451744Z src/project/ProjectCloneTracker.ts:432:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProjectCloneTracker.start")((input, hooks) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4451747Z
2026-10-24T14:31:16.4451825Z 432     start: (input, hooks) => locked(start(input, hooks)),
2026-10-24T14:31:16.4451866Z         ~~~~~
2026-10-24T14:31:16.4451868Z
2026-10-24T14:31:16.4452179Z src/project/ProjectCloneTracker.ts:433:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProjectCloneTracker.cancel")((projectId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4452183Z
2026-10-24T14:31:16.4452251Z 433     cancel: (projectId) => locked(cancel(projectId)),
2026-10-24T14:31:16.4452292Z         ~~~~~~
2026-10-24T14:31:16.4452294Z
2026-10-24T14:31:16.4452598Z src/project/ProjectCloneTracker.ts:434:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProjectCloneTracker.retry")((projectId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4452601Z
2026-10-24T14:31:16.4452669Z 434     retry: (projectId) => locked(retry(projectId)),
2026-10-24T14:31:16.4452710Z         ~~~~~
2026-10-24T14:31:16.4452712Z
2026-10-24T14:31:16.4453022Z src/project/ProjectCloneTracker.ts:435:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProjectCloneTracker.discard")((projectId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4453024Z
2026-10-24T14:31:16.4453096Z 435     discard: (projectId) => locked(discard(projectId)),
2026-10-24T14:31:16.4453137Z         ~~~~~~~
2026-10-24T14:31:16.4453139Z
2026-10-24T14:31:16.4453463Z src/provider/CodexChatGptHandoff.ts:21:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ServerSecretStore.ServerSecretStore.get")((key) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4453466Z
2026-10-24T14:31:16.4453562Z 21         get: (key) => Effect.sync(() => Option.fromUndefinedOr(bytes.get(key))),
2026-10-24T14:31:16.4453599Z            ~~~
2026-10-24T14:31:16.4453602Z
2026-10-24T14:31:16.4454002Z src/provider/CodexChatGptHandoff.ts:22:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ServerSecretStore.ServerSecretStore.set")((key, value) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4454005Z
2026-10-24T14:31:16.4454051Z 22         set: (key, value) =>
2026-10-24T14:31:16.4454089Z            ~~~
2026-10-24T14:31:16.4454092Z
2026-10-24T14:31:16.4454473Z src/provider/CodexChatGptHandoff.ts:26:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ServerSecretStore.ServerSecretStore.remove")((key) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4454475Z
2026-10-24T14:31:16.4454520Z 26         remove: (key) =>
2026-10-24T14:31:16.4454559Z            ~~~~~~
2026-10-24T14:31:16.4454561Z
2026-10-24T14:31:16.4454884Z src/provider/CodexChatGptHandoff.ts:30:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ServerSecretStore.ServerSecretStore.create")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4454887Z
2026-10-24T14:31:16.4454986Z 30         create: () => Effect.die("Handoff does not create persistent secrets."),
2026-10-24T14:31:16.4455024Z            ~~~~~~
2026-10-24T14:31:16.4455028Z
2026-10-24T14:31:16.4455404Z src/provider/CodexChatGptHandoff.ts:31:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ServerSecretStore.ServerSecretStore.getOrCreateRandom")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4455408Z
2026-10-24T14:31:16.4455537Z 31         getOrCreateRandom: () => Effect.die("Handoff uses the destination environment identity."),
2026-10-24T14:31:16.4455582Z            ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4455584Z
2026-10-24T14:31:16.4455999Z src/provider/CodexInstallation.ts:205:26 - suggestion TS377112: This input is already assignable to the schema's Encoded type. Use `decodeEffect` to preserve compile-time type checking instead of discarding the input type through `decodeUnknownEffect`. effect(preferTypedSchemaDecoder)
2026-10-24T14:31:16.4456001Z
2026-10-24T14:31:16.4456113Z 205     return yield* Schema.decodeUnknownEffect(Schema.fromJsonString(schema))(
2026-10-24T14:31:16.4456163Z                              ~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4456165Z
2026-10-24T14:31:16.4456432Z src/provider/CodexProvider.ts:569:11 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T14:31:16.4456436Z
2026-10-24T14:31:16.4456488Z 569         ? Effect.succeed(undefined)
2026-10-24T14:31:16.4456534Z               ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4456536Z
2026-10-24T14:31:16.4456851Z src/provider/ModelManifest.ts:284:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ModelCatalog.ModelCatalog.current")((driverKind) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4456855Z
2026-10-24T14:31:16.4456903Z 284       current: (driverKind) =>
2026-10-24T14:31:16.4456944Z           ~~~~~~~
2026-10-24T14:31:16.4456947Z
2026-10-24T14:31:16.4457300Z src/provider/ProviderAuthService.test.ts:284:24 - suggestion TS377019: This `yield* Effect.fail(...)` passes a yieldable error value. `yield*` represents that value directly without wrapping it in `Effect.fail`. effect(unnecessaryFailYieldableError)
2026-10-24T14:31:16.4457305Z
2026-10-24T14:31:16.4457360Z 284                 return yield* Effect.fail(
2026-10-24T14:31:16.4457402Z                            ~~~~~
2026-10-24T14:31:16.4457404Z
2026-10-24T14:31:16.4457726Z src/provider/ProviderAuthService.ts:211:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAuthService.importProfile")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4457729Z
2026-10-24T14:31:16.4457781Z 211     importProfile: (input) =>
2026-10-24T14:31:16.4457821Z         ~~~~~~~~~~~~~
2026-10-24T14:31:16.4457823Z
2026-10-24T14:31:16.4458225Z src/provider/ProviderHostLive.ts:39:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderHost.ProviderHost.credentials")((namespace, bindingId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4458228Z
2026-10-24T14:31:16.4458287Z 39       credentials: (namespace, bindingId) =>
2026-10-24T14:31:16.4458369Z          ~~~~~~~~~~~
2026-10-24T14:31:16.4458372Z
2026-10-24T14:31:16.4458741Z src/pullRequest/PullRequestService.ts:2986:7 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T14:31:16.4458744Z
2026-10-24T14:31:16.4458795Z 2986       Effect.catchCause((cause) =>
2026-10-24T14:31:16.4458838Z            ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4458840Z
2026-10-24T14:31:16.4459203Z src/pullRequest/PullRequestService.ts:3389:7 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T14:31:16.4459207Z
2026-10-24T14:31:16.4459255Z 3389       Effect.catchCause((cause) =>
2026-10-24T14:31:16.4459297Z            ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4459299Z
2026-10-24T14:31:16.4459616Z src/pullRequest/PullRequestService.ts:3609:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestService.listStats")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4459618Z
2026-10-24T14:31:16.4459666Z 3609     listStats: (input) =>
2026-10-24T14:31:16.4459705Z          ~~~~~~~~~
2026-10-24T14:31:16.4459707Z
2026-10-24T14:31:16.4459945Z src/relay/AgentAwarenessRelay.test.ts:271:9 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T14:31:16.4459947Z
2026-10-24T14:31:16.4459992Z 271         Effect.succeed(
2026-10-24T14:31:16.4460036Z             ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4460039Z
2026-10-24T14:31:16.4460346Z src/relay/AgentAwarenessRelay.ts:822:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AgentAwarenessRelay.requestCatchUp")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4460351Z
2026-10-24T14:31:16.4460468Z 822     requestCatchUp: () => Queue.offer(catchUpRequests, undefined).pipe(Effect.asVoid),
2026-10-24T14:31:16.4460510Z         ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4460512Z
2026-10-24T14:31:16.4460893Z src/resourceTelemetry/DesktopTelemetryReceiver.ts:641:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopTelemetryReceiver.requestDesktopUpdate")((requestId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4460896Z
2026-10-24T14:31:16.4460954Z 641     requestDesktopUpdate: (requestId) =>
2026-10-24T14:31:16.4460995Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4460999Z
2026-10-24T14:31:16.4461371Z src/resourceTelemetry/DesktopTelemetryReceiver.ts:647:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopTelemetryReceiver.commitDesktopUpdate")((requestId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4461374Z
2026-10-24T14:31:16.4461431Z 647     commitDesktopUpdate: (requestId) =>
2026-10-24T14:31:16.4461474Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4461476Z
2026-10-24T14:31:16.4461844Z src/resourceTelemetry/DesktopTelemetryReceiver.ts:649:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopTelemetryReceiver.cancelDesktopUpdate")((requestId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4461847Z
2026-10-24T14:31:16.4461901Z 649     cancelDesktopUpdate: (requestId) =>
2026-10-24T14:31:16.4461942Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4461944Z
2026-10-24T14:31:16.4462361Z src/resourceTelemetry/DesktopTelemetryReceiver.ts:698:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopTelemetryReceiver.setDiagnosticsDemand")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4462364Z
2026-10-24T14:31:16.4462427Z 698       setDiagnosticsDemand: () => Effect.void,
2026-10-24T14:31:16.4462513Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4462515Z
2026-10-24T14:31:16.4462871Z src/resourceTelemetry/DesktopTelemetryReceiver.ts:699:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopTelemetryReceiver.requestDesktopUpdate")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4462875Z
2026-10-24T14:31:16.4462935Z 699       requestDesktopUpdate: () => Effect.void,
2026-10-24T14:31:16.4462978Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4462981Z
2026-10-24T14:31:16.4463338Z src/resourceTelemetry/DesktopTelemetryReceiver.ts:700:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopTelemetryReceiver.commitDesktopUpdate")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4463340Z
2026-10-24T14:31:16.4463400Z 700       commitDesktopUpdate: () => Effect.void,
2026-10-24T14:31:16.4463444Z           ~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4463446Z
2026-10-24T14:31:16.4463804Z src/resourceTelemetry/DesktopTelemetryReceiver.ts:701:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopTelemetryReceiver.cancelDesktopUpdate")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4463807Z
2026-10-24T14:31:16.4463866Z 701       cancelDesktopUpdate: () => Effect.void,
2026-10-24T14:31:16.4463908Z           ~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4463911Z
2026-10-24T14:31:16.4464242Z src/resourceTelemetry/NativeTelemetryClient.ts:1091:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("NativeTelemetryClient.readHistory")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4464244Z
2026-10-24T14:31:16.4464287Z 1091       readHistory: () =>
2026-10-24T14:31:16.4464329Z            ~~~~~~~~~~~
2026-10-24T14:31:16.4464332Z
2026-10-24T14:31:16.4464679Z src/resourceTelemetry/NativeTelemetryClient.ts:1097:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("NativeTelemetryClient.setExternalProcesses")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4464684Z
2026-10-24T14:31:16.4464745Z 1097       setExternalProcesses: () => Effect.void,
2026-10-24T14:31:16.4464788Z            ~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4464790Z
2026-10-24T14:31:16.4465158Z src/resourceTelemetry/NativeTelemetryClient.ts:1098:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("NativeTelemetryClient.setHostPowerState")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4465162Z
2026-10-24T14:31:16.4465221Z 1098       setHostPowerState: () => Effect.void,
2026-10-24T14:31:16.4465264Z            ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4465266Z
2026-10-24T14:31:16.4465560Z src/scheduledTasks/ScheduledTaskService.ts:1136:31 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T14:31:16.4465565Z
2026-10-24T14:31:16.4465631Z 1136                             ? Effect.succeed(undefined)
2026-10-24T14:31:16.4465687Z                                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4465689Z
2026-10-24T14:31:16.4465966Z src/secrets/SecretRequests.test.ts:166:30 - suggestion TS377113: `Effect.forEach` expresses this effectful array mapping more directly than `Effect.all` over `Array#map`. effect(allOfMapToForEach)
2026-10-24T14:31:16.4465968Z
2026-10-24T14:31:16.4466023Z 166       const results = yield* Effect.all(
2026-10-24T14:31:16.4466068Z                                  ~~~~~~~~~~
2026-10-24T14:31:16.4466070Z
2026-10-24T14:31:16.4466491Z src/server.ts:481:5 - suggestion TS377014: This generator returns an Effect-able value directly, which produces a nested `Effect<Effect<...>>`. If the intended result is the inner Effect value, `return yield*` represents that form. effect(returnEffectInGen)
2026-10-24T14:31:16.4466494Z
2026-10-24T14:31:16.4466576Z 481     return Effect.gen(function* () {
2026-10-24T14:31:16.4466616Z         ~~~~~~
2026-10-24T14:31:16.4466618Z
2026-10-24T14:31:16.4466892Z src/serverRuntimeStartup.test.ts:209:25 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T14:31:16.4466894Z
2026-10-24T14:31:16.4466960Z 209           prepareTrial: Effect.succeed(undefined),
2026-10-24T14:31:16.4467012Z                             ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4467015Z
2026-10-24T14:31:16.4467278Z src/serverSettings.test.ts:413:30 - suggestion TS377113: `Effect.forEach` expresses this effectful array mapping more directly than `Effect.all` over `Array#map`. effect(allOfMapToForEach)
2026-10-24T14:31:16.4467280Z
2026-10-24T14:31:16.4467336Z 413       const results = yield* Effect.all(
2026-10-24T14:31:16.4467383Z                                  ~~~~~~~~~~
2026-10-24T14:31:16.4467385Z
2026-10-24T14:31:16.4467801Z src/sourceControl/SourceControlProviderRegistry.ts:204:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.listChangeRequests")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4467804Z
2026-10-24T14:31:16.4467857Z 204     listChangeRequests: (input) =>
2026-10-24T14:31:16.4467898Z         ~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4467901Z
2026-10-24T14:31:16.4468306Z src/sourceControl/SourceControlProviderRegistry.ts:209:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4468308Z
2026-10-24T14:31:16.4468359Z 209     getChangeRequest: (input) =>
2026-10-24T14:31:16.4468402Z         ~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4468404Z
2026-10-24T14:31:16.4468811Z src/sourceControl/SourceControlProviderRegistry.ts:214:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.createChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4468815Z
2026-10-24T14:31:16.4468866Z 214     createChangeRequest: (input) =>
2026-10-24T14:31:16.4468909Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4468912Z
2026-10-24T14:31:16.4469327Z src/sourceControl/SourceControlProviderRegistry.ts:219:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getRepositoryCloneUrls")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4469331Z
2026-10-24T14:31:16.4469389Z 219     getRepositoryCloneUrls: (input) =>
2026-10-24T14:31:16.4469432Z         ~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4469436Z
2026-10-24T14:31:16.4469835Z src/sourceControl/SourceControlProviderRegistry.ts:224:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.createRepository")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4469839Z
2026-10-24T14:31:16.4469937Z 224     createRepository: (input) => provider.createRepository(input),
2026-10-24T14:31:16.4469980Z         ~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4469982Z
2026-10-24T14:31:16.4470382Z src/sourceControl/SourceControlProviderRegistry.ts:225:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getDefaultBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4470445Z
2026-10-24T14:31:16.4470496Z 225     getDefaultBranch: (input) =>
2026-10-24T14:31:16.4470537Z         ~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4470539Z
2026-10-24T14:31:16.4470949Z src/sourceControl/SourceControlProviderRegistry.ts:230:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.checkoutChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4471022Z
2026-10-24T14:31:16.4471078Z 230     checkoutChangeRequest: (input) =>
2026-10-24T14:31:16.4471122Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4471124Z
2026-10-24T14:31:16.4471480Z src/sourceControl/SourceControlProviderRegistry.ts:345:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProviderRegistry.resolve")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4471483Z
2026-10-24T14:31:16.4471611Z 345       resolve: (input) => resolveHandle(input).pipe(Effect.map((handle) => handle.provider)),
2026-10-24T14:31:16.4471651Z           ~~~~~~~
2026-10-24T14:31:16.4471653Z
2026-10-24T14:31:16.4472018Z src/sourceControl/SourceControlRepositoryService.ts:406:7 - suggestion TS377116: `Effect.catchIf` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T14:31:16.4472022Z
2026-10-24T14:31:16.4472070Z 406       Effect.catch((sshError) =>
2026-10-24T14:31:16.4472111Z           ~~~~~~~~~~~~
2026-10-24T14:31:16.4472115Z
2026-10-24T14:31:16.4472490Z src/sourceControl/SourceControlRepositoryService.ts:553:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.lookupRepository")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4472493Z
2026-10-24T14:31:16.4472543Z 553     lookupRepository: (input) =>
2026-10-24T14:31:16.4472584Z         ~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4472587Z
2026-10-24T14:31:16.4472954Z src/sourceControl/SourceControlRepositoryService.ts:555:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.prepareClone")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4472958Z
2026-10-24T14:31:16.4473008Z 555     prepareClone: (input) =>
2026-10-24T14:31:16.4473047Z         ~~~~~~~~~~~~
2026-10-24T14:31:16.4473049Z
2026-10-24T14:31:16.4473433Z src/sourceControl/SourceControlRepositoryService.ts:562:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.cloneRepository")((input, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4473435Z
2026-10-24T14:31:16.4473491Z 562     cloneRepository: (input, options) =>
2026-10-24T14:31:16.4473532Z         ~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4473535Z
2026-10-24T14:31:16.4473916Z src/sourceControl/SourceControlRepositoryService.ts:569:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.discardClone")((destinationPath) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4473920Z
2026-10-24T14:31:16.4473973Z 569     discardClone: (destinationPath) =>
2026-10-24T14:31:16.4474017Z         ~~~~~~~~~~~~
2026-10-24T14:31:16.4474019Z
2026-10-24T14:31:16.4474481Z src/sourceControl/SourceControlRepositoryService.ts:573:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.publishRepository")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4474484Z
2026-10-24T14:31:16.4474537Z 573     publishRepository: (input) =>
2026-10-24T14:31:16.4474579Z         ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4474581Z
2026-10-24T14:31:16.4474975Z src/storageCleanup.ts:708:14 - suggestion TS377019: This `yield* Effect.fail(...)` passes a yieldable error value. `yield*` represents that value directly without wrapping it in `Effect.fail`. effect(unnecessaryFailYieldableError)
2026-10-24T14:31:16.4474978Z
2026-10-24T14:31:16.4475028Z 708       return yield* Effect.fail(
2026-10-24T14:31:16.4475070Z                  ~~~~~
2026-10-24T14:31:16.4475072Z
2026-10-24T14:31:16.4475462Z src/telemetry/AnalyticsService.ts:113:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AnalyticsService.record")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4475465Z
2026-10-24T14:31:16.4475512Z 113       record: () => Effect.void,
2026-10-24T14:31:16.4475554Z           ~~~~~~
2026-10-24T14:31:16.4475556Z
2026-10-24T14:31:16.4475853Z src/telemetry/AnalyticsService.ts:115:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AnalyticsService.recordOwners")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4475855Z
2026-10-24T14:31:16.4475910Z 115       recordOwners: () => Effect.void,
2026-10-24T14:31:16.4475951Z           ~~~~~~~~~~~~
2026-10-24T14:31:16.4475953Z
2026-10-24T14:31:16.4476256Z src/telemetry/AnalyticsService.ts:329:62 - suggestion TS377132: `Effect.andThen` expresses this sequencing more directly than `Effect.flatMap` with a zero-parameter callback. effect(flatMapIgnoredParamToAndThen)
2026-10-24T14:31:16.4476260Z
2026-10-24T14:31:16.4476403Z 329   yield* Effect.forever(Effect.sleep(FLUSH_INTERVAL_MS).pipe(Effect.flatMap(() => flushWhenDue)), {
2026-10-24T14:31:16.4476470Z                                                                  ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4476473Z
2026-10-24T14:31:16.4476749Z src/textGeneration/CodexTextGeneration.ts:90:13 - suggestion TS377099: `Effect.ignore` expresses ignored failure more directly than `Effect.catch` returning `Effect.void`. effect(catchToIgnore)
2026-10-24T14:31:16.4476751Z
2026-10-24T14:31:16.4476809Z 90       .pipe(Effect.catch(() => Effect.void));
2026-10-24T14:31:16.4476852Z                ~~~~~~~~~~~~
2026-10-24T14:31:16.4476854Z
2026-10-24T14:31:16.4477180Z src/textGeneration/TextGeneration.ts:60:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("TextGeneration.generateCommitMessage")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4477184Z
2026-10-24T14:31:16.4477237Z 60     generateCommitMessage: (input) =>
2026-10-24T14:31:16.4477281Z        ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4477283Z
2026-10-24T14:31:16.4477598Z src/textGeneration/TextGeneration.ts:64:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("TextGeneration.generatePrContent")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4477600Z
2026-10-24T14:31:16.4477650Z 64     generatePrContent: (input) =>
2026-10-24T14:31:16.4477693Z        ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4477695Z
2026-10-24T14:31:16.4478011Z src/textGeneration/TextGeneration.ts:68:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("TextGeneration.generateBranchName")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4478013Z
2026-10-24T14:31:16.4478065Z 68     generateBranchName: (input) =>
2026-10-24T14:31:16.4478106Z        ~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4478110Z
2026-10-24T14:31:16.4478426Z src/textGeneration/TextGeneration.ts:72:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("TextGeneration.generateReviewGuide")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4478429Z
2026-10-24T14:31:16.4478481Z 72     generateReviewGuide: (input) =>
2026-10-24T14:31:16.4478524Z        ~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4478527Z
2026-10-24T14:31:16.4478908Z src/textGeneration/TextGeneration.ts:76:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("TextGeneration.generateThreadTitle")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4478911Z
2026-10-24T14:31:16.4478962Z 76     generateThreadTitle: (input) =>
2026-10-24T14:31:16.4479004Z        ~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4479006Z
2026-10-24T14:31:16.4479290Z src/usage/UsageService.ts:172:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("UsageService.readSummary")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4479361Z
2026-10-24T14:31:16.4479411Z 172     readSummary: (input) =>
2026-10-24T14:31:16.4479452Z         ~~~~~~~~~~~
2026-10-24T14:31:16.4479454Z
2026-10-24T14:31:16.4479696Z src/usage/UsageService.ts:642:9 - suggestion TS377015: This expression contains chained `pipe` calls that can be simplified to a single `pipe` call. effect(unnecessaryPipeChain)
2026-10-24T14:31:16.4479698Z
2026-10-24T14:31:16.4479755Z 642         usageInstances(driver, settings)
2026-10-24T14:31:16.4479804Z             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4479848Z 643           .pipe(
2026-10-24T14:31:16.4479887Z     ~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4479928Z ...
2026-10-24T14:31:16.4479996Z 664             Effect.provideContext(readerContext),
2026-10-24T14:31:16.4480051Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4480090Z 665           ),
2026-10-24T14:31:16.4480132Z     ~~~~~~~~~~~
2026-10-24T14:31:16.4480134Z
2026-10-24T14:31:16.4480480Z src/vcs/GitVcsDriverCore.ts:4020:9 - suggestion TS377120: `Effect.filterOrElse` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-24T14:31:16.4480483Z
2026-10-24T14:31:16.4480533Z 4020         Effect.flatMap((result) =>
2026-10-24T14:31:16.4480575Z              ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4480577Z
2026-10-24T14:31:16.4480911Z src/vcs/GitVcsDriverCore.ts:4511:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.commit")((cwd, subject, body, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4480913Z
2026-10-24T14:31:16.4480975Z 4511     commit: (cwd, subject, body, options) =>
2026-10-24T14:31:16.4481016Z          ~~~~~~
2026-10-24T14:31:16.4481018Z
2026-10-24T14:31:16.4481377Z src/vcs/GitVcsDriverCore.ts:4513:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.pushCurrentBranch")((cwd, fallbackBranch, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4481381Z
2026-10-24T14:31:16.4481459Z 4513     pushCurrentBranch: (cwd, fallbackBranch, options) =>
2026-10-24T14:31:16.4481503Z          ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4481506Z
2026-10-24T14:31:16.4481825Z src/vcs/GitVcsDriverCore.ts:4515:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.pullCurrentBranch")((cwd) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4481830Z
2026-10-24T14:31:16.4481954Z 4515     pullCurrentBranch: (cwd) => withListRefsInvalidation(cwd, pullCurrentBranch(cwd)),
2026-10-24T14:31:16.4481997Z          ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4481999Z
2026-10-24T14:31:16.4482328Z src/vcs/GitVcsDriverCore.ts:4523:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.createWorktree")((input, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4482332Z
2026-10-24T14:31:16.4482387Z 4523     createWorktree: (input, options) =>
2026-10-24T14:31:16.4482429Z          ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4482432Z
2026-10-24T14:31:16.4482755Z src/vcs/GitVcsDriverCore.ts:4525:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchRefIntoBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4482758Z
2026-10-24T14:31:16.4482960Z 4525     fetchRefIntoBranch: (input) => withListRefsInvalidation(input.cwd, fetchRefIntoBranch(input)),
2026-10-24T14:31:16.4483002Z          ~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4483005Z
2026-10-24T14:31:16.4483341Z src/vcs/GitVcsDriverCore.ts:4528:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.refreshCheckedOutBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4483417Z
2026-10-24T14:31:16.4483475Z 4528     refreshCheckedOutBranch: (input) =>
2026-10-24T14:31:16.4483520Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4483522Z
2026-10-24T14:31:16.4483838Z src/vcs/GitVcsDriverCore.ts:4530:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.ensureRemote")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4483840Z
2026-10-24T14:31:16.4483960Z 4530     ensureRemote: (input) => withListRefsInvalidation(input.cwd, ensureRemote(input)),
2026-10-24T14:31:16.4484003Z          ~~~~~~~~~~~~
2026-10-24T14:31:16.4484005Z
2026-10-24T14:31:16.4484317Z src/vcs/GitVcsDriverCore.ts:4533:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchRemote")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4484322Z
2026-10-24T14:31:16.4484369Z 4533     fetchRemote: (input) =>
2026-10-24T14:31:16.4484410Z          ~~~~~~~~~~~
2026-10-24T14:31:16.4484412Z
2026-10-24T14:31:16.4484747Z src/vcs/GitVcsDriverCore.ts:4548:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchWorktreeBaseCommit")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4484749Z
2026-10-24T14:31:16.4484805Z 4548     fetchWorktreeBaseCommit: (input) =>
2026-10-24T14:31:16.4484849Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4484851Z
2026-10-24T14:31:16.4485209Z src/vcs/GitVcsDriverCore.ts:4550:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchRemoteBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4485212Z
2026-10-24T14:31:16.4485350Z 4550     fetchRemoteBranch: (input) => withListRefsInvalidation(input.cwd, fetchRemoteBranch(input)),
2026-10-24T14:31:16.4485393Z          ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4485395Z
2026-10-24T14:31:16.4485736Z src/vcs/GitVcsDriverCore.ts:4551:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchRemoteTrackingBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4485738Z
2026-10-24T14:31:16.4485799Z 4551     fetchRemoteTrackingBranch: (input) =>
2026-10-24T14:31:16.4485844Z          ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4485846Z
2026-10-24T14:31:16.4486169Z src/vcs/GitVcsDriverCore.ts:4553:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.setBranchUpstream")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4486171Z
2026-10-24T14:31:16.4486305Z 4553     setBranchUpstream: (input) => withListRefsInvalidation(input.cwd, setBranchUpstream(input)),
2026-10-24T14:31:16.4486350Z          ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4486352Z
2026-10-24T14:31:16.4486669Z src/vcs/GitVcsDriverCore.ts:4554:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.removeWorktree")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4486671Z
2026-10-24T14:31:16.4486798Z 4554     removeWorktree: (input) => withListRefsInvalidation(input.cwd, removeWorktree(input)),
2026-10-24T14:31:16.4486840Z          ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4486842Z
2026-10-24T14:31:16.4487219Z src/vcs/GitVcsDriverCore.ts:4555:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.pruneWorktrees")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4487221Z
2026-10-24T14:31:16.4487348Z 4555     pruneWorktrees: (input) => withListRefsInvalidation(input.cwd, pruneWorktrees(input)),
2026-10-24T14:31:16.4487388Z          ~~~~~~~~~~~~~~
2026-10-24T14:31:16.4487431Z
2026-10-24T14:31:16.4487753Z src/vcs/GitVcsDriverCore.ts:4556:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.deleteLocalBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4487755Z
2026-10-24T14:31:16.4487891Z 4556     deleteLocalBranch: (input) => withListRefsInvalidation(input.cwd, deleteLocalBranch(input)),
2026-10-24T14:31:16.4487931Z          ~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4487933Z
2026-10-24T14:31:16.4488251Z src/vcs/GitVcsDriverCore.ts:4557:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.renameBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4488253Z
2026-10-24T14:31:16.4488372Z 4557     renameBranch: (input) => withListRefsInvalidation(input.cwd, renameBranch(input)),
2026-10-24T14:31:16.4488414Z          ~~~~~~~~~~~~
2026-10-24T14:31:16.4488418Z
2026-10-24T14:31:16.4488727Z src/vcs/GitVcsDriverCore.ts:4558:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.createRef")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4488729Z
2026-10-24T14:31:16.4488839Z 4558     createRef: (input) => withListRefsInvalidation(input.cwd, createRef(input)),
2026-10-24T14:31:16.4488880Z          ~~~~~~~~~
2026-10-24T14:31:16.4488883Z
2026-10-24T14:31:16.4489192Z src/vcs/GitVcsDriverCore.ts:4559:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.switchRef")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T14:31:16.4489194Z
2026-10-24T14:31:16.4489303Z 4559     switchRef: (input) => withListRefsInvalidation(input.cwd, switchRef(input)),
2026-10-24T14:31:16.4489342Z          ~~~~~~~~~
2026-10-24T14:31:16.4489346Z
2026-10-24T14:31:16.4489730Z src/vcs/VcsStatusBroadcaster.ts:153:5 - suggestion TS377014: This generator returns an Effect-able value directly, which produces a nested `Effect<Effect<...>>`. If the intended result is the inner Effect value, `return yield*` represents that form. effect(returnEffectInGen)
2026-10-24T14:31:16.4489734Z
2026-10-24T14:31:16.4489800Z 153     return serverSettings.getSettings.pipe(
2026-10-24T14:31:16.4489841Z         ~~~~~~
2026-10-24T14:31:16.4489843Z
2026-10-24T14:31:16.4490146Z src/workspace/WorkspaceFileSystem.ts:171:15 - suggestion TS377095: `Effect.orElseSucceed` expresses the same recovery more directly than `Effect.catch` followed by `Effect.succeed`. effect(catchToOrElseSucceed)
2026-10-24T14:31:16.4490148Z
2026-10-24T14:31:16.4490230Z 171       }).pipe(Effect.catch(() => Effect.succeed(undefined)));
2026-10-24T14:31:16.4490273Z                   ~~~~~~~~~~~~
2026-10-24T14:31:16.4490275Z
2026-10-24T14:31:16.4490555Z src/workspace/WorkspaceFileSystem.ts:171:34 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T14:31:16.4490559Z
2026-10-24T14:31:16.4490637Z 171       }).pipe(Effect.catch(() => Effect.succeed(undefined)));
2026-10-24T14:31:16.4490698Z                                      ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4490700Z
2026-10-24T14:31:16.4490937Z src/ws.test.ts:401:47 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T14:31:16.4490941Z
2026-10-24T14:31:16.4491040Z 401           resolveFileManagerRevealKind: () => Effect.succeed(undefined),
2026-10-24T14:31:16.4491173Z                                                   ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T14:31:16.4491176Z
2026-10-24T14:31:16.4491458Z src/ws.ts:1385:23 - suggestion TS377118: `Effect.fromOption` expresses this Option-to-Effect conversion more directly than `Option.match` or an Option tag conditional. effect(optionMatchToFromOption)
2026-10-24T14:31:16.4491524Z
2026-10-24T14:31:16.4491584Z 1385         return yield* Option.match(project, {
2026-10-24T14:31:16.4491630Z                            ~~~~~~~~~~~~
2026-10-24T14:31:16.4491632Z
2026-10-24T14:31:16.4491934Z src/ws.ts:2320:24 - suggestion TS377019: This `yield* Effect.fail(...)` passes a yieldable error value. `yield*` represents that value directly without wrapping it in `Effect.fail`. effect(unnecessaryFailYieldableError)
2026-10-24T14:31:16.4491936Z
2026-10-24T14:31:16.4491992Z 2320                 return yield* Effect.fail(
2026-10-24T14:31:16.4492039Z                             ~~~~~
2026-10-24T14:31:16.4492041Z
2026-10-24T14:31:16.4492338Z src/ws.ts:2329:24 - suggestion TS377019: This `yield* Effect.fail(...)` passes a yieldable error value. `yield*` represents that value directly without wrapping it in `Effect.fail`. effect(unnecessaryFailYieldableError)
2026-10-24T14:31:16.4492341Z
2026-10-24T14:31:16.4492395Z 2329                 return yield* Effect.fail(
2026-10-24T14:31:16.4492440Z                             ~~~~~
2026-10-24T14:31:16.4492442Z
2026-10-24T14:31:16.4492734Z src/ws.ts:2337:24 - suggestion TS377019: This `yield* Effect.fail(...)` passes a yieldable error value. `yield*` represents that value directly without wrapping it in `Effect.fail`. effect(unnecessaryFailYieldableError)
2026-10-24T14:31:16.4492736Z
2026-10-24T14:31:16.4492793Z 2337                 return yield* Effect.fail(
2026-10-24T14:31:16.4492838Z                             ~~~~~
2026-10-24T14:31:16.4492840Z
2026-10-24T14:31:16.4492842Z
2026-10-24T14:31:16.4492881Z ---
2026-10-24T14:31:16.4493160Z vp run: 0/33 cache hit (0%), 33/33 successful. @t3tools/oxlint-plugin-t3code#typecheck (and 1 more) not cached because they modified their inputs. (Run `vp run --last-details` for full details)
2026-10-24T14:31:16.4925753Z Post job cleanup.
2026-10-24T14:31:16.5561123Z Cache hit occurred on the primary key electron-Linux-X64-854e11ddd491bd4f350eebb67a74265df119376a3984c8e153cfe5fc8ced6309, not saving cache.
2026-10-24T14:31:16.5632708Z Post job cleanup.
2026-10-24T14:31:16.5645852Z ##[start-action display=Cache full pnpm store;id=__d3c1d31b-17d6-482d-843f-f77a14e4eac3.__actions_cache]
2026-10-24T14:31:16.6413578Z Post job cleanup.
2026-10-24T14:31:16.7062318Z Cache hit occurred on the primary key pnpm-full-v1-Linux-X64-fa50cf9b003d547cd32552f61b874eb4abe5dace3fdb4b1abd9610da2da24074, not saving cache.
2026-10-24T14:31:16.7100444Z ##[end-action id=__d3c1d31b-17d6-482d-843f-f77a14e4eac3.__actions_cache;outcome=success;conclusion=success;duration_ms=145]
2026-10-24T14:31:16.7102031Z ##[start-action display=Cache Vite+;id=__d3c1d31b-17d6-482d-843f-f77a14e4eac3.vp_cache]
2026-10-24T14:31:16.7121922Z Post job cleanup.
2026-10-24T14:31:16.7767602Z Cache hit occurred on the primary key vite-plus-home-v2-Linux-X64-1.3.0-node26.12.1-pnpm@12.14.0, not saving cache.
2026-10-24T14:31:16.7803742Z ##[end-action id=__d3c1d31b-17d6-482d-843f-f77a14e4eac3.vp_cache;outcome=success;conclusion=success;duration_ms=70]
2026-10-24T14:31:16.7838694Z Post job cleanup.
2026-10-24T14:31:16.8297396Z [command]/usr/local/bin/git version
2026-10-24T14:31:16.8327810Z git version 2.55.0
2026-10-24T14:31:16.8345776Z Temporarily overriding HOME='/home/runner/_work/_temp/43955e4c-5a10-4187-8f1f-c3b6269cf2fa' before making global git config changes
2026-10-24T14:31:16.8346148Z Adding repository directory to the temporary git global config as a safe directory
2026-10-24T14:31:16.8348615Z [command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
2026-10-24T14:31:16.8377216Z Removing SSH command configuration
2026-10-24T14:31:16.8380168Z [command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-10-24T14:31:16.8405725Z [command]/usr/local/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :"
2026-10-24T14:31:16.8543668Z fatal: No url found for submodule path '.repos/alchemy-effect/submodules/distilled' in .gitmodules
2026-10-24T14:31:16.8564687Z ##[warning]The process '/usr/local/bin/git' failed with exit code 128
2026-10-24T14:31:16.8611514Z A job completed hook has been configured by the self-hosted runner administrator
2026-10-24T14:31:16.8637975Z ##[group]Run '/job_completed.sh'
2026-10-24T14:31:16.8651308Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
2026-10-24T14:31:16.8651479Z env:
2026-10-24T14:31:16.8651591Z   BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 185
2026-10-24T14:31:16.8651737Z   BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 403
2026-10-24T14:31:16.8651878Z   BLACKSMITH_CHECK_RUN_ID: 120897942615
2026-10-24T14:31:16.8652033Z   BLACKSMITH_JOB_DISPLAY_NAME: Build and Typecheck
2026-10-24T14:31:16.8652191Z   GITHUB_ACTIONS_CACHE_MODE: write
2026-10-24T14:31:16.8652323Z ##[endgroup]
2026-10-24T14:31:16.8735765Z Docker container cache not activated, skipping hash computation.
2026-10-24T14:31:16.9014318Z No active SSH sessions detected. Proceeding with shutdown immediately.
2026-10-24T14:31:16.9055754Z Cleaning up orphan processes