GitHub check

256 KB of 529 KB loaded Download the full log (529 KB)
273 KB of earlier output not loaded
7047: This expression can be rewritten in the reusable function form `Effect.fn("BitbucketPullRequestApi.setCommentResolution")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8151704Z
2026-10-24T18:50:23.8151764Z 862     setCommentResolution: (input) =>
2026-10-24T18:50:23.8151906Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8151979Z
2026-10-24T18:50:23.8152375Z src/server/BitbucketSourceControlProvider.ts:47:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.listChangeRequests")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8152854Z
2026-10-24T18:50:23.8152911Z 47     listChangeRequests: (input) => {
2026-10-24T18:50:23.8153046Z        ~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8153117Z
2026-10-24T18:50:23.8153503Z src/server/BitbucketSourceControlProvider.ts:75:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8153925Z
2026-10-24T18:50:23.8153981Z 75     getChangeRequest: (input) =>
2026-10-24T18:50:23.8154111Z        ~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8154176Z
2026-10-24T18:50:23.8154566Z src/server/BitbucketSourceControlProvider.ts:92:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.createChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8154995Z
2026-10-24T18:50:23.8155054Z 92     createChangeRequest: (input) => {
2026-10-24T18:50:23.8155190Z        ~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8155261Z
2026-10-24T18:50:23.8155664Z src/server/BitbucketSourceControlProvider.ts:121:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getRepositoryCloneUrls")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8156117Z
2026-10-24T18:50:23.8156174Z 121     getRepositoryCloneUrls: (input) =>
2026-10-24T18:50:23.8156314Z         ~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8156390Z
2026-10-24T18:50:23.8156797Z src/server/BitbucketSourceControlProvider.ts:137:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.createRepository")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8157224Z
2026-10-24T18:50:23.8157279Z 137     createRepository: (input) =>
2026-10-24T18:50:23.8157444Z         ~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8157516Z
2026-10-24T18:50:23.8157901Z src/server/BitbucketSourceControlProvider.ts:153:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getDefaultBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8158326Z
2026-10-24T18:50:23.8158376Z 153     getDefaultBranch: (input) =>
2026-10-24T18:50:23.8158508Z         ~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8158575Z
2026-10-24T18:50:23.8158967Z src/server/BitbucketSourceControlProvider.ts:171:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.checkoutChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8159409Z
2026-10-24T18:50:23.8159468Z 171     checkoutChangeRequest: (input) =>
2026-10-24T18:50:23.8159607Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8159686Z
2026-10-24T18:50:23.8159689Z
2026-10-24T18:50:23.8159760Z ~/packages/source-control-forgejo$ tsc --noEmit
2026-10-24T18:50:23.8159871Z
2026-10-24T18:50:23.8159927Z ~/packages/provider-grok$ tsc --noEmit
2026-10-24T18:50:23.8160402Z src/server/ForgejoSourceControlProvider.ts:362:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8160839Z
2026-10-24T18:50:23.8160893Z 362     getChangeRequest: (input) =>
2026-10-24T18:50:23.8161023Z         ~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8161091Z
2026-10-24T18:50:23.8161093Z
2026-10-24T18:50:23.8161148Z ~/packages/provider-pi$ tsc --noEmit
2026-10-24T18:50:23.8161528Z 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-24T18:50:23.8161904Z
2026-10-24T18:50:23.8161951Z 170     get: (host) =>
2026-10-24T18:50:23.8162059Z         ~~~
2026-10-24T18:50:23.8162117Z
2026-10-24T18:50:23.8162419Z 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-24T18:50:23.8162760Z
2026-10-24T18:50:23.8162859Z 183     invalidate: (host) => Cache.invalidate(cache, normalizeHost(host)),
2026-10-24T18:50:23.8163041Z         ~~~~~~~~~~
2026-10-24T18:50:23.8163104Z
2026-10-24T18:50:23.8163402Z 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-24T18:50:23.8163738Z
2026-10-24T18:50:23.8163785Z 184     cliEnv: (host) =>
2026-10-24T18:50:23.8163896Z         ~~~~~~
2026-10-24T18:50:23.8163956Z
2026-10-24T18:50:23.8164209Z src/server/GitCafePullRequestProvider.ts:341:9 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T18:50:23.8164500Z
2026-10-24T18:50:23.8164554Z 341         Effect.map(Option.some),
2026-10-24T18:50:23.8164679Z             ~~~~~~~~~~
2026-10-24T18:50:23.8164744Z
2026-10-24T18:50:23.8164989Z src/server/GitCafePullRequestProvider.ts:346:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8165273Z
2026-10-24T18:50:23.8165335Z 346               : Effect.succeed(Option.none()),
2026-10-24T18:50:23.8165481Z                     ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8165563Z
2026-10-24T18:50:23.8165808Z src/server/GitCafePullRequestProvider.ts:655:13 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T18:50:23.8166093Z
2026-10-24T18:50:23.8166190Z 655             Effect.map(Option.some),
2026-10-24T18:50:23.8166324Z                 ~~~~~~~~~~
2026-10-24T18:50:23.8166396Z
2026-10-24T18:50:23.8166676Z src/server/GitCafePullRequestProvider.ts:660:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8166958Z
2026-10-24T18:50:23.8167022Z 660                   : Effect.succeed(Option.none()),
2026-10-24T18:50:23.8167175Z                         ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8167340Z
2026-10-24T18:50:23.8167650Z 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-24T18:50:23.8167983Z
2026-10-24T18:50:23.8168071Z 673         const readPage = (rows: number, after: string | null) => {
2026-10-24T18:50:23.8168243Z                   ~~~~~~~~
2026-10-24T18:50:23.8168314Z
2026-10-24T18:50:23.8168661Z 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-24T18:50:23.8169043Z
2026-10-24T18:50:23.8169097Z 790             Effect.catch((error) =>
2026-10-24T18:50:23.8169232Z                 ~~~~~~~~~~~~
2026-10-24T18:50:23.8169308Z
2026-10-24T18:50:23.8169647Z 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-24T18:50:23.8170022Z
2026-10-24T18:50:23.8170082Z 868                   Effect.catch((error) =>
2026-10-24T18:50:23.8170286Z                       ~~~~~~~~~~~~
2026-10-24T18:50:23.8170365Z
2026-10-24T18:50:23.8170367Z
2026-10-24T18:50:23.8170427Z ~/packages/provider-muse$ tsc --noEmit
2026-10-24T18:50:23.8170849Z 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-24T18:50:23.8171216Z
2026-10-24T18:50:23.8171267Z 174       Effect.flatMap((snapshot) =>
2026-10-24T18:50:23.8171403Z           ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8171471Z
2026-10-24T18:50:23.8171714Z 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-24T18:50:23.8171990Z
2026-10-24T18:50:23.8172060Z 1507       }).pipe(Effect.catch(() => Effect.void));
2026-10-24T18:50:23.8172212Z                    ~~~~~~~~~~~~
2026-10-24T18:50:23.8172290Z
2026-10-24T18:50:23.8172551Z 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-24T18:50:23.8172857Z
2026-10-24T18:50:23.8172921Z 1507       }).pipe(Effect.catch(() => Effect.void));
2026-10-24T18:50:23.8173069Z                    ~~~~~~~~~~~~
2026-10-24T18:50:23.8173143Z
2026-10-24T18:50:23.8173495Z 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-24T18:50:23.8173888Z
2026-10-24T18:50:23.8173950Z 1588             Effect.catchCause((cause) =>
2026-10-24T18:50:23.8174095Z                  ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8174178Z
2026-10-24T18:50:23.8174180Z
2026-10-24T18:50:23.8174241Z ~/packages/provider-opencode$ tsc --noEmit
2026-10-24T18:50:23.8174660Z 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-24T18:50:23.8175076Z
2026-10-24T18:50:23.8175173Z 440     getCapabilities: () => Effect.succeed(PiProviderCapabilitiesV2),
2026-10-24T18:50:23.8175354Z         ~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8175423Z
2026-10-24T18:50:23.8175751Z 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-24T18:50:23.8176120Z
2026-10-24T18:50:23.8176239Z 441     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T18:50:23.8176453Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8176545Z
2026-10-24T18:50:23.8176794Z src/server/adapter.ts:1694:31 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T18:50:23.8177055Z
2026-10-24T18:50:23.8177125Z 1694                               Effect.map(Option.some),
2026-10-24T18:50:23.8177287Z                                    ~~~~~~~~~~
2026-10-24T18:50:23.8177382Z
2026-10-24T18:50:23.8177595Z src/server/adapter.ts:1697:29 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8177847Z
2026-10-24T18:50:23.8177916Z 1697                           : Effect.succeed(Option.none()),
2026-10-24T18:50:23.8178080Z                                  ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8178174Z
2026-10-24T18:50:23.8178418Z 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-24T18:50:23.8178704Z
2026-10-24T18:50:23.8178754Z 334       onSuccess: () =>
2026-10-24T18:50:23.8178916Z           ~~~~~~~~~
2026-10-24T18:50:23.8178981Z
2026-10-24T18:50:23.8179191Z src/server/rpc.ts:342:17 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T18:50:23.8179437Z
2026-10-24T18:50:23.8179494Z 342                 Effect.map(Option.some),
2026-10-24T18:50:23.8179641Z                     ~~~~~~~~~~
2026-10-24T18:50:23.8179717Z
2026-10-24T18:50:23.8179719Z
2026-10-24T18:50:23.8179776Z ~/packages/provider-cursor$ tsc --noEmit
2026-10-24T18:50:23.8180189Z 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-24T18:50:23.8180548Z
2026-10-24T18:50:23.8180645Z 284     getCapabilities: () => Effect.succeed(MuseProviderCapabilitiesV2),
2026-10-24T18:50:23.8180833Z         ~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8180904Z
2026-10-24T18:50:23.8181237Z 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-24T18:50:23.8181609Z
2026-10-24T18:50:23.8181731Z 285     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T18:50:23.8181940Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8182018Z
2026-10-24T18:50:23.8182284Z 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-24T18:50:23.8182593Z
2026-10-24T18:50:23.8182648Z 388             TimeoutError: (cause) =>
2026-10-24T18:50:23.8182786Z                 ~~~~~~~~~~~~
2026-10-24T18:50:23.8182861Z
2026-10-24T18:50:23.8183073Z src/server/adapter.ts:1366:35 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T18:50:23.8183331Z
2026-10-24T18:50:23.8183497Z 1366                   wake === held ? Effect.map(dispatch, Option.some) : Effect.succeed(Option.none()),
2026-10-24T18:50:23.8183718Z                                        ~~~~~~~~~~
2026-10-24T18:50:23.8183811Z
2026-10-24T18:50:23.8184025Z src/server/adapter.ts:1366:71 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8184274Z
2026-10-24T18:50:23.8184399Z 1366                   wake === held ? Effect.map(dispatch, Option.some) : Effect.succeed(Option.none()),
2026-10-24T18:50:23.8184632Z                                                                            ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8184747Z
2026-10-24T18:50:23.8184749Z
2026-10-24T18:50:23.8184818Z ~/packages/provider-acp-registry$ tsc --noEmit
2026-10-24T18:50:23.8185200Z 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-24T18:50:23.8185517Z
2026-10-24T18:50:23.8185576Z 147     return Effect.succeed(undefined);
2026-10-24T18:50:23.8185717Z                ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8185802Z
2026-10-24T18:50:23.8186195Z 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-24T18:50:23.8186642Z
2026-10-24T18:50:23.8186701Z 188       if (!recordable) return Effect.void;
2026-10-24T18:50:23.8186849Z                            ~~~~~~
2026-10-24T18:50:23.8186929Z
2026-10-24T18:50:23.8187313Z 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-24T18:50:23.8187774Z
2026-10-24T18:50:23.8187830Z 208         return Effect.void;
2026-10-24T18:50:23.8187949Z             ~~~~~~
2026-10-24T18:50:23.8188013Z
2026-10-24T18:50:23.8188394Z 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-24T18:50:23.8188818Z
2026-10-24T18:50:23.8188859Z 228       return fs
2026-10-24T18:50:23.8188970Z           ~~~~~~
2026-10-24T18:50:23.8189031Z
2026-10-24T18:50:23.8189329Z 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-24T18:50:23.8189672Z
2026-10-24T18:50:23.8189784Z 311   OpenCodeServerLedger.of({ track: () => Effect.succeed(Effect.void) }),
2026-10-24T18:50:23.8189978Z                                 ~~~~~
2026-10-24T18:50:23.8190064Z
2026-10-24T18:50:23.8190379Z 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-24T18:50:23.8190728Z
2026-10-24T18:50:23.8190776Z 169     withServer: (use) =>
2026-10-24T18:50:23.8190898Z         ~~~~~~~~~~
2026-10-24T18:50:23.8190964Z
2026-10-24T18:50:23.8191352Z 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-24T18:50:23.8191785Z
2026-10-24T18:50:23.8191906Z 103 const OPENCODE_TEST_SETTINGS = Schema.decodeUnknownSync(OpenCodeSettings)({});
2026-10-24T18:50:23.8192129Z                                           ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8192229Z
2026-10-24T18:50:23.8192589Z 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-24T18:50:23.8192944Z
2026-10-24T18:50:23.8193057Z 938     getCapabilities: () => Effect.succeed(OpenCodeProviderCapabilitiesV2),
2026-10-24T18:50:23.8193252Z         ~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8193323Z
2026-10-24T18:50:23.8193658Z 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-24T18:50:23.8194027Z
2026-10-24T18:50:23.8194151Z 939     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T18:50:23.8194363Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8194438Z
2026-10-24T18:50:23.8194731Z 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-24T18:50:23.8195057Z
2026-10-24T18:50:23.8195134Z 1011         const abortController = new AbortController();
2026-10-24T18:50:23.8195307Z                                      ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8195408Z
2026-10-24T18:50:23.8195730Z 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-24T18:50:23.8196086Z
2026-10-24T18:50:23.8196159Z 1088           if (failure) return yield* Effect.fail(failure);
2026-10-24T18:50:23.8196325Z                                    ~~~~~
2026-10-24T18:50:23.8196453Z
2026-10-24T18:50:23.8196760Z 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-24T18:50:23.8197073Z
2026-10-24T18:50:23.8197157Z 1584               Effect.catch(() => Effect.succeed(undefined)),
2026-10-24T18:50:23.8197318Z                    ~~~~~~~~~~~~
2026-10-24T18:50:23.8197396Z
2026-10-24T18:50:23.8197648Z 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-24T18:50:23.8197940Z
2026-10-24T18:50:23.8198012Z 1584               Effect.catch(() => Effect.succeed(undefined)),
2026-10-24T18:50:23.8198186Z                                       ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8198287Z
2026-10-24T18:50:23.8198572Z 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-24T18:50:23.8198901Z
2026-10-24T18:50:23.8198989Z 3194                 admissionAbortController: new AbortController(),
2026-10-24T18:50:23.8199172Z                                                ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8199277Z
2026-10-24T18:50:23.8199559Z 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-24T18:50:23.8199881Z
2026-10-24T18:50:23.8199973Z 3354               turn.admissionAbortController = new AbortController();
2026-10-24T18:50:23.8200162Z                                                    ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8200268Z
2026-10-24T18:50:23.8200559Z 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-24T18:50:23.8200884Z
2026-10-24T18:50:23.8200986Z 158     connect: ({ baseUrl, password }) => {
2026-10-24T18:50:23.8201134Z         ~~~~~~~
2026-10-24T18:50:23.8201193Z
2026-10-24T18:50:23.8201494Z 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-24T18:50:23.8201836Z
2026-10-24T18:50:23.8201892Z 160       withConnection: (use) =>
2026-10-24T18:50:23.8202021Z           ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8202092Z
2026-10-24T18:50:23.8202390Z 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-24T18:50:23.8202729Z
2026-10-24T18:50:23.8202785Z 175     withConnection: (use) =>
2026-10-24T18:50:23.8202914Z         ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8202978Z
2026-10-24T18:50:23.8203199Z src/server/v2/adapter.ts:1544:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8203457Z
2026-10-24T18:50:23.8203584Z 1544           wake.dropped ? Effect.succeed(Option.none()) : Effect.map(dispatch, Option.some),
2026-10-24T18:50:23.8203797Z                               ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8203888Z
2026-10-24T18:50:23.8204111Z src/server/v2/adapter.ts:1544:58 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T18:50:23.8204369Z
2026-10-24T18:50:23.8204494Z 1544           wake.dropped ? Effect.succeed(Option.none()) : Effect.map(dispatch, Option.some),
2026-10-24T18:50:23.8204718Z                                                               ~~~~~~~~~~
2026-10-24T18:50:23.8204864Z
2026-10-24T18:50:23.8205193Z 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-24T18:50:23.8205560Z
2026-10-24T18:50:23.8205670Z 4137     getCapabilities: () => Effect.succeed(OpenCode2ProviderCapabilities),
2026-10-24T18:50:23.8205863Z          ~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8205934Z
2026-10-24T18:50:23.8206272Z 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-24T18:50:23.8206677Z
2026-10-24T18:50:23.8206797Z 4138     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T18:50:23.8207017Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8207098Z
2026-10-24T18:50:23.8207102Z
2026-10-24T18:50:23.8207174Z ~/packages/source-control-definitions$ tsc --noEmit
2026-10-24T18:50:23.8207747Z 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-24T18:50:23.8208123Z
2026-10-24T18:50:23.8208191Z 31       read: (credentialSource, sinceMs, untilMs) =>
2026-10-24T18:50:23.8208344Z          ~~~~
2026-10-24T18:50:23.8208403Z
2026-10-24T18:50:23.8208686Z 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-24T18:50:23.8209007Z
2026-10-24T18:50:23.8209056Z 82     read: (apiKey) =>
2026-10-24T18:50:23.8209167Z        ~~~~
2026-10-24T18:50:23.8209225Z
2026-10-24T18:50:23.8209502Z 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-24T18:50:23.8209818Z
2026-10-24T18:50:23.8209923Z 360     Effect.catch(() =>
2026-10-24T18:50:23.8210041Z         ~~~~~~~~~~~~
2026-10-24T18:50:23.8210107Z
2026-10-24T18:50:23.8210421Z 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-24T18:50:23.8210778Z
2026-10-24T18:50:23.8210881Z 904     getCapabilities: () => Effect.succeed(CursorProviderCapabilitiesV2),
2026-10-24T18:50:23.8211064Z         ~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8211132Z
2026-10-24T18:50:23.8211459Z 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-24T18:50:23.8211830Z
2026-10-24T18:50:23.8211948Z 905     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T18:50:23.8212156Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8212233Z
2026-10-24T18:50:23.8212678Z 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-24T18:50:23.8213159Z
2026-10-24T18:50:23.8213212Z 55       Effect.runPromise(
2026-10-24T18:50:23.8213334Z          ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8213402Z
2026-10-24T18:50:23.8213666Z 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-24T18:50:23.8214014Z
2026-10-24T18:50:23.8214080Z 59               onNone: () => Effect.succeed(undefined),
2026-10-24T18:50:23.8214241Z                                ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8214337Z
2026-10-24T18:50:23.8214777Z 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-24T18:50:23.8215255Z
2026-10-24T18:50:23.8215303Z 69       Effect.runPromise(
2026-10-24T18:50:23.8215424Z          ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8215491Z
2026-10-24T18:50:23.8215925Z 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-24T18:50:23.8216396Z
2026-10-24T18:50:23.8216468Z 82     clear: () => Effect.runPromise(credentials.remove),
2026-10-24T18:50:23.8216678Z                     ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8216762Z
2026-10-24T18:50:23.8217091Z 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-24T18:50:23.8217456Z
2026-10-24T18:50:23.8217512Z 228           Effect.flatMap((snapshot) =>
2026-10-24T18:50:23.8217653Z               ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8217730Z
2026-10-24T18:50:23.8217920Z src/server/usageLimits.test.ts:74:5 - suggestion TS377017: This Effect.gen contains a single return statement. effect(unnecessaryEffectGen)
2026-10-24T18:50:23.8218155Z
2026-10-24T18:50:23.8218206Z  74     Effect.gen(function* () {
2026-10-24T18:50:23.8218330Z         ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8218459Z  75       yield* withNodeServices(
2026-10-24T18:50:23.8218589Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8218711Z ...
2026-10-24T18:50:23.8218842Z 115       );
2026-10-24T18:50:23.8218935Z     ~~~~~~~~
2026-10-24T18:50:23.8219030Z 116     }),
2026-10-24T18:50:23.8219123Z     ~~~~~~
2026-10-24T18:50:23.8219180Z
2026-10-24T18:50:23.8219182Z
2026-10-24T18:50:23.8219184Z
2026-10-24T18:50:23.8219241Z ~/packages/client-runtime$ tsc --noEmit
2026-10-24T18:50:23.8219587Z src/server/AcpRegistryRuntimeCoordinator.ts:154:52 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T18:50:23.8219874Z
2026-10-24T18:50:23.8220010Z 154         return yield* Effect.raceFirst(effect.pipe(Effect.map(Option.some)), foregroundStarted);
2026-10-24T18:50:23.8220241Z                                                        ~~~~~~~~~~
2026-10-24T18:50:23.8220343Z
2026-10-24T18:50:23.8220674Z 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-24T18:50:23.8221041Z
2026-10-24T18:50:23.8221092Z 1301         Effect.catch((error) =>
2026-10-24T18:50:23.8221217Z              ~~~~~~~~~~~~
2026-10-24T18:50:23.8221287Z
2026-10-24T18:50:23.8221573Z 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-24T18:50:23.8221899Z
2026-10-24T18:50:23.8221953Z 146             Option.isSome(result)
2026-10-24T18:50:23.8222084Z                 ~~~~~~~~~~~~~
2026-10-24T18:50:23.8222161Z
2026-10-24T18:50:23.8222410Z 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-24T18:50:23.8222740Z
2026-10-24T18:50:23.8222840Z 640       enrichSnapshot: ({ snapshot, getSnapshot, publishSnapshot }) => {
2026-10-24T18:50:23.8223023Z           ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8223095Z
2026-10-24T18:50:23.8223302Z src/server/driver.ts:650:51 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T18:50:23.8223552Z
2026-10-24T18:50:23.8223650Z 650             : enrichProviderCached(snapshot).pipe(Effect.map(Option.some))
2026-10-24T18:50:23.8223855Z                                                       ~~~~~~~~~~
2026-10-24T18:50:23.8223953Z
2026-10-24T18:50:23.8223955Z
2026-10-24T18:50:23.8224002Z Result (22 files):
2026-10-24T18:50:23.8224106Z - 0 errors
2026-10-24T18:50:23.8224208Z - 0 warnings
2026-10-24T18:50:23.8224305Z - 0 hints
2026-10-24T18:50:23.8224362Z
2026-10-24T18:50:23.8224364Z
2026-10-24T18:50:23.8224592Z src/authorization/remote.test.ts:232:25 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8224861Z
2026-10-24T18:50:23.8224968Z 232               identity: Effect.succeed(Option.some({ accountId: "user_connect" })),
2026-10-24T18:50:23.8225164Z                             ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8225252Z
2026-10-24T18:50:23.8225473Z src/authorization/remote.test.ts:237:17 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8225737Z
2026-10-24T18:50:23.8225811Z 237             id: Effect.succeed(Option.some("device-1")),
2026-10-24T18:50:23.8225966Z                     ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8226047Z
2026-10-24T18:50:23.8226377Z 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-24T18:50:23.8226781Z
2026-10-24T18:50:23.8226831Z 553     authorizeDpop: (input) =>
2026-10-24T18:50:23.8226956Z         ~~~~~~~~~~~~~
2026-10-24T18:50:23.8227023Z
2026-10-24T18:50:23.8227385Z 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-24T18:50:23.8227754Z
2026-10-24T18:50:23.8228008Z 555     authorizeDpopHttp: (input) =>
2026-10-24T18:50:23.8228140Z         ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8228211Z
2026-10-24T18:50:23.8228517Z 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-24T18:50:23.8228862Z
2026-10-24T18:50:23.8228916Z 298     registerPairing: (input) =>
2026-10-24T18:50:23.8229046Z         ~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8229116Z
2026-10-24T18:50:23.8229415Z 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-24T18:50:23.8229750Z
2026-10-24T18:50:23.8229802Z 304     registerSsh: (input) =>
2026-10-24T18:50:23.8229925Z         ~~~~~~~~~~~
2026-10-24T18:50:23.8229986Z
2026-10-24T18:50:23.8230289Z 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-24T18:50:23.8230629Z
2026-10-24T18:50:23.8230684Z 309     updateBearer: (input) =>
2026-10-24T18:50:23.8230812Z         ~~~~~~~~~~~~
2026-10-24T18:50:23.8230879Z
2026-10-24T18:50:23.8231213Z src/connection/pullRequestRoutingPermissions.ts:138:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestRoutingPermissions.get")((entry) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8231635Z
2026-10-24T18:50:23.8231682Z 138       get: (entry) =>
2026-10-24T18:50:23.8231797Z           ~~~
2026-10-24T18:50:23.8231853Z
2026-10-24T18:50:23.8232205Z src/connection/pullRequestRoutingPermissions.ts:143:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestRoutingPermissions.set")((entry, permission) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8232593Z
2026-10-24T18:50:23.8232649Z 143       set: (entry, permission) => {
2026-10-24T18:50:23.8232779Z           ~~~
2026-10-24T18:50:23.8232837Z
2026-10-24T18:50:23.8233190Z src/connection/pullRequestRoutingPermissions.ts:159:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestRoutingPermissions.forget")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8233583Z
2026-10-24T18:50:23.8233635Z 159       forget: (environmentId) =>
2026-10-24T18:50:23.8233764Z           ~~~~~~
2026-10-24T18:50:23.8233823Z
2026-10-24T18:50:23.8234094Z 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-24T18:50:23.8234401Z
2026-10-24T18:50:23.8234458Z 1392             ? Effect.succeed(undefined)
2026-10-24T18:50:23.8234602Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8234692Z
2026-10-24T18:50:23.8234954Z 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-24T18:50:23.8235259Z
2026-10-24T18:50:23.8235312Z 1476             ? Effect.succeed(undefined)
2026-10-24T18:50:23.8235455Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8235540Z
2026-10-24T18:50:23.8235804Z 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-24T18:50:23.8236141Z
2026-10-24T18:50:23.8236209Z 1489                     : Effect.succeed(undefined),
2026-10-24T18:50:23.8236366Z                            ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8236461Z
2026-10-24T18:50:23.8236739Z src/platform/orchestrationCache.test.ts:104:15 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T18:50:23.8237019Z
2026-10-24T18:50:23.8237076Z 104       }).pipe(Effect.map(Option.some));
2026-10-24T18:50:23.8237223Z                   ~~~~~~~~~~
2026-10-24T18:50:23.8237299Z
2026-10-24T18:50:23.8237665Z 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-24T18:50:23.8238071Z
2026-10-24T18:50:23.8238164Z 72       load: (prepared: PreparedConnection, threadId: ThreadId) => {
2026-10-24T18:50:23.8238337Z          ~~~~
2026-10-24T18:50:23.8238398Z
2026-10-24T18:50:23.8238685Z 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-24T18:50:23.8239010Z
2026-10-24T18:50:23.8239110Z 56             Effect.catch(() => Effect.succeed(Option.none<AuthSessionState>())),
2026-10-24T18:50:23.8239296Z                ~~~~~~~~~~~~
2026-10-24T18:50:23.8239370Z
2026-10-24T18:50:23.8239703Z 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-24T18:50:23.8240112Z
2026-10-24T18:50:23.8240168Z 62             return yield* Effect.fail(
2026-10-24T18:50:23.8240302Z                       ~~~~~
2026-10-24T18:50:23.8240376Z
2026-10-24T18:50:23.8240670Z 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-24T18:50:23.8240997Z
2026-10-24T18:50:23.8241093Z 57     execute: (target: OutdatedServerUpdateTarget, atomRegistry) => {
2026-10-24T18:50:23.8241274Z        ~~~~~~~
2026-10-24T18:50:23.8241333Z
2026-10-24T18:50:23.8241643Z 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-24T18:50:23.8241995Z
2026-10-24T18:50:23.8242051Z 90       load: (prepared, input) =>
2026-10-24T18:50:23.8242177Z          ~~~~
2026-10-24T18:50:23.8242237Z
2026-10-24T18:50:23.8242641Z 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-24T18:50:23.8243074Z
2026-10-24T18:50:23.8243178Z 34       return yield* Schema.decodeUnknownEffect(codec)(stored.value).pipe(
2026-10-24T18:50:23.8243372Z                               ~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8243467Z
2026-10-24T18:50:23.8243693Z src/state/queryPersistence.ts:35:9 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T18:50:23.8243951Z
2026-10-24T18:50:23.8244007Z 35         Effect.map(Option.some),
2026-10-24T18:50:23.8244137Z            ~~~~~~~~~~
2026-10-24T18:50:23.8244202Z
2026-10-24T18:50:23.8244465Z 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-24T18:50:23.8244768Z
2026-10-24T18:50:23.8244869Z 680     execute: (target, atomRegistry) => {
2026-10-24T18:50:23.8245006Z         ~~~~~~~
2026-10-24T18:50:23.8245067Z
2026-10-24T18:50:23.8245390Z 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-24T18:50:23.8245750Z
2026-10-24T18:50:23.8245808Z 1125           Effect.flatMap((summary) =>
2026-10-24T18:50:23.8245950Z                ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8246025Z
2026-10-24T18:50:23.8246247Z src/state/shell-sync.test.ts:90:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8246529Z
2026-10-24T18:50:23.8246604Z 90         loadShell: () => Effect.succeed(Option.none()),
2026-10-24T18:50:23.8246764Z                             ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8246851Z
2026-10-24T18:50:23.8247071Z src/state/shell-sync.test.ts:96:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8247376Z
2026-10-24T18:50:23.8247452Z 96         loadThread: () => Effect.succeed(Option.none()),
2026-10-24T18:50:23.8247616Z                              ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8247706Z
2026-10-24T18:50:23.8247923Z src/state/shell-sync.test.ts:99:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8248178Z
2026-10-24T18:50:23.8248261Z 99         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-24T18:50:23.8248431Z                                    ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8248523Z
2026-10-24T18:50:23.8248799Z src/state/shell-sync.test.ts:101:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8249052Z
2026-10-24T18:50:23.8249133Z 101         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-24T18:50:23.8249303Z                                ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8249392Z
2026-10-24T18:50:23.8249612Z src/state/shell-sync.test.ts:108:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8249868Z
2026-10-24T18:50:23.8249937Z 108         load: () => Effect.succeed(Option.none()),
2026-10-24T18:50:23.8250092Z                         ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8250177Z
2026-10-24T18:50:23.8250394Z src/state/shell-sync.test.ts:229:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8250652Z
2026-10-24T18:50:23.8250724Z 229         loadShell: () => Effect.succeed(Option.none()),
2026-10-24T18:50:23.8250887Z                              ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8250972Z
2026-10-24T18:50:23.8251188Z src/state/shell-sync.test.ts:238:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8251443Z
2026-10-24T18:50:23.8251519Z 238         loadThread: () => Effect.succeed(Option.none()),
2026-10-24T18:50:23.8251683Z                               ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8251773Z
2026-10-24T18:50:23.8251989Z src/state/shell-sync.test.ts:241:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8252245Z
2026-10-24T18:50:23.8252328Z 241         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-24T18:50:23.8252504Z                                     ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8252596Z
2026-10-24T18:50:23.8252813Z src/state/shell-sync.test.ts:243:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8253069Z
2026-10-24T18:50:23.8253191Z 243         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-24T18:50:23.8253356Z                                ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8253446Z
2026-10-24T18:50:23.8253662Z src/state/shell-sync.test.ts:250:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8253922Z
2026-10-24T18:50:23.8253987Z 250         load: () => Effect.succeed(Option.none()),
2026-10-24T18:50:23.8254142Z                         ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8254228Z
2026-10-24T18:50:23.8254443Z src/state/shell-sync.test.ts:349:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8254699Z
2026-10-24T18:50:23.8254773Z 349         loadShell: () => Effect.succeed(Option.none()),
2026-10-24T18:50:23.8254933Z                              ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8255022Z
2026-10-24T18:50:23.8255242Z src/state/shell-sync.test.ts:355:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8255501Z
2026-10-24T18:50:23.8255572Z 355         loadThread: () => Effect.succeed(Option.none()),
2026-10-24T18:50:23.8255735Z                               ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8255823Z
2026-10-24T18:50:23.8256040Z src/state/shell-sync.test.ts:358:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8256298Z
2026-10-24T18:50:23.8261513Z 358         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-24T18:50:23.8261696Z                                     ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8261699Z
2026-10-24T18:50:23.8261996Z src/state/shell-sync.test.ts:360:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8261998Z
2026-10-24T18:50:23.8262073Z 360         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-24T18:50:23.8262123Z                                ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8262125Z
2026-10-24T18:50:23.8262338Z src/state/shell-sync.test.ts:367:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8262340Z
2026-10-24T18:50:23.8262404Z 367         load: () => Effect.succeed(Option.none()),
2026-10-24T18:50:23.8262453Z                         ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8262455Z
2026-10-24T18:50:23.8262667Z src/state/shell-sync.test.ts:446:26 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8262669Z
2026-10-24T18:50:23.8262760Z 446         loadShell: () => Effect.succeed(Option.some(cachedSnapshot)),
2026-10-24T18:50:23.8262807Z                              ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8262809Z
2026-10-24T18:50:23.8263021Z src/state/shell-sync.test.ts:448:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8263024Z
2026-10-24T18:50:23.8263095Z 448         loadThread: () => Effect.succeed(Option.none()),
2026-10-24T18:50:23.8263142Z                               ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8263144Z
2026-10-24T18:50:23.8263353Z src/state/shell-sync.test.ts:451:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8263356Z
2026-10-24T18:50:23.8263433Z 451         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-24T18:50:23.8263484Z                                     ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8263488Z
2026-10-24T18:50:23.8263697Z src/state/shell-sync.test.ts:453:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8263740Z
2026-10-24T18:50:23.8263810Z 453         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-24T18:50:23.8263858Z                                ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8263860Z
2026-10-24T18:50:23.8264071Z src/state/shell-sync.test.ts:460:21 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8264073Z
2026-10-24T18:50:23.8264149Z 460         load: () => Effect.succeed(Option.some(httpSnapshot)),
2026-10-24T18:50:23.8264195Z                         ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8264197Z
2026-10-24T18:50:23.8264494Z 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-24T18:50:23.8264498Z
2026-10-24T18:50:23.8264559Z 98       load: (prepared: PreparedConnection) =>
2026-10-24T18:50:23.8264600Z          ~~~~
2026-10-24T18:50:23.8264604Z
2026-10-24T18:50:23.8264962Z src/state/threadHistoryController.ts:52:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadHistoryController.register")((environmentId, threadId, handler) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8264964Z
2026-10-24T18:50:23.8265036Z 52       register: (environmentId, threadId, handler) =>
2026-10-24T18:50:23.8265078Z          ~~~~~~~~
2026-10-24T18:50:23.8265080Z
2026-10-24T18:50:23.8265403Z src/state/threadHistoryController.ts:64:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadHistoryController.unregister")((registration) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8265406Z
2026-10-24T18:50:23.8265501Z 64       unregister: (registration) =>
2026-10-24T18:50:23.8265544Z          ~~~~~~~~~~
2026-10-24T18:50:23.8265547Z
2026-10-24T18:50:23.8265914Z src/state/threadHistoryController.ts:79:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadHistoryController.loadEarlier")((environmentId, threadId, throughEntryId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8265917Z
2026-10-24T18:50:23.8265998Z 79       loadEarlier: (environmentId, threadId, throughEntryId) =>
2026-10-24T18:50:23.8266040Z          ~~~~~~~~~~~
2026-10-24T18:50:23.8266042Z
2026-10-24T18:50:23.8266401Z src/state/threadHistoryController.ts:89:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadHistoryController.reconcilePendingWork")((environmentId, threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8266403Z
2026-10-24T18:50:23.8266479Z 89       reconcilePendingWork: (environmentId, threadId) =>
2026-10-24T18:50:23.8266562Z          ~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8266565Z
2026-10-24T18:50:23.8266792Z src/state/threads-sync.test.ts:1458:29 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8266795Z
2026-10-24T18:50:23.8266878Z 1458             : { loadCached: Effect.succeed(Option.some(saved!)) },
2026-10-24T18:50:23.8266932Z                                  ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8266934Z
2026-10-24T18:50:23.8267192Z 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-24T18:50:23.8267194Z
2026-10-24T18:50:23.8267282Z 447       execute: (input: RunVcsStackedActionInput, registry) => {
2026-10-24T18:50:23.8267322Z           ~~~~~~~
2026-10-24T18:50:23.8267327Z
2026-10-24T18:50:23.8267329Z
2026-10-24T18:50:23.8267380Z ~/apps/mobile$ tsc --noEmit
2026-10-24T18:50:23.8267434Z ~/infra/relay$ tsc --noEmit
2026-10-24T18:50:23.8267483Z ~/apps/web$ tsc --noEmit
2026-10-24T18:50:23.8267532Z ~/apps/desktop$ tsc --noEmit
2026-10-24T18:50:23.8267881Z 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-24T18:50:23.8267885Z
2026-10-24T18:50:23.8267986Z 389     complete: (response) => Effect.sync(() => broker.complete(response)),
2026-10-24T18:50:23.8268029Z         ~~~~~~~~
2026-10-24T18:50:23.8268032Z
2026-10-24T18:50:23.8268252Z src/app/DesktopClerk.test.ts:300:27 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8268254Z
2026-10-24T18:50:23.8268336Z 300       currentMainOrFirst: Effect.succeed(Option.some(window)),
2026-10-24T18:50:23.8268385Z                               ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8268390Z
2026-10-24T18:50:23.8268663Z src/app/DesktopObservability.ts:461:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("onSome")(function*(logFile) { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8268666Z
2026-10-24T18:50:23.8268717Z 461     onSome: (logFile) =>
2026-10-24T18:50:23.8268760Z         ~~~~~~
2026-10-24T18:50:23.8268762Z
2026-10-24T18:50:23.8269080Z src/app/DesktopObservability.ts:591:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBackendOutputLogFactory.forInstance")((id) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8269082Z
2026-10-24T18:50:23.8269141Z 591       forInstance: (id) => makeForId(id),
2026-10-24T18:50:23.8269185Z           ~~~~~~~~~~~
2026-10-24T18:50:23.8269187Z
2026-10-24T18:50:23.8269409Z src/app/DesktopWebLinks.test.ts:29:31 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8269460Z
2026-10-24T18:50:23.8269546Z 29           currentMainOrFirst: Effect.succeed(Option.some(window)),
2026-10-24T18:50:23.8269599Z                                  ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8269601Z
2026-10-24T18:50:23.8269876Z 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-24T18:50:23.8269879Z
2026-10-24T18:50:23.8269925Z 72     receive: (url) =>
2026-10-24T18:50:23.8269968Z        ~~~~~~~
2026-10-24T18:50:23.8269970Z
2026-10-24T18:50:23.8270259Z 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-24T18:50:23.8270264Z
2026-10-24T18:50:23.8270316Z 77     setRendererReady: (ready) =>
2026-10-24T18:50:23.8270363Z        ~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8270365Z
2026-10-24T18:50:23.8270649Z 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-24T18:50:23.8270652Z
2026-10-24T18:50:23.8270699Z 1062       onSome: (run) =>
2026-10-24T18:50:23.8270739Z            ~~~~~~
2026-10-24T18:50:23.8270741Z
2026-10-24T18:50:23.8271024Z 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-24T18:50:23.8271027Z
2026-10-24T18:50:23.8271071Z 307       get: (id) =>
2026-10-24T18:50:23.8271113Z           ~~~
2026-10-24T18:50:23.8271115Z
2026-10-24T18:50:23.8271397Z 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-24T18:50:23.8271402Z
2026-10-24T18:50:23.8271493Z 342         get: (id) => Effect.succeed(Option.fromNullishOr(byId.get(id))),
2026-10-24T18:50:23.8271574Z             ~~~
2026-10-24T18:50:23.8271577Z
2026-10-24T18:50:23.8271864Z 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-24T18:50:23.8271866Z
2026-10-24T18:50:23.8271993Z 345         register: () => Effect.die("DesktopBackendPool.layerTest does not support register"),
2026-10-24T18:50:23.8272034Z             ~~~~~~~~
2026-10-24T18:50:23.8272039Z
2026-10-24T18:50:23.8272328Z 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-24T18:50:23.8272333Z
2026-10-24T18:50:23.8272464Z 346         unregister: () => Effect.die("DesktopBackendPool.layerTest does not support unregister"),
2026-10-24T18:50:23.8272507Z             ~~~~~~~~~~
2026-10-24T18:50:23.8272511Z
2026-10-24T18:50:23.8272773Z 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-24T18:50:23.8272775Z
2026-10-24T18:50:23.8272821Z 145   exit: (code) =>
2026-10-24T18:50:23.8272861Z       ~~~~
2026-10-24T18:50:23.8272863Z
2026-10-24T18:50:23.8273138Z 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-24T18:50:23.8273141Z
2026-10-24T18:50:23.8273190Z 149   relaunch: (options) =>
2026-10-24T18:50:23.8273232Z       ~~~~~~~~
2026-10-24T18:50:23.8273234Z
2026-10-24T18:50:23.8273548Z 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-24T18:50:23.8273552Z
2026-10-24T18:50:23.8273605Z 153   setPath: (name, path) =>
2026-10-24T18:50:23.8273647Z       ~~~~~~~
2026-10-24T18:50:23.8273649Z
2026-10-24T18:50:23.8273915Z 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-24T18:50:23.8273917Z
2026-10-24T18:50:23.8273964Z 157   setName: (name) =>
2026-10-24T18:50:23.8274003Z       ~~~~~~~
2026-10-24T18:50:23.8274005Z
2026-10-24T18:50:23.8274306Z 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-24T18:50:23.8274311Z
2026-10-24T18:50:23.8274369Z 161   setAboutPanelOptions: (options) =>
2026-10-24T18:50:23.8274414Z       ~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8274417Z
2026-10-24T18:50:23.8274698Z 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-24T18:50:23.8274703Z
2026-10-24T18:50:23.8274754Z 165   setAppUserModelId: (id) =>
2026-10-24T18:50:23.8274800Z       ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8274802Z
2026-10-24T18:50:23.8275131Z 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-24T18:50:23.8275133Z
2026-10-24T18:50:23.8275216Z 170   setAsDefaultProtocolClient: (protocol, path, args) =>
2026-10-24T18:50:23.8275260Z       ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8275264Z
2026-10-24T18:50:23.8275592Z 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-24T18:50:23.8275595Z
2026-10-24T18:50:23.8275652Z 177   setDesktopName: (desktopName) =>
2026-10-24T18:50:23.8275697Z       ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8275700Z
2026-10-24T18:50:23.8275979Z 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-24T18:50:23.8275982Z
2026-10-24T18:50:23.8276030Z 184   setDockIcon: (iconPath) =>
2026-10-24T18:50:23.8276074Z       ~~~~~~~~~~~
2026-10-24T18:50:23.8276076Z
2026-10-24T18:50:23.8276398Z 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-24T18:50:23.8276403Z
2026-10-24T18:50:23.8276480Z 188   appendCommandLineSwitch: (switchName, value) =>
2026-10-24T18:50:23.8276538Z       ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8276541Z
2026-10-24T18:50:23.8276872Z 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-24T18:50:23.8276875Z
2026-10-24T18:50:23.8276936Z 196   onBeforeQuitForUpdate: (listener) =>
2026-10-24T18:50:23.8276981Z       ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8276984Z
2026-10-24T18:50:23.8277288Z 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-24T18:50:23.8277334Z
2026-10-24T18:50:23.8277396Z 206   removeCommandLineSwitch: (switchName) =>
2026-10-24T18:50:23.8277439Z       ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8277441Z
2026-10-24T18:50:23.8277748Z 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-24T18:50:23.8277750Z
2026-10-24T18:50:23.8277806Z 169   showMessageBox: (options, owner) =>
2026-10-24T18:50:23.8277850Z       ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8277852Z
2026-10-24T18:50:23.8278152Z 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-24T18:50:23.8278157Z
2026-10-24T18:50:23.8278210Z 185   showErrorBox: (title, content) =>
2026-10-24T18:50:23.8278254Z       ~~~~~~~~~~~~
2026-10-24T18:50:23.8278258Z
2026-10-24T18:50:23.8278559Z 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-24T18:50:23.8278561Z
2026-10-24T18:50:23.8278615Z 193     setApplicationMenu: (template) =>
2026-10-24T18:50:23.8278658Z         ~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8278660Z
2026-10-24T18:50:23.8278947Z 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-24T18:50:23.8278949Z
2026-10-24T18:50:23.8279005Z 207     popupTemplate: (input) =>
2026-10-24T18:50:23.8279050Z         ~~~~~~~~~~~~~
2026-10-24T18:50:23.8279052Z
2026-10-24T18:50:23.8279339Z 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-24T18:50:23.8279343Z
2026-10-24T18:50:23.8279395Z 225     showContextMenu: (input) =>
2026-10-24T18:50:23.8279479Z         ~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8279482Z
2026-10-24T18:50:23.8279831Z 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-24T18:50:23.8279834Z
2026-10-24T18:50:23.8279904Z 82   getSystemIdleState: (idleThresholdSeconds) =>
2026-10-24T18:50:23.8279949Z      ~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8279951Z
2026-10-24T18:50:23.8280259Z 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-24T18:50:23.8280264Z
2026-10-24T18:50:23.8280316Z 77     encryptString: (value) =>
2026-10-24T18:50:23.8280361Z        ~~~~~~~~~~~~~
2026-10-24T18:50:23.8280363Z
2026-10-24T18:50:23.8280675Z 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-24T18:50:23.8280677Z
2026-10-24T18:50:23.8280728Z 82     decryptString: (value) =>
2026-10-24T18:50:23.8280768Z        ~~~~~~~~~~~~~
2026-10-24T18:50:23.8280770Z
2026-10-24T18:50:23.8281057Z 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-24T18:50:23.8281059Z
2026-10-24T18:50:23.8281109Z 68   openExternal: (rawUrl) =>
2026-10-24T18:50:23.8281151Z      ~~~~~~~~~~~~
2026-10-24T18:50:23.8281153Z
2026-10-24T18:50:23.8281444Z 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-24T18:50:23.8281490Z
2026-10-24T18:50:23.8281544Z 79   openSystemSettings: (pane) =>
2026-10-24T18:50:23.8281588Z      ~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8281590Z
2026-10-24T18:50:23.8281869Z 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-24T18:50:23.8281871Z
2026-10-24T18:50:23.8281919Z 86   copyText: (text) =>
2026-10-24T18:50:23.8281957Z      ~~~~~~~~
2026-10-24T18:50:23.8281959Z
2026-10-24T18:50:23.8282238Z 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-24T18:50:23.8282242Z
2026-10-24T18:50:23.8282290Z 34   setSource: (theme) =>
2026-10-24T18:50:23.8282331Z      ~~~~~~~~~
2026-10-24T18:50:23.8282334Z
2026-10-24T18:50:23.8282618Z 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-24T18:50:23.8282621Z
2026-10-24T18:50:23.8282669Z 41   onUpdated: (listener) =>
2026-10-24T18:50:23.8282713Z      ~~~~~~~~~
2026-10-24T18:50:23.8282715Z
2026-10-24T18:50:23.8283010Z 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-24T18:50:23.8283012Z
2026-10-24T18:50:23.8283063Z 85   setFeedURL: (options) =>
2026-10-24T18:50:23.8283102Z      ~~~~~~~~~~
2026-10-24T18:50:23.8283104Z
2026-10-24T18:50:23.8283404Z 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-24T18:50:23.8283408Z
2026-10-24T18:50:23.8283499Z 90   setAutoDownload: (value) =>
2026-10-24T18:50:23.8283542Z      ~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8283544Z
2026-10-24T18:50:23.8283856Z 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-24T18:50:23.8283859Z
2026-10-24T18:50:23.8283915Z 95   setAutoInstallOnAppQuit: (value) =>
2026-10-24T18:50:23.8283961Z      ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8283963Z
2026-10-24T18:50:23.8284254Z 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-24T18:50:23.8284258Z
2026-10-24T18:50:23.8284308Z 100   setChannel: (channel) =>
2026-10-24T18:50:23.8284349Z       ~~~~~~~~~~
2026-10-24T18:50:23.8284351Z
2026-10-24T18:50:23.8284652Z 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-24T18:50:23.8284654Z
2026-10-24T18:50:23.8284709Z 105   setAllowPrerelease: (value) =>
2026-10-24T18:50:23.8284751Z       ~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8284753Z
2026-10-24T18:50:23.8285055Z 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-24T18:50:23.8285057Z
2026-10-24T18:50:23.8285110Z 111   setAllowDowngrade: (value) =>
2026-10-24T18:50:23.8285150Z       ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8285202Z
2026-10-24T18:50:23.8285501Z 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-24T18:50:23.8285503Z
2026-10-24T18:50:23.8285555Z 116   setFullChangelog: (value) =>
2026-10-24T18:50:23.8285598Z       ~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8285601Z
2026-10-24T18:50:23.8285926Z 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-24T18:50:23.8285931Z
2026-10-24T18:50:23.8285996Z 121   setDisableDifferentialDownload: (value) =>
2026-10-24T18:50:23.8286045Z       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8286048Z
2026-10-24T18:50:23.8286335Z 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-24T18:50:23.8286339Z
2026-10-24T18:50:23.8286413Z 140   quitAndInstall: ({ isSilent, isForceRunAfter }) =>
2026-10-24T18:50:23.8286453Z       ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8286455Z
2026-10-24T18:50:23.8286776Z 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-24T18:50:23.8286779Z
2026-10-24T18:50:23.8286831Z 154   on: (eventName, listener) => {
2026-10-24T18:50:23.8286872Z       ~~
2026-10-24T18:50:23.8286875Z
2026-10-24T18:50:23.8287153Z 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-24T18:50:23.8287155Z
2026-10-24T18:50:23.8287204Z 211     create: (options) => {
2026-10-24T18:50:23.8287313Z         ~~~~~~
2026-10-24T18:50:23.8287316Z
2026-10-24T18:50:23.8287651Z 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-24T18:50:23.8287653Z
2026-10-24T18:50:23.8287748Z 243     setMain: (window) => Ref.set(mainWindowRef, Option.some(window)),
2026-10-24T18:50:23.8287791Z         ~~~~~~~
2026-10-24T18:50:23.8287794Z
2026-10-24T18:50:23.8288076Z 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-24T18:50:23.8288078Z
2026-10-24T18:50:23.8288127Z 244     clearMain: (window) =>
2026-10-24T18:50:23.8288169Z         ~~~~~~~~~
2026-10-24T18:50:23.8288171Z
2026-10-24T18:50:23.8288462Z 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-24T18:50:23.8288468Z
2026-10-24T18:50:23.8288521Z 254     prepareReveal: (window) =>
2026-10-24T18:50:23.8288564Z         ~~~~~~~~~~~~~
2026-10-24T18:50:23.8288566Z
2026-10-24T18:50:23.8288842Z 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-24T18:50:23.8288844Z
2026-10-24T18:50:23.8288892Z 264     reveal: (window) =>
2026-10-24T18:50:23.8288935Z         ~~~~~~
2026-10-24T18:50:23.8288937Z
2026-10-24T18:50:23.8289279Z 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-24T18:50:23.8289335Z
2026-10-24T18:50:23.8289404Z 526     setMainWindowBounds: (bounds, isMaximized) =>
2026-10-24T18:50:23.8289449Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8289453Z
2026-10-24T18:50:23.8289775Z 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-24T18:50:23.8289778Z
2026-10-24T18:50:23.8289834Z 538     setServerExposureMode: (mode) =>
2026-10-24T18:50:23.8289879Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8289881Z
2026-10-24T18:50:23.8290192Z 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-24T18:50:23.8290194Z
2026-10-24T18:50:23.8290250Z 542     setTailscaleServe: (input) =>
2026-10-24T18:50:23.8290298Z         ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8290301Z
2026-10-24T18:50:23.8290617Z 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-24T18:50:23.8290619Z
2026-10-24T18:50:23.8290671Z 546     setUpdateChannel: (channel) =>
2026-10-24T18:50:23.8290715Z         ~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8290717Z
2026-10-24T18:50:23.8291038Z 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-24T18:50:23.8291040Z
2026-10-24T18:50:23.8291097Z 550     setWslBackendEnabled: (enabled) =>
2026-10-24T18:50:23.8291142Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8291147Z
2026-10-24T18:50:23.8291451Z 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-24T18:50:23.8291491Z
2026-10-24T18:50:23.8291544Z 554     setWslDistro: (distro) =>
2026-10-24T18:50:23.8291585Z         ~~~~~~~~~~~~
2026-10-24T18:50:23.8291587Z
2026-10-24T18:50:23.8291890Z 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-24T18:50:23.8291892Z
2026-10-24T18:50:23.8291941Z 560     setWslOnly: (enabled) =>
2026-10-24T18:50:23.8291981Z         ~~~~~~~~~~
2026-10-24T18:50:23.8291983Z
2026-10-24T18:50:23.8292315Z 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-24T18:50:23.8292320Z
2026-10-24T18:50:23.8292384Z 564     setLocalEnvironmentEnabled: (enabled) =>
2026-10-24T18:50:23.8292432Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8292434Z
2026-10-24T18:50:23.8292771Z 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-24T18:50:23.8292776Z
2026-10-24T18:50:23.8292846Z 599         setMainWindowBounds: (bounds, isMaximized) =>
2026-10-24T18:50:23.8292894Z             ~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8292896Z
2026-10-24T18:50:23.8293218Z 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-24T18:50:23.8293262Z
2026-10-24T18:50:23.8293322Z 601         setServerExposureMode: (mode) =>
2026-10-24T18:50:23.8293367Z             ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8293369Z
2026-10-24T18:50:23.8293691Z 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-24T18:50:23.8293693Z
2026-10-24T18:50:23.8293820Z 603         setTailscaleServe: (input) => update((settings) => setTailscaleServe(settings, input)),
2026-10-24T18:50:23.8293864Z             ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8293866Z
2026-10-24T18:50:23.8294186Z 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-24T18:50:23.8294189Z
2026-10-24T18:50:23.8294312Z 604         setUpdateChannel: (channel) => update((settings) => setUpdateChannel(settings, channel)),
2026-10-24T18:50:23.8294359Z             ~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8294361Z
2026-10-24T18:50:23.8294683Z 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-24T18:50:23.8294685Z
2026-10-24T18:50:23.8294742Z 605         setWslBackendEnabled: (enabled) =>
2026-10-24T18:50:23.8294787Z             ~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8294790Z
2026-10-24T18:50:23.8295092Z 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-24T18:50:23.8295096Z
2026-10-24T18:50:23.8295209Z 607         setWslDistro: (distro) => update((settings) => setWslDistro(settings, distro)),
2026-10-24T18:50:23.8295255Z             ~~~~~~~~~~~~
2026-10-24T18:50:23.8295257Z
2026-10-24T18:50:23.8295600Z 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-24T18:50:23.8295603Z
2026-10-24T18:50:23.8295710Z 608         setWslOnly: (enabled) => update((settings) => setWslOnly(settings, enabled)),
2026-10-24T18:50:23.8295751Z             ~~~~~~~~~~
2026-10-24T18:50:23.8295753Z
2026-10-24T18:50:23.8296091Z 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-24T18:50:23.8296093Z
2026-10-24T18:50:23.8296159Z 609         setLocalEnvironmentEnabled: (enabled) =>
2026-10-24T18:50:23.8296205Z             ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8296209Z
2026-10-24T18:50:23.8296546Z 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-24T18:50:23.8296549Z
2026-10-24T18:50:23.8296593Z 197     set: (settings) =>
2026-10-24T18:50:23.8296633Z         ~~~
2026-10-24T18:50:23.8296636Z
2026-10-24T18:50:23.8296937Z 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-24T18:50:23.8296940Z
2026-10-24T18:50:23.8297029Z 231         set: (settings) => Ref.set(settingsRef, Option.some(settings)),
2026-10-24T18:50:23.8297069Z             ~~~
2026-10-24T18:50:23.8297071Z
2026-10-24T18:50:23.8297400Z 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-24T18:50:23.8297443Z
2026-10-24T18:50:23.8297517Z 1729     setAnimationDestination: (id, destination) =>
2026-10-24T18:50:23.8297562Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8297565Z
2026-10-24T18:50:23.8297865Z 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-24T18:50:23.8297868Z
2026-10-24T18:50:23.8297917Z 1740     dismissAnimation: (id) =>
2026-10-24T18:50:23.8297958Z          ~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8297961Z
2026-10-24T18:50:23.8298247Z 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-24T18:50:23.8298251Z
2026-10-24T18:50:23.8298298Z 1745     acknowledge: (id) =>
2026-10-24T18:50:23.8298340Z          ~~~~~~~~~~~
2026-10-24T18:50:23.8298342Z
2026-10-24T18:50:23.8298652Z 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-24T18:50:23.8298656Z
2026-10-24T18:50:23.8298703Z 136     discoverHosts: (input) =>
2026-10-24T18:50:23.8298745Z         ~~~~~~~~~~~~~
2026-10-24T18:50:23.8298748Z
2026-10-24T18:50:23.8299051Z 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-24T18:50:23.8299054Z
2026-10-24T18:50:23.8299102Z 141     resolveHost: (alias) =>
2026-10-24T18:50:23.8299141Z         ~~~~~~~~~~~
2026-10-24T18:50:23.8299143Z
2026-10-24T18:50:23.8299526Z 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-24T18:50:23.8299529Z
2026-10-24T18:50:23.8299597Z 146     ensureEnvironment: (target, ensureOptions) =>
2026-10-24T18:50:23.8299640Z         ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8299642Z
2026-10-24T18:50:23.8299968Z 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-24T18:50:23.8299971Z
2026-10-24T18:50:23.8300027Z 154     disconnectEnvironment: (target) =>
2026-10-24T18:50:23.8300075Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8300077Z
2026-10-24T18:50:23.8300390Z 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-24T18:50:23.8300395Z
2026-10-24T18:50:23.8300523Z 1171     installPrepared: (expectedVersion) => installWithExpectedVersion(expectedVersion),
2026-10-24T18:50:23.8300566Z          ~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8300568Z
2026-10-24T18:50:23.8300859Z 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-24T18:50:23.8300863Z
2026-10-24T18:50:23.8300912Z 1101       preWarm: () => Effect.void,
2026-10-24T18:50:23.8300953Z            ~~~~~~~
2026-10-24T18:50:23.8300955Z
2026-10-24T18:50:23.8301292Z 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-24T18:50:23.8301334Z
2026-10-24T18:50:23.8301402Z 1102       windowsToWslPath: (distro, windowsPath) =>
2026-10-24T18:50:23.8301444Z            ~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8301448Z
2026-10-24T18:50:23.8301756Z 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-24T18:50:23.8301758Z
2026-10-24T18:50:23.8301894Z 1104       getUserHome: (distro) => Effect.succeed(stub.getUserHome?.(distro) ?? Option.none<string>()),
2026-10-24T18:50:23.8301937Z            ~~~~~~~~~~~
2026-10-24T18:50:23.8301939Z
2026-10-24T18:50:23.8302244Z 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-24T18:50:23.8302249Z
2026-10-24T18:50:23.8302380Z 1105       getDistroIp: (distro) => Effect.succeed(stub.getDistroIp?.(distro) ?? Option.none<string>()),
2026-10-24T18:50:23.8302422Z            ~~~~~~~~~~~
2026-10-24T18:50:23.8302424Z
2026-10-24T18:50:23.8302755Z 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-24T18:50:23.8302757Z
2026-10-24T18:50:23.8302818Z 1106       prepareRuntime: (distro, archive) =>
2026-10-24T18:50:23.8302865Z            ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8302867Z
2026-10-24T18:50:23.8303192Z 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-24T18:50:23.8303195Z
2026-10-24T18:50:23.8303324Z 1113       pruneRuntimes: (distro, runtimeId) => stub.pruneRuntimes?.(distro, runtimeId) ?? Effect.void,
2026-10-24T18:50:23.8303371Z            ~~~~~~~~~~~~~
2026-10-24T18:50:23.8303373Z
2026-10-24T18:50:23.8303746Z 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-24T18:50:23.8303748Z
2026-10-24T18:50:23.8303815Z 1114       invalidateRuntime: (distro, runtimeId) =>
2026-10-24T18:50:23.8303857Z            ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8303859Z
2026-10-24T18:50:23.8304189Z 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-24T18:50:23.8304191Z
2026-10-24T18:50:23.8304252Z 1116       probeRuntime: (distro, linuxAppRoot) =>
2026-10-24T18:50:23.8304295Z            ~~~~~~~~~~~~
2026-10-24T18:50:23.8304297Z
2026-10-24T18:50:23.8304643Z 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-24T18:50:23.8304646Z
2026-10-24T18:50:23.8304718Z 1120       ensureNodePty: (distro, linuxAppRoot, options) =>
2026-10-24T18:50:23.8304761Z            ~~~~~~~~~~~~~
2026-10-24T18:50:23.8304763Z
2026-10-24T18:50:23.8305063Z 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-24T18:50:23.8305065Z
2026-10-24T18:50:23.8305115Z 1187       preWarm: (distro) =>
2026-10-24T18:50:23.8305158Z            ~~~~~~~
2026-10-24T18:50:23.8305160Z
2026-10-24T18:50:23.8305485Z 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-24T18:50:23.8305530Z
2026-10-24T18:50:23.8305591Z 1192       prepareRuntime: (distro, archive) =>
2026-10-24T18:50:23.8305635Z            ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8305637Z
2026-10-24T18:50:23.8305962Z 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-24T18:50:23.8305964Z
2026-10-24T18:50:23.8306021Z 1196       pruneRuntimes: (distro, runtimeId) =>
2026-10-24T18:50:23.8306062Z            ~~~~~~~~~~~~~
2026-10-24T18:50:23.8306064Z
2026-10-24T18:50:23.8306396Z 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-24T18:50:23.8306401Z
2026-10-24T18:50:23.8306466Z 1200       invalidateRuntime: (distro, runtimeId) =>
2026-10-24T18:50:23.8306522Z            ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8306525Z
2026-10-24T18:50:23.8306884Z 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-24T18:50:23.8306886Z
2026-10-24T18:50:23.8306944Z 1204       probeRuntime: (distro, linuxAppRoot) =>
2026-10-24T18:50:23.8306987Z            ~~~~~~~~~~~~
2026-10-24T18:50:23.8306989Z
2026-10-24T18:50:23.8307332Z 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-24T18:50:23.8307336Z
2026-10-24T18:50:23.8307410Z 1208       ensureNodePty: (distro, linuxAppRoot, options) =>
2026-10-24T18:50:23.8307451Z            ~~~~~~~~~~~~~
2026-10-24T18:50:23.8307489Z
2026-10-24T18:50:23.8307491Z
2026-10-24T18:50:23.8307800Z 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-24T18:50:23.8307802Z
2026-10-24T18:50:23.8307850Z 220           send: (body) =>
2026-10-24T18:50:23.8307890Z               ~~~~
2026-10-24T18:50:23.8307892Z
2026-10-24T18:50:23.8308186Z 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-24T18:50:23.8308188Z
2026-10-24T18:50:23.8308236Z 12       onFailure: (error) =>
2026-10-24T18:50:23.8308277Z          ~~~~~~~~~
2026-10-24T18:50:23.8308279Z
2026-10-24T18:50:23.8308598Z 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-24T18:50:23.8308601Z
2026-10-24T18:50:23.8308652Z 64     pauseUntil: (untilMillis) =>
2026-10-24T18:50:23.8308695Z        ~~~~~~~~~~
2026-10-24T18:50:23.8308697Z
2026-10-24T18:50:23.8308930Z 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-24T18:50:23.8308934Z
2026-10-24T18:50:23.8308979Z 198         onNone: () =>
2026-10-24T18:50:23.8309021Z             ~~~~~~
2026-10-24T18:50:23.8309023Z
2026-10-24T18:50:23.8309287Z src/previewTunnelSweep.test.ts:53:11 - suggestion TS377124: `Effect.provideService` provides this inline single-service layer directly. effect(provideLayerSucceedToProvideService)
2026-10-24T18:50:23.8309340Z
2026-10-24T18:50:23.8309460Z 53   }).pipe(Effect.provide(Layer.succeed(HttpClient.HttpClient, cloudflare.client)));
2026-10-24T18:50:23.8309504Z              ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8309506Z
2026-10-24T18:50:23.8309787Z 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-24T18:50:23.8309789Z
2026-10-24T18:50:23.8309898Z 92   fileResponse: () => Effect.die("Relay API does not serve filesystem responses"),
2026-10-24T18:50:23.8309940Z      ~~~~~~~~~~~~
2026-10-24T18:50:23.8309942Z
2026-10-24T18:50:23.8310223Z 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-24T18:50:23.8310226Z
2026-10-24T18:50:23.8310332Z 93   fileWebResponse: () => Effect.die("Relay API does not serve file responses"),
2026-10-24T18:50:23.8310375Z      ~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8310377Z
2026-10-24T18:50:23.8310631Z 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-24T18:50:23.8310634Z
2026-10-24T18:50:23.8310697Z 242       hold: ({ endpointKey, baseUrl, hook }) =>
2026-10-24T18:50:23.8310738Z           ~~~~
2026-10-24T18:50:23.8310740Z
2026-10-24T18:50:23.8310990Z 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-24T18:50:23.8310993Z
2026-10-24T18:50:23.8311051Z 244       wake: ({ endpointKey, baseUrl }) =>
2026-10-24T18:50:23.8311092Z           ~~~~
2026-10-24T18:50:23.8311094Z
2026-10-24T18:50:23.8311344Z 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-24T18:50:23.8311349Z
2026-10-24T18:50:23.8311439Z 246       clear: ({ endpointKey }) =>
2026-10-24T18:50:23.8311482Z           ~~~~~
2026-10-24T18:50:23.8311484Z
2026-10-24T18:50:23.8311792Z 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-24T18:50:23.8311794Z
2026-10-24T18:50:23.8311842Z 275               send: (body) =>
2026-10-24T18:50:23.8311885Z                   ~~~~
2026-10-24T18:50:23.8311887Z
2026-10-24T18:50:23.8311889Z
2026-10-24T18:50:23.8311891Z
2026-10-24T18:50:23.8312218Z src/connection/platform.ts:820:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentOwnedDataCleanup.clear")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8312223Z
2026-10-24T18:50:23.8312271Z 820     clear: (environmentId) =>
2026-10-24T18:50:23.8312313Z         ~~~~~
2026-10-24T18:50:23.8312315Z
2026-10-24T18:50:23.8312611Z src/connection/platform.ts:830:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("EnvironmentRpcRequestObserver.observe")((_) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8312613Z
2026-10-24T18:50:23.8312698Z 830     observe: ({ environmentId, environmentLabel, method }) =>
2026-10-24T18:50:23.8312737Z         ~~~~~~~
2026-10-24T18:50:23.8312739Z
2026-10-24T18:50:23.8313032Z src/connection/storage.ts:551:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestRoutingPermissions.get")((entry) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8313034Z
2026-10-24T18:50:23.8313078Z 551     get: (entry) =>
2026-10-24T18:50:23.8313159Z         ~~~
2026-10-24T18:50:23.8313161Z
2026-10-24T18:50:23.8313468Z src/connection/storage.ts:578:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestRoutingPermissions.set")((entry, permission) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8313470Z
2026-10-24T18:50:23.8313519Z 578     set: (entry, permission) => {
2026-10-24T18:50:23.8313559Z         ~~~
2026-10-24T18:50:23.8313561Z
2026-10-24T18:50:23.8313868Z src/connection/storage.ts:598:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestRoutingPermissions.forget")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8313871Z
2026-10-24T18:50:23.8313947Z 598     forget: (environmentId) => write(environmentId, null),
2026-10-24T18:50:23.8313987Z         ~~~~~~
2026-10-24T18:50:23.8313989Z
2026-10-24T18:50:23.8314329Z src/connection/storage.ts:645:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.ConnectionRegistrationStore.register")((registration, routes) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8314335Z
2026-10-24T18:50:23.8314394Z 645       register: (registration, routes) =>
2026-10-24T18:50:23.8314437Z           ~~~~~~~~
2026-10-24T18:50:23.8314439Z
2026-10-24T18:50:23.8314786Z src/connection/storage.ts:649:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.ConnectionRegistrationStore.setRoutes")((environmentId, routes) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8314788Z
2026-10-24T18:50:23.8314849Z 649       setRoutes: (environmentId, routes) =>
2026-10-24T18:50:23.8314889Z           ~~~~~~~~~
2026-10-24T18:50:23.8314891Z
2026-10-24T18:50:23.8315219Z src/connection/storage.ts:653:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.ConnectionRegistrationStore.remove")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8315223Z
2026-10-24T18:50:23.8315274Z 653       remove: (environmentId) =>
2026-10-24T18:50:23.8315356Z           ~~~~~~
2026-10-24T18:50:23.8315359Z
2026-10-24T18:50:23.8315709Z src/connection/storage.ts:657:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.ConnectionRegistrationStore.setEnabled")((environmentId, enabled) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8315711Z
2026-10-24T18:50:23.8315771Z 657       setEnabled: (environmentId, enabled) =>
2026-10-24T18:50:23.8315813Z           ~~~~~~~~~~
2026-10-24T18:50:23.8315816Z
2026-10-24T18:50:23.8316138Z src/connection/storage.ts:734:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.loadShell")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8316140Z
2026-10-24T18:50:23.8316199Z 734       loadShell: (environmentId) =>
2026-10-24T18:50:23.8316239Z           ~~~~~~~~~
2026-10-24T18:50:23.8316241Z
2026-10-24T18:50:23.8316589Z src/connection/storage.ts:770:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.loadServerConfig")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8316619Z
2026-10-24T18:50:23.8316682Z 770       loadServerConfig: (environmentId) =>
2026-10-24T18:50:23.8316729Z           ~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8316731Z
2026-10-24T18:50:23.8317071Z src/connection/storage.ts:804:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.loadThread")((environmentId, threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8317073Z
2026-10-24T18:50:23.8317133Z 804       loadThread: (environmentId, threadId) =>
2026-10-24T18:50:23.8317175Z           ~~~~~~~~~~
2026-10-24T18:50:23.8317222Z
2026-10-24T18:50:23.8317558Z src/connection/storage.ts:853:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.loadVcsRefs")((environmentId, cwd) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8317560Z
2026-10-24T18:50:23.8317618Z 853       loadVcsRefs: (environmentId, cwd) =>
2026-10-24T18:50:23.8317661Z           ~~~~~~~~~~~
2026-10-24T18:50:23.8317663Z
2026-10-24T18:50:23.8317998Z src/connection/storage.ts:895:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.removeVcsRefs")((environmentId, cwd) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8318003Z
2026-10-24T18:50:23.8318062Z 895       removeVcsRefs: (environmentId, cwd) =>
2026-10-24T18:50:23.8318106Z           ~~~~~~~~~~~~~
2026-10-24T18:50:23.8318108Z
2026-10-24T18:50:23.8318436Z src/connection/storage.ts:901:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.clearVcsRefs")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8318442Z
2026-10-24T18:50:23.8318498Z 901       clearVcsRefs: (environmentId) =>
2026-10-24T18:50:23.8318539Z           ~~~~~~~~~~~~
2026-10-24T18:50:23.8318541Z
2026-10-24T18:50:23.8318885Z src/connection/storage.ts:907:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.removeThread")((environmentId, threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8318888Z
2026-10-24T18:50:23.8318955Z 907       removeThread: (environmentId, threadId) =>
2026-10-24T18:50:23.8318997Z           ~~~~~~~~~~~~
2026-10-24T18:50:23.8318999Z
2026-10-24T18:50:23.8319316Z src/connection/storage.ts:913:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.clear")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8319319Z
2026-10-24T18:50:23.8319369Z 913       clear: (environmentId) =>
2026-10-24T18:50:23.8319450Z           ~~~~~
2026-10-24T18:50:23.8319452Z
2026-10-24T18:50:23.8319454Z
2026-10-24T18:50:23.8319504Z ~/apps/server$ tsc --noEmit
2026-10-24T18:50:23.8319751Z 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-24T18:50:23.8319753Z
2026-10-24T18:50:23.8319809Z 941         yield* Effect.sleep("1200 millis")
2026-10-24T18:50:23.8319857Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8319901Z 942           .pipe(
2026-10-24T18:50:23.8319943Z     ~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8319983Z ...
2026-10-24T18:50:23.8320024Z 954           )
2026-10-24T18:50:23.8320065Z     ~~~~~~~~~~~
2026-10-24T18:50:23.8320118Z 955           .pipe(Effect.forkDetach);
2026-10-24T18:50:23.8320165Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8320167Z
2026-10-24T18:50:23.8320471Z 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-24T18:50:23.8320474Z
2026-10-24T18:50:23.8320524Z 1175     logger: (event) => {
2026-10-24T18:50:23.8320566Z          ~~~~~~
2026-10-24T18:50:23.8320568Z
2026-10-24T18:50:23.8320988Z 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-24T18:50:23.8320990Z
2026-10-24T18:50:23.8321093Z 376 const DEFAULT_GROK_SETTINGS = Schema.decodeUnknownSync(GrokSettings)({});
2026-10-24T18:50:23.8321152Z                                          ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8321194Z
2026-10-24T18:50:23.8321588Z src/assets/AssetAccess.test.ts:975:42 - suggestion TS377112: This input is already assignable to the schema's Encoded type. Use `decodeEffect` to preserve compile-time type checking instead of discarding the input type through `decodeUnknownEffect`. effect(preferTypedSchemaDecoder)
2026-10-24T18:50:23.8321591Z
2026-10-24T18:50:23.8321703Z 975       const { resource } = yield* Schema.decodeUnknownEffect(AssetCreateUrlInput)({
2026-10-24T18:50:23.8321765Z                                              ~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8321767Z
2026-10-24T18:50:23.8322056Z 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-24T18:50:23.8322061Z
2026-10-24T18:50:23.8322109Z 1346     getDescriptor: () =>
2026-10-24T18:50:23.8322152Z          ~~~~~~~~~~~~~
2026-10-24T18:50:23.8322156Z
2026-10-24T18:50:23.8322465Z 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-24T18:50:23.8322468Z
2026-10-24T18:50:23.8322517Z 55     getDescriptor: () =>
2026-10-24T18:50:23.8322557Z        ~~~~~~~~~~~~~
2026-10-24T18:50:23.8322559Z
2026-10-24T18:50:23.8322882Z 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-24T18:50:23.8322884Z
2026-10-24T18:50:23.8322936Z 540       authenticate: (request) =>
2026-10-24T18:50:23.8322979Z           ~~~~~~~~~~~~
2026-10-24T18:50:23.8322981Z
2026-10-24T18:50:23.8323225Z 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-24T18:50:23.8323229Z
2026-10-24T18:50:23.8323282Z 468         : Effect.succeed(undefined),
2026-10-24T18:50:23.8323367Z               ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8323369Z
2026-10-24T18:50:23.8323651Z 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-24T18:50:23.8323653Z
2026-10-24T18:50:23.8323706Z 328       HttpClientError: (cause) =>
2026-10-24T18:50:23.8323749Z           ~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8323751Z
2026-10-24T18:50:23.8323986Z src/cloud/CloudLink.lifecycle.test.ts:166:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8323988Z
2026-10-24T18:50:23.8324055Z 166             latest: Effect.succeed(Option.none()),
2026-10-24T18:50:23.8324103Z                         ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8324105Z
2026-10-24T18:50:23.8324322Z src/cloud/CloudLink.test.ts:99:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8324325Z
2026-10-24T18:50:23.8324384Z 99         latest: Effect.succeed(Option.none()),
2026-10-24T18:50:23.8324431Z                    ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8324433Z
2026-10-24T18:50:23.8324767Z 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-24T18:50:23.8324769Z
2026-10-24T18:50:23.8324898Z 791     requestRecovery: (config) => Queue.offer(recoveryRequests, config).pipe(Effect.asVoid),
2026-10-24T18:50:23.8324941Z         ~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8324944Z
2026-10-24T18:50:23.8325148Z src/cloud/http.test.ts:81:67 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8325188Z
2026-10-24T18:50:23.8325335Z 81     Layer.mock(ConnectReachability.ConnectReachability)({ latest: Effect.succeed(Option.none()) }),
2026-10-24T18:50:23.8325405Z                                                                      ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8325408Z
2026-10-24T18:50:23.8325740Z 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-24T18:50:23.8325742Z
2026-10-24T18:50:23.8325826Z 371     commitDesktopUpdate: (requestId, onHandoffAccepted) =>
2026-10-24T18:50:23.8325869Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8325871Z
2026-10-24T18:50:23.8326153Z 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-24T18:50:23.8326158Z
2026-10-24T18:50:23.8326208Z 808       updateTool: (tool) =>
2026-10-24T18:50:23.8326252Z           ~~~~~~~~~~
2026-10-24T18:50:23.8326254Z
2026-10-24T18:50:23.8326558Z 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-24T18:50:23.8326561Z
2026-10-24T18:50:23.8326607Z 823       easAccount: () =>
2026-10-24T18:50:23.8326649Z           ~~~~~~~~~~
2026-10-24T18:50:23.8326651Z
2026-10-24T18:50:23.8326958Z 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-24T18:50:23.8326960Z
2026-10-24T18:50:23.8327014Z 868     ensureAgentReady: (onPhase) =>
2026-10-24T18:50:23.8327059Z         ~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8327061Z
2026-10-24T18:50:23.8327371Z src/device/easProjectId.ts:201:7 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T18:50:23.8327374Z
2026-10-24T18:50:23.8327428Z 201       Effect.map(Option.some),
2026-10-24T18:50:23.8327470Z           ~~~~~~~~~~
2026-10-24T18:50:23.8327472Z
2026-10-24T18:50:23.8327757Z 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-24T18:50:23.8327759Z
2026-10-24T18:50:23.8327836Z 141   return DirectEndpoints.of({ resolve: () => resolve });
2026-10-24T18:50:23.8327885Z                                   ~~~~~~~
2026-10-24T18:50:23.8327888Z
2026-10-24T18:50:23.8328193Z 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-24T18:50:23.8328198Z
2026-10-24T18:50:23.8328302Z 83   return RemoteOpenTargets.of({ resolveTargets: () => resolveTargets });
2026-10-24T18:50:23.8328357Z                                    ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8328359Z
2026-10-24T18:50:23.8328654Z 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-24T18:50:23.8328656Z
2026-10-24T18:50:23.8328708Z 302     isRepository: (cwd) =>
2026-10-24T18:50:23.8328750Z         ~~~~~~~~~~~~
2026-10-24T18:50:23.8328752Z
2026-10-24T18:50:23.8329040Z 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-24T18:50:23.8329096Z
2026-10-24T18:50:23.8329147Z 315     hasCommit: (input) =>
2026-10-24T18:50:23.8329187Z         ~~~~~~~~~
2026-10-24T18:50:23.8329189Z
2026-10-24T18:50:23.8329485Z 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-24T18:50:23.8329488Z
2026-10-24T18:50:23.8329538Z 327     hasRefNamed: (input) =>
2026-10-24T18:50:23.8329579Z         ~~~~~~~~~~~
2026-10-24T18:50:23.8329582Z
2026-10-24T18:50:23.8329864Z 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-24T18:50:23.8329868Z
2026-10-24T18:50:23.8329913Z 346     status: (input) =>
2026-10-24T18:50:23.8329955Z         ~~~~~~
2026-10-24T18:50:23.8329957Z
2026-10-24T18:50:23.8330252Z 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-24T18:50:23.8330255Z
2026-10-24T18:50:23.8330304Z 352     localStatus: (input) =>
2026-10-24T18:50:23.8330344Z         ~~~~~~~~~~~
2026-10-24T18:50:23.8330346Z
2026-10-24T18:50:23.8330656Z 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-24T18:50:23.8330658Z
2026-10-24T18:50:23.8330715Z 360     remoteStatus: (input, options) =>
2026-10-24T18:50:23.8330757Z         ~~~~~~~~~~~~
2026-10-24T18:50:23.8330759Z
2026-10-24T18:50:23.8331059Z 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-24T18:50:23.8331063Z
2026-10-24T18:50:23.8331114Z 369     pullCurrentBranch: (cwd) =>
2026-10-24T18:50:23.8331159Z         ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8331202Z
2026-10-24T18:50:23.8331516Z 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-24T18:50:23.8331519Z
2026-10-24T18:50:23.8331579Z 373     runStackedAction: (input, options) =>
2026-10-24T18:50:23.8331621Z         ~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8331625Z
2026-10-24T18:50:23.8331945Z 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-24T18:50:23.8331948Z
2026-10-24T18:50:23.8332009Z 388     preparePullRequestThread: (input) =>
2026-10-24T18:50:23.8332059Z         ~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8332062Z
2026-10-24T18:50:23.8332350Z 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-24T18:50:23.8332352Z
2026-10-24T18:50:23.8332400Z 399     listRefs: (input) =>
2026-10-24T18:50:23.8332441Z         ~~~~~~~~
2026-10-24T18:50:23.8332443Z
2026-10-24T18:50:23.8332756Z 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-24T18:50:23.8332758Z
2026-10-24T18:50:23.8332817Z 405     createWorktree: (input, options) =>
2026-10-24T18:50:23.8332860Z         ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8332863Z
2026-10-24T18:50:23.8333170Z 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-24T18:50:23.8333221Z
2026-10-24T18:50:23.8333274Z 409     listLocalBranchNames: (cwd) =>
2026-10-24T18:50:23.8333319Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8333322Z
2026-10-24T18:50:23.8333615Z 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-24T18:50:23.8333618Z
2026-10-24T18:50:23.8333669Z 413     fetchRemote: (input) =>
2026-10-24T18:50:23.8333710Z         ~~~~~~~~~~~
2026-10-24T18:50:23.8333712Z
2026-10-24T18:50:23.8334006Z 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-24T18:50:23.8334010Z
2026-10-24T18:50:23.8334061Z 417     remoteExists: (input) =>
2026-10-24T18:50:23.8334107Z         ~~~~~~~~~~~~
2026-10-24T18:50:23.8334110Z
2026-10-24T18:50:23.8334423Z 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-24T18:50:23.8334426Z
2026-10-24T18:50:23.8334477Z 421     remoteBranchExists: (input) =>
2026-10-24T18:50:23.8334523Z         ~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8334525Z
2026-10-24T18:50:23.8334850Z 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-24T18:50:23.8334852Z
2026-10-24T18:50:23.8334916Z 425     resolveRemoteTrackingCommit: (input) =>
2026-10-24T18:50:23.8334963Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8334967Z
2026-10-24T18:50:23.8335327Z 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-24T18:50:23.8335330Z
2026-10-24T18:50:23.8335393Z 429     resolveWorktreeBaseRemote: (input) =>
2026-10-24T18:50:23.8335440Z         ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8335442Z
2026-10-24T18:50:23.8335757Z 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-24T18:50:23.8335760Z
2026-10-24T18:50:23.8335815Z 433     fetchWorktreeBaseCommit: (input) =>
2026-10-24T18:50:23.8335861Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8335863Z
2026-10-24T18:50:23.8336170Z 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-24T18:50:23.8336174Z
2026-10-24T18:50:23.8336226Z 437     removeWorktree: (input) =>
2026-10-24T18:50:23.8336269Z         ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8336272Z
2026-10-24T18:50:23.8336582Z 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-24T18:50:23.8336588Z
2026-10-24T18:50:23.8336657Z 441     pruneWorktrees: (input) =>
2026-10-24T18:50:23.8336700Z         ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8336702Z
2026-10-24T18:50:23.8337007Z 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-24T18:50:23.8337054Z
2026-10-24T18:50:23.8337107Z 445     deleteLocalBranch: (input) =>
2026-10-24T18:50:23.8337149Z         ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8337153Z
2026-10-24T18:50:23.8337442Z 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-24T18:50:23.8337445Z
2026-10-24T18:50:23.8337493Z 449     createRef: (input) =>
2026-10-24T18:50:23.8337535Z         ~~~~~~~~~
2026-10-24T18:50:23.8337538Z
2026-10-24T18:50:23.8337828Z 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-24T18:50:23.8337830Z
2026-10-24T18:50:23.8337876Z 457     switchRef: (input) =>
2026-10-24T18:50:23.8337920Z         ~~~~~~~~~
2026-10-24T18:50:23.8337925Z
2026-10-24T18:50:23.8338221Z 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-24T18:50:23.8338223Z
2026-10-24T18:50:23.8338274Z 463     renameBranch: (input) =>
2026-10-24T18:50:23.8338315Z         ~~~~~~~~~~~~
2026-10-24T18:50:23.8338317Z
2026-10-24T18:50:23.8338579Z 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-24T18:50:23.8338582Z
2026-10-24T18:50:23.8338636Z 281   const receive = (raw: string) => {
2026-10-24T18:50:23.8338677Z             ~~~~~~~
2026-10-24T18:50:23.8338679Z
2026-10-24T18:50:23.8339048Z 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-24T18:50:23.8339053Z
2026-10-24T18:50:23.8339094Z 284       try {
2026-10-24T18:50:23.8339183Z           ~~~~~
2026-10-24T18:50:23.8339238Z 285         parsed = JSON.parse(line);
2026-10-24T18:50:23.8339285Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8339326Z ...
2026-10-24T18:50:23.8339424Z 287         return yield* respondWithError(null, "Parse error", -32700);
2026-10-24T18:50:23.8339494Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8339538Z 288       }
2026-10-24T18:50:23.8339579Z     ~~~~~~~
2026-10-24T18:50:23.8339582Z
2026-10-24T18:50:23.8339851Z 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-24T18:50:23.8339853Z
2026-10-24T18:50:23.8339912Z 324       Effect.catchCause(() => Effect.void),
2026-10-24T18:50:23.8339960Z           ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8339962Z
2026-10-24T18:50:23.8340192Z src/mcp/McpDeviceToolkit.test.ts:105:18 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8340196Z
2026-10-24T18:50:23.8340259Z 105   getById: () => Effect.succeed(Option.none()),
2026-10-24T18:50:23.8340307Z                      ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8340310Z
2026-10-24T18:50:23.8340591Z 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-24T18:50:23.8340593Z
2026-10-24T18:50:23.8340687Z 421 const previewSnapshotFailure = <E>(cause: Cause.Cause<E>) => {
2026-10-24T18:50:23.8340733Z           ~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8340735Z
2026-10-24T18:50:23.8341019Z src/mcp/McpHttpServer.ts:938:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("McpServer.McpServer.addTool")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8341066Z
2026-10-24T18:50:23.8341119Z 938       addTool: (options) =>
2026-10-24T18:50:23.8341161Z           ~~~~~~~
2026-10-24T18:50:23.8341164Z
2026-10-24T18:50:23.8341439Z 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-24T18:50:23.8341442Z
2026-10-24T18:50:23.8341500Z 22     resolve: () => Effect.succeed(undefined),
2026-10-24T18:50:23.8341552Z                       ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8341554Z
2026-10-24T18:50:23.8341838Z 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-24T18:50:23.8341843Z
2026-10-24T18:50:23.8341902Z 112       Effect.flatMap(() => writingCaller),
2026-10-24T18:50:23.8341946Z           ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8341949Z
2026-10-24T18:50:23.8342443Z src/mcp/OrchestratorMcpService.ts:2465:39 - suggestion TS377088: This generator applies the same inline `Effect.mapError(...)` to every yielded effect. Keep that `Effect.mapError(...)` inline and hoist it once to the generator result: `Effect.gen(...).pipe(Effect.mapError(...))`, or `Effect.fn(function*(){ ... }, Effect.mapError(...))`. effect(redundantMapError)
2026-10-24T18:50:23.8342448Z
2026-10-24T18:50:23.8342521Z 2465       const cancelOrphan = Effect.gen(function* () {
2026-10-24T18:50:23.8342578Z                                            ~~~~~~~~~
2026-10-24T18:50:23.8342580Z
2026-10-24T18:50:23.8342815Z   src/mcp/OrchestratorMcpService.ts:2480:17 - This repeated `Effect.mapError(...)` site participates in the hoistable generator-wide mapping. effect(redundantMapError)
2026-10-24T18:50:23.8342901Z     2480           .pipe(Effect.mapError(threadManagementFailure));
2026-10-24T18:50:23.8342948Z                          ~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8342950Z
2026-10-24T18:50:23.8343219Z   src/mcp/OrchestratorMcpService.ts:2483:17 - This repeated `Effect.mapError(...)` site participates in the hoistable generator-wide mapping. effect(redundantMapError)
2026-10-24T18:50:23.8343300Z     2483           .pipe(Effect.mapError(threadManagementFailure));
2026-10-24T18:50:23.8343348Z                          ~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8343350Z
2026-10-24T18:50:23.8343617Z 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-24T18:50:23.8343623Z
2026-10-24T18:50:23.8343669Z 651         onNone: () =>
2026-10-24T18:50:23.8343712Z             ~~~~~~
2026-10-24T18:50:23.8343714Z
2026-10-24T18:50:23.8343914Z src/mcp/WorktreeMcpService.test.ts:355:3 - suggestion TS377017: This Effect.gen contains a single return statement. effect(unnecessaryEffectGen)
2026-10-24T18:50:23.8343918Z
2026-10-24T18:50:23.8343968Z 355   Effect.gen(function* () {
2026-10-24T18:50:23.8344011Z       ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8344096Z 356     return yield* WorktreeMcpService.WorktreeMcpService;
2026-10-24T18:50:23.8344161Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8344224Z 357   }).pipe(Effect.provide(harness.layer));
2026-10-24T18:50:23.8344266Z     ~~~~
2026-10-24T18:50:23.8344268Z
2026-10-24T18:50:23.8344537Z src/mcp/toolkits/pullRequests/handlers.ts:217:27 - suggestion TS377015: This expression contains chained `pipe` calls that can be simplified to a single `pipe` call. effect(unnecessaryPipeChain)
2026-10-24T18:50:23.8344540Z
2026-10-24T18:50:23.8344591Z 217     const thread = yield* engine
2026-10-24T18:50:23.8344638Z                               ~~~~~~
2026-10-24T18:50:23.8344686Z 218       .getThreadShell(threadId)
2026-10-24T18:50:23.8344785Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8344852Z 219       .pipe(Effect.map(Option.fromNullishOr))
2026-10-24T18:50:23.8344907Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8344991Z 220       .pipe(Effect.mapError((cause) => new Failure({ cause })));
2026-10-24T18:50:23.8345059Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8345061Z
2026-10-24T18:50:23.8345344Z 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-24T18:50:23.8345347Z
2026-10-24T18:50:23.8345468Z 96   McpAppModelContext.of({ set: () => Effect.void, forThread: () => Effect.succeed([]) }),
2026-10-24T18:50:23.8345512Z                              ~~~
2026-10-24T18:50:23.8345519Z
2026-10-24T18:50:23.8345813Z 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-24T18:50:23.8345817Z
2026-10-24T18:50:23.8345936Z 96   McpAppModelContext.of({ set: () => Effect.void, forThread: () => Effect.succeed([]) }),
2026-10-24T18:50:23.8345999Z                                                      ~~~~~~~~~
2026-10-24T18:50:23.8346002Z
2026-10-24T18:50:23.8346319Z 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-24T18:50:23.8346322Z
2026-10-24T18:50:23.8346372Z 16     record: (records) =>
2026-10-24T18:50:23.8346413Z        ~~~~~~
2026-10-24T18:50:23.8346415Z
2026-10-24T18:50:23.8346729Z 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-24T18:50:23.8346734Z
2026-10-24T18:50:23.8346836Z 41   defaultValue: () => ({ latestNoticeableStall: Effect.succeed(undefined) }),
2026-10-24T18:50:23.8346943Z                                                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8346946Z
2026-10-24T18:50:23.8347391Z 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-24T18:50:23.8347393Z
2026-10-24T18:50:23.8347493Z 30 const REPLAY_SETTINGS = Schema.decodeUnknownSync(AcpRegistrySettings)({
2026-10-24T18:50:23.8347549Z                                   ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8347551Z
2026-10-24T18:50:23.8347858Z 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-24T18:50:23.8347862Z
2026-10-24T18:50:23.8347924Z 48   defaultModel: Effect.succeed(undefined),
2026-10-24T18:50:23.8347972Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8347976Z
2026-10-24T18:50:23.8348282Z 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-24T18:50:23.8348284Z
2026-10-24T18:50:23.8348350Z 169         defaultModel: Effect.succeed(undefined),
2026-10-24T18:50:23.8348403Z                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8348405Z
2026-10-24T18:50:23.8348711Z 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-24T18:50:23.8348759Z
2026-10-24T18:50:23.8348824Z 306         defaultModel: Effect.succeed(undefined),
2026-10-24T18:50:23.8348875Z                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8348877Z
2026-10-24T18:50:23.8349181Z 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-24T18:50:23.8349184Z
2026-10-24T18:50:23.8349246Z 542         defaultModel: Effect.succeed(undefined),
2026-10-24T18:50:23.8349299Z                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8349301Z
2026-10-24T18:50:23.8349635Z 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-24T18:50:23.8349641Z
2026-10-24T18:50:23.8349700Z 974       const controller = new AbortController();
2026-10-24T18:50:23.8349752Z                              ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8349755Z
2026-10-24T18:50:23.8350047Z 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-24T18:50:23.8350049Z
2026-10-24T18:50:23.8350116Z 1326         const requestEvent = yield* runtime.events
2026-10-24T18:50:23.8350168Z                                          ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8350214Z 1327           .pipe(
2026-10-24T18:50:23.8350260Z      ~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8350303Z  ...
2026-10-24T18:50:23.8350344Z 1330           )
2026-10-24T18:50:23.8350388Z      ~~~~~~~~~~~
2026-10-24T18:50:23.8350443Z 1331           .pipe(Effect.forkScoped);
2026-10-24T18:50:23.8350490Z      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8350495Z
2026-10-24T18:50:23.8350871Z 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-24T18:50:23.8350874Z
2026-10-24T18:50:23.8350943Z 1332         const controller = new AbortController();
2026-10-24T18:50:23.8350999Z                                 ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8351001Z
2026-10-24T18:50:23.8351335Z 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-24T18:50:23.8351337Z
2026-10-24T18:50:23.8351421Z 1355         const cancelledController = new AbortController();
2026-10-24T18:50:23.8351481Z                                          ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8351486Z
2026-10-24T18:50:23.8351856Z 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-24T18:50:23.8351858Z
2026-10-24T18:50:23.8351964Z 4018     getCapabilities: () => Effect.succeed(ClaudeProviderCapabilitiesV2),
2026-10-24T18:50:23.8352008Z          ~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8352010Z
2026-10-24T18:50:23.8352388Z 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-24T18:50:23.8352391Z
2026-10-24T18:50:23.8352510Z 4019     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T18:50:23.8352557Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8352606Z
2026-10-24T18:50:23.8352961Z 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-24T18:50:23.8352964Z
2026-10-24T18:50:23.8353027Z 201         signal: new AbortController().signal,
2026-10-24T18:50:23.8353076Z                     ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8353079Z
2026-10-24T18:50:23.8353467Z 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-24T18:50:23.8353472Z
2026-10-24T18:50:23.8353523Z 74   const pause = Effect.raceFirst(
2026-10-24T18:50:23.8353570Z                    ~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8353572Z
2026-10-24T18:50:23.8353863Z 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-24T18:50:23.8353868Z
2026-10-24T18:50:23.8353977Z 1741     threadId === null ? Effect.succeed(undefined) : mcpSessions.read(threadId);
2026-10-24T18:50:23.8354031Z                              ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8354033Z
2026-10-24T18:50:23.8354391Z 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-24T18:50:23.8354393Z
2026-10-24T18:50:23.8354495Z 1748     getCapabilities: () => Effect.succeed(CodexProviderCapabilitiesV2),
2026-10-24T18:50:23.8354540Z          ~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8354542Z
2026-10-24T18:50:23.8354914Z 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-24T18:50:23.8354959Z
2026-10-24T18:50:23.8355075Z 1749     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T18:50:23.8355122Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8355124Z
2026-10-24T18:50:23.8355437Z 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-24T18:50:23.8355440Z
2026-10-24T18:50:23.8355513Z 3045                   Effect.catch(() => Effect.succeed(null)),
2026-10-24T18:50:23.8355560Z                        ~~~~~~~~~~~~
2026-10-24T18:50:23.8355562Z
2026-10-24T18:50:23.8355929Z 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-24T18:50:23.8355937Z
2026-10-24T18:50:23.8355997Z 3046                   Effect.flatMap((response) =>
2026-10-24T18:50:23.8356047Z                        ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8356049Z
2026-10-24T18:50:23.8356328Z 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-24T18:50:23.8356330Z
2026-10-24T18:50:23.8356393Z 3068                   Effect.catch(() => Effect.void),
2026-10-24T18:50:23.8356437Z                        ~~~~~~~~~~~~
2026-10-24T18:50:23.8356439Z
2026-10-24T18:50:23.8356837Z 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-24T18:50:23.8356884Z
2026-10-24T18:50:23.8356970Z 7268                   return yield* Effect.fail(failedTermination.error);
2026-10-24T18:50:23.8357017Z                               ~~~~~
2026-10-24T18:50:23.8357019Z
2026-10-24T18:50:23.8357455Z 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-24T18:50:23.8357457Z
2026-10-24T18:50:23.8357557Z 33 const DEFAULT_GROK_SETTINGS = Schema.decodeUnknownSync(GrokSettings)({});
2026-10-24T18:50:23.8357616Z                                         ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8357618Z
2026-10-24T18:50:23.8358053Z 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-24T18:50:23.8358057Z
2026-10-24T18:50:23.8358183Z 414 const DEFAULT_MUSE_SETTINGS = Schema.decodeUnknownSync(MuseSettings)({ enabled: true });
2026-10-24T18:50:23.8358240Z                                          ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8358243Z
2026-10-24T18:50:23.8358584Z 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-24T18:50:23.8358586Z
2026-10-24T18:50:23.8358636Z 242       execute: (input) =>
2026-10-24T18:50:23.8358681Z           ~~~~~~~
2026-10-24T18:50:23.8358683Z
2026-10-24T18:50:23.8358944Z src/orchestration-v2/CheckpointRestoreSafety.test.ts:104:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8358948Z
2026-10-24T18:50:23.8359102Z 104             get: () => Effect.succeed(Option.some({ workspaceRoot: parent } as never)),
2026-10-24T18:50:23.8359151Z                            ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8359153Z
2026-10-24T18:50:23.8359504Z 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-24T18:50:23.8359506Z
2026-10-24T18:50:23.8359559Z 41             Effect.catch((error) =>
2026-10-24T18:50:23.8359604Z                ~~~~~~~~~~~~
2026-10-24T18:50:23.8359607Z
2026-10-24T18:50:23.8359947Z 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-24T18:50:23.8359951Z
2026-10-24T18:50:23.8360002Z 83                 Effect.catch((error) =>
2026-10-24T18:50:23.8360051Z                    ~~~~~~~~~~~~
2026-10-24T18:50:23.8360054Z
2026-10-24T18:50:23.8360320Z src/orchestration-v2/CheckpointRollbackService.test.ts:233:22 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8360322Z
2026-10-24T18:50:23.8360421Z 233               return Effect.succeed(Option.some({ workspaceRoot } as never));
2026-10-24T18:50:23.8360469Z                          ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8360472Z
2026-10-24T18:50:23.8360824Z 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-24T18:50:23.8360876Z
2026-10-24T18:50:23.8360940Z 142         const batchAbort = new AbortController();
2026-10-24T18:50:23.8360997Z                                ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8360999Z
2026-10-24T18:50:23.8361363Z 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-24T18:50:23.8361366Z
2026-10-24T18:50:23.8361420Z 168     Effect.flatMap((frame) =>
2026-10-24T18:50:23.8361461Z         ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8361464Z
2026-10-24T18:50:23.8361707Z src/orchestration-v2/CommandReceiptStore.ts:164:29 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8361709Z
2026-10-24T18:50:23.8361780Z 164               onNone: () => Effect.succeed(Option.none()),
2026-10-24T18:50:23.8361832Z                                 ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8361836Z
2026-10-24T18:50:23.8362082Z src/orchestration-v2/CommandReceiptStore.ts:167:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8362085Z
2026-10-24T18:50:23.8362145Z 167                   ? Effect.succeed(Option.none())
2026-10-24T18:50:23.8362195Z                         ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8362197Z
2026-10-24T18:50:23.8362441Z src/orchestration-v2/CommandReceiptStore.ts:168:58 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T18:50:23.8362444Z
2026-10-24T18:50:23.8362545Z 168                   : fromApplicationReceipt(receipt).pipe(Effect.map(Option.some)),
2026-10-24T18:50:23.8362608Z                                                              ~~~~~~~~~~
2026-10-24T18:50:23.8362610Z
2026-10-24T18:50:23.8362847Z src/orchestration-v2/CommandReceiptStore.ts:183:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8362851Z
2026-10-24T18:50:23.8362951Z 183               ? Effect.succeed(Option.none())
2026-10-24T18:50:23.8363000Z                     ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8363003Z
2026-10-24T18:50:23.8363246Z src/orchestration-v2/CommandReceiptStore.ts:192:25 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T18:50:23.8363249Z
2026-10-24T18:50:23.8363312Z 192                 }).pipe(Effect.map(Option.some)),
2026-10-24T18:50:23.8363357Z                             ~~~~~~~~~~
2026-10-24T18:50:23.8363359Z
2026-10-24T18:50:23.8363590Z src/orchestration-v2/EffectOutbox.ts:429:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8363592Z
2026-10-24T18:50:23.8363650Z 429               ? Effect.succeed(Option.none())
2026-10-24T18:50:23.8363700Z                     ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8363702Z
2026-10-24T18:50:23.8363934Z src/orchestration-v2/EffectOutbox.ts:430:39 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T18:50:23.8363939Z
2026-10-24T18:50:23.8364016Z 430               : rowToEffect(row).pipe(Effect.map(Option.some));
2026-10-24T18:50:23.8364070Z                                           ~~~~~~~~~~
2026-10-24T18:50:23.8364072Z
2026-10-24T18:50:23.8364309Z src/orchestration-v2/EffectWorker.test.ts:107:20 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8364312Z
2026-10-24T18:50:23.8364377Z 107         get: () => Effect.succeed(Option.none()),
2026-10-24T18:50:23.8364424Z                        ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8364427Z
2026-10-24T18:50:23.8364661Z src/orchestration-v2/EffectWorker.test.ts:302:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8364708Z
2026-10-24T18:50:23.8364798Z 302       claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T18:50:23.8364846Z                            ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8364849Z
2026-10-24T18:50:23.8365081Z src/orchestration-v2/EffectWorker.test.ts:369:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8365083Z
2026-10-24T18:50:23.8365164Z 369       claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T18:50:23.8365215Z                            ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8365217Z
2026-10-24T18:50:23.8365451Z src/orchestration-v2/EffectWorker.test.ts:436:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8365455Z
2026-10-24T18:50:23.8365538Z 436       claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T18:50:23.8365583Z                            ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8365590Z
2026-10-24T18:50:23.8365821Z src/orchestration-v2/EffectWorker.test.ts:437:18 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8365823Z
2026-10-24T18:50:23.8365901Z 437       get: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T18:50:23.8365950Z                      ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8365952Z
2026-10-24T18:50:23.8366288Z 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-24T18:50:23.8366291Z
2026-10-24T18:50:23.8366342Z 98       execute: (effect, options) => {
2026-10-24T18:50:23.8366387Z          ~~~~~~~
2026-10-24T18:50:23.8366389Z
2026-10-24T18:50:23.8366785Z 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-24T18:50:23.8366787Z
2026-10-24T18:50:23.8366841Z 180                 Effect.catch((cause) =>
2026-10-24T18:50:23.8366889Z                     ~~~~~~~~~~~~
2026-10-24T18:50:23.8366891Z
2026-10-24T18:50:23.8367173Z 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-24T18:50:23.8367179Z
2026-10-24T18:50:23.8367267Z 110         append: (input) =>
2026-10-24T18:50:23.8367310Z             ~~~~~~
2026-10-24T18:50:23.8367312Z
2026-10-24T18:50:23.8367619Z 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-24T18:50:23.8367623Z
2026-10-24T18:50:23.8367682Z 120         appendProjectEvent: (event) =>
2026-10-24T18:50:23.8367725Z             ~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8367727Z
2026-10-24T18:50:23.8368025Z 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-24T18:50:23.8368027Z
2026-10-24T18:50:23.8368080Z 131         latestSequence: (input) =>
2026-10-24T18:50:23.8368127Z             ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8368129Z
2026-10-24T18:50:23.8368387Z src/orchestration-v2/FoundationPersistence.test.ts:1791:26 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8368390Z
2026-10-24T18:50:23.8368534Z 1791         claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T18:50:23.8368585Z                               ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8368587Z
2026-10-24T18:50:23.8368844Z src/orchestration-v2/FoundationPersistence.test.ts:1793:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8368847Z
2026-10-24T18:50:23.8368895Z 1793           Effect.succeed(
2026-10-24T18:50:23.8368939Z                ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8368941Z
2026-10-24T18:50:23.8369193Z src/orchestration-v2/FoundationPersistence.test.ts:2663:30 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8369195Z
2026-10-24T18:50:23.8369276Z 2663             nextClaimableAt: Effect.succeed(Option.none()),
2026-10-24T18:50:23.8369329Z                                   ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8369333Z
2026-10-24T18:50:23.8369588Z src/orchestration-v2/FoundationPersistence.test.ts:2880:30 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8369590Z
2026-10-24T18:50:23.8369665Z 2880             nextClaimableAt: Effect.succeed(Option.none()),
2026-10-24T18:50:23.8369717Z                                   ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8369719Z
2026-10-24T18:50:23.8370073Z src/orchestration-v2/Orchestrator.ts:11796:7 - suggestion TS377120: `Effect.filterOrFail` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-24T18:50:23.8370075Z
2026-10-24T18:50:23.8370129Z 11796       Effect.flatMap((planned) =>
2026-10-24T18:50:23.8370175Z             ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8370177Z
2026-10-24T18:50:23.8370506Z src/orchestration-v2/Orchestrator.ts:12219:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.restartContinuationPending")((run) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8370511Z
2026-10-24T18:50:23.8370623Z 12219     restartContinuationPending: (run) =>
2026-10-24T18:50:23.8370672Z           ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8370674Z
2026-10-24T18:50:23.8370996Z src/orchestration-v2/Orchestrator.ts:12221:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.awaitRestartContinuation")((run) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8370998Z
2026-10-24T18:50:23.8371058Z 12221     awaitRestartContinuation: (run) =>
2026-10-24T18:50:23.8371105Z           ~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8371107Z
2026-10-24T18:50:23.8371423Z src/orchestration-v2/Orchestrator.ts:12224:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.autoArmLimitRecovery")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8371427Z
2026-10-24T18:50:23.8371486Z 12224     autoArmLimitRecovery: (input) =>
2026-10-24T18:50:23.8371533Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8371537Z
2026-10-24T18:50:23.8371840Z src/orchestration-v2/Orchestrator.ts:12252:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.searchThread")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8371842Z
2026-10-24T18:50:23.8371890Z 12252     searchThread: (input) =>
2026-10-24T18:50:23.8371936Z           ~~~~~~~~~~~~
2026-10-24T18:50:23.8371938Z
2026-10-24T18:50:23.8372327Z src/orchestration-v2/Orchestrator.ts:12260:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadHistoryPage")((threadId, cursor, throughEntryId, conversationOnly) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8372329Z
2026-10-24T18:50:23.8372492Z 12260     getThreadHistoryPage: (threadId, cursor, throughEntryId, conversationOnly) =>
2026-10-24T18:50:23.8372537Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8372539Z
2026-10-24T18:50:23.8372863Z src/orchestration-v2/Orchestrator.ts:12264:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getTimelinePage")((threadId, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8372865Z
2026-10-24T18:50:23.8372934Z 12264     getTimelinePage: (threadId, options) =>
2026-10-24T18:50:23.8372979Z           ~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8372981Z
2026-10-24T18:50:23.8373292Z src/orchestration-v2/Orchestrator.ts:12268:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getMessageCount")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8373294Z
2026-10-24T18:50:23.8373348Z 12268     getMessageCount: (threadId) =>
2026-10-24T18:50:23.8373394Z           ~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8373396Z
2026-10-24T18:50:23.8373701Z src/orchestration-v2/Orchestrator.ts:12272:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getTurnItem")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8373703Z
2026-10-24T18:50:23.8373754Z 12272     getTurnItem: (input) =>
2026-10-24T18:50:23.8373798Z           ~~~~~~~~~~~
2026-10-24T18:50:23.8373800Z
2026-10-24T18:50:23.8374134Z src/orchestration-v2/Orchestrator.ts:12280:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadRecords")((threadId, fields, filter) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8374139Z
2026-10-24T18:50:23.8374211Z 12280     getThreadRecords: (threadId, fields, filter) =>
2026-10-24T18:50:23.8374257Z           ~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8374259Z
2026-10-24T18:50:23.8374579Z src/orchestration-v2/Orchestrator.ts:12284:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadProjection")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8374630Z
2026-10-24T18:50:23.8374689Z 12284     getThreadProjection: (threadId) =>
2026-10-24T18:50:23.8374732Z           ~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8374735Z
2026-10-24T18:50:23.8375053Z src/orchestration-v2/Orchestrator.ts:12288:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getCheckpointContext")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8375055Z
2026-10-24T18:50:23.8375115Z 12288     getCheckpointContext: (threadId) =>
2026-10-24T18:50:23.8375162Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8375164Z
2026-10-24T18:50:23.8375474Z src/orchestration-v2/Orchestrator.ts:12292:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadSnapshot")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8375478Z
2026-10-24T18:50:23.8375533Z 12292     getThreadSnapshot: (threadId) =>
2026-10-24T18:50:23.8375581Z           ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8375583Z
2026-10-24T18:50:23.8375927Z src/orchestration-v2/Orchestrator.ts:12296:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadSnapshotWindow")((threadId, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8375930Z
2026-10-24T18:50:23.8376005Z 12296     getThreadSnapshotWindow: (threadId, options) =>
2026-10-24T18:50:23.8376052Z           ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8376055Z
2026-10-24T18:50:23.8376362Z src/orchestration-v2/Orchestrator.ts:12300:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getShellSnapshot")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8376414Z
2026-10-24T18:50:23.8376468Z 12300     getShellSnapshot: (options) =>
2026-10-24T18:50:23.8376523Z           ~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8376526Z
2026-10-24T18:50:23.8376870Z src/orchestration-v2/Orchestrator.ts:12302:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.listActiveSubagentThreadIds")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8376873Z
2026-10-24T18:50:23.8376933Z 12302     listActiveSubagentThreadIds: () =>
2026-10-24T18:50:23.8376979Z           ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8376981Z
2026-10-24T18:50:23.8377298Z src/orchestration-v2/Orchestrator.ts:12304:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.readShellSnapshot")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8377300Z
2026-10-24T18:50:23.8377354Z 12304     readShellSnapshot: (options) =>
2026-10-24T18:50:23.8377402Z           ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8377404Z
2026-10-24T18:50:23.8377712Z src/orchestration-v2/Orchestrator.ts:12311:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadShell")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8377714Z
2026-10-24T18:50:23.8377765Z 12311     getThreadShell: (threadId) =>
2026-10-24T18:50:23.8377810Z           ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8377812Z
2026-10-24T18:50:23.8378135Z src/orchestration-v2/Orchestrator.ts:12315:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadEventSequence")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8378137Z
2026-10-24T18:50:23.8378201Z 12315     getThreadEventSequence: (threadId) =>
2026-10-24T18:50:23.8378246Z           ~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8378249Z
2026-10-24T18:50:23.8378565Z 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-24T18:50:23.8378703Z
2026-10-24T18:50:23.8378775Z 160         getInstance: () => Effect.succeed(undefined),
2026-10-24T18:50:23.8378837Z                                ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8378840Z
2026-10-24T18:50:23.8379138Z 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-24T18:50:23.8379140Z
2026-10-24T18:50:23.8379250Z 269     getShell: (projectId) => get(projectId).pipe(Effect.map(Option.map(toShell))),
2026-10-24T18:50:23.8379291Z         ~~~~~~~~
2026-10-24T18:50:23.8379293Z
2026-10-24T18:50:23.8379590Z 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-24T18:50:23.8379593Z
2026-10-24T18:50:23.8379645Z 270     listShells: (options) =>
2026-10-24T18:50:23.8379687Z         ~~~~~~~~~~
2026-10-24T18:50:23.8379689Z
2026-10-24T18:50:23.8379947Z src/orchestration-v2/ProjectionControlReads.test.ts:279:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8379953Z
2026-10-24T18:50:23.8379998Z 279           Effect.succeed(
2026-10-24T18:50:23.8380044Z               ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8380046Z
2026-10-24T18:50:23.8380380Z 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-24T18:50:23.8380382Z
2026-10-24T18:50:23.8380471Z 78       get: (instanceId) =>
2026-10-24T18:50:23.8380511Z          ~~~
2026-10-24T18:50:23.8380513Z
2026-10-24T18:50:23.8380830Z 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-24T18:50:23.8380832Z
2026-10-24T18:50:23.8380876Z 135       list: () =>
2026-10-24T18:50:23.8380920Z           ~~~~
2026-10-24T18:50:23.8380922Z
2026-10-24T18:50:23.8381244Z 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-24T18:50:23.8381246Z
2026-10-24T18:50:23.8381329Z 93       record: (properties: Readonly<Record<string, unknown>>) =>
2026-10-24T18:50:23.8381371Z          ~~~~~~
2026-10-24T18:50:23.8381373Z
2026-10-24T18:50:23.8381740Z 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-24T18:50:23.8381744Z
2026-10-24T18:50:23.8381804Z 818               Effect.flatMap((storedEvents) =>
2026-10-24T18:50:23.8381849Z                   ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8381851Z
2026-10-24T18:50:23.8382106Z src/orchestration-v2/ProviderSessionManager.test.ts:1155:19 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8382108Z
2026-10-24T18:50:23.8382230Z 1155                 : Effect.succeed(Option.some(makeBrowserAccessProject(requestedProjectId))),
2026-10-24T18:50:23.8382278Z                        ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8382280Z
2026-10-24T18:50:23.8382540Z src/orchestration-v2/ProviderTurnStartService.test.ts:150:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8382544Z
2026-10-24T18:50:23.8382595Z 150             Effect.succeed(
2026-10-24T18:50:23.8382681Z                 ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8382683Z
2026-10-24T18:50:23.8382940Z src/orchestration-v2/ProviderTurnStartService.test.ts:703:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8382942Z
2026-10-24T18:50:23.8383077Z 703             Effect.succeed(Option.some({ workspaceRoot: "/tmp/native-account-project" } as never)),
2026-10-24T18:50:23.8383123Z                 ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8383125Z
2026-10-24T18:50:23.8383383Z src/orchestration-v2/ProviderTurnStartService.testkit.ts:14:20 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8383388Z
2026-10-24T18:50:23.8383453Z 14     getById: () => Effect.succeed(Option.none()),
2026-10-24T18:50:23.8383504Z                       ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8383507Z
2026-10-24T18:50:23.8383797Z src/orchestration-v2/ProviderTurnStartService.ts:205:39 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T18:50:23.8383799Z
2026-10-24T18:50:23.8383881Z 205               Effect.catchCause(() => Effect.succeed(undefined)),
2026-10-24T18:50:23.8383940Z                                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8383942Z
2026-10-24T18:50:23.8384317Z src/orchestration-v2/ProviderTurnStartService.ts:512:15 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T18:50:23.8384319Z
2026-10-24T18:50:23.8384379Z 512               Effect.catchCause((cause) =>
2026-10-24T18:50:23.8384469Z                   ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8384472Z
2026-10-24T18:50:23.8384881Z src/orchestration-v2/ProviderTurnStartService.ts:1302:7 - suggestion TS377014: This generator returns an Effect-able value directly, which produces a nested `Effect<Effect<...>>`. If the intended result is the inner Effect value, `return yield*` represents that form. effect(returnEffectInGen)
2026-10-24T18:50:23.8384883Z
2026-10-24T18:50:23.8384945Z 1302       return runExecution.startRootRun({
2026-10-24T18:50:23.8384985Z            ~~~~~~
2026-10-24T18:50:23.8384987Z
2026-10-24T18:50:23.8385242Z src/orchestration-v2/PullRequestWatchReactor.ts:478:53 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T18:50:23.8385244Z
2026-10-24T18:50:23.8385344Z 478             ? pullRequests.activity(reference).pipe(Effect.map(Option.some))
2026-10-24T18:50:23.8385406Z                                                         ~~~~~~~~~~
2026-10-24T18:50:23.8385410Z
2026-10-24T18:50:23.8385766Z 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-24T18:50:23.8385771Z
2026-10-24T18:50:23.8385841Z 49       cleanupScheduledTasks: (threadId: ThreadId) =>
2026-10-24T18:50:23.8385887Z          ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8385889Z
2026-10-24T18:50:23.8386233Z 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-24T18:50:23.8386235Z
2026-10-24T18:50:23.8386297Z 58       cleanupTerminals: (threadId: string) =>
2026-10-24T18:50:23.8386340Z          ~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8386342Z
2026-10-24T18:50:23.8386762Z 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-24T18:50:23.8386765Z
2026-10-24T18:50:23.8386826Z 66       cleanupPreviews: (threadId: string) =>
2026-10-24T18:50:23.8386871Z          ~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8386873Z
2026-10-24T18:50:23.8387229Z 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-24T18:50:23.8387232Z
2026-10-24T18:50:23.8387321Z 74       cleanupAttachments: (attachmentIds: ReadonlyArray<string>) =>
2026-10-24T18:50:23.8387367Z          ~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8387369Z
2026-10-24T18:50:23.8387626Z 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-24T18:50:23.8387630Z
2026-10-24T18:50:23.8387691Z 1812         ).pipe(Effect.map(Option.some)),
2026-10-24T18:50:23.8387737Z                     ~~~~~~~~~~
2026-10-24T18:50:23.8387739Z
2026-10-24T18:50:23.8388101Z src/orchestration-v2/RunExecutionService.ts:931:15 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T18:50:23.8388106Z
2026-10-24T18:50:23.8388161Z 931               Effect.catchCause((cause) =>
2026-10-24T18:50:23.8388210Z                   ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8388212Z
2026-10-24T18:50:23.8388450Z src/orchestration-v2/RuntimePolicy.test.ts:90:9 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8388559Z
2026-10-24T18:50:23.8388607Z 90         Effect.succeed(
2026-10-24T18:50:23.8388650Z            ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8388652Z
2026-10-24T18:50:23.8388948Z 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-24T18:50:23.8388951Z
2026-10-24T18:50:23.8389001Z 54   resolve: (input) =>
2026-10-24T18:50:23.8389044Z      ~~~~~~~
2026-10-24T18:50:23.8389046Z
2026-10-24T18:50:23.8389293Z src/orchestration-v2/RuntimeRequestService.test.ts:29:7 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8389299Z
2026-10-24T18:50:23.8389344Z 29       Effect.succeed(
2026-10-24T18:50:23.8389390Z          ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8389392Z
2026-10-24T18:50:23.8389640Z src/orchestration-v2/ThreadLaunchService.test.ts:189:33 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8389645Z
2026-10-24T18:50:23.8389741Z 189       getByWorkspaceRoot: () => Effect.succeed(Option.some(project)),
2026-10-24T18:50:23.8389793Z                                     ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8389795Z
2026-10-24T18:50:23.8390041Z src/orchestration-v2/ThreadLaunchService.test.ts:220:32 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8390043Z
2026-10-24T18:50:23.8390125Z 220         folderForThread: () => Effect.succeed(Option.none()),
2026-10-24T18:50:23.8390177Z                                    ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8390179Z
2026-10-24T18:50:23.8390501Z 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-24T18:50:23.8390505Z
2026-10-24T18:50:23.8390551Z 91     archive: (input) =>
2026-10-24T18:50:23.8390595Z        ~~~~~~~
2026-10-24T18:50:23.8390597Z
2026-10-24T18:50:23.8390966Z 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-24T18:50:23.8390968Z
2026-10-24T18:50:23.8391019Z 97     unarchive: (input) =>
2026-10-24T18:50:23.8391061Z        ~~~~~~~~~
2026-10-24T18:50:23.8391063Z
2026-10-24T18:50:23.8391382Z 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-24T18:50:23.8391385Z
2026-10-24T18:50:23.8391433Z 103     delete: (input) =>
2026-10-24T18:50:23.8391474Z         ~~~~~~
2026-10-24T18:50:23.8391478Z
2026-10-24T18:50:23.8391818Z 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-24T18:50:23.8391821Z
2026-10-24T18:50:23.8391875Z 109     updateMetadata: (input) =>
2026-10-24T18:50:23.8391918Z         ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8391920Z
2026-10-24T18:50:23.8392255Z 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-24T18:50:23.8392257Z
2026-10-24T18:50:23.8392310Z 118     setRuntimeMode: (input) =>
2026-10-24T18:50:23.8392355Z         ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8392357Z
2026-10-24T18:50:23.8392697Z 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-24T18:50:23.8392744Z
2026-10-24T18:50:23.8392800Z 125     setInteractionMode: (input) =>
2026-10-24T18:50:23.8392845Z         ~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8392848Z
2026-10-24T18:50:23.8393191Z 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-24T18:50:23.8393193Z
2026-10-24T18:50:23.8393254Z 132     setModelSelection: (input) =>
2026-10-24T18:50:23.8393297Z         ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8393299Z
2026-10-24T18:50:23.8393670Z 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-24T18:50:23.8393675Z
2026-10-24T18:50:23.8393731Z 689       Effect.flatMap((projection) =>
2026-10-24T18:50:23.8393778Z           ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8393780Z
2026-10-24T18:50:23.8394057Z 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-24T18:50:23.8394060Z
2026-10-24T18:50:23.8394125Z 706     ensureProjectionTranscript(input.threadId)
2026-10-24T18:50:23.8394179Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8394314Z 707       .pipe(Effect.andThen(orchestrator.getThreadRecords(input.threadId, fields, filter)))
2026-10-24T18:50:23.8394399Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8394439Z ...
2026-10-24T18:50:23.8394481Z 726         ),
2026-10-24T18:50:23.8394525Z     ~~~~~~~~~~
2026-10-24T18:50:23.8394568Z 727       );
2026-10-24T18:50:23.8394609Z     ~~~~~~~
2026-10-24T18:50:23.8394612Z
2026-10-24T18:50:23.8395019Z 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-24T18:50:23.8395022Z
2026-10-24T18:50:23.8395080Z 717         Effect.flatMap((projection) =>
2026-10-24T18:50:23.8395126Z             ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8395128Z
2026-10-24T18:50:23.8395490Z 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-24T18:50:23.8395493Z
2026-10-24T18:50:23.8395592Z 1131     if (failures[0] !== undefined) return yield* Effect.fail(failures[0]);
2026-10-24T18:50:23.8395649Z                                                ~~~~~
2026-10-24T18:50:23.8395651Z
2026-10-24T18:50:23.8395995Z 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-24T18:50:23.8395997Z
2026-10-24T18:50:23.8396049Z 1142     searchThread: (input) =>
2026-10-24T18:50:23.8396093Z          ~~~~~~~~~~~~
2026-10-24T18:50:23.8396095Z
2026-10-24T18:50:23.8396526Z 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-24T18:50:23.8396528Z
2026-10-24T18:50:23.8396674Z 1147     getThreadHistoryPage: (threadId, cursor, throughEntryId, conversationOnly) =>
2026-10-24T18:50:23.8396765Z          ~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8396767Z
2026-10-24T18:50:23.8397128Z 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-24T18:50:23.8397130Z
2026-10-24T18:50:23.8397196Z 1153     getTimelinePage: (threadId, options) =>
2026-10-24T18:50:23.8397238Z          ~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8397240Z
2026-10-24T18:50:23.8397587Z 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-24T18:50:23.8397589Z
2026-10-24T18:50:23.8397645Z 1157     getMessageCount: (threadId) =>
2026-10-24T18:50:23.8397689Z          ~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8397693Z
2026-10-24T18:50:23.8398031Z 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-24T18:50:23.8398033Z
2026-10-24T18:50:23.8398084Z 1161     getTurnItem: (input) =>
2026-10-24T18:50:23.8398130Z          ~~~~~~~~~~~
2026-10-24T18:50:23.8398133Z
2026-10-24T18:50:23.8398505Z 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-24T18:50:23.8398508Z
2026-10-24T18:50:23.8398579Z 1166     getThreadRecords: (threadId, fields, filter) =>
2026-10-24T18:50:23.8398622Z          ~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8398626Z
2026-10-24T18:50:23.8399041Z 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-24T18:50:23.8399045Z
2026-10-24T18:50:23.8399179Z 1206     ensureTranscript: () => Effect.succeed({ importedThreadCount: 0, importedMessageCount: 0 }),
2026-10-24T18:50:23.8399223Z          ~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8399225Z
2026-10-24T18:50:23.8399489Z src/orchestration-v2/ThreadPullRequestService.test.ts:119:29 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8399491Z
2026-10-24T18:50:23.8399572Z 119             getShell: () => Effect.succeed(Option.some(project)),
2026-10-24T18:50:23.8399620Z                                 ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8399623Z
2026-10-24T18:50:23.8399881Z src/orchestration-v2/ThreadPullRequestService.test.ts:238:31 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8399885Z
2026-10-24T18:50:23.8399969Z 238               getShell: () => Effect.succeed(Option.some(project)),
2026-10-24T18:50:23.8400021Z                                   ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8400024Z
2026-10-24T18:50:23.8400401Z src/orchestration-v2/ThreadPullRequestService.ts:326:17 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T18:50:23.8400403Z
2026-10-24T18:50:23.8400458Z 326                 Effect.catchCause((cause) =>
2026-10-24T18:50:23.8400507Z                     ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8400510Z
2026-10-24T18:50:23.8400879Z src/orchestration-v2/ThreadSettlementService.ts:342:11 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T18:50:23.8400920Z
2026-10-24T18:50:23.8400977Z 342           Effect.catchCause((cause) =>
2026-10-24T18:50:23.8401023Z               ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8401028Z
2026-10-24T18:50:23.8401396Z src/orchestration-v2/ThreadSettlementService.ts:505:11 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T18:50:23.8401398Z
2026-10-24T18:50:23.8401454Z 505           Effect.catchCause((cause) =>
2026-10-24T18:50:23.8401499Z               ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8401502Z
2026-10-24T18:50:23.8401868Z src/orchestration-v2/ThreadSettlementService.ts:523:7 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T18:50:23.8401873Z
2026-10-24T18:50:23.8401925Z 523       Effect.catchCause((cause) =>
2026-10-24T18:50:23.8401968Z           ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8401972Z
2026-10-24T18:50:23.8402337Z src/orchestration-v2/ThreadSettlementService.ts:565:9 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T18:50:23.8402339Z
2026-10-24T18:50:23.8402393Z 565         Effect.catchCause((cause) =>
2026-10-24T18:50:23.8402440Z             ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8402442Z
2026-10-24T18:50:23.8402783Z 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-24T18:50:23.8402788Z
2026-10-24T18:50:23.8402843Z 106       normalize: (item, runOrdinal) =>
2026-10-24T18:50:23.8402885Z           ~~~~~~~~~
2026-10-24T18:50:23.8402887Z
2026-10-24T18:50:23.8403318Z 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-24T18:50:23.8403321Z
2026-10-24T18:50:23.8403420Z 54 const thread = Schema.decodeUnknownSync(OrchestrationV2AppThread)({
2026-10-24T18:50:23.8403467Z                          ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8403470Z
2026-10-24T18:50:23.8403833Z 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-24T18:50:23.8403835Z
2026-10-24T18:50:23.8403882Z 231           try {
2026-10-24T18:50:23.8403924Z               ~~~~~
2026-10-24T18:50:23.8404006Z 232             decodeThreadHistoryCursor(args.query.cursor);
2026-10-24T18:50:23.8404070Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8404112Z ...
2026-10-24T18:50:23.8404245Z 236             return yield* failEnvironmentInternal("orchestration_thread_history_failed", cause);
2026-10-24T18:50:23.8404332Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8404372Z 237           }
2026-10-24T18:50:23.8404414Z     ~~~~~~~~~~~
2026-10-24T18:50:23.8404416Z
2026-10-24T18:50:23.8404656Z src/orchestration-v2/runtimeLayer.test.ts:120:18 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8404658Z
2026-10-24T18:50:23.8404725Z 120   getById: () => Effect.succeed(Option.none()),
2026-10-24T18:50:23.8404770Z                      ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8404819Z
2026-10-24T18:50:23.8405057Z src/orchestration-v2/runtimeLayer.test.ts:997:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8405059Z
2026-10-24T18:50:23.8405108Z 997           Effect.succeed(
2026-10-24T18:50:23.8405154Z               ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8405156Z
2026-10-24T18:50:23.8405518Z 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-24T18:50:23.8405521Z
2026-10-24T18:50:23.8405567Z 40         append: (input) =>
2026-10-24T18:50:23.8405609Z            ~~~~~~
2026-10-24T18:50:23.8405611Z
2026-10-24T18:50:23.8405921Z 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-24T18:50:23.8405925Z
2026-10-24T18:50:23.8405987Z 283       const awaitDispatch = (key: string) =>
2026-10-24T18:50:23.8406035Z                 ~~~~~~~~~~~~~
2026-10-24T18:50:23.8406037Z
2026-10-24T18:50:23.8406442Z 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-24T18:50:23.8406445Z
2026-10-24T18:50:23.8406508Z 447       execute: () => Effect.void,
2026-10-24T18:50:23.8406550Z           ~~~~~~~
2026-10-24T18:50:23.8406552Z
2026-10-24T18:50:23.8406920Z 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-24T18:50:23.8406924Z
2026-10-24T18:50:23.8406971Z 92     list: (input) =>
2026-10-24T18:50:23.8407011Z        ~~~~
2026-10-24T18:50:23.8407013Z
2026-10-24T18:50:23.8407433Z 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-24T18:50:23.8407436Z
2026-10-24T18:50:23.8407481Z 102     set: (input) =>
2026-10-24T18:50:23.8407522Z         ~~~
2026-10-24T18:50:23.8407524Z
2026-10-24T18:50:23.8407845Z 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-24T18:50:23.8407849Z
2026-10-24T18:50:23.8407891Z 54     get: (key) =>
2026-10-24T18:50:23.8407933Z        ~~~
2026-10-24T18:50:23.8407936Z
2026-10-24T18:50:23.8408272Z 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-24T18:50:23.8408274Z
2026-10-24T18:50:23.8408322Z 64     put: (key, guide) =>
2026-10-24T18:50:23.8408361Z        ~~~
2026-10-24T18:50:23.8408363Z
2026-10-24T18:50:23.8408697Z 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-24T18:50:23.8408699Z
2026-10-24T18:50:23.8408750Z 45         Effect.catch((error) =>
2026-10-24T18:50:23.8408794Z            ~~~~~~~~~~~~
2026-10-24T18:50:23.8408796Z
2026-10-24T18:50:23.8409111Z 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-24T18:50:23.8409163Z
2026-10-24T18:50:23.8409227Z 75       awaitAttached: () => Effect.succeed(false),
2026-10-24T18:50:23.8409273Z          ~~~~~~~~~~~~~
2026-10-24T18:50:23.8409275Z
2026-10-24T18:50:23.8409580Z 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-24T18:50:23.8409582Z
2026-10-24T18:50:23.8409641Z 78       isAttached: () => Effect.succeed(false),
2026-10-24T18:50:23.8409681Z          ~~~~~~~~~~
2026-10-24T18:50:23.8409686Z
2026-10-24T18:50:23.8409979Z 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-24T18:50:23.8409981Z
2026-10-24T18:50:23.8410082Z 79       endpoint: () => Effect.die("No desktop app is attached to this server."),
2026-10-24T18:50:23.8410125Z          ~~~~~~~~
2026-10-24T18:50:23.8410127Z
2026-10-24T18:50:23.8410421Z 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-24T18:50:23.8410423Z
2026-10-24T18:50:23.8410475Z 80       pointer: () => Effect.void,
2026-10-24T18:50:23.8410514Z          ~~~~~~~
2026-10-24T18:50:23.8410517Z
2026-10-24T18:50:23.8410840Z 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-24T18:50:23.8410842Z
2026-10-24T18:50:23.8410896Z 194     awaitAttached: (key, timeout) =>
2026-10-24T18:50:23.8410940Z         ~~~~~~~~~~~~~
2026-10-24T18:50:23.8410942Z
2026-10-24T18:50:23.8411287Z 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-24T18:50:23.8411292Z
2026-10-24T18:50:23.8411388Z 216     isAttached: (key) => Effect.sync(() => attachedTabs.has(keyOf(key))),
2026-10-24T18:50:23.8411430Z         ~~~~~~~~~~
2026-10-24T18:50:23.8411432Z
2026-10-24T18:50:23.8411745Z 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-24T18:50:23.8411747Z
2026-10-24T18:50:23.8411850Z 218     pointer: (key, pointer) => command({ type: "pointer", ...key, ...pointer }),
2026-10-24T18:50:23.8411890Z         ~~~~~~~
2026-10-24T18:50:23.8411892Z
2026-10-24T18:50:23.8412339Z src/preview/ServerBrowser.ts:481:23 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T18:50:23.8412343Z
2026-10-24T18:50:23.8412439Z 481     executable: () => Effect.runPromise(previewBrowser.executable),
2026-10-24T18:50:23.8412488Z                           ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8412490Z
2026-10-24T18:50:23.8412925Z src/preview/ServerBrowser.ts:688:9 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T18:50:23.8412928Z
2026-10-24T18:50:23.8412979Z 688       ? Effect.runPromise(
2026-10-24T18:50:23.8413023Z             ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8413026Z
2026-10-24T18:50:23.8413500Z src/preview/ServerBrowser.ts:697:25 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T18:50:23.8413502Z
2026-10-24T18:50:23.8413581Z 697     const scope = await Effect.runPromise(Scope.make());
2026-10-24T18:50:23.8413633Z                             ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8413636Z
2026-10-24T18:50:23.8414067Z src/preview/ServerBrowser.ts:699:30 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T18:50:23.8414069Z
2026-10-24T18:50:23.8414133Z 699       const endpoint = await Effect.runPromise(
2026-10-24T18:50:23.8414188Z                                  ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8414191Z
2026-10-24T18:50:23.8414627Z src/preview/ServerBrowser.ts:709:17 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T18:50:23.8414630Z
2026-10-24T18:50:23.8414713Z 709           await Effect.runPromise(Scope.close(scope, Exit.void));
2026-10-24T18:50:23.8414763Z                     ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8414765Z
2026-10-24T18:50:23.8415194Z src/preview/ServerBrowser.ts:713:13 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T18:50:23.8415201Z
2026-10-24T18:50:23.8415283Z 713       await Effect.runPromise(Scope.close(scope, Exit.void));
2026-10-24T18:50:23.8415330Z                 ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8415333Z
2026-10-24T18:50:23.8415806Z src/preview/ServerBrowser.ts:1200:11 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T18:50:23.8415809Z
2026-10-24T18:50:23.8415859Z 1200     await Effect.runPromise(
2026-10-24T18:50:23.8415903Z                ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8415906Z
2026-10-24T18:50:23.8416343Z src/preview/ServerBrowser.ts:1693:17 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T18:50:23.8416347Z
2026-10-24T18:50:23.8416402Z 1693         : await Effect.runPromise(
2026-10-24T18:50:23.8416452Z                      ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8416455Z
2026-10-24T18:50:23.8416912Z src/preview/ServerBrowser.ts:1757:21 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T18:50:23.8416915Z
2026-10-24T18:50:23.8416971Z 1757             ? await Effect.runPromise(
2026-10-24T18:50:23.8417017Z                          ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8417019Z
2026-10-24T18:50:23.8417280Z src/preview/ServerBrowser.ts:1760:58 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T18:50:23.8417327Z
2026-10-24T18:50:23.8417433Z 1760                     ServerBrowserTabNotFoundError: () => Effect.succeed(undefined),
2026-10-24T18:50:23.8417505Z                                                               ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8417507Z
2026-10-24T18:50:23.8417938Z src/preview/ServerBrowser.ts:1766:38 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T18:50:23.8417940Z
2026-10-24T18:50:23.8418011Z 1766           const { sessions } = await Effect.runPromise(
2026-10-24T18:50:23.8418070Z                                           ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8418072Z
2026-10-24T18:50:23.8418506Z src/preview/ServerBrowser.ts:1794:19 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T18:50:23.8418512Z
2026-10-24T18:50:23.8418566Z 1794             await Effect.runPromise(
2026-10-24T18:50:23.8418613Z                        ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8418615Z
2026-10-24T18:50:23.8419048Z src/preview/ServerBrowser.ts:1825:21 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T18:50:23.8419053Z
2026-10-24T18:50:23.8419105Z 1825               await Effect.runPromise(
2026-10-24T18:50:23.8419152Z                          ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8419154Z
2026-10-24T18:50:23.8419640Z src/preview/ServerBrowser.ts:1889:13 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T18:50:23.8419644Z
2026-10-24T18:50:23.8419773Z 1889       await Effect.runPromise(manager.close({ threadId: tab.threadId, tabId: tab.tabId }));
2026-10-24T18:50:23.8419819Z                  ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8419823Z
2026-10-24T18:50:23.8420252Z src/preview/ServerBrowser.ts:1957:15 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T18:50:23.8420254Z
2026-10-24T18:50:23.8420305Z 1957         await Effect.runPromise(
2026-10-24T18:50:23.8420351Z                    ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8420355Z
2026-10-24T18:50:23.8420787Z src/preview/ServerBrowser.ts:1969:32 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T18:50:23.8420790Z
2026-10-24T18:50:23.8420858Z 1969         const snapshot = await Effect.runPromise(
2026-10-24T18:50:23.8420910Z                                     ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8420912Z
2026-10-24T18:50:23.8421344Z src/preview/ServerBrowser.ts:2215:15 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-24T18:50:23.8421346Z
2026-10-24T18:50:23.8421397Z 2215         await Effect.runPromise(
2026-10-24T18:50:23.8421487Z                    ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8421489Z
2026-10-24T18:50:23.8421761Z 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-24T18:50:23.8421763Z
2026-10-24T18:50:23.8421834Z 179       const receive = (chunk: Uint8Array | string) => {
2026-10-24T18:50:23.8421879Z                 ~~~~~~~
2026-10-24T18:50:23.8421881Z
2026-10-24T18:50:23.8422173Z 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-24T18:50:23.8422175Z
2026-10-24T18:50:23.8422269Z 209     Effect.catch(() => Effect.succeed(HttpServerResponse.empty())),
2026-10-24T18:50:23.8422311Z         ~~~~~~~~~~~~
2026-10-24T18:50:23.8422314Z
2026-10-24T18:50:23.8422632Z 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-24T18:50:23.8422635Z
2026-10-24T18:50:23.8422723Z 860     resolveAvailableEditors: () => cachedAvailableEditors,
2026-10-24T18:50:23.8422769Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8422772Z
2026-10-24T18:50:23.8423087Z 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-24T18:50:23.8423090Z
2026-10-24T18:50:23.8423149Z 861     resolveFileManagerRevealKind: () =>
2026-10-24T18:50:23.8423193Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8423195Z
2026-10-24T18:50:23.8423495Z 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-24T18:50:23.8423500Z
2026-10-24T18:50:23.8423550Z 865     launchBrowser: (target) =>
2026-10-24T18:50:23.8423636Z         ~~~~~~~~~~~~~
2026-10-24T18:50:23.8423638Z
2026-10-24T18:50:23.8423932Z 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-24T18:50:23.8423937Z
2026-10-24T18:50:23.8423987Z 869     launchEditor: (input) =>
2026-10-24T18:50:23.8424031Z         ~~~~~~~~~~~~
2026-10-24T18:50:23.8424033Z
2026-10-24T18:50:23.8424274Z src/project/AgentSessionImporter.test.ts:212:15 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8424276Z
2026-10-24T18:50:23.8424326Z 212               Effect.succeed(
2026-10-24T18:50:23.8424371Z                   ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8424373Z
2026-10-24T18:50:23.8458189Z src/project/ManagedProjectFolders.ts:346:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8458200Z
2026-10-24T18:50:23.8458344Z 346           ? Effect.succeed(Option.some(folderFor(id.slice(-8))))
2026-10-24T18:50:23.8458411Z                 ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8458414Z
2026-10-24T18:50:23.8458786Z src/project/ManagedProjectFolders.ts:348:15 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8458789Z
2026-10-24T18:50:23.8458890Z 348             ? Effect.succeed(Option.some(fullFolder))
2026-10-24T18:50:23.8458957Z                   ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8458960Z
2026-10-24T18:50:23.8459454Z 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-24T18:50:23.8459616Z
2026-10-24T18:50:23.8459737Z 432     start: (input, hooks) => locked(start(input, hooks)),
2026-10-24T18:50:23.8459787Z         ~~~~~
2026-10-24T18:50:23.8459790Z
2026-10-24T18:50:23.8460094Z 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-24T18:50:23.8460096Z
2026-10-24T18:50:23.8460163Z 433     cancel: (projectId) => locked(cancel(projectId)),
2026-10-24T18:50:23.8460201Z         ~~~~~~
2026-10-24T18:50:23.8460203Z
2026-10-24T18:50:23.8460496Z 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-24T18:50:23.8460500Z
2026-10-24T18:50:23.8460563Z 434     retry: (projectId) => locked(retry(projectId)),
2026-10-24T18:50:23.8460600Z         ~~~~~
2026-10-24T18:50:23.8460602Z
2026-10-24T18:50:23.8460900Z 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-24T18:50:23.8460902Z
2026-10-24T18:50:23.8460973Z 435     discard: (projectId) => locked(discard(projectId)),
2026-10-24T18:50:23.8461010Z         ~~~~~~~
2026-10-24T18:50:23.8461013Z
2026-10-24T18:50:23.8461324Z 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-24T18:50:23.8461327Z
2026-10-24T18:50:23.8461420Z 21         get: (key) => Effect.sync(() => Option.fromUndefinedOr(bytes.get(key))),
2026-10-24T18:50:23.8461460Z            ~~~
2026-10-24T18:50:23.8461462Z
2026-10-24T18:50:23.8461841Z 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-24T18:50:23.8461844Z
2026-10-24T18:50:23.8461892Z 22         set: (key, value) =>
2026-10-24T18:50:23.8461927Z            ~~~
2026-10-24T18:50:23.8461929Z
2026-10-24T18:50:23.8462246Z 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-24T18:50:23.8462248Z
2026-10-24T18:50:23.8462292Z 26         remove: (key) =>
2026-10-24T18:50:23.8462332Z            ~~~~~~
2026-10-24T18:50:23.8462334Z
2026-10-24T18:50:23.8462645Z 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-24T18:50:23.8462650Z
2026-10-24T18:50:23.8462744Z 30         create: () => Effect.die("Handoff does not create persistent secrets."),
2026-10-24T18:50:23.8462782Z            ~~~~~~
2026-10-24T18:50:23.8462784Z
2026-10-24T18:50:23.8463120Z 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-24T18:50:23.8463122Z
2026-10-24T18:50:23.8463245Z 31         getOrCreateRandom: () => Effect.die("Handoff uses the destination environment identity."),
2026-10-24T18:50:23.8463288Z            ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8463290Z
2026-10-24T18:50:23.8463694Z 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-24T18:50:23.8463734Z
2026-10-24T18:50:23.8463840Z 205     return yield* Schema.decodeUnknownEffect(Schema.fromJsonString(schema))(
2026-10-24T18:50:23.8463892Z                              ~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8463894Z
2026-10-24T18:50:23.8464151Z 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-24T18:50:23.8464153Z
2026-10-24T18:50:23.8464202Z 569         ? Effect.succeed(undefined)
2026-10-24T18:50:23.8464246Z               ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8464248Z
2026-10-24T18:50:23.8464551Z 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-24T18:50:23.8464555Z
2026-10-24T18:50:23.8464603Z 284       current: (driverKind) =>
2026-10-24T18:50:23.8464643Z           ~~~~~~~
2026-10-24T18:50:23.8464645Z
2026-10-24T18:50:23.8464989Z 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-24T18:50:23.8464993Z
2026-10-24T18:50:23.8465046Z 284                 return yield* Effect.fail(
2026-10-24T18:50:23.8465089Z                            ~~~~~
2026-10-24T18:50:23.8465091Z
2026-10-24T18:50:23.8465399Z 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-24T18:50:23.8465401Z
2026-10-24T18:50:23.8465454Z 211     importProfile: (input) =>
2026-10-24T18:50:23.8465493Z         ~~~~~~~~~~~~~
2026-10-24T18:50:23.8465495Z
2026-10-24T18:50:23.8465865Z 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-24T18:50:23.8465867Z
2026-10-24T18:50:23.8465926Z 39       credentials: (namespace, bindingId) =>
2026-10-24T18:50:23.8465966Z          ~~~~~~~~~~~
2026-10-24T18:50:23.8465968Z
2026-10-24T18:50:23.8466322Z src/pullRequest/PullRequestService.ts:2984:7 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T18:50:23.8466324Z
2026-10-24T18:50:23.8466372Z 2984       Effect.catchCause((cause) =>
2026-10-24T18:50:23.8466416Z            ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8466420Z
2026-10-24T18:50:23.8466823Z src/pullRequest/PullRequestService.ts:3387:7 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T18:50:23.8466825Z
2026-10-24T18:50:23.8466874Z 3387       Effect.catchCause((cause) =>
2026-10-24T18:50:23.8466913Z            ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8466916Z
2026-10-24T18:50:23.8467219Z src/pullRequest/PullRequestService.ts:3607:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestService.listStats")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8467222Z
2026-10-24T18:50:23.8467269Z 3607     listStats: (input) =>
2026-10-24T18:50:23.8467309Z          ~~~~~~~~~
2026-10-24T18:50:23.8467311Z
2026-10-24T18:50:23.8467538Z src/relay/AgentAwarenessRelay.test.ts:271:9 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T18:50:23.8467581Z
2026-10-24T18:50:23.8467625Z 271         Effect.succeed(
2026-10-24T18:50:23.8467669Z             ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8467672Z
2026-10-24T18:50:23.8467970Z 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-24T18:50:23.8467973Z
2026-10-24T18:50:23.8468088Z 822     requestCatchUp: () => Queue.offer(catchUpRequests, undefined).pipe(Effect.asVoid),
2026-10-24T18:50:23.8468128Z         ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8468130Z
2026-10-24T18:50:23.8468492Z 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-24T18:50:23.8468497Z
2026-10-24T18:50:23.8468554Z 641     requestDesktopUpdate: (requestId) =>
2026-10-24T18:50:23.8468595Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8468597Z
2026-10-24T18:50:23.8468955Z 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-24T18:50:23.8468957Z
2026-10-24T18:50:23.8469012Z 647     commitDesktopUpdate: (requestId) =>
2026-10-24T18:50:23.8469052Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8469054Z
2026-10-24T18:50:23.8469407Z 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-24T18:50:23.8469410Z
2026-10-24T18:50:23.8469463Z 649     cancelDesktopUpdate: (requestId) =>
2026-10-24T18:50:23.8469505Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8469507Z
2026-10-24T18:50:23.8469886Z 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-24T18:50:23.8469889Z
2026-10-24T18:50:23.8469949Z 698       setDiagnosticsDemand: () => Effect.void,
2026-10-24T18:50:23.8469994Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8469996Z
2026-10-24T18:50:23.8470343Z 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-24T18:50:23.8470345Z
2026-10-24T18:50:23.8470405Z 699       requestDesktopUpdate: () => Effect.void,
2026-10-24T18:50:23.8470446Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8470450Z
2026-10-24T18:50:23.8470793Z 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-24T18:50:23.8470795Z
2026-10-24T18:50:23.8470854Z 700       commitDesktopUpdate: () => Effect.void,
2026-10-24T18:50:23.8470896Z           ~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8470898Z
2026-10-24T18:50:23.8471240Z 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-24T18:50:23.8471242Z
2026-10-24T18:50:23.8471300Z 701       cancelDesktopUpdate: () => Effect.void,
2026-10-24T18:50:23.8471341Z           ~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8471343Z
2026-10-24T18:50:23.8471709Z 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-24T18:50:23.8471711Z
2026-10-24T18:50:23.8471754Z 1091       readHistory: () =>
2026-10-24T18:50:23.8471794Z            ~~~~~~~~~~~
2026-10-24T18:50:23.8471796Z
2026-10-24T18:50:23.8472126Z 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-24T18:50:23.8472128Z
2026-10-24T18:50:23.8472187Z 1097       setExternalProcesses: () => Effect.void,
2026-10-24T18:50:23.8472230Z            ~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8472232Z
2026-10-24T18:50:23.8472563Z 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-24T18:50:23.8472567Z
2026-10-24T18:50:23.8472626Z 1098       setHostPowerState: () => Effect.void,
2026-10-24T18:50:23.8472668Z            ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8472670Z
2026-10-24T18:50:23.8472949Z 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-24T18:50:23.8472951Z
2026-10-24T18:50:23.8473017Z 1136                             ? Effect.succeed(undefined)
2026-10-24T18:50:23.8473072Z                                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8473074Z
2026-10-24T18:50:23.8473340Z 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-24T18:50:23.8473344Z
2026-10-24T18:50:23.8473398Z 166       const results = yield* Effect.all(
2026-10-24T18:50:23.8473444Z                                  ~~~~~~~~~~
2026-10-24T18:50:23.8473446Z
2026-10-24T18:50:23.8473826Z src/server.ts:481:5 - suggestion TS377014: This generator returns an Effect-able value directly, which produces a nested `Effect<Effect<...>>`. If the intended result is the inner Effect value, `return yield*` represents that form. effect(returnEffectInGen)
2026-10-24T18:50:23.8473829Z
2026-10-24T18:50:23.8473880Z 481     return Effect.gen(function* () {
2026-10-24T18:50:23.8473919Z         ~~~~~~
2026-10-24T18:50:23.8473921Z
2026-10-24T18:50:23.8474180Z 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-24T18:50:23.8474183Z
2026-10-24T18:50:23.8474246Z 209           prepareTrial: Effect.succeed(undefined),
2026-10-24T18:50:23.8474301Z                             ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8474304Z
2026-10-24T18:50:23.8474562Z 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-24T18:50:23.8474564Z
2026-10-24T18:50:23.8474617Z 413       const results = yield* Effect.all(
2026-10-24T18:50:23.8474659Z                                  ~~~~~~~~~~
2026-10-24T18:50:23.8474662Z
2026-10-24T18:50:23.8475057Z 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-24T18:50:23.8475059Z
2026-10-24T18:50:23.8475112Z 204     listChangeRequests: (input) =>
2026-10-24T18:50:23.8475154Z         ~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8475156Z
2026-10-24T18:50:23.8475586Z 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-24T18:50:23.8475589Z
2026-10-24T18:50:23.8475638Z 209     getChangeRequest: (input) =>
2026-10-24T18:50:23.8475679Z         ~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8475681Z
2026-10-24T18:50:23.8476069Z 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-24T18:50:23.8476071Z
2026-10-24T18:50:23.8476122Z 214     createChangeRequest: (input) =>
2026-10-24T18:50:23.8476163Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8476165Z
2026-10-24T18:50:23.8476580Z 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-24T18:50:23.8476588Z
2026-10-24T18:50:23.8476642Z 219     getRepositoryCloneUrls: (input) =>
2026-10-24T18:50:23.8476684Z         ~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8476686Z
2026-10-24T18:50:23.8477065Z 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-24T18:50:23.8477068Z
2026-10-24T18:50:23.8477159Z 224     createRepository: (input) => provider.createRepository(input),
2026-10-24T18:50:23.8477199Z         ~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8477201Z
2026-10-24T18:50:23.8477579Z 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-24T18:50:23.8477618Z
2026-10-24T18:50:23.8477667Z 225     getDefaultBranch: (input) =>
2026-10-24T18:50:23.8477706Z         ~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8477709Z
2026-10-24T18:50:23.8478102Z 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-24T18:50:23.8478104Z
2026-10-24T18:50:23.8478157Z 230     checkoutChangeRequest: (input) =>
2026-10-24T18:50:23.8478198Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8478201Z
2026-10-24T18:50:23.8478546Z 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-24T18:50:23.8478550Z
2026-10-24T18:50:23.8478677Z 345       resolve: (input) => resolveHandle(input).pipe(Effect.map((handle) => handle.provider)),
2026-10-24T18:50:23.8478716Z           ~~~~~~~
2026-10-24T18:50:23.8478718Z
2026-10-24T18:50:23.8479066Z src/sourceControl/SourceControlRepositoryService.ts:406:7 - suggestion TS377116: `Effect.catchIf` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T18:50:23.8479070Z
2026-10-24T18:50:23.8479117Z 406       Effect.catch((sshError) =>
2026-10-24T18:50:23.8479156Z           ~~~~~~~~~~~~
2026-10-24T18:50:23.8479158Z
2026-10-24T18:50:23.8479524Z src/sourceControl/SourceControlRepositoryService.ts:553:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.lookupRepository")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8479566Z
2026-10-24T18:50:23.8479616Z 553     lookupRepository: (input) =>
2026-10-24T18:50:23.8479656Z         ~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8479660Z
2026-10-24T18:50:23.8480016Z src/sourceControl/SourceControlRepositoryService.ts:555:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.prepareClone")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8480018Z
2026-10-24T18:50:23.8480068Z 555     prepareClone: (input) =>
2026-10-24T18:50:23.8480107Z         ~~~~~~~~~~~~
2026-10-24T18:50:23.8480110Z
2026-10-24T18:50:23.8480481Z src/sourceControl/SourceControlRepositoryService.ts:562:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.cloneRepository")((input, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8480483Z
2026-10-24T18:50:23.8480540Z 562     cloneRepository: (input, options) =>
2026-10-24T18:50:23.8480580Z         ~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8480583Z
2026-10-24T18:50:23.8480955Z src/sourceControl/SourceControlRepositoryService.ts:569:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.discardClone")((destinationPath) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8480957Z
2026-10-24T18:50:23.8481011Z 569     discardClone: (destinationPath) =>
2026-10-24T18:50:23.8481050Z         ~~~~~~~~~~~~
2026-10-24T18:50:23.8481052Z
2026-10-24T18:50:23.8481416Z src/sourceControl/SourceControlRepositoryService.ts:573:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.publishRepository")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8481418Z
2026-10-24T18:50:23.8481470Z 573     publishRepository: (input) =>
2026-10-24T18:50:23.8481514Z         ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8481516Z
2026-10-24T18:50:23.8481868Z 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-24T18:50:23.8481871Z
2026-10-24T18:50:23.8481918Z 708       return yield* Effect.fail(
2026-10-24T18:50:23.8481956Z                  ~~~~~
2026-10-24T18:50:23.8481958Z
2026-10-24T18:50:23.8482236Z 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-24T18:50:23.8482238Z
2026-10-24T18:50:23.8482284Z 113       record: () => Effect.void,
2026-10-24T18:50:23.8482323Z           ~~~~~~
2026-10-24T18:50:23.8482325Z
2026-10-24T18:50:23.8482613Z 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-24T18:50:23.8482618Z
2026-10-24T18:50:23.8482669Z 115       recordOwners: () => Effect.void,
2026-10-24T18:50:23.8482709Z           ~~~~~~~~~~~~
2026-10-24T18:50:23.8482711Z
2026-10-24T18:50:23.8483006Z 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-24T18:50:23.8483008Z
2026-10-24T18:50:23.8483148Z 329   yield* Effect.forever(Effect.sleep(FLUSH_INTERVAL_MS).pipe(Effect.flatMap(() => flushWhenDue)), {
2026-10-24T18:50:23.8483212Z                                                                  ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8483215Z
2026-10-24T18:50:23.8483485Z 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-24T18:50:23.8483526Z
2026-10-24T18:50:23.8483584Z 90       .pipe(Effect.catch(() => Effect.void));
2026-10-24T18:50:23.8483628Z                ~~~~~~~~~~~~
2026-10-24T18:50:23.8483630Z
2026-10-24T18:50:23.8483943Z 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-24T18:50:23.8483945Z
2026-10-24T18:50:23.8483997Z 60     generateCommitMessage: (input) =>
2026-10-24T18:50:23.8484040Z        ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8484042Z
2026-10-24T18:50:23.8484348Z 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-24T18:50:23.8484351Z
2026-10-24T18:50:23.8484402Z 64     generatePrContent: (input) =>
2026-10-24T18:50:23.8484446Z        ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8484448Z
2026-10-24T18:50:23.8484753Z 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-24T18:50:23.8484755Z
2026-10-24T18:50:23.8484806Z 68     generateBranchName: (input) =>
2026-10-24T18:50:23.8484848Z        ~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8484850Z
2026-10-24T18:50:23.8485153Z 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-24T18:50:23.8485156Z
2026-10-24T18:50:23.8485208Z 72     generateReviewGuide: (input) =>
2026-10-24T18:50:23.8485249Z        ~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8485252Z
2026-10-24T18:50:23.8485597Z 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-24T18:50:23.8485599Z
2026-10-24T18:50:23.8485651Z 76     generateThreadTitle: (input) =>
2026-10-24T18:50:23.8485693Z        ~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8485695Z
2026-10-24T18:50:23.8485969Z 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-24T18:50:23.8485971Z
2026-10-24T18:50:23.8486019Z 172     readSummary: (input) =>
2026-10-24T18:50:23.8486059Z         ~~~~~~~~~~~
2026-10-24T18:50:23.8486061Z
2026-10-24T18:50:23.8486300Z 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-24T18:50:23.8486304Z
2026-10-24T18:50:23.8486357Z 642         usageInstances(driver, settings)
2026-10-24T18:50:23.8486403Z             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8486446Z 643           .pipe(
2026-10-24T18:50:23.8486485Z     ~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8486533Z ...
2026-10-24T18:50:23.8486619Z 664             Effect.provideContext(readerContext),
2026-10-24T18:50:23.8486674Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8486713Z 665           ),
2026-10-24T18:50:23.8486751Z     ~~~~~~~~~~~
2026-10-24T18:50:23.8486753Z
2026-10-24T18:50:23.8487082Z src/vcs/GitVcsDriverCore.ts:4020:9 - suggestion TS377120: `Effect.filterOrElse` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-24T18:50:23.8487085Z
2026-10-24T18:50:23.8487134Z 4020         Effect.flatMap((result) =>
2026-10-24T18:50:23.8487176Z              ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8487239Z
2026-10-24T18:50:23.8487656Z src/vcs/GitVcsDriverCore.ts:4511:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.commit")((cwd, subject, body, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8487659Z
2026-10-24T18:50:23.8487719Z 4511     commit: (cwd, subject, body, options) =>
2026-10-24T18:50:23.8487756Z          ~~~~~~
2026-10-24T18:50:23.8487758Z
2026-10-24T18:50:23.8488104Z src/vcs/GitVcsDriverCore.ts:4513:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.pushCurrentBranch")((cwd, fallbackBranch, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8488107Z
2026-10-24T18:50:23.8488186Z 4513     pushCurrentBranch: (cwd, fallbackBranch, options) =>
2026-10-24T18:50:23.8488229Z          ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8488231Z
2026-10-24T18:50:23.8488540Z src/vcs/GitVcsDriverCore.ts:4515:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.pullCurrentBranch")((cwd) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8488546Z
2026-10-24T18:50:23.8488666Z 4515     pullCurrentBranch: (cwd) => withListRefsInvalidation(cwd, pullCurrentBranch(cwd)),
2026-10-24T18:50:23.8488707Z          ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8488710Z
2026-10-24T18:50:23.8489029Z src/vcs/GitVcsDriverCore.ts:4523:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.createWorktree")((input, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8489031Z
2026-10-24T18:50:23.8489085Z 4523     createWorktree: (input, options) =>
2026-10-24T18:50:23.8489124Z          ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8489128Z
2026-10-24T18:50:23.8489439Z src/vcs/GitVcsDriverCore.ts:4525:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchRefIntoBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8489443Z
2026-10-24T18:50:23.8489634Z 4525     fetchRefIntoBranch: (input) => withListRefsInvalidation(input.cwd, fetchRefIntoBranch(input)),
2026-10-24T18:50:23.8489676Z          ~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8489678Z
2026-10-24T18:50:23.8490002Z src/vcs/GitVcsDriverCore.ts:4528:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.refreshCheckedOutBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8490004Z
2026-10-24T18:50:23.8490059Z 4528     refreshCheckedOutBranch: (input) =>
2026-10-24T18:50:23.8490101Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8490103Z
2026-10-24T18:50:23.8490405Z src/vcs/GitVcsDriverCore.ts:4530:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.ensureRemote")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8490409Z
2026-10-24T18:50:23.8490526Z 4530     ensureRemote: (input) => withListRefsInvalidation(input.cwd, ensureRemote(input)),
2026-10-24T18:50:23.8490569Z          ~~~~~~~~~~~~
2026-10-24T18:50:23.8490571Z
2026-10-24T18:50:23.8490873Z src/vcs/GitVcsDriverCore.ts:4533:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchRemote")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8490877Z
2026-10-24T18:50:23.8490924Z 4533     fetchRemote: (input) =>
2026-10-24T18:50:23.8490964Z          ~~~~~~~~~~~
2026-10-24T18:50:23.8490966Z
2026-10-24T18:50:23.8491290Z src/vcs/GitVcsDriverCore.ts:4548:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchWorktreeBaseCommit")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8491292Z
2026-10-24T18:50:23.8491397Z 4548     fetchWorktreeBaseCommit: (input) =>
2026-10-24T18:50:23.8491438Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8491440Z
2026-10-24T18:50:23.8491753Z src/vcs/GitVcsDriverCore.ts:4550:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchRemoteBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8491755Z
2026-10-24T18:50:23.8491889Z 4550     fetchRemoteBranch: (input) => withListRefsInvalidation(input.cwd, fetchRemoteBranch(input)),
2026-10-24T18:50:23.8491931Z          ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8491933Z
2026-10-24T18:50:23.8492262Z src/vcs/GitVcsDriverCore.ts:4551:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchRemoteTrackingBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8492265Z
2026-10-24T18:50:23.8492323Z 4551     fetchRemoteTrackingBranch: (input) =>
2026-10-24T18:50:23.8492370Z          ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8492372Z
2026-10-24T18:50:23.8492685Z src/vcs/GitVcsDriverCore.ts:4553:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.setBranchUpstream")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8492687Z
2026-10-24T18:50:23.8492820Z 4553     setBranchUpstream: (input) => withListRefsInvalidation(input.cwd, setBranchUpstream(input)),
2026-10-24T18:50:23.8492860Z          ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8492863Z
2026-10-24T18:50:23.8493171Z src/vcs/GitVcsDriverCore.ts:4554:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.removeWorktree")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8493174Z
2026-10-24T18:50:23.8493296Z 4554     removeWorktree: (input) => withListRefsInvalidation(input.cwd, removeWorktree(input)),
2026-10-24T18:50:23.8493338Z          ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8493341Z
2026-10-24T18:50:23.8493689Z src/vcs/GitVcsDriverCore.ts:4555:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.pruneWorktrees")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8493692Z
2026-10-24T18:50:23.8493815Z 4555     pruneWorktrees: (input) => withListRefsInvalidation(input.cwd, pruneWorktrees(input)),
2026-10-24T18:50:23.8493854Z          ~~~~~~~~~~~~~~
2026-10-24T18:50:23.8493856Z
2026-10-24T18:50:23.8494170Z src/vcs/GitVcsDriverCore.ts:4556:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.deleteLocalBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8494172Z
2026-10-24T18:50:23.8494304Z 4556     deleteLocalBranch: (input) => withListRefsInvalidation(input.cwd, deleteLocalBranch(input)),
2026-10-24T18:50:23.8494345Z          ~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8494349Z
2026-10-24T18:50:23.8494665Z src/vcs/GitVcsDriverCore.ts:4557:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.renameBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8494668Z
2026-10-24T18:50:23.8494783Z 4557     renameBranch: (input) => withListRefsInvalidation(input.cwd, renameBranch(input)),
2026-10-24T18:50:23.8494823Z          ~~~~~~~~~~~~
2026-10-24T18:50:23.8494825Z
2026-10-24T18:50:23.8495129Z src/vcs/GitVcsDriverCore.ts:4558:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.createRef")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8495132Z
2026-10-24T18:50:23.8495238Z 4558     createRef: (input) => withListRefsInvalidation(input.cwd, createRef(input)),
2026-10-24T18:50:23.8495278Z          ~~~~~~~~~
2026-10-24T18:50:23.8495280Z
2026-10-24T18:50:23.8495619Z src/vcs/GitVcsDriverCore.ts:4559:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.switchRef")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T18:50:23.8495623Z
2026-10-24T18:50:23.8495724Z 4559     switchRef: (input) => withListRefsInvalidation(input.cwd, switchRef(input)),
2026-10-24T18:50:23.8495763Z          ~~~~~~~~~
2026-10-24T18:50:23.8495765Z
2026-10-24T18:50:23.8496140Z 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-24T18:50:23.8496143Z
2026-10-24T18:50:23.8496209Z 153     return serverSettings.getSettings.pipe(
2026-10-24T18:50:23.8496247Z         ~~~~~~
2026-10-24T18:50:23.8496249Z
2026-10-24T18:50:23.8496582Z 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-24T18:50:23.8496586Z
2026-10-24T18:50:23.8496676Z 171       }).pipe(Effect.catch(() => Effect.succeed(undefined)));
2026-10-24T18:50:23.8496720Z                   ~~~~~~~~~~~~
2026-10-24T18:50:23.8496722Z
2026-10-24T18:50:23.8496989Z 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-24T18:50:23.8496991Z
2026-10-24T18:50:23.8497066Z 171       }).pipe(Effect.catch(() => Effect.succeed(undefined)));
2026-10-24T18:50:23.8497124Z                                      ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8497126Z
2026-10-24T18:50:23.8497355Z 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-24T18:50:23.8497359Z
2026-10-24T18:50:23.8497455Z 401           resolveFileManagerRevealKind: () => Effect.succeed(undefined),
2026-10-24T18:50:23.8497552Z                                                   ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T18:50:23.8497555Z
2026-10-24T18:50:23.8497824Z src/ws.ts:1385:23 - suggestion TS377118: `Effect.fromOption` expresses this Option-to-Effect conversion more directly than `Option.match` or an Option tag conditional. effect(optionMatchToFromOption)
2026-10-24T18:50:23.8497826Z
2026-10-24T18:50:23.8497887Z 1385         return yield* Option.match(project, {
2026-10-24T18:50:23.8497931Z                            ~~~~~~~~~~~~
2026-10-24T18:50:23.8497934Z
2026-10-24T18:50:23.8498227Z src/ws.ts:2320:24 - suggestion TS377019: This `yield* Effect.fail(...)` passes a yieldable error value. `yield*` represents that value directly without wrapping it in `Effect.fail`. effect(unnecessaryFailYieldableError)
2026-10-24T18:50:23.8498229Z
2026-10-24T18:50:23.8498285Z 2320                 return yield* Effect.fail(
2026-10-24T18:50:23.8498329Z                             ~~~~~
2026-10-24T18:50:23.8498331Z
2026-10-24T18:50:23.8498622Z src/ws.ts:2329:24 - suggestion TS377019: This `yield* Effect.fail(...)` passes a yieldable error value. `yield*` represents that value directly without wrapping it in `Effect.fail`. effect(unnecessaryFailYieldableError)
2026-10-24T18:50:23.8498624Z
2026-10-24T18:50:23.8498678Z 2329                 return yield* Effect.fail(
2026-10-24T18:50:23.8498722Z                             ~~~~~
2026-10-24T18:50:23.8498724Z
2026-10-24T18:50:23.8499009Z src/ws.ts:2337:24 - suggestion TS377019: This `yield* Effect.fail(...)` passes a yieldable error value. `yield*` represents that value directly without wrapping it in `Effect.fail`. effect(unnecessaryFailYieldableError)
2026-10-24T18:50:23.8499011Z
2026-10-24T18:50:23.8499063Z 2337                 return yield* Effect.fail(
2026-10-24T18:50:23.8499105Z                             ~~~~~
2026-10-24T18:50:23.8499147Z
2026-10-24T18:50:23.8499149Z
2026-10-24T18:50:23.8499187Z ---
2026-10-24T18:50:23.8499455Z vp run: 0/33 cache hit (0%), 33/33 successful. @t3tools/oxlint-plugin-t3code#typecheck (and 1 more) not cached because they modified their inputs. (Run `vp run --last-details` for full details)
2026-10-24T18:50:23.8922363Z Post job cleanup.
2026-10-24T18:50:23.9526193Z Cache hit occurred on the primary key electron-Linux-X64-854e11ddd491bd4f350eebb67a74265df119376a3984c8e153cfe5fc8ced6309, not saving cache.
2026-10-24T18:50:23.9589632Z Post job cleanup.
2026-10-24T18:50:23.9602561Z ##[start-action display=Cache full pnpm store;id=__88be52ad-6254-479a-9bea-5f33b9150066.__actions_cache]
2026-10-24T18:50:24.0342706Z Post job cleanup.
2026-10-24T18:50:24.0940959Z Cache hit occurred on the primary key pnpm-full-v1-Linux-X64-fa50cf9b003d547cd32552f61b874eb4abe5dace3fdb4b1abd9610da2da24074, not saving cache.
2026-10-24T18:50:24.0968509Z ##[end-action id=__88be52ad-6254-479a-9bea-5f33b9150066.__actions_cache;outcome=success;conclusion=success;duration_ms=136]
2026-10-24T18:50:24.0970166Z ##[start-action display=Cache Vite+;id=__88be52ad-6254-479a-9bea-5f33b9150066.vp_cache]
2026-10-24T18:50:24.0991375Z Post job cleanup.
2026-10-24T18:50:24.1549362Z 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-24T18:50:24.1578224Z ##[end-action id=__88be52ad-6254-479a-9bea-5f33b9150066.vp_cache;outcome=success;conclusion=success;duration_ms=60]
2026-10-24T18:50:24.1622594Z Post job cleanup.
2026-10-24T18:50:24.2021926Z [command]/usr/local/bin/git version
2026-10-24T18:50:24.2049289Z git version 2.55.0
2026-10-24T18:50:24.2065801Z Temporarily overriding HOME='/home/runner/_work/_temp/e827eafa-ee51-4f77-a41d-323eda7cd60c' before making global git config changes
2026-10-24T18:50:24.2066153Z Adding repository directory to the temporary git global config as a safe directory
2026-10-24T18:50:24.2068716Z [command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
2026-10-24T18:50:24.2090022Z Removing SSH command configuration
2026-10-24T18:50:24.2092998Z [command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-10-24T18:50:24.2113553Z [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-24T18:50:24.2222548Z fatal: No url found for submodule path '.repos/alchemy-effect/submodules/distilled' in .gitmodules
2026-10-24T18:50:24.2243227Z ##[warning]The process '/usr/local/bin/git' failed with exit code 128
2026-10-24T18:50:24.2276853Z A job completed hook has been configured by the self-hosted runner administrator
2026-10-24T18:50:24.2292109Z ##[group]Run '/job_completed.sh'
2026-10-24T18:50:24.2298701Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
2026-10-24T18:50:24.2298869Z env:
2026-10-24T18:50:24.2298980Z   BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 195
2026-10-24T18:50:24.2299135Z   BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 386
2026-10-24T18:50:24.2299272Z   BLACKSMITH_CHECK_RUN_ID: 120956850391
2026-10-24T18:50:24.2299494Z   BLACKSMITH_JOB_DISPLAY_NAME: Build and Typecheck
2026-10-24T18:50:24.2299647Z   GITHUB_ACTIONS_CACHE_MODE: write
2026-10-24T18:50:24.2299777Z ##[endgroup]
2026-10-24T18:50:24.2371161Z Docker container cache not activated, skipping hash computation.
2026-10-24T18:50:24.2614425Z No active SSH sessions detected. Proceeding with shutdown immediately.
2026-10-24T18:50:24.2656061Z Cleaning up orphan processes