GitHub check

256 KB of 526 KB loaded Download the full log (526 KB)
270 KB of earlier output not loaded
10-24T00:19:00.4320637Z
2026-10-24T00:19:00.4320965Z src/server/GitHubPullRequestApi.ts:2697:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubPullRequestApi.replyToReviewThread")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4321321Z
2026-10-24T00:19:00.4321377Z 2697     replyToReviewThread: (input) =>
2026-10-24T00:19:00.4321508Z          ~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4321579Z
2026-10-24T00:19:00.4321951Z src/server/GitHubPullRequestApi.ts:2702:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubPullRequestApi.getPullRequestFilesViewed")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4322382Z
2026-10-24T00:19:00.4322447Z 2702     getPullRequestFilesViewed: (input) => {
2026-10-24T00:19:00.4322595Z          ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4322677Z
2026-10-24T00:19:00.4323004Z src/server/GitHubPullRequestApi.ts:2730:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubPullRequestApi.getPullRequestFileStats")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4323377Z
2026-10-24T00:19:00.4323474Z 2730     getPullRequestFileStats: (input) => {
2026-10-24T00:19:00.4323615Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4323689Z
2026-10-24T00:19:00.4324025Z src/server/GitHubPullRequestApi.ts:2758:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubPullRequestApi.setPullRequestFilesViewed")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4324402Z
2026-10-24T00:19:00.4324464Z 2758     setPullRequestFilesViewed: (input) => {
2026-10-24T00:19:00.4324608Z          ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4324686Z
2026-10-24T00:19:00.4325022Z src/server/GitHubPullRequestApi.ts:2779:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubPullRequestApi.setReviewThreadResolution")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4325394Z
2026-10-24T00:19:00.4325454Z 2779     setReviewThreadResolution: (input) =>
2026-10-24T00:19:00.4325596Z          ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4325675Z
2026-10-24T00:19:00.4325984Z src/server/GitHubPullRequestApi.ts:2785:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubPullRequestApi.setReaction")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4326331Z
2026-10-24T00:19:00.4326380Z 2785     setReaction: (input) => {
2026-10-24T00:19:00.4326499Z          ~~~~~~~~~~~
2026-10-24T00:19:00.4326564Z
2026-10-24T00:19:00.4326882Z src/server/GitHubPullRequestApi.ts:2818:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubPullRequestApi.updatePullRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4327240Z
2026-10-24T00:19:00.4327292Z 2818     updatePullRequest: (input) =>
2026-10-24T00:19:00.4327426Z          ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4327495Z
2026-10-24T00:19:00.4327812Z src/server/GitHubPullRequestApi.ts:2834:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubPullRequestApi.updateComment")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4328169Z
2026-10-24T00:19:00.4328220Z 2834     updateComment: (input) =>
2026-10-24T00:19:00.4328339Z          ~~~~~~~~~~~~~
2026-10-24T00:19:00.4328412Z
2026-10-24T00:19:00.4328801Z src/server/GitHubSourceControlProvider.ts:894:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.readChangeRequestTemplate")((_) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4329234Z
2026-10-24T00:19:00.4329309Z 894     readChangeRequestTemplate: ({ cwd, treeish }) =>
2026-10-24T00:19:00.4329462Z         ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4329541Z
2026-10-24T00:19:00.4329921Z src/server/GitHubSourceControlProvider.ts:905:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.listChangeRequests")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4330344Z
2026-10-24T00:19:00.4330397Z 905     listChangeRequests: (input) =>
2026-10-24T00:19:00.4330529Z         ~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4330595Z
2026-10-24T00:19:00.4330967Z src/server/GitHubSourceControlProvider.ts:923:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4331434Z
2026-10-24T00:19:00.4331486Z 923     getChangeRequest: (input) =>
2026-10-24T00:19:00.4331612Z         ~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4331680Z
2026-10-24T00:19:00.4332105Z src/server/GitHubSourceControlProvider.ts:1036:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.checkoutChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4332573Z
2026-10-24T00:19:00.4332629Z 1036     checkoutChangeRequest: (input) =>
2026-10-24T00:19:00.4332765Z          ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4332838Z
2026-10-24T00:19:00.4333181Z src/server/gitHubGraphQlClient.ts:118:12 - 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-24T00:19:00.4333554Z
2026-10-24T00:19:00.4333607Z 118     return yield* Effect.fail(error);
2026-10-24T00:19:00.4333735Z                ~~~~~
2026-10-24T00:19:00.4333800Z
2026-10-24T00:19:00.4333802Z
2026-10-24T00:19:00.4333859Z ~/packages/provider-grok$ tsc --noEmit
2026-10-24T00:19:00.4334241Z 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-24T00:19:00.4334574Z
2026-10-24T00:19:00.4334622Z 170     get: (host) =>
2026-10-24T00:19:00.4334730Z         ~~~
2026-10-24T00:19:00.4334788Z
2026-10-24T00:19:00.4335086Z 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-24T00:19:00.4335424Z
2026-10-24T00:19:00.4335519Z 183     invalidate: (host) => Cache.invalidate(cache, normalizeHost(host)),
2026-10-24T00:19:00.4335700Z         ~~~~~~~~~~
2026-10-24T00:19:00.4335763Z
2026-10-24T00:19:00.4336055Z 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-24T00:19:00.4336384Z
2026-10-24T00:19:00.4336433Z 184     cliEnv: (host) =>
2026-10-24T00:19:00.4336541Z         ~~~~~~
2026-10-24T00:19:00.4336600Z
2026-10-24T00:19:00.4336851Z src/server/GitCafePullRequestProvider.ts:341:9 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T00:19:00.4337136Z
2026-10-24T00:19:00.4337185Z 341         Effect.map(Option.some),
2026-10-24T00:19:00.4337314Z             ~~~~~~~~~~
2026-10-24T00:19:00.4337380Z
2026-10-24T00:19:00.4337618Z src/server/GitCafePullRequestProvider.ts:346:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4337901Z
2026-10-24T00:19:00.4337963Z 346               : Effect.succeed(Option.none()),
2026-10-24T00:19:00.4338105Z                     ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4338185Z
2026-10-24T00:19:00.4338428Z src/server/GitCafePullRequestProvider.ts:655:13 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T00:19:00.4338706Z
2026-10-24T00:19:00.4338760Z 655             Effect.map(Option.some),
2026-10-24T00:19:00.4338891Z                 ~~~~~~~~~~
2026-10-24T00:19:00.4338959Z
2026-10-24T00:19:00.4339194Z src/server/GitCafePullRequestProvider.ts:660:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4339470Z
2026-10-24T00:19:00.4339533Z 660                   : Effect.succeed(Option.none()),
2026-10-24T00:19:00.4339728Z                         ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4339809Z
2026-10-24T00:19:00.4340096Z 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-24T00:19:00.4340424Z
2026-10-24T00:19:00.4340503Z 673         const readPage = (rows: number, after: string | null) => {
2026-10-24T00:19:00.4340669Z                   ~~~~~~~~
2026-10-24T00:19:00.4340738Z
2026-10-24T00:19:00.4341114Z 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-24T00:19:00.4341492Z
2026-10-24T00:19:00.4341544Z 790             Effect.catch((error) =>
2026-10-24T00:19:00.4341673Z                 ~~~~~~~~~~~~
2026-10-24T00:19:00.4341758Z
2026-10-24T00:19:00.4342112Z 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-24T00:19:00.4342483Z
2026-10-24T00:19:00.4342536Z 868                   Effect.catch((error) =>
2026-10-24T00:19:00.4342675Z                       ~~~~~~~~~~~~
2026-10-24T00:19:00.4342753Z
2026-10-24T00:19:00.4342755Z
2026-10-24T00:19:00.4342809Z ~/packages/provider-pi$ tsc --noEmit
2026-10-24T00:19:00.4343280Z src/server/ForgejoSourceControlProvider.ts:340:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4343699Z
2026-10-24T00:19:00.4343751Z 340     getChangeRequest: (input) =>
2026-10-24T00:19:00.4343876Z         ~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4343947Z
2026-10-24T00:19:00.4343949Z
2026-10-24T00:19:00.4344002Z ~/packages/provider-muse$ tsc --noEmit
2026-10-24T00:19:00.4344402Z 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-24T00:19:00.4344855Z
2026-10-24T00:19:00.4344950Z 440     getCapabilities: () => Effect.succeed(PiProviderCapabilitiesV2),
2026-10-24T00:19:00.4345124Z         ~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4345193Z
2026-10-24T00:19:00.4345516Z 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-24T00:19:00.4345879Z
2026-10-24T00:19:00.4345999Z 441     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T00:19:00.4346207Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4346282Z
2026-10-24T00:19:00.4346495Z src/server/adapter.ts:1694:31 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T00:19:00.4346745Z
2026-10-24T00:19:00.4346814Z 1694                               Effect.map(Option.some),
2026-10-24T00:19:00.4346972Z                                    ~~~~~~~~~~
2026-10-24T00:19:00.4347062Z
2026-10-24T00:19:00.4347270Z src/server/adapter.ts:1697:29 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4347519Z
2026-10-24T00:19:00.4347589Z 1697                           : Effect.succeed(Option.none()),
2026-10-24T00:19:00.4347751Z                                  ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4347840Z
2026-10-24T00:19:00.4348083Z 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-24T00:19:00.4348430Z
2026-10-24T00:19:00.4348477Z 334       onSuccess: () =>
2026-10-24T00:19:00.4348588Z           ~~~~~~~~~
2026-10-24T00:19:00.4348651Z
2026-10-24T00:19:00.4348852Z src/server/rpc.ts:342:17 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T00:19:00.4349089Z
2026-10-24T00:19:00.4349146Z 342                 Effect.map(Option.some),
2026-10-24T00:19:00.4349284Z                     ~~~~~~~~~~
2026-10-24T00:19:00.4349356Z
2026-10-24T00:19:00.4349358Z
2026-10-24T00:19:00.4349469Z ~/packages/provider-opencode$ tsc --noEmit
2026-10-24T00:19:00.4349885Z 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-24T00:19:00.4350245Z
2026-10-24T00:19:00.4350303Z 174       Effect.flatMap((snapshot) =>
2026-10-24T00:19:00.4350434Z           ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4350500Z
2026-10-24T00:19:00.4350735Z 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-24T00:19:00.4351007Z
2026-10-24T00:19:00.4351074Z 1507       }).pipe(Effect.catch(() => Effect.void));
2026-10-24T00:19:00.4351219Z                    ~~~~~~~~~~~~
2026-10-24T00:19:00.4351295Z
2026-10-24T00:19:00.4351547Z 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-24T00:19:00.4351879Z
2026-10-24T00:19:00.4351944Z 1507       }).pipe(Effect.catch(() => Effect.void));
2026-10-24T00:19:00.4352089Z                    ~~~~~~~~~~~~
2026-10-24T00:19:00.4352162Z
2026-10-24T00:19:00.4352512Z 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-24T00:19:00.4352900Z
2026-10-24T00:19:00.4352958Z 1588             Effect.catchCause((cause) =>
2026-10-24T00:19:00.4353096Z                  ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4353176Z
2026-10-24T00:19:00.4353178Z
2026-10-24T00:19:00.4353234Z ~/packages/provider-cursor$ tsc --noEmit
2026-10-24T00:19:00.4353644Z 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-24T00:19:00.4353998Z
2026-10-24T00:19:00.4354095Z 284     getCapabilities: () => Effect.succeed(MuseProviderCapabilitiesV2),
2026-10-24T00:19:00.4354273Z         ~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4354340Z
2026-10-24T00:19:00.4354669Z 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-24T00:19:00.4355036Z
2026-10-24T00:19:00.4355152Z 285     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T00:19:00.4355358Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4355430Z
2026-10-24T00:19:00.4355692Z 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-24T00:19:00.4355996Z
2026-10-24T00:19:00.4356048Z 388             TimeoutError: (cause) =>
2026-10-24T00:19:00.4356178Z                 ~~~~~~~~~~~~
2026-10-24T00:19:00.4356252Z
2026-10-24T00:19:00.4356463Z src/server/adapter.ts:1366:35 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T00:19:00.4356768Z
2026-10-24T00:19:00.4356891Z 1366                   wake === held ? Effect.map(dispatch, Option.some) : Effect.succeed(Option.none()),
2026-10-24T00:19:00.4357105Z                                        ~~~~~~~~~~
2026-10-24T00:19:00.4357198Z
2026-10-24T00:19:00.4357407Z src/server/adapter.ts:1366:71 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4357657Z
2026-10-24T00:19:00.4357776Z 1366                   wake === held ? Effect.map(dispatch, Option.some) : Effect.succeed(Option.none()),
2026-10-24T00:19:00.4358039Z                                                                            ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4358149Z
2026-10-24T00:19:00.4358151Z
2026-10-24T00:19:00.4358217Z ~/packages/provider-acp-registry$ tsc --noEmit
2026-10-24T00:19:00.4358653Z 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-24T00:19:00.4359026Z
2026-10-24T00:19:00.4359097Z 31       read: (credentialSource, sinceMs, untilMs) =>
2026-10-24T00:19:00.4359243Z          ~~~~
2026-10-24T00:19:00.4359301Z
2026-10-24T00:19:00.4359579Z 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-24T00:19:00.4359899Z
2026-10-24T00:19:00.4359946Z 82     read: (apiKey) =>
2026-10-24T00:19:00.4360056Z        ~~~~
2026-10-24T00:19:00.4360113Z
2026-10-24T00:19:00.4360386Z 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-24T00:19:00.4360696Z
2026-10-24T00:19:00.4360744Z 360     Effect.catch(() =>
2026-10-24T00:19:00.4360859Z         ~~~~~~~~~~~~
2026-10-24T00:19:00.4360924Z
2026-10-24T00:19:00.4361238Z 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-24T00:19:00.4361585Z
2026-10-24T00:19:00.4361687Z 904     getCapabilities: () => Effect.succeed(CursorProviderCapabilitiesV2),
2026-10-24T00:19:00.4361897Z         ~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4361966Z
2026-10-24T00:19:00.4362294Z 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-24T00:19:00.4362657Z
2026-10-24T00:19:00.4362781Z 905     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T00:19:00.4362984Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4363060Z
2026-10-24T00:19:00.4363499Z 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-24T00:19:00.4363971Z
2026-10-24T00:19:00.4364021Z 55       Effect.runPromise(
2026-10-24T00:19:00.4364138Z          ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4364205Z
2026-10-24T00:19:00.4364465Z 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-24T00:19:00.4364758Z
2026-10-24T00:19:00.4364822Z 59               onNone: () => Effect.succeed(undefined),
2026-10-24T00:19:00.4364979Z                                ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4365068Z
2026-10-24T00:19:00.4365552Z 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-24T00:19:00.4366024Z
2026-10-24T00:19:00.4366073Z 69       Effect.runPromise(
2026-10-24T00:19:00.4366189Z          ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4366257Z
2026-10-24T00:19:00.4366729Z 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-24T00:19:00.4367202Z
2026-10-24T00:19:00.4367273Z 82     clear: () => Effect.runPromise(credentials.remove),
2026-10-24T00:19:00.4367432Z                     ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4367518Z
2026-10-24T00:19:00.4367841Z 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-24T00:19:00.4368199Z
2026-10-24T00:19:00.4368258Z 228           Effect.flatMap((snapshot) =>
2026-10-24T00:19:00.4368393Z               ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4368467Z
2026-10-24T00:19:00.4368655Z src/server/usageLimits.test.ts:74:5 - suggestion TS377017: This Effect.gen contains a single return statement. effect(unnecessaryEffectGen)
2026-10-24T00:19:00.4368886Z
2026-10-24T00:19:00.4368939Z  74     Effect.gen(function* () {
2026-10-24T00:19:00.4369065Z         ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4369191Z  75       yield* withNodeServices(
2026-10-24T00:19:00.4369320Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4369434Z ...
2026-10-24T00:19:00.4369530Z 115       );
2026-10-24T00:19:00.4369630Z     ~~~~~~~~
2026-10-24T00:19:00.4369726Z 116     }),
2026-10-24T00:19:00.4369824Z     ~~~~~~
2026-10-24T00:19:00.4369883Z
2026-10-24T00:19:00.4369885Z
2026-10-24T00:19:00.4369938Z ~/packages/client-runtime$ tsc --noEmit
2026-10-24T00:19:00.4370303Z 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-24T00:19:00.4370611Z
2026-10-24T00:19:00.4370665Z 147     return Effect.succeed(undefined);
2026-10-24T00:19:00.4370803Z                ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4370890Z
2026-10-24T00:19:00.4371267Z 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-24T00:19:00.4371683Z
2026-10-24T00:19:00.4371744Z 188       if (!recordable) return Effect.void;
2026-10-24T00:19:00.4371913Z                            ~~~~~~
2026-10-24T00:19:00.4371989Z
2026-10-24T00:19:00.4372363Z 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-24T00:19:00.4372771Z
2026-10-24T00:19:00.4372820Z 208         return Effect.void;
2026-10-24T00:19:00.4372937Z             ~~~~~~
2026-10-24T00:19:00.4372998Z
2026-10-24T00:19:00.4373373Z 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-24T00:19:00.4373781Z
2026-10-24T00:19:00.4373824Z 228       return fs
2026-10-24T00:19:00.4373983Z           ~~~~~~
2026-10-24T00:19:00.4374041Z
2026-10-24T00:19:00.4374336Z 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-24T00:19:00.4374668Z
2026-10-24T00:19:00.4374773Z 311   OpenCodeServerLedger.of({ track: () => Effect.succeed(Effect.void) }),
2026-10-24T00:19:00.4374961Z                                 ~~~~~
2026-10-24T00:19:00.4375044Z
2026-10-24T00:19:00.4375400Z 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-24T00:19:00.4375746Z
2026-10-24T00:19:00.4375793Z 169     withServer: (use) =>
2026-10-24T00:19:00.4375909Z         ~~~~~~~~~~
2026-10-24T00:19:00.4375967Z
2026-10-24T00:19:00.4376347Z 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-24T00:19:00.4376770Z
2026-10-24T00:19:00.4376884Z 103 const OPENCODE_TEST_SETTINGS = Schema.decodeUnknownSync(OpenCodeSettings)({});
2026-10-24T00:19:00.4377089Z                                           ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4377190Z
2026-10-24T00:19:00.4377505Z 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-24T00:19:00.4377853Z
2026-10-24T00:19:00.4377956Z 938     getCapabilities: () => Effect.succeed(OpenCodeProviderCapabilitiesV2),
2026-10-24T00:19:00.4378146Z         ~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4378215Z
2026-10-24T00:19:00.4378537Z 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-24T00:19:00.4378903Z
2026-10-24T00:19:00.4379019Z 939     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T00:19:00.4379222Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4379299Z
2026-10-24T00:19:00.4379585Z 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-24T00:19:00.4379903Z
2026-10-24T00:19:00.4379981Z 1011         const abortController = new AbortController();
2026-10-24T00:19:00.4380146Z                                      ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4380241Z
2026-10-24T00:19:00.4380552Z 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-24T00:19:00.4380899Z
2026-10-24T00:19:00.4380975Z 1088           if (failure) return yield* Effect.fail(failure);
2026-10-24T00:19:00.4381136Z                                    ~~~~~
2026-10-24T00:19:00.4381218Z
2026-10-24T00:19:00.4381491Z 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-24T00:19:00.4381810Z
2026-10-24T00:19:00.4381918Z 1584               Effect.catch(() => Effect.succeed(undefined)),
2026-10-24T00:19:00.4382076Z                    ~~~~~~~~~~~~
2026-10-24T00:19:00.4382150Z
2026-10-24T00:19:00.4382394Z 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-24T00:19:00.4382725Z
2026-10-24T00:19:00.4382800Z 1584               Effect.catch(() => Effect.succeed(undefined)),
2026-10-24T00:19:00.4382969Z                                       ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4383065Z
2026-10-24T00:19:00.4383348Z 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-24T00:19:00.4383672Z
2026-10-24T00:19:00.4383757Z 3194                 admissionAbortController: new AbortController(),
2026-10-24T00:19:00.4383978Z                                                ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4384079Z
2026-10-24T00:19:00.4384356Z 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-24T00:19:00.4384778Z
2026-10-24T00:19:00.4384911Z 3354               turn.admissionAbortController = new AbortController();
2026-10-24T00:19:00.4385144Z                                                    ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4385246Z
2026-10-24T00:19:00.4385525Z 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-24T00:19:00.4385844Z
2026-10-24T00:19:00.4385903Z 158     connect: ({ baseUrl, password }) => {
2026-10-24T00:19:00.4386041Z         ~~~~~~~
2026-10-24T00:19:00.4386102Z
2026-10-24T00:19:00.4386401Z 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-24T00:19:00.4386735Z
2026-10-24T00:19:00.4386785Z 160       withConnection: (use) =>
2026-10-24T00:19:00.4386912Z           ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4386980Z
2026-10-24T00:19:00.4387272Z 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-24T00:19:00.4387601Z
2026-10-24T00:19:00.4387651Z 175     withConnection: (use) =>
2026-10-24T00:19:00.4387770Z         ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4387836Z
2026-10-24T00:19:00.4388050Z src/server/v2/adapter.ts:1544:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4388300Z
2026-10-24T00:19:00.4388421Z 1544           wake.dropped ? Effect.succeed(Option.none()) : Effect.map(dispatch, Option.some),
2026-10-24T00:19:00.4388630Z                               ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4388720Z
2026-10-24T00:19:00.4388931Z src/server/v2/adapter.ts:1544:58 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T00:19:00.4389188Z
2026-10-24T00:19:00.4389305Z 1544           wake.dropped ? Effect.succeed(Option.none()) : Effect.map(dispatch, Option.some),
2026-10-24T00:19:00.4389520Z                                                               ~~~~~~~~~~
2026-10-24T00:19:00.4389622Z
2026-10-24T00:19:00.4389941Z 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-24T00:19:00.4390302Z
2026-10-24T00:19:00.4390410Z 4137     getCapabilities: () => Effect.succeed(OpenCode2ProviderCapabilities),
2026-10-24T00:19:00.4390592Z          ~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4390658Z
2026-10-24T00:19:00.4390993Z 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-24T00:19:00.4391435Z
2026-10-24T00:19:00.4391554Z 4138     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T00:19:00.4391780Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4391882Z
2026-10-24T00:19:00.4391884Z
2026-10-24T00:19:00.4392137Z src/server/AcpRegistryRuntimeCoordinator.ts:154:52 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T00:19:00.4392426Z
2026-10-24T00:19:00.4392607Z 154         return yield* Effect.raceFirst(effect.pipe(Effect.map(Option.some)), foregroundStarted);
2026-10-24T00:19:00.4392832Z                                                        ~~~~~~~~~~
2026-10-24T00:19:00.4392929Z
2026-10-24T00:19:00.4393249Z 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-24T00:19:00.4393614Z
2026-10-24T00:19:00.4393662Z 1301         Effect.catch((error) =>
2026-10-24T00:19:00.4393791Z              ~~~~~~~~~~~~
2026-10-24T00:19:00.4393861Z
2026-10-24T00:19:00.4394141Z 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-24T00:19:00.4394460Z
2026-10-24T00:19:00.4394511Z 146             Option.isSome(result)
2026-10-24T00:19:00.4394636Z                 ~~~~~~~~~~~~~
2026-10-24T00:19:00.4394713Z
2026-10-24T00:19:00.4394960Z 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-24T00:19:00.4395243Z
2026-10-24T00:19:00.4395337Z 640       enrichSnapshot: ({ snapshot, getSnapshot, publishSnapshot }) => {
2026-10-24T00:19:00.4395517Z           ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4395585Z
2026-10-24T00:19:00.4395789Z src/server/driver.ts:650:51 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T00:19:00.4396031Z
2026-10-24T00:19:00.4396129Z 650             : enrichProviderCached(snapshot).pipe(Effect.map(Option.some))
2026-10-24T00:19:00.4396321Z                                                       ~~~~~~~~~~
2026-10-24T00:19:00.4396419Z
2026-10-24T00:19:00.4396421Z
2026-10-24T00:19:00.4396644Z src/authorization/remote.test.ts:232:25 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4396903Z
2026-10-24T00:19:00.4397007Z 232               identity: Effect.succeed(Option.some({ accountId: "user_connect" })),
2026-10-24T00:19:00.4397199Z                             ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4397284Z
2026-10-24T00:19:00.4397502Z src/authorization/remote.test.ts:237:17 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4397759Z
2026-10-24T00:19:00.4397833Z 237             id: Effect.succeed(Option.some("device-1")),
2026-10-24T00:19:00.4397987Z                     ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4398066Z
2026-10-24T00:19:00.4398388Z 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-24T00:19:00.4398746Z
2026-10-24T00:19:00.4398800Z 553     authorizeDpop: (input) =>
2026-10-24T00:19:00.4398924Z         ~~~~~~~~~~~~~
2026-10-24T00:19:00.4398989Z
2026-10-24T00:19:00.4399311Z 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-24T00:19:00.4399794Z
2026-10-24T00:19:00.4399850Z 555     authorizeDpopHttp: (input) =>
2026-10-24T00:19:00.4399976Z         ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4400040Z
2026-10-24T00:19:00.4400354Z src/connection/githubRoutingPermissions.ts:138:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubRoutingPermissions.get")((entry) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4400703Z
2026-10-24T00:19:00.4400751Z 138       get: (entry) =>
2026-10-24T00:19:00.4400857Z           ~~~
2026-10-24T00:19:00.4400916Z
2026-10-24T00:19:00.4401282Z src/connection/githubRoutingPermissions.ts:143:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubRoutingPermissions.set")((entry, permission) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4401646Z
2026-10-24T00:19:00.4401700Z 143       set: (entry, permission) => {
2026-10-24T00:19:00.4401843Z           ~~~
2026-10-24T00:19:00.4401927Z
2026-10-24T00:19:00.4402254Z src/connection/githubRoutingPermissions.ts:159:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubRoutingPermissions.forget")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4402621Z
2026-10-24T00:19:00.4402674Z 159       forget: (environmentId) =>
2026-10-24T00:19:00.4402799Z           ~~~~~~
2026-10-24T00:19:00.4402861Z
2026-10-24T00:19:00.4403171Z 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-24T00:19:00.4403509Z
2026-10-24T00:19:00.4403562Z 298     registerPairing: (input) =>
2026-10-24T00:19:00.4403690Z         ~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4403754Z
2026-10-24T00:19:00.4404049Z 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-24T00:19:00.4404385Z
2026-10-24T00:19:00.4404436Z 304     registerSsh: (input) =>
2026-10-24T00:19:00.4404556Z         ~~~~~~~~~~~
2026-10-24T00:19:00.4404618Z
2026-10-24T00:19:00.4404915Z 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-24T00:19:00.4405249Z
2026-10-24T00:19:00.4405301Z 309     updateBearer: (input) =>
2026-10-24T00:19:00.4405424Z         ~~~~~~~~~~~~
2026-10-24T00:19:00.4405488Z
2026-10-24T00:19:00.4405751Z 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-24T00:19:00.4406051Z
2026-10-24T00:19:00.4406115Z 1392             ? Effect.succeed(undefined)
2026-10-24T00:19:00.4406256Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4406342Z
2026-10-24T00:19:00.4406599Z 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-24T00:19:00.4406896Z
2026-10-24T00:19:00.4406949Z 1476             ? Effect.succeed(undefined)
2026-10-24T00:19:00.4407086Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4407169Z
2026-10-24T00:19:00.4407429Z 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-24T00:19:00.4407727Z
2026-10-24T00:19:00.4407792Z 1489                     : Effect.succeed(undefined),
2026-10-24T00:19:00.4407945Z                            ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4408094Z
2026-10-24T00:19:00.4408341Z src/platform/orchestrationCache.test.ts:104:15 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T00:19:00.4408620Z
2026-10-24T00:19:00.4408675Z 104       }).pipe(Effect.map(Option.some));
2026-10-24T00:19:00.4408816Z                   ~~~~~~~~~~
2026-10-24T00:19:00.4408890Z
2026-10-24T00:19:00.4409292Z 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-24T00:19:00.4409694Z
2026-10-24T00:19:00.4409785Z 72       load: (prepared: PreparedConnection, threadId: ThreadId) => {
2026-10-24T00:19:00.4409950Z          ~~~~
2026-10-24T00:19:00.4410009Z
2026-10-24T00:19:00.4410293Z 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-24T00:19:00.4410619Z
2026-10-24T00:19:00.4410716Z 56             Effect.catch(() => Effect.succeed(Option.none<AuthSessionState>())),
2026-10-24T00:19:00.4410896Z                ~~~~~~~~~~~~
2026-10-24T00:19:00.4410966Z
2026-10-24T00:19:00.4411293Z 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-24T00:19:00.4411662Z
2026-10-24T00:19:00.4411718Z 62             return yield* Effect.fail(
2026-10-24T00:19:00.4411882Z                       ~~~~~
2026-10-24T00:19:00.4411956Z
2026-10-24T00:19:00.4412242Z 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-24T00:19:00.4412570Z
2026-10-24T00:19:00.4412666Z 57     execute: (target: OutdatedServerUpdateTarget, atomRegistry) => {
2026-10-24T00:19:00.4412839Z        ~~~~~~~
2026-10-24T00:19:00.4412897Z
2026-10-24T00:19:00.4413199Z 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-24T00:19:00.4413544Z
2026-10-24T00:19:00.4413599Z 90       load: (prepared, input) =>
2026-10-24T00:19:00.4413722Z          ~~~~
2026-10-24T00:19:00.4413781Z
2026-10-24T00:19:00.4414173Z 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-24T00:19:00.4414599Z
2026-10-24T00:19:00.4414700Z 34       return yield* Schema.decodeUnknownEffect(codec)(stored.value).pipe(
2026-10-24T00:19:00.4414889Z                               ~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4414986Z
2026-10-24T00:19:00.4415211Z src/state/queryPersistence.ts:35:9 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T00:19:00.4415466Z
2026-10-24T00:19:00.4415518Z 35         Effect.map(Option.some),
2026-10-24T00:19:00.4415644Z            ~~~~~~~~~~
2026-10-24T00:19:00.4415708Z
2026-10-24T00:19:00.4415969Z 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-24T00:19:00.4416265Z
2026-10-24T00:19:00.4416322Z 680     execute: (target, atomRegistry) => {
2026-10-24T00:19:00.4416453Z         ~~~~~~~
2026-10-24T00:19:00.4416513Z
2026-10-24T00:19:00.4416838Z 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-24T00:19:00.4417246Z
2026-10-24T00:19:00.4417303Z 1125           Effect.flatMap((summary) =>
2026-10-24T00:19:00.4417442Z                ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4417516Z
2026-10-24T00:19:00.4417736Z src/state/shell-sync.test.ts:90:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4417996Z
2026-10-24T00:19:00.4418113Z 90         loadShell: () => Effect.succeed(Option.none()),
2026-10-24T00:19:00.4418271Z                             ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4418357Z
2026-10-24T00:19:00.4418570Z src/state/shell-sync.test.ts:96:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4418821Z
2026-10-24T00:19:00.4418895Z 96         loadThread: () => Effect.succeed(Option.none()),
2026-10-24T00:19:00.4419057Z                              ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4419141Z
2026-10-24T00:19:00.4419352Z src/state/shell-sync.test.ts:99:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4419600Z
2026-10-24T00:19:00.4419681Z 99         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-24T00:19:00.4419845Z                                    ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4419938Z
2026-10-24T00:19:00.4420156Z src/state/shell-sync.test.ts:101:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4420404Z
2026-10-24T00:19:00.4420480Z 101         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-24T00:19:00.4420643Z                                ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4420729Z
2026-10-24T00:19:00.4420944Z src/state/shell-sync.test.ts:108:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4421199Z
2026-10-24T00:19:00.4421266Z 108         load: () => Effect.succeed(Option.none()),
2026-10-24T00:19:00.4421414Z                         ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4421497Z
2026-10-24T00:19:00.4421707Z src/state/shell-sync.test.ts:229:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4421998Z
2026-10-24T00:19:00.4422068Z 229         loadShell: () => Effect.succeed(Option.none()),
2026-10-24T00:19:00.4422225Z                              ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4422307Z
2026-10-24T00:19:00.4422520Z src/state/shell-sync.test.ts:238:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4422770Z
2026-10-24T00:19:00.4422847Z 238         loadThread: () => Effect.succeed(Option.none()),
2026-10-24T00:19:00.4423003Z                               ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4423089Z
2026-10-24T00:19:00.4423301Z src/state/shell-sync.test.ts:241:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4423557Z
2026-10-24T00:19:00.4423636Z 241         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-24T00:19:00.4423813Z                                     ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4423904Z
2026-10-24T00:19:00.4424117Z src/state/shell-sync.test.ts:243:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4424368Z
2026-10-24T00:19:00.4424443Z 243         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-24T00:19:00.4424668Z                                ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4424795Z
2026-10-24T00:19:00.4425072Z src/state/shell-sync.test.ts:250:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4425332Z
2026-10-24T00:19:00.4425397Z 250         load: () => Effect.succeed(Option.none()),
2026-10-24T00:19:00.4425548Z                         ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4425631Z
2026-10-24T00:19:00.4425846Z src/state/shell-sync.test.ts:349:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4426103Z
2026-10-24T00:19:00.4426223Z 349         loadShell: () => Effect.succeed(Option.none()),
2026-10-24T00:19:00.4426379Z                              ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4426464Z
2026-10-24T00:19:00.4426677Z src/state/shell-sync.test.ts:355:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4426934Z
2026-10-24T00:19:00.4427007Z 355         loadThread: () => Effect.succeed(Option.none()),
2026-10-24T00:19:00.4427166Z                               ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4427251Z
2026-10-24T00:19:00.4427459Z src/state/shell-sync.test.ts:358:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4427711Z
2026-10-24T00:19:00.4427792Z 358         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-24T00:19:00.4427958Z                                     ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4428049Z
2026-10-24T00:19:00.4428264Z src/state/shell-sync.test.ts:360:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4428518Z
2026-10-24T00:19:00.4428588Z 360         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-24T00:19:00.4428748Z                                ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4428836Z
2026-10-24T00:19:00.4429048Z src/state/shell-sync.test.ts:367:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4429298Z
2026-10-24T00:19:00.4429365Z 367         load: () => Effect.succeed(Option.none()),
2026-10-24T00:19:00.4429510Z                         ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4429592Z
2026-10-24T00:19:00.4429804Z src/state/shell-sync.test.ts:446:26 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4430055Z
2026-10-24T00:19:00.4430142Z 446         loadShell: () => Effect.succeed(Option.some(cachedSnapshot)),
2026-10-24T00:19:00.4430192Z                              ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4430195Z
2026-10-24T00:19:00.4430406Z src/state/shell-sync.test.ts:448:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4430410Z
2026-10-24T00:19:00.4430482Z 448         loadThread: () => Effect.succeed(Option.none()),
2026-10-24T00:19:00.4430529Z                               ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4430533Z
2026-10-24T00:19:00.4430744Z src/state/shell-sync.test.ts:451:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4430746Z
2026-10-24T00:19:00.4430826Z 451         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-24T00:19:00.4430878Z                                     ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4430880Z
2026-10-24T00:19:00.4431093Z src/state/shell-sync.test.ts:453:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4431096Z
2026-10-24T00:19:00.4431164Z 453         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-24T00:19:00.4431216Z                                ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4431271Z
2026-10-24T00:19:00.4431483Z src/state/shell-sync.test.ts:460:21 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4431485Z
2026-10-24T00:19:00.4435989Z 460         load: () => Effect.succeed(Option.some(httpSnapshot)),
2026-10-24T00:19:00.4436045Z                         ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4436047Z
2026-10-24T00:19:00.4436411Z 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-24T00:19:00.4436414Z
2026-10-24T00:19:00.4436477Z 98       load: (prepared: PreparedConnection) =>
2026-10-24T00:19:00.4436517Z          ~~~~
2026-10-24T00:19:00.4436519Z
2026-10-24T00:19:00.4436878Z src/state/threadHistoryController.ts:47:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadHistoryController.register")((environmentId, threadId, handler) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4436884Z
2026-10-24T00:19:00.4436950Z 47       register: (environmentId, threadId, handler) =>
2026-10-24T00:19:00.4436989Z          ~~~~~~~~
2026-10-24T00:19:00.4436991Z
2026-10-24T00:19:00.4437318Z src/state/threadHistoryController.ts:59:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadHistoryController.unregister")((registration) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4437320Z
2026-10-24T00:19:00.4437369Z 59       unregister: (registration) =>
2026-10-24T00:19:00.4437411Z          ~~~~~~~~~~
2026-10-24T00:19:00.4437413Z
2026-10-24T00:19:00.4437776Z src/state/threadHistoryController.ts:74:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadHistoryController.loadEarlier")((environmentId, threadId, throughEntryId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4437783Z
2026-10-24T00:19:00.4437862Z 74       loadEarlier: (environmentId, threadId, throughEntryId) =>
2026-10-24T00:19:00.4437903Z          ~~~~~~~~~~~
2026-10-24T00:19:00.4437905Z
2026-10-24T00:19:00.4438132Z src/state/threads-sync.test.ts:1006:29 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4438134Z
2026-10-24T00:19:00.4438214Z 1006             : { loadCached: Effect.succeed(Option.some(saved!)) },
2026-10-24T00:19:00.4438262Z                                  ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4438266Z
2026-10-24T00:19:00.4438527Z 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-24T00:19:00.4438529Z
2026-10-24T00:19:00.4438612Z 447       execute: (input: RunVcsStackedActionInput, registry) => {
2026-10-24T00:19:00.4438651Z           ~~~~~~~
2026-10-24T00:19:00.4438655Z
2026-10-24T00:19:00.4438657Z
2026-10-24T00:19:00.4438706Z ~/apps/mobile$ tsc --noEmit
2026-10-24T00:19:00.4438751Z ~/infra/relay$ tsc --noEmit
2026-10-24T00:19:00.4438795Z ~/apps/web$ tsc --noEmit
2026-10-24T00:19:00.4438836Z Result (22 files):
2026-10-24T00:19:00.4438876Z - 0 errors
2026-10-24T00:19:00.4438914Z - 0 warnings
2026-10-24T00:19:00.4438953Z - 0 hints
2026-10-24T00:19:00.4438955Z
2026-10-24T00:19:00.4438957Z
2026-10-24T00:19:00.4439006Z ~/apps/desktop$ tsc --noEmit
2026-10-24T00:19:00.4439325Z 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-24T00:19:00.4439328Z
2026-10-24T00:19:00.4439370Z 220           send: (body) =>
2026-10-24T00:19:00.4439409Z               ~~~~
2026-10-24T00:19:00.4439411Z
2026-10-24T00:19:00.4439705Z 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-24T00:19:00.4439758Z
2026-10-24T00:19:00.4439804Z 12       onFailure: (error) =>
2026-10-24T00:19:00.4439844Z          ~~~~~~~~~
2026-10-24T00:19:00.4439848Z
2026-10-24T00:19:00.4440160Z 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-24T00:19:00.4440162Z
2026-10-24T00:19:00.4440254Z 64     pauseUntil: (untilMillis) =>
2026-10-24T00:19:00.4440293Z        ~~~~~~~~~~
2026-10-24T00:19:00.4440295Z
2026-10-24T00:19:00.4440524Z 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-24T00:19:00.4440527Z
2026-10-24T00:19:00.4440571Z 198         onNone: () =>
2026-10-24T00:19:00.4440609Z             ~~~~~~
2026-10-24T00:19:00.4440611Z
2026-10-24T00:19:00.4440886Z 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-24T00:19:00.4440889Z
2026-10-24T00:19:00.4440996Z 92   fileResponse: () => Effect.die("Relay API does not serve filesystem responses"),
2026-10-24T00:19:00.4441035Z      ~~~~~~~~~~~~
2026-10-24T00:19:00.4441037Z
2026-10-24T00:19:00.4441312Z 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-24T00:19:00.4441315Z
2026-10-24T00:19:00.4441420Z 93   fileWebResponse: () => Effect.die("Relay API does not serve file responses"),
2026-10-24T00:19:00.4441462Z      ~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4441466Z
2026-10-24T00:19:00.4441716Z 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-24T00:19:00.4441719Z
2026-10-24T00:19:00.4441818Z 242       hold: ({ endpointKey, baseUrl, hook }) =>
2026-10-24T00:19:00.4441856Z           ~~~~
2026-10-24T00:19:00.4441858Z
2026-10-24T00:19:00.4442104Z 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-24T00:19:00.4442106Z
2026-10-24T00:19:00.4442163Z 244       wake: ({ endpointKey, baseUrl }) =>
2026-10-24T00:19:00.4442203Z           ~~~~
2026-10-24T00:19:00.4442205Z
2026-10-24T00:19:00.4442454Z 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-24T00:19:00.4442458Z
2026-10-24T00:19:00.4442507Z 246       clear: ({ endpointKey }) =>
2026-10-24T00:19:00.4442548Z           ~~~~~
2026-10-24T00:19:00.4442551Z
2026-10-24T00:19:00.4442856Z 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-24T00:19:00.4442858Z
2026-10-24T00:19:00.4442906Z 275               send: (body) =>
2026-10-24T00:19:00.4442945Z                   ~~~~
2026-10-24T00:19:00.4442947Z
2026-10-24T00:19:00.4442952Z
2026-10-24T00:19:00.4443252Z 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-24T00:19:00.4443254Z
2026-10-24T00:19:00.4443353Z 389     complete: (response) => Effect.sync(() => broker.complete(response)),
2026-10-24T00:19:00.4443453Z         ~~~~~~~~
2026-10-24T00:19:00.4443455Z
2026-10-24T00:19:00.4443674Z src/app/DesktopClerk.test.ts:300:27 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4443676Z
2026-10-24T00:19:00.4443759Z 300       currentMainOrFirst: Effect.succeed(Option.some(window)),
2026-10-24T00:19:00.4443809Z                               ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4443811Z
2026-10-24T00:19:00.4444122Z src/app/DesktopObservability.ts:459:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("onSome")(function*(logFile) { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4444124Z
2026-10-24T00:19:00.4444175Z 459     onSome: (logFile) =>
2026-10-24T00:19:00.4444217Z         ~~~~~~
2026-10-24T00:19:00.4444219Z
2026-10-24T00:19:00.4444535Z src/app/DesktopObservability.ts:589:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBackendOutputLogFactory.forInstance")((id) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4444540Z
2026-10-24T00:19:00.4444595Z 589       forInstance: (id) => makeForId(id),
2026-10-24T00:19:00.4444638Z           ~~~~~~~~~~~
2026-10-24T00:19:00.4444640Z
2026-10-24T00:19:00.4444858Z src/app/DesktopWebLinks.test.ts:29:31 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4444860Z
2026-10-24T00:19:00.4444944Z 29           currentMainOrFirst: Effect.succeed(Option.some(window)),
2026-10-24T00:19:00.4444995Z                                  ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4444997Z
2026-10-24T00:19:00.4445267Z 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-24T00:19:00.4445269Z
2026-10-24T00:19:00.4445316Z 72     receive: (url) =>
2026-10-24T00:19:00.4445358Z        ~~~~~~~
2026-10-24T00:19:00.4445361Z
2026-10-24T00:19:00.4445647Z 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-24T00:19:00.4445652Z
2026-10-24T00:19:00.4445703Z 77     setRendererReady: (ready) =>
2026-10-24T00:19:00.4445748Z        ~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4445750Z
2026-10-24T00:19:00.4446020Z 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-24T00:19:00.4446022Z
2026-10-24T00:19:00.4446069Z 1062       onSome: (run) =>
2026-10-24T00:19:00.4446107Z            ~~~~~~
2026-10-24T00:19:00.4446109Z
2026-10-24T00:19:00.4446388Z 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-24T00:19:00.4446392Z
2026-10-24T00:19:00.4446437Z 307       get: (id) =>
2026-10-24T00:19:00.4446477Z           ~~~
2026-10-24T00:19:00.4446479Z
2026-10-24T00:19:00.4446757Z 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-24T00:19:00.4446759Z
2026-10-24T00:19:00.4446849Z 342         get: (id) => Effect.succeed(Option.fromNullishOr(byId.get(id))),
2026-10-24T00:19:00.4446891Z             ~~~
2026-10-24T00:19:00.4446893Z
2026-10-24T00:19:00.4447176Z 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-24T00:19:00.4447178Z
2026-10-24T00:19:00.4447346Z 345         register: () => Effect.die("DesktopBackendPool.layerTest does not support register"),
2026-10-24T00:19:00.4447387Z             ~~~~~~~~
2026-10-24T00:19:00.4447389Z
2026-10-24T00:19:00.4447674Z 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-24T00:19:00.4447676Z
2026-10-24T00:19:00.4447806Z 346         unregister: () => Effect.die("DesktopBackendPool.layerTest does not support unregister"),
2026-10-24T00:19:00.4447847Z             ~~~~~~~~~~
2026-10-24T00:19:00.4447888Z
2026-10-24T00:19:00.4448153Z 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-24T00:19:00.4448155Z
2026-10-24T00:19:00.4448198Z 145   exit: (code) =>
2026-10-24T00:19:00.4448237Z       ~~~~
2026-10-24T00:19:00.4448241Z
2026-10-24T00:19:00.4448512Z 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-24T00:19:00.4448514Z
2026-10-24T00:19:00.4448562Z 149   relaunch: (options) =>
2026-10-24T00:19:00.4448603Z       ~~~~~~~~
2026-10-24T00:19:00.4448605Z
2026-10-24T00:19:00.4448877Z 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-24T00:19:00.4448882Z
2026-10-24T00:19:00.4448931Z 153   setPath: (name, path) =>
2026-10-24T00:19:00.4448972Z       ~~~~~~~
2026-10-24T00:19:00.4448974Z
2026-10-24T00:19:00.4449241Z 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-24T00:19:00.4449245Z
2026-10-24T00:19:00.4449291Z 157   setName: (name) =>
2026-10-24T00:19:00.4449329Z       ~~~~~~~
2026-10-24T00:19:00.4449331Z
2026-10-24T00:19:00.4449633Z 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-24T00:19:00.4449635Z
2026-10-24T00:19:00.4449694Z 161   setAboutPanelOptions: (options) =>
2026-10-24T00:19:00.4449740Z       ~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4449742Z
2026-10-24T00:19:00.4450022Z 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-24T00:19:00.4450024Z
2026-10-24T00:19:00.4450074Z 165   setAppUserModelId: (id) =>
2026-10-24T00:19:00.4450118Z       ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4450122Z
2026-10-24T00:19:00.4450446Z 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-24T00:19:00.4450448Z
2026-10-24T00:19:00.4450532Z 170   setAsDefaultProtocolClient: (protocol, path, args) =>
2026-10-24T00:19:00.4450575Z       ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4450577Z
2026-10-24T00:19:00.4450867Z 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-24T00:19:00.4450869Z
2026-10-24T00:19:00.4450923Z 177   setDesktopName: (desktopName) =>
2026-10-24T00:19:00.4450965Z       ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4450967Z
2026-10-24T00:19:00.4451243Z 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-24T00:19:00.4451288Z
2026-10-24T00:19:00.4451335Z 184   setDockIcon: (iconPath) =>
2026-10-24T00:19:00.4451376Z       ~~~~~~~~~~~
2026-10-24T00:19:00.4451378Z
2026-10-24T00:19:00.4451693Z 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-24T00:19:00.4451695Z
2026-10-24T00:19:00.4451815Z 188   appendCommandLineSwitch: (switchName, value) =>
2026-10-24T00:19:00.4451893Z       ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4451895Z
2026-10-24T00:19:00.4452197Z 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-24T00:19:00.4452201Z
2026-10-24T00:19:00.4452260Z 196   onBeforeQuitForUpdate: (listener) =>
2026-10-24T00:19:00.4452305Z       ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4452307Z
2026-10-24T00:19:00.4452608Z 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-24T00:19:00.4452610Z
2026-10-24T00:19:00.4452673Z 206   removeCommandLineSwitch: (switchName) =>
2026-10-24T00:19:00.4452715Z       ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4452717Z
2026-10-24T00:19:00.4453021Z 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-24T00:19:00.4453023Z
2026-10-24T00:19:00.4453078Z 169   showMessageBox: (options, owner) =>
2026-10-24T00:19:00.4453121Z       ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4453125Z
2026-10-24T00:19:00.4453423Z 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-24T00:19:00.4453425Z
2026-10-24T00:19:00.4453476Z 185   showErrorBox: (title, content) =>
2026-10-24T00:19:00.4453518Z       ~~~~~~~~~~~~
2026-10-24T00:19:00.4453520Z
2026-10-24T00:19:00.4453816Z 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-24T00:19:00.4453818Z
2026-10-24T00:19:00.4453876Z 193     setApplicationMenu: (template) =>
2026-10-24T00:19:00.4453918Z         ~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4453920Z
2026-10-24T00:19:00.4454205Z 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-24T00:19:00.4454208Z
2026-10-24T00:19:00.4454261Z 207     popupTemplate: (input) =>
2026-10-24T00:19:00.4454303Z         ~~~~~~~~~~~~~
2026-10-24T00:19:00.4454305Z
2026-10-24T00:19:00.4454589Z 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-24T00:19:00.4454591Z
2026-10-24T00:19:00.4454642Z 225     showContextMenu: (input) =>
2026-10-24T00:19:00.4454687Z         ~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4454689Z
2026-10-24T00:19:00.4455041Z 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-24T00:19:00.4455097Z
2026-10-24T00:19:00.4455167Z 82   getSystemIdleState: (idleThresholdSeconds) =>
2026-10-24T00:19:00.4455209Z      ~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4455211Z
2026-10-24T00:19:00.4455513Z 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-24T00:19:00.4455515Z
2026-10-24T00:19:00.4455563Z 77     encryptString: (value) =>
2026-10-24T00:19:00.4455603Z        ~~~~~~~~~~~~~
2026-10-24T00:19:00.4455605Z
2026-10-24T00:19:00.4455954Z 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-24T00:19:00.4455956Z
2026-10-24T00:19:00.4456005Z 82     decryptString: (value) =>
2026-10-24T00:19:00.4456043Z        ~~~~~~~~~~~~~
2026-10-24T00:19:00.4456045Z
2026-10-24T00:19:00.4456326Z 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-24T00:19:00.4456329Z
2026-10-24T00:19:00.4456383Z 68   openExternal: (rawUrl) =>
2026-10-24T00:19:00.4456425Z      ~~~~~~~~~~~~
2026-10-24T00:19:00.4456427Z
2026-10-24T00:19:00.4456714Z 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-24T00:19:00.4456720Z
2026-10-24T00:19:00.4456771Z 79   openSystemSettings: (pane) =>
2026-10-24T00:19:00.4456813Z      ~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4456815Z
2026-10-24T00:19:00.4457085Z 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-24T00:19:00.4457088Z
2026-10-24T00:19:00.4457135Z 86   copyText: (text) =>
2026-10-24T00:19:00.4457173Z      ~~~~~~~~
2026-10-24T00:19:00.4457175Z
2026-10-24T00:19:00.4457445Z 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-24T00:19:00.4457447Z
2026-10-24T00:19:00.4457495Z 34   setSource: (theme) =>
2026-10-24T00:19:00.4457535Z      ~~~~~~~~~
2026-10-24T00:19:00.4457537Z
2026-10-24T00:19:00.4457818Z 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-24T00:19:00.4457821Z
2026-10-24T00:19:00.4457866Z 41   onUpdated: (listener) =>
2026-10-24T00:19:00.4457906Z      ~~~~~~~~~
2026-10-24T00:19:00.4457908Z
2026-10-24T00:19:00.4458197Z 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-24T00:19:00.4458199Z
2026-10-24T00:19:00.4458245Z 85   setFeedURL: (options) =>
2026-10-24T00:19:00.4458282Z      ~~~~~~~~~~
2026-10-24T00:19:00.4458286Z
2026-10-24T00:19:00.4458577Z 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-24T00:19:00.4458580Z
2026-10-24T00:19:00.4458629Z 90   setAutoDownload: (value) =>
2026-10-24T00:19:00.4458667Z      ~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4458670Z
2026-10-24T00:19:00.4458976Z 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-24T00:19:00.4459027Z
2026-10-24T00:19:00.4459083Z 95   setAutoInstallOnAppQuit: (value) =>
2026-10-24T00:19:00.4459129Z      ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4459131Z
2026-10-24T00:19:00.4459420Z 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-24T00:19:00.4459422Z
2026-10-24T00:19:00.4459470Z 100   setChannel: (channel) =>
2026-10-24T00:19:00.4459510Z       ~~~~~~~~~~
2026-10-24T00:19:00.4459512Z
2026-10-24T00:19:00.4459845Z 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-24T00:19:00.4459847Z
2026-10-24T00:19:00.4459900Z 105   setAllowPrerelease: (value) =>
2026-10-24T00:19:00.4459943Z       ~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4459947Z
2026-10-24T00:19:00.4460247Z 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-24T00:19:00.4460249Z
2026-10-24T00:19:00.4460300Z 111   setAllowDowngrade: (value) =>
2026-10-24T00:19:00.4460339Z       ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4460341Z
2026-10-24T00:19:00.4460637Z 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-24T00:19:00.4460639Z
2026-10-24T00:19:00.4460688Z 116   setFullChangelog: (value) =>
2026-10-24T00:19:00.4460730Z       ~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4460732Z
2026-10-24T00:19:00.4461055Z 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-24T00:19:00.4461061Z
2026-10-24T00:19:00.4461127Z 121   setDisableDifferentialDownload: (value) =>
2026-10-24T00:19:00.4461173Z       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4461175Z
2026-10-24T00:19:00.4461459Z 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-24T00:19:00.4461461Z
2026-10-24T00:19:00.4461535Z 140   quitAndInstall: ({ isSilent, isForceRunAfter }) =>
2026-10-24T00:19:00.4461575Z       ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4461577Z
2026-10-24T00:19:00.4461902Z 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-24T00:19:00.4461906Z
2026-10-24T00:19:00.4461956Z 154   on: (eventName, listener) => {
2026-10-24T00:19:00.4461997Z       ~~
2026-10-24T00:19:00.4461999Z
2026-10-24T00:19:00.4462282Z 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-24T00:19:00.4462284Z
2026-10-24T00:19:00.4462330Z 211     create: (options) => {
2026-10-24T00:19:00.4462371Z         ~~~~~~
2026-10-24T00:19:00.4462373Z
2026-10-24T00:19:00.4462651Z 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-24T00:19:00.4462653Z
2026-10-24T00:19:00.4462746Z 243     setMain: (window) => Ref.set(mainWindowRef, Option.some(window)),
2026-10-24T00:19:00.4462785Z         ~~~~~~~
2026-10-24T00:19:00.4462788Z
2026-10-24T00:19:00.4463110Z 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-24T00:19:00.4463113Z
2026-10-24T00:19:00.4463160Z 244     clearMain: (window) =>
2026-10-24T00:19:00.4463202Z         ~~~~~~~~~
2026-10-24T00:19:00.4463204Z
2026-10-24T00:19:00.4463492Z 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-24T00:19:00.4463531Z
2026-10-24T00:19:00.4463583Z 254     prepareReveal: (window) =>
2026-10-24T00:19:00.4463623Z         ~~~~~~~~~~~~~
2026-10-24T00:19:00.4463625Z
2026-10-24T00:19:00.4463898Z 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-24T00:19:00.4463902Z
2026-10-24T00:19:00.4463947Z 264     reveal: (window) =>
2026-10-24T00:19:00.4463985Z         ~~~~~~
2026-10-24T00:19:00.4463987Z
2026-10-24T00:19:00.4464321Z 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-24T00:19:00.4464325Z
2026-10-24T00:19:00.4464392Z 526     setMainWindowBounds: (bounds, isMaximized) =>
2026-10-24T00:19:00.4464438Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4464442Z
2026-10-24T00:19:00.4464891Z 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-24T00:19:00.4464894Z
2026-10-24T00:19:00.4464951Z 538     setServerExposureMode: (mode) =>
2026-10-24T00:19:00.4464995Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4464997Z
2026-10-24T00:19:00.4465311Z 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-24T00:19:00.4465314Z
2026-10-24T00:19:00.4465369Z 542     setTailscaleServe: (input) =>
2026-10-24T00:19:00.4465413Z         ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4465415Z
2026-10-24T00:19:00.4465726Z 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-24T00:19:00.4465728Z
2026-10-24T00:19:00.4465778Z 546     setUpdateChannel: (channel) =>
2026-10-24T00:19:00.4465822Z         ~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4465824Z
2026-10-24T00:19:00.4466145Z 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-24T00:19:00.4466149Z
2026-10-24T00:19:00.4466207Z 550     setWslBackendEnabled: (enabled) =>
2026-10-24T00:19:00.4466253Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4466256Z
2026-10-24T00:19:00.4466555Z 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-24T00:19:00.4466557Z
2026-10-24T00:19:00.4466606Z 554     setWslDistro: (distro) =>
2026-10-24T00:19:00.4466648Z         ~~~~~~~~~~~~
2026-10-24T00:19:00.4466650Z
2026-10-24T00:19:00.4466946Z 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-24T00:19:00.4467014Z
2026-10-24T00:19:00.4467061Z 560     setWslOnly: (enabled) =>
2026-10-24T00:19:00.4467100Z         ~~~~~~~~~~
2026-10-24T00:19:00.4467102Z
2026-10-24T00:19:00.4467435Z 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-24T00:19:00.4467437Z
2026-10-24T00:19:00.4467500Z 564     setLocalEnvironmentEnabled: (enabled) =>
2026-10-24T00:19:00.4467590Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4467592Z
2026-10-24T00:19:00.4467924Z 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-24T00:19:00.4467927Z
2026-10-24T00:19:00.4467997Z 599         setMainWindowBounds: (bounds, isMaximized) =>
2026-10-24T00:19:00.4468041Z             ~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4468043Z
2026-10-24T00:19:00.4468368Z 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-24T00:19:00.4468370Z
2026-10-24T00:19:00.4468428Z 601         setServerExposureMode: (mode) =>
2026-10-24T00:19:00.4468471Z             ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4468473Z
2026-10-24T00:19:00.4468790Z 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-24T00:19:00.4468792Z
2026-10-24T00:19:00.4468919Z 603         setTailscaleServe: (input) => update((settings) => setTailscaleServe(settings, input)),
2026-10-24T00:19:00.4468963Z             ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4468965Z
2026-10-24T00:19:00.4469278Z 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-24T00:19:00.4469280Z
2026-10-24T00:19:00.4469403Z 604         setUpdateChannel: (channel) => update((settings) => setUpdateChannel(settings, channel)),
2026-10-24T00:19:00.4469446Z             ~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4469448Z
2026-10-24T00:19:00.4469771Z 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-24T00:19:00.4469773Z
2026-10-24T00:19:00.4469831Z 605         setWslBackendEnabled: (enabled) =>
2026-10-24T00:19:00.4469873Z             ~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4469876Z
2026-10-24T00:19:00.4470180Z 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-24T00:19:00.4470184Z
2026-10-24T00:19:00.4470293Z 607         setWslDistro: (distro) => update((settings) => setWslDistro(settings, distro)),
2026-10-24T00:19:00.4470336Z             ~~~~~~~~~~~~
2026-10-24T00:19:00.4470339Z
2026-10-24T00:19:00.4470643Z 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-24T00:19:00.4470646Z
2026-10-24T00:19:00.4470753Z 608         setWslOnly: (enabled) => update((settings) => setWslOnly(settings, enabled)),
2026-10-24T00:19:00.4470792Z             ~~~~~~~~~~
2026-10-24T00:19:00.4470794Z
2026-10-24T00:19:00.4471174Z 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-24T00:19:00.4471176Z
2026-10-24T00:19:00.4471242Z 609         setLocalEnvironmentEnabled: (enabled) =>
2026-10-24T00:19:00.4471290Z             ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4471292Z
2026-10-24T00:19:00.4471638Z 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-24T00:19:00.4471641Z
2026-10-24T00:19:00.4471686Z 197     set: (settings) =>
2026-10-24T00:19:00.4471727Z         ~~~
2026-10-24T00:19:00.4471729Z
2026-10-24T00:19:00.4472076Z 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-24T00:19:00.4472082Z
2026-10-24T00:19:00.4472171Z 231         set: (settings) => Ref.set(settingsRef, Option.some(settings)),
2026-10-24T00:19:00.4472210Z             ~~~
2026-10-24T00:19:00.4472213Z
2026-10-24T00:19:00.4472535Z 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-24T00:19:00.4472537Z
2026-10-24T00:19:00.4472610Z 1729     setAnimationDestination: (id, destination) =>
2026-10-24T00:19:00.4472654Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4472656Z
2026-10-24T00:19:00.4472951Z 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-24T00:19:00.4472955Z
2026-10-24T00:19:00.4473004Z 1740     dismissAnimation: (id) =>
2026-10-24T00:19:00.4473045Z          ~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4473047Z
2026-10-24T00:19:00.4473330Z 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-24T00:19:00.4473333Z
2026-10-24T00:19:00.4473378Z 1745     acknowledge: (id) =>
2026-10-24T00:19:00.4473419Z          ~~~~~~~~~~~
2026-10-24T00:19:00.4473421Z
2026-10-24T00:19:00.4473731Z 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-24T00:19:00.4473734Z
2026-10-24T00:19:00.4473781Z 136     discoverHosts: (input) =>
2026-10-24T00:19:00.4473821Z         ~~~~~~~~~~~~~
2026-10-24T00:19:00.4473825Z
2026-10-24T00:19:00.4474122Z 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-24T00:19:00.4474125Z
2026-10-24T00:19:00.4474172Z 141     resolveHost: (alias) =>
2026-10-24T00:19:00.4474211Z         ~~~~~~~~~~~
2026-10-24T00:19:00.4474218Z
2026-10-24T00:19:00.4474554Z 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-24T00:19:00.4474556Z
2026-10-24T00:19:00.4474625Z 146     ensureEnvironment: (target, ensureOptions) =>
2026-10-24T00:19:00.4474667Z         ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4474669Z
2026-10-24T00:19:00.4474988Z 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-24T00:19:00.4475032Z
2026-10-24T00:19:00.4475088Z 154     disconnectEnvironment: (target) =>
2026-10-24T00:19:00.4475129Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4475131Z
2026-10-24T00:19:00.4475440Z 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-24T00:19:00.4475442Z
2026-10-24T00:19:00.4475605Z 1171     installPrepared: (expectedVersion) => installWithExpectedVersion(expectedVersion),
2026-10-24T00:19:00.4475647Z          ~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4475649Z
2026-10-24T00:19:00.4475935Z 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-24T00:19:00.4475941Z
2026-10-24T00:19:00.4475989Z 1101       preWarm: () => Effect.void,
2026-10-24T00:19:00.4476029Z            ~~~~~~~
2026-10-24T00:19:00.4476031Z
2026-10-24T00:19:00.4476367Z 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-24T00:19:00.4476369Z
2026-10-24T00:19:00.4476435Z 1102       windowsToWslPath: (distro, windowsPath) =>
2026-10-24T00:19:00.4476477Z            ~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4476480Z
2026-10-24T00:19:00.4476782Z 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-24T00:19:00.4476784Z
2026-10-24T00:19:00.4476918Z 1104       getUserHome: (distro) => Effect.succeed(stub.getUserHome?.(distro) ?? Option.none<string>()),
2026-10-24T00:19:00.4476962Z            ~~~~~~~~~~~
2026-10-24T00:19:00.4476964Z
2026-10-24T00:19:00.4477270Z 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-24T00:19:00.4477272Z
2026-10-24T00:19:00.4477399Z 1105       getDistroIp: (distro) => Effect.succeed(stub.getDistroIp?.(distro) ?? Option.none<string>()),
2026-10-24T00:19:00.4477440Z            ~~~~~~~~~~~
2026-10-24T00:19:00.4477443Z
2026-10-24T00:19:00.4477768Z 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-24T00:19:00.4477771Z
2026-10-24T00:19:00.4477832Z 1106       prepareRuntime: (distro, archive) =>
2026-10-24T00:19:00.4477875Z            ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4477877Z
2026-10-24T00:19:00.4478199Z 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-24T00:19:00.4478203Z
2026-10-24T00:19:00.4478330Z 1113       pruneRuntimes: (distro, runtimeId) => stub.pruneRuntimes?.(distro, runtimeId) ?? Effect.void,
2026-10-24T00:19:00.4478372Z            ~~~~~~~~~~~~~
2026-10-24T00:19:00.4478374Z
2026-10-24T00:19:00.4478706Z 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-24T00:19:00.4478708Z
2026-10-24T00:19:00.4478774Z 1114       invalidateRuntime: (distro, runtimeId) =>
2026-10-24T00:19:00.4478859Z            ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4478861Z
2026-10-24T00:19:00.4479190Z 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-24T00:19:00.4479193Z
2026-10-24T00:19:00.4479254Z 1116       probeRuntime: (distro, linuxAppRoot) =>
2026-10-24T00:19:00.4479295Z            ~~~~~~~~~~~~
2026-10-24T00:19:00.4479297Z
2026-10-24T00:19:00.4479748Z 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-24T00:19:00.4479751Z
2026-10-24T00:19:00.4479824Z 1120       ensureNodePty: (distro, linuxAppRoot, options) =>
2026-10-24T00:19:00.4479865Z            ~~~~~~~~~~~~~
2026-10-24T00:19:00.4479867Z
2026-10-24T00:19:00.4480167Z 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-24T00:19:00.4480169Z
2026-10-24T00:19:00.4480216Z 1187       preWarm: (distro) =>
2026-10-24T00:19:00.4480256Z            ~~~~~~~
2026-10-24T00:19:00.4480258Z
2026-10-24T00:19:00.4480579Z 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-24T00:19:00.4480581Z
2026-10-24T00:19:00.4480639Z 1192       prepareRuntime: (distro, archive) =>
2026-10-24T00:19:00.4480681Z            ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4480683Z
2026-10-24T00:19:00.4481008Z 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-24T00:19:00.4481012Z
2026-10-24T00:19:00.4481070Z 1196       pruneRuntimes: (distro, runtimeId) =>
2026-10-24T00:19:00.4481109Z            ~~~~~~~~~~~~~
2026-10-24T00:19:00.4481111Z
2026-10-24T00:19:00.4481448Z 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-24T00:19:00.4481450Z
2026-10-24T00:19:00.4481515Z 1200       invalidateRuntime: (distro, runtimeId) =>
2026-10-24T00:19:00.4481558Z            ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4481560Z
2026-10-24T00:19:00.4481916Z 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-24T00:19:00.4481920Z
2026-10-24T00:19:00.4481979Z 1204       probeRuntime: (distro, linuxAppRoot) =>
2026-10-24T00:19:00.4482021Z            ~~~~~~~~~~~~
2026-10-24T00:19:00.4482023Z
2026-10-24T00:19:00.4482373Z 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-24T00:19:00.4482375Z
2026-10-24T00:19:00.4482451Z 1208       ensureNodePty: (distro, linuxAppRoot, options) =>
2026-10-24T00:19:00.4482490Z            ~~~~~~~~~~~~~
2026-10-24T00:19:00.4482498Z
2026-10-24T00:19:00.4482499Z
2026-10-24T00:19:00.4482501Z
2026-10-24T00:19:00.4482831Z src/connection/platform.ts:805:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentOwnedDataCleanup.clear")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4482879Z
2026-10-24T00:19:00.4482930Z 805     clear: (environmentId) =>
2026-10-24T00:19:00.4482970Z         ~~~~~
2026-10-24T00:19:00.4482972Z
2026-10-24T00:19:00.4483262Z src/connection/platform.ts:815:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("EnvironmentRpcRequestObserver.observe")((_) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4483265Z
2026-10-24T00:19:00.4483347Z 815     observe: ({ environmentId, environmentLabel, method }) =>
2026-10-24T00:19:00.4483386Z         ~~~~~~~
2026-10-24T00:19:00.4483388Z
2026-10-24T00:19:00.4483701Z src/connection/storage.ts:549:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubRoutingPermissions.get")((entry) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4483704Z
2026-10-24T00:19:00.4483748Z 549     get: (entry) =>
2026-10-24T00:19:00.4483787Z         ~~~
2026-10-24T00:19:00.4483789Z
2026-10-24T00:19:00.4484082Z src/connection/storage.ts:576:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubRoutingPermissions.set")((entry, permission) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4484086Z
2026-10-24T00:19:00.4484135Z 576     set: (entry, permission) => {
2026-10-24T00:19:00.4484174Z         ~~~
2026-10-24T00:19:00.4484177Z
2026-10-24T00:19:00.4484471Z src/connection/storage.ts:596:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubRoutingPermissions.forget")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4484475Z
2026-10-24T00:19:00.4484552Z 596     forget: (environmentId) => write(environmentId, null),
2026-10-24T00:19:00.4484589Z         ~~~~~~
2026-10-24T00:19:00.4484591Z
2026-10-24T00:19:00.4484925Z src/connection/storage.ts:643:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.ConnectionRegistrationStore.register")((registration, routes) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4484928Z
2026-10-24T00:19:00.4484988Z 643       register: (registration, routes) =>
2026-10-24T00:19:00.4485029Z           ~~~~~~~~
2026-10-24T00:19:00.4485031Z
2026-10-24T00:19:00.4485374Z src/connection/storage.ts:647:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.ConnectionRegistrationStore.setRoutes")((environmentId, routes) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4485376Z
2026-10-24T00:19:00.4485433Z 647       setRoutes: (environmentId, routes) =>
2026-10-24T00:19:00.4485475Z           ~~~~~~~~~
2026-10-24T00:19:00.4485477Z
2026-10-24T00:19:00.4485803Z src/connection/storage.ts:651:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.ConnectionRegistrationStore.remove")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4485806Z
2026-10-24T00:19:00.4485858Z 651       remove: (environmentId) =>
2026-10-24T00:19:00.4485899Z           ~~~~~~
2026-10-24T00:19:00.4485902Z
2026-10-24T00:19:00.4486244Z src/connection/storage.ts:655:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.ConnectionRegistrationStore.setEnabled")((environmentId, enabled) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4486246Z
2026-10-24T00:19:00.4486307Z 655       setEnabled: (environmentId, enabled) =>
2026-10-24T00:19:00.4486347Z           ~~~~~~~~~~
2026-10-24T00:19:00.4486349Z
2026-10-24T00:19:00.4486667Z src/connection/storage.ts:732:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.loadShell")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4486669Z
2026-10-24T00:19:00.4486721Z 732       loadShell: (environmentId) =>
2026-10-24T00:19:00.4486761Z           ~~~~~~~~~
2026-10-24T00:19:00.4486807Z
2026-10-24T00:19:00.4487143Z src/connection/storage.ts:768:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.loadServerConfig")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4487145Z
2026-10-24T00:19:00.4487204Z 768       loadServerConfig: (environmentId) =>
2026-10-24T00:19:00.4487249Z           ~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4487251Z
2026-10-24T00:19:00.4487629Z src/connection/storage.ts:802:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.loadThread")((environmentId, threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4487632Z
2026-10-24T00:19:00.4487690Z 802       loadThread: (environmentId, threadId) =>
2026-10-24T00:19:00.4487732Z           ~~~~~~~~~~
2026-10-24T00:19:00.4487734Z
2026-10-24T00:19:00.4488063Z src/connection/storage.ts:851:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.loadVcsRefs")((environmentId, cwd) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4488067Z
2026-10-24T00:19:00.4488125Z 851       loadVcsRefs: (environmentId, cwd) =>
2026-10-24T00:19:00.4488163Z           ~~~~~~~~~~~
2026-10-24T00:19:00.4488167Z
2026-10-24T00:19:00.4488507Z src/connection/storage.ts:893:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.removeVcsRefs")((environmentId, cwd) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4488509Z
2026-10-24T00:19:00.4488568Z 893       removeVcsRefs: (environmentId, cwd) =>
2026-10-24T00:19:00.4488610Z           ~~~~~~~~~~~~~
2026-10-24T00:19:00.4488612Z
2026-10-24T00:19:00.4488937Z src/connection/storage.ts:899:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.clearVcsRefs")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4488940Z
2026-10-24T00:19:00.4488996Z 899       clearVcsRefs: (environmentId) =>
2026-10-24T00:19:00.4489039Z           ~~~~~~~~~~~~
2026-10-24T00:19:00.4489041Z
2026-10-24T00:19:00.4489384Z src/connection/storage.ts:905:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.removeThread")((environmentId, threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4489386Z
2026-10-24T00:19:00.4489452Z 905       removeThread: (environmentId, threadId) =>
2026-10-24T00:19:00.4489493Z           ~~~~~~~~~~~~
2026-10-24T00:19:00.4489495Z
2026-10-24T00:19:00.4489804Z src/connection/storage.ts:911:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.clear")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4489810Z
2026-10-24T00:19:00.4489858Z 911       clear: (environmentId) =>
2026-10-24T00:19:00.4489898Z           ~~~~~
2026-10-24T00:19:00.4489900Z
2026-10-24T00:19:00.4489902Z
2026-10-24T00:19:00.4489951Z ~/apps/server$ tsc --noEmit
2026-10-24T00:19:00.4490196Z 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-24T00:19:00.4490198Z
2026-10-24T00:19:00.4490252Z 941         yield* Effect.sleep("1200 millis")
2026-10-24T00:19:00.4490300Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4490343Z 942           .pipe(
2026-10-24T00:19:00.4490385Z     ~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4490422Z ...
2026-10-24T00:19:00.4490461Z 954           )
2026-10-24T00:19:00.4490499Z     ~~~~~~~~~~~
2026-10-24T00:19:00.4490552Z 955           .pipe(Effect.forkDetach);
2026-10-24T00:19:00.4490596Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4490641Z
2026-10-24T00:19:00.4490936Z 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-24T00:19:00.4490938Z
2026-10-24T00:19:00.4490985Z 1175     logger: (event) => {
2026-10-24T00:19:00.4491026Z          ~~~~~~
2026-10-24T00:19:00.4491029Z
2026-10-24T00:19:00.4491478Z 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-24T00:19:00.4491483Z
2026-10-24T00:19:00.4491586Z 376 const DEFAULT_GROK_SETTINGS = Schema.decodeUnknownSync(GrokSettings)({});
2026-10-24T00:19:00.4491643Z                                          ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4491645Z
2026-10-24T00:19:00.4491972Z 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-24T00:19:00.4491976Z
2026-10-24T00:19:00.4492025Z 1346     getDescriptor: () =>
2026-10-24T00:19:00.4492066Z          ~~~~~~~~~~~~~
2026-10-24T00:19:00.4492068Z
2026-10-24T00:19:00.4492370Z 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-24T00:19:00.4492372Z
2026-10-24T00:19:00.4492421Z 55     getDescriptor: () =>
2026-10-24T00:19:00.4492463Z        ~~~~~~~~~~~~~
2026-10-24T00:19:00.4492465Z
2026-10-24T00:19:00.4492785Z 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-24T00:19:00.4492789Z
2026-10-24T00:19:00.4492838Z 540       authenticate: (request) =>
2026-10-24T00:19:00.4492878Z           ~~~~~~~~~~~~
2026-10-24T00:19:00.4492880Z
2026-10-24T00:19:00.4493124Z 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-24T00:19:00.4493126Z
2026-10-24T00:19:00.4493179Z 468         : Effect.succeed(undefined),
2026-10-24T00:19:00.4493224Z               ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4493226Z
2026-10-24T00:19:00.4493500Z 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-24T00:19:00.4493504Z
2026-10-24T00:19:00.4493558Z 328       HttpClientError: (cause) =>
2026-10-24T00:19:00.4493600Z           ~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4493602Z
2026-10-24T00:19:00.4493836Z src/cloud/CloudLink.lifecycle.test.ts:166:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4493838Z
2026-10-24T00:19:00.4493901Z 166             latest: Effect.succeed(Option.none()),
2026-10-24T00:19:00.4493947Z                         ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4493949Z
2026-10-24T00:19:00.4494161Z src/cloud/CloudLink.test.ts:99:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4494164Z
2026-10-24T00:19:00.4494225Z 99         latest: Effect.succeed(Option.none()),
2026-10-24T00:19:00.4494270Z                    ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4494272Z
2026-10-24T00:19:00.4494605Z 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-24T00:19:00.4494654Z
2026-10-24T00:19:00.4494778Z 791     requestRecovery: (config) => Queue.offer(recoveryRequests, config).pipe(Effect.asVoid),
2026-10-24T00:19:00.4494821Z         ~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4494823Z
2026-10-24T00:19:00.4495024Z src/cloud/http.test.ts:81:67 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4495026Z
2026-10-24T00:19:00.4495171Z 81     Layer.mock(ConnectReachability.ConnectReachability)({ latest: Effect.succeed(Option.none()) }),
2026-10-24T00:19:00.4495278Z                                                                      ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4495280Z
2026-10-24T00:19:00.4495615Z 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-24T00:19:00.4495619Z
2026-10-24T00:19:00.4495702Z 371     commitDesktopUpdate: (requestId, onHandoffAccepted) =>
2026-10-24T00:19:00.4495746Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4495748Z
2026-10-24T00:19:00.4496027Z 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-24T00:19:00.4496029Z
2026-10-24T00:19:00.4496075Z 808       updateTool: (tool) =>
2026-10-24T00:19:00.4496117Z           ~~~~~~~~~~
2026-10-24T00:19:00.4496119Z
2026-10-24T00:19:00.4496387Z 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-24T00:19:00.4496389Z
2026-10-24T00:19:00.4496435Z 823       easAccount: () =>
2026-10-24T00:19:00.4496477Z           ~~~~~~~~~~
2026-10-24T00:19:00.4496479Z
2026-10-24T00:19:00.4496782Z 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-24T00:19:00.4496784Z
2026-10-24T00:19:00.4496837Z 868     ensureAgentReady: (onPhase) =>
2026-10-24T00:19:00.4496879Z         ~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4496881Z
2026-10-24T00:19:00.4497096Z src/device/easProjectId.ts:201:7 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T00:19:00.4497098Z
2026-10-24T00:19:00.4497148Z 201       Effect.map(Option.some),
2026-10-24T00:19:00.4497188Z           ~~~~~~~~~~
2026-10-24T00:19:00.4497190Z
2026-10-24T00:19:00.4497471Z 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-24T00:19:00.4497474Z
2026-10-24T00:19:00.4497552Z 141   return DirectEndpoints.of({ resolve: () => resolve });
2026-10-24T00:19:00.4497600Z                                   ~~~~~~~
2026-10-24T00:19:00.4497602Z
2026-10-24T00:19:00.4497899Z 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-24T00:19:00.4497903Z
2026-10-24T00:19:00.4498000Z 83   return RemoteOpenTargets.of({ resolveTargets: () => resolveTargets });
2026-10-24T00:19:00.4498051Z                                    ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4498054Z
2026-10-24T00:19:00.4498346Z 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-24T00:19:00.4498349Z
2026-10-24T00:19:00.4498440Z 302     isRepository: (cwd) =>
2026-10-24T00:19:00.4498480Z         ~~~~~~~~~~~~
2026-10-24T00:19:00.4498482Z
2026-10-24T00:19:00.4498770Z 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-24T00:19:00.4498772Z
2026-10-24T00:19:00.4498819Z 315     hasCommit: (input) =>
2026-10-24T00:19:00.4498860Z         ~~~~~~~~~
2026-10-24T00:19:00.4498862Z
2026-10-24T00:19:00.4499188Z 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-24T00:19:00.4499191Z
2026-10-24T00:19:00.4499237Z 327     hasRefNamed: (input) =>
2026-10-24T00:19:00.4499278Z         ~~~~~~~~~~~
2026-10-24T00:19:00.4499280Z
2026-10-24T00:19:00.4499558Z 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-24T00:19:00.4499562Z
2026-10-24T00:19:00.4499608Z 346     status: (input) =>
2026-10-24T00:19:00.4499646Z         ~~~~~~
2026-10-24T00:19:00.4499648Z
2026-10-24T00:19:00.4499936Z 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-24T00:19:00.4499938Z
2026-10-24T00:19:00.4499985Z 352     localStatus: (input) =>
2026-10-24T00:19:00.4500026Z         ~~~~~~~~~~~
2026-10-24T00:19:00.4500028Z
2026-10-24T00:19:00.4500332Z 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-24T00:19:00.4500334Z
2026-10-24T00:19:00.4500388Z 360     remoteStatus: (input, options) =>
2026-10-24T00:19:00.4500428Z         ~~~~~~~~~~~~
2026-10-24T00:19:00.4500430Z
2026-10-24T00:19:00.4500726Z 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-24T00:19:00.4500728Z
2026-10-24T00:19:00.4500778Z 369     pullCurrentBranch: (cwd) =>
2026-10-24T00:19:00.4500822Z         ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4500824Z
2026-10-24T00:19:00.4501134Z 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-24T00:19:00.4501136Z
2026-10-24T00:19:00.4501193Z 373     runStackedAction: (input, options) =>
2026-10-24T00:19:00.4501235Z         ~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4501239Z
2026-10-24T00:19:00.4501557Z 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-24T00:19:00.4501559Z
2026-10-24T00:19:00.4501619Z 388     preparePullRequestThread: (input) =>
2026-10-24T00:19:00.4501662Z         ~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4501664Z
2026-10-24T00:19:00.4501980Z 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-24T00:19:00.4501982Z
2026-10-24T00:19:00.4502029Z 399     listRefs: (input) =>
2026-10-24T00:19:00.4502074Z         ~~~~~~~~
2026-10-24T00:19:00.4502077Z
2026-10-24T00:19:00.4502380Z 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-24T00:19:00.4502436Z
2026-10-24T00:19:00.4502490Z 405     createWorktree: (input, options) =>
2026-10-24T00:19:00.4502532Z         ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4502535Z
2026-10-24T00:19:00.4502839Z 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-24T00:19:00.4502842Z
2026-10-24T00:19:00.4502893Z 409     listLocalBranchNames: (cwd) =>
2026-10-24T00:19:00.4502974Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4502977Z
2026-10-24T00:19:00.4503268Z 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-24T00:19:00.4503270Z
2026-10-24T00:19:00.4503318Z 413     fetchRemote: (input) =>
2026-10-24T00:19:00.4503359Z         ~~~~~~~~~~~
2026-10-24T00:19:00.4503361Z
2026-10-24T00:19:00.4503647Z 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-24T00:19:00.4503650Z
2026-10-24T00:19:00.4503695Z 417     remoteExists: (input) =>
2026-10-24T00:19:00.4503736Z         ~~~~~~~~~~~~
2026-10-24T00:19:00.4503738Z
2026-10-24T00:19:00.4504040Z 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-24T00:19:00.4504042Z
2026-10-24T00:19:00.4504095Z 421     remoteBranchExists: (input) =>
2026-10-24T00:19:00.4504139Z         ~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4504141Z
2026-10-24T00:19:00.4504456Z 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-24T00:19:00.4504460Z
2026-10-24T00:19:00.4504524Z 425     resolveRemoteTrackingCommit: (input) =>
2026-10-24T00:19:00.4504576Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4504578Z
2026-10-24T00:19:00.4504990Z 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-24T00:19:00.4504993Z
2026-10-24T00:19:00.4505053Z 429     resolveWorktreeBaseRemote: (input) =>
2026-10-24T00:19:00.4505095Z         ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4505097Z
2026-10-24T00:19:00.4505408Z 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-24T00:19:00.4505411Z
2026-10-24T00:19:00.4505469Z 433     fetchWorktreeBaseCommit: (input) =>
2026-10-24T00:19:00.4505513Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4505515Z
2026-10-24T00:19:00.4505808Z 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-24T00:19:00.4505810Z
2026-10-24T00:19:00.4505859Z 437     removeWorktree: (input) =>
2026-10-24T00:19:00.4505903Z         ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4505905Z
2026-10-24T00:19:00.4506200Z 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-24T00:19:00.4506202Z
2026-10-24T00:19:00.4506313Z 441     pruneWorktrees: (input) =>
2026-10-24T00:19:00.4506352Z         ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4506354Z
2026-10-24T00:19:00.4506656Z 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-24T00:19:00.4506658Z
2026-10-24T00:19:00.4506710Z 445     deleteLocalBranch: (input) =>
2026-10-24T00:19:00.4506753Z         ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4506755Z
2026-10-24T00:19:00.4507084Z 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-24T00:19:00.4507087Z
2026-10-24T00:19:00.4507132Z 449     createRef: (input) =>
2026-10-24T00:19:00.4507172Z         ~~~~~~~~~
2026-10-24T00:19:00.4507174Z
2026-10-24T00:19:00.4507457Z 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-24T00:19:00.4507461Z
2026-10-24T00:19:00.4507508Z 457     switchRef: (input) =>
2026-10-24T00:19:00.4507548Z         ~~~~~~~~~
2026-10-24T00:19:00.4507551Z
2026-10-24T00:19:00.4507840Z 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-24T00:19:00.4507842Z
2026-10-24T00:19:00.4507892Z 463     renameBranch: (input) =>
2026-10-24T00:19:00.4507933Z         ~~~~~~~~~~~~
2026-10-24T00:19:00.4507935Z
2026-10-24T00:19:00.4508188Z 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-24T00:19:00.4508192Z
2026-10-24T00:19:00.4508244Z 281   const receive = (raw: string) => {
2026-10-24T00:19:00.4508282Z             ~~~~~~~
2026-10-24T00:19:00.4508285Z
2026-10-24T00:19:00.4508643Z 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-24T00:19:00.4508645Z
2026-10-24T00:19:00.4508685Z 284       try {
2026-10-24T00:19:00.4508726Z           ~~~~~
2026-10-24T00:19:00.4508775Z 285         parsed = JSON.parse(line);
2026-10-24T00:19:00.4508823Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4508864Z ...
2026-10-24T00:19:00.4508959Z 287         return yield* respondWithError(null, "Parse error", -32700);
2026-10-24T00:19:00.4509024Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4509065Z 288       }
2026-10-24T00:19:00.4509104Z     ~~~~~~~
2026-10-24T00:19:00.4509108Z
2026-10-24T00:19:00.4509371Z 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-24T00:19:00.4509374Z
2026-10-24T00:19:00.4509430Z 324       Effect.catchCause(() => Effect.void),
2026-10-24T00:19:00.4509474Z           ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4509476Z
2026-10-24T00:19:00.4509703Z src/mcp/McpDeviceToolkit.test.ts:105:18 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4509707Z
2026-10-24T00:19:00.4509772Z 105   getById: () => Effect.succeed(Option.none()),
2026-10-24T00:19:00.4509816Z                      ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4509819Z
2026-10-24T00:19:00.4510093Z 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-24T00:19:00.4510139Z
2026-10-24T00:19:00.4510231Z 421 const previewSnapshotFailure = <E>(cause: Cause.Cause<E>) => {
2026-10-24T00:19:00.4510277Z           ~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4510279Z
2026-10-24T00:19:00.4510560Z src/mcp/McpHttpServer.ts:933:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("McpServer.McpServer.addTool")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4510562Z
2026-10-24T00:19:00.4510608Z 933       addTool: (options) =>
2026-10-24T00:19:00.4510648Z           ~~~~~~~
2026-10-24T00:19:00.4510692Z
2026-10-24T00:19:00.4510961Z 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-24T00:19:00.4510964Z
2026-10-24T00:19:00.4511025Z 22     resolve: () => Effect.succeed(undefined),
2026-10-24T00:19:00.4511077Z                       ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4511079Z
2026-10-24T00:19:00.4511354Z 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-24T00:19:00.4511357Z
2026-10-24T00:19:00.4511414Z 112       Effect.flatMap(() => writingCaller),
2026-10-24T00:19:00.4511457Z           ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4511459Z
2026-10-24T00:19:00.4511992Z src/mcp/OrchestratorMcpService.ts:2460: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-24T00:19:00.4511996Z
2026-10-24T00:19:00.4512069Z 2460       const cancelOrphan = Effect.gen(function* () {
2026-10-24T00:19:00.4512123Z                                            ~~~~~~~~~
2026-10-24T00:19:00.4512126Z
2026-10-24T00:19:00.4512354Z   src/mcp/OrchestratorMcpService.ts:2475:17 - This repeated `Effect.mapError(...)` site participates in the hoistable generator-wide mapping. effect(redundantMapError)
2026-10-24T00:19:00.4512436Z     2475           .pipe(Effect.mapError(threadManagementFailure));
2026-10-24T00:19:00.4512484Z                          ~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4512486Z
2026-10-24T00:19:00.4512712Z   src/mcp/OrchestratorMcpService.ts:2478:17 - This repeated `Effect.mapError(...)` site participates in the hoistable generator-wide mapping. effect(redundantMapError)
2026-10-24T00:19:00.4512787Z     2478           .pipe(Effect.mapError(threadManagementFailure));
2026-10-24T00:19:00.4512832Z                          ~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4512835Z
2026-10-24T00:19:00.4513100Z 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-24T00:19:00.4513105Z
2026-10-24T00:19:00.4513150Z 651         onNone: () =>
2026-10-24T00:19:00.4513189Z             ~~~~~~
2026-10-24T00:19:00.4513191Z
2026-10-24T00:19:00.4513389Z src/mcp/WorktreeMcpService.test.ts:355:3 - suggestion TS377017: This Effect.gen contains a single return statement. effect(unnecessaryEffectGen)
2026-10-24T00:19:00.4513392Z
2026-10-24T00:19:00.4513440Z 355   Effect.gen(function* () {
2026-10-24T00:19:00.4513483Z       ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4513565Z 356     return yield* WorktreeMcpService.WorktreeMcpService;
2026-10-24T00:19:00.4513628Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4513689Z 357   }).pipe(Effect.provide(harness.layer));
2026-10-24T00:19:00.4513729Z     ~~~~
2026-10-24T00:19:00.4513732Z
2026-10-24T00:19:00.4513994Z src/mcp/toolkits/pullRequests/handlers.ts:222:27 - suggestion TS377015: This expression contains chained `pipe` calls that can be simplified to a single `pipe` call. effect(unnecessaryPipeChain)
2026-10-24T00:19:00.4514040Z
2026-10-24T00:19:00.4514089Z 222     const thread = yield* engine
2026-10-24T00:19:00.4514134Z                               ~~~~~~
2026-10-24T00:19:00.4514183Z 223       .getThreadShell(threadId)
2026-10-24T00:19:00.4514227Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4514289Z 224       .pipe(Effect.map(Option.fromNullishOr))
2026-10-24T00:19:00.4514341Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4514464Z 225       .pipe(Effect.mapError((cause) => new Failure({ cause })));
2026-10-24T00:19:00.4514531Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4514534Z
2026-10-24T00:19:00.4514811Z 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-24T00:19:00.4514815Z
2026-10-24T00:19:00.4514935Z 96   McpAppModelContext.of({ set: () => Effect.void, forThread: () => Effect.succeed([]) }),
2026-10-24T00:19:00.4514979Z                              ~~~
2026-10-24T00:19:00.4514982Z
2026-10-24T00:19:00.4515270Z 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-24T00:19:00.4515273Z
2026-10-24T00:19:00.4515387Z 96   McpAppModelContext.of({ set: () => Effect.void, forThread: () => Effect.succeed([]) }),
2026-10-24T00:19:00.4515447Z                                                      ~~~~~~~~~
2026-10-24T00:19:00.4515449Z
2026-10-24T00:19:00.4515764Z 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-24T00:19:00.4515768Z
2026-10-24T00:19:00.4515815Z 16     record: (records) =>
2026-10-24T00:19:00.4515855Z        ~~~~~~
2026-10-24T00:19:00.4515857Z
2026-10-24T00:19:00.4516128Z 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-24T00:19:00.4516130Z
2026-10-24T00:19:00.4516231Z 41   defaultValue: () => ({ latestNoticeableStall: Effect.succeed(undefined) }),
2026-10-24T00:19:00.4516295Z                                                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4516299Z
2026-10-24T00:19:00.4516744Z 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-24T00:19:00.4516748Z
2026-10-24T00:19:00.4516848Z 30 const REPLAY_SETTINGS = Schema.decodeUnknownSync(AcpRegistrySettings)({
2026-10-24T00:19:00.4516901Z                                   ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4516903Z
2026-10-24T00:19:00.4517207Z 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-24T00:19:00.4517209Z
2026-10-24T00:19:00.4517269Z 48   defaultModel: Effect.succeed(undefined),
2026-10-24T00:19:00.4517317Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4517320Z
2026-10-24T00:19:00.4517623Z 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-24T00:19:00.4517625Z
2026-10-24T00:19:00.4517690Z 169         defaultModel: Effect.succeed(undefined),
2026-10-24T00:19:00.4517786Z                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4517788Z
2026-10-24T00:19:00.4518088Z 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-24T00:19:00.4518090Z
2026-10-24T00:19:00.4518157Z 306         defaultModel: Effect.succeed(undefined),
2026-10-24T00:19:00.4518208Z                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4518210Z
2026-10-24T00:19:00.4518549Z 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-24T00:19:00.4518551Z
2026-10-24T00:19:00.4518610Z 542         defaultModel: Effect.succeed(undefined),
2026-10-24T00:19:00.4518661Z                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4518665Z
2026-10-24T00:19:00.4519002Z 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-24T00:19:00.4519005Z
2026-10-24T00:19:00.4519065Z 974       const controller = new AbortController();
2026-10-24T00:19:00.4519113Z                              ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4519118Z
2026-10-24T00:19:00.4519403Z 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-24T00:19:00.4519405Z
2026-10-24T00:19:00.4519473Z 1326         const requestEvent = yield* runtime.events
2026-10-24T00:19:00.4519526Z                                          ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4519571Z 1327           .pipe(
2026-10-24T00:19:00.4519612Z      ~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4519653Z  ...
2026-10-24T00:19:00.4519694Z 1330           )
2026-10-24T00:19:00.4519733Z      ~~~~~~~~~~~
2026-10-24T00:19:00.4519785Z 1331           .pipe(Effect.forkScoped);
2026-10-24T00:19:00.4519831Z      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4519833Z
2026-10-24T00:19:00.4520171Z 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-24T00:19:00.4520173Z
2026-10-24T00:19:00.4520239Z 1332         const controller = new AbortController();
2026-10-24T00:19:00.4520289Z                                 ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4520292Z
2026-10-24T00:19:00.4520631Z 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-24T00:19:00.4520635Z
2026-10-24T00:19:00.4520713Z 1355         const cancelledController = new AbortController();
2026-10-24T00:19:00.4520771Z                                          ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4520773Z
2026-10-24T00:19:00.4521130Z 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-24T00:19:00.4521132Z
2026-10-24T00:19:00.4521235Z 4018     getCapabilities: () => Effect.succeed(ClaudeProviderCapabilitiesV2),
2026-10-24T00:19:00.4521278Z          ~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4521280Z
2026-10-24T00:19:00.4521655Z 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-24T00:19:00.4521697Z
2026-10-24T00:19:00.4521845Z 4019     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T00:19:00.4521890Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4521892Z
2026-10-24T00:19:00.4522236Z 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-24T00:19:00.4522241Z
2026-10-24T00:19:00.4522337Z 201         signal: new AbortController().signal,
2026-10-24T00:19:00.4522386Z                     ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4522388Z
2026-10-24T00:19:00.4522776Z 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-24T00:19:00.4522780Z
2026-10-24T00:19:00.4522833Z 74   const pause = Effect.raceFirst(
2026-10-24T00:19:00.4522875Z                    ~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4522877Z
2026-10-24T00:19:00.4523170Z 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-24T00:19:00.4523172Z
2026-10-24T00:19:00.4523280Z 1741     threadId === null ? Effect.succeed(undefined) : mcpSessions.read(threadId);
2026-10-24T00:19:00.4523335Z                              ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4523338Z
2026-10-24T00:19:00.4523690Z 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-24T00:19:00.4523694Z
2026-10-24T00:19:00.4523791Z 1748     getCapabilities: () => Effect.succeed(CodexProviderCapabilitiesV2),
2026-10-24T00:19:00.4523834Z          ~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4523836Z
2026-10-24T00:19:00.4524212Z 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-24T00:19:00.4524214Z
2026-10-24T00:19:00.4524334Z 1749     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T00:19:00.4524378Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4524380Z
2026-10-24T00:19:00.4524687Z 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-24T00:19:00.4524693Z
2026-10-24T00:19:00.4524762Z 3045                   Effect.catch(() => Effect.succeed(null)),
2026-10-24T00:19:00.4524809Z                        ~~~~~~~~~~~~
2026-10-24T00:19:00.4524812Z
2026-10-24T00:19:00.4525175Z 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-24T00:19:00.4525177Z
2026-10-24T00:19:00.4525237Z 3046                   Effect.flatMap((response) =>
2026-10-24T00:19:00.4525284Z                        ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4525286Z
2026-10-24T00:19:00.4525567Z 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-24T00:19:00.4525569Z
2026-10-24T00:19:00.4525630Z 3068                   Effect.catch(() => Effect.void),
2026-10-24T00:19:00.4525718Z                        ~~~~~~~~~~~~
2026-10-24T00:19:00.4525720Z
2026-10-24T00:19:00.4526069Z 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-24T00:19:00.4526071Z
2026-10-24T00:19:00.4526149Z 7268                   return yield* Effect.fail(failedTermination.error);
2026-10-24T00:19:00.4526193Z                               ~~~~~
2026-10-24T00:19:00.4526233Z
2026-10-24T00:19:00.4526659Z 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-24T00:19:00.4526661Z
2026-10-24T00:19:00.4526763Z 33 const DEFAULT_GROK_SETTINGS = Schema.decodeUnknownSync(GrokSettings)({});
2026-10-24T00:19:00.4526821Z                                         ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4526823Z
2026-10-24T00:19:00.4527240Z 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-24T00:19:00.4527242Z
2026-10-24T00:19:00.4527364Z 414 const DEFAULT_MUSE_SETTINGS = Schema.decodeUnknownSync(MuseSettings)({ enabled: true });
2026-10-24T00:19:00.4527425Z                                          ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4527427Z
2026-10-24T00:19:00.4527764Z 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-24T00:19:00.4527768Z
2026-10-24T00:19:00.4527817Z 242       execute: (input) =>
2026-10-24T00:19:00.4527857Z           ~~~~~~~
2026-10-24T00:19:00.4527859Z
2026-10-24T00:19:00.4528113Z src/orchestration-v2/CheckpointRestoreSafety.test.ts:104:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4528115Z
2026-10-24T00:19:00.4528222Z 104             get: () => Effect.succeed(Option.some({ workspaceRoot: parent } as never)),
2026-10-24T00:19:00.4528270Z                            ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4528273Z
2026-10-24T00:19:00.4528612Z 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-24T00:19:00.4528615Z
2026-10-24T00:19:00.4528667Z 41             Effect.catch((error) =>
2026-10-24T00:19:00.4528709Z                ~~~~~~~~~~~~
2026-10-24T00:19:00.4528711Z
2026-10-24T00:19:00.4529048Z 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-24T00:19:00.4529050Z
2026-10-24T00:19:00.4529103Z 83                 Effect.catch((error) =>
2026-10-24T00:19:00.4529146Z                    ~~~~~~~~~~~~
2026-10-24T00:19:00.4529149Z
2026-10-24T00:19:00.4529404Z src/orchestration-v2/CheckpointRollbackService.test.ts:233:22 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4529409Z
2026-10-24T00:19:00.4529504Z 233               return Effect.succeed(Option.some({ workspaceRoot } as never));
2026-10-24T00:19:00.4529552Z                          ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4529595Z
2026-10-24T00:19:00.4529949Z 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-24T00:19:00.4529951Z
2026-10-24T00:19:00.4530014Z 142         const batchAbort = new AbortController();
2026-10-24T00:19:00.4530064Z                                ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4530068Z
2026-10-24T00:19:00.4530471Z 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-24T00:19:00.4530473Z
2026-10-24T00:19:00.4530525Z 168     Effect.flatMap((frame) =>
2026-10-24T00:19:00.4530567Z         ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4530569Z
2026-10-24T00:19:00.4530811Z src/orchestration-v2/CommandReceiptStore.ts:164:29 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4530815Z
2026-10-24T00:19:00.4530884Z 164               onNone: () => Effect.succeed(Option.none()),
2026-10-24T00:19:00.4530934Z                                 ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4530936Z
2026-10-24T00:19:00.4531172Z src/orchestration-v2/CommandReceiptStore.ts:167:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4531174Z
2026-10-24T00:19:00.4531235Z 167                   ? Effect.succeed(Option.none())
2026-10-24T00:19:00.4531281Z                         ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4531283Z
2026-10-24T00:19:00.4531524Z src/orchestration-v2/CommandReceiptStore.ts:168:58 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T00:19:00.4531528Z
2026-10-24T00:19:00.4531629Z 168                   : fromApplicationReceipt(receipt).pipe(Effect.map(Option.some)),
2026-10-24T00:19:00.4531693Z                                                              ~~~~~~~~~~
2026-10-24T00:19:00.4531695Z
2026-10-24T00:19:00.4531975Z src/orchestration-v2/CommandReceiptStore.ts:183:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4531977Z
2026-10-24T00:19:00.4532035Z 183               ? Effect.succeed(Option.none())
2026-10-24T00:19:00.4532079Z                     ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4532083Z
2026-10-24T00:19:00.4532326Z src/orchestration-v2/CommandReceiptStore.ts:192:25 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T00:19:00.4532328Z
2026-10-24T00:19:00.4532388Z 192                 }).pipe(Effect.map(Option.some)),
2026-10-24T00:19:00.4532434Z                             ~~~~~~~~~~
2026-10-24T00:19:00.4532438Z
2026-10-24T00:19:00.4532663Z src/orchestration-v2/EffectOutbox.ts:429:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4532665Z
2026-10-24T00:19:00.4532720Z 429               ? Effect.succeed(Option.none())
2026-10-24T00:19:00.4532765Z                     ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4532767Z
2026-10-24T00:19:00.4532996Z src/orchestration-v2/EffectOutbox.ts:430:39 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T00:19:00.4532999Z
2026-10-24T00:19:00.4533076Z 430               : rowToEffect(row).pipe(Effect.map(Option.some));
2026-10-24T00:19:00.4533127Z                                           ~~~~~~~~~~
2026-10-24T00:19:00.4533129Z
2026-10-24T00:19:00.4533360Z src/orchestration-v2/EffectWorker.test.ts:107:20 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4533406Z
2026-10-24T00:19:00.4533468Z 107         get: () => Effect.succeed(Option.none()),
2026-10-24T00:19:00.4533515Z                        ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4533517Z
2026-10-24T00:19:00.4533748Z src/orchestration-v2/EffectWorker.test.ts:302:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4533750Z
2026-10-24T00:19:00.4533832Z 302       claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T00:19:00.4533926Z                            ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4533929Z
2026-10-24T00:19:00.4534156Z src/orchestration-v2/EffectWorker.test.ts:369:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4534158Z
2026-10-24T00:19:00.4534241Z 369       claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T00:19:00.4534290Z                            ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4534292Z
2026-10-24T00:19:00.4534517Z src/orchestration-v2/EffectWorker.test.ts:436:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4534519Z
2026-10-24T00:19:00.4534601Z 436       claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T00:19:00.4534648Z                            ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4534651Z
2026-10-24T00:19:00.4534882Z src/orchestration-v2/EffectWorker.test.ts:437:18 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4534884Z
2026-10-24T00:19:00.4534959Z 437       get: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T00:19:00.4535003Z                      ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4535005Z
2026-10-24T00:19:00.4535334Z 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-24T00:19:00.4535337Z
2026-10-24T00:19:00.4535390Z 98       execute: (effect, options) => {
2026-10-24T00:19:00.4535432Z          ~~~~~~~
2026-10-24T00:19:00.4535435Z
2026-10-24T00:19:00.4535749Z 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-24T00:19:00.4535755Z
2026-10-24T00:19:00.4535807Z 180                 Effect.catch((cause) =>
2026-10-24T00:19:00.4535852Z                     ~~~~~~~~~~~~
2026-10-24T00:19:00.4535855Z
2026-10-24T00:19:00.4536132Z 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-24T00:19:00.4536135Z
2026-10-24T00:19:00.4536186Z 110         append: (input) =>
2026-10-24T00:19:00.4536226Z             ~~~~~~
2026-10-24T00:19:00.4536228Z
2026-10-24T00:19:00.4536527Z 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-24T00:19:00.4536530Z
2026-10-24T00:19:00.4536585Z 120         appendProjectEvent: (event) =>
2026-10-24T00:19:00.4536629Z             ~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4536632Z
2026-10-24T00:19:00.4536926Z 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-24T00:19:00.4536929Z
2026-10-24T00:19:00.4536978Z 131         latestSequence: (input) =>
2026-10-24T00:19:00.4537067Z             ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4537069Z
2026-10-24T00:19:00.4537330Z src/orchestration-v2/FoundationPersistence.test.ts:1791:26 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4537332Z
2026-10-24T00:19:00.4537418Z 1791         claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T00:19:00.4537467Z                               ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4537470Z
2026-10-24T00:19:00.4537759Z src/orchestration-v2/FoundationPersistence.test.ts:1793:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4537762Z
2026-10-24T00:19:00.4537809Z 1793           Effect.succeed(
2026-10-24T00:19:00.4537854Z                ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4537857Z
2026-10-24T00:19:00.4538105Z src/orchestration-v2/FoundationPersistence.test.ts:2663:30 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4538109Z
2026-10-24T00:19:00.4538187Z 2663             nextClaimableAt: Effect.succeed(Option.none()),
2026-10-24T00:19:00.4538236Z                                   ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4538238Z
2026-10-24T00:19:00.4538485Z src/orchestration-v2/FoundationPersistence.test.ts:2880:30 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4538487Z
2026-10-24T00:19:00.4538563Z 2880             nextClaimableAt: Effect.succeed(Option.none()),
2026-10-24T00:19:00.4538613Z                                   ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4538616Z
2026-10-24T00:19:00.4538966Z src/orchestration-v2/Orchestrator.ts:11756:7 - suggestion TS377120: `Effect.filterOrFail` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-24T00:19:00.4538972Z
2026-10-24T00:19:00.4539023Z 11756       Effect.flatMap((planned) =>
2026-10-24T00:19:00.4539067Z             ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4539069Z
2026-10-24T00:19:00.4539396Z src/orchestration-v2/Orchestrator.ts:12179:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.restartContinuationPending")((run) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4539398Z
2026-10-24T00:19:00.4539460Z 12179     restartContinuationPending: (run) =>
2026-10-24T00:19:00.4539503Z           ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4539507Z
2026-10-24T00:19:00.4539833Z src/orchestration-v2/Orchestrator.ts:12181:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.awaitRestartContinuation")((run) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4539835Z
2026-10-24T00:19:00.4539894Z 12181     awaitRestartContinuation: (run) =>
2026-10-24T00:19:00.4539941Z           ~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4539943Z
2026-10-24T00:19:00.4540257Z src/orchestration-v2/Orchestrator.ts:12184:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.autoArmLimitRecovery")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4540260Z
2026-10-24T00:19:00.4540314Z 12184     autoArmLimitRecovery: (input) =>
2026-10-24T00:19:00.4540357Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4540359Z
2026-10-24T00:19:00.4540657Z src/orchestration-v2/Orchestrator.ts:12212:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.searchThread")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4540659Z
2026-10-24T00:19:00.4540710Z 12212     searchThread: (input) =>
2026-10-24T00:19:00.4540754Z           ~~~~~~~~~~~~
2026-10-24T00:19:00.4540756Z
2026-10-24T00:19:00.4541178Z src/orchestration-v2/Orchestrator.ts:12220: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-24T00:19:00.4541180Z
2026-10-24T00:19:00.4541297Z 12220     getThreadHistoryPage: (threadId, cursor, throughEntryId, conversationOnly) =>
2026-10-24T00:19:00.4541339Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4541342Z
2026-10-24T00:19:00.4541770Z src/orchestration-v2/Orchestrator.ts:12224:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getTimelinePage")((threadId, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4541773Z
2026-10-24T00:19:00.4541835Z 12224     getTimelinePage: (threadId, options) =>
2026-10-24T00:19:00.4541912Z           ~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4541914Z
2026-10-24T00:19:00.4542222Z src/orchestration-v2/Orchestrator.ts:12228:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getMessageCount")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4542225Z
2026-10-24T00:19:00.4542278Z 12228     getMessageCount: (threadId) =>
2026-10-24T00:19:00.4542321Z           ~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4542323Z
2026-10-24T00:19:00.4542621Z src/orchestration-v2/Orchestrator.ts:12232:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getTurnItem")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4542624Z
2026-10-24T00:19:00.4542672Z 12232     getTurnItem: (input) =>
2026-10-24T00:19:00.4542715Z           ~~~~~~~~~~~
2026-10-24T00:19:00.4542717Z
2026-10-24T00:19:00.4543050Z src/orchestration-v2/Orchestrator.ts:12240:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadRecords")((threadId, fields, filter) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4543054Z
2026-10-24T00:19:00.4543127Z 12240     getThreadRecords: (threadId, fields, filter) =>
2026-10-24T00:19:00.4543169Z           ~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4543174Z
2026-10-24T00:19:00.4543488Z src/orchestration-v2/Orchestrator.ts:12244:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadProjection")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4543490Z
2026-10-24T00:19:00.4543549Z 12244     getThreadProjection: (threadId) =>
2026-10-24T00:19:00.4543596Z           ~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4543598Z
2026-10-24T00:19:00.4543916Z src/orchestration-v2/Orchestrator.ts:12248:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getCheckpointContext")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4543920Z
2026-10-24T00:19:00.4543979Z 12248     getCheckpointContext: (threadId) =>
2026-10-24T00:19:00.4544020Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4544022Z
2026-10-24T00:19:00.4544331Z src/orchestration-v2/Orchestrator.ts:12252:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadSnapshot")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4544334Z
2026-10-24T00:19:00.4544389Z 12252     getThreadSnapshot: (threadId) =>
2026-10-24T00:19:00.4544434Z           ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4544436Z
2026-10-24T00:19:00.4544877Z src/orchestration-v2/Orchestrator.ts:12256:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadSnapshotWindow")((threadId, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4544882Z
2026-10-24T00:19:00.4544954Z 12256     getThreadSnapshotWindow: (threadId, options) =>
2026-10-24T00:19:00.4545056Z           ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4545058Z
2026-10-24T00:19:00.4545368Z src/orchestration-v2/Orchestrator.ts:12260:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getShellSnapshot")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4545371Z
2026-10-24T00:19:00.4545424Z 12260     getShellSnapshot: (options) =>
2026-10-24T00:19:00.4545465Z           ~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4545468Z
2026-10-24T00:19:00.4545840Z src/orchestration-v2/Orchestrator.ts:12262:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.listActiveSubagentThreadIds")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4545842Z
2026-10-24T00:19:00.4545903Z 12262     listActiveSubagentThreadIds: () =>
2026-10-24T00:19:00.4545951Z           ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4545953Z
2026-10-24T00:19:00.4546257Z src/orchestration-v2/Orchestrator.ts:12264:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.readShellSnapshot")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4546261Z
2026-10-24T00:19:00.4546313Z 12264     readShellSnapshot: (options) =>
2026-10-24T00:19:00.4546356Z           ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4546358Z
2026-10-24T00:19:00.4546663Z src/orchestration-v2/Orchestrator.ts:12271:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadShell")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4546665Z
2026-10-24T00:19:00.4546717Z 12271     getThreadShell: (threadId) =>
2026-10-24T00:19:00.4546761Z           ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4546763Z
2026-10-24T00:19:00.4547082Z src/orchestration-v2/Orchestrator.ts:12275:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadEventSequence")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4547086Z
2026-10-24T00:19:00.4547148Z 12275     getThreadEventSequence: (threadId) =>
2026-10-24T00:19:00.4547192Z           ~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4547194Z
2026-10-24T00:19:00.4547516Z 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-24T00:19:00.4547519Z
2026-10-24T00:19:00.4547586Z 160         getInstance: () => Effect.succeed(undefined),
2026-10-24T00:19:00.4547641Z                                ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4547643Z
2026-10-24T00:19:00.4547941Z 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-24T00:19:00.4547945Z
2026-10-24T00:19:00.4548055Z 269     getShell: (projectId) => get(projectId).pipe(Effect.map(Option.map(toShell))),
2026-10-24T00:19:00.4548096Z         ~~~~~~~~
2026-10-24T00:19:00.4548098Z
2026-10-24T00:19:00.4548391Z 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-24T00:19:00.4548393Z
2026-10-24T00:19:00.4548441Z 270     listShells: (options) =>
2026-10-24T00:19:00.4548483Z         ~~~~~~~~~~
2026-10-24T00:19:00.4548485Z
2026-10-24T00:19:00.4548743Z src/orchestration-v2/ProjectionControlReads.test.ts:279:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4548746Z
2026-10-24T00:19:00.4548793Z 279           Effect.succeed(
2026-10-24T00:19:00.4548834Z               ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4548883Z
2026-10-24T00:19:00.4549208Z 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-24T00:19:00.4549210Z
2026-10-24T00:19:00.4549257Z 78       get: (instanceId) =>
2026-10-24T00:19:00.4549298Z          ~~~
2026-10-24T00:19:00.4549300Z
2026-10-24T00:19:00.4549661Z 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-24T00:19:00.4549664Z
2026-10-24T00:19:00.4549706Z 135       list: () =>
2026-10-24T00:19:00.4549747Z           ~~~~
2026-10-24T00:19:00.4549750Z
2026-10-24T00:19:00.4550069Z 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-24T00:19:00.4550073Z
2026-10-24T00:19:00.4550156Z 93       record: (properties: Readonly<Record<string, unknown>>) =>
2026-10-24T00:19:00.4550196Z          ~~~~~~
2026-10-24T00:19:00.4550198Z
2026-10-24T00:19:00.4550563Z 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-24T00:19:00.4550568Z
2026-10-24T00:19:00.4550629Z 818               Effect.flatMap((storedEvents) =>
2026-10-24T00:19:00.4550673Z                   ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4550675Z
2026-10-24T00:19:00.4550930Z src/orchestration-v2/ProviderSessionManager.test.ts:1155:19 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4550932Z
2026-10-24T00:19:00.4551055Z 1155                 : Effect.succeed(Option.some(makeBrowserAccessProject(requestedProjectId))),
2026-10-24T00:19:00.4551099Z                        ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4551101Z
2026-10-24T00:19:00.4551359Z src/orchestration-v2/ProviderTurnStartService.test.ts:150:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4551361Z
2026-10-24T00:19:00.4551407Z 150             Effect.succeed(
2026-10-24T00:19:00.4551452Z                 ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4551454Z
2026-10-24T00:19:00.4551709Z src/orchestration-v2/ProviderTurnStartService.test.ts:703:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4551711Z
2026-10-24T00:19:00.4551887Z 703             Effect.succeed(Option.some({ workspaceRoot: "/tmp/native-account-project" } as never)),
2026-10-24T00:19:00.4551932Z                 ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4551936Z
2026-10-24T00:19:00.4552194Z src/orchestration-v2/ProviderTurnStartService.testkit.ts:14:20 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4552196Z
2026-10-24T00:19:00.4552263Z 14     getById: () => Effect.succeed(Option.none()),
2026-10-24T00:19:00.4552306Z                       ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4552311Z
2026-10-24T00:19:00.4552682Z src/orchestration-v2/ProviderTurnStartService.ts:499:15 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T00:19:00.4552684Z
2026-10-24T00:19:00.4552742Z 499               Effect.catchCause((cause) =>
2026-10-24T00:19:00.4552787Z                   ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4552789Z
2026-10-24T00:19:00.4553191Z src/orchestration-v2/ProviderTurnStartService.ts:1289: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-24T00:19:00.4553242Z
2026-10-24T00:19:00.4553303Z 1289       return runExecution.startRootRun({
2026-10-24T00:19:00.4553342Z            ~~~~~~
2026-10-24T00:19:00.4553344Z
2026-10-24T00:19:00.4553597Z src/orchestration-v2/PullRequestWatchReactor.ts:478:53 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T00:19:00.4553637Z
2026-10-24T00:19:00.4553737Z 478             ? pullRequests.activity(reference).pipe(Effect.map(Option.some))
2026-10-24T00:19:00.4553799Z                                                         ~~~~~~~~~~
2026-10-24T00:19:00.4553802Z
2026-10-24T00:19:00.4554152Z 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-24T00:19:00.4554157Z
2026-10-24T00:19:00.4554227Z 49       cleanupScheduledTasks: (threadId: ThreadId) =>
2026-10-24T00:19:00.4554271Z          ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4554273Z
2026-10-24T00:19:00.4554615Z 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-24T00:19:00.4554619Z
2026-10-24T00:19:00.4554681Z 58       cleanupTerminals: (threadId: string) =>
2026-10-24T00:19:00.4554722Z          ~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4554726Z
2026-10-24T00:19:00.4555070Z 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-24T00:19:00.4555074Z
2026-10-24T00:19:00.4555133Z 66       cleanupPreviews: (threadId: string) =>
2026-10-24T00:19:00.4555175Z          ~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4555177Z
2026-10-24T00:19:00.4555538Z 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-24T00:19:00.4555540Z
2026-10-24T00:19:00.4555632Z 74       cleanupAttachments: (attachmentIds: ReadonlyArray<string>) =>
2026-10-24T00:19:00.4555673Z          ~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4555676Z
2026-10-24T00:19:00.4555929Z 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-24T00:19:00.4555933Z
2026-10-24T00:19:00.4555991Z 1812         ).pipe(Effect.map(Option.some)),
2026-10-24T00:19:00.4556035Z                     ~~~~~~~~~~
2026-10-24T00:19:00.4556037Z
2026-10-24T00:19:00.4556398Z src/orchestration-v2/RunExecutionService.ts:919:15 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T00:19:00.4556402Z
2026-10-24T00:19:00.4556457Z 919               Effect.catchCause((cause) =>
2026-10-24T00:19:00.4556502Z                   ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4556504Z
2026-10-24T00:19:00.4556739Z src/orchestration-v2/RuntimePolicy.test.ts:90:9 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4556741Z
2026-10-24T00:19:00.4556791Z 90         Effect.succeed(
2026-10-24T00:19:00.4556833Z            ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4556880Z
2026-10-24T00:19:00.4557172Z 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-24T00:19:00.4557174Z
2026-10-24T00:19:00.4557221Z 54   resolve: (input) =>
2026-10-24T00:19:00.4557261Z      ~~~~~~~
2026-10-24T00:19:00.4557263Z
2026-10-24T00:19:00.4557510Z src/orchestration-v2/RuntimeRequestService.test.ts:29:7 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4557512Z
2026-10-24T00:19:00.4557597Z 29       Effect.succeed(
2026-10-24T00:19:00.4557641Z          ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4557643Z
2026-10-24T00:19:00.4557889Z src/orchestration-v2/ThreadLaunchService.test.ts:189:33 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4557891Z
2026-10-24T00:19:00.4557986Z 189       getByWorkspaceRoot: () => Effect.succeed(Option.some(project)),
2026-10-24T00:19:00.4558036Z                                     ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4558038Z
2026-10-24T00:19:00.4558280Z src/orchestration-v2/ThreadLaunchService.test.ts:220:32 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4558282Z
2026-10-24T00:19:00.4558364Z 220         folderForThread: () => Effect.succeed(Option.none()),
2026-10-24T00:19:00.4558416Z                                    ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4558419Z
2026-10-24T00:19:00.4558736Z 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-24T00:19:00.4558738Z
2026-10-24T00:19:00.4558784Z 91     archive: (input) =>
2026-10-24T00:19:00.4558825Z        ~~~~~~~
2026-10-24T00:19:00.4558829Z
2026-10-24T00:19:00.4559148Z 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-24T00:19:00.4559150Z
2026-10-24T00:19:00.4559199Z 97     unarchive: (input) =>
2026-10-24T00:19:00.4559240Z        ~~~~~~~~~
2026-10-24T00:19:00.4559242Z
2026-10-24T00:19:00.4559556Z 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-24T00:19:00.4559558Z
2026-10-24T00:19:00.4559604Z 103     delete: (input) =>
2026-10-24T00:19:00.4559643Z         ~~~~~~
2026-10-24T00:19:00.4559646Z
2026-10-24T00:19:00.4559976Z 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-24T00:19:00.4559980Z
2026-10-24T00:19:00.4560031Z 109     updateMetadata: (input) =>
2026-10-24T00:19:00.4560072Z         ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4560074Z
2026-10-24T00:19:00.4560403Z 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-24T00:19:00.4560405Z
2026-10-24T00:19:00.4560456Z 118     setRuntimeMode: (input) =>
2026-10-24T00:19:00.4560497Z         ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4560499Z
2026-10-24T00:19:00.4560839Z 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-24T00:19:00.4560889Z
2026-10-24T00:19:00.4560941Z 125     setInteractionMode: (input) =>
2026-10-24T00:19:00.4560983Z         ~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4560985Z
2026-10-24T00:19:00.4561318Z 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-24T00:19:00.4561321Z
2026-10-24T00:19:00.4561373Z 132     setModelSelection: (input) =>
2026-10-24T00:19:00.4561415Z         ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4561417Z
2026-10-24T00:19:00.4561846Z 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-24T00:19:00.4561848Z
2026-10-24T00:19:00.4561907Z 689       Effect.flatMap((projection) =>
2026-10-24T00:19:00.4561951Z           ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4561953Z
2026-10-24T00:19:00.4562229Z 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-24T00:19:00.4562231Z
2026-10-24T00:19:00.4562295Z 706     ensureProjectionTranscript(input.threadId)
2026-10-24T00:19:00.4562346Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4562475Z 707       .pipe(Effect.andThen(orchestrator.getThreadRecords(input.threadId, fields, filter)))
2026-10-24T00:19:00.4562561Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4562599Z ...
2026-10-24T00:19:00.4562640Z 726         ),
2026-10-24T00:19:00.4562680Z     ~~~~~~~~~~
2026-10-24T00:19:00.4562722Z 727       );
2026-10-24T00:19:00.4562759Z     ~~~~~~~
2026-10-24T00:19:00.4562762Z
2026-10-24T00:19:00.4563123Z 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-24T00:19:00.4563125Z
2026-10-24T00:19:00.4563181Z 717         Effect.flatMap((projection) =>
2026-10-24T00:19:00.4563224Z             ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4563226Z
2026-10-24T00:19:00.4563582Z 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-24T00:19:00.4563584Z
2026-10-24T00:19:00.4563679Z 1131     if (failures[0] !== undefined) return yield* Effect.fail(failures[0]);
2026-10-24T00:19:00.4563733Z                                                ~~~~~
2026-10-24T00:19:00.4563735Z
2026-10-24T00:19:00.4564070Z 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-24T00:19:00.4564074Z
2026-10-24T00:19:00.4564124Z 1142     searchThread: (input) =>
2026-10-24T00:19:00.4564167Z          ~~~~~~~~~~~~
2026-10-24T00:19:00.4564169Z
2026-10-24T00:19:00.4564585Z 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-24T00:19:00.4564588Z
2026-10-24T00:19:00.4564703Z 1147     getThreadHistoryPage: (threadId, cursor, throughEntryId, conversationOnly) =>
2026-10-24T00:19:00.4564749Z          ~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4564751Z
2026-10-24T00:19:00.4565107Z 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-24T00:19:00.4565151Z
2026-10-24T00:19:00.4565215Z 1153     getTimelinePage: (threadId, options) =>
2026-10-24T00:19:00.4565256Z          ~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4565258Z
2026-10-24T00:19:00.4565642Z 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-24T00:19:00.4565645Z
2026-10-24T00:19:00.4565699Z 1157     getMessageCount: (threadId) =>
2026-10-24T00:19:00.4565742Z          ~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4565744Z
2026-10-24T00:19:00.4566077Z 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-24T00:19:00.4566081Z
2026-10-24T00:19:00.4566130Z 1161     getTurnItem: (input) =>
2026-10-24T00:19:00.4566173Z          ~~~~~~~~~~~
2026-10-24T00:19:00.4566175Z
2026-10-24T00:19:00.4566549Z 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-24T00:19:00.4566552Z
2026-10-24T00:19:00.4566626Z 1166     getThreadRecords: (threadId, fields, filter) =>
2026-10-24T00:19:00.4566668Z          ~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4566670Z
2026-10-24T00:19:00.4567062Z 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-24T00:19:00.4567067Z
2026-10-24T00:19:00.4567204Z 1206     ensureTranscript: () => Effect.succeed({ importedThreadCount: 0, importedMessageCount: 0 }),
2026-10-24T00:19:00.4567246Z          ~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4567249Z
2026-10-24T00:19:00.4567508Z src/orchestration-v2/ThreadPullRequestService.test.ts:119:29 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4567510Z
2026-10-24T00:19:00.4567589Z 119             getShell: () => Effect.succeed(Option.some(project)),
2026-10-24T00:19:00.4567639Z                                 ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4567641Z
2026-10-24T00:19:00.4567896Z src/orchestration-v2/ThreadPullRequestService.test.ts:238:31 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4567898Z
2026-10-24T00:19:00.4567977Z 238               getShell: () => Effect.succeed(Option.some(project)),
2026-10-24T00:19:00.4568029Z                                   ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4568031Z
2026-10-24T00:19:00.4568406Z src/orchestration-v2/ThreadPullRequestService.ts:329:17 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T00:19:00.4568408Z
2026-10-24T00:19:00.4568462Z 329                 Effect.catchCause((cause) =>
2026-10-24T00:19:00.4568509Z                     ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4568513Z
2026-10-24T00:19:00.4568877Z src/orchestration-v2/ThreadSettlementService.ts:353:11 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T00:19:00.4568879Z
2026-10-24T00:19:00.4568934Z 353           Effect.catchCause((cause) =>
2026-10-24T00:19:00.4569022Z               ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4569024Z
2026-10-24T00:19:00.4569386Z src/orchestration-v2/ThreadSettlementService.ts:516:11 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T00:19:00.4569389Z
2026-10-24T00:19:00.4569441Z 516           Effect.catchCause((cause) =>
2026-10-24T00:19:00.4569486Z               ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4569489Z
2026-10-24T00:19:00.4569892Z src/orchestration-v2/ThreadSettlementService.ts:534:7 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T00:19:00.4569894Z
2026-10-24T00:19:00.4569949Z 534       Effect.catchCause((cause) =>
2026-10-24T00:19:00.4569993Z           ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4569995Z
2026-10-24T00:19:00.4570357Z src/orchestration-v2/ThreadSettlementService.ts:576:9 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T00:19:00.4570360Z
2026-10-24T00:19:00.4570414Z 576         Effect.catchCause((cause) =>
2026-10-24T00:19:00.4570458Z             ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4570461Z
2026-10-24T00:19:00.4570806Z 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-24T00:19:00.4570808Z
2026-10-24T00:19:00.4570859Z 106       normalize: (item, runOrdinal) =>
2026-10-24T00:19:00.4570900Z           ~~~~~~~~~
2026-10-24T00:19:00.4570902Z
2026-10-24T00:19:00.4571288Z 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-24T00:19:00.4571292Z
2026-10-24T00:19:00.4571386Z 54 const thread = Schema.decodeUnknownSync(OrchestrationV2AppThread)({
2026-10-24T00:19:00.4571434Z                          ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4571436Z
2026-10-24T00:19:00.4571803Z 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-24T00:19:00.4571805Z
2026-10-24T00:19:00.4571848Z 231           try {
2026-10-24T00:19:00.4571919Z               ~~~~~
2026-10-24T00:19:00.4571996Z 232             decodeThreadHistoryCursor(args.query.cursor);
2026-10-24T00:19:00.4572058Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4572099Z ...
2026-10-24T00:19:00.4572223Z 236             return yield* failEnvironmentInternal("orchestration_thread_history_failed", cause);
2026-10-24T00:19:00.4572308Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4572346Z 237           }
2026-10-24T00:19:00.4572390Z     ~~~~~~~~~~~
2026-10-24T00:19:00.4572392Z
2026-10-24T00:19:00.4572631Z src/orchestration-v2/runtimeLayer.test.ts:120:18 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4572633Z
2026-10-24T00:19:00.4572699Z 120   getById: () => Effect.succeed(Option.none()),
2026-10-24T00:19:00.4572743Z                      ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4572745Z
2026-10-24T00:19:00.4572979Z src/orchestration-v2/runtimeLayer.test.ts:996:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4573028Z
2026-10-24T00:19:00.4573075Z 996           Effect.succeed(
2026-10-24T00:19:00.4573119Z               ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4573121Z
2026-10-24T00:19:00.4573481Z 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-24T00:19:00.4573483Z
2026-10-24T00:19:00.4573528Z 40         append: (input) =>
2026-10-24T00:19:00.4573608Z            ~~~~~~
2026-10-24T00:19:00.4573610Z
2026-10-24T00:19:00.4573920Z 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-24T00:19:00.4573923Z
2026-10-24T00:19:00.4573983Z 283       const awaitDispatch = (key: string) =>
2026-10-24T00:19:00.4574026Z                 ~~~~~~~~~~~~~
2026-10-24T00:19:00.4574028Z
2026-10-24T00:19:00.4574432Z 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-24T00:19:00.4574434Z
2026-10-24T00:19:00.4574484Z 447       execute: () => Effect.void,
2026-10-24T00:19:00.4574526Z           ~~~~~~~
2026-10-24T00:19:00.4574529Z
2026-10-24T00:19:00.4574859Z 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-24T00:19:00.4574861Z
2026-10-24T00:19:00.4574907Z 92     list: (input) =>
2026-10-24T00:19:00.4574944Z        ~~~~
2026-10-24T00:19:00.4574948Z
2026-10-24T00:19:00.4575270Z 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-24T00:19:00.4575272Z
2026-10-24T00:19:00.4575317Z 102     set: (input) =>
2026-10-24T00:19:00.4575356Z         ~~~
2026-10-24T00:19:00.4575358Z
2026-10-24T00:19:00.4575678Z 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-24T00:19:00.4575683Z
2026-10-24T00:19:00.4575724Z 54     get: (key) =>
2026-10-24T00:19:00.4575763Z        ~~~
2026-10-24T00:19:00.4575765Z
2026-10-24T00:19:00.4576094Z 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-24T00:19:00.4576098Z
2026-10-24T00:19:00.4576145Z 64     put: (key, guide) =>
2026-10-24T00:19:00.4576182Z        ~~~
2026-10-24T00:19:00.4576184Z
2026-10-24T00:19:00.4576508Z 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-24T00:19:00.4576510Z
2026-10-24T00:19:00.4576560Z 45         Effect.catch((error) =>
2026-10-24T00:19:00.4576603Z            ~~~~~~~~~~~~
2026-10-24T00:19:00.4576606Z
2026-10-24T00:19:00.4576910Z 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-24T00:19:00.4576913Z
2026-10-24T00:19:00.4576975Z 75       awaitAttached: () => Effect.succeed(false),
2026-10-24T00:19:00.4577065Z          ~~~~~~~~~~~~~
2026-10-24T00:19:00.4577067Z
2026-10-24T00:19:00.4577369Z 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-24T00:19:00.4577372Z
2026-10-24T00:19:00.4577432Z 78       isAttached: () => Effect.succeed(false),
2026-10-24T00:19:00.4577474Z          ~~~~~~~~~~
2026-10-24T00:19:00.4577476Z
2026-10-24T00:19:00.4577810Z 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-24T00:19:00.4577813Z
2026-10-24T00:19:00.4577913Z 79       endpoint: () => Effect.die("No desktop app is attached to this server."),
2026-10-24T00:19:00.4577953Z          ~~~~~~~~
2026-10-24T00:19:00.4577955Z
2026-10-24T00:19:00.4578249Z 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-24T00:19:00.4578251Z
2026-10-24T00:19:00.4578303Z 80       pointer: () => Effect.void,
2026-10-24T00:19:00.4578340Z          ~~~~~~~
2026-10-24T00:19:00.4578342Z
2026-10-24T00:19:00.4578670Z 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-24T00:19:00.4578672Z
2026-10-24T00:19:00.4578725Z 194     awaitAttached: (key, timeout) =>
2026-10-24T00:19:00.4578767Z         ~~~~~~~~~~~~~
2026-10-24T00:19:00.4578769Z
2026-10-24T00:19:00.4579073Z 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-24T00:19:00.4579079Z
2026-10-24T00:19:00.4579174Z 216     isAttached: (key) => Effect.sync(() => attachedTabs.has(keyOf(key))),
2026-10-24T00:19:00.4579215Z         ~~~~~~~~~~
2026-10-24T00:19:00.4579217Z
2026-10-24T00:19:00.4579526Z 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-24T00:19:00.4579528Z
2026-10-24T00:19:00.4579631Z 218     pointer: (key, pointer) => command({ type: "pointer", ...key, ...pointer }),
2026-10-24T00:19:00.4579669Z         ~~~~~~~
2026-10-24T00:19:00.4579671Z
2026-10-24T00:19:00.4580112Z src/preview/ServerBrowser.ts:480: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-24T00:19:00.4580116Z
2026-10-24T00:19:00.4580208Z 480     executable: () => Effect.runPromise(previewBrowser.executable),
2026-10-24T00:19:00.4580256Z                           ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4580258Z
2026-10-24T00:19:00.4580694Z src/preview/ServerBrowser.ts:687: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-24T00:19:00.4580696Z
2026-10-24T00:19:00.4580746Z 687       ? Effect.runPromise(
2026-10-24T00:19:00.4580789Z             ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4580791Z
2026-10-24T00:19:00.4581218Z src/preview/ServerBrowser.ts:696: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-24T00:19:00.4581261Z
2026-10-24T00:19:00.4581337Z 696     const scope = await Effect.runPromise(Scope.make());
2026-10-24T00:19:00.4581387Z                             ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4581390Z
2026-10-24T00:19:00.4581885Z src/preview/ServerBrowser.ts:698: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-24T00:19:00.4581888Z
2026-10-24T00:19:00.4581950Z 698       const endpoint = await Effect.runPromise(
2026-10-24T00:19:00.4582003Z                                  ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4582005Z
2026-10-24T00:19:00.4582435Z src/preview/ServerBrowser.ts:708: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-24T00:19:00.4582439Z
2026-10-24T00:19:00.4582521Z 708           await Effect.runPromise(Scope.close(scope, Exit.void));
2026-10-24T00:19:00.4582571Z                     ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4582573Z
2026-10-24T00:19:00.4583000Z src/preview/ServerBrowser.ts:712: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-24T00:19:00.4583004Z
2026-10-24T00:19:00.4583083Z 712       await Effect.runPromise(Scope.close(scope, Exit.void));
2026-10-24T00:19:00.4583130Z                 ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4583134Z
2026-10-24T00:19:00.4583559Z src/preview/ServerBrowser.ts:1199: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-24T00:19:00.4583561Z
2026-10-24T00:19:00.4583611Z 1199     await Effect.runPromise(
2026-10-24T00:19:00.4583654Z                ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4583658Z
2026-10-24T00:19:00.4584089Z src/preview/ServerBrowser.ts:1688: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-24T00:19:00.4584092Z
2026-10-24T00:19:00.4584145Z 1688         : await Effect.runPromise(
2026-10-24T00:19:00.4584192Z                      ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4584194Z
2026-10-24T00:19:00.4584688Z src/preview/ServerBrowser.ts:1752: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-24T00:19:00.4584691Z
2026-10-24T00:19:00.4584775Z 1752             ? await Effect.runPromise(
2026-10-24T00:19:00.4584835Z                          ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4584837Z
2026-10-24T00:19:00.4585100Z src/preview/ServerBrowser.ts:1755:58 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T00:19:00.4585102Z
2026-10-24T00:19:00.4585207Z 1755                     ServerBrowserTabNotFoundError: () => Effect.succeed(undefined),
2026-10-24T00:19:00.4585337Z                                                               ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4585339Z
2026-10-24T00:19:00.4585768Z src/preview/ServerBrowser.ts:1761: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-24T00:19:00.4585770Z
2026-10-24T00:19:00.4585840Z 1761           const { sessions } = await Effect.runPromise(
2026-10-24T00:19:00.4585943Z                                           ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4585945Z
2026-10-24T00:19:00.4586372Z src/preview/ServerBrowser.ts:1789: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-24T00:19:00.4586376Z
2026-10-24T00:19:00.4586429Z 1789             await Effect.runPromise(
2026-10-24T00:19:00.4586476Z                        ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4586478Z
2026-10-24T00:19:00.4586902Z src/preview/ServerBrowser.ts:1820: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-24T00:19:00.4586906Z
2026-10-24T00:19:00.4586960Z 1820               await Effect.runPromise(
2026-10-24T00:19:00.4587006Z                          ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4587008Z
2026-10-24T00:19:00.4587432Z src/preview/ServerBrowser.ts:1884: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-24T00:19:00.4587436Z
2026-10-24T00:19:00.4587562Z 1884       await Effect.runPromise(manager.close({ threadId: tab.threadId, tabId: tab.tabId }));
2026-10-24T00:19:00.4587609Z                  ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4587612Z
2026-10-24T00:19:00.4588037Z src/preview/ServerBrowser.ts:1952: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-24T00:19:00.4588040Z
2026-10-24T00:19:00.4588090Z 1952         await Effect.runPromise(
2026-10-24T00:19:00.4588136Z                    ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4588138Z
2026-10-24T00:19:00.4588561Z src/preview/ServerBrowser.ts:1964: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-24T00:19:00.4588565Z
2026-10-24T00:19:00.4588632Z 1964         const snapshot = await Effect.runPromise(
2026-10-24T00:19:00.4588686Z                                     ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4588688Z
2026-10-24T00:19:00.4589117Z src/preview/ServerBrowser.ts:2210: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-24T00:19:00.4589119Z
2026-10-24T00:19:00.4589170Z 2210         await Effect.runPromise(
2026-10-24T00:19:00.4589215Z                    ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4589217Z
2026-10-24T00:19:00.4589481Z 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-24T00:19:00.4589525Z
2026-10-24T00:19:00.4589595Z 179       const receive = (chunk: Uint8Array | string) => {
2026-10-24T00:19:00.4589638Z                 ~~~~~~~
2026-10-24T00:19:00.4589640Z
2026-10-24T00:19:00.4589928Z 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-24T00:19:00.4589930Z
2026-10-24T00:19:00.4590067Z 209     Effect.catch(() => Effect.succeed(HttpServerResponse.empty())),
2026-10-24T00:19:00.4590111Z         ~~~~~~~~~~~~
2026-10-24T00:19:00.4590113Z
2026-10-24T00:19:00.4590421Z 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-24T00:19:00.4590425Z
2026-10-24T00:19:00.4590508Z 860     resolveAvailableEditors: () => cachedAvailableEditors,
2026-10-24T00:19:00.4590553Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4590555Z
2026-10-24T00:19:00.4590870Z 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-24T00:19:00.4590873Z
2026-10-24T00:19:00.4590932Z 861     resolveFileManagerRevealKind: () =>
2026-10-24T00:19:00.4590976Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4590978Z
2026-10-24T00:19:00.4591276Z 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-24T00:19:00.4591278Z
2026-10-24T00:19:00.4591329Z 865     launchBrowser: (target) =>
2026-10-24T00:19:00.4591371Z         ~~~~~~~~~~~~~
2026-10-24T00:19:00.4591373Z
2026-10-24T00:19:00.4591663Z 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-24T00:19:00.4591668Z
2026-10-24T00:19:00.4591718Z 869     launchEditor: (input) =>
2026-10-24T00:19:00.4591796Z         ~~~~~~~~~~~~
2026-10-24T00:19:00.4591798Z
2026-10-24T00:19:00.4592050Z src/project/AgentSessionImporter.test.ts:212:15 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4592053Z
2026-10-24T00:19:00.4592100Z 212               Effect.succeed(
2026-10-24T00:19:00.4592142Z                   ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4592144Z
2026-10-24T00:19:00.4592370Z src/project/ManagedProjectFolders.ts:346:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4592374Z
2026-10-24T00:19:00.4592455Z 346           ? Effect.succeed(Option.some(folderFor(id.slice(-8))))
2026-10-24T00:19:00.4592499Z                 ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4592501Z
2026-10-24T00:19:00.4592726Z src/project/ManagedProjectFolders.ts:348:15 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4592728Z
2026-10-24T00:19:00.4592792Z 348             ? Effect.succeed(Option.some(fullFolder))
2026-10-24T00:19:00.4592836Z                   ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4592838Z
2026-10-24T00:19:00.4593143Z 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-24T00:19:00.4593145Z
2026-10-24T00:19:00.4593265Z 432     start: (input, hooks) => locked(start(input, hooks)),
2026-10-24T00:19:00.4593304Z         ~~~~~
2026-10-24T00:19:00.4593309Z
2026-10-24T00:19:00.4593609Z 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-24T00:19:00.4593611Z
2026-10-24T00:19:00.4593679Z 433     cancel: (projectId) => locked(cancel(projectId)),
2026-10-24T00:19:00.4593719Z         ~~~~~~
2026-10-24T00:19:00.4593721Z
2026-10-24T00:19:00.4594058Z 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-24T00:19:00.4594061Z
2026-10-24T00:19:00.4594127Z 434     retry: (projectId) => locked(retry(projectId)),
2026-10-24T00:19:00.4594166Z         ~~~~~
2026-10-24T00:19:00.4594170Z
2026-10-24T00:19:00.4594469Z 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-24T00:19:00.4594471Z
2026-10-24T00:19:00.4594541Z 435     discard: (projectId) => locked(discard(projectId)),
2026-10-24T00:19:00.4594582Z         ~~~~~~~
2026-10-24T00:19:00.4594584Z
2026-10-24T00:19:00.4594899Z 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-24T00:19:00.4594903Z
2026-10-24T00:19:00.4594998Z 21         get: (key) => Effect.sync(() => Option.fromUndefinedOr(bytes.get(key))),
2026-10-24T00:19:00.4595038Z            ~~~
2026-10-24T00:19:00.4595040Z
2026-10-24T00:19:00.4595361Z 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-24T00:19:00.4595365Z
2026-10-24T00:19:00.4595411Z 22         set: (key, value) =>
2026-10-24T00:19:00.4595450Z            ~~~
2026-10-24T00:19:00.4595452Z
2026-10-24T00:19:00.4595768Z 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-24T00:19:00.4595770Z
2026-10-24T00:19:00.4595818Z 26         remove: (key) =>
2026-10-24T00:19:00.4595859Z            ~~~~~~
2026-10-24T00:19:00.4595861Z
2026-10-24T00:19:00.4596176Z 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-24T00:19:00.4596180Z
2026-10-24T00:19:00.4596274Z 30         create: () => Effect.die("Handoff does not create persistent secrets."),
2026-10-24T00:19:00.4596316Z            ~~~~~~
2026-10-24T00:19:00.4596318Z
2026-10-24T00:19:00.4598685Z 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-24T00:19:00.4598688Z
2026-10-24T00:19:00.4598822Z 31         getOrCreateRandom: () => Effect.die("Handoff uses the destination environment identity."),
2026-10-24T00:19:00.4598870Z            ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4598872Z
2026-10-24T00:19:00.4599275Z 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-24T00:19:00.4599341Z
2026-10-24T00:19:00.4599448Z 205     return yield* Schema.decodeUnknownEffect(Schema.fromJsonString(schema))(
2026-10-24T00:19:00.4599499Z                              ~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4599501Z
2026-10-24T00:19:00.4599762Z 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-24T00:19:00.4599764Z
2026-10-24T00:19:00.4599814Z 569         ? Effect.succeed(undefined)
2026-10-24T00:19:00.4599856Z               ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4599895Z
2026-10-24T00:19:00.4600200Z 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-24T00:19:00.4600203Z
2026-10-24T00:19:00.4600250Z 284       current: (driverKind) =>
2026-10-24T00:19:00.4600292Z           ~~~~~~~
2026-10-24T00:19:00.4600294Z
2026-10-24T00:19:00.4600634Z 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-24T00:19:00.4600638Z
2026-10-24T00:19:00.4600691Z 284                 return yield* Effect.fail(
2026-10-24T00:19:00.4600734Z                            ~~~~~
2026-10-24T00:19:00.4600736Z
2026-10-24T00:19:00.4601044Z 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-24T00:19:00.4601046Z
2026-10-24T00:19:00.4601099Z 211     importProfile: (input) =>
2026-10-24T00:19:00.4601138Z         ~~~~~~~~~~~~~
2026-10-24T00:19:00.4601140Z
2026-10-24T00:19:00.4601472Z 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-24T00:19:00.4601475Z
2026-10-24T00:19:00.4601533Z 39       credentials: (namespace, bindingId) =>
2026-10-24T00:19:00.4601572Z          ~~~~~~~~~~~
2026-10-24T00:19:00.4601574Z
2026-10-24T00:19:00.4601973Z src/pullRequest/PullRequestService.ts:2933:7 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T00:19:00.4601976Z
2026-10-24T00:19:00.4602024Z 2933       Effect.catchCause((cause) =>
2026-10-24T00:19:00.4602067Z            ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4602069Z
2026-10-24T00:19:00.4602420Z src/pullRequest/PullRequestService.ts:3336:7 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T00:19:00.4602424Z
2026-10-24T00:19:00.4602473Z 3336       Effect.catchCause((cause) =>
2026-10-24T00:19:00.4602515Z            ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4602517Z
2026-10-24T00:19:00.4602818Z src/pullRequest/PullRequestService.ts:3556:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestService.listStats")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4602822Z
2026-10-24T00:19:00.4602869Z 3556     listStats: (input) =>
2026-10-24T00:19:00.4602909Z          ~~~~~~~~~
2026-10-24T00:19:00.4602911Z
2026-10-24T00:19:00.4603138Z src/relay/AgentAwarenessRelay.test.ts:271:9 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T00:19:00.4603140Z
2026-10-24T00:19:00.4603184Z 271         Effect.succeed(
2026-10-24T00:19:00.4603271Z             ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4603274Z
2026-10-24T00:19:00.4603570Z 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-24T00:19:00.4603572Z
2026-10-24T00:19:00.4603687Z 822     requestCatchUp: () => Queue.offer(catchUpRequests, undefined).pipe(Effect.asVoid),
2026-10-24T00:19:00.4603727Z         ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4603729Z
2026-10-24T00:19:00.4604135Z 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-24T00:19:00.4604137Z
2026-10-24T00:19:00.4604196Z 641     requestDesktopUpdate: (requestId) =>
2026-10-24T00:19:00.4604238Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4604242Z
2026-10-24T00:19:00.4604599Z 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-24T00:19:00.4604601Z
2026-10-24T00:19:00.4604657Z 647     commitDesktopUpdate: (requestId) =>
2026-10-24T00:19:00.4604698Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4604701Z
2026-10-24T00:19:00.4605061Z 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-24T00:19:00.4605063Z
2026-10-24T00:19:00.4605119Z 649     cancelDesktopUpdate: (requestId) =>
2026-10-24T00:19:00.4605161Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4605163Z
2026-10-24T00:19:00.4605509Z 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-24T00:19:00.4605513Z
2026-10-24T00:19:00.4605577Z 698       setDiagnosticsDemand: () => Effect.void,
2026-10-24T00:19:00.4605620Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4605622Z
2026-10-24T00:19:00.4605971Z 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-24T00:19:00.4605974Z
2026-10-24T00:19:00.4606036Z 699       requestDesktopUpdate: () => Effect.void,
2026-10-24T00:19:00.4606079Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4606081Z
2026-10-24T00:19:00.4606426Z 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-24T00:19:00.4606431Z
2026-10-24T00:19:00.4606490Z 700       commitDesktopUpdate: () => Effect.void,
2026-10-24T00:19:00.4606534Z           ~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4606536Z
2026-10-24T00:19:00.4606880Z 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-24T00:19:00.4606884Z
2026-10-24T00:19:00.4606943Z 701       cancelDesktopUpdate: () => Effect.void,
2026-10-24T00:19:00.4606984Z           ~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4606987Z
2026-10-24T00:19:00.4607309Z 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-24T00:19:00.4607428Z
2026-10-24T00:19:00.4607478Z 1091       readHistory: () =>
2026-10-24T00:19:00.4607520Z            ~~~~~~~~~~~
2026-10-24T00:19:00.4607522Z
2026-10-24T00:19:00.4607855Z 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-24T00:19:00.4607857Z
2026-10-24T00:19:00.4607918Z 1097       setExternalProcesses: () => Effect.void,
2026-10-24T00:19:00.4608014Z            ~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4608017Z
2026-10-24T00:19:00.4608348Z 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-24T00:19:00.4608350Z
2026-10-24T00:19:00.4608412Z 1098       setHostPowerState: () => Effect.void,
2026-10-24T00:19:00.4608454Z            ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4608456Z
2026-10-24T00:19:00.4608738Z 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-24T00:19:00.4608742Z
2026-10-24T00:19:00.4608807Z 1136                             ? Effect.succeed(undefined)
2026-10-24T00:19:00.4608864Z                                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4608866Z
2026-10-24T00:19:00.4609140Z 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-24T00:19:00.4609143Z
2026-10-24T00:19:00.4609199Z 166       const results = yield* Effect.all(
2026-10-24T00:19:00.4609246Z                                  ~~~~~~~~~~
2026-10-24T00:19:00.4609250Z
2026-10-24T00:19:00.4609598Z src/server.ts:480: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-24T00:19:00.4609601Z
2026-10-24T00:19:00.4609654Z 480     return Effect.gen(function* () {
2026-10-24T00:19:00.4609694Z         ~~~~~~
2026-10-24T00:19:00.4609696Z
2026-10-24T00:19:00.4609963Z 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-24T00:19:00.4609966Z
2026-10-24T00:19:00.4610030Z 209           prepareTrial: Effect.succeed(undefined),
2026-10-24T00:19:00.4610083Z                             ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4610085Z
2026-10-24T00:19:00.4610344Z 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-24T00:19:00.4610348Z
2026-10-24T00:19:00.4610404Z 413       const results = yield* Effect.all(
2026-10-24T00:19:00.4610450Z                                  ~~~~~~~~~~
2026-10-24T00:19:00.4610455Z
2026-10-24T00:19:00.4610854Z 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-24T00:19:00.4610858Z
2026-10-24T00:19:00.4610912Z 204     listChangeRequests: (input) =>
2026-10-24T00:19:00.4610956Z         ~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4610958Z
2026-10-24T00:19:00.4611347Z 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-24T00:19:00.4611391Z
2026-10-24T00:19:00.4611448Z 209     getChangeRequest: (input) =>
2026-10-24T00:19:00.4611490Z         ~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4611492Z
2026-10-24T00:19:00.4611920Z 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-24T00:19:00.4611922Z
2026-10-24T00:19:00.4612015Z 214     createChangeRequest: (input) =>
2026-10-24T00:19:00.4612058Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4612060Z
2026-10-24T00:19:00.4612459Z 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-24T00:19:00.4612463Z
2026-10-24T00:19:00.4612518Z 219     getRepositoryCloneUrls: (input) =>
2026-10-24T00:19:00.4612563Z         ~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4612565Z
2026-10-24T00:19:00.4612950Z 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-24T00:19:00.4612952Z
2026-10-24T00:19:00.4613048Z 224     createRepository: (input) => provider.createRepository(input),
2026-10-24T00:19:00.4613091Z         ~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4613093Z
2026-10-24T00:19:00.4613475Z 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-24T00:19:00.4613479Z
2026-10-24T00:19:00.4613530Z 225     getDefaultBranch: (input) =>
2026-10-24T00:19:00.4613572Z         ~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4613574Z
2026-10-24T00:19:00.4613970Z 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-24T00:19:00.4613973Z
2026-10-24T00:19:00.4614028Z 230     checkoutChangeRequest: (input) =>
2026-10-24T00:19:00.4614073Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4614075Z
2026-10-24T00:19:00.4614417Z 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-24T00:19:00.4614419Z
2026-10-24T00:19:00.4614546Z 345       resolve: (input) => resolveHandle(input).pipe(Effect.map((handle) => handle.provider)),
2026-10-24T00:19:00.4614587Z           ~~~~~~~
2026-10-24T00:19:00.4614589Z
2026-10-24T00:19:00.4614939Z src/sourceControl/SourceControlRepositoryService.ts:409:7 - suggestion TS377116: `Effect.catchIf` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T00:19:00.4614942Z
2026-10-24T00:19:00.4614990Z 409       Effect.catch((sshError) =>
2026-10-24T00:19:00.4615032Z           ~~~~~~~~~~~~
2026-10-24T00:19:00.4615034Z
2026-10-24T00:19:00.4615399Z src/sourceControl/SourceControlRepositoryService.ts:556:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.lookupRepository")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4615401Z
2026-10-24T00:19:00.4615451Z 556     lookupRepository: (input) =>
2026-10-24T00:19:00.4615538Z         ~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4615542Z
2026-10-24T00:19:00.4615893Z src/sourceControl/SourceControlRepositoryService.ts:558:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.prepareClone")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4615895Z
2026-10-24T00:19:00.4615944Z 558     prepareClone: (input) =>
2026-10-24T00:19:00.4615984Z         ~~~~~~~~~~~~
2026-10-24T00:19:00.4615986Z
2026-10-24T00:19:00.4616393Z src/sourceControl/SourceControlRepositoryService.ts:565:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.cloneRepository")((input, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4616396Z
2026-10-24T00:19:00.4616454Z 565     cloneRepository: (input, options) =>
2026-10-24T00:19:00.4616495Z         ~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4616497Z
2026-10-24T00:19:00.4616872Z src/sourceControl/SourceControlRepositoryService.ts:572:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.discardClone")((destinationPath) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4616874Z
2026-10-24T00:19:00.4616929Z 572     discardClone: (destinationPath) =>
2026-10-24T00:19:00.4616970Z         ~~~~~~~~~~~~
2026-10-24T00:19:00.4616972Z
2026-10-24T00:19:00.4617338Z src/sourceControl/SourceControlRepositoryService.ts:576:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.publishRepository")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4617343Z
2026-10-24T00:19:00.4617394Z 576     publishRepository: (input) =>
2026-10-24T00:19:00.4617443Z         ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4617445Z
2026-10-24T00:19:00.4617758Z 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-24T00:19:00.4617762Z
2026-10-24T00:19:00.4617811Z 708       return yield* Effect.fail(
2026-10-24T00:19:00.4617850Z                  ~~~~~
2026-10-24T00:19:00.4617852Z
2026-10-24T00:19:00.4618130Z 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-24T00:19:00.4618132Z
2026-10-24T00:19:00.4618180Z 113       record: () => Effect.void,
2026-10-24T00:19:00.4618220Z           ~~~~~~
2026-10-24T00:19:00.4618222Z
2026-10-24T00:19:00.4618515Z 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-24T00:19:00.4618519Z
2026-10-24T00:19:00.4618569Z 115       recordOwners: () => Effect.void,
2026-10-24T00:19:00.4618611Z           ~~~~~~~~~~~~
2026-10-24T00:19:00.4618613Z
2026-10-24T00:19:00.4618912Z 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-24T00:19:00.4618914Z
2026-10-24T00:19:00.4619056Z 329   yield* Effect.forever(Effect.sleep(FLUSH_INTERVAL_MS).pipe(Effect.flatMap(() => flushWhenDue)), {
2026-10-24T00:19:00.4619124Z                                                                  ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4619126Z
2026-10-24T00:19:00.4619393Z 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-24T00:19:00.4619395Z
2026-10-24T00:19:00.4619455Z 90       .pipe(Effect.catch(() => Effect.void));
2026-10-24T00:19:00.4619537Z                ~~~~~~~~~~~~
2026-10-24T00:19:00.4619539Z
2026-10-24T00:19:00.4619854Z 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-24T00:19:00.4619856Z
2026-10-24T00:19:00.4619910Z 60     generateCommitMessage: (input) =>
2026-10-24T00:19:00.4619952Z        ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4619954Z
2026-10-24T00:19:00.4620291Z 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-24T00:19:00.4620294Z
2026-10-24T00:19:00.4620344Z 64     generatePrContent: (input) =>
2026-10-24T00:19:00.4620387Z        ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4620389Z
2026-10-24T00:19:00.4620689Z 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-24T00:19:00.4620694Z
2026-10-24T00:19:00.4620744Z 68     generateBranchName: (input) =>
2026-10-24T00:19:00.4620787Z        ~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4620789Z
2026-10-24T00:19:00.4621094Z 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-24T00:19:00.4621098Z
2026-10-24T00:19:00.4621150Z 72     generateReviewGuide: (input) =>
2026-10-24T00:19:00.4621192Z        ~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4621194Z
2026-10-24T00:19:00.4621502Z 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-24T00:19:00.4621506Z
2026-10-24T00:19:00.4621558Z 76     generateThreadTitle: (input) =>
2026-10-24T00:19:00.4621601Z        ~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4621603Z
2026-10-24T00:19:00.4621915Z 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-24T00:19:00.4621917Z
2026-10-24T00:19:00.4621964Z 172     readSummary: (input) =>
2026-10-24T00:19:00.4622005Z         ~~~~~~~~~~~
2026-10-24T00:19:00.4622007Z
2026-10-24T00:19:00.4622245Z 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-24T00:19:00.4622247Z
2026-10-24T00:19:00.4622303Z 642         usageInstances(driver, settings)
2026-10-24T00:19:00.4622351Z             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4622393Z 643           .pipe(
2026-10-24T00:19:00.4622434Z     ~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4622472Z ...
2026-10-24T00:19:00.4622537Z 664             Effect.provideContext(readerContext),
2026-10-24T00:19:00.4622593Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4622634Z 665           ),
2026-10-24T00:19:00.4622673Z     ~~~~~~~~~~~
2026-10-24T00:19:00.4622675Z
2026-10-24T00:19:00.4623016Z src/vcs/GitVcsDriverCore.ts:4009:9 - suggestion TS377120: `Effect.filterOrElse` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-24T00:19:00.4623020Z
2026-10-24T00:19:00.4623070Z 4009         Effect.flatMap((result) =>
2026-10-24T00:19:00.4623114Z              ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4623116Z
2026-10-24T00:19:00.4623439Z src/vcs/GitVcsDriverCore.ts:4500: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-24T00:19:00.4623490Z
2026-10-24T00:19:00.4623549Z 4500     commit: (cwd, subject, body, options) =>
2026-10-24T00:19:00.4623585Z          ~~~~~~
2026-10-24T00:19:00.4623587Z
2026-10-24T00:19:00.4623942Z src/vcs/GitVcsDriverCore.ts:4502: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-24T00:19:00.4623945Z
2026-10-24T00:19:00.4624065Z 4502     pushCurrentBranch: (cwd, fallbackBranch, options) =>
2026-10-24T00:19:00.4624106Z          ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4624109Z
2026-10-24T00:19:00.4624418Z src/vcs/GitVcsDriverCore.ts:4504:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.pullCurrentBranch")((cwd) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4624422Z
2026-10-24T00:19:00.4624543Z 4504     pullCurrentBranch: (cwd) => withListRefsInvalidation(cwd, pullCurrentBranch(cwd)),
2026-10-24T00:19:00.4624591Z          ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4624666Z
2026-10-24T00:19:00.4625045Z src/vcs/GitVcsDriverCore.ts:4511:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.createWorktree")((input, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4625048Z
2026-10-24T00:19:00.4625104Z 4511     createWorktree: (input, options) =>
2026-10-24T00:19:00.4625148Z          ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4625150Z
2026-10-24T00:19:00.4625473Z src/vcs/GitVcsDriverCore.ts:4513:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchPullRequestBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4625475Z
2026-10-24T00:19:00.4625534Z 4513     fetchPullRequestBranch: (input) =>
2026-10-24T00:19:00.4625578Z          ~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4625580Z
2026-10-24T00:19:00.4625901Z src/vcs/GitVcsDriverCore.ts:4517:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.refreshCheckedOutBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4625903Z
2026-10-24T00:19:00.4625960Z 4517     refreshCheckedOutBranch: (input) =>
2026-10-24T00:19:00.4626002Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4626004Z
2026-10-24T00:19:00.4626305Z src/vcs/GitVcsDriverCore.ts:4519:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.ensureRemote")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4626307Z
2026-10-24T00:19:00.4626426Z 4519     ensureRemote: (input) => withListRefsInvalidation(input.cwd, ensureRemote(input)),
2026-10-24T00:19:00.4626469Z          ~~~~~~~~~~~~
2026-10-24T00:19:00.4626471Z
2026-10-24T00:19:00.4626772Z src/vcs/GitVcsDriverCore.ts:4522:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchRemote")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4626774Z
2026-10-24T00:19:00.4626820Z 4522     fetchRemote: (input) =>
2026-10-24T00:19:00.4626860Z          ~~~~~~~~~~~
2026-10-24T00:19:00.4626862Z
2026-10-24T00:19:00.4627185Z src/vcs/GitVcsDriverCore.ts:4537:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchWorktreeBaseCommit")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4627187Z
2026-10-24T00:19:00.4627243Z 4537     fetchWorktreeBaseCommit: (input) =>
2026-10-24T00:19:00.4627286Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4627290Z
2026-10-24T00:19:00.4627598Z src/vcs/GitVcsDriverCore.ts:4539:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchRemoteBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4627675Z
2026-10-24T00:19:00.4627811Z 4539     fetchRemoteBranch: (input) => withListRefsInvalidation(input.cwd, fetchRemoteBranch(input)),
2026-10-24T00:19:00.4627854Z          ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4627856Z
2026-10-24T00:19:00.4628229Z src/vcs/GitVcsDriverCore.ts:4540:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchRemoteTrackingBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4628232Z
2026-10-24T00:19:00.4628293Z 4540     fetchRemoteTrackingBranch: (input) =>
2026-10-24T00:19:00.4628336Z          ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4628338Z
2026-10-24T00:19:00.4628650Z src/vcs/GitVcsDriverCore.ts:4542:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.setBranchUpstream")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4628654Z
2026-10-24T00:19:00.4628789Z 4542     setBranchUpstream: (input) => withListRefsInvalidation(input.cwd, setBranchUpstream(input)),
2026-10-24T00:19:00.4628831Z          ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4628834Z
2026-10-24T00:19:00.4629140Z src/vcs/GitVcsDriverCore.ts:4543:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.removeWorktree")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4629144Z
2026-10-24T00:19:00.4629269Z 4543     removeWorktree: (input) => withListRefsInvalidation(input.cwd, removeWorktree(input)),
2026-10-24T00:19:00.4629311Z          ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4629313Z
2026-10-24T00:19:00.4629620Z src/vcs/GitVcsDriverCore.ts:4544:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.pruneWorktrees")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4629624Z
2026-10-24T00:19:00.4629747Z 4544     pruneWorktrees: (input) => withListRefsInvalidation(input.cwd, pruneWorktrees(input)),
2026-10-24T00:19:00.4629788Z          ~~~~~~~~~~~~~~
2026-10-24T00:19:00.4629790Z
2026-10-24T00:19:00.4630100Z src/vcs/GitVcsDriverCore.ts:4545:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.deleteLocalBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4630103Z
2026-10-24T00:19:00.4630234Z 4545     deleteLocalBranch: (input) => withListRefsInvalidation(input.cwd, deleteLocalBranch(input)),
2026-10-24T00:19:00.4630275Z          ~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4630277Z
2026-10-24T00:19:00.4630580Z src/vcs/GitVcsDriverCore.ts:4546:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.renameBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4630583Z
2026-10-24T00:19:00.4630699Z 4546     renameBranch: (input) => withListRefsInvalidation(input.cwd, renameBranch(input)),
2026-10-24T00:19:00.4630737Z          ~~~~~~~~~~~~
2026-10-24T00:19:00.4630740Z
2026-10-24T00:19:00.4631037Z src/vcs/GitVcsDriverCore.ts:4547:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.createRef")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4631039Z
2026-10-24T00:19:00.4631148Z 4547     createRef: (input) => withListRefsInvalidation(input.cwd, createRef(input)),
2026-10-24T00:19:00.4631190Z          ~~~~~~~~~
2026-10-24T00:19:00.4631192Z
2026-10-24T00:19:00.4631490Z src/vcs/GitVcsDriverCore.ts:4548:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.switchRef")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T00:19:00.4631535Z
2026-10-24T00:19:00.4631636Z 4548     switchRef: (input) => withListRefsInvalidation(input.cwd, switchRef(input)),
2026-10-24T00:19:00.4631676Z          ~~~~~~~~~
2026-10-24T00:19:00.4631678Z
2026-10-24T00:19:00.4632100Z 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-24T00:19:00.4632102Z
2026-10-24T00:19:00.4632168Z 153     return serverSettings.getSettings.pipe(
2026-10-24T00:19:00.4632244Z         ~~~~~~
2026-10-24T00:19:00.4632248Z
2026-10-24T00:19:00.4632538Z 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-24T00:19:00.4632541Z
2026-10-24T00:19:00.4632620Z 171       }).pipe(Effect.catch(() => Effect.succeed(undefined)));
2026-10-24T00:19:00.4632667Z                   ~~~~~~~~~~~~
2026-10-24T00:19:00.4632670Z
2026-10-24T00:19:00.4632939Z 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-24T00:19:00.4632942Z
2026-10-24T00:19:00.4633018Z 171       }).pipe(Effect.catch(() => Effect.succeed(undefined)));
2026-10-24T00:19:00.4633076Z                                      ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4633079Z
2026-10-24T00:19:00.4633312Z 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-24T00:19:00.4633314Z
2026-10-24T00:19:00.4633410Z 401           resolveFileManagerRevealKind: () => Effect.succeed(undefined),
2026-10-24T00:19:00.4633473Z                                                   ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T00:19:00.4633477Z
2026-10-24T00:19:00.4633744Z src/ws.ts:1384: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-24T00:19:00.4633747Z
2026-10-24T00:19:00.4633806Z 1384         return yield* Option.match(project, {
2026-10-24T00:19:00.4633853Z                            ~~~~~~~~~~~~
2026-10-24T00:19:00.4633855Z
2026-10-24T00:19:00.4634144Z src/ws.ts:2319: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-24T00:19:00.4634147Z
2026-10-24T00:19:00.4634201Z 2319                 return yield* Effect.fail(
2026-10-24T00:19:00.4634245Z                             ~~~~~
2026-10-24T00:19:00.4634247Z
2026-10-24T00:19:00.4634533Z src/ws.ts:2328: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-24T00:19:00.4634537Z
2026-10-24T00:19:00.4634591Z 2328                 return yield* Effect.fail(
2026-10-24T00:19:00.4634636Z                             ~~~~~
2026-10-24T00:19:00.4634638Z
2026-10-24T00:19:00.4634921Z src/ws.ts:2336: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-24T00:19:00.4634924Z
2026-10-24T00:19:00.4634975Z 2336                 return yield* Effect.fail(
2026-10-24T00:19:00.4635018Z                             ~~~~~
2026-10-24T00:19:00.4635020Z
2026-10-24T00:19:00.4635022Z
2026-10-24T00:19:00.4635060Z ---
2026-10-24T00:19:00.4635321Z vp run: 0/32 cache hit (0%), 32/32 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-24T00:19:00.5048877Z Post job cleanup.
2026-10-24T00:19:00.5708911Z Cache hit occurred on the primary key electron-Linux-X64-854e11ddd491bd4f350eebb67a74265df119376a3984c8e153cfe5fc8ced6309, not saving cache.
2026-10-24T00:19:00.5779275Z Post job cleanup.
2026-10-24T00:19:00.5791746Z ##[start-action display=Cache full pnpm store;id=__dea4b673-651e-4c29-87a8-9a6d921d5c52.__actions_cache]
2026-10-24T00:19:00.6107886Z Post job cleanup.
2026-10-24T00:19:00.6730517Z Cache hit occurred on the primary key pnpm-full-v1-Linux-X64-3cb0b4d7cff93dc8fe33f2ea73cac71ca25a36270fcb648b9b4a9320151012ef, not saving cache.
2026-10-24T00:19:00.6761566Z ##[end-action id=__dea4b673-651e-4c29-87a8-9a6d921d5c52.__actions_cache;outcome=success;conclusion=success;duration_ms=96]
2026-10-24T00:19:00.6763215Z ##[start-action display=Cache Vite+;id=__dea4b673-651e-4c29-87a8-9a6d921d5c52.vp_cache]
2026-10-24T00:19:00.6781276Z Post job cleanup.
2026-10-24T00:19:00.7393901Z 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-24T00:19:00.7422287Z ##[end-action id=__dea4b673-651e-4c29-87a8-9a6d921d5c52.vp_cache;outcome=success;conclusion=success;duration_ms=65]
2026-10-24T00:19:00.7463286Z Post job cleanup.
2026-10-24T00:19:00.7840569Z [command]/usr/local/bin/git version
2026-10-24T00:19:00.7866596Z git version 2.55.0
2026-10-24T00:19:00.7883219Z Temporarily overriding HOME='/home/runner/_work/_temp/7884c8f4-63bd-44c2-86cb-808f8d2d1f78' before making global git config changes
2026-10-24T00:19:00.7883556Z Adding repository directory to the temporary git global config as a safe directory
2026-10-24T00:19:00.7886227Z [command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
2026-10-24T00:19:00.7906661Z Removing SSH command configuration
2026-10-24T00:19:00.7910215Z [command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-10-24T00:19:00.7932626Z [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-24T00:19:00.8043234Z fatal: No url found for submodule path '.repos/alchemy-effect/submodules/distilled' in .gitmodules
2026-10-24T00:19:00.8066871Z ##[warning]The process '/usr/local/bin/git' failed with exit code 128
2026-10-24T00:19:00.8101649Z A job completed hook has been configured by the self-hosted runner administrator
2026-10-24T00:19:00.8120780Z ##[group]Run '/job_completed.sh'
2026-10-24T00:19:00.8130826Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
2026-10-24T00:19:00.8130990Z env:
2026-10-24T00:19:00.8131097Z   BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 166
2026-10-24T00:19:00.8131238Z   BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 1110
2026-10-24T00:19:00.8131376Z   BLACKSMITH_CHECK_RUN_ID: 120722356368
2026-10-24T00:19:00.8131529Z   BLACKSMITH_JOB_DISPLAY_NAME: Build and Typecheck
2026-10-24T00:19:00.8131690Z   GITHUB_ACTIONS_CACHE_MODE: write
2026-10-24T00:19:00.8131829Z ##[endgroup]
2026-10-24T00:19:00.8206751Z Docker container cache not activated, skipping hash computation.
2026-10-24T00:19:00.8461801Z No active SSH sessions detected. Proceeding with shutdown immediately.
2026-10-24T00:19:00.8506695Z Cleaning up orphan processes