GitHub check

256 KB of 529 KB loaded Download the full log (529 KB)
273 KB of earlier output not loaded
2026-10-24T20:56:04.5119976Z src/server/AzureDevOpsPullRequestCli.ts:707:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AzureDevOpsPullRequestCli.updatePullRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T20:56:04.5120369Z
2026-10-24T20:56:04.5120422Z 707     updatePullRequest: (input) =>
2026-10-24T20:56:04.5120554Z         ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5120621Z
2026-10-24T20:56:04.5121020Z src/server/AzureDevOpsSourceControlProvider.ts:81:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.listChangeRequests")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T20:56:04.5121564Z
2026-10-24T20:56:04.5121631Z 81     listChangeRequests: (input) => {
2026-10-24T20:56:04.5121763Z        ~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5121833Z
2026-10-24T20:56:04.5122226Z src/server/AzureDevOpsSourceControlProvider.ts:109:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T20:56:04.5122670Z
2026-10-24T20:56:04.5122721Z 109     getChangeRequest: (input) =>
2026-10-24T20:56:04.5122849Z         ~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5122918Z
2026-10-24T20:56:04.5123322Z src/server/AzureDevOpsSourceControlProvider.ts:127:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.createChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T20:56:04.5123766Z
2026-10-24T20:56:04.5123823Z 127     createChangeRequest: (input) => {
2026-10-24T20:56:04.5124034Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5124110Z
2026-10-24T20:56:04.5124519Z src/server/AzureDevOpsSourceControlProvider.ts:156:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getRepositoryCloneUrls")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T20:56:04.5124969Z
2026-10-24T20:56:04.5125028Z 156     getRepositoryCloneUrls: (input) =>
2026-10-24T20:56:04.5125166Z         ~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5125245Z
2026-10-24T20:56:04.5125640Z src/server/AzureDevOpsSourceControlProvider.ts:173:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.createRepository")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T20:56:04.5126181Z
2026-10-24T20:56:04.5126235Z 173     createRepository: (input) =>
2026-10-24T20:56:04.5126368Z         ~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5126435Z
2026-10-24T20:56:04.5126828Z src/server/AzureDevOpsSourceControlProvider.ts:190:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getDefaultBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T20:56:04.5127268Z
2026-10-24T20:56:04.5127320Z 190     getDefaultBranch: (input) =>
2026-10-24T20:56:04.5127446Z         ~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5127515Z
2026-10-24T20:56:04.5127916Z src/server/AzureDevOpsSourceControlProvider.ts:204:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.checkoutChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T20:56:04.5128360Z
2026-10-24T20:56:04.5128417Z 204     checkoutChangeRequest: (input) =>
2026-10-24T20:56:04.5128555Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5128632Z
2026-10-24T20:56:04.5128634Z
2026-10-24T20:56:04.5128693Z ~/packages/provider-grok$ tsc --noEmit
2026-10-24T20:56:04.5129078Z 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-24T20:56:04.5129410Z
2026-10-24T20:56:04.5129452Z 170     get: (host) =>
2026-10-24T20:56:04.5129564Z         ~~~
2026-10-24T20:56:04.5129618Z
2026-10-24T20:56:04.5129920Z 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-24T20:56:04.5130263Z
2026-10-24T20:56:04.5130361Z 183     invalidate: (host) => Cache.invalidate(cache, normalizeHost(host)),
2026-10-24T20:56:04.5130541Z         ~~~~~~~~~~
2026-10-24T20:56:04.5130606Z
2026-10-24T20:56:04.5130904Z 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-24T20:56:04.5131243Z
2026-10-24T20:56:04.5131288Z 184     cliEnv: (host) =>
2026-10-24T20:56:04.5131403Z         ~~~~~~
2026-10-24T20:56:04.5131459Z
2026-10-24T20:56:04.5131713Z src/server/GitCafePullRequestProvider.ts:341:9 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T20:56:04.5132006Z
2026-10-24T20:56:04.5132058Z 341         Effect.map(Option.some),
2026-10-24T20:56:04.5132183Z             ~~~~~~~~~~
2026-10-24T20:56:04.5132252Z
2026-10-24T20:56:04.5132499Z src/server/GitCafePullRequestProvider.ts:346:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5132786Z
2026-10-24T20:56:04.5132848Z 346               : Effect.succeed(Option.none()),
2026-10-24T20:56:04.5133057Z                     ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5133138Z
2026-10-24T20:56:04.5133391Z src/server/GitCafePullRequestProvider.ts:655:13 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T20:56:04.5133677Z
2026-10-24T20:56:04.5133733Z 655             Effect.map(Option.some),
2026-10-24T20:56:04.5133868Z                 ~~~~~~~~~~
2026-10-24T20:56:04.5133940Z
2026-10-24T20:56:04.5134181Z src/server/GitCafePullRequestProvider.ts:660:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5134464Z
2026-10-24T20:56:04.5134528Z 660                   : Effect.succeed(Option.none()),
2026-10-24T20:56:04.5134683Z                         ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5134766Z
2026-10-24T20:56:04.5135107Z 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-24T20:56:04.5135444Z
2026-10-24T20:56:04.5135529Z 673         const readPage = (rows: number, after: string | null) => {
2026-10-24T20:56:04.5135703Z                   ~~~~~~~~
2026-10-24T20:56:04.5135789Z
2026-10-24T20:56:04.5136169Z 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-24T20:56:04.5136562Z
2026-10-24T20:56:04.5136613Z 790             Effect.catch((error) =>
2026-10-24T20:56:04.5136752Z                 ~~~~~~~~~~~~
2026-10-24T20:56:04.5136830Z
2026-10-24T20:56:04.5137172Z src/server/GitCafePullRequestProvider.ts:872:19 - suggestion TS377116: `Effect.catchIf` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T20:56:04.5137560Z
2026-10-24T20:56:04.5137620Z 872                   Effect.catch((error) =>
2026-10-24T20:56:04.5137761Z                       ~~~~~~~~~~~~
2026-10-24T20:56:04.5137844Z
2026-10-24T20:56:04.5137846Z
2026-10-24T20:56:04.5137903Z ~/packages/provider-pi$ tsc --noEmit
2026-10-24T20:56:04.5138388Z 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-24T20:56:04.5138824Z
2026-10-24T20:56:04.5138881Z 362     getChangeRequest: (input) =>
2026-10-24T20:56:04.5139010Z         ~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5139081Z
2026-10-24T20:56:04.5139083Z
2026-10-24T20:56:04.5139140Z ~/packages/provider-muse$ tsc --noEmit
2026-10-24T20:56:04.5139561Z 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-24T20:56:04.5139929Z
2026-10-24T20:56:04.5139981Z 174       Effect.flatMap((snapshot) =>
2026-10-24T20:56:04.5140110Z           ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5140180Z
2026-10-24T20:56:04.5140421Z 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-24T20:56:04.5140700Z
2026-10-24T20:56:04.5140767Z 1507       }).pipe(Effect.catch(() => Effect.void));
2026-10-24T20:56:04.5140920Z                    ~~~~~~~~~~~~
2026-10-24T20:56:04.5141000Z
2026-10-24T20:56:04.5141258Z 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-24T20:56:04.5141557Z
2026-10-24T20:56:04.5141625Z 1507       }).pipe(Effect.catch(() => Effect.void));
2026-10-24T20:56:04.5141826Z                    ~~~~~~~~~~~~
2026-10-24T20:56:04.5141905Z
2026-10-24T20:56:04.5142258Z 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-24T20:56:04.5142647Z
2026-10-24T20:56:04.5142710Z 1588             Effect.catchCause((cause) =>
2026-10-24T20:56:04.5142852Z                  ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5142933Z
2026-10-24T20:56:04.5142935Z
2026-10-24T20:56:04.5142997Z ~/packages/provider-opencode$ tsc --noEmit
2026-10-24T20:56:04.5143420Z 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-24T20:56:04.5143842Z
2026-10-24T20:56:04.5143940Z 440     getCapabilities: () => Effect.succeed(PiProviderCapabilitiesV2),
2026-10-24T20:56:04.5144125Z         ~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5144196Z
2026-10-24T20:56:04.5144537Z 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-24T20:56:04.5144911Z
2026-10-24T20:56:04.5145036Z 441     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T20:56:04.5145246Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5145323Z
2026-10-24T20:56:04.5145541Z src/server/adapter.ts:1694:31 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T20:56:04.5145825Z
2026-10-24T20:56:04.5145898Z 1694                               Effect.map(Option.some),
2026-10-24T20:56:04.5146060Z                                    ~~~~~~~~~~
2026-10-24T20:56:04.5146153Z
2026-10-24T20:56:04.5146369Z src/server/adapter.ts:1697:29 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5146619Z
2026-10-24T20:56:04.5146692Z 1697                           : Effect.succeed(Option.none()),
2026-10-24T20:56:04.5146861Z                                  ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5146953Z
2026-10-24T20:56:04.5147203Z 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-24T20:56:04.5147490Z
2026-10-24T20:56:04.5147539Z 334       onSuccess: () =>
2026-10-24T20:56:04.5147652Z           ~~~~~~~~~
2026-10-24T20:56:04.5147717Z
2026-10-24T20:56:04.5147930Z src/server/rpc.ts:342:17 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T20:56:04.5148174Z
2026-10-24T20:56:04.5148234Z 342                 Effect.map(Option.some),
2026-10-24T20:56:04.5148376Z                     ~~~~~~~~~~
2026-10-24T20:56:04.5148452Z
2026-10-24T20:56:04.5148454Z
2026-10-24T20:56:04.5148513Z ~/packages/provider-cursor$ tsc --noEmit
2026-10-24T20:56:04.5148935Z 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-24T20:56:04.5149292Z
2026-10-24T20:56:04.5149393Z 284     getCapabilities: () => Effect.succeed(MuseProviderCapabilitiesV2),
2026-10-24T20:56:04.5149581Z         ~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5149648Z
2026-10-24T20:56:04.5149989Z 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-24T20:56:04.5150371Z
2026-10-24T20:56:04.5150552Z 285     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T20:56:04.5150759Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5150841Z
2026-10-24T20:56:04.5151110Z 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-24T20:56:04.5151420Z
2026-10-24T20:56:04.5151470Z 388             TimeoutError: (cause) =>
2026-10-24T20:56:04.5151606Z                 ~~~~~~~~~~~~
2026-10-24T20:56:04.5151678Z
2026-10-24T20:56:04.5151894Z src/server/adapter.ts:1366:35 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T20:56:04.5152150Z
2026-10-24T20:56:04.5152337Z 1366                   wake === held ? Effect.map(dispatch, Option.some) : Effect.succeed(Option.none()),
2026-10-24T20:56:04.5152555Z                                        ~~~~~~~~~~
2026-10-24T20:56:04.5152654Z
2026-10-24T20:56:04.5152870Z src/server/adapter.ts:1366:71 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5153126Z
2026-10-24T20:56:04.5153245Z 1366                   wake === held ? Effect.map(dispatch, Option.some) : Effect.succeed(Option.none()),
2026-10-24T20:56:04.5153482Z                                                                            ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5153598Z
2026-10-24T20:56:04.5153600Z
2026-10-24T20:56:04.5153663Z ~/packages/provider-acp-registry$ tsc --noEmit
2026-10-24T20:56:04.5154051Z 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-24T20:56:04.5154366Z
2026-10-24T20:56:04.5154421Z 147     return Effect.succeed(undefined);
2026-10-24T20:56:04.5154562Z                ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5154649Z
2026-10-24T20:56:04.5155045Z 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-24T20:56:04.5155477Z
2026-10-24T20:56:04.5155537Z 188       if (!recordable) return Effect.void;
2026-10-24T20:56:04.5155678Z                            ~~~~~~
2026-10-24T20:56:04.5155761Z
2026-10-24T20:56:04.5156176Z 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-24T20:56:04.5156602Z
2026-10-24T20:56:04.5156654Z 208         return Effect.void;
2026-10-24T20:56:04.5156774Z             ~~~~~~
2026-10-24T20:56:04.5156840Z
2026-10-24T20:56:04.5157222Z 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-24T20:56:04.5157639Z
2026-10-24T20:56:04.5157685Z 228       return fs
2026-10-24T20:56:04.5157794Z           ~~~~~~
2026-10-24T20:56:04.5157853Z
2026-10-24T20:56:04.5158155Z 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-24T20:56:04.5158498Z
2026-10-24T20:56:04.5158609Z 311   OpenCodeServerLedger.of({ track: () => Effect.succeed(Effect.void) }),
2026-10-24T20:56:04.5158804Z                                 ~~~~~
2026-10-24T20:56:04.5158896Z
2026-10-24T20:56:04.5159206Z 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-24T20:56:04.5159608Z
2026-10-24T20:56:04.5159656Z 169     withServer: (use) =>
2026-10-24T20:56:04.5159777Z         ~~~~~~~~~~
2026-10-24T20:56:04.5159838Z
2026-10-24T20:56:04.5160231Z 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-24T20:56:04.5160659Z
2026-10-24T20:56:04.5160780Z 103 const OPENCODE_TEST_SETTINGS = Schema.decodeUnknownSync(OpenCodeSettings)({});
2026-10-24T20:56:04.5160998Z                                           ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5161101Z
2026-10-24T20:56:04.5161556Z 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-24T20:56:04.5161917Z
2026-10-24T20:56:04.5162026Z 938     getCapabilities: () => Effect.succeed(OpenCodeProviderCapabilitiesV2),
2026-10-24T20:56:04.5162220Z         ~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5162290Z
2026-10-24T20:56:04.5162623Z 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-24T20:56:04.5162996Z
2026-10-24T20:56:04.5163117Z 939     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T20:56:04.5163323Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5163405Z
2026-10-24T20:56:04.5163704Z 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-24T20:56:04.5164040Z
2026-10-24T20:56:04.5164119Z 1011         const abortController = new AbortController();
2026-10-24T20:56:04.5164292Z                                      ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5164393Z
2026-10-24T20:56:04.5164712Z 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-24T20:56:04.5165071Z
2026-10-24T20:56:04.5165149Z 1088           if (failure) return yield* Effect.fail(failure);
2026-10-24T20:56:04.5165315Z                                    ~~~~~
2026-10-24T20:56:04.5165399Z
2026-10-24T20:56:04.5165681Z 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-24T20:56:04.5166044Z
2026-10-24T20:56:04.5166127Z 1584               Effect.catch(() => Effect.succeed(undefined)),
2026-10-24T20:56:04.5166287Z                    ~~~~~~~~~~~~
2026-10-24T20:56:04.5166363Z
2026-10-24T20:56:04.5166621Z 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-24T20:56:04.5166910Z
2026-10-24T20:56:04.5166988Z 1584               Effect.catch(() => Effect.succeed(undefined)),
2026-10-24T20:56:04.5167162Z                                       ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5167260Z
2026-10-24T20:56:04.5167553Z 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-24T20:56:04.5167884Z
2026-10-24T20:56:04.5167973Z 3194                 admissionAbortController: new AbortController(),
2026-10-24T20:56:04.5168226Z                                                ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5168329Z
2026-10-24T20:56:04.5168614Z 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-24T20:56:04.5168939Z
2026-10-24T20:56:04.5169027Z 3354               turn.admissionAbortController = new AbortController();
2026-10-24T20:56:04.5169220Z                                                    ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5169325Z
2026-10-24T20:56:04.5169615Z 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-24T20:56:04.5169941Z
2026-10-24T20:56:04.5170052Z 158     connect: ({ baseUrl, password }) => {
2026-10-24T20:56:04.5170195Z         ~~~~~~~
2026-10-24T20:56:04.5170259Z
2026-10-24T20:56:04.5170565Z 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-24T20:56:04.5170913Z
2026-10-24T20:56:04.5170964Z 160       withConnection: (use) =>
2026-10-24T20:56:04.5171097Z           ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5171169Z
2026-10-24T20:56:04.5171472Z 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-24T20:56:04.5171816Z
2026-10-24T20:56:04.5171871Z 175     withConnection: (use) =>
2026-10-24T20:56:04.5171999Z         ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5172068Z
2026-10-24T20:56:04.5172293Z src/server/v2/adapter.ts:1544:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5172555Z
2026-10-24T20:56:04.5172680Z 1544           wake.dropped ? Effect.succeed(Option.none()) : Effect.map(dispatch, Option.some),
2026-10-24T20:56:04.5172900Z                               ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5172992Z
2026-10-24T20:56:04.5173215Z src/server/v2/adapter.ts:1544:58 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T20:56:04.5173478Z
2026-10-24T20:56:04.5173601Z 1544           wake.dropped ? Effect.succeed(Option.none()) : Effect.map(dispatch, Option.some),
2026-10-24T20:56:04.5173823Z                                                               ~~~~~~~~~~
2026-10-24T20:56:04.5173928Z
2026-10-24T20:56:04.5174262Z 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-24T20:56:04.5174627Z
2026-10-24T20:56:04.5174735Z 4137     getCapabilities: () => Effect.succeed(OpenCode2ProviderCapabilities),
2026-10-24T20:56:04.5174929Z          ~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5175000Z
2026-10-24T20:56:04.5175346Z 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-24T20:56:04.5175732Z
2026-10-24T20:56:04.5175890Z 4138     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T20:56:04.5176099Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5176182Z
2026-10-24T20:56:04.5176184Z
2026-10-24T20:56:04.5176259Z ~/packages/source-control-definitions$ tsc --noEmit
2026-10-24T20:56:04.5176726Z 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-24T20:56:04.5177159Z
2026-10-24T20:56:04.5177232Z 31       read: (credentialSource, sinceMs, untilMs) =>
2026-10-24T20:56:04.5177386Z          ~~~~
2026-10-24T20:56:04.5177443Z
2026-10-24T20:56:04.5177734Z 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-24T20:56:04.5178064Z
2026-10-24T20:56:04.5178114Z 82     read: (apiKey) =>
2026-10-24T20:56:04.5178226Z        ~~~~
2026-10-24T20:56:04.5178285Z
2026-10-24T20:56:04.5178567Z 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-24T20:56:04.5178887Z
2026-10-24T20:56:04.5178997Z 360     Effect.catch(() =>
2026-10-24T20:56:04.5179114Z         ~~~~~~~~~~~~
2026-10-24T20:56:04.5179180Z
2026-10-24T20:56:04.5179501Z src/server/adapter.ts:911:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.getCapabilities")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T20:56:04.5179858Z
2026-10-24T20:56:04.5179966Z 911     getCapabilities: () => Effect.succeed(CursorProviderCapabilitiesV2),
2026-10-24T20:56:04.5180154Z         ~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5180225Z
2026-10-24T20:56:04.5180560Z src/server/adapter.ts:912:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.planSelectionTransition")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T20:56:04.5180935Z
2026-10-24T20:56:04.5181053Z 912     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T20:56:04.5181263Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5181340Z
2026-10-24T20:56:04.5181790Z 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-24T20:56:04.5182277Z
2026-10-24T20:56:04.5182329Z 55       Effect.runPromise(
2026-10-24T20:56:04.5182453Z          ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5182526Z
2026-10-24T20:56:04.5182792Z 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-24T20:56:04.5183093Z
2026-10-24T20:56:04.5183158Z 59               onNone: () => Effect.succeed(undefined),
2026-10-24T20:56:04.5183319Z                                ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5183416Z
2026-10-24T20:56:04.5183864Z 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-24T20:56:04.5184345Z
2026-10-24T20:56:04.5184396Z 69       Effect.runPromise(
2026-10-24T20:56:04.5184516Z          ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5184587Z
2026-10-24T20:56:04.5185024Z 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-24T20:56:04.5185502Z
2026-10-24T20:56:04.5185572Z 82     clear: () => Effect.runPromise(credentials.remove),
2026-10-24T20:56:04.5185735Z                     ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5185852Z
2026-10-24T20:56:04.5186183Z 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-24T20:56:04.5186601Z
2026-10-24T20:56:04.5186660Z 228           Effect.flatMap((snapshot) =>
2026-10-24T20:56:04.5186804Z               ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5186876Z
2026-10-24T20:56:04.5187072Z src/server/usageLimits.test.ts:74:5 - suggestion TS377017: This Effect.gen contains a single return statement. effect(unnecessaryEffectGen)
2026-10-24T20:56:04.5187305Z
2026-10-24T20:56:04.5187354Z  74     Effect.gen(function* () {
2026-10-24T20:56:04.5187478Z         ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5187609Z  75       yield* withNodeServices(
2026-10-24T20:56:04.5187739Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5187855Z ...
2026-10-24T20:56:04.5188000Z 115       );
2026-10-24T20:56:04.5188097Z     ~~~~~~~~
2026-10-24T20:56:04.5188196Z 116     }),
2026-10-24T20:56:04.5188294Z     ~~~~~~
2026-10-24T20:56:04.5188351Z
2026-10-24T20:56:04.5188354Z
2026-10-24T20:56:04.5188616Z src/server/AcpRegistryRuntimeCoordinator.ts:154:52 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T20:56:04.5188913Z
2026-10-24T20:56:04.5189050Z 154         return yield* Effect.raceFirst(effect.pipe(Effect.map(Option.some)), foregroundStarted);
2026-10-24T20:56:04.5189284Z                                                        ~~~~~~~~~~
2026-10-24T20:56:04.5189386Z
2026-10-24T20:56:04.5189723Z 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-24T20:56:04.5190089Z
2026-10-24T20:56:04.5190142Z 1301         Effect.catch((error) =>
2026-10-24T20:56:04.5190270Z              ~~~~~~~~~~~~
2026-10-24T20:56:04.5190342Z
2026-10-24T20:56:04.5190631Z 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-24T20:56:04.5190957Z
2026-10-24T20:56:04.5191008Z 146             Option.isSome(result)
2026-10-24T20:56:04.5191139Z                 ~~~~~~~~~~~~~
2026-10-24T20:56:04.5191215Z
2026-10-24T20:56:04.5191473Z 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-24T20:56:04.5191765Z
2026-10-24T20:56:04.5191866Z 640       enrichSnapshot: ({ snapshot, getSnapshot, publishSnapshot }) => {
2026-10-24T20:56:04.5192049Z           ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5192121Z
2026-10-24T20:56:04.5192334Z src/server/driver.ts:650:51 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T20:56:04.5192588Z
2026-10-24T20:56:04.5192686Z 650             : enrichProviderCached(snapshot).pipe(Effect.map(Option.some))
2026-10-24T20:56:04.5192887Z                                                       ~~~~~~~~~~
2026-10-24T20:56:04.5192989Z
2026-10-24T20:56:04.5192991Z
2026-10-24T20:56:04.5192993Z
2026-10-24T20:56:04.5193048Z ~/packages/client-runtime$ tsc --noEmit
2026-10-24T20:56:04.5193192Z Result (22 files):
2026-10-24T20:56:04.5193298Z - 0 errors
2026-10-24T20:56:04.5193398Z - 0 warnings
2026-10-24T20:56:04.5193496Z - 0 hints
2026-10-24T20:56:04.5193553Z
2026-10-24T20:56:04.5193555Z
2026-10-24T20:56:04.5193795Z src/authorization/remote.test.ts:232:25 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5194210Z
2026-10-24T20:56:04.5194365Z 232               identity: Effect.succeed(Option.some({ accountId: "user_connect" })),
2026-10-24T20:56:04.5194567Z                             ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5194716Z
2026-10-24T20:56:04.5194941Z src/authorization/remote.test.ts:237:17 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5195207Z
2026-10-24T20:56:04.5195284Z 237             id: Effect.succeed(Option.some("device-1")),
2026-10-24T20:56:04.5195442Z                     ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5195524Z
2026-10-24T20:56:04.5195897Z 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-24T20:56:04.5196273Z
2026-10-24T20:56:04.5196324Z 553     authorizeDpop: (input) =>
2026-10-24T20:56:04.5196453Z         ~~~~~~~~~~~~~
2026-10-24T20:56:04.5196518Z
2026-10-24T20:56:04.5196905Z 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-24T20:56:04.5197284Z
2026-10-24T20:56:04.5197341Z 555     authorizeDpopHttp: (input) =>
2026-10-24T20:56:04.5197473Z         ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5197544Z
2026-10-24T20:56:04.5197856Z 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-24T20:56:04.5198205Z
2026-10-24T20:56:04.5198257Z 298     registerPairing: (input) =>
2026-10-24T20:56:04.5198390Z         ~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5198456Z
2026-10-24T20:56:04.5198764Z 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-24T20:56:04.5199109Z
2026-10-24T20:56:04.5199160Z 304     registerSsh: (input) =>
2026-10-24T20:56:04.5199281Z         ~~~~~~~~~~~
2026-10-24T20:56:04.5199345Z
2026-10-24T20:56:04.5199649Z 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-24T20:56:04.5199998Z
2026-10-24T20:56:04.5200049Z 309     updateBearer: (input) =>
2026-10-24T20:56:04.5200176Z         ~~~~~~~~~~~~
2026-10-24T20:56:04.5200243Z
2026-10-24T20:56:04.5200584Z 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-24T20:56:04.5200968Z
2026-10-24T20:56:04.5201015Z 138       get: (entry) =>
2026-10-24T20:56:04.5201128Z           ~~~
2026-10-24T20:56:04.5201188Z
2026-10-24T20:56:04.5201632Z 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-24T20:56:04.5202035Z
2026-10-24T20:56:04.5202087Z 143       set: (entry, permission) => {
2026-10-24T20:56:04.5202221Z           ~~~
2026-10-24T20:56:04.5202279Z
2026-10-24T20:56:04.5202633Z 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-24T20:56:04.5203030Z
2026-10-24T20:56:04.5203084Z 159       forget: (environmentId) =>
2026-10-24T20:56:04.5203212Z           ~~~~~~
2026-10-24T20:56:04.5203276Z
2026-10-24T20:56:04.5203549Z 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-24T20:56:04.5203931Z
2026-10-24T20:56:04.5203987Z 1392             ? Effect.succeed(undefined)
2026-10-24T20:56:04.5204134Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5204223Z
2026-10-24T20:56:04.5204485Z 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-24T20:56:04.5204792Z
2026-10-24T20:56:04.5204848Z 1476             ? Effect.succeed(undefined)
2026-10-24T20:56:04.5204985Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5205072Z
2026-10-24T20:56:04.5205337Z 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-24T20:56:04.5205702Z
2026-10-24T20:56:04.5205806Z 1489                     : Effect.succeed(undefined),
2026-10-24T20:56:04.5205975Z                            ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5206072Z
2026-10-24T20:56:04.5206317Z src/platform/orchestrationCache.test.ts:104:15 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T20:56:04.5206602Z
2026-10-24T20:56:04.5206662Z 104       }).pipe(Effect.map(Option.some));
2026-10-24T20:56:04.5206803Z                   ~~~~~~~~~~
2026-10-24T20:56:04.5206879Z
2026-10-24T20:56:04.5207253Z 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-24T20:56:04.5207664Z
2026-10-24T20:56:04.5207755Z 72       load: (prepared: PreparedConnection, threadId: ThreadId) => {
2026-10-24T20:56:04.5207926Z          ~~~~
2026-10-24T20:56:04.5207985Z
2026-10-24T20:56:04.5208278Z 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-24T20:56:04.5208609Z
2026-10-24T20:56:04.5208713Z 56             Effect.catch(() => Effect.succeed(Option.none<AuthSessionState>())),
2026-10-24T20:56:04.5208902Z                ~~~~~~~~~~~~
2026-10-24T20:56:04.5208975Z
2026-10-24T20:56:04.5209311Z 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-24T20:56:04.5209690Z
2026-10-24T20:56:04.5209747Z 62             return yield* Effect.fail(
2026-10-24T20:56:04.5209880Z                       ~~~~~
2026-10-24T20:56:04.5209955Z
2026-10-24T20:56:04.5210253Z 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-24T20:56:04.5210583Z
2026-10-24T20:56:04.5210682Z 57     execute: (target: OutdatedServerUpdateTarget, atomRegistry) => {
2026-10-24T20:56:04.5210860Z        ~~~~~~~
2026-10-24T20:56:04.5210918Z
2026-10-24T20:56:04.5211237Z 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-24T20:56:04.5211599Z
2026-10-24T20:56:04.5211654Z 90       load: (prepared, input) =>
2026-10-24T20:56:04.5211781Z          ~~~~
2026-10-24T20:56:04.5211784Z
2026-10-24T20:56:04.5212192Z 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-24T20:56:04.5212319Z
2026-10-24T20:56:04.5212423Z 34       return yield* Schema.decodeUnknownEffect(codec)(stored.value).pipe(
2026-10-24T20:56:04.5212479Z                               ~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5212481Z
2026-10-24T20:56:04.5212703Z src/state/queryPersistence.ts:35:9 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T20:56:04.5212707Z
2026-10-24T20:56:04.5212757Z 35         Effect.map(Option.some),
2026-10-24T20:56:04.5212800Z            ~~~~~~~~~~
2026-10-24T20:56:04.5212802Z
2026-10-24T20:56:04.5213067Z 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-24T20:56:04.5213069Z
2026-10-24T20:56:04.5213178Z 680     execute: (target, atomRegistry) => {
2026-10-24T20:56:04.5213218Z         ~~~~~~~
2026-10-24T20:56:04.5213221Z
2026-10-24T20:56:04.5213553Z 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-24T20:56:04.5213555Z
2026-10-24T20:56:04.5213611Z 1125           Effect.flatMap((summary) =>
2026-10-24T20:56:04.5213658Z                ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5213661Z
2026-10-24T20:56:04.5213881Z src/state/shell-sync.test.ts:90:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5213883Z
2026-10-24T20:56:04.5213953Z 90         loadShell: () => Effect.succeed(Option.none()),
2026-10-24T20:56:04.5214003Z                             ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5214005Z
2026-10-24T20:56:04.5214222Z src/state/shell-sync.test.ts:96:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5214226Z
2026-10-24T20:56:04.5214303Z 96         loadThread: () => Effect.succeed(Option.none()),
2026-10-24T20:56:04.5214351Z                              ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5214353Z
2026-10-24T20:56:04.5214570Z src/state/shell-sync.test.ts:99:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5214572Z
2026-10-24T20:56:04.5214657Z 99         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-24T20:56:04.5214712Z                                    ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5214714Z
2026-10-24T20:56:04.5214933Z src/state/shell-sync.test.ts:101:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5214935Z
2026-10-24T20:56:04.5215012Z 101         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-24T20:56:04.5215068Z                                ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5215070Z
2026-10-24T20:56:04.5215285Z src/state/shell-sync.test.ts:108:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5215287Z
2026-10-24T20:56:04.5215355Z 108         load: () => Effect.succeed(Option.none()),
2026-10-24T20:56:04.5215404Z                         ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5215407Z
2026-10-24T20:56:04.5215620Z src/state/shell-sync.test.ts:229:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5215622Z
2026-10-24T20:56:04.5215696Z 229         loadShell: () => Effect.succeed(Option.none()),
2026-10-24T20:56:04.5215747Z                              ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5215750Z
2026-10-24T20:56:04.5215989Z src/state/shell-sync.test.ts:238:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5216045Z
2026-10-24T20:56:04.5216117Z 238         loadThread: () => Effect.succeed(Option.none()),
2026-10-24T20:56:04.5216170Z                               ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5216172Z
2026-10-24T20:56:04.5216388Z src/state/shell-sync.test.ts:241:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5216390Z
2026-10-24T20:56:04.5216476Z 241         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-24T20:56:04.5216531Z                                     ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5216533Z
2026-10-24T20:56:04.5216746Z src/state/shell-sync.test.ts:243:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5216748Z
2026-10-24T20:56:04.5216874Z 243         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-24T20:56:04.5216930Z                                ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5216932Z
2026-10-24T20:56:04.5217150Z src/state/shell-sync.test.ts:250:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5217152Z
2026-10-24T20:56:04.5217221Z 250         load: () => Effect.succeed(Option.none()),
2026-10-24T20:56:04.5217268Z                         ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5217271Z
2026-10-24T20:56:04.5217487Z src/state/shell-sync.test.ts:349:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5217489Z
2026-10-24T20:56:04.5217563Z 349         loadShell: () => Effect.succeed(Option.none()),
2026-10-24T20:56:04.5217613Z                              ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5217615Z
2026-10-24T20:56:04.5217829Z src/state/shell-sync.test.ts:355:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5217836Z
2026-10-24T20:56:04.5217907Z 355         loadThread: () => Effect.succeed(Option.none()),
2026-10-24T20:56:04.5217958Z                               ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5217961Z
2026-10-24T20:56:04.5218176Z src/state/shell-sync.test.ts:358:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5218178Z
2026-10-24T20:56:04.5218261Z 358         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-24T20:56:04.5218312Z                                     ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5218315Z
2026-10-24T20:56:04.5218531Z src/state/shell-sync.test.ts:360:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5218533Z
2026-10-24T20:56:04.5218609Z 360         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-24T20:56:04.5218662Z                                ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5218664Z
2026-10-24T20:56:04.5218880Z src/state/shell-sync.test.ts:367:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5218882Z
2026-10-24T20:56:04.5218945Z 367         load: () => Effect.succeed(Option.none()),
2026-10-24T20:56:04.5218999Z                         ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5219001Z
2026-10-24T20:56:04.5219217Z src/state/shell-sync.test.ts:446:26 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5219220Z
2026-10-24T20:56:04.5219310Z 446         loadShell: () => Effect.succeed(Option.some(cachedSnapshot)),
2026-10-24T20:56:04.5219361Z                              ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5219363Z
2026-10-24T20:56:04.5219579Z src/state/shell-sync.test.ts:448:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5219635Z
2026-10-24T20:56:04.5219712Z 448         loadThread: () => Effect.succeed(Option.none()),
2026-10-24T20:56:04.5219763Z                               ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5219765Z
2026-10-24T20:56:04.5219979Z src/state/shell-sync.test.ts:451:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5219981Z
2026-10-24T20:56:04.5220060Z 451         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-24T20:56:04.5220113Z                                     ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5220115Z
2026-10-24T20:56:04.5220328Z src/state/shell-sync.test.ts:453:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5220378Z
2026-10-24T20:56:04.5220453Z 453         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-24T20:56:04.5220506Z                                ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5220508Z
2026-10-24T20:56:04.5220720Z src/state/shell-sync.test.ts:460:21 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5220722Z
2026-10-24T20:56:04.5220805Z 460         load: () => Effect.succeed(Option.some(httpSnapshot)),
2026-10-24T20:56:04.5220851Z                         ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5220854Z
2026-10-24T20:56:04.5221152Z 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-24T20:56:04.5221154Z
2026-10-24T20:56:04.5221218Z 98       load: (prepared: PreparedConnection) =>
2026-10-24T20:56:04.5221259Z          ~~~~
2026-10-24T20:56:04.5221262Z
2026-10-24T20:56:04.5221622Z 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-24T20:56:04.5221626Z
2026-10-24T20:56:04.5221697Z 52       register: (environmentId, threadId, handler) =>
2026-10-24T20:56:04.5221741Z          ~~~~~~~~
2026-10-24T20:56:04.5221743Z
2026-10-24T20:56:04.5222075Z 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-24T20:56:04.5222077Z
2026-10-24T20:56:04.5222128Z 64       unregister: (registration) =>
2026-10-24T20:56:04.5222172Z          ~~~~~~~~~~
2026-10-24T20:56:04.5222174Z
2026-10-24T20:56:04.5222548Z 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-24T20:56:04.5222552Z
2026-10-24T20:56:04.5222636Z 79       loadEarlier: (environmentId, threadId, throughEntryId) =>
2026-10-24T20:56:04.5222680Z          ~~~~~~~~~~~
2026-10-24T20:56:04.5222682Z
2026-10-24T20:56:04.5223048Z 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-24T20:56:04.5223050Z
2026-10-24T20:56:04.5223128Z 89       reconcilePendingWork: (environmentId, threadId) =>
2026-10-24T20:56:04.5227808Z          ~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5227812Z
2026-10-24T20:56:04.5228059Z src/state/threads-sync.test.ts:1458:29 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5228146Z
2026-10-24T20:56:04.5228232Z 1458             : { loadCached: Effect.succeed(Option.some(saved!)) },
2026-10-24T20:56:04.5228284Z                                  ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5228286Z
2026-10-24T20:56:04.5228552Z 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-24T20:56:04.5228554Z
2026-10-24T20:56:04.5228641Z 447       execute: (input: RunVcsStackedActionInput, registry) => {
2026-10-24T20:56:04.5228683Z           ~~~~~~~
2026-10-24T20:56:04.5228685Z
2026-10-24T20:56:04.5228687Z
2026-10-24T20:56:04.5228737Z ~/apps/mobile$ tsc --noEmit
2026-10-24T20:56:04.5228785Z ~/infra/relay$ tsc --noEmit
2026-10-24T20:56:04.5228831Z ~/apps/web$ tsc --noEmit
2026-10-24T20:56:04.5228880Z ~/apps/desktop$ tsc --noEmit
2026-10-24T20:56:04.5229247Z 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-24T20:56:04.5229251Z
2026-10-24T20:56:04.5229299Z 220           send: (body) =>
2026-10-24T20:56:04.5229339Z               ~~~~
2026-10-24T20:56:04.5229341Z
2026-10-24T20:56:04.5229643Z 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-24T20:56:04.5229645Z
2026-10-24T20:56:04.5229693Z 12       onFailure: (error) =>
2026-10-24T20:56:04.5229731Z          ~~~~~~~~~
2026-10-24T20:56:04.5229733Z
2026-10-24T20:56:04.5230057Z 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-24T20:56:04.5230060Z
2026-10-24T20:56:04.5230111Z 64     pauseUntil: (untilMillis) =>
2026-10-24T20:56:04.5230152Z        ~~~~~~~~~~
2026-10-24T20:56:04.5230154Z
2026-10-24T20:56:04.5230390Z 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-24T20:56:04.5230393Z
2026-10-24T20:56:04.5230437Z 198         onNone: () =>
2026-10-24T20:56:04.5230475Z             ~~~~~~
2026-10-24T20:56:04.5230477Z
2026-10-24T20:56:04.5230750Z src/previewTunnelSweep.test.ts:53:11 - suggestion TS377124: `Effect.provideService` provides this inline single-service layer directly. effect(provideLayerSucceedToProvideService)
2026-10-24T20:56:04.5230753Z
2026-10-24T20:56:04.5230876Z 53   }).pipe(Effect.provide(Layer.succeed(HttpClient.HttpClient, cloudflare.client)));
2026-10-24T20:56:04.5230917Z              ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5230919Z
2026-10-24T20:56:04.5231205Z 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-24T20:56:04.5231209Z
2026-10-24T20:56:04.5231320Z 92   fileResponse: () => Effect.die("Relay API does not serve filesystem responses"),
2026-10-24T20:56:04.5231360Z      ~~~~~~~~~~~~
2026-10-24T20:56:04.5231363Z
2026-10-24T20:56:04.5231645Z 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-24T20:56:04.5231647Z
2026-10-24T20:56:04.5231754Z 93   fileWebResponse: () => Effect.die("Relay API does not serve file responses"),
2026-10-24T20:56:04.5231798Z      ~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5231800Z
2026-10-24T20:56:04.5232058Z 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-24T20:56:04.5232124Z
2026-10-24T20:56:04.5232186Z 242       hold: ({ endpointKey, baseUrl, hook }) =>
2026-10-24T20:56:04.5232226Z           ~~~~
2026-10-24T20:56:04.5232228Z
2026-10-24T20:56:04.5232479Z 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-24T20:56:04.5232481Z
2026-10-24T20:56:04.5232538Z 244       wake: ({ endpointKey, baseUrl }) =>
2026-10-24T20:56:04.5232577Z           ~~~~
2026-10-24T20:56:04.5232580Z
2026-10-24T20:56:04.5232835Z 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-24T20:56:04.5232837Z
2026-10-24T20:56:04.5232888Z 246       clear: ({ endpointKey }) =>
2026-10-24T20:56:04.5232979Z           ~~~~~
2026-10-24T20:56:04.5232982Z
2026-10-24T20:56:04.5233299Z 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-24T20:56:04.5233303Z
2026-10-24T20:56:04.5233351Z 275               send: (body) =>
2026-10-24T20:56:04.5233393Z                   ~~~~
2026-10-24T20:56:04.5233396Z
2026-10-24T20:56:04.5233398Z
2026-10-24T20:56:04.5233704Z 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-24T20:56:04.5233709Z
2026-10-24T20:56:04.5233809Z 389     complete: (response) => Effect.sync(() => broker.complete(response)),
2026-10-24T20:56:04.5233851Z         ~~~~~~~~
2026-10-24T20:56:04.5233853Z
2026-10-24T20:56:04.5234080Z src/app/DesktopClerk.test.ts:300:27 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5234083Z
2026-10-24T20:56:04.5234171Z 300       currentMainOrFirst: Effect.succeed(Option.some(window)),
2026-10-24T20:56:04.5234220Z                               ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5234222Z
2026-10-24T20:56:04.5234497Z 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-24T20:56:04.5234499Z
2026-10-24T20:56:04.5234550Z 461     onSome: (logFile) =>
2026-10-24T20:56:04.5234591Z         ~~~~~~
2026-10-24T20:56:04.5234593Z
2026-10-24T20:56:04.5234921Z 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-24T20:56:04.5234925Z
2026-10-24T20:56:04.5234981Z 591       forInstance: (id) => makeForId(id),
2026-10-24T20:56:04.5235027Z           ~~~~~~~~~~~
2026-10-24T20:56:04.5235029Z
2026-10-24T20:56:04.5235260Z src/app/DesktopWebLinks.test.ts:29:31 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5235262Z
2026-10-24T20:56:04.5235350Z 29           currentMainOrFirst: Effect.succeed(Option.some(window)),
2026-10-24T20:56:04.5235401Z                                  ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5235406Z
2026-10-24T20:56:04.5235684Z 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-24T20:56:04.5235686Z
2026-10-24T20:56:04.5235733Z 72     receive: (url) =>
2026-10-24T20:56:04.5235784Z        ~~~~~~~
2026-10-24T20:56:04.5235787Z
2026-10-24T20:56:04.5236126Z 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-24T20:56:04.5236181Z
2026-10-24T20:56:04.5236232Z 77     setRendererReady: (ready) =>
2026-10-24T20:56:04.5236276Z        ~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5236278Z
2026-10-24T20:56:04.5236554Z 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-24T20:56:04.5236556Z
2026-10-24T20:56:04.5236603Z 1062       onSome: (run) =>
2026-10-24T20:56:04.5236645Z            ~~~~~~
2026-10-24T20:56:04.5236647Z
2026-10-24T20:56:04.5236979Z 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-24T20:56:04.5236981Z
2026-10-24T20:56:04.5237026Z 307       get: (id) =>
2026-10-24T20:56:04.5237070Z           ~~~
2026-10-24T20:56:04.5237072Z
2026-10-24T20:56:04.5237358Z 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-24T20:56:04.5237360Z
2026-10-24T20:56:04.5237454Z 342         get: (id) => Effect.succeed(Option.fromNullishOr(byId.get(id))),
2026-10-24T20:56:04.5237495Z             ~~~
2026-10-24T20:56:04.5237497Z
2026-10-24T20:56:04.5237783Z 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-24T20:56:04.5237786Z
2026-10-24T20:56:04.5237913Z 345         register: () => Effect.die("DesktopBackendPool.layerTest does not support register"),
2026-10-24T20:56:04.5237956Z             ~~~~~~~~
2026-10-24T20:56:04.5237959Z
2026-10-24T20:56:04.5238253Z 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-24T20:56:04.5238255Z
2026-10-24T20:56:04.5238383Z 346         unregister: () => Effect.die("DesktopBackendPool.layerTest does not support unregister"),
2026-10-24T20:56:04.5238425Z             ~~~~~~~~~~
2026-10-24T20:56:04.5238427Z
2026-10-24T20:56:04.5238691Z 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-24T20:56:04.5238693Z
2026-10-24T20:56:04.5238736Z 145   exit: (code) =>
2026-10-24T20:56:04.5238775Z       ~~~~
2026-10-24T20:56:04.5238777Z
2026-10-24T20:56:04.5239054Z 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-24T20:56:04.5239058Z
2026-10-24T20:56:04.5239107Z 149   relaunch: (options) =>
2026-10-24T20:56:04.5239148Z       ~~~~~~~~
2026-10-24T20:56:04.5239150Z
2026-10-24T20:56:04.5239427Z 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-24T20:56:04.5239429Z
2026-10-24T20:56:04.5239478Z 153   setPath: (name, path) =>
2026-10-24T20:56:04.5239520Z       ~~~~~~~
2026-10-24T20:56:04.5239522Z
2026-10-24T20:56:04.5239789Z 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-24T20:56:04.5239791Z
2026-10-24T20:56:04.5239838Z 157   setName: (name) =>
2026-10-24T20:56:04.5239882Z       ~~~~~~~
2026-10-24T20:56:04.5239884Z
2026-10-24T20:56:04.5240233Z 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-24T20:56:04.5240235Z
2026-10-24T20:56:04.5240295Z 161   setAboutPanelOptions: (options) =>
2026-10-24T20:56:04.5240339Z       ~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5240342Z
2026-10-24T20:56:04.5240628Z 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-24T20:56:04.5240630Z
2026-10-24T20:56:04.5240683Z 165   setAppUserModelId: (id) =>
2026-10-24T20:56:04.5240723Z       ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5240725Z
2026-10-24T20:56:04.5241107Z 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-24T20:56:04.5241111Z
2026-10-24T20:56:04.5241195Z 170   setAsDefaultProtocolClient: (protocol, path, args) =>
2026-10-24T20:56:04.5241241Z       ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5241243Z
2026-10-24T20:56:04.5241682Z 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-24T20:56:04.5241689Z
2026-10-24T20:56:04.5241770Z 177   setDesktopName: (desktopName) =>
2026-10-24T20:56:04.5241835Z       ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5241837Z
2026-10-24T20:56:04.5242246Z 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-24T20:56:04.5242249Z
2026-10-24T20:56:04.5242297Z 184   setDockIcon: (iconPath) =>
2026-10-24T20:56:04.5242338Z       ~~~~~~~~~~~
2026-10-24T20:56:04.5242340Z
2026-10-24T20:56:04.5242661Z 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-24T20:56:04.5242663Z
2026-10-24T20:56:04.5242738Z 188   appendCommandLineSwitch: (switchName, value) =>
2026-10-24T20:56:04.5242784Z       ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5242786Z
2026-10-24T20:56:04.5243090Z 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-24T20:56:04.5243092Z
2026-10-24T20:56:04.5243150Z 196   onBeforeQuitForUpdate: (listener) =>
2026-10-24T20:56:04.5243195Z       ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5243198Z
2026-10-24T20:56:04.5243506Z 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-24T20:56:04.5243510Z
2026-10-24T20:56:04.5243571Z 206   removeCommandLineSwitch: (switchName) =>
2026-10-24T20:56:04.5243617Z       ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5243619Z
2026-10-24T20:56:04.5243925Z 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-24T20:56:04.5243927Z
2026-10-24T20:56:04.5243983Z 169   showMessageBox: (options, owner) =>
2026-10-24T20:56:04.5244023Z       ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5244025Z
2026-10-24T20:56:04.5244329Z 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-24T20:56:04.5244411Z
2026-10-24T20:56:04.5244467Z 185   showErrorBox: (title, content) =>
2026-10-24T20:56:04.5244506Z       ~~~~~~~~~~~~
2026-10-24T20:56:04.5244508Z
2026-10-24T20:56:04.5244809Z 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-24T20:56:04.5244811Z
2026-10-24T20:56:04.5244867Z 193     setApplicationMenu: (template) =>
2026-10-24T20:56:04.5244912Z         ~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5244914Z
2026-10-24T20:56:04.5245263Z 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-24T20:56:04.5245268Z
2026-10-24T20:56:04.5245319Z 207     popupTemplate: (input) =>
2026-10-24T20:56:04.5245363Z         ~~~~~~~~~~~~~
2026-10-24T20:56:04.5245365Z
2026-10-24T20:56:04.5245654Z 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-24T20:56:04.5245656Z
2026-10-24T20:56:04.5245708Z 225     showContextMenu: (input) =>
2026-10-24T20:56:04.5245747Z         ~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5245750Z
2026-10-24T20:56:04.5246143Z 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-24T20:56:04.5246145Z
2026-10-24T20:56:04.5246215Z 82   getSystemIdleState: (idleThresholdSeconds) =>
2026-10-24T20:56:04.5246258Z      ~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5246260Z
2026-10-24T20:56:04.5246573Z 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-24T20:56:04.5246577Z
2026-10-24T20:56:04.5246625Z 77     encryptString: (value) =>
2026-10-24T20:56:04.5246667Z        ~~~~~~~~~~~~~
2026-10-24T20:56:04.5246669Z
2026-10-24T20:56:04.5246980Z 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-24T20:56:04.5246982Z
2026-10-24T20:56:04.5247030Z 82     decryptString: (value) =>
2026-10-24T20:56:04.5247069Z        ~~~~~~~~~~~~~
2026-10-24T20:56:04.5247073Z
2026-10-24T20:56:04.5247362Z 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-24T20:56:04.5247366Z
2026-10-24T20:56:04.5247416Z 68   openExternal: (rawUrl) =>
2026-10-24T20:56:04.5247457Z      ~~~~~~~~~~~~
2026-10-24T20:56:04.5247459Z
2026-10-24T20:56:04.5247755Z 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-24T20:56:04.5247757Z
2026-10-24T20:56:04.5247809Z 79   openSystemSettings: (pane) =>
2026-10-24T20:56:04.5247850Z      ~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5247852Z
2026-10-24T20:56:04.5248128Z 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-24T20:56:04.5248130Z
2026-10-24T20:56:04.5248177Z 86   copyText: (text) =>
2026-10-24T20:56:04.5248220Z      ~~~~~~~~
2026-10-24T20:56:04.5248222Z
2026-10-24T20:56:04.5248558Z 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-24T20:56:04.5248560Z
2026-10-24T20:56:04.5248608Z 34   setSource: (theme) =>
2026-10-24T20:56:04.5248648Z      ~~~~~~~~~
2026-10-24T20:56:04.5248650Z
2026-10-24T20:56:04.5248935Z 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-24T20:56:04.5248937Z
2026-10-24T20:56:04.5248986Z 41   onUpdated: (listener) =>
2026-10-24T20:56:04.5249025Z      ~~~~~~~~~
2026-10-24T20:56:04.5249027Z
2026-10-24T20:56:04.5249370Z 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-24T20:56:04.5249374Z
2026-10-24T20:56:04.5249425Z 85   setFeedURL: (options) =>
2026-10-24T20:56:04.5249467Z      ~~~~~~~~~~
2026-10-24T20:56:04.5249469Z
2026-10-24T20:56:04.5249764Z 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-24T20:56:04.5249768Z
2026-10-24T20:56:04.5249814Z 90   setAutoDownload: (value) =>
2026-10-24T20:56:04.5249854Z      ~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5249857Z
2026-10-24T20:56:04.5250171Z 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-24T20:56:04.5250173Z
2026-10-24T20:56:04.5250232Z 95   setAutoInstallOnAppQuit: (value) =>
2026-10-24T20:56:04.5250274Z      ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5250278Z
2026-10-24T20:56:04.5250570Z 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-24T20:56:04.5250572Z
2026-10-24T20:56:04.5250620Z 100   setChannel: (channel) =>
2026-10-24T20:56:04.5250661Z       ~~~~~~~~~~
2026-10-24T20:56:04.5250663Z
2026-10-24T20:56:04.5250969Z 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-24T20:56:04.5250971Z
2026-10-24T20:56:04.5251023Z 105   setAllowPrerelease: (value) =>
2026-10-24T20:56:04.5251065Z       ~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5251068Z
2026-10-24T20:56:04.5251371Z 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-24T20:56:04.5251375Z
2026-10-24T20:56:04.5251426Z 111   setAllowDowngrade: (value) =>
2026-10-24T20:56:04.5251466Z       ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5251471Z
2026-10-24T20:56:04.5251771Z 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-24T20:56:04.5251773Z
2026-10-24T20:56:04.5251823Z 116   setFullChangelog: (value) =>
2026-10-24T20:56:04.5251865Z       ~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5251868Z
2026-10-24T20:56:04.5252202Z 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-24T20:56:04.5252204Z
2026-10-24T20:56:04.5252275Z 121   setDisableDifferentialDownload: (value) =>
2026-10-24T20:56:04.5252376Z       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5252378Z
2026-10-24T20:56:04.5252667Z 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-24T20:56:04.5252669Z
2026-10-24T20:56:04.5252742Z 140   quitAndInstall: ({ isSilent, isForceRunAfter }) =>
2026-10-24T20:56:04.5252783Z       ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5252786Z
2026-10-24T20:56:04.5253076Z 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-24T20:56:04.5253080Z
2026-10-24T20:56:04.5253128Z 154   on: (eventName, listener) => {
2026-10-24T20:56:04.5253218Z       ~~
2026-10-24T20:56:04.5253220Z
2026-10-24T20:56:04.5253502Z 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-24T20:56:04.5253506Z
2026-10-24T20:56:04.5253554Z 211     create: (options) => {
2026-10-24T20:56:04.5253591Z         ~~~~~~
2026-10-24T20:56:04.5253593Z
2026-10-24T20:56:04.5253877Z 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-24T20:56:04.5253880Z
2026-10-24T20:56:04.5253971Z 243     setMain: (window) => Ref.set(mainWindowRef, Option.some(window)),
2026-10-24T20:56:04.5254012Z         ~~~~~~~
2026-10-24T20:56:04.5254014Z
2026-10-24T20:56:04.5254303Z 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-24T20:56:04.5254307Z
2026-10-24T20:56:04.5254351Z 244     clearMain: (window) =>
2026-10-24T20:56:04.5254392Z         ~~~~~~~~~
2026-10-24T20:56:04.5254394Z
2026-10-24T20:56:04.5254685Z 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-24T20:56:04.5254687Z
2026-10-24T20:56:04.5254737Z 254     prepareReveal: (window) =>
2026-10-24T20:56:04.5254777Z         ~~~~~~~~~~~~~
2026-10-24T20:56:04.5254779Z
2026-10-24T20:56:04.5255058Z 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-24T20:56:04.5255060Z
2026-10-24T20:56:04.5255109Z 264     reveal: (window) =>
2026-10-24T20:56:04.5255149Z         ~~~~~~
2026-10-24T20:56:04.5255151Z
2026-10-24T20:56:04.5255505Z 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-24T20:56:04.5255507Z
2026-10-24T20:56:04.5255576Z 526     setMainWindowBounds: (bounds, isMaximized) =>
2026-10-24T20:56:04.5255619Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5255621Z
2026-10-24T20:56:04.5255979Z 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-24T20:56:04.5255982Z
2026-10-24T20:56:04.5256038Z 538     setServerExposureMode: (mode) =>
2026-10-24T20:56:04.5256082Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5256084Z
2026-10-24T20:56:04.5256400Z 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-24T20:56:04.5256456Z
2026-10-24T20:56:04.5256511Z 542     setTailscaleServe: (input) =>
2026-10-24T20:56:04.5256554Z         ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5256557Z
2026-10-24T20:56:04.5256872Z 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-24T20:56:04.5256874Z
2026-10-24T20:56:04.5256929Z 546     setUpdateChannel: (channel) =>
2026-10-24T20:56:04.5256971Z         ~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5256973Z
2026-10-24T20:56:04.5257349Z 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-24T20:56:04.5257353Z
2026-10-24T20:56:04.5257412Z 550     setWslBackendEnabled: (enabled) =>
2026-10-24T20:56:04.5257457Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5257459Z
2026-10-24T20:56:04.5257768Z 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-24T20:56:04.5257770Z
2026-10-24T20:56:04.5257818Z 554     setWslDistro: (distro) =>
2026-10-24T20:56:04.5257860Z         ~~~~~~~~~~~~
2026-10-24T20:56:04.5257862Z
2026-10-24T20:56:04.5258167Z 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-24T20:56:04.5258169Z
2026-10-24T20:56:04.5258219Z 560     setWslOnly: (enabled) =>
2026-10-24T20:56:04.5258258Z         ~~~~~~~~~~
2026-10-24T20:56:04.5258262Z
2026-10-24T20:56:04.5258600Z 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-24T20:56:04.5258602Z
2026-10-24T20:56:04.5258667Z 564     setLocalEnvironmentEnabled: (enabled) =>
2026-10-24T20:56:04.5258711Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5258713Z
2026-10-24T20:56:04.5259056Z 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-24T20:56:04.5259059Z
2026-10-24T20:56:04.5259130Z 599         setMainWindowBounds: (bounds, isMaximized) =>
2026-10-24T20:56:04.5259178Z             ~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5259180Z
2026-10-24T20:56:04.5259504Z 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-24T20:56:04.5259507Z
2026-10-24T20:56:04.5259566Z 601         setServerExposureMode: (mode) =>
2026-10-24T20:56:04.5259611Z             ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5259613Z
2026-10-24T20:56:04.5259929Z 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-24T20:56:04.5259933Z
2026-10-24T20:56:04.5260060Z 603         setTailscaleServe: (input) => update((settings) => setTailscaleServe(settings, input)),
2026-10-24T20:56:04.5260104Z             ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5260106Z
2026-10-24T20:56:04.5260427Z 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-24T20:56:04.5260481Z
2026-10-24T20:56:04.5260608Z 604         setUpdateChannel: (channel) => update((settings) => setUpdateChannel(settings, channel)),
2026-10-24T20:56:04.5260650Z             ~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5260652Z
2026-10-24T20:56:04.5260979Z 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-24T20:56:04.5260981Z
2026-10-24T20:56:04.5261042Z 605         setWslBackendEnabled: (enabled) =>
2026-10-24T20:56:04.5261087Z             ~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5261089Z
2026-10-24T20:56:04.5261452Z 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-24T20:56:04.5261456Z
2026-10-24T20:56:04.5261570Z 607         setWslDistro: (distro) => update((settings) => setWslDistro(settings, distro)),
2026-10-24T20:56:04.5261613Z             ~~~~~~~~~~~~
2026-10-24T20:56:04.5261615Z
2026-10-24T20:56:04.5261926Z 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-24T20:56:04.5261928Z
2026-10-24T20:56:04.5262036Z 608         setWslOnly: (enabled) => update((settings) => setWslOnly(settings, enabled)),
2026-10-24T20:56:04.5262078Z             ~~~~~~~~~~
2026-10-24T20:56:04.5262080Z
2026-10-24T20:56:04.5262420Z 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-24T20:56:04.5262426Z
2026-10-24T20:56:04.5262491Z 609         setLocalEnvironmentEnabled: (enabled) =>
2026-10-24T20:56:04.5262537Z             ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5262539Z
2026-10-24T20:56:04.5262845Z 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-24T20:56:04.5262848Z
2026-10-24T20:56:04.5262897Z 197     set: (settings) =>
2026-10-24T20:56:04.5262936Z         ~~~
2026-10-24T20:56:04.5262938Z
2026-10-24T20:56:04.5263243Z 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-24T20:56:04.5263247Z
2026-10-24T20:56:04.5263335Z 231         set: (settings) => Ref.set(settingsRef, Option.some(settings)),
2026-10-24T20:56:04.5263377Z             ~~~
2026-10-24T20:56:04.5263379Z
2026-10-24T20:56:04.5263712Z 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-24T20:56:04.5263714Z
2026-10-24T20:56:04.5263784Z 1729     setAnimationDestination: (id, destination) =>
2026-10-24T20:56:04.5263828Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5263830Z
2026-10-24T20:56:04.5264131Z 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-24T20:56:04.5264133Z
2026-10-24T20:56:04.5264182Z 1740     dismissAnimation: (id) =>
2026-10-24T20:56:04.5264229Z          ~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5264231Z
2026-10-24T20:56:04.5264572Z 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-24T20:56:04.5264574Z
2026-10-24T20:56:04.5264623Z 1745     acknowledge: (id) =>
2026-10-24T20:56:04.5264663Z          ~~~~~~~~~~~
2026-10-24T20:56:04.5264665Z
2026-10-24T20:56:04.5264976Z 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-24T20:56:04.5264979Z
2026-10-24T20:56:04.5265029Z 136     discoverHosts: (input) =>
2026-10-24T20:56:04.5265067Z         ~~~~~~~~~~~~~
2026-10-24T20:56:04.5265070Z
2026-10-24T20:56:04.5265429Z 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-24T20:56:04.5265433Z
2026-10-24T20:56:04.5265482Z 141     resolveHost: (alias) =>
2026-10-24T20:56:04.5265523Z         ~~~~~~~~~~~
2026-10-24T20:56:04.5265525Z
2026-10-24T20:56:04.5265896Z 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-24T20:56:04.5265901Z
2026-10-24T20:56:04.5265970Z 146     ensureEnvironment: (target, ensureOptions) =>
2026-10-24T20:56:04.5266014Z         ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5266016Z
2026-10-24T20:56:04.5266343Z 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-24T20:56:04.5266345Z
2026-10-24T20:56:04.5266402Z 154     disconnectEnvironment: (target) =>
2026-10-24T20:56:04.5266445Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5266447Z
2026-10-24T20:56:04.5266766Z 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-24T20:56:04.5266768Z
2026-10-24T20:56:04.5266900Z 1171     installPrepared: (expectedVersion) => installWithExpectedVersion(expectedVersion),
2026-10-24T20:56:04.5266944Z          ~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5266946Z
2026-10-24T20:56:04.5267243Z 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-24T20:56:04.5267245Z
2026-10-24T20:56:04.5267297Z 1101       preWarm: () => Effect.void,
2026-10-24T20:56:04.5267339Z            ~~~~~~~
2026-10-24T20:56:04.5267343Z
2026-10-24T20:56:04.5267682Z 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-24T20:56:04.5267684Z
2026-10-24T20:56:04.5267753Z 1102       windowsToWslPath: (distro, windowsPath) =>
2026-10-24T20:56:04.5267797Z            ~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5267799Z
2026-10-24T20:56:04.5268113Z 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-24T20:56:04.5268115Z
2026-10-24T20:56:04.5268254Z 1104       getUserHome: (distro) => Effect.succeed(stub.getUserHome?.(distro) ?? Option.none<string>()),
2026-10-24T20:56:04.5268299Z            ~~~~~~~~~~~
2026-10-24T20:56:04.5268301Z
2026-10-24T20:56:04.5268611Z 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-24T20:56:04.5268669Z
2026-10-24T20:56:04.5268803Z 1105       getDistroIp: (distro) => Effect.succeed(stub.getDistroIp?.(distro) ?? Option.none<string>()),
2026-10-24T20:56:04.5268845Z            ~~~~~~~~~~~
2026-10-24T20:56:04.5268847Z
2026-10-24T20:56:04.5269177Z 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-24T20:56:04.5269179Z
2026-10-24T20:56:04.5269240Z 1106       prepareRuntime: (distro, archive) =>
2026-10-24T20:56:04.5269282Z            ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5269284Z
2026-10-24T20:56:04.5269759Z 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-24T20:56:04.5269763Z
2026-10-24T20:56:04.5269896Z 1113       pruneRuntimes: (distro, runtimeId) => stub.pruneRuntimes?.(distro, runtimeId) ?? Effect.void,
2026-10-24T20:56:04.5269939Z            ~~~~~~~~~~~~~
2026-10-24T20:56:04.5269941Z
2026-10-24T20:56:04.5270283Z 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-24T20:56:04.5270286Z
2026-10-24T20:56:04.5270351Z 1114       invalidateRuntime: (distro, runtimeId) =>
2026-10-24T20:56:04.5270395Z            ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5270397Z
2026-10-24T20:56:04.5270734Z 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-24T20:56:04.5270738Z
2026-10-24T20:56:04.5270801Z 1116       probeRuntime: (distro, linuxAppRoot) =>
2026-10-24T20:56:04.5270843Z            ~~~~~~~~~~~~
2026-10-24T20:56:04.5270845Z
2026-10-24T20:56:04.5271195Z 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-24T20:56:04.5271197Z
2026-10-24T20:56:04.5271272Z 1120       ensureNodePty: (distro, linuxAppRoot, options) =>
2026-10-24T20:56:04.5271316Z            ~~~~~~~~~~~~~
2026-10-24T20:56:04.5271318Z
2026-10-24T20:56:04.5271626Z 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-24T20:56:04.5271630Z
2026-10-24T20:56:04.5271680Z 1187       preWarm: (distro) =>
2026-10-24T20:56:04.5271719Z            ~~~~~~~
2026-10-24T20:56:04.5271724Z
2026-10-24T20:56:04.5272052Z 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-24T20:56:04.5272054Z
2026-10-24T20:56:04.5272115Z 1192       prepareRuntime: (distro, archive) =>
2026-10-24T20:56:04.5272157Z            ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5272160Z
2026-10-24T20:56:04.5272491Z 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-24T20:56:04.5272495Z
2026-10-24T20:56:04.5272552Z 1196       pruneRuntimes: (distro, runtimeId) =>
2026-10-24T20:56:04.5272647Z            ~~~~~~~~~~~~~
2026-10-24T20:56:04.5272649Z
2026-10-24T20:56:04.5272986Z 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-24T20:56:04.5272989Z
2026-10-24T20:56:04.5273052Z 1200       invalidateRuntime: (distro, runtimeId) =>
2026-10-24T20:56:04.5273095Z            ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5273097Z
2026-10-24T20:56:04.5273428Z 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-24T20:56:04.5273432Z
2026-10-24T20:56:04.5273492Z 1204       probeRuntime: (distro, linuxAppRoot) =>
2026-10-24T20:56:04.5273585Z            ~~~~~~~~~~~~
2026-10-24T20:56:04.5273587Z
2026-10-24T20:56:04.5273939Z 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-24T20:56:04.5273942Z
2026-10-24T20:56:04.5274021Z 1208       ensureNodePty: (distro, linuxAppRoot, options) =>
2026-10-24T20:56:04.5274061Z            ~~~~~~~~~~~~~
2026-10-24T20:56:04.5274063Z
2026-10-24T20:56:04.5274065Z
2026-10-24T20:56:04.5274069Z
2026-10-24T20:56:04.5274404Z 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-24T20:56:04.5274407Z
2026-10-24T20:56:04.5274457Z 820     clear: (environmentId) =>
2026-10-24T20:56:04.5274500Z         ~~~~~
2026-10-24T20:56:04.5274502Z
2026-10-24T20:56:04.5274803Z 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-24T20:56:04.5274807Z
2026-10-24T20:56:04.5274890Z 830     observe: ({ environmentId, environmentLabel, method }) =>
2026-10-24T20:56:04.5274931Z         ~~~~~~~
2026-10-24T20:56:04.5274933Z
2026-10-24T20:56:04.5275231Z 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-24T20:56:04.5275234Z
2026-10-24T20:56:04.5275278Z 551     get: (entry) =>
2026-10-24T20:56:04.5275318Z         ~~~
2026-10-24T20:56:04.5275320Z
2026-10-24T20:56:04.5275632Z 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-24T20:56:04.5275636Z
2026-10-24T20:56:04.5275686Z 578     set: (entry, permission) => {
2026-10-24T20:56:04.5275727Z         ~~~
2026-10-24T20:56:04.5275729Z
2026-10-24T20:56:04.5276071Z 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-24T20:56:04.5276073Z
2026-10-24T20:56:04.5276154Z 598     forget: (environmentId) => write(environmentId, null),
2026-10-24T20:56:04.5276192Z         ~~~~~~
2026-10-24T20:56:04.5276194Z
2026-10-24T20:56:04.5276542Z 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-24T20:56:04.5276545Z
2026-10-24T20:56:04.5276602Z 645       register: (registration, routes) =>
2026-10-24T20:56:04.5276698Z           ~~~~~~~~
2026-10-24T20:56:04.5276701Z
2026-10-24T20:56:04.5277055Z 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-24T20:56:04.5277058Z
2026-10-24T20:56:04.5277116Z 649       setRoutes: (environmentId, routes) =>
2026-10-24T20:56:04.5277157Z           ~~~~~~~~~
2026-10-24T20:56:04.5277160Z
2026-10-24T20:56:04.5277495Z 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-24T20:56:04.5277497Z
2026-10-24T20:56:04.5277548Z 653       remove: (environmentId) =>
2026-10-24T20:56:04.5277637Z           ~~~~~~
2026-10-24T20:56:04.5277641Z
2026-10-24T20:56:04.5277994Z 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-24T20:56:04.5277998Z
2026-10-24T20:56:04.5278060Z 657       setEnabled: (environmentId, enabled) =>
2026-10-24T20:56:04.5278101Z           ~~~~~~~~~~
2026-10-24T20:56:04.5278103Z
2026-10-24T20:56:04.5278431Z 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-24T20:56:04.5278433Z
2026-10-24T20:56:04.5278487Z 734       loadShell: (environmentId) =>
2026-10-24T20:56:04.5278525Z           ~~~~~~~~~
2026-10-24T20:56:04.5278528Z
2026-10-24T20:56:04.5278870Z 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-24T20:56:04.5278874Z
2026-10-24T20:56:04.5278935Z 770       loadServerConfig: (environmentId) =>
2026-10-24T20:56:04.5278980Z           ~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5278982Z
2026-10-24T20:56:04.5279326Z 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-24T20:56:04.5279332Z
2026-10-24T20:56:04.5279392Z 804       loadThread: (environmentId, threadId) =>
2026-10-24T20:56:04.5279433Z           ~~~~~~~~~~
2026-10-24T20:56:04.5279435Z
2026-10-24T20:56:04.5279779Z 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-24T20:56:04.5279782Z
2026-10-24T20:56:04.5279844Z 853       loadVcsRefs: (environmentId, cwd) =>
2026-10-24T20:56:04.5279883Z           ~~~~~~~~~~~
2026-10-24T20:56:04.5279886Z
2026-10-24T20:56:04.5280230Z 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-24T20:56:04.5280232Z
2026-10-24T20:56:04.5280292Z 895       removeVcsRefs: (environmentId, cwd) =>
2026-10-24T20:56:04.5280333Z           ~~~~~~~~~~~~~
2026-10-24T20:56:04.5280335Z
2026-10-24T20:56:04.5280669Z 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-24T20:56:04.5280672Z
2026-10-24T20:56:04.5280726Z 901       clearVcsRefs: (environmentId) =>
2026-10-24T20:56:04.5280872Z           ~~~~~~~~~~~~
2026-10-24T20:56:04.5280874Z
2026-10-24T20:56:04.5281221Z 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-24T20:56:04.5281224Z
2026-10-24T20:56:04.5281289Z 907       removeThread: (environmentId, threadId) =>
2026-10-24T20:56:04.5281330Z           ~~~~~~~~~~~~
2026-10-24T20:56:04.5281332Z
2026-10-24T20:56:04.5281814Z 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-24T20:56:04.5281816Z
2026-10-24T20:56:04.5281868Z 913       clear: (environmentId) =>
2026-10-24T20:56:04.5281971Z           ~~~~~
2026-10-24T20:56:04.5281973Z
2026-10-24T20:56:04.5281975Z
2026-10-24T20:56:04.5282027Z ~/apps/server$ tsc --noEmit
2026-10-24T20:56:04.5282278Z 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-24T20:56:04.5282281Z
2026-10-24T20:56:04.5282336Z 941         yield* Effect.sleep("1200 millis")
2026-10-24T20:56:04.5282386Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5282429Z 942           .pipe(
2026-10-24T20:56:04.5282471Z     ~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5282510Z ...
2026-10-24T20:56:04.5282550Z 954           )
2026-10-24T20:56:04.5282591Z     ~~~~~~~~~~~
2026-10-24T20:56:04.5282644Z 955           .pipe(Effect.forkDetach);
2026-10-24T20:56:04.5282691Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5282693Z
2026-10-24T20:56:04.5283001Z 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-24T20:56:04.5283004Z
2026-10-24T20:56:04.5283053Z 1175     logger: (event) => {
2026-10-24T20:56:04.5283095Z          ~~~~~~
2026-10-24T20:56:04.5283097Z
2026-10-24T20:56:04.5283522Z 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-24T20:56:04.5283524Z
2026-10-24T20:56:04.5283632Z 376 const DEFAULT_GROK_SETTINGS = Schema.decodeUnknownSync(GrokSettings)({});
2026-10-24T20:56:04.5283690Z                                          ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5283693Z
2026-10-24T20:56:04.5284097Z 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-24T20:56:04.5284101Z
2026-10-24T20:56:04.5284216Z 975       const { resource } = yield* Schema.decodeUnknownEffect(AssetCreateUrlInput)({
2026-10-24T20:56:04.5284277Z                                              ~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5284279Z
2026-10-24T20:56:04.5284573Z 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-24T20:56:04.5284575Z
2026-10-24T20:56:04.5284625Z 1346     getDescriptor: () =>
2026-10-24T20:56:04.5284668Z          ~~~~~~~~~~~~~
2026-10-24T20:56:04.5284671Z
2026-10-24T20:56:04.5284985Z 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-24T20:56:04.5285053Z
2026-10-24T20:56:04.5285100Z 55     getDescriptor: () =>
2026-10-24T20:56:04.5285142Z        ~~~~~~~~~~~~~
2026-10-24T20:56:04.5285144Z
2026-10-24T20:56:04.5285470Z 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-24T20:56:04.5285473Z
2026-10-24T20:56:04.5285523Z 540       authenticate: (request) =>
2026-10-24T20:56:04.5285565Z           ~~~~~~~~~~~~
2026-10-24T20:56:04.5285567Z
2026-10-24T20:56:04.5285853Z 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-24T20:56:04.5285855Z
2026-10-24T20:56:04.5285911Z 468         : Effect.succeed(undefined),
2026-10-24T20:56:04.5286006Z               ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5286009Z
2026-10-24T20:56:04.5286293Z 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-24T20:56:04.5286296Z
2026-10-24T20:56:04.5286350Z 328       HttpClientError: (cause) =>
2026-10-24T20:56:04.5286392Z           ~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5286394Z
2026-10-24T20:56:04.5286632Z src/cloud/CloudLink.lifecycle.test.ts:166:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5286635Z
2026-10-24T20:56:04.5286702Z 166             latest: Effect.succeed(Option.none()),
2026-10-24T20:56:04.5286748Z                         ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5286751Z
2026-10-24T20:56:04.5286970Z src/cloud/CloudLink.test.ts:99:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5286972Z
2026-10-24T20:56:04.5287036Z 99         latest: Effect.succeed(Option.none()),
2026-10-24T20:56:04.5287082Z                    ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5287084Z
2026-10-24T20:56:04.5287430Z 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-24T20:56:04.5287433Z
2026-10-24T20:56:04.5287562Z 791     requestRecovery: (config) => Queue.offer(recoveryRequests, config).pipe(Effect.asVoid),
2026-10-24T20:56:04.5287604Z         ~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5287606Z
2026-10-24T20:56:04.5287814Z src/cloud/http.test.ts:81:67 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5287816Z
2026-10-24T20:56:04.5287965Z 81     Layer.mock(ConnectReachability.ConnectReachability)({ latest: Effect.succeed(Option.none()) }),
2026-10-24T20:56:04.5288037Z                                                                      ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5288040Z
2026-10-24T20:56:04.5288381Z 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-24T20:56:04.5288384Z
2026-10-24T20:56:04.5288466Z 371     commitDesktopUpdate: (requestId, onHandoffAccepted) =>
2026-10-24T20:56:04.5288510Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5288513Z
2026-10-24T20:56:04.5288798Z 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-24T20:56:04.5288800Z
2026-10-24T20:56:04.5288849Z 808       updateTool: (tool) =>
2026-10-24T20:56:04.5288892Z           ~~~~~~~~~~
2026-10-24T20:56:04.5288894Z
2026-10-24T20:56:04.5289223Z 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-24T20:56:04.5289225Z
2026-10-24T20:56:04.5289272Z 823       easAccount: () =>
2026-10-24T20:56:04.5289313Z           ~~~~~~~~~~
2026-10-24T20:56:04.5289315Z
2026-10-24T20:56:04.5289627Z 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-24T20:56:04.5289630Z
2026-10-24T20:56:04.5289685Z 868     ensureAgentReady: (onPhase) =>
2026-10-24T20:56:04.5289727Z         ~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5289730Z
2026-10-24T20:56:04.5290002Z src/device/easProjectId.ts:201:7 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T20:56:04.5290006Z
2026-10-24T20:56:04.5290058Z 201       Effect.map(Option.some),
2026-10-24T20:56:04.5290099Z           ~~~~~~~~~~
2026-10-24T20:56:04.5290101Z
2026-10-24T20:56:04.5290388Z 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-24T20:56:04.5290390Z
2026-10-24T20:56:04.5290469Z 141   return DirectEndpoints.of({ resolve: () => resolve });
2026-10-24T20:56:04.5290518Z                                   ~~~~~~~
2026-10-24T20:56:04.5290520Z
2026-10-24T20:56:04.5290830Z 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-24T20:56:04.5290832Z
2026-10-24T20:56:04.5290937Z 83   return RemoteOpenTargets.of({ resolveTargets: () => resolveTargets });
2026-10-24T20:56:04.5290990Z                                    ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5290992Z
2026-10-24T20:56:04.5291294Z 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-24T20:56:04.5291296Z
2026-10-24T20:56:04.5291346Z 302     isRepository: (cwd) =>
2026-10-24T20:56:04.5291388Z         ~~~~~~~~~~~~
2026-10-24T20:56:04.5291390Z
2026-10-24T20:56:04.5291684Z 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-24T20:56:04.5291686Z
2026-10-24T20:56:04.5291733Z 315     hasCommit: (input) =>
2026-10-24T20:56:04.5291774Z         ~~~~~~~~~
2026-10-24T20:56:04.5291776Z
2026-10-24T20:56:04.5292076Z 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-24T20:56:04.5292080Z
2026-10-24T20:56:04.5292129Z 327     hasRefNamed: (input) =>
2026-10-24T20:56:04.5292168Z         ~~~~~~~~~~~
2026-10-24T20:56:04.5292170Z
2026-10-24T20:56:04.5292459Z 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-24T20:56:04.5292461Z
2026-10-24T20:56:04.5292508Z 346     status: (input) =>
2026-10-24T20:56:04.5292550Z         ~~~~~~
2026-10-24T20:56:04.5292552Z
2026-10-24T20:56:04.5292851Z 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-24T20:56:04.5292854Z
2026-10-24T20:56:04.5292901Z 352     localStatus: (input) =>
2026-10-24T20:56:04.5293002Z         ~~~~~~~~~~~
2026-10-24T20:56:04.5293004Z
2026-10-24T20:56:04.5293322Z 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-24T20:56:04.5293325Z
2026-10-24T20:56:04.5293381Z 360     remoteStatus: (input, options) =>
2026-10-24T20:56:04.5293422Z         ~~~~~~~~~~~~
2026-10-24T20:56:04.5293424Z
2026-10-24T20:56:04.5293731Z 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-24T20:56:04.5293733Z
2026-10-24T20:56:04.5293785Z 369     pullCurrentBranch: (cwd) =>
2026-10-24T20:56:04.5293833Z         ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5293882Z
2026-10-24T20:56:04.5294205Z 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-24T20:56:04.5294209Z
2026-10-24T20:56:04.5294269Z 373     runStackedAction: (input, options) =>
2026-10-24T20:56:04.5294311Z         ~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5294313Z
2026-10-24T20:56:04.5294643Z 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-24T20:56:04.5294645Z
2026-10-24T20:56:04.5294707Z 388     preparePullRequestThread: (input) =>
2026-10-24T20:56:04.5294752Z         ~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5294754Z
2026-10-24T20:56:04.5295048Z 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-24T20:56:04.5295054Z
2026-10-24T20:56:04.5295102Z 399     listRefs: (input) =>
2026-10-24T20:56:04.5295142Z         ~~~~~~~~
2026-10-24T20:56:04.5295145Z
2026-10-24T20:56:04.5295458Z 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-24T20:56:04.5295460Z
2026-10-24T20:56:04.5295516Z 405     createWorktree: (input, options) =>
2026-10-24T20:56:04.5295556Z         ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5295558Z
2026-10-24T20:56:04.5295916Z 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-24T20:56:04.5295920Z
2026-10-24T20:56:04.5295976Z 409     listLocalBranchNames: (cwd) =>
2026-10-24T20:56:04.5296023Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5296025Z
2026-10-24T20:56:04.5296324Z 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-24T20:56:04.5296327Z
2026-10-24T20:56:04.5296374Z 413     fetchRemote: (input) =>
2026-10-24T20:56:04.5296415Z         ~~~~~~~~~~~
2026-10-24T20:56:04.5296418Z
2026-10-24T20:56:04.5296718Z 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-24T20:56:04.5296720Z
2026-10-24T20:56:04.5296770Z 417     remoteExists: (input) =>
2026-10-24T20:56:04.5296813Z         ~~~~~~~~~~~~
2026-10-24T20:56:04.5296815Z
2026-10-24T20:56:04.5297134Z 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-24T20:56:04.5297188Z
2026-10-24T20:56:04.5297242Z 421     remoteBranchExists: (input) =>
2026-10-24T20:56:04.5297288Z         ~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5297290Z
2026-10-24T20:56:04.5297619Z 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-24T20:56:04.5297621Z
2026-10-24T20:56:04.5297685Z 425     resolveRemoteTrackingCommit: (input) =>
2026-10-24T20:56:04.5297729Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5297731Z
2026-10-24T20:56:04.5298100Z 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-24T20:56:04.5298105Z
2026-10-24T20:56:04.5298167Z 429     resolveWorktreeBaseRemote: (input) =>
2026-10-24T20:56:04.5298212Z         ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5298215Z
2026-10-24T20:56:04.5298532Z 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-24T20:56:04.5298537Z
2026-10-24T20:56:04.5298593Z 433     fetchWorktreeBaseCommit: (input) =>
2026-10-24T20:56:04.5298639Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5298642Z
2026-10-24T20:56:04.5298944Z 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-24T20:56:04.5298948Z
2026-10-24T20:56:04.5299000Z 437     removeWorktree: (input) =>
2026-10-24T20:56:04.5299042Z         ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5299044Z
2026-10-24T20:56:04.5299349Z 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-24T20:56:04.5299352Z
2026-10-24T20:56:04.5299401Z 441     pruneWorktrees: (input) =>
2026-10-24T20:56:04.5299442Z         ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5299444Z
2026-10-24T20:56:04.5299759Z 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-24T20:56:04.5299761Z
2026-10-24T20:56:04.5299812Z 445     deleteLocalBranch: (input) =>
2026-10-24T20:56:04.5299857Z         ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5299861Z
2026-10-24T20:56:04.5300155Z 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-24T20:56:04.5300159Z
2026-10-24T20:56:04.5300208Z 449     createRef: (input) =>
2026-10-24T20:56:04.5300248Z         ~~~~~~~~~
2026-10-24T20:56:04.5300250Z
2026-10-24T20:56:04.5300541Z 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-24T20:56:04.5300543Z
2026-10-24T20:56:04.5300591Z 457     switchRef: (input) =>
2026-10-24T20:56:04.5300632Z         ~~~~~~~~~
2026-10-24T20:56:04.5300635Z
2026-10-24T20:56:04.5300935Z 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-24T20:56:04.5300937Z
2026-10-24T20:56:04.5301039Z 463     renameBranch: (input) =>
2026-10-24T20:56:04.5301079Z         ~~~~~~~~~~~~
2026-10-24T20:56:04.5301081Z
2026-10-24T20:56:04.5301344Z src/htmlRender/headlessChrome.ts:282:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("receive")((raw) => { ... })`. effect(effectFnOpportunity)
2026-10-24T20:56:04.5301347Z
2026-10-24T20:56:04.5301399Z 282   const receive = (raw: string) => {
2026-10-24T20:56:04.5301439Z             ~~~~~~~
2026-10-24T20:56:04.5301442Z
2026-10-24T20:56:04.5301812Z 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-24T20:56:04.5301816Z
2026-10-24T20:56:04.5301856Z 284       try {
2026-10-24T20:56:04.5301945Z           ~~~~~
2026-10-24T20:56:04.5301999Z 285         parsed = JSON.parse(line);
2026-10-24T20:56:04.5302044Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5302085Z ...
2026-10-24T20:56:04.5302183Z 287         return yield* respondWithError(null, "Parse error", -32700);
2026-10-24T20:56:04.5302252Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5302291Z 288       }
2026-10-24T20:56:04.5302332Z     ~~~~~~~
2026-10-24T20:56:04.5302335Z
2026-10-24T20:56:04.5302607Z 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-24T20:56:04.5302610Z
2026-10-24T20:56:04.5302669Z 324       Effect.catchCause(() => Effect.void),
2026-10-24T20:56:04.5302711Z           ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5302715Z
2026-10-24T20:56:04.5302947Z src/mcp/McpDeviceToolkit.test.ts:105:18 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5302951Z
2026-10-24T20:56:04.5303017Z 105   getById: () => Effect.succeed(Option.none()),
2026-10-24T20:56:04.5303064Z                      ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5303066Z
2026-10-24T20:56:04.5303352Z 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-24T20:56:04.5303354Z
2026-10-24T20:56:04.5303446Z 421 const previewSnapshotFailure = <E>(cause: Cause.Cause<E>) => {
2026-10-24T20:56:04.5303491Z           ~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5303493Z
2026-10-24T20:56:04.5303781Z 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-24T20:56:04.5303784Z
2026-10-24T20:56:04.5303834Z 938       addTool: (options) =>
2026-10-24T20:56:04.5303875Z           ~~~~~~~
2026-10-24T20:56:04.5303879Z
2026-10-24T20:56:04.5304156Z 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-24T20:56:04.5304158Z
2026-10-24T20:56:04.5304218Z 22     resolve: () => Effect.succeed(undefined),
2026-10-24T20:56:04.5304269Z                       ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5304271Z
2026-10-24T20:56:04.5304561Z 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-24T20:56:04.5304563Z
2026-10-24T20:56:04.5304622Z 112       Effect.flatMap(() => writingCaller),
2026-10-24T20:56:04.5304663Z           ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5304665Z
2026-10-24T20:56:04.5305175Z 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-24T20:56:04.5305233Z
2026-10-24T20:56:04.5305308Z 2465       const cancelOrphan = Effect.gen(function* () {
2026-10-24T20:56:04.5305365Z                                            ~~~~~~~~~
2026-10-24T20:56:04.5305368Z
2026-10-24T20:56:04.5305604Z   src/mcp/OrchestratorMcpService.ts:2480:17 - This repeated `Effect.mapError(...)` site participates in the hoistable generator-wide mapping. effect(redundantMapError)
2026-10-24T20:56:04.5305686Z     2480           .pipe(Effect.mapError(threadManagementFailure));
2026-10-24T20:56:04.5305734Z                          ~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5305736Z
2026-10-24T20:56:04.5306082Z   src/mcp/OrchestratorMcpService.ts:2483:17 - This repeated `Effect.mapError(...)` site participates in the hoistable generator-wide mapping. effect(redundantMapError)
2026-10-24T20:56:04.5306166Z     2483           .pipe(Effect.mapError(threadManagementFailure));
2026-10-24T20:56:04.5306211Z                          ~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5306213Z
2026-10-24T20:56:04.5306490Z 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-24T20:56:04.5306492Z
2026-10-24T20:56:04.5306540Z 651         onNone: () =>
2026-10-24T20:56:04.5306581Z             ~~~~~~
2026-10-24T20:56:04.5306583Z
2026-10-24T20:56:04.5306785Z src/mcp/WorktreeMcpService.test.ts:355:3 - suggestion TS377017: This Effect.gen contains a single return statement. effect(unnecessaryEffectGen)
2026-10-24T20:56:04.5306787Z
2026-10-24T20:56:04.5306834Z 355   Effect.gen(function* () {
2026-10-24T20:56:04.5306879Z       ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5306966Z 356     return yield* WorktreeMcpService.WorktreeMcpService;
2026-10-24T20:56:04.5307030Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5307088Z 357   }).pipe(Effect.provide(harness.layer));
2026-10-24T20:56:04.5307129Z     ~~~~
2026-10-24T20:56:04.5307132Z
2026-10-24T20:56:04.5307406Z 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-24T20:56:04.5307409Z
2026-10-24T20:56:04.5307460Z 217     const thread = yield* engine
2026-10-24T20:56:04.5307503Z                               ~~~~~~
2026-10-24T20:56:04.5307553Z 218       .getThreadShell(threadId)
2026-10-24T20:56:04.5307599Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5307664Z 219       .pipe(Effect.map(Option.fromNullishOr))
2026-10-24T20:56:04.5307717Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5307803Z 220       .pipe(Effect.mapError((cause) => new Failure({ cause })));
2026-10-24T20:56:04.5307872Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5307874Z
2026-10-24T20:56:04.5308162Z 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-24T20:56:04.5308164Z
2026-10-24T20:56:04.5308284Z 96   McpAppModelContext.of({ set: () => Effect.void, forThread: () => Effect.succeed([]) }),
2026-10-24T20:56:04.5308328Z                              ~~~
2026-10-24T20:56:04.5308330Z
2026-10-24T20:56:04.5308625Z 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-24T20:56:04.5308627Z
2026-10-24T20:56:04.5308746Z 96   McpAppModelContext.of({ set: () => Effect.void, forThread: () => Effect.succeed([]) }),
2026-10-24T20:56:04.5308865Z                                                      ~~~~~~~~~
2026-10-24T20:56:04.5308868Z
2026-10-24T20:56:04.5309193Z 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-24T20:56:04.5309195Z
2026-10-24T20:56:04.5309241Z 16     record: (records) =>
2026-10-24T20:56:04.5309283Z        ~~~~~~
2026-10-24T20:56:04.5309285Z
2026-10-24T20:56:04.5309561Z 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-24T20:56:04.5309563Z
2026-10-24T20:56:04.5309668Z 41   defaultValue: () => ({ latestNoticeableStall: Effect.succeed(undefined) }),
2026-10-24T20:56:04.5309780Z                                                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5309787Z
2026-10-24T20:56:04.5310243Z 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-24T20:56:04.5310246Z
2026-10-24T20:56:04.5310350Z 30 const REPLAY_SETTINGS = Schema.decodeUnknownSync(AcpRegistrySettings)({
2026-10-24T20:56:04.5310403Z                                   ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5310406Z
2026-10-24T20:56:04.5310717Z 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-24T20:56:04.5310719Z
2026-10-24T20:56:04.5310781Z 48   defaultModel: Effect.succeed(undefined),
2026-10-24T20:56:04.5310828Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5310832Z
2026-10-24T20:56:04.5311144Z 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-24T20:56:04.5311146Z
2026-10-24T20:56:04.5311213Z 169         defaultModel: Effect.succeed(undefined),
2026-10-24T20:56:04.5311266Z                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5311268Z
2026-10-24T20:56:04.5311585Z 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-24T20:56:04.5311587Z
2026-10-24T20:56:04.5311650Z 306         defaultModel: Effect.succeed(undefined),
2026-10-24T20:56:04.5311702Z                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5311704Z
2026-10-24T20:56:04.5312014Z 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-24T20:56:04.5312018Z
2026-10-24T20:56:04.5312080Z 542         defaultModel: Effect.succeed(undefined),
2026-10-24T20:56:04.5312128Z                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5312132Z
2026-10-24T20:56:04.5312471Z 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-24T20:56:04.5312474Z
2026-10-24T20:56:04.5312535Z 974       const controller = new AbortController();
2026-10-24T20:56:04.5312587Z                              ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5312589Z
2026-10-24T20:56:04.5312887Z 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-24T20:56:04.5312945Z
2026-10-24T20:56:04.5313015Z 1326         const requestEvent = yield* runtime.events
2026-10-24T20:56:04.5313069Z                                          ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5313115Z 1327           .pipe(
2026-10-24T20:56:04.5313158Z      ~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5313199Z  ...
2026-10-24T20:56:04.5313239Z 1330           )
2026-10-24T20:56:04.5313281Z      ~~~~~~~~~~~
2026-10-24T20:56:04.5313337Z 1331           .pipe(Effect.forkScoped);
2026-10-24T20:56:04.5313381Z      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5313384Z
2026-10-24T20:56:04.5313771Z 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-24T20:56:04.5313776Z
2026-10-24T20:56:04.5313844Z 1332         const controller = new AbortController();
2026-10-24T20:56:04.5313900Z                                 ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5313902Z
2026-10-24T20:56:04.5314239Z 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-24T20:56:04.5314242Z
2026-10-24T20:56:04.5314321Z 1355         const cancelledController = new AbortController();
2026-10-24T20:56:04.5314382Z                                          ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5314384Z
2026-10-24T20:56:04.5314751Z src/orchestration-v2/Adapters/ClaudeAdapterV2.ts:4020:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.getCapabilities")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T20:56:04.5314756Z
2026-10-24T20:56:04.5314866Z 4020     getCapabilities: () => Effect.succeed(ClaudeProviderCapabilitiesV2),
2026-10-24T20:56:04.5314911Z          ~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5314913Z
2026-10-24T20:56:04.5315298Z src/orchestration-v2/Adapters/ClaudeAdapterV2.ts:4021:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.planSelectionTransition")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T20:56:04.5315301Z
2026-10-24T20:56:04.5315425Z 4021     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T20:56:04.5315471Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5315473Z
2026-10-24T20:56:04.5315866Z 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-24T20:56:04.5315870Z
2026-10-24T20:56:04.5315931Z 201         signal: new AbortController().signal,
2026-10-24T20:56:04.5315977Z                     ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5315980Z
2026-10-24T20:56:04.5316374Z 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-24T20:56:04.5316377Z
2026-10-24T20:56:04.5316430Z 74   const pause = Effect.raceFirst(
2026-10-24T20:56:04.5316475Z                    ~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5316477Z
2026-10-24T20:56:04.5316770Z 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-24T20:56:04.5316774Z
2026-10-24T20:56:04.5316881Z 1741     threadId === null ? Effect.succeed(undefined) : mcpSessions.read(threadId);
2026-10-24T20:56:04.5316990Z                              ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5316992Z
2026-10-24T20:56:04.5317352Z 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-24T20:56:04.5317354Z
2026-10-24T20:56:04.5317455Z 1748     getCapabilities: () => Effect.succeed(CodexProviderCapabilitiesV2),
2026-10-24T20:56:04.5317499Z          ~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5317501Z
2026-10-24T20:56:04.5317871Z 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-24T20:56:04.5317925Z
2026-10-24T20:56:04.5318042Z 1749     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T20:56:04.5318090Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5318092Z
2026-10-24T20:56:04.5318411Z 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-24T20:56:04.5318414Z
2026-10-24T20:56:04.5318487Z 3045                   Effect.catch(() => Effect.succeed(null)),
2026-10-24T20:56:04.5318530Z                        ~~~~~~~~~~~~
2026-10-24T20:56:04.5318533Z
2026-10-24T20:56:04.5318905Z 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-24T20:56:04.5318909Z
2026-10-24T20:56:04.5318970Z 3046                   Effect.flatMap((response) =>
2026-10-24T20:56:04.5319020Z                        ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5319022Z
2026-10-24T20:56:04.5319310Z 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-24T20:56:04.5319312Z
2026-10-24T20:56:04.5319373Z 3068                   Effect.catch(() => Effect.void),
2026-10-24T20:56:04.5319420Z                        ~~~~~~~~~~~~
2026-10-24T20:56:04.5319422Z
2026-10-24T20:56:04.5319784Z 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-24T20:56:04.5319786Z
2026-10-24T20:56:04.5319872Z 7268                   return yield* Effect.fail(failedTermination.error);
2026-10-24T20:56:04.5319917Z                               ~~~~~
2026-10-24T20:56:04.5319921Z
2026-10-24T20:56:04.5320353Z 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-24T20:56:04.5320358Z
2026-10-24T20:56:04.5320460Z 33 const DEFAULT_GROK_SETTINGS = Schema.decodeUnknownSync(GrokSettings)({});
2026-10-24T20:56:04.5320519Z                                         ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5320522Z
2026-10-24T20:56:04.5320952Z 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-24T20:56:04.5320954Z
2026-10-24T20:56:04.5321082Z 414 const DEFAULT_MUSE_SETTINGS = Schema.decodeUnknownSync(MuseSettings)({ enabled: true });
2026-10-24T20:56:04.5321191Z                                          ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5321195Z
2026-10-24T20:56:04.5321815Z 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-24T20:56:04.5321818Z
2026-10-24T20:56:04.5321867Z 242       execute: (input) =>
2026-10-24T20:56:04.5321909Z           ~~~~~~~
2026-10-24T20:56:04.5321911Z
2026-10-24T20:56:04.5322175Z src/orchestration-v2/CheckpointRestoreSafety.test.ts:104:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5322177Z
2026-10-24T20:56:04.5322357Z 104             get: () => Effect.succeed(Option.some({ workspaceRoot: parent } as never)),
2026-10-24T20:56:04.5322405Z                            ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5322409Z
2026-10-24T20:56:04.5322759Z 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-24T20:56:04.5322762Z
2026-10-24T20:56:04.5322813Z 41             Effect.catch((error) =>
2026-10-24T20:56:04.5322858Z                ~~~~~~~~~~~~
2026-10-24T20:56:04.5322861Z
2026-10-24T20:56:04.5323207Z 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-24T20:56:04.5323212Z
2026-10-24T20:56:04.5323263Z 83                 Effect.catch((error) =>
2026-10-24T20:56:04.5323310Z                    ~~~~~~~~~~~~
2026-10-24T20:56:04.5323312Z
2026-10-24T20:56:04.5323580Z src/orchestration-v2/CheckpointRollbackService.test.ts:233:22 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5323584Z
2026-10-24T20:56:04.5323684Z 233               return Effect.succeed(Option.some({ workspaceRoot } as never));
2026-10-24T20:56:04.5323730Z                          ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5323732Z
2026-10-24T20:56:04.5324094Z 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-24T20:56:04.5324096Z
2026-10-24T20:56:04.5324163Z 142         const batchAbort = new AbortController();
2026-10-24T20:56:04.5324217Z                                ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5324219Z
2026-10-24T20:56:04.5324587Z 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-24T20:56:04.5324591Z
2026-10-24T20:56:04.5324640Z 168     Effect.flatMap((frame) =>
2026-10-24T20:56:04.5324683Z         ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5324685Z
2026-10-24T20:56:04.5324931Z src/orchestration-v2/CommandReceiptStore.ts:164:29 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5324933Z
2026-10-24T20:56:04.5325005Z 164               onNone: () => Effect.succeed(Option.none()),
2026-10-24T20:56:04.5325056Z                                 ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5325058Z
2026-10-24T20:56:04.5325300Z src/orchestration-v2/CommandReceiptStore.ts:167:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5325303Z
2026-10-24T20:56:04.5325425Z 167                   ? Effect.succeed(Option.none())
2026-10-24T20:56:04.5325474Z                         ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5325476Z
2026-10-24T20:56:04.5325723Z src/orchestration-v2/CommandReceiptStore.ts:168:58 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T20:56:04.5325726Z
2026-10-24T20:56:04.5325872Z 168                   : fromApplicationReceipt(receipt).pipe(Effect.map(Option.some)),
2026-10-24T20:56:04.5325936Z                                                              ~~~~~~~~~~
2026-10-24T20:56:04.5325938Z
2026-10-24T20:56:04.5326182Z src/orchestration-v2/CommandReceiptStore.ts:183:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5326184Z
2026-10-24T20:56:04.5326292Z 183               ? Effect.succeed(Option.none())
2026-10-24T20:56:04.5326341Z                     ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5326344Z
2026-10-24T20:56:04.5326591Z src/orchestration-v2/CommandReceiptStore.ts:192:25 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T20:56:04.5326593Z
2026-10-24T20:56:04.5326655Z 192                 }).pipe(Effect.map(Option.some)),
2026-10-24T20:56:04.5326703Z                             ~~~~~~~~~~
2026-10-24T20:56:04.5326705Z
2026-10-24T20:56:04.5326934Z src/orchestration-v2/EffectOutbox.ts:429:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5326936Z
2026-10-24T20:56:04.5326993Z 429               ? Effect.succeed(Option.none())
2026-10-24T20:56:04.5327037Z                     ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5327039Z
2026-10-24T20:56:04.5327274Z src/orchestration-v2/EffectOutbox.ts:430:39 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T20:56:04.5327278Z
2026-10-24T20:56:04.5327356Z 430               : rowToEffect(row).pipe(Effect.map(Option.some));
2026-10-24T20:56:04.5327410Z                                           ~~~~~~~~~~
2026-10-24T20:56:04.5327412Z
2026-10-24T20:56:04.5327646Z src/orchestration-v2/EffectWorker.test.ts:107:20 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5327648Z
2026-10-24T20:56:04.5327710Z 107         get: () => Effect.succeed(Option.none()),
2026-10-24T20:56:04.5327759Z                        ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5327761Z
2026-10-24T20:56:04.5327998Z src/orchestration-v2/EffectWorker.test.ts:302:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5328000Z
2026-10-24T20:56:04.5328088Z 302       claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T20:56:04.5328138Z                            ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5328141Z
2026-10-24T20:56:04.5328376Z src/orchestration-v2/EffectWorker.test.ts:369:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5328378Z
2026-10-24T20:56:04.5328463Z 369       claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T20:56:04.5328511Z                            ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5328514Z
2026-10-24T20:56:04.5328749Z src/orchestration-v2/EffectWorker.test.ts:436:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5328751Z
2026-10-24T20:56:04.5328835Z 436       claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T20:56:04.5328880Z                            ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5328883Z
2026-10-24T20:56:04.5329119Z src/orchestration-v2/EffectWorker.test.ts:437:18 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5329176Z
2026-10-24T20:56:04.5329255Z 437       get: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T20:56:04.5329303Z                      ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5329305Z
2026-10-24T20:56:04.5329642Z 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-24T20:56:04.5329646Z
2026-10-24T20:56:04.5329697Z 98       execute: (effect, options) => {
2026-10-24T20:56:04.5329740Z          ~~~~~~~
2026-10-24T20:56:04.5329742Z
2026-10-24T20:56:04.5330123Z 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-24T20:56:04.5330127Z
2026-10-24T20:56:04.5330182Z 180                 Effect.catch((cause) =>
2026-10-24T20:56:04.5330231Z                     ~~~~~~~~~~~~
2026-10-24T20:56:04.5330233Z
2026-10-24T20:56:04.5330520Z 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-24T20:56:04.5330522Z
2026-10-24T20:56:04.5330572Z 110         append: (input) =>
2026-10-24T20:56:04.5330614Z             ~~~~~~
2026-10-24T20:56:04.5330616Z
2026-10-24T20:56:04.5330923Z 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-24T20:56:04.5330926Z
2026-10-24T20:56:04.5330982Z 120         appendProjectEvent: (event) =>
2026-10-24T20:56:04.5331027Z             ~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5331030Z
2026-10-24T20:56:04.5331327Z 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-24T20:56:04.5331330Z
2026-10-24T20:56:04.5331382Z 131         latestSequence: (input) =>
2026-10-24T20:56:04.5331428Z             ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5331430Z
2026-10-24T20:56:04.5331687Z src/orchestration-v2/FoundationPersistence.test.ts:1791:26 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5331689Z
2026-10-24T20:56:04.5331781Z 1791         claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T20:56:04.5331831Z                               ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5331833Z
2026-10-24T20:56:04.5332092Z src/orchestration-v2/FoundationPersistence.test.ts:1793:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5332096Z
2026-10-24T20:56:04.5332143Z 1793           Effect.succeed(
2026-10-24T20:56:04.5332186Z                ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5332189Z
2026-10-24T20:56:04.5332446Z src/orchestration-v2/FoundationPersistence.test.ts:2663:30 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5332448Z
2026-10-24T20:56:04.5332526Z 2663             nextClaimableAt: Effect.succeed(Option.none()),
2026-10-24T20:56:04.5332579Z                                   ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5332581Z
2026-10-24T20:56:04.5332835Z src/orchestration-v2/FoundationPersistence.test.ts:2880:30 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5332840Z
2026-10-24T20:56:04.5332915Z 2880             nextClaimableAt: Effect.succeed(Option.none()),
2026-10-24T20:56:04.5333022Z                                   ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5333024Z
2026-10-24T20:56:04.5333384Z src/orchestration-v2/Orchestrator.ts:11811:7 - suggestion TS377120: `Effect.filterOrFail` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-24T20:56:04.5333386Z
2026-10-24T20:56:04.5333441Z 11811       Effect.flatMap((planned) =>
2026-10-24T20:56:04.5333484Z             ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5333486Z
2026-10-24T20:56:04.5333824Z src/orchestration-v2/Orchestrator.ts:12234:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.restartContinuationPending")((run) => { ... })`. effect(effectFnOpportunity)
2026-10-24T20:56:04.5333827Z
2026-10-24T20:56:04.5333939Z 12234     restartContinuationPending: (run) =>
2026-10-24T20:56:04.5333987Z           ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5333991Z
2026-10-24T20:56:04.5334316Z src/orchestration-v2/Orchestrator.ts:12236:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.awaitRestartContinuation")((run) => { ... })`. effect(effectFnOpportunity)
2026-10-24T20:56:04.5334319Z
2026-10-24T20:56:04.5334377Z 12236     awaitRestartContinuation: (run) =>
2026-10-24T20:56:04.5334516Z           ~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5334519Z
2026-10-24T20:56:04.5334843Z src/orchestration-v2/Orchestrator.ts:12239:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.autoArmLimitRecovery")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T20:56:04.5334845Z
2026-10-24T20:56:04.5334904Z 12239     autoArmLimitRecovery: (input) =>
2026-10-24T20:56:04.5334949Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5334953Z
2026-10-24T20:56:04.5335257Z src/orchestration-v2/Orchestrator.ts:12267:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.searchThread")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T20:56:04.5335261Z
2026-10-24T20:56:04.5335311Z 12267     searchThread: (input) =>
2026-10-24T20:56:04.5335354Z           ~~~~~~~~~~~~
2026-10-24T20:56:04.5335356Z
2026-10-24T20:56:04.5335753Z src/orchestration-v2/Orchestrator.ts:12275: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-24T20:56:04.5335755Z
2026-10-24T20:56:04.5335916Z 12275     getThreadHistoryPage: (threadId, cursor, throughEntryId, conversationOnly) =>
2026-10-24T20:56:04.5335958Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5335960Z
2026-10-24T20:56:04.5336292Z src/orchestration-v2/Orchestrator.ts:12279:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getTimelinePage")((threadId, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T20:56:04.5336296Z
2026-10-24T20:56:04.5336360Z 12279     getTimelinePage: (threadId, options) =>
2026-10-24T20:56:04.5336406Z           ~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5336408Z
2026-10-24T20:56:04.5336718Z src/orchestration-v2/Orchestrator.ts:12283:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getMessageCount")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T20:56:04.5336720Z
2026-10-24T20:56:04.5336772Z 12283     getMessageCount: (threadId) =>
2026-10-24T20:56:04.5336817Z           ~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5336820Z
2026-10-24T20:56:04.5337125Z src/orchestration-v2/Orchestrator.ts:12287:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getTurnItem")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T20:56:04.5337184Z
2026-10-24T20:56:04.5337236Z 12287     getTurnItem: (input) =>
2026-10-24T20:56:04.5337279Z           ~~~~~~~~~~~
2026-10-24T20:56:04.5337282Z
2026-10-24T20:56:04.5337624Z src/orchestration-v2/Orchestrator.ts:12295:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadRecords")((threadId, fields, filter) => { ... })`. effect(effectFnOpportunity)
2026-10-24T20:56:04.5337626Z
2026-10-24T20:56:04.5337701Z 12295     getThreadRecords: (threadId, fields, filter) =>
2026-10-24T20:56:04.5337744Z           ~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5337746Z
2026-10-24T20:56:04.5338074Z src/orchestration-v2/Orchestrator.ts:12299:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadProjection")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T20:56:04.5338124Z
2026-10-24T20:56:04.5338184Z 12299     getThreadProjection: (threadId) =>
2026-10-24T20:56:04.5338229Z           ~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5338231Z
2026-10-24T20:56:04.5338555Z src/orchestration-v2/Orchestrator.ts:12303:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getCheckpointContext")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T20:56:04.5338558Z
2026-10-24T20:56:04.5338617Z 12303     getCheckpointContext: (threadId) =>
2026-10-24T20:56:04.5338660Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5338662Z
2026-10-24T20:56:04.5338976Z src/orchestration-v2/Orchestrator.ts:12307:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadSnapshot")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T20:56:04.5338980Z
2026-10-24T20:56:04.5339034Z 12307     getThreadSnapshot: (threadId) =>
2026-10-24T20:56:04.5339080Z           ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5339083Z
2026-10-24T20:56:04.5339435Z src/orchestration-v2/Orchestrator.ts:12311:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadSnapshotWindow")((threadId, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T20:56:04.5339437Z
2026-10-24T20:56:04.5339513Z 12311     getThreadSnapshotWindow: (threadId, options) =>
2026-10-24T20:56:04.5339558Z           ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5339563Z
2026-10-24T20:56:04.5339878Z src/orchestration-v2/Orchestrator.ts:12315:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getShellSnapshot")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T20:56:04.5339880Z
2026-10-24T20:56:04.5339933Z 12315     getShellSnapshot: (options) =>
2026-10-24T20:56:04.5339977Z           ~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5339979Z
2026-10-24T20:56:04.5340305Z src/orchestration-v2/Orchestrator.ts:12317:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.listActiveSubagentThreadIds")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T20:56:04.5340309Z
2026-10-24T20:56:04.5340369Z 12317     listActiveSubagentThreadIds: () =>
2026-10-24T20:56:04.5340416Z           ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5340418Z
2026-10-24T20:56:04.5340733Z src/orchestration-v2/Orchestrator.ts:12319:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.readShellSnapshot")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T20:56:04.5340735Z
2026-10-24T20:56:04.5340790Z 12319     readShellSnapshot: (options) =>
2026-10-24T20:56:04.5340834Z           ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5340836Z
2026-10-24T20:56:04.5341147Z src/orchestration-v2/Orchestrator.ts:12326:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadShell")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T20:56:04.5341207Z
2026-10-24T20:56:04.5341259Z 12326     getThreadShell: (threadId) =>
2026-10-24T20:56:04.5341304Z           ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5341306Z
2026-10-24T20:56:04.5341635Z src/orchestration-v2/Orchestrator.ts:12330:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadEventSequence")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T20:56:04.5341637Z
2026-10-24T20:56:04.5341700Z 12330     getThreadEventSequence: (threadId) =>
2026-10-24T20:56:04.5341743Z           ~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5341745Z
2026-10-24T20:56:04.5342074Z 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-24T20:56:04.5342209Z
2026-10-24T20:56:04.5342279Z 160         getInstance: () => Effect.succeed(undefined),
2026-10-24T20:56:04.5342338Z                                ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5342341Z
2026-10-24T20:56:04.5342650Z 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-24T20:56:04.5342652Z
2026-10-24T20:56:04.5342761Z 269     getShell: (projectId) => get(projectId).pipe(Effect.map(Option.map(toShell))),
2026-10-24T20:56:04.5342803Z         ~~~~~~~~
2026-10-24T20:56:04.5342805Z
2026-10-24T20:56:04.5343106Z 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-24T20:56:04.5343108Z
2026-10-24T20:56:04.5343160Z 270     listShells: (options) =>
2026-10-24T20:56:04.5343202Z         ~~~~~~~~~~
2026-10-24T20:56:04.5343206Z
2026-10-24T20:56:04.5343463Z src/orchestration-v2/ProjectionControlReads.test.ts:279:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5343465Z
2026-10-24T20:56:04.5343514Z 279           Effect.succeed(
2026-10-24T20:56:04.5343558Z               ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5343560Z
2026-10-24T20:56:04.5343892Z 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-24T20:56:04.5343894Z
2026-10-24T20:56:04.5343941Z 78       get: (instanceId) =>
2026-10-24T20:56:04.5343979Z          ~~~
2026-10-24T20:56:04.5343981Z
2026-10-24T20:56:04.5344310Z 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-24T20:56:04.5344314Z
2026-10-24T20:56:04.5344357Z 135       list: () =>
2026-10-24T20:56:04.5344398Z           ~~~~
2026-10-24T20:56:04.5344400Z
2026-10-24T20:56:04.5344726Z 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-24T20:56:04.5344730Z
2026-10-24T20:56:04.5344813Z 93       record: (properties: Readonly<Record<string, unknown>>) =>
2026-10-24T20:56:04.5344853Z          ~~~~~~
2026-10-24T20:56:04.5344855Z
2026-10-24T20:56:04.5345231Z 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-24T20:56:04.5345233Z
2026-10-24T20:56:04.5345294Z 818               Effect.flatMap((storedEvents) =>
2026-10-24T20:56:04.5345391Z                   ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5345393Z
2026-10-24T20:56:04.5345651Z src/orchestration-v2/ProviderSessionManager.test.ts:1155:19 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5345653Z
2026-10-24T20:56:04.5345787Z 1155                 : Effect.succeed(Option.some(makeBrowserAccessProject(requestedProjectId))),
2026-10-24T20:56:04.5345836Z                        ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5345838Z
2026-10-24T20:56:04.5346129Z src/orchestration-v2/ProviderTurnStartService.test.ts:150:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5346132Z
2026-10-24T20:56:04.5346177Z 150             Effect.succeed(
2026-10-24T20:56:04.5346273Z                 ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5346276Z
2026-10-24T20:56:04.5346536Z src/orchestration-v2/ProviderTurnStartService.test.ts:703:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5346538Z
2026-10-24T20:56:04.5346674Z 703             Effect.succeed(Option.some({ workspaceRoot: "/tmp/native-account-project" } as never)),
2026-10-24T20:56:04.5346718Z                 ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5346720Z
2026-10-24T20:56:04.5346984Z src/orchestration-v2/ProviderTurnStartService.testkit.ts:14:20 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5346986Z
2026-10-24T20:56:04.5347055Z 14     getById: () => Effect.succeed(Option.none()),
2026-10-24T20:56:04.5347101Z                       ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5347103Z
2026-10-24T20:56:04.5347400Z 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-24T20:56:04.5347404Z
2026-10-24T20:56:04.5347485Z 205               Effect.catchCause(() => Effect.succeed(undefined)),
2026-10-24T20:56:04.5347544Z                                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5347546Z
2026-10-24T20:56:04.5347929Z 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-24T20:56:04.5347931Z
2026-10-24T20:56:04.5347988Z 512               Effect.catchCause((cause) =>
2026-10-24T20:56:04.5348035Z                   ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5348037Z
2026-10-24T20:56:04.5348452Z 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-24T20:56:04.5348456Z
2026-10-24T20:56:04.5348517Z 1302       return runExecution.startRootRun({
2026-10-24T20:56:04.5348561Z            ~~~~~~
2026-10-24T20:56:04.5348563Z
2026-10-24T20:56:04.5348820Z src/orchestration-v2/PullRequestWatchReactor.ts:478:53 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T20:56:04.5348822Z
2026-10-24T20:56:04.5348924Z 478             ? pullRequests.activity(reference).pipe(Effect.map(Option.some))
2026-10-24T20:56:04.5348985Z                                                         ~~~~~~~~~~
2026-10-24T20:56:04.5348989Z
2026-10-24T20:56:04.5349352Z 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-24T20:56:04.5349406Z
2026-10-24T20:56:04.5349481Z 49       cleanupScheduledTasks: (threadId: ThreadId) =>
2026-10-24T20:56:04.5349526Z          ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5349528Z
2026-10-24T20:56:04.5349879Z 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-24T20:56:04.5349881Z
2026-10-24T20:56:04.5349944Z 58       cleanupTerminals: (threadId: string) =>
2026-10-24T20:56:04.5349986Z          ~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5349988Z
2026-10-24T20:56:04.5350386Z 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-24T20:56:04.5350389Z
2026-10-24T20:56:04.5350453Z 66       cleanupPreviews: (threadId: string) =>
2026-10-24T20:56:04.5350496Z          ~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5350498Z
2026-10-24T20:56:04.5350859Z 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-24T20:56:04.5350864Z
2026-10-24T20:56:04.5350954Z 74       cleanupAttachments: (attachmentIds: ReadonlyArray<string>) =>
2026-10-24T20:56:04.5351000Z          ~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5351002Z
2026-10-24T20:56:04.5351262Z 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-24T20:56:04.5351265Z
2026-10-24T20:56:04.5351325Z 1812         ).pipe(Effect.map(Option.some)),
2026-10-24T20:56:04.5351368Z                     ~~~~~~~~~~
2026-10-24T20:56:04.5351371Z
2026-10-24T20:56:04.5351740Z 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-24T20:56:04.5351742Z
2026-10-24T20:56:04.5351800Z 931               Effect.catchCause((cause) =>
2026-10-24T20:56:04.5351847Z                   ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5351849Z
2026-10-24T20:56:04.5352090Z src/orchestration-v2/RuntimePolicy.test.ts:90:9 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5352092Z
2026-10-24T20:56:04.5352137Z 90         Effect.succeed(
2026-10-24T20:56:04.5352181Z            ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5352183Z
2026-10-24T20:56:04.5352483Z 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-24T20:56:04.5352486Z
2026-10-24T20:56:04.5352533Z 54   resolve: (input) =>
2026-10-24T20:56:04.5352575Z      ~~~~~~~
2026-10-24T20:56:04.5352578Z
2026-10-24T20:56:04.5352828Z src/orchestration-v2/RuntimeRequestService.test.ts:29:7 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5352830Z
2026-10-24T20:56:04.5352876Z 29       Effect.succeed(
2026-10-24T20:56:04.5352918Z          ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5352920Z
2026-10-24T20:56:04.5353171Z src/orchestration-v2/ThreadLaunchService.test.ts:189:33 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5353173Z
2026-10-24T20:56:04.5353267Z 189       getByWorkspaceRoot: () => Effect.succeed(Option.some(project)),
2026-10-24T20:56:04.5353321Z                                     ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5353380Z
2026-10-24T20:56:04.5353629Z src/orchestration-v2/ThreadLaunchService.test.ts:220:32 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5353631Z
2026-10-24T20:56:04.5353713Z 220         folderForThread: () => Effect.succeed(Option.none()),
2026-10-24T20:56:04.5353765Z                                    ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5353767Z
2026-10-24T20:56:04.5354092Z 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-24T20:56:04.5354097Z
2026-10-24T20:56:04.5354142Z 91     archive: (input) =>
2026-10-24T20:56:04.5354184Z        ~~~~~~~
2026-10-24T20:56:04.5354186Z
2026-10-24T20:56:04.5354563Z 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-24T20:56:04.5354567Z
2026-10-24T20:56:04.5354617Z 97     unarchive: (input) =>
2026-10-24T20:56:04.5354657Z        ~~~~~~~~~
2026-10-24T20:56:04.5354659Z
2026-10-24T20:56:04.5354984Z 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-24T20:56:04.5354986Z
2026-10-24T20:56:04.5355032Z 103     delete: (input) =>
2026-10-24T20:56:04.5355076Z         ~~~~~~
2026-10-24T20:56:04.5355078Z
2026-10-24T20:56:04.5355420Z 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-24T20:56:04.5355424Z
2026-10-24T20:56:04.5355474Z 109     updateMetadata: (input) =>
2026-10-24T20:56:04.5355515Z         ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5355517Z
2026-10-24T20:56:04.5355884Z 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-24T20:56:04.5355887Z
2026-10-24T20:56:04.5355937Z 118     setRuntimeMode: (input) =>
2026-10-24T20:56:04.5355976Z         ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5355981Z
2026-10-24T20:56:04.5356328Z 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-24T20:56:04.5356330Z
2026-10-24T20:56:04.5356387Z 125     setInteractionMode: (input) =>
2026-10-24T20:56:04.5356430Z         ~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5356433Z
2026-10-24T20:56:04.5356782Z 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-24T20:56:04.5356785Z
2026-10-24T20:56:04.5356837Z 132     setModelSelection: (input) =>
2026-10-24T20:56:04.5356879Z         ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5356881Z
2026-10-24T20:56:04.5357257Z 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-24T20:56:04.5357260Z
2026-10-24T20:56:04.5357314Z 689       Effect.flatMap((projection) =>
2026-10-24T20:56:04.5357359Z           ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5357361Z
2026-10-24T20:56:04.5357637Z 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-24T20:56:04.5357692Z
2026-10-24T20:56:04.5357758Z 706     ensureProjectionTranscript(input.threadId)
2026-10-24T20:56:04.5357811Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5357944Z 707       .pipe(Effect.andThen(orchestrator.getThreadRecords(input.threadId, fields, filter)))
2026-10-24T20:56:04.5358028Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5358068Z ...
2026-10-24T20:56:04.5358108Z 726         ),
2026-10-24T20:56:04.5358149Z     ~~~~~~~~~~
2026-10-24T20:56:04.5358187Z 727       );
2026-10-24T20:56:04.5358228Z     ~~~~~~~
2026-10-24T20:56:04.5358230Z
2026-10-24T20:56:04.5358654Z 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-24T20:56:04.5358659Z
2026-10-24T20:56:04.5358716Z 717         Effect.flatMap((projection) =>
2026-10-24T20:56:04.5358759Z             ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5358761Z
2026-10-24T20:56:04.5359126Z 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-24T20:56:04.5359129Z
2026-10-24T20:56:04.5359228Z 1131     if (failures[0] !== undefined) return yield* Effect.fail(failures[0]);
2026-10-24T20:56:04.5359282Z                                                ~~~~~
2026-10-24T20:56:04.5359284Z
2026-10-24T20:56:04.5359629Z 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-24T20:56:04.5359633Z
2026-10-24T20:56:04.5359683Z 1142     searchThread: (input) =>
2026-10-24T20:56:04.5359723Z          ~~~~~~~~~~~~
2026-10-24T20:56:04.5359725Z
2026-10-24T20:56:04.5360156Z 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-24T20:56:04.5360159Z
2026-10-24T20:56:04.5360278Z 1147     getThreadHistoryPage: (threadId, cursor, throughEntryId, conversationOnly) =>
2026-10-24T20:56:04.5360323Z          ~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5360326Z
2026-10-24T20:56:04.5360694Z 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-24T20:56:04.5360698Z
2026-10-24T20:56:04.5360759Z 1153     getTimelinePage: (threadId, options) =>
2026-10-24T20:56:04.5360804Z          ~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5360807Z
2026-10-24T20:56:04.5361163Z 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-24T20:56:04.5361165Z
2026-10-24T20:56:04.5361221Z 1157     getMessageCount: (threadId) =>
2026-10-24T20:56:04.5361264Z          ~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5361266Z
2026-10-24T20:56:04.5361699Z 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-24T20:56:04.5361769Z
2026-10-24T20:56:04.5361820Z 1161     getTurnItem: (input) =>
2026-10-24T20:56:04.5361861Z          ~~~~~~~~~~~
2026-10-24T20:56:04.5361863Z
2026-10-24T20:56:04.5362243Z 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-24T20:56:04.5362245Z
2026-10-24T20:56:04.5362319Z 1166     getThreadRecords: (threadId, fields, filter) =>
2026-10-24T20:56:04.5362361Z          ~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5362363Z
2026-10-24T20:56:04.5362811Z 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-24T20:56:04.5362814Z
2026-10-24T20:56:04.5362953Z 1206     ensureTranscript: () => Effect.succeed({ importedThreadCount: 0, importedMessageCount: 0 }),
2026-10-24T20:56:04.5362998Z          ~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5363000Z
2026-10-24T20:56:04.5363266Z src/orchestration-v2/ThreadPullRequestService.test.ts:119:29 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5363268Z
2026-10-24T20:56:04.5363347Z 119             getShell: () => Effect.succeed(Option.some(project)),
2026-10-24T20:56:04.5363399Z                                 ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5363402Z
2026-10-24T20:56:04.5363664Z src/orchestration-v2/ThreadPullRequestService.test.ts:238:31 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5363667Z
2026-10-24T20:56:04.5363749Z 238               getShell: () => Effect.succeed(Option.some(project)),
2026-10-24T20:56:04.5363801Z                                   ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5363805Z
2026-10-24T20:56:04.5364189Z 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-24T20:56:04.5364191Z
2026-10-24T20:56:04.5364250Z 326                 Effect.catchCause((cause) =>
2026-10-24T20:56:04.5364297Z                     ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5364299Z
2026-10-24T20:56:04.5364678Z 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-24T20:56:04.5364681Z
2026-10-24T20:56:04.5364736Z 342           Effect.catchCause((cause) =>
2026-10-24T20:56:04.5364781Z               ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5364783Z
2026-10-24T20:56:04.5365164Z 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-24T20:56:04.5365166Z
2026-10-24T20:56:04.5365221Z 505           Effect.catchCause((cause) =>
2026-10-24T20:56:04.5365267Z               ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5365269Z
2026-10-24T20:56:04.5365641Z 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-24T20:56:04.5365643Z
2026-10-24T20:56:04.5365694Z 523       Effect.catchCause((cause) =>
2026-10-24T20:56:04.5365737Z           ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5365740Z
2026-10-24T20:56:04.5366163Z 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-24T20:56:04.5366223Z
2026-10-24T20:56:04.5366276Z 565         Effect.catchCause((cause) =>
2026-10-24T20:56:04.5366321Z             ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5366323Z
2026-10-24T20:56:04.5366675Z 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-24T20:56:04.5366677Z
2026-10-24T20:56:04.5366732Z 106       normalize: (item, runOrdinal) =>
2026-10-24T20:56:04.5366773Z           ~~~~~~~~~
2026-10-24T20:56:04.5366775Z
2026-10-24T20:56:04.5367233Z 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-24T20:56:04.5367237Z
2026-10-24T20:56:04.5367338Z 54 const thread = Schema.decodeUnknownSync(OrchestrationV2AppThread)({
2026-10-24T20:56:04.5367383Z                          ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5367386Z
2026-10-24T20:56:04.5367755Z 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-24T20:56:04.5367757Z
2026-10-24T20:56:04.5367798Z 231           try {
2026-10-24T20:56:04.5367839Z               ~~~~~
2026-10-24T20:56:04.5367918Z 232             decodeThreadHistoryCursor(args.query.cursor);
2026-10-24T20:56:04.5367984Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5368026Z ...
2026-10-24T20:56:04.5368160Z 236             return yield* failEnvironmentInternal("orchestration_thread_history_failed", cause);
2026-10-24T20:56:04.5368245Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5368286Z 237           }
2026-10-24T20:56:04.5368328Z     ~~~~~~~~~~~
2026-10-24T20:56:04.5368330Z
2026-10-24T20:56:04.5368573Z src/orchestration-v2/runtimeLayer.test.ts:120:18 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5368575Z
2026-10-24T20:56:04.5368641Z 120   getById: () => Effect.succeed(Option.none()),
2026-10-24T20:56:04.5368688Z                      ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5368691Z
2026-10-24T20:56:04.5368933Z src/orchestration-v2/runtimeLayer.test.ts:997:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5368936Z
2026-10-24T20:56:04.5368984Z 997           Effect.succeed(
2026-10-24T20:56:04.5369029Z               ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5369031Z
2026-10-24T20:56:04.5369394Z 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-24T20:56:04.5369398Z
2026-10-24T20:56:04.5369445Z 40         append: (input) =>
2026-10-24T20:56:04.5369485Z            ~~~~~~
2026-10-24T20:56:04.5369487Z
2026-10-24T20:56:04.5369809Z 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-24T20:56:04.5369811Z
2026-10-24T20:56:04.5369872Z 283       const awaitDispatch = (key: string) =>
2026-10-24T20:56:04.5369914Z                 ~~~~~~~~~~~~~
2026-10-24T20:56:04.5369917Z
2026-10-24T20:56:04.5370390Z 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-24T20:56:04.5370392Z
2026-10-24T20:56:04.5370443Z 447       execute: () => Effect.void,
2026-10-24T20:56:04.5370485Z           ~~~~~~~
2026-10-24T20:56:04.5370487Z
2026-10-24T20:56:04.5370826Z 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-24T20:56:04.5370829Z
2026-10-24T20:56:04.5370873Z 92     list: (input) =>
2026-10-24T20:56:04.5370915Z        ~~~~
2026-10-24T20:56:04.5370918Z
2026-10-24T20:56:04.5371302Z 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-24T20:56:04.5371307Z
2026-10-24T20:56:04.5371353Z 102     set: (input) =>
2026-10-24T20:56:04.5371392Z         ~~~
2026-10-24T20:56:04.5371397Z
2026-10-24T20:56:04.5371728Z 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-24T20:56:04.5371730Z
2026-10-24T20:56:04.5371774Z 54     get: (key) =>
2026-10-24T20:56:04.5371816Z        ~~~
2026-10-24T20:56:04.5371818Z
2026-10-24T20:56:04.5372162Z 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-24T20:56:04.5372164Z
2026-10-24T20:56:04.5372212Z 64     put: (key, guide) =>
2026-10-24T20:56:04.5372254Z        ~~~
2026-10-24T20:56:04.5372256Z
2026-10-24T20:56:04.5372596Z 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-24T20:56:04.5372598Z
2026-10-24T20:56:04.5372649Z 45         Effect.catch((error) =>
2026-10-24T20:56:04.5372693Z            ~~~~~~~~~~~~
2026-10-24T20:56:04.5372695Z
2026-10-24T20:56:04.5373010Z 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-24T20:56:04.5373014Z
2026-10-24T20:56:04.5373078Z 75       awaitAttached: () => Effect.succeed(false),
2026-10-24T20:56:04.5373122Z          ~~~~~~~~~~~~~
2026-10-24T20:56:04.5373125Z
2026-10-24T20:56:04.5373435Z 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-24T20:56:04.5373439Z
2026-10-24T20:56:04.5373499Z 78       isAttached: () => Effect.succeed(false),
2026-10-24T20:56:04.5373538Z          ~~~~~~~~~~
2026-10-24T20:56:04.5373540Z
2026-10-24T20:56:04.5373843Z 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-24T20:56:04.5373845Z
2026-10-24T20:56:04.5373947Z 79       endpoint: () => Effect.die("No desktop app is attached to this server."),
2026-10-24T20:56:04.5373988Z          ~~~~~~~~
2026-10-24T20:56:04.5373990Z
2026-10-24T20:56:04.5374292Z 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-24T20:56:04.5374347Z
2026-10-24T20:56:04.5374397Z 80       pointer: () => Effect.void,
2026-10-24T20:56:04.5374438Z          ~~~~~~~
2026-10-24T20:56:04.5374440Z
2026-10-24T20:56:04.5374775Z 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-24T20:56:04.5374777Z
2026-10-24T20:56:04.5374830Z 194     awaitAttached: (key, timeout) =>
2026-10-24T20:56:04.5374871Z         ~~~~~~~~~~~~~
2026-10-24T20:56:04.5374875Z
2026-10-24T20:56:04.5375236Z 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-24T20:56:04.5375238Z
2026-10-24T20:56:04.5375339Z 216     isAttached: (key) => Effect.sync(() => attachedTabs.has(keyOf(key))),
2026-10-24T20:56:04.5375382Z         ~~~~~~~~~~
2026-10-24T20:56:04.5375384Z
2026-10-24T20:56:04.5375701Z 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-24T20:56:04.5375703Z
2026-10-24T20:56:04.5375818Z 218     pointer: (key, pointer) => command({ type: "pointer", ...key, ...pointer }),
2026-10-24T20:56:04.5375863Z         ~~~~~~~
2026-10-24T20:56:04.5375890Z
2026-10-24T20:56:04.5376350Z 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-24T20:56:04.5376352Z
2026-10-24T20:56:04.5376450Z 481     executable: () => Effect.runPromise(previewBrowser.executable),
2026-10-24T20:56:04.5376501Z                           ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5376503Z
2026-10-24T20:56:04.5376947Z 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-24T20:56:04.5376949Z
2026-10-24T20:56:04.5376997Z 688       ? Effect.runPromise(
2026-10-24T20:56:04.5377041Z             ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5377043Z
2026-10-24T20:56:04.5377491Z 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-24T20:56:04.5377494Z
2026-10-24T20:56:04.5377574Z 697     const scope = await Effect.runPromise(Scope.make());
2026-10-24T20:56:04.5377625Z                             ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5377627Z
2026-10-24T20:56:04.5378069Z 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-24T20:56:04.5378073Z
2026-10-24T20:56:04.5378136Z 699       const endpoint = await Effect.runPromise(
2026-10-24T20:56:04.5378189Z                                  ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5378192Z
2026-10-24T20:56:04.5378632Z 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-24T20:56:04.5378687Z
2026-10-24T20:56:04.5378774Z 709           await Effect.runPromise(Scope.close(scope, Exit.void));
2026-10-24T20:56:04.5378818Z                     ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5378821Z
2026-10-24T20:56:04.5379260Z 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-24T20:56:04.5379262Z
2026-10-24T20:56:04.5379346Z 713       await Effect.runPromise(Scope.close(scope, Exit.void));
2026-10-24T20:56:04.5379392Z                 ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5379395Z
2026-10-24T20:56:04.5379889Z 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-24T20:56:04.5379894Z
2026-10-24T20:56:04.5379945Z 1200     await Effect.runPromise(
2026-10-24T20:56:04.5379989Z                ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5379991Z
2026-10-24T20:56:04.5380430Z 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-24T20:56:04.5380433Z
2026-10-24T20:56:04.5380485Z 1693         : await Effect.runPromise(
2026-10-24T20:56:04.5380535Z                      ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5380537Z
2026-10-24T20:56:04.5380980Z 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-24T20:56:04.5380984Z
2026-10-24T20:56:04.5381041Z 1757             ? await Effect.runPromise(
2026-10-24T20:56:04.5381091Z                          ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5381093Z
2026-10-24T20:56:04.5381358Z 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-24T20:56:04.5381361Z
2026-10-24T20:56:04.5381467Z 1760                     ServerBrowserTabNotFoundError: () => Effect.succeed(undefined),
2026-10-24T20:56:04.5381538Z                                                               ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5381540Z
2026-10-24T20:56:04.5381982Z 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-24T20:56:04.5381986Z
2026-10-24T20:56:04.5382058Z 1766           const { sessions } = await Effect.runPromise(
2026-10-24T20:56:04.5382117Z                                           ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5382119Z
2026-10-24T20:56:04.5382560Z 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-24T20:56:04.5382563Z
2026-10-24T20:56:04.5382618Z 1794             await Effect.runPromise(
2026-10-24T20:56:04.5382716Z                        ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5382718Z
2026-10-24T20:56:04.5383159Z 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-24T20:56:04.5383161Z
2026-10-24T20:56:04.5383214Z 1825               await Effect.runPromise(
2026-10-24T20:56:04.5383261Z                          ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5383263Z
2026-10-24T20:56:04.5383757Z 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-24T20:56:04.5383760Z
2026-10-24T20:56:04.5383891Z 1889       await Effect.runPromise(manager.close({ threadId: tab.threadId, tabId: tab.tabId }));
2026-10-24T20:56:04.5383938Z                  ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5383940Z
2026-10-24T20:56:04.5384389Z 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-24T20:56:04.5384392Z
2026-10-24T20:56:04.5384444Z 1957         await Effect.runPromise(
2026-10-24T20:56:04.5384489Z                    ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5384491Z
2026-10-24T20:56:04.5384938Z 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-24T20:56:04.5384942Z
2026-10-24T20:56:04.5385010Z 1969         const snapshot = await Effect.runPromise(
2026-10-24T20:56:04.5385068Z                                     ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5385070Z
2026-10-24T20:56:04.5385515Z 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-24T20:56:04.5385517Z
2026-10-24T20:56:04.5385570Z 2215         await Effect.runPromise(
2026-10-24T20:56:04.5385615Z                    ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5385617Z
2026-10-24T20:56:04.5385924Z 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-24T20:56:04.5385931Z
2026-10-24T20:56:04.5386003Z 179       const receive = (chunk: Uint8Array | string) => {
2026-10-24T20:56:04.5386047Z                 ~~~~~~~
2026-10-24T20:56:04.5386049Z
2026-10-24T20:56:04.5386347Z 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-24T20:56:04.5386349Z
2026-10-24T20:56:04.5386442Z 209     Effect.catch(() => Effect.succeed(HttpServerResponse.empty())),
2026-10-24T20:56:04.5386482Z         ~~~~~~~~~~~~
2026-10-24T20:56:04.5386484Z
2026-10-24T20:56:04.5386806Z 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-24T20:56:04.5386809Z
2026-10-24T20:56:04.5386895Z 860     resolveAvailableEditors: () => cachedAvailableEditors,
2026-10-24T20:56:04.5386998Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5387001Z
2026-10-24T20:56:04.5387326Z 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-24T20:56:04.5387329Z
2026-10-24T20:56:04.5387387Z 861     resolveFileManagerRevealKind: () =>
2026-10-24T20:56:04.5387432Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5387434Z
2026-10-24T20:56:04.5387742Z 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-24T20:56:04.5387744Z
2026-10-24T20:56:04.5387794Z 865     launchBrowser: (target) =>
2026-10-24T20:56:04.5387883Z         ~~~~~~~~~~~~~
2026-10-24T20:56:04.5387888Z
2026-10-24T20:56:04.5388191Z 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-24T20:56:04.5388194Z
2026-10-24T20:56:04.5388244Z 869     launchEditor: (input) =>
2026-10-24T20:56:04.5388287Z         ~~~~~~~~~~~~
2026-10-24T20:56:04.5388289Z
2026-10-24T20:56:04.5388533Z src/project/AgentSessionImporter.test.ts:212:15 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5388536Z
2026-10-24T20:56:04.5388582Z 212               Effect.succeed(
2026-10-24T20:56:04.5388625Z                   ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5388627Z
2026-10-24T20:56:04.5388862Z src/project/ManagedProjectFolders.ts:346:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5388865Z
2026-10-24T20:56:04.5388950Z 346           ? Effect.succeed(Option.some(folderFor(id.slice(-8))))
2026-10-24T20:56:04.5388995Z                 ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5388997Z
2026-10-24T20:56:04.5389226Z src/project/ManagedProjectFolders.ts:348:15 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5389228Z
2026-10-24T20:56:04.5389295Z 348             ? Effect.succeed(Option.some(fullFolder))
2026-10-24T20:56:04.5389338Z                   ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5389341Z
2026-10-24T20:56:04.5389657Z 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-24T20:56:04.5389660Z
2026-10-24T20:56:04.5389738Z 432     start: (input, hooks) => locked(start(input, hooks)),
2026-10-24T20:56:04.5389777Z         ~~~~~
2026-10-24T20:56:04.5389780Z
2026-10-24T20:56:04.5390090Z 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-24T20:56:04.5390093Z
2026-10-24T20:56:04.5390163Z 433     cancel: (projectId) => locked(cancel(projectId)),
2026-10-24T20:56:04.5390205Z         ~~~~~~
2026-10-24T20:56:04.5390207Z
2026-10-24T20:56:04.5390514Z 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-24T20:56:04.5390516Z
2026-10-24T20:56:04.5390583Z 434     retry: (projectId) => locked(retry(projectId)),
2026-10-24T20:56:04.5390623Z         ~~~~~
2026-10-24T20:56:04.5390625Z
2026-10-24T20:56:04.5390934Z 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-24T20:56:04.5390989Z
2026-10-24T20:56:04.5391063Z 435     discard: (projectId) => locked(discard(projectId)),
2026-10-24T20:56:04.5391103Z         ~~~~~~~
2026-10-24T20:56:04.5391105Z
2026-10-24T20:56:04.5391430Z 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-24T20:56:04.5391432Z
2026-10-24T20:56:04.5391529Z 21         get: (key) => Effect.sync(() => Option.fromUndefinedOr(bytes.get(key))),
2026-10-24T20:56:04.5391572Z            ~~~
2026-10-24T20:56:04.5391574Z
2026-10-24T20:56:04.5391956Z 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-24T20:56:04.5391960Z
2026-10-24T20:56:04.5392006Z 22         set: (key, value) =>
2026-10-24T20:56:04.5392047Z            ~~~
2026-10-24T20:56:04.5392049Z
2026-10-24T20:56:04.5392378Z 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-24T20:56:04.5392380Z
2026-10-24T20:56:04.5392427Z 26         remove: (key) =>
2026-10-24T20:56:04.5392468Z            ~~~~~~
2026-10-24T20:56:04.5392470Z
2026-10-24T20:56:04.5392797Z 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-24T20:56:04.5392799Z
2026-10-24T20:56:04.5392899Z 30         create: () => Effect.die("Handoff does not create persistent secrets."),
2026-10-24T20:56:04.5392942Z            ~~~~~~
2026-10-24T20:56:04.5392944Z
2026-10-24T20:56:04.5393294Z 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-24T20:56:04.5393297Z
2026-10-24T20:56:04.5393424Z 31         getOrCreateRandom: () => Effect.die("Handoff uses the destination environment identity."),
2026-10-24T20:56:04.5393468Z            ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5393470Z
2026-10-24T20:56:04.5393886Z 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-24T20:56:04.5393888Z
2026-10-24T20:56:04.5394005Z 205     return yield* Schema.decodeUnknownEffect(Schema.fromJsonString(schema))(
2026-10-24T20:56:04.5394061Z                              ~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5394063Z
2026-10-24T20:56:04.5396656Z 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-24T20:56:04.5396659Z
2026-10-24T20:56:04.5396719Z 569         ? Effect.succeed(undefined)
2026-10-24T20:56:04.5396763Z               ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5396765Z
2026-10-24T20:56:04.5397084Z 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-24T20:56:04.5397086Z
2026-10-24T20:56:04.5397138Z 284       current: (driverKind) =>
2026-10-24T20:56:04.5397180Z           ~~~~~~~
2026-10-24T20:56:04.5397183Z
2026-10-24T20:56:04.5397540Z 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-24T20:56:04.5397617Z
2026-10-24T20:56:04.5397673Z 284                 return yield* Effect.fail(
2026-10-24T20:56:04.5397718Z                            ~~~~~
2026-10-24T20:56:04.5397720Z
2026-10-24T20:56:04.5398036Z 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-24T20:56:04.5398039Z
2026-10-24T20:56:04.5398089Z 211     importProfile: (input) =>
2026-10-24T20:56:04.5398129Z         ~~~~~~~~~~~~~
2026-10-24T20:56:04.5398131Z
2026-10-24T20:56:04.5398525Z 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-24T20:56:04.5398530Z
2026-10-24T20:56:04.5398592Z 39       credentials: (namespace, bindingId) =>
2026-10-24T20:56:04.5398632Z          ~~~~~~~~~~~
2026-10-24T20:56:04.5398634Z
2026-10-24T20:56:04.5398996Z 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-24T20:56:04.5398999Z
2026-10-24T20:56:04.5399050Z 2984       Effect.catchCause((cause) =>
2026-10-24T20:56:04.5399092Z            ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5399094Z
2026-10-24T20:56:04.5399453Z 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-24T20:56:04.5399456Z
2026-10-24T20:56:04.5399506Z 3387       Effect.catchCause((cause) =>
2026-10-24T20:56:04.5399547Z            ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5399549Z
2026-10-24T20:56:04.5399863Z 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-24T20:56:04.5399867Z
2026-10-24T20:56:04.5399913Z 3607     listStats: (input) =>
2026-10-24T20:56:04.5399954Z          ~~~~~~~~~
2026-10-24T20:56:04.5399956Z
2026-10-24T20:56:04.5400191Z src/relay/AgentAwarenessRelay.test.ts:271:9 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T20:56:04.5400193Z
2026-10-24T20:56:04.5400240Z 271         Effect.succeed(
2026-10-24T20:56:04.5400284Z             ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5400286Z
2026-10-24T20:56:04.5400591Z 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-24T20:56:04.5400595Z
2026-10-24T20:56:04.5400717Z 822     requestCatchUp: () => Queue.offer(catchUpRequests, undefined).pipe(Effect.asVoid),
2026-10-24T20:56:04.5400759Z         ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5400761Z
2026-10-24T20:56:04.5401140Z 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-24T20:56:04.5401143Z
2026-10-24T20:56:04.5401201Z 641     requestDesktopUpdate: (requestId) =>
2026-10-24T20:56:04.5401243Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5401245Z
2026-10-24T20:56:04.5401738Z 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-24T20:56:04.5401818Z
2026-10-24T20:56:04.5401877Z 647     commitDesktopUpdate: (requestId) =>
2026-10-24T20:56:04.5401919Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5401921Z
2026-10-24T20:56:04.5402285Z 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-24T20:56:04.5402287Z
2026-10-24T20:56:04.5402342Z 649     cancelDesktopUpdate: (requestId) =>
2026-10-24T20:56:04.5402383Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5402385Z
2026-10-24T20:56:04.5402798Z 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-24T20:56:04.5402802Z
2026-10-24T20:56:04.5402865Z 698       setDiagnosticsDemand: () => Effect.void,
2026-10-24T20:56:04.5402907Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5402910Z
2026-10-24T20:56:04.5403265Z 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-24T20:56:04.5403267Z
2026-10-24T20:56:04.5403331Z 699       requestDesktopUpdate: () => Effect.void,
2026-10-24T20:56:04.5403374Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5403376Z
2026-10-24T20:56:04.5403732Z 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-24T20:56:04.5403735Z
2026-10-24T20:56:04.5403795Z 700       commitDesktopUpdate: () => Effect.void,
2026-10-24T20:56:04.5403840Z           ~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5403843Z
2026-10-24T20:56:04.5404197Z 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-24T20:56:04.5404199Z
2026-10-24T20:56:04.5404262Z 701       cancelDesktopUpdate: () => Effect.void,
2026-10-24T20:56:04.5404305Z           ~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5404307Z
2026-10-24T20:56:04.5404634Z 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-24T20:56:04.5404637Z
2026-10-24T20:56:04.5404684Z 1091       readHistory: () =>
2026-10-24T20:56:04.5404728Z            ~~~~~~~~~~~
2026-10-24T20:56:04.5404730Z
2026-10-24T20:56:04.5405079Z 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-24T20:56:04.5405081Z
2026-10-24T20:56:04.5405145Z 1097       setExternalProcesses: () => Effect.void,
2026-10-24T20:56:04.5405188Z            ~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5405190Z
2026-10-24T20:56:04.5405529Z 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-24T20:56:04.5405531Z
2026-10-24T20:56:04.5405592Z 1098       setHostPowerState: () => Effect.void,
2026-10-24T20:56:04.5405636Z            ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5405691Z
2026-10-24T20:56:04.5406015Z 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-24T20:56:04.5406019Z
2026-10-24T20:56:04.5406086Z 1136                             ? Effect.succeed(undefined)
2026-10-24T20:56:04.5406145Z                                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5406147Z
2026-10-24T20:56:04.5406426Z 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-24T20:56:04.5406428Z
2026-10-24T20:56:04.5406485Z 166       const results = yield* Effect.all(
2026-10-24T20:56:04.5406532Z                                  ~~~~~~~~~~
2026-10-24T20:56:04.5406534Z
2026-10-24T20:56:04.5406937Z 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-24T20:56:04.5406941Z
2026-10-24T20:56:04.5406995Z 481     return Effect.gen(function* () {
2026-10-24T20:56:04.5407037Z         ~~~~~~
2026-10-24T20:56:04.5407039Z
2026-10-24T20:56:04.5407310Z 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-24T20:56:04.5407313Z
2026-10-24T20:56:04.5407378Z 209           prepareTrial: Effect.succeed(undefined),
2026-10-24T20:56:04.5407434Z                             ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5407437Z
2026-10-24T20:56:04.5407700Z 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-24T20:56:04.5407704Z
2026-10-24T20:56:04.5407759Z 413       const results = yield* Effect.all(
2026-10-24T20:56:04.5407806Z                                  ~~~~~~~~~~
2026-10-24T20:56:04.5407808Z
2026-10-24T20:56:04.5408212Z 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-24T20:56:04.5408216Z
2026-10-24T20:56:04.5408270Z 204     listChangeRequests: (input) =>
2026-10-24T20:56:04.5408314Z         ~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5408316Z
2026-10-24T20:56:04.5408720Z 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-24T20:56:04.5408723Z
2026-10-24T20:56:04.5408776Z 209     getChangeRequest: (input) =>
2026-10-24T20:56:04.5408817Z         ~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5408820Z
2026-10-24T20:56:04.5409235Z 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-24T20:56:04.5409237Z
2026-10-24T20:56:04.5409292Z 214     createChangeRequest: (input) =>
2026-10-24T20:56:04.5409336Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5409338Z
2026-10-24T20:56:04.5409752Z 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-24T20:56:04.5409755Z
2026-10-24T20:56:04.5409811Z 219     getRepositoryCloneUrls: (input) =>
2026-10-24T20:56:04.5409910Z         ~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5409912Z
2026-10-24T20:56:04.5410307Z 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-24T20:56:04.5410309Z
2026-10-24T20:56:04.5410405Z 224     createRepository: (input) => provider.createRepository(input),
2026-10-24T20:56:04.5410448Z         ~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5410450Z
2026-10-24T20:56:04.5410844Z 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-24T20:56:04.5410972Z
2026-10-24T20:56:04.5411023Z 225     getDefaultBranch: (input) =>
2026-10-24T20:56:04.5411067Z         ~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5411069Z
2026-10-24T20:56:04.5411478Z 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-24T20:56:04.5411480Z
2026-10-24T20:56:04.5411535Z 230     checkoutChangeRequest: (input) =>
2026-10-24T20:56:04.5411578Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5411580Z
2026-10-24T20:56:04.5411941Z 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-24T20:56:04.5411943Z
2026-10-24T20:56:04.5412073Z 345       resolve: (input) => resolveHandle(input).pipe(Effect.map((handle) => handle.provider)),
2026-10-24T20:56:04.5412114Z           ~~~~~~~
2026-10-24T20:56:04.5412118Z
2026-10-24T20:56:04.5412479Z 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-24T20:56:04.5412482Z
2026-10-24T20:56:04.5412529Z 406       Effect.catch((sshError) =>
2026-10-24T20:56:04.5412571Z           ~~~~~~~~~~~~
2026-10-24T20:56:04.5412573Z
2026-10-24T20:56:04.5412945Z 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-24T20:56:04.5412948Z
2026-10-24T20:56:04.5412998Z 553     lookupRepository: (input) =>
2026-10-24T20:56:04.5413040Z         ~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5413044Z
2026-10-24T20:56:04.5413403Z 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-24T20:56:04.5413407Z
2026-10-24T20:56:04.5413457Z 555     prepareClone: (input) =>
2026-10-24T20:56:04.5413498Z         ~~~~~~~~~~~~
2026-10-24T20:56:04.5413500Z
2026-10-24T20:56:04.5413877Z 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-24T20:56:04.5413879Z
2026-10-24T20:56:04.5413938Z 562     cloneRepository: (input, options) =>
2026-10-24T20:56:04.5413978Z         ~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5413981Z
2026-10-24T20:56:04.5414357Z 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-24T20:56:04.5414411Z
2026-10-24T20:56:04.5414468Z 569     discardClone: (destinationPath) =>
2026-10-24T20:56:04.5414509Z         ~~~~~~~~~~~~
2026-10-24T20:56:04.5414511Z
2026-10-24T20:56:04.5414882Z 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-24T20:56:04.5414884Z
2026-10-24T20:56:04.5414936Z 573     publishRepository: (input) =>
2026-10-24T20:56:04.5414982Z         ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5414984Z
2026-10-24T20:56:04.5415358Z 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-24T20:56:04.5415363Z
2026-10-24T20:56:04.5415412Z 708       return yield* Effect.fail(
2026-10-24T20:56:04.5415452Z                  ~~~~~
2026-10-24T20:56:04.5415456Z
2026-10-24T20:56:04.5415738Z 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-24T20:56:04.5415741Z
2026-10-24T20:56:04.5415835Z 113       record: () => Effect.void,
2026-10-24T20:56:04.5415876Z           ~~~~~~
2026-10-24T20:56:04.5415878Z
2026-10-24T20:56:04.5416172Z 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-24T20:56:04.5416174Z
2026-10-24T20:56:04.5416227Z 115       recordOwners: () => Effect.void,
2026-10-24T20:56:04.5416268Z           ~~~~~~~~~~~~
2026-10-24T20:56:04.5416272Z
2026-10-24T20:56:04.5416574Z 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-24T20:56:04.5416576Z
2026-10-24T20:56:04.5416718Z 329   yield* Effect.forever(Effect.sleep(FLUSH_INTERVAL_MS).pipe(Effect.flatMap(() => flushWhenDue)), {
2026-10-24T20:56:04.5416787Z                                                                  ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5416789Z
2026-10-24T20:56:04.5417059Z 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-24T20:56:04.5417065Z
2026-10-24T20:56:04.5417122Z 90       .pipe(Effect.catch(() => Effect.void));
2026-10-24T20:56:04.5417167Z                ~~~~~~~~~~~~
2026-10-24T20:56:04.5417169Z
2026-10-24T20:56:04.5417492Z 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-24T20:56:04.5417496Z
2026-10-24T20:56:04.5417551Z 60     generateCommitMessage: (input) =>
2026-10-24T20:56:04.5417593Z        ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5417596Z
2026-10-24T20:56:04.5417902Z 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-24T20:56:04.5417905Z
2026-10-24T20:56:04.5417955Z 64     generatePrContent: (input) =>
2026-10-24T20:56:04.5417998Z        ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5418000Z
2026-10-24T20:56:04.5418309Z 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-24T20:56:04.5418366Z
2026-10-24T20:56:04.5418417Z 68     generateBranchName: (input) =>
2026-10-24T20:56:04.5418466Z        ~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5418468Z
2026-10-24T20:56:04.5418783Z 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-24T20:56:04.5418785Z
2026-10-24T20:56:04.5418838Z 72     generateReviewGuide: (input) =>
2026-10-24T20:56:04.5418882Z        ~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5418884Z
2026-10-24T20:56:04.5419242Z 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-24T20:56:04.5419245Z
2026-10-24T20:56:04.5419299Z 76     generateThreadTitle: (input) =>
2026-10-24T20:56:04.5419346Z        ~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5419348Z
2026-10-24T20:56:04.5419624Z 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-24T20:56:04.5419626Z
2026-10-24T20:56:04.5419676Z 172     readSummary: (input) =>
2026-10-24T20:56:04.5419715Z         ~~~~~~~~~~~
2026-10-24T20:56:04.5419718Z
2026-10-24T20:56:04.5419960Z 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-24T20:56:04.5419962Z
2026-10-24T20:56:04.5420019Z 642         usageInstances(driver, settings)
2026-10-24T20:56:04.5420068Z             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5420111Z 643           .pipe(
2026-10-24T20:56:04.5420153Z     ~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5420193Z ...
2026-10-24T20:56:04.5420262Z 664             Effect.provideContext(readerContext),
2026-10-24T20:56:04.5420317Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5420357Z 665           ),
2026-10-24T20:56:04.5420397Z     ~~~~~~~~~~~
2026-10-24T20:56:04.5420400Z
2026-10-24T20:56:04.5420749Z 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-24T20:56:04.5420752Z
2026-10-24T20:56:04.5420802Z 4020         Effect.flatMap((result) =>
2026-10-24T20:56:04.5420845Z              ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5420847Z
2026-10-24T20:56:04.5421178Z 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-24T20:56:04.5421182Z
2026-10-24T20:56:04.5421243Z 4511     commit: (cwd, subject, body, options) =>
2026-10-24T20:56:04.5421282Z          ~~~~~~
2026-10-24T20:56:04.5421286Z
2026-10-24T20:56:04.5421639Z 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-24T20:56:04.5421642Z
2026-10-24T20:56:04.5421725Z 4513     pushCurrentBranch: (cwd, fallbackBranch, options) =>
2026-10-24T20:56:04.5421767Z          ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5421769Z
2026-10-24T20:56:04.5422089Z 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-24T20:56:04.5422093Z
2026-10-24T20:56:04.5422217Z 4515     pullCurrentBranch: (cwd) => withListRefsInvalidation(cwd, pullCurrentBranch(cwd)),
2026-10-24T20:56:04.5422325Z          ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5422327Z
2026-10-24T20:56:04.5422653Z 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-24T20:56:04.5422655Z
2026-10-24T20:56:04.5422712Z 4523     createWorktree: (input, options) =>
2026-10-24T20:56:04.5422754Z          ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5422756Z
2026-10-24T20:56:04.5423073Z 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-24T20:56:04.5423077Z
2026-10-24T20:56:04.5423267Z 4525     fetchRefIntoBranch: (input) => withListRefsInvalidation(input.cwd, fetchRefIntoBranch(input)),
2026-10-24T20:56:04.5423313Z          ~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5423315Z
2026-10-24T20:56:04.5423644Z 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-24T20:56:04.5423646Z
2026-10-24T20:56:04.5423711Z 4528     refreshCheckedOutBranch: (input) =>
2026-10-24T20:56:04.5423754Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5423756Z
2026-10-24T20:56:04.5424068Z 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-24T20:56:04.5424071Z
2026-10-24T20:56:04.5424192Z 4530     ensureRemote: (input) => withListRefsInvalidation(input.cwd, ensureRemote(input)),
2026-10-24T20:56:04.5424238Z          ~~~~~~~~~~~~
2026-10-24T20:56:04.5424240Z
2026-10-24T20:56:04.5424549Z 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-24T20:56:04.5424551Z
2026-10-24T20:56:04.5424599Z 4533     fetchRemote: (input) =>
2026-10-24T20:56:04.5424639Z          ~~~~~~~~~~~
2026-10-24T20:56:04.5424641Z
2026-10-24T20:56:04.5424971Z 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-24T20:56:04.5424973Z
2026-10-24T20:56:04.5425031Z 4548     fetchWorktreeBaseCommit: (input) =>
2026-10-24T20:56:04.5425074Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5425076Z
2026-10-24T20:56:04.5425397Z 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-24T20:56:04.5425403Z
2026-10-24T20:56:04.5425540Z 4550     fetchRemoteBranch: (input) => withListRefsInvalidation(input.cwd, fetchRemoteBranch(input)),
2026-10-24T20:56:04.5425582Z          ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5425585Z
2026-10-24T20:56:04.5425953Z 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-24T20:56:04.5425956Z
2026-10-24T20:56:04.5426018Z 4551     fetchRemoteTrackingBranch: (input) =>
2026-10-24T20:56:04.5426062Z          ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5426064Z
2026-10-24T20:56:04.5426381Z 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-24T20:56:04.5426435Z
2026-10-24T20:56:04.5426574Z 4553     setBranchUpstream: (input) => withListRefsInvalidation(input.cwd, setBranchUpstream(input)),
2026-10-24T20:56:04.5426617Z          ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5426619Z
2026-10-24T20:56:04.5426932Z 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-24T20:56:04.5426935Z
2026-10-24T20:56:04.5427061Z 4554     removeWorktree: (input) => withListRefsInvalidation(input.cwd, removeWorktree(input)),
2026-10-24T20:56:04.5427105Z          ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5427107Z
2026-10-24T20:56:04.5427469Z 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-24T20:56:04.5427474Z
2026-10-24T20:56:04.5427603Z 4555     pruneWorktrees: (input) => withListRefsInvalidation(input.cwd, pruneWorktrees(input)),
2026-10-24T20:56:04.5427645Z          ~~~~~~~~~~~~~~
2026-10-24T20:56:04.5427648Z
2026-10-24T20:56:04.5427970Z 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-24T20:56:04.5427974Z
2026-10-24T20:56:04.5428109Z 4556     deleteLocalBranch: (input) => withListRefsInvalidation(input.cwd, deleteLocalBranch(input)),
2026-10-24T20:56:04.5428152Z          ~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5428154Z
2026-10-24T20:56:04.5428468Z 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-24T20:56:04.5428472Z
2026-10-24T20:56:04.5428593Z 4557     renameBranch: (input) => withListRefsInvalidation(input.cwd, renameBranch(input)),
2026-10-24T20:56:04.5428633Z          ~~~~~~~~~~~~
2026-10-24T20:56:04.5428635Z
2026-10-24T20:56:04.5428941Z 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-24T20:56:04.5428943Z
2026-10-24T20:56:04.5429053Z 4558     createRef: (input) => withListRefsInvalidation(input.cwd, createRef(input)),
2026-10-24T20:56:04.5429095Z          ~~~~~~~~~
2026-10-24T20:56:04.5429097Z
2026-10-24T20:56:04.5429403Z 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-24T20:56:04.5429405Z
2026-10-24T20:56:04.5429510Z 4559     switchRef: (input) => withListRefsInvalidation(input.cwd, switchRef(input)),
2026-10-24T20:56:04.5429553Z          ~~~~~~~~~
2026-10-24T20:56:04.5429555Z
2026-10-24T20:56:04.5429943Z 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-24T20:56:04.5429945Z
2026-10-24T20:56:04.5430012Z 153     return serverSettings.getSettings.pipe(
2026-10-24T20:56:04.5430053Z         ~~~~~~
2026-10-24T20:56:04.5430055Z
2026-10-24T20:56:04.5430359Z 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-24T20:56:04.5430361Z
2026-10-24T20:56:04.5430444Z 171       }).pipe(Effect.catch(() => Effect.succeed(undefined)));
2026-10-24T20:56:04.5430548Z                   ~~~~~~~~~~~~
2026-10-24T20:56:04.5430551Z
2026-10-24T20:56:04.5430828Z 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-24T20:56:04.5430830Z
2026-10-24T20:56:04.5430909Z 171       }).pipe(Effect.catch(() => Effect.succeed(undefined)));
2026-10-24T20:56:04.5430968Z                                      ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5430971Z
2026-10-24T20:56:04.5431205Z 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-24T20:56:04.5431208Z
2026-10-24T20:56:04.5431308Z 401           resolveFileManagerRevealKind: () => Effect.succeed(undefined),
2026-10-24T20:56:04.5431425Z                                                   ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T20:56:04.5431428Z
2026-10-24T20:56:04.5431709Z 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-24T20:56:04.5431711Z
2026-10-24T20:56:04.5431772Z 1385         return yield* Option.match(project, {
2026-10-24T20:56:04.5431820Z                            ~~~~~~~~~~~~
2026-10-24T20:56:04.5431822Z
2026-10-24T20:56:04.5432124Z 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-24T20:56:04.5432127Z
2026-10-24T20:56:04.5432182Z 2320                 return yield* Effect.fail(
2026-10-24T20:56:04.5432229Z                             ~~~~~
2026-10-24T20:56:04.5432231Z
2026-10-24T20:56:04.5432524Z 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-24T20:56:04.5432527Z
2026-10-24T20:56:04.5432583Z 2329                 return yield* Effect.fail(
2026-10-24T20:56:04.5432628Z                             ~~~~~
2026-10-24T20:56:04.5432630Z
2026-10-24T20:56:04.5432923Z 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-24T20:56:04.5432925Z
2026-10-24T20:56:04.5432980Z 2337                 return yield* Effect.fail(
2026-10-24T20:56:04.5433022Z                             ~~~~~
2026-10-24T20:56:04.5433024Z
2026-10-24T20:56:04.5433026Z
2026-10-24T20:56:04.5433068Z ---
2026-10-24T20:56:04.5433341Z 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-24T20:56:04.5877695Z Post job cleanup.
2026-10-24T20:56:04.6476839Z Cache hit occurred on the primary key electron-Linux-X64-854e11ddd491bd4f350eebb67a74265df119376a3984c8e153cfe5fc8ced6309, not saving cache.
2026-10-24T20:56:04.6540458Z Post job cleanup.
2026-10-24T20:56:04.6553833Z ##[start-action display=Cache full pnpm store;id=__29138570-e856-4a2a-8cdb-f0410fddf619.__actions_cache]
2026-10-24T20:56:04.7195919Z Post job cleanup.
2026-10-24T20:56:04.7804590Z Cache hit occurred on the primary key pnpm-full-v1-Linux-X64-bab31c3827e90e1352d302da4c761fd1b91963ae565f5f0ea70972d0942af1f6, not saving cache.
2026-10-24T20:56:04.7833171Z ##[end-action id=__29138570-e856-4a2a-8cdb-f0410fddf619.__actions_cache;outcome=success;conclusion=success;duration_ms=127]
2026-10-24T20:56:04.7835075Z ##[start-action display=Cache Vite+;id=__29138570-e856-4a2a-8cdb-f0410fddf619.vp_cache]
2026-10-24T20:56:04.7854732Z Post job cleanup.
2026-10-24T20:56:04.8416868Z 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-24T20:56:04.8446783Z ##[end-action id=__29138570-e856-4a2a-8cdb-f0410fddf619.vp_cache;outcome=success;conclusion=success;duration_ms=61]
2026-10-24T20:56:04.8493438Z Post job cleanup.
2026-10-24T20:56:04.8873861Z [command]/usr/local/bin/git version
2026-10-24T20:56:04.8900524Z git version 2.55.0
2026-10-24T20:56:04.8917716Z Temporarily overriding HOME='/home/runner/_work/_temp/56bd9293-e5a4-40bb-8629-98fde2da8fc7' before making global git config changes
2026-10-24T20:56:04.8918074Z Adding repository directory to the temporary git global config as a safe directory
2026-10-24T20:56:04.8920564Z [command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
2026-10-24T20:56:04.8941707Z Removing SSH command configuration
2026-10-24T20:56:04.8944402Z [command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-10-24T20:56:04.8965165Z [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-24T20:56:04.9086031Z fatal: No url found for submodule path '.repos/alchemy-effect/submodules/distilled' in .gitmodules
2026-10-24T20:56:04.9110139Z ##[warning]The process '/usr/local/bin/git' failed with exit code 128
2026-10-24T20:56:04.9153076Z A job completed hook has been configured by the self-hosted runner administrator
2026-10-24T20:56:04.9167288Z ##[group]Run '/job_completed.sh'
2026-10-24T20:56:04.9173178Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
2026-10-24T20:56:04.9173346Z env:
2026-10-24T20:56:04.9173456Z   BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 148
2026-10-24T20:56:04.9173601Z   BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 439
2026-10-24T20:56:04.9173737Z   BLACKSMITH_CHECK_RUN_ID: 120984997518
2026-10-24T20:56:04.9173894Z   BLACKSMITH_JOB_DISPLAY_NAME: Build and Typecheck
2026-10-24T20:56:04.9174049Z   GITHUB_ACTIONS_CACHE_MODE: write
2026-10-24T20:56:04.9174188Z ##[endgroup]
2026-10-24T20:56:04.9243810Z Docker container cache not activated, skipping hash computation.
2026-10-24T20:56:04.9508634Z No active SSH sessions detected. Proceeding with shutdown immediately.
2026-10-24T20:56:04.9550120Z Cleaning up orphan processes