GitHub check

256 KB of 528 KB loaded Download the full log (528 KB)
272 KB of earlier output not loaded
he reusable function form `Effect.fn("AzureDevOpsPullRequestCli.setPullRequestReviewers")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8172280Z
2026-10-24T10:37:22.8172342Z 663     setPullRequestReviewers: (input) =>
2026-10-24T10:37:22.8172498Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8172584Z
2026-10-24T10:37:22.8173027Z src/server/AzureDevOpsPullRequestCli.ts:688:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AzureDevOpsPullRequestCli.runPullRequestAction")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8173437Z
2026-10-24T10:37:22.8173501Z 688     runPullRequestAction: (input) =>
2026-10-24T10:37:22.8173645Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8173725Z
2026-10-24T10:37:22.8174088Z 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-24T10:37:22.8174492Z
2026-10-24T10:37:22.8174548Z 707     updatePullRequest: (input) =>
2026-10-24T10:37:22.8174694Z         ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8174772Z
2026-10-24T10:37:22.8175185Z 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-24T10:37:22.8175650Z
2026-10-24T10:37:22.8175710Z 81     listChangeRequests: (input) => {
2026-10-24T10:37:22.8175852Z        ~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8175928Z
2026-10-24T10:37:22.8176346Z 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-24T10:37:22.8176806Z
2026-10-24T10:37:22.8176864Z 109     getChangeRequest: (input) =>
2026-10-24T10:37:22.8177003Z         ~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8177078Z
2026-10-24T10:37:22.8177500Z 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-24T10:37:22.8178064Z
2026-10-24T10:37:22.8178128Z 127     createChangeRequest: (input) => {
2026-10-24T10:37:22.8178278Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8178400Z
2026-10-24T10:37:22.8178856Z 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-24T10:37:22.8179327Z
2026-10-24T10:37:22.8179393Z 156     getRepositoryCloneUrls: (input) =>
2026-10-24T10:37:22.8179543Z         ~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8179626Z
2026-10-24T10:37:22.8180040Z 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-24T10:37:22.8180537Z
2026-10-24T10:37:22.8180598Z 173     createRepository: (input) =>
2026-10-24T10:37:22.8180739Z         ~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8180810Z
2026-10-24T10:37:22.8181224Z 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-24T10:37:22.8181681Z
2026-10-24T10:37:22.8181783Z 190     getDefaultBranch: (input) =>
2026-10-24T10:37:22.8181950Z         ~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8182025Z
2026-10-24T10:37:22.8182557Z 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-24T10:37:22.8183021Z
2026-10-24T10:37:22.8183080Z 204     checkoutChangeRequest: (input) =>
2026-10-24T10:37:22.8183233Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8183315Z
2026-10-24T10:37:22.8183317Z
2026-10-24T10:37:22.8183375Z ~/packages/provider-pi$ tsc --noEmit
2026-10-24T10:37:22.8183776Z 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-24T10:37:22.8184124Z
2026-10-24T10:37:22.8184173Z 170     get: (host) =>
2026-10-24T10:37:22.8184294Z         ~~~
2026-10-24T10:37:22.8184356Z
2026-10-24T10:37:22.8184672Z 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-24T10:37:22.8185031Z
2026-10-24T10:37:22.8185134Z 183     invalidate: (host) => Cache.invalidate(cache, normalizeHost(host)),
2026-10-24T10:37:22.8185326Z         ~~~~~~~~~~
2026-10-24T10:37:22.8185413Z
2026-10-24T10:37:22.8185726Z 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-24T10:37:22.8186075Z
2026-10-24T10:37:22.8186123Z 184     cliEnv: (host) =>
2026-10-24T10:37:22.8186248Z         ~~~~~~
2026-10-24T10:37:22.8186324Z
2026-10-24T10:37:22.8186596Z src/server/GitCafePullRequestProvider.ts:341:9 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T10:37:22.8186903Z
2026-10-24T10:37:22.8186961Z 341         Effect.map(Option.some),
2026-10-24T10:37:22.8187099Z             ~~~~~~~~~~
2026-10-24T10:37:22.8187167Z
2026-10-24T10:37:22.8187428Z src/server/GitCafePullRequestProvider.ts:346:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8187729Z
2026-10-24T10:37:22.8187910Z 346               : Effect.succeed(Option.none()),
2026-10-24T10:37:22.8188072Z                     ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8188161Z
2026-10-24T10:37:22.8188419Z src/server/GitCafePullRequestProvider.ts:655:13 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T10:37:22.8188798Z
2026-10-24T10:37:22.8188857Z 655             Effect.map(Option.some),
2026-10-24T10:37:22.8189006Z                 ~~~~~~~~~~
2026-10-24T10:37:22.8189081Z
2026-10-24T10:37:22.8189335Z src/server/GitCafePullRequestProvider.ts:660:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8189632Z
2026-10-24T10:37:22.8189702Z 660                   : Effect.succeed(Option.none()),
2026-10-24T10:37:22.8189862Z                         ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8189952Z
2026-10-24T10:37:22.8190275Z 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-24T10:37:22.8190694Z
2026-10-24T10:37:22.8190784Z 673         const readPage = (rows: number, after: string | null) => {
2026-10-24T10:37:22.8190967Z                   ~~~~~~~~
2026-10-24T10:37:22.8191041Z
2026-10-24T10:37:22.8191459Z 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-24T10:37:22.8191899Z
2026-10-24T10:37:22.8191954Z 790             Effect.catch((error) =>
2026-10-24T10:37:22.8192096Z                 ~~~~~~~~~~~~
2026-10-24T10:37:22.8192176Z
2026-10-24T10:37:22.8192618Z src/server/GitCafePullRequestProvider.ts:868:19 - suggestion TS377116: `Effect.catchIf` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T10:37:22.8193022Z
2026-10-24T10:37:22.8193080Z 868                   Effect.catch((error) =>
2026-10-24T10:37:22.8193236Z                       ~~~~~~~~~~~~
2026-10-24T10:37:22.8193324Z
2026-10-24T10:37:22.8193326Z
2026-10-24T10:37:22.8193386Z ~/packages/provider-muse$ tsc --noEmit
2026-10-24T10:37:22.8193891Z src/server/ForgejoSourceControlProvider.ts:340:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8194360Z
2026-10-24T10:37:22.8194430Z 340     getChangeRequest: (input) =>
2026-10-24T10:37:22.8194587Z         ~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8194664Z
2026-10-24T10:37:22.8194666Z
2026-10-24T10:37:22.8194729Z ~/packages/provider-opencode$ tsc --noEmit
2026-10-24T10:37:22.8195169Z 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-24T10:37:22.8195546Z
2026-10-24T10:37:22.8195644Z 440     getCapabilities: () => Effect.succeed(PiProviderCapabilitiesV2),
2026-10-24T10:37:22.8195838Z         ~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8195911Z
2026-10-24T10:37:22.8196257Z 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-24T10:37:22.8196650Z
2026-10-24T10:37:22.8196778Z 441     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T10:37:22.8196999Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8197081Z
2026-10-24T10:37:22.8197313Z src/server/adapter.ts:1694:31 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T10:37:22.8197683Z
2026-10-24T10:37:22.8197754Z 1694                               Effect.map(Option.some),
2026-10-24T10:37:22.8197927Z                                    ~~~~~~~~~~
2026-10-24T10:37:22.8198025Z
2026-10-24T10:37:22.8198287Z src/server/adapter.ts:1697:29 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8198589Z
2026-10-24T10:37:22.8198663Z 1697                           : Effect.succeed(Option.none()),
2026-10-24T10:37:22.8198834Z                                  ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8198935Z
2026-10-24T10:37:22.8199195Z 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-24T10:37:22.8199497Z
2026-10-24T10:37:22.8199546Z 334       onSuccess: () =>
2026-10-24T10:37:22.8199674Z           ~~~~~~~~~
2026-10-24T10:37:22.8199743Z
2026-10-24T10:37:22.8199956Z src/server/rpc.ts:342:17 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T10:37:22.8200215Z
2026-10-24T10:37:22.8200315Z 342                 Effect.map(Option.some),
2026-10-24T10:37:22.8200470Z                     ~~~~~~~~~~
2026-10-24T10:37:22.8200553Z
2026-10-24T10:37:22.8200555Z
2026-10-24T10:37:22.8200669Z ~/packages/provider-cursor$ tsc --noEmit
2026-10-24T10:37:22.8201136Z 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-24T10:37:22.8201583Z
2026-10-24T10:37:22.8201686Z 284     getCapabilities: () => Effect.succeed(MuseProviderCapabilitiesV2),
2026-10-24T10:37:22.8201879Z         ~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8201953Z
2026-10-24T10:37:22.8202304Z 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-24T10:37:22.8202694Z
2026-10-24T10:37:22.8202820Z 285     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T10:37:22.8203037Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8203120Z
2026-10-24T10:37:22.8203398Z 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-24T10:37:22.8203714Z
2026-10-24T10:37:22.8203772Z 388             TimeoutError: (cause) =>
2026-10-24T10:37:22.8203917Z                 ~~~~~~~~~~~~
2026-10-24T10:37:22.8203993Z
2026-10-24T10:37:22.8204218Z src/server/adapter.ts:1366:35 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T10:37:22.8204484Z
2026-10-24T10:37:22.8204616Z 1366                   wake === held ? Effect.map(dispatch, Option.some) : Effect.succeed(Option.none()),
2026-10-24T10:37:22.8204842Z                                        ~~~~~~~~~~
2026-10-24T10:37:22.8204944Z
2026-10-24T10:37:22.8205169Z src/server/adapter.ts:1366:71 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8205430Z
2026-10-24T10:37:22.8205558Z 1366                   wake === held ? Effect.map(dispatch, Option.some) : Effect.succeed(Option.none()),
2026-10-24T10:37:22.8205804Z                                                                            ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8205923Z
2026-10-24T10:37:22.8205925Z
2026-10-24T10:37:22.8205985Z ~/packages/provider-grok$ tsc --noEmit
2026-10-24T10:37:22.8206372Z 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-24T10:37:22.8206796Z
2026-10-24T10:37:22.8206856Z 147     return Effect.succeed(undefined);
2026-10-24T10:37:22.8207002Z                ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8207089Z
2026-10-24T10:37:22.8207577Z 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-24T10:37:22.8208021Z
2026-10-24T10:37:22.8208084Z 188       if (!recordable) return Effect.void;
2026-10-24T10:37:22.8208237Z                            ~~~~~~
2026-10-24T10:37:22.8208323Z
2026-10-24T10:37:22.8208722Z 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-24T10:37:22.8209163Z
2026-10-24T10:37:22.8209214Z 208         return Effect.void;
2026-10-24T10:37:22.8209346Z             ~~~~~~
2026-10-24T10:37:22.8209413Z
2026-10-24T10:37:22.8209857Z 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-24T10:37:22.8210347Z
2026-10-24T10:37:22.8210431Z 228       return fs
2026-10-24T10:37:22.8210542Z           ~~~~~~
2026-10-24T10:37:22.8210629Z
2026-10-24T10:37:22.8211001Z 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-24T10:37:22.8211351Z
2026-10-24T10:37:22.8211469Z 311   OpenCodeServerLedger.of({ track: () => Effect.succeed(Effect.void) }),
2026-10-24T10:37:22.8211672Z                                 ~~~~~
2026-10-24T10:37:22.8211761Z
2026-10-24T10:37:22.8212079Z 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-24T10:37:22.8212440Z
2026-10-24T10:37:22.8212494Z 169     withServer: (use) =>
2026-10-24T10:37:22.8212620Z         ~~~~~~~~~~
2026-10-24T10:37:22.8212686Z
2026-10-24T10:37:22.8213084Z 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-24T10:37:22.8213525Z
2026-10-24T10:37:22.8213652Z 103 const OPENCODE_TEST_SETTINGS = Schema.decodeUnknownSync(OpenCodeSettings)({});
2026-10-24T10:37:22.8213884Z                                           ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8213988Z
2026-10-24T10:37:22.8214321Z 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-24T10:37:22.8214691Z
2026-10-24T10:37:22.8214809Z 938     getCapabilities: () => Effect.succeed(OpenCodeProviderCapabilitiesV2),
2026-10-24T10:37:22.8215009Z         ~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8215085Z
2026-10-24T10:37:22.8215430Z 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-24T10:37:22.8215813Z
2026-10-24T10:37:22.8215940Z 939     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T10:37:22.8216260Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8216339Z
2026-10-24T10:37:22.8216642Z 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-24T10:37:22.8217063Z
2026-10-24T10:37:22.8217142Z 1011         const abortController = new AbortController();
2026-10-24T10:37:22.8217323Z                                      ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8217430Z
2026-10-24T10:37:22.8217765Z 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-24T10:37:22.8218136Z
2026-10-24T10:37:22.8218213Z 1088           if (failure) return yield* Effect.fail(failure);
2026-10-24T10:37:22.8218386Z                                    ~~~~~
2026-10-24T10:37:22.8218482Z
2026-10-24T10:37:22.8218766Z 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-24T10:37:22.8219094Z
2026-10-24T10:37:22.8219177Z 1584               Effect.catch(() => Effect.succeed(undefined)),
2026-10-24T10:37:22.8219349Z                    ~~~~~~~~~~~~
2026-10-24T10:37:22.8219474Z
2026-10-24T10:37:22.8219772Z 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-24T10:37:22.8220083Z
2026-10-24T10:37:22.8220162Z 1584               Effect.catch(() => Effect.succeed(undefined)),
2026-10-24T10:37:22.8220619Z                                       ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8220753Z
2026-10-24T10:37:22.8221078Z 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-24T10:37:22.8221438Z
2026-10-24T10:37:22.8221533Z 3194                 admissionAbortController: new AbortController(),
2026-10-24T10:37:22.8261301Z                                                ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8261424Z
2026-10-24T10:37:22.8261741Z 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-24T10:37:22.8262071Z
2026-10-24T10:37:22.8262163Z 3354               turn.admissionAbortController = new AbortController();
2026-10-24T10:37:22.8262499Z                                                    ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8262603Z
2026-10-24T10:37:22.8262893Z 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-24T10:37:22.8263261Z
2026-10-24T10:37:22.8263323Z 158     connect: ({ baseUrl, password }) => {
2026-10-24T10:37:22.8263475Z         ~~~~~~~
2026-10-24T10:37:22.8263537Z
2026-10-24T10:37:22.8263835Z 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-24T10:37:22.8264174Z
2026-10-24T10:37:22.8264226Z 160       withConnection: (use) =>
2026-10-24T10:37:22.8264354Z           ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8264423Z
2026-10-24T10:37:22.8264714Z 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-24T10:37:22.8265047Z
2026-10-24T10:37:22.8265252Z 175     withConnection: (use) =>
2026-10-24T10:37:22.8265423Z         ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8265488Z
2026-10-24T10:37:22.8265705Z src/server/v2/adapter.ts:1544:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8265958Z
2026-10-24T10:37:22.8266119Z 1544           wake.dropped ? Effect.succeed(Option.none()) : Effect.map(dispatch, Option.some),
2026-10-24T10:37:22.8266367Z                               ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8266454Z
2026-10-24T10:37:22.8266672Z src/server/v2/adapter.ts:1544:58 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T10:37:22.8266924Z
2026-10-24T10:37:22.8267040Z 1544           wake.dropped ? Effect.succeed(Option.none()) : Effect.map(dispatch, Option.some),
2026-10-24T10:37:22.8267256Z                                                               ~~~~~~~~~~
2026-10-24T10:37:22.8267360Z
2026-10-24T10:37:22.8267679Z 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-24T10:37:22.8268044Z
2026-10-24T10:37:22.8268163Z 4137     getCapabilities: () => Effect.succeed(OpenCode2ProviderCapabilities),
2026-10-24T10:37:22.8268349Z          ~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8268483Z
2026-10-24T10:37:22.8268858Z 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-24T10:37:22.8269237Z
2026-10-24T10:37:22.8269431Z 4138     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T10:37:22.8269636Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8269712Z
2026-10-24T10:37:22.8269715Z
2026-10-24T10:37:22.8269783Z ~/packages/provider-acp-registry$ tsc --noEmit
2026-10-24T10:37:22.8270209Z 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-24T10:37:22.8270624Z
2026-10-24T10:37:22.8270679Z 174       Effect.flatMap((snapshot) =>
2026-10-24T10:37:22.8270811Z           ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8270881Z
2026-10-24T10:37:22.8271120Z 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-24T10:37:22.8271392Z
2026-10-24T10:37:22.8271460Z 1507       }).pipe(Effect.catch(() => Effect.void));
2026-10-24T10:37:22.8271608Z                    ~~~~~~~~~~~~
2026-10-24T10:37:22.8271684Z
2026-10-24T10:37:22.8271939Z 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-24T10:37:22.8272235Z
2026-10-24T10:37:22.8272300Z 1507       }).pipe(Effect.catch(() => Effect.void));
2026-10-24T10:37:22.8272445Z                    ~~~~~~~~~~~~
2026-10-24T10:37:22.8272521Z
2026-10-24T10:37:22.8272871Z 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-24T10:37:22.8273255Z
2026-10-24T10:37:22.8273313Z 1588             Effect.catchCause((cause) =>
2026-10-24T10:37:22.8273459Z                  ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8273539Z
2026-10-24T10:37:22.8273544Z
2026-10-24T10:37:22.8273600Z ~/packages/client-runtime$ tsc --noEmit
2026-10-24T10:37:22.8274034Z 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-24T10:37:22.8274502Z
2026-10-24T10:37:22.8274572Z 31       read: (credentialSource, sinceMs, untilMs) =>
2026-10-24T10:37:22.8274724Z          ~~~~
2026-10-24T10:37:22.8274780Z
2026-10-24T10:37:22.8275146Z 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-24T10:37:22.8275471Z
2026-10-24T10:37:22.8275534Z 82     read: (apiKey) =>
2026-10-24T10:37:22.8275644Z        ~~~~
2026-10-24T10:37:22.8275699Z
2026-10-24T10:37:22.8275975Z 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-24T10:37:22.8276304Z
2026-10-24T10:37:22.8276352Z 360     Effect.catch(() =>
2026-10-24T10:37:22.8276470Z         ~~~~~~~~~~~~
2026-10-24T10:37:22.8276534Z
2026-10-24T10:37:22.8276850Z src/server/adapter.ts:904:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.getCapabilities")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8277204Z
2026-10-24T10:37:22.8277307Z 904     getCapabilities: () => Effect.succeed(CursorProviderCapabilitiesV2),
2026-10-24T10:37:22.8277542Z         ~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8277640Z
2026-10-24T10:37:22.8277975Z src/server/adapter.ts:905:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.planSelectionTransition")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8278404Z
2026-10-24T10:37:22.8278537Z 905     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T10:37:22.8278742Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8278820Z
2026-10-24T10:37:22.8279260Z 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-24T10:37:22.8279737Z
2026-10-24T10:37:22.8279789Z 55       Effect.runPromise(
2026-10-24T10:37:22.8279909Z          ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8279979Z
2026-10-24T10:37:22.8280242Z 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-24T10:37:22.8280593Z
2026-10-24T10:37:22.8280660Z 59               onNone: () => Effect.succeed(undefined),
2026-10-24T10:37:22.8280820Z                                ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8280917Z
2026-10-24T10:37:22.8281355Z 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-24T10:37:22.8281828Z
2026-10-24T10:37:22.8281878Z 69       Effect.runPromise(
2026-10-24T10:37:22.8282000Z          ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8282068Z
2026-10-24T10:37:22.8282503Z 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-24T10:37:22.8282978Z
2026-10-24T10:37:22.8283049Z 82     clear: () => Effect.runPromise(credentials.remove),
2026-10-24T10:37:22.8283210Z                     ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8283377Z
2026-10-24T10:37:22.8283706Z 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-24T10:37:22.8284076Z
2026-10-24T10:37:22.8284162Z 228           Effect.flatMap((snapshot) =>
2026-10-24T10:37:22.8284337Z               ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8284414Z
2026-10-24T10:37:22.8284604Z src/server/usageLimits.test.ts:74:5 - suggestion TS377017: This Effect.gen contains a single return statement. effect(unnecessaryEffectGen)
2026-10-24T10:37:22.8284833Z
2026-10-24T10:37:22.8284885Z  74     Effect.gen(function* () {
2026-10-24T10:37:22.8285011Z         ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8285140Z  75       yield* withNodeServices(
2026-10-24T10:37:22.8285267Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8285385Z ...
2026-10-24T10:37:22.8285478Z 115       );
2026-10-24T10:37:22.8285574Z     ~~~~~~~~
2026-10-24T10:37:22.8285674Z 116     }),
2026-10-24T10:37:22.8285767Z     ~~~~~~
2026-10-24T10:37:22.8285822Z
2026-10-24T10:37:22.8285824Z
2026-10-24T10:37:22.8286080Z src/server/AcpRegistryRuntimeCoordinator.ts:154:52 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T10:37:22.8286374Z
2026-10-24T10:37:22.8286549Z 154         return yield* Effect.raceFirst(effect.pipe(Effect.map(Option.some)), foregroundStarted);
2026-10-24T10:37:22.8286817Z                                                        ~~~~~~~~~~
2026-10-24T10:37:22.8286921Z
2026-10-24T10:37:22.8287248Z 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-24T10:37:22.8287694Z
2026-10-24T10:37:22.8287745Z 1301         Effect.catch((error) =>
2026-10-24T10:37:22.8287875Z              ~~~~~~~~~~~~
2026-10-24T10:37:22.8287945Z
2026-10-24T10:37:22.8288253Z 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-24T10:37:22.8288585Z
2026-10-24T10:37:22.8288636Z 146             Option.isSome(result)
2026-10-24T10:37:22.8288770Z                 ~~~~~~~~~~~~~
2026-10-24T10:37:22.8288851Z
2026-10-24T10:37:22.8289143Z 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-24T10:37:22.8289437Z
2026-10-24T10:37:22.8289539Z 640       enrichSnapshot: ({ snapshot, getSnapshot, publishSnapshot }) => {
2026-10-24T10:37:22.8289722Z           ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8289793Z
2026-10-24T10:37:22.8290008Z src/server/driver.ts:650:51 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T10:37:22.8290296Z
2026-10-24T10:37:22.8290397Z 650             : enrichProviderCached(snapshot).pipe(Effect.map(Option.some))
2026-10-24T10:37:22.8290602Z                                                       ~~~~~~~~~~
2026-10-24T10:37:22.8290706Z
2026-10-24T10:37:22.8290708Z
2026-10-24T10:37:22.8290940Z src/authorization/remote.test.ts:232:25 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8291214Z
2026-10-24T10:37:22.8291324Z 232               identity: Effect.succeed(Option.some({ accountId: "user_connect" })),
2026-10-24T10:37:22.8291525Z                             ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8291613Z
2026-10-24T10:37:22.8291844Z src/authorization/remote.test.ts:237:17 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8292212Z
2026-10-24T10:37:22.8292288Z 237             id: Effect.succeed(Option.some("device-1")),
2026-10-24T10:37:22.8292450Z                     ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8292533Z
2026-10-24T10:37:22.8292953Z 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-24T10:37:22.8293331Z
2026-10-24T10:37:22.8293386Z 553     authorizeDpop: (input) =>
2026-10-24T10:37:22.8293516Z         ~~~~~~~~~~~~~
2026-10-24T10:37:22.8293584Z
2026-10-24T10:37:22.8293927Z 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-24T10:37:22.8294312Z
2026-10-24T10:37:22.8294369Z 555     authorizeDpopHttp: (input) =>
2026-10-24T10:37:22.8294508Z         ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8294581Z
2026-10-24T10:37:22.8294909Z src/connection/githubRoutingPermissions.ts:138:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubRoutingPermissions.get")((entry) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8295278Z
2026-10-24T10:37:22.8295326Z 138       get: (entry) =>
2026-10-24T10:37:22.8295442Z           ~~~
2026-10-24T10:37:22.8295499Z
2026-10-24T10:37:22.8295895Z src/connection/githubRoutingPermissions.ts:143:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubRoutingPermissions.set")((entry, permission) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8296309Z
2026-10-24T10:37:22.8296365Z 143       set: (entry, permission) => {
2026-10-24T10:37:22.8296498Z           ~~~
2026-10-24T10:37:22.8296557Z
2026-10-24T10:37:22.8296978Z src/connection/githubRoutingPermissions.ts:159:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubRoutingPermissions.forget")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8297362Z
2026-10-24T10:37:22.8297415Z 159       forget: (environmentId) =>
2026-10-24T10:37:22.8297549Z           ~~~~~~
2026-10-24T10:37:22.8297609Z
2026-10-24T10:37:22.8297929Z 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-24T10:37:22.8298287Z
2026-10-24T10:37:22.8298342Z 298     registerPairing: (input) =>
2026-10-24T10:37:22.8298475Z         ~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8298544Z
2026-10-24T10:37:22.8298851Z 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-24T10:37:22.8299201Z
2026-10-24T10:37:22.8299251Z 304     registerSsh: (input) =>
2026-10-24T10:37:22.8299376Z         ~~~~~~~~~~~
2026-10-24T10:37:22.8299439Z
2026-10-24T10:37:22.8299750Z 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-24T10:37:22.8300103Z
2026-10-24T10:37:22.8300162Z 309     updateBearer: (input) =>
2026-10-24T10:37:22.8300333Z         ~~~~~~~~~~~~
2026-10-24T10:37:22.8300404Z
2026-10-24T10:37:22.8300687Z 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-24T10:37:22.8301009Z
2026-10-24T10:37:22.8301068Z 1392             ? Effect.succeed(undefined)
2026-10-24T10:37:22.8301223Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8301318Z
2026-10-24T10:37:22.8301684Z 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-24T10:37:22.8302006Z
2026-10-24T10:37:22.8302066Z 1476             ? Effect.succeed(undefined)
2026-10-24T10:37:22.8302337Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8302487Z
2026-10-24T10:37:22.8302769Z 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-24T10:37:22.8303086Z
2026-10-24T10:37:22.8303154Z 1489                     : Effect.succeed(undefined),
2026-10-24T10:37:22.8303321Z                            ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8303422Z
2026-10-24T10:37:22.8303679Z src/platform/orchestrationCache.test.ts:104:15 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T10:37:22.8303982Z
2026-10-24T10:37:22.8304044Z 104       }).pipe(Effect.map(Option.some));
2026-10-24T10:37:22.8304189Z                   ~~~~~~~~~~
2026-10-24T10:37:22.8304268Z
2026-10-24T10:37:22.8304728Z 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-24T10:37:22.8305201Z
2026-10-24T10:37:22.8305296Z 72       load: (prepared: PreparedConnection, threadId: ThreadId) => {
2026-10-24T10:37:22.8305484Z          ~~~~
2026-10-24T10:37:22.8305582Z
2026-10-24T10:37:22.8305913Z 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-24T10:37:22.8306258Z
2026-10-24T10:37:22.8306363Z 56             Effect.catch(() => Effect.succeed(Option.none<AuthSessionState>())),
2026-10-24T10:37:22.8306556Z                ~~~~~~~~~~~~
2026-10-24T10:37:22.8306637Z
2026-10-24T10:37:22.8306991Z 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-24T10:37:22.8307383Z
2026-10-24T10:37:22.8307444Z 62             return yield* Effect.fail(
2026-10-24T10:37:22.8307584Z                       ~~~~~
2026-10-24T10:37:22.8307668Z
2026-10-24T10:37:22.8307974Z 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-24T10:37:22.8308315Z
2026-10-24T10:37:22.8308415Z 57     execute: (target: OutdatedServerUpdateTarget, atomRegistry) => {
2026-10-24T10:37:22.8308605Z        ~~~~~~~
2026-10-24T10:37:22.8308670Z
2026-10-24T10:37:22.8308999Z 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-24T10:37:22.8309367Z
2026-10-24T10:37:22.8309425Z 90       load: (prepared, input) =>
2026-10-24T10:37:22.8309555Z          ~~~~
2026-10-24T10:37:22.8309616Z
2026-10-24T10:37:22.8310038Z 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-24T10:37:22.8310544Z
2026-10-24T10:37:22.8310651Z 34       return yield* Schema.decodeUnknownEffect(codec)(stored.value).pipe(
2026-10-24T10:37:22.8310860Z                               ~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8310959Z
2026-10-24T10:37:22.8311305Z src/state/queryPersistence.ts:35:9 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T10:37:22.8311587Z
2026-10-24T10:37:22.8311643Z 35         Effect.map(Option.some),
2026-10-24T10:37:22.8311796Z            ~~~~~~~~~~
2026-10-24T10:37:22.8311910Z
2026-10-24T10:37:22.8312204Z 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-24T10:37:22.8312528Z
2026-10-24T10:37:22.8312588Z 680     execute: (target, atomRegistry) => {
2026-10-24T10:37:22.8312734Z         ~~~~~~~
2026-10-24T10:37:22.8312797Z
2026-10-24T10:37:22.8313147Z 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-24T10:37:22.8313538Z
2026-10-24T10:37:22.8313598Z 1125           Effect.flatMap((summary) =>
2026-10-24T10:37:22.8313745Z                ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8313827Z
2026-10-24T10:37:22.8314063Z src/state/shell-sync.test.ts:90:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8314341Z
2026-10-24T10:37:22.8314457Z 90         loadShell: () => Effect.succeed(Option.none()),
2026-10-24T10:37:22.8314660Z                             ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8314755Z
2026-10-24T10:37:22.8314985Z src/state/shell-sync.test.ts:96:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8315265Z
2026-10-24T10:37:22.8315382Z 96         loadThread: () => Effect.succeed(Option.none()),
2026-10-24T10:37:22.8315582Z                              ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8315676Z
2026-10-24T10:37:22.8315907Z src/state/shell-sync.test.ts:99:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8316181Z
2026-10-24T10:37:22.8316268Z 99         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-24T10:37:22.8316450Z                                    ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8316452Z
2026-10-24T10:37:22.8316686Z src/state/shell-sync.test.ts:101:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8316689Z
2026-10-24T10:37:22.8316766Z 101         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-24T10:37:22.8316821Z                                ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8316823Z
2026-10-24T10:37:22.8317053Z src/state/shell-sync.test.ts:108:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8317057Z
2026-10-24T10:37:22.8317129Z 108         load: () => Effect.succeed(Option.none()),
2026-10-24T10:37:22.8317184Z                         ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8317186Z
2026-10-24T10:37:22.8317415Z src/state/shell-sync.test.ts:229:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8317417Z
2026-10-24T10:37:22.8317496Z 229         loadShell: () => Effect.succeed(Option.none()),
2026-10-24T10:37:22.8317550Z                              ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8317552Z
2026-10-24T10:37:22.8317782Z src/state/shell-sync.test.ts:238:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8317784Z
2026-10-24T10:37:22.8317863Z 238         loadThread: () => Effect.succeed(Option.none()),
2026-10-24T10:37:22.8317916Z                               ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8317919Z
2026-10-24T10:37:22.8318232Z src/state/shell-sync.test.ts:241:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8318235Z
2026-10-24T10:37:22.8318324Z 241         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-24T10:37:22.8318381Z                                     ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8318383Z
2026-10-24T10:37:22.8318613Z src/state/shell-sync.test.ts:243:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8318618Z
2026-10-24T10:37:22.8318701Z 243         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-24T10:37:22.8318788Z                                ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8318791Z
2026-10-24T10:37:22.8319052Z src/state/shell-sync.test.ts:250:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8319056Z
2026-10-24T10:37:22.8319126Z 250         load: () => Effect.succeed(Option.none()),
2026-10-24T10:37:22.8319176Z                         ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8319178Z
2026-10-24T10:37:22.8319406Z src/state/shell-sync.test.ts:349:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8319408Z
2026-10-24T10:37:22.8319525Z 349         loadShell: () => Effect.succeed(Option.none()),
2026-10-24T10:37:22.8319605Z                              ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8319609Z
2026-10-24T10:37:22.8319922Z src/state/shell-sync.test.ts:355:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8319925Z
2026-10-24T10:37:22.8319999Z 355         loadThread: () => Effect.succeed(Option.none()),
2026-10-24T10:37:22.8320052Z                               ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8320055Z
2026-10-24T10:37:22.8320322Z src/state/shell-sync.test.ts:358:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8320325Z
2026-10-24T10:37:22.8320456Z 358         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-24T10:37:22.8320541Z                                     ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8320544Z
2026-10-24T10:37:22.8320900Z src/state/shell-sync.test.ts:360:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8320902Z
2026-10-24T10:37:22.8320982Z 360         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-24T10:37:22.8321036Z                                ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8321038Z
2026-10-24T10:37:22.8321269Z src/state/shell-sync.test.ts:367:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8321273Z
2026-10-24T10:37:22.8321341Z 367         load: () => Effect.succeed(Option.none()),
2026-10-24T10:37:22.8321392Z                         ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8321394Z
2026-10-24T10:37:22.8321623Z src/state/shell-sync.test.ts:446:26 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8321625Z
2026-10-24T10:37:22.8321723Z 446         loadShell: () => Effect.succeed(Option.some(cachedSnapshot)),
2026-10-24T10:37:22.8321776Z                              ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8321778Z
2026-10-24T10:37:22.8322005Z src/state/shell-sync.test.ts:448:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8322008Z
2026-10-24T10:37:22.8322086Z 448         loadThread: () => Effect.succeed(Option.none()),
2026-10-24T10:37:22.8322139Z                               ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8322192Z
2026-10-24T10:37:22.8322575Z src/state/shell-sync.test.ts:451:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8322578Z
2026-10-24T10:37:22.8322715Z 451         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-24T10:37:22.8322799Z                                     ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8322803Z
2026-10-24T10:37:22.8323189Z src/state/shell-sync.test.ts:453:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8323192Z
2026-10-24T10:37:22.8323315Z 453         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-24T10:37:22.8323399Z                                ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8323402Z
2026-10-24T10:37:22.8323782Z src/state/shell-sync.test.ts:460:21 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8323790Z
2026-10-24T10:37:22.8323900Z 460         load: () => Effect.succeed(Option.some(httpSnapshot)),
2026-10-24T10:37:22.8323952Z                         ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8323954Z
2026-10-24T10:37:22.8324272Z 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-24T10:37:22.8324316Z
2026-10-24T10:37:22.8324422Z 98       load: (prepared: PreparedConnection) =>
2026-10-24T10:37:22.8324490Z          ~~~~
2026-10-24T10:37:22.8324494Z
2026-10-24T10:37:22.8325140Z 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-24T10:37:22.8325144Z
2026-10-24T10:37:22.8325263Z 52       register: (environmentId, threadId, handler) =>
2026-10-24T10:37:22.8325339Z          ~~~~~~~~
2026-10-24T10:37:22.8325343Z
2026-10-24T10:37:22.8325940Z 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-24T10:37:22.8325944Z
2026-10-24T10:37:22.8326030Z 64       unregister: (registration) =>
2026-10-24T10:37:22.8326107Z          ~~~~~~~~~~
2026-10-24T10:37:22.8326111Z
2026-10-24T10:37:22.8326787Z 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-24T10:37:22.8326791Z
2026-10-24T10:37:22.8326882Z 79       loadEarlier: (environmentId, threadId, throughEntryId) =>
2026-10-24T10:37:22.8326928Z          ~~~~~~~~~~~
2026-10-24T10:37:22.8326933Z
2026-10-24T10:37:22.8327319Z 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-24T10:37:22.8327321Z
2026-10-24T10:37:22.8327402Z 89       reconcilePendingWork: (environmentId, threadId) =>
2026-10-24T10:37:22.8327454Z          ~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8327456Z
2026-10-24T10:37:22.8327695Z src/state/threads-sync.test.ts:1458:29 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8327698Z
2026-10-24T10:37:22.8327786Z 1458             : { loadCached: Effect.succeed(Option.some(saved!)) },
2026-10-24T10:37:22.8327840Z                                  ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8327842Z
2026-10-24T10:37:22.8328119Z 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-24T10:37:22.8328267Z
2026-10-24T10:37:22.8328360Z 447       execute: (input: RunVcsStackedActionInput, registry) => {
2026-10-24T10:37:22.8328405Z           ~~~~~~~
2026-10-24T10:37:22.8328407Z
2026-10-24T10:37:22.8328409Z
2026-10-24T10:37:22.8328461Z ~/apps/mobile$ tsc --noEmit
2026-10-24T10:37:22.8328515Z ~/infra/relay$ tsc --noEmit
2026-10-24T10:37:22.8328567Z ~/apps/web$ tsc --noEmit
2026-10-24T10:37:22.8328615Z Result (22 files):
2026-10-24T10:37:22.8328658Z - 0 errors
2026-10-24T10:37:22.8328704Z - 0 warnings
2026-10-24T10:37:22.8328749Z - 0 hints
2026-10-24T10:37:22.8328752Z
2026-10-24T10:37:22.8328754Z
2026-10-24T10:37:22.8328807Z ~/apps/desktop$ tsc --noEmit
2026-10-24T10:37:22.8329223Z 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-24T10:37:22.8329230Z
2026-10-24T10:37:22.8329280Z 220           send: (body) =>
2026-10-24T10:37:22.8329326Z               ~~~~
2026-10-24T10:37:22.8329328Z
2026-10-24T10:37:22.8329651Z 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-24T10:37:22.8329697Z
2026-10-24T10:37:22.8329780Z 12       onFailure: (error) =>
2026-10-24T10:37:22.8329849Z          ~~~~~~~~~
2026-10-24T10:37:22.8329853Z
2026-10-24T10:37:22.8330251Z 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-24T10:37:22.8330292Z
2026-10-24T10:37:22.8330351Z 64     pauseUntil: (untilMillis) =>
2026-10-24T10:37:22.8330398Z        ~~~~~~~~~~
2026-10-24T10:37:22.8330400Z
2026-10-24T10:37:22.8330814Z 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-24T10:37:22.8330818Z
2026-10-24T10:37:22.8330895Z 198         onNone: () =>
2026-10-24T10:37:22.8330942Z             ~~~~~~
2026-10-24T10:37:22.8330944Z
2026-10-24T10:37:22.8331230Z src/previewTunnelSweep.test.ts:53:11 - suggestion TS377124: `Effect.provideService` provides this inline single-service layer directly. effect(provideLayerSucceedToProvideService)
2026-10-24T10:37:22.8331233Z
2026-10-24T10:37:22.8331359Z 53   }).pipe(Effect.provide(Layer.succeed(HttpClient.HttpClient, cloudflare.client)));
2026-10-24T10:37:22.8331404Z              ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8331406Z
2026-10-24T10:37:22.8331705Z 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-24T10:37:22.8331710Z
2026-10-24T10:37:22.8331827Z 92   fileResponse: () => Effect.die("Relay API does not serve filesystem responses"),
2026-10-24T10:37:22.8331872Z      ~~~~~~~~~~~~
2026-10-24T10:37:22.8331874Z
2026-10-24T10:37:22.8332179Z 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-24T10:37:22.8332181Z
2026-10-24T10:37:22.8332292Z 93   fileWebResponse: () => Effect.die("Relay API does not serve file responses"),
2026-10-24T10:37:22.8332337Z      ~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8332339Z
2026-10-24T10:37:22.8332608Z 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-24T10:37:22.8332611Z
2026-10-24T10:37:22.8332755Z 242       hold: ({ endpointKey, baseUrl, hook }) =>
2026-10-24T10:37:22.8332800Z           ~~~~
2026-10-24T10:37:22.8332802Z
2026-10-24T10:37:22.8333068Z 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-24T10:37:22.8333070Z
2026-10-24T10:37:22.8333134Z 244       wake: ({ endpointKey, baseUrl }) =>
2026-10-24T10:37:22.8333181Z           ~~~~
2026-10-24T10:37:22.8333183Z
2026-10-24T10:37:22.8333503Z 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-24T10:37:22.8333507Z
2026-10-24T10:37:22.8333581Z 246       clear: ({ endpointKey }) =>
2026-10-24T10:37:22.8333625Z           ~~~~~
2026-10-24T10:37:22.8333628Z
2026-10-24T10:37:22.8333961Z 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-24T10:37:22.8333965Z
2026-10-24T10:37:22.8334016Z 275               send: (body) =>
2026-10-24T10:37:22.8334063Z                   ~~~~
2026-10-24T10:37:22.8334065Z
2026-10-24T10:37:22.8334067Z
2026-10-24T10:37:22.8334070Z
2026-10-24T10:37:22.8334439Z 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-24T10:37:22.8334441Z
2026-10-24T10:37:22.8334610Z 389     complete: (response) => Effect.sync(() => broker.complete(response)),
2026-10-24T10:37:22.8334684Z         ~~~~~~~~
2026-10-24T10:37:22.8334687Z
2026-10-24T10:37:22.8334940Z src/app/DesktopClerk.test.ts:300:27 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8334945Z
2026-10-24T10:37:22.8335035Z 300       currentMainOrFirst: Effect.succeed(Option.some(window)),
2026-10-24T10:37:22.8335087Z                               ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8335091Z
2026-10-24T10:37:22.8335476Z 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-24T10:37:22.8335482Z
2026-10-24T10:37:22.8335565Z 461     onSome: (logFile) =>
2026-10-24T10:37:22.8335635Z         ~~~~~~
2026-10-24T10:37:22.8335638Z
2026-10-24T10:37:22.8336022Z 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-24T10:37:22.8336025Z
2026-10-24T10:37:22.8336084Z 591       forInstance: (id) => makeForId(id),
2026-10-24T10:37:22.8336132Z           ~~~~~~~~~~~
2026-10-24T10:37:22.8336134Z
2026-10-24T10:37:22.8336374Z src/app/DesktopWebLinks.test.ts:29:31 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8336377Z
2026-10-24T10:37:22.8336467Z 29           currentMainOrFirst: Effect.succeed(Option.some(window)),
2026-10-24T10:37:22.8336522Z                                  ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8336526Z
2026-10-24T10:37:22.8336818Z 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-24T10:37:22.8336820Z
2026-10-24T10:37:22.8336872Z 72     receive: (url) =>
2026-10-24T10:37:22.8336915Z        ~~~~~~~
2026-10-24T10:37:22.8336918Z
2026-10-24T10:37:22.8337231Z 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-24T10:37:22.8337279Z
2026-10-24T10:37:22.8337368Z 77     setRendererReady: (ready) =>
2026-10-24T10:37:22.8337440Z        ~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8337443Z
2026-10-24T10:37:22.8337945Z 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-24T10:37:22.8337948Z
2026-10-24T10:37:22.8338026Z 1062       onSome: (run) =>
2026-10-24T10:37:22.8338096Z            ~~~~~~
2026-10-24T10:37:22.8338099Z
2026-10-24T10:37:22.8338610Z 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-24T10:37:22.8338615Z
2026-10-24T10:37:22.8338688Z 307       get: (id) =>
2026-10-24T10:37:22.8338758Z           ~~~
2026-10-24T10:37:22.8338763Z
2026-10-24T10:37:22.8339148Z 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-24T10:37:22.8339150Z
2026-10-24T10:37:22.8339249Z 342         get: (id) => Effect.succeed(Option.fromNullishOr(byId.get(id))),
2026-10-24T10:37:22.8339291Z             ~~~
2026-10-24T10:37:22.8339335Z
2026-10-24T10:37:22.8339856Z 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-24T10:37:22.8339860Z
2026-10-24T10:37:22.8340075Z 345         register: () => Effect.die("DesktopBackendPool.layerTest does not support register"),
2026-10-24T10:37:22.8340147Z             ~~~~~~~~
2026-10-24T10:37:22.8340150Z
2026-10-24T10:37:22.8340707Z 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-24T10:37:22.8340713Z
2026-10-24T10:37:22.8340935Z 346         unregister: () => Effect.die("DesktopBackendPool.layerTest does not support unregister"),
2026-10-24T10:37:22.8341008Z             ~~~~~~~~~~
2026-10-24T10:37:22.8341012Z
2026-10-24T10:37:22.8341487Z 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-24T10:37:22.8341491Z
2026-10-24T10:37:22.8341565Z 145   exit: (code) =>
2026-10-24T10:37:22.8341635Z       ~~~~
2026-10-24T10:37:22.8341638Z
2026-10-24T10:37:22.8342003Z 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-24T10:37:22.8342008Z
2026-10-24T10:37:22.8342061Z 149   relaunch: (options) =>
2026-10-24T10:37:22.8342103Z       ~~~~~~~~
2026-10-24T10:37:22.8342106Z
2026-10-24T10:37:22.8342483Z 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-24T10:37:22.8342486Z
2026-10-24T10:37:22.8342541Z 153   setPath: (name, path) =>
2026-10-24T10:37:22.8342583Z       ~~~~~~~
2026-10-24T10:37:22.8342585Z
2026-10-24T10:37:22.8342870Z 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-24T10:37:22.8342872Z
2026-10-24T10:37:22.8342922Z 157   setName: (name) =>
2026-10-24T10:37:22.8342965Z       ~~~~~~~
2026-10-24T10:37:22.8342967Z
2026-10-24T10:37:22.8343281Z 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-24T10:37:22.8343349Z
2026-10-24T10:37:22.8343444Z 161   setAboutPanelOptions: (options) =>
2026-10-24T10:37:22.8343520Z       ~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8343524Z
2026-10-24T10:37:22.8343837Z 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-24T10:37:22.8343840Z
2026-10-24T10:37:22.8343896Z 165   setAppUserModelId: (id) =>
2026-10-24T10:37:22.8343940Z       ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8343942Z
2026-10-24T10:37:22.8344373Z 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-24T10:37:22.8344379Z
2026-10-24T10:37:22.8344497Z 170   setAsDefaultProtocolClient: (protocol, path, args) =>
2026-10-24T10:37:22.8344546Z       ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8344549Z
2026-10-24T10:37:22.8344909Z 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-24T10:37:22.8344912Z
2026-10-24T10:37:22.8345005Z 177   setDesktopName: (desktopName) =>
2026-10-24T10:37:22.8345079Z       ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8345082Z
2026-10-24T10:37:22.8345510Z 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-24T10:37:22.8345513Z
2026-10-24T10:37:22.8345565Z 184   setDockIcon: (iconPath) =>
2026-10-24T10:37:22.8345609Z       ~~~~~~~~~~~
2026-10-24T10:37:22.8345611Z
2026-10-24T10:37:22.8346120Z 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-24T10:37:22.8346123Z
2026-10-24T10:37:22.8346245Z 188   appendCommandLineSwitch: (switchName, value) =>
2026-10-24T10:37:22.8346323Z       ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8346326Z
2026-10-24T10:37:22.8346760Z 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-24T10:37:22.8346763Z
2026-10-24T10:37:22.8346823Z 196   onBeforeQuitForUpdate: (listener) =>
2026-10-24T10:37:22.8346870Z       ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8346873Z
2026-10-24T10:37:22.8347197Z 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-24T10:37:22.8347201Z
2026-10-24T10:37:22.8347269Z 206   removeCommandLineSwitch: (switchName) =>
2026-10-24T10:37:22.8347316Z       ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8347318Z
2026-10-24T10:37:22.8347642Z 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-24T10:37:22.8347646Z
2026-10-24T10:37:22.8347702Z 169   showMessageBox: (options, owner) =>
2026-10-24T10:37:22.8347746Z       ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8347748Z
2026-10-24T10:37:22.8348069Z 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-24T10:37:22.8348115Z
2026-10-24T10:37:22.8348204Z 185   showErrorBox: (title, content) =>
2026-10-24T10:37:22.8348247Z       ~~~~~~~~~~~~
2026-10-24T10:37:22.8348249Z
2026-10-24T10:37:22.8348573Z 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-24T10:37:22.8348575Z
2026-10-24T10:37:22.8348635Z 193     setApplicationMenu: (template) =>
2026-10-24T10:37:22.8348683Z         ~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8348685Z
2026-10-24T10:37:22.8349067Z 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-24T10:37:22.8349069Z
2026-10-24T10:37:22.8349123Z 207     popupTemplate: (input) =>
2026-10-24T10:37:22.8349170Z         ~~~~~~~~~~~~~
2026-10-24T10:37:22.8349172Z
2026-10-24T10:37:22.8349478Z 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-24T10:37:22.8349480Z
2026-10-24T10:37:22.8349535Z 225     showContextMenu: (input) =>
2026-10-24T10:37:22.8349581Z         ~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8349583Z
2026-10-24T10:37:22.8349999Z 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-24T10:37:22.8350002Z
2026-10-24T10:37:22.8350117Z 82   getSystemIdleState: (idleThresholdSeconds) =>
2026-10-24T10:37:22.8350189Z      ~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8350193Z
2026-10-24T10:37:22.8350584Z 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-24T10:37:22.8350588Z
2026-10-24T10:37:22.8350639Z 77     encryptString: (value) =>
2026-10-24T10:37:22.8350686Z        ~~~~~~~~~~~~~
2026-10-24T10:37:22.8350688Z
2026-10-24T10:37:22.8351216Z 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-24T10:37:22.8351219Z
2026-10-24T10:37:22.8351271Z 82     decryptString: (value) =>
2026-10-24T10:37:22.8351315Z        ~~~~~~~~~~~~~
2026-10-24T10:37:22.8351317Z
2026-10-24T10:37:22.8351616Z 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-24T10:37:22.8351620Z
2026-10-24T10:37:22.8351674Z 68   openExternal: (rawUrl) =>
2026-10-24T10:37:22.8351717Z      ~~~~~~~~~~~~
2026-10-24T10:37:22.8351719Z
2026-10-24T10:37:22.8352030Z 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-24T10:37:22.8352032Z
2026-10-24T10:37:22.8352091Z 79   openSystemSettings: (pane) =>
2026-10-24T10:37:22.8352135Z      ~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8352137Z
2026-10-24T10:37:22.8352426Z 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-24T10:37:22.8352428Z
2026-10-24T10:37:22.8352478Z 86   copyText: (text) =>
2026-10-24T10:37:22.8352522Z      ~~~~~~~~
2026-10-24T10:37:22.8352524Z
2026-10-24T10:37:22.8352816Z 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-24T10:37:22.8352869Z
2026-10-24T10:37:22.8352947Z 34   setSource: (theme) =>
2026-10-24T10:37:22.8352991Z      ~~~~~~~~~
2026-10-24T10:37:22.8352993Z
2026-10-24T10:37:22.8353294Z 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-24T10:37:22.8353297Z
2026-10-24T10:37:22.8353349Z 41   onUpdated: (listener) =>
2026-10-24T10:37:22.8353391Z      ~~~~~~~~~
2026-10-24T10:37:22.8353393Z
2026-10-24T10:37:22.8353727Z 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-24T10:37:22.8353733Z
2026-10-24T10:37:22.8353814Z 85   setFeedURL: (options) =>
2026-10-24T10:37:22.8353877Z      ~~~~~~~~~~
2026-10-24T10:37:22.8353879Z
2026-10-24T10:37:22.8354197Z 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-24T10:37:22.8354199Z
2026-10-24T10:37:22.8354290Z 90   setAutoDownload: (value) =>
2026-10-24T10:37:22.8354361Z      ~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8354364Z
2026-10-24T10:37:22.8354788Z 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-24T10:37:22.8354790Z
2026-10-24T10:37:22.8354850Z 95   setAutoInstallOnAppQuit: (value) =>
2026-10-24T10:37:22.8354896Z      ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8354901Z
2026-10-24T10:37:22.8355285Z 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-24T10:37:22.8355289Z
2026-10-24T10:37:22.8355371Z 100   setChannel: (channel) =>
2026-10-24T10:37:22.8355440Z       ~~~~~~~~~~
2026-10-24T10:37:22.8355443Z
2026-10-24T10:37:22.8355822Z 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-24T10:37:22.8355825Z
2026-10-24T10:37:22.8355878Z 105   setAllowPrerelease: (value) =>
2026-10-24T10:37:22.8355925Z       ~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8355927Z
2026-10-24T10:37:22.8356250Z 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-24T10:37:22.8356254Z
2026-10-24T10:37:22.8356308Z 111   setAllowDowngrade: (value) =>
2026-10-24T10:37:22.8356353Z       ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8356355Z
2026-10-24T10:37:22.8356670Z 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-24T10:37:22.8356674Z
2026-10-24T10:37:22.8356728Z 116   setFullChangelog: (value) =>
2026-10-24T10:37:22.8356773Z       ~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8356775Z
2026-10-24T10:37:22.8357122Z 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-24T10:37:22.8357125Z
2026-10-24T10:37:22.8357197Z 121   setDisableDifferentialDownload: (value) =>
2026-10-24T10:37:22.8357314Z       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8357318Z
2026-10-24T10:37:22.8357633Z 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-24T10:37:22.8357636Z
2026-10-24T10:37:22.8357712Z 140   quitAndInstall: ({ isSilent, isForceRunAfter }) =>
2026-10-24T10:37:22.8357758Z       ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8357761Z
2026-10-24T10:37:22.8358087Z 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-24T10:37:22.8358090Z
2026-10-24T10:37:22.8358172Z 154   on: (eventName, listener) => {
2026-10-24T10:37:22.8358239Z       ~~
2026-10-24T10:37:22.8358242Z
2026-10-24T10:37:22.8358538Z 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-24T10:37:22.8358542Z
2026-10-24T10:37:22.8358592Z 211     create: (options) => {
2026-10-24T10:37:22.8358634Z         ~~~~~~
2026-10-24T10:37:22.8358636Z
2026-10-24T10:37:22.8358985Z 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-24T10:37:22.8358988Z
2026-10-24T10:37:22.8359146Z 243     setMain: (window) => Ref.set(mainWindowRef, Option.some(window)),
2026-10-24T10:37:22.8359217Z         ~~~~~~~
2026-10-24T10:37:22.8359220Z
2026-10-24T10:37:22.8359537Z 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-24T10:37:22.8359543Z
2026-10-24T10:37:22.8359591Z 244     clearMain: (window) =>
2026-10-24T10:37:22.8359634Z         ~~~~~~~~~
2026-10-24T10:37:22.8359636Z
2026-10-24T10:37:22.8360057Z 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-24T10:37:22.8360060Z
2026-10-24T10:37:22.8360147Z 254     prepareReveal: (window) =>
2026-10-24T10:37:22.8360219Z         ~~~~~~~~~~~~~
2026-10-24T10:37:22.8360223Z
2026-10-24T10:37:22.8360561Z 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-24T10:37:22.8360564Z
2026-10-24T10:37:22.8360614Z 264     reveal: (window) =>
2026-10-24T10:37:22.8360657Z         ~~~~~~
2026-10-24T10:37:22.8360659Z
2026-10-24T10:37:22.8361024Z 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-24T10:37:22.8361028Z
2026-10-24T10:37:22.8361103Z 526     setMainWindowBounds: (bounds, isMaximized) =>
2026-10-24T10:37:22.8361147Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8361149Z
2026-10-24T10:37:22.8361490Z 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-24T10:37:22.8361493Z
2026-10-24T10:37:22.8361551Z 538     setServerExposureMode: (mode) =>
2026-10-24T10:37:22.8361598Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8361600Z
2026-10-24T10:37:22.8361931Z 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-24T10:37:22.8361980Z
2026-10-24T10:37:22.8362065Z 542     setTailscaleServe: (input) =>
2026-10-24T10:37:22.8362114Z         ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8362116Z
2026-10-24T10:37:22.8362454Z 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-24T10:37:22.8362457Z
2026-10-24T10:37:22.8362514Z 546     setUpdateChannel: (channel) =>
2026-10-24T10:37:22.8362560Z         ~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8362562Z
2026-10-24T10:37:22.8362983Z 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-24T10:37:22.8362988Z
2026-10-24T10:37:22.8363048Z 550     setWslBackendEnabled: (enabled) =>
2026-10-24T10:37:22.8363094Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8363096Z
2026-10-24T10:37:22.8363423Z 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-24T10:37:22.8363425Z
2026-10-24T10:37:22.8363514Z 554     setWslDistro: (distro) =>
2026-10-24T10:37:22.8363585Z         ~~~~~~~~~~~~
2026-10-24T10:37:22.8363588Z
2026-10-24T10:37:22.8363995Z 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-24T10:37:22.8363998Z
2026-10-24T10:37:22.8364049Z 560     setWslOnly: (enabled) =>
2026-10-24T10:37:22.8364092Z         ~~~~~~~~~~
2026-10-24T10:37:22.8364094Z
2026-10-24T10:37:22.8364599Z 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-24T10:37:22.8364603Z
2026-10-24T10:37:22.8364711Z 564     setLocalEnvironmentEnabled: (enabled) =>
2026-10-24T10:37:22.8364761Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8364764Z
2026-10-24T10:37:22.8365126Z 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-24T10:37:22.8365129Z
2026-10-24T10:37:22.8365205Z 599         setMainWindowBounds: (bounds, isMaximized) =>
2026-10-24T10:37:22.8365251Z             ~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8365253Z
2026-10-24T10:37:22.8365592Z 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-24T10:37:22.8365596Z
2026-10-24T10:37:22.8365657Z 601         setServerExposureMode: (mode) =>
2026-10-24T10:37:22.8365704Z             ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8365707Z
2026-10-24T10:37:22.8366041Z 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-24T10:37:22.8366043Z
2026-10-24T10:37:22.8366177Z 603         setTailscaleServe: (input) => update((settings) => setTailscaleServe(settings, input)),
2026-10-24T10:37:22.8366222Z             ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8366224Z
2026-10-24T10:37:22.8366559Z 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-24T10:37:22.8366607Z
2026-10-24T10:37:22.8366773Z 604         setUpdateChannel: (channel) => update((settings) => setUpdateChannel(settings, channel)),
2026-10-24T10:37:22.8366821Z             ~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8366823Z
2026-10-24T10:37:22.8367167Z 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-24T10:37:22.8367169Z
2026-10-24T10:37:22.8367232Z 605         setWslBackendEnabled: (enabled) =>
2026-10-24T10:37:22.8367281Z             ~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8367283Z
2026-10-24T10:37:22.8367690Z 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-24T10:37:22.8367694Z
2026-10-24T10:37:22.8367814Z 607         setWslDistro: (distro) => update((settings) => setWslDistro(settings, distro)),
2026-10-24T10:37:22.8367858Z             ~~~~~~~~~~~~
2026-10-24T10:37:22.8367860Z
2026-10-24T10:37:22.8368220Z 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-24T10:37:22.8368223Z
2026-10-24T10:37:22.8368405Z 608         setWslOnly: (enabled) => update((settings) => setWslOnly(settings, enabled)),
2026-10-24T10:37:22.8368476Z             ~~~~~~~~~~
2026-10-24T10:37:22.8368479Z
2026-10-24T10:37:22.8368845Z 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-24T10:37:22.8368849Z
2026-10-24T10:37:22.8368918Z 609         setLocalEnvironmentEnabled: (enabled) =>
2026-10-24T10:37:22.8368972Z             ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8368975Z
2026-10-24T10:37:22.8369483Z 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-24T10:37:22.8369489Z
2026-10-24T10:37:22.8369547Z 197     set: (settings) =>
2026-10-24T10:37:22.8369589Z         ~~~
2026-10-24T10:37:22.8369591Z
2026-10-24T10:37:22.8369909Z 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-24T10:37:22.8369912Z
2026-10-24T10:37:22.8370008Z 231         set: (settings) => Ref.set(settingsRef, Option.some(settings)),
2026-10-24T10:37:22.8370051Z             ~~~
2026-10-24T10:37:22.8370054Z
2026-10-24T10:37:22.8370432Z 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-24T10:37:22.8370434Z
2026-10-24T10:37:22.8370510Z 1729     setAnimationDestination: (id, destination) =>
2026-10-24T10:37:22.8370559Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8370561Z
2026-10-24T10:37:22.8370878Z 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-24T10:37:22.8370880Z
2026-10-24T10:37:22.8370934Z 1740     dismissAnimation: (id) =>
2026-10-24T10:37:22.8370981Z          ~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8370983Z
2026-10-24T10:37:22.8371286Z 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-24T10:37:22.8371335Z
2026-10-24T10:37:22.8371414Z 1745     acknowledge: (id) =>
2026-10-24T10:37:22.8371462Z          ~~~~~~~~~~~
2026-10-24T10:37:22.8371465Z
2026-10-24T10:37:22.8371795Z 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-24T10:37:22.8371798Z
2026-10-24T10:37:22.8371850Z 136     discoverHosts: (input) =>
2026-10-24T10:37:22.8371893Z         ~~~~~~~~~~~~~
2026-10-24T10:37:22.8371895Z
2026-10-24T10:37:22.8372271Z 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-24T10:37:22.8372277Z
2026-10-24T10:37:22.8372348Z 141     resolveHost: (alias) =>
2026-10-24T10:37:22.8372393Z         ~~~~~~~~~~~
2026-10-24T10:37:22.8372395Z
2026-10-24T10:37:22.8372758Z 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-24T10:37:22.8372801Z
2026-10-24T10:37:22.8372915Z 146     ensureEnvironment: (target, ensureOptions) =>
2026-10-24T10:37:22.8372989Z         ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8372992Z
2026-10-24T10:37:22.8373376Z 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-24T10:37:22.8373379Z
2026-10-24T10:37:22.8373440Z 154     disconnectEnvironment: (target) =>
2026-10-24T10:37:22.8373487Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8373490Z
2026-10-24T10:37:22.8373971Z 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-24T10:37:22.8373974Z
2026-10-24T10:37:22.8374160Z 1171     installPrepared: (expectedVersion) => installWithExpectedVersion(expectedVersion),
2026-10-24T10:37:22.8374206Z          ~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8374208Z
2026-10-24T10:37:22.8374518Z 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-24T10:37:22.8374520Z
2026-10-24T10:37:22.8374574Z 1101       preWarm: () => Effect.void,
2026-10-24T10:37:22.8374616Z            ~~~~~~~
2026-10-24T10:37:22.8374618Z
2026-10-24T10:37:22.8374974Z 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-24T10:37:22.8374976Z
2026-10-24T10:37:22.8375047Z 1102       windowsToWslPath: (distro, windowsPath) =>
2026-10-24T10:37:22.8375093Z            ~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8375095Z
2026-10-24T10:37:22.8375420Z 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-24T10:37:22.8375425Z
2026-10-24T10:37:22.8375570Z 1104       getUserHome: (distro) => Effect.succeed(stub.getUserHome?.(distro) ?? Option.none<string>()),
2026-10-24T10:37:22.8375617Z            ~~~~~~~~~~~
2026-10-24T10:37:22.8375619Z
2026-10-24T10:37:22.8375946Z 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-24T10:37:22.8375994Z
2026-10-24T10:37:22.8376167Z 1105       getDistroIp: (distro) => Effect.succeed(stub.getDistroIp?.(distro) ?? Option.none<string>()),
2026-10-24T10:37:22.8376211Z            ~~~~~~~~~~~
2026-10-24T10:37:22.8376213Z
2026-10-24T10:37:22.8376563Z 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-24T10:37:22.8376565Z
2026-10-24T10:37:22.8376629Z 1106       prepareRuntime: (distro, archive) =>
2026-10-24T10:37:22.8376675Z            ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8376677Z
2026-10-24T10:37:22.8377109Z 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-24T10:37:22.8377114Z
2026-10-24T10:37:22.8377251Z 1113       pruneRuntimes: (distro, runtimeId) => stub.pruneRuntimes?.(distro, runtimeId) ?? Effect.void,
2026-10-24T10:37:22.8377298Z            ~~~~~~~~~~~~~
2026-10-24T10:37:22.8377300Z
2026-10-24T10:37:22.8377701Z 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-24T10:37:22.8377704Z
2026-10-24T10:37:22.8377812Z 1114       invalidateRuntime: (distro, runtimeId) =>
2026-10-24T10:37:22.8377885Z            ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8377888Z
2026-10-24T10:37:22.8378275Z 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-24T10:37:22.8378282Z
2026-10-24T10:37:22.8378346Z 1116       probeRuntime: (distro, linuxAppRoot) =>
2026-10-24T10:37:22.8378393Z            ~~~~~~~~~~~~
2026-10-24T10:37:22.8378395Z
2026-10-24T10:37:22.8378946Z 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-24T10:37:22.8378950Z
2026-10-24T10:37:22.8379047Z 1120       ensureNodePty: (distro, linuxAppRoot, options) =>
2026-10-24T10:37:22.8379091Z            ~~~~~~~~~~~~~
2026-10-24T10:37:22.8379093Z
2026-10-24T10:37:22.8379412Z 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-24T10:37:22.8379416Z
2026-10-24T10:37:22.8379470Z 1187       preWarm: (distro) =>
2026-10-24T10:37:22.8379514Z            ~~~~~~~
2026-10-24T10:37:22.8379517Z
2026-10-24T10:37:22.8379862Z 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-24T10:37:22.8379864Z
2026-10-24T10:37:22.8379927Z 1192       prepareRuntime: (distro, archive) =>
2026-10-24T10:37:22.8379979Z            ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8379981Z
2026-10-24T10:37:22.8380347Z 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-24T10:37:22.8380349Z
2026-10-24T10:37:22.8380445Z 1196       pruneRuntimes: (distro, runtimeId) =>
2026-10-24T10:37:22.8380492Z            ~~~~~~~~~~~~~
2026-10-24T10:37:22.8380541Z
2026-10-24T10:37:22.8381140Z 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-24T10:37:22.8381143Z
2026-10-24T10:37:22.8381252Z 1200       invalidateRuntime: (distro, runtimeId) =>
2026-10-24T10:37:22.8381329Z            ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8381332Z
2026-10-24T10:37:22.8381928Z 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-24T10:37:22.8381931Z
2026-10-24T10:37:22.8382037Z 1204       probeRuntime: (distro, linuxAppRoot) =>
2026-10-24T10:37:22.8382108Z            ~~~~~~~~~~~~
2026-10-24T10:37:22.8382111Z
2026-10-24T10:37:22.8382918Z 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-24T10:37:22.8382924Z
2026-10-24T10:37:22.8383050Z 1208       ensureNodePty: (distro, linuxAppRoot, options) =>
2026-10-24T10:37:22.8383124Z            ~~~~~~~~~~~~~
2026-10-24T10:37:22.8383127Z
2026-10-24T10:37:22.8383130Z
2026-10-24T10:37:22.8383793Z 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-24T10:37:22.8383796Z
2026-10-24T10:37:22.8383880Z 820     clear: (environmentId) =>
2026-10-24T10:37:22.8383951Z         ~~~~~
2026-10-24T10:37:22.8383954Z
2026-10-24T10:37:22.8384488Z 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-24T10:37:22.8384494Z
2026-10-24T10:37:22.8384636Z 830     observe: ({ environmentId, environmentLabel, method }) =>
2026-10-24T10:37:22.8384707Z         ~~~~~~~
2026-10-24T10:37:22.8384710Z
2026-10-24T10:37:22.8385215Z src/connection/storage.ts:549:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubRoutingPermissions.get")((entry) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8385218Z
2026-10-24T10:37:22.8385297Z 549     get: (entry) =>
2026-10-24T10:37:22.8385368Z         ~~~
2026-10-24T10:37:22.8385371Z
2026-10-24T10:37:22.8385906Z src/connection/storage.ts:576:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubRoutingPermissions.set")((entry, permission) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8385910Z
2026-10-24T10:37:22.8386001Z 576     set: (entry, permission) => {
2026-10-24T10:37:22.8386069Z         ~~~
2026-10-24T10:37:22.8386072Z
2026-10-24T10:37:22.8386476Z src/connection/storage.ts:596:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubRoutingPermissions.forget")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8386479Z
2026-10-24T10:37:22.8386566Z 596     forget: (environmentId) => write(environmentId, null),
2026-10-24T10:37:22.8386610Z         ~~~~~~
2026-10-24T10:37:22.8386612Z
2026-10-24T10:37:22.8386973Z src/connection/storage.ts:643:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.ConnectionRegistrationStore.register")((registration, routes) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8386978Z
2026-10-24T10:37:22.8387038Z 643       register: (registration, routes) =>
2026-10-24T10:37:22.8387083Z           ~~~~~~~~
2026-10-24T10:37:22.8387085Z
2026-10-24T10:37:22.8387542Z src/connection/storage.ts:647:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.ConnectionRegistrationStore.setRoutes")((environmentId, routes) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8387544Z
2026-10-24T10:37:22.8387607Z 647       setRoutes: (environmentId, routes) =>
2026-10-24T10:37:22.8387649Z           ~~~~~~~~~
2026-10-24T10:37:22.8387651Z
2026-10-24T10:37:22.8388041Z src/connection/storage.ts:651:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.ConnectionRegistrationStore.remove")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8388045Z
2026-10-24T10:37:22.8388133Z 651       remove: (environmentId) =>
2026-10-24T10:37:22.8388177Z           ~~~~~~
2026-10-24T10:37:22.8388179Z
2026-10-24T10:37:22.8388552Z src/connection/storage.ts:655:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.ConnectionRegistrationStore.setEnabled")((environmentId, enabled) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8388556Z
2026-10-24T10:37:22.8388620Z 655       setEnabled: (environmentId, enabled) =>
2026-10-24T10:37:22.8388665Z           ~~~~~~~~~~
2026-10-24T10:37:22.8388667Z
2026-10-24T10:37:22.8389049Z src/connection/storage.ts:732:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.loadShell")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8389051Z
2026-10-24T10:37:22.8389142Z 732       loadShell: (environmentId) =>
2026-10-24T10:37:22.8389214Z           ~~~~~~~~~
2026-10-24T10:37:22.8389217Z
2026-10-24T10:37:22.8389618Z src/connection/storage.ts:768:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.loadServerConfig")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8389622Z
2026-10-24T10:37:22.8389686Z 768       loadServerConfig: (environmentId) =>
2026-10-24T10:37:22.8389735Z           ~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8389737Z
2026-10-24T10:37:22.8390306Z src/connection/storage.ts:802:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.loadThread")((environmentId, threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8390310Z
2026-10-24T10:37:22.8390631Z 802       loadThread: (environmentId, threadId) =>
2026-10-24T10:37:22.8390688Z           ~~~~~~~~~~
2026-10-24T10:37:22.8390692Z
2026-10-24T10:37:22.8391089Z src/connection/storage.ts:851:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.loadVcsRefs")((environmentId, cwd) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8391092Z
2026-10-24T10:37:22.8391163Z 851       loadVcsRefs: (environmentId, cwd) =>
2026-10-24T10:37:22.8391222Z           ~~~~~~~~~~~
2026-10-24T10:37:22.8391225Z
2026-10-24T10:37:22.8391592Z src/connection/storage.ts:893:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.removeVcsRefs")((environmentId, cwd) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8391600Z
2026-10-24T10:37:22.8391669Z 893       removeVcsRefs: (environmentId, cwd) =>
2026-10-24T10:37:22.8391716Z           ~~~~~~~~~~~~~
2026-10-24T10:37:22.8391719Z
2026-10-24T10:37:22.8392070Z src/connection/storage.ts:899:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.clearVcsRefs")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8392072Z
2026-10-24T10:37:22.8392133Z 899       clearVcsRefs: (environmentId) =>
2026-10-24T10:37:22.8392176Z           ~~~~~~~~~~~~
2026-10-24T10:37:22.8392334Z
2026-10-24T10:37:22.8392704Z src/connection/storage.ts:905:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.removeThread")((environmentId, threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8392706Z
2026-10-24T10:37:22.8392778Z 905       removeThread: (environmentId, threadId) =>
2026-10-24T10:37:22.8392822Z           ~~~~~~~~~~~~
2026-10-24T10:37:22.8392827Z
2026-10-24T10:37:22.8393167Z src/connection/storage.ts:911:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.clear")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8393170Z
2026-10-24T10:37:22.8393223Z 911       clear: (environmentId) =>
2026-10-24T10:37:22.8393268Z           ~~~~~
2026-10-24T10:37:22.8393270Z
2026-10-24T10:37:22.8393272Z
2026-10-24T10:37:22.8393328Z ~/apps/server$ tsc --noEmit
2026-10-24T10:37:22.8393596Z 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-24T10:37:22.8393601Z
2026-10-24T10:37:22.8393664Z 941         yield* Effect.sleep("1200 millis")
2026-10-24T10:37:22.8393716Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8393763Z 942           .pipe(
2026-10-24T10:37:22.8393807Z     ~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8393902Z ...
2026-10-24T10:37:22.8393946Z 954           )
2026-10-24T10:37:22.8393989Z     ~~~~~~~~~~~
2026-10-24T10:37:22.8394049Z 955           .pipe(Effect.forkDetach);
2026-10-24T10:37:22.8394096Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8394099Z
2026-10-24T10:37:22.8394426Z 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-24T10:37:22.8394429Z
2026-10-24T10:37:22.8394483Z 1175     logger: (event) => {
2026-10-24T10:37:22.8394526Z          ~~~~~~
2026-10-24T10:37:22.8394529Z
2026-10-24T10:37:22.8394977Z 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-24T10:37:22.8394982Z
2026-10-24T10:37:22.8395095Z 376 const DEFAULT_GROK_SETTINGS = Schema.decodeUnknownSync(GrokSettings)({});
2026-10-24T10:37:22.8395157Z                                          ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8395160Z
2026-10-24T10:37:22.8395470Z 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-24T10:37:22.8395472Z
2026-10-24T10:37:22.8395525Z 1346     getDescriptor: () =>
2026-10-24T10:37:22.8395573Z          ~~~~~~~~~~~~~
2026-10-24T10:37:22.8395576Z
2026-10-24T10:37:22.8395906Z 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-24T10:37:22.8395911Z
2026-10-24T10:37:22.8395960Z 55     getDescriptor: () =>
2026-10-24T10:37:22.8396005Z        ~~~~~~~~~~~~~
2026-10-24T10:37:22.8396008Z
2026-10-24T10:37:22.8396357Z 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-24T10:37:22.8396360Z
2026-10-24T10:37:22.8396414Z 540       authenticate: (request) =>
2026-10-24T10:37:22.8396455Z           ~~~~~~~~~~~~
2026-10-24T10:37:22.8396458Z
2026-10-24T10:37:22.8396718Z 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-24T10:37:22.8396780Z
2026-10-24T10:37:22.8396838Z 468         : Effect.succeed(undefined),
2026-10-24T10:37:22.8396887Z               ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8396890Z
2026-10-24T10:37:22.8397190Z 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-24T10:37:22.8397192Z
2026-10-24T10:37:22.8397246Z 328       HttpClientError: (cause) =>
2026-10-24T10:37:22.8397293Z           ~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8397295Z
2026-10-24T10:37:22.8397546Z src/cloud/CloudLink.lifecycle.test.ts:166:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8397549Z
2026-10-24T10:37:22.8397618Z 166             latest: Effect.succeed(Option.none()),
2026-10-24T10:37:22.8397667Z                         ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8397670Z
2026-10-24T10:37:22.8397898Z src/cloud/CloudLink.test.ts:99:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8397901Z
2026-10-24T10:37:22.8397966Z 99         latest: Effect.succeed(Option.none()),
2026-10-24T10:37:22.8398056Z                    ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8398059Z
2026-10-24T10:37:22.8398422Z 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-24T10:37:22.8398425Z
2026-10-24T10:37:22.8398559Z 791     requestRecovery: (config) => Queue.offer(recoveryRequests, config).pipe(Effect.asVoid),
2026-10-24T10:37:22.8398607Z         ~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8398609Z
2026-10-24T10:37:22.8398827Z src/cloud/http.test.ts:81:67 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8398830Z
2026-10-24T10:37:22.8398987Z 81     Layer.mock(ConnectReachability.ConnectReachability)({ latest: Effect.succeed(Option.none()) }),
2026-10-24T10:37:22.8399062Z                                                                      ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8399066Z
2026-10-24T10:37:22.8399422Z 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-24T10:37:22.8399424Z
2026-10-24T10:37:22.8399514Z 371     commitDesktopUpdate: (requestId, onHandoffAccepted) =>
2026-10-24T10:37:22.8399561Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8399563Z
2026-10-24T10:37:22.8399862Z 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-24T10:37:22.8399866Z
2026-10-24T10:37:22.8399918Z 808       updateTool: (tool) =>
2026-10-24T10:37:22.8399960Z           ~~~~~~~~~~
2026-10-24T10:37:22.8399963Z
2026-10-24T10:37:22.8400297Z 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-24T10:37:22.8400300Z
2026-10-24T10:37:22.8400348Z 823       easAccount: () =>
2026-10-24T10:37:22.8400392Z           ~~~~~~~~~~
2026-10-24T10:37:22.8400394Z
2026-10-24T10:37:22.8400721Z 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-24T10:37:22.8400773Z
2026-10-24T10:37:22.8400828Z 868     ensureAgentReady: (onPhase) =>
2026-10-24T10:37:22.8400875Z         ~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8400877Z
2026-10-24T10:37:22.8401110Z src/device/easProjectId.ts:201:7 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T10:37:22.8401112Z
2026-10-24T10:37:22.8401172Z 201       Effect.map(Option.some),
2026-10-24T10:37:22.8401218Z           ~~~~~~~~~~
2026-10-24T10:37:22.8401220Z
2026-10-24T10:37:22.8401524Z 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-24T10:37:22.8401526Z
2026-10-24T10:37:22.8401606Z 141   return DirectEndpoints.of({ resolve: () => resolve });
2026-10-24T10:37:22.8401655Z                                   ~~~~~~~
2026-10-24T10:37:22.8401657Z
2026-10-24T10:37:22.8401966Z 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-24T10:37:22.8401971Z
2026-10-24T10:37:22.8402070Z 83   return RemoteOpenTargets.of({ resolveTargets: () => resolveTargets });
2026-10-24T10:37:22.8402125Z                                    ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8402127Z
2026-10-24T10:37:22.8402463Z 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-24T10:37:22.8402466Z
2026-10-24T10:37:22.8402517Z 302     isRepository: (cwd) =>
2026-10-24T10:37:22.8402559Z         ~~~~~~~~~~~~
2026-10-24T10:37:22.8402561Z
2026-10-24T10:37:22.8402852Z 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-24T10:37:22.8402857Z
2026-10-24T10:37:22.8402907Z 315     hasCommit: (input) =>
2026-10-24T10:37:22.8402948Z         ~~~~~~~~~
2026-10-24T10:37:22.8402950Z
2026-10-24T10:37:22.8403247Z 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-24T10:37:22.8403250Z
2026-10-24T10:37:22.8403301Z 327     hasRefNamed: (input) =>
2026-10-24T10:37:22.8403340Z         ~~~~~~~~~~~
2026-10-24T10:37:22.8403342Z
2026-10-24T10:37:22.8403634Z 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-24T10:37:22.8403636Z
2026-10-24T10:37:22.8403686Z 346     status: (input) =>
2026-10-24T10:37:22.8403731Z         ~~~~~~
2026-10-24T10:37:22.8403734Z
2026-10-24T10:37:22.8404029Z 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-24T10:37:22.8404034Z
2026-10-24T10:37:22.8404083Z 352     localStatus: (input) =>
2026-10-24T10:37:22.8404126Z         ~~~~~~~~~~~
2026-10-24T10:37:22.8404128Z
2026-10-24T10:37:22.8404444Z 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-24T10:37:22.8404446Z
2026-10-24T10:37:22.8404502Z 360     remoteStatus: (input, options) =>
2026-10-24T10:37:22.8404542Z         ~~~~~~~~~~~~
2026-10-24T10:37:22.8404544Z
2026-10-24T10:37:22.8404850Z 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-24T10:37:22.8404906Z
2026-10-24T10:37:22.8404959Z 369     pullCurrentBranch: (cwd) =>
2026-10-24T10:37:22.8405004Z         ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8405006Z
2026-10-24T10:37:22.8405326Z 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-24T10:37:22.8405329Z
2026-10-24T10:37:22.8405387Z 373     runStackedAction: (input, options) =>
2026-10-24T10:37:22.8405431Z         ~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8405433Z
2026-10-24T10:37:22.8405756Z 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-24T10:37:22.8405759Z
2026-10-24T10:37:22.8405823Z 388     preparePullRequestThread: (input) =>
2026-10-24T10:37:22.8405872Z         ~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8405875Z
2026-10-24T10:37:22.8406161Z 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-24T10:37:22.8406163Z
2026-10-24T10:37:22.8406255Z 399     listRefs: (input) =>
2026-10-24T10:37:22.8406298Z         ~~~~~~~~
2026-10-24T10:37:22.8406300Z
2026-10-24T10:37:22.8406613Z 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-24T10:37:22.8406616Z
2026-10-24T10:37:22.8406675Z 405     createWorktree: (input, options) =>
2026-10-24T10:37:22.8406717Z         ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8406722Z
2026-10-24T10:37:22.8407037Z 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-24T10:37:22.8407040Z
2026-10-24T10:37:22.8407095Z 409     listLocalBranchNames: (cwd) =>
2026-10-24T10:37:22.8407140Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8407142Z
2026-10-24T10:37:22.8407437Z 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-24T10:37:22.8407443Z
2026-10-24T10:37:22.8407489Z 413     fetchRemote: (input) =>
2026-10-24T10:37:22.8407530Z         ~~~~~~~~~~~
2026-10-24T10:37:22.8407532Z
2026-10-24T10:37:22.8407829Z 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-24T10:37:22.8407833Z
2026-10-24T10:37:22.8407884Z 417     remoteExists: (input) =>
2026-10-24T10:37:22.8407924Z         ~~~~~~~~~~~~
2026-10-24T10:37:22.8407926Z
2026-10-24T10:37:22.8408239Z 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-24T10:37:22.8408241Z
2026-10-24T10:37:22.8408294Z 421     remoteBranchExists: (input) =>
2026-10-24T10:37:22.8408337Z         ~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8408339Z
2026-10-24T10:37:22.8408664Z 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-24T10:37:22.8408666Z
2026-10-24T10:37:22.8408728Z 425     resolveRemoteTrackingCommit: (input) =>
2026-10-24T10:37:22.8408818Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8408820Z
2026-10-24T10:37:22.8409139Z 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-24T10:37:22.8409142Z
2026-10-24T10:37:22.8409205Z 429     resolveWorktreeBaseRemote: (input) =>
2026-10-24T10:37:22.8409249Z         ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8409253Z
2026-10-24T10:37:22.8409568Z 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-24T10:37:22.8409570Z
2026-10-24T10:37:22.8409630Z 433     fetchWorktreeBaseCommit: (input) =>
2026-10-24T10:37:22.8409674Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8409678Z
2026-10-24T10:37:22.8409980Z 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-24T10:37:22.8409982Z
2026-10-24T10:37:22.8410035Z 437     removeWorktree: (input) =>
2026-10-24T10:37:22.8410080Z         ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8410083Z
2026-10-24T10:37:22.8410451Z 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-24T10:37:22.8410454Z
2026-10-24T10:37:22.8410505Z 441     pruneWorktrees: (input) =>
2026-10-24T10:37:22.8410547Z         ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8410550Z
2026-10-24T10:37:22.8410856Z 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-24T10:37:22.8410862Z
2026-10-24T10:37:22.8410914Z 445     deleteLocalBranch: (input) =>
2026-10-24T10:37:22.8410958Z         ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8410960Z
2026-10-24T10:37:22.8411253Z 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-24T10:37:22.8411256Z
2026-10-24T10:37:22.8411305Z 449     createRef: (input) =>
2026-10-24T10:37:22.8411344Z         ~~~~~~~~~
2026-10-24T10:37:22.8411347Z
2026-10-24T10:37:22.8411641Z 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-24T10:37:22.8411643Z
2026-10-24T10:37:22.8411692Z 457     switchRef: (input) =>
2026-10-24T10:37:22.8411735Z         ~~~~~~~~~
2026-10-24T10:37:22.8411737Z
2026-10-24T10:37:22.8412037Z 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-24T10:37:22.8412039Z
2026-10-24T10:37:22.8412088Z 463     renameBranch: (input) =>
2026-10-24T10:37:22.8412131Z         ~~~~~~~~~~~~
2026-10-24T10:37:22.8412135Z
2026-10-24T10:37:22.8412396Z src/htmlRender/headlessChrome.ts:281:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("receive")((raw) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8412398Z
2026-10-24T10:37:22.8412454Z 281   const receive = (raw: string) => {
2026-10-24T10:37:22.8412492Z             ~~~~~~~
2026-10-24T10:37:22.8412494Z
2026-10-24T10:37:22.8412864Z 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-24T10:37:22.8412916Z
2026-10-24T10:37:22.8412960Z 284       try {
2026-10-24T10:37:22.8413000Z           ~~~~~
2026-10-24T10:37:22.8413053Z 285         parsed = JSON.parse(line);
2026-10-24T10:37:22.8413097Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8413136Z ...
2026-10-24T10:37:22.8413242Z 287         return yield* respondWithError(null, "Parse error", -32700);
2026-10-24T10:37:22.8413308Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8413349Z 288       }
2026-10-24T10:37:22.8413394Z     ~~~~~~~
2026-10-24T10:37:22.8413396Z
2026-10-24T10:37:22.8413670Z 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-24T10:37:22.8413675Z
2026-10-24T10:37:22.8413737Z 324       Effect.catchCause(() => Effect.void),
2026-10-24T10:37:22.8413779Z           ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8413781Z
2026-10-24T10:37:22.8414011Z src/mcp/McpDeviceToolkit.test.ts:105:18 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8414013Z
2026-10-24T10:37:22.8414080Z 105   getById: () => Effect.succeed(Option.none()),
2026-10-24T10:37:22.8414165Z                      ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8414168Z
2026-10-24T10:37:22.8414449Z 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-24T10:37:22.8414454Z
2026-10-24T10:37:22.8414546Z 421 const previewSnapshotFailure = <E>(cause: Cause.Cause<E>) => {
2026-10-24T10:37:22.8414592Z           ~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8414595Z
2026-10-24T10:37:22.8414882Z src/mcp/McpHttpServer.ts:933:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("McpServer.McpServer.addTool")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8414884Z
2026-10-24T10:37:22.8414935Z 933       addTool: (options) =>
2026-10-24T10:37:22.8414974Z           ~~~~~~~
2026-10-24T10:37:22.8414976Z
2026-10-24T10:37:22.8415256Z 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-24T10:37:22.8415259Z
2026-10-24T10:37:22.8415321Z 22     resolve: () => Effect.succeed(undefined),
2026-10-24T10:37:22.8415373Z                       ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8415375Z
2026-10-24T10:37:22.8415659Z 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-24T10:37:22.8415663Z
2026-10-24T10:37:22.8415720Z 112       Effect.flatMap(() => writingCaller),
2026-10-24T10:37:22.8415764Z           ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8415766Z
2026-10-24T10:37:22.8416271Z 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-24T10:37:22.8416273Z
2026-10-24T10:37:22.8416348Z 2465       const cancelOrphan = Effect.gen(function* () {
2026-10-24T10:37:22.8416404Z                                            ~~~~~~~~~
2026-10-24T10:37:22.8416407Z
2026-10-24T10:37:22.8416639Z   src/mcp/OrchestratorMcpService.ts:2480:17 - This repeated `Effect.mapError(...)` site participates in the hoistable generator-wide mapping. effect(redundantMapError)
2026-10-24T10:37:22.8416766Z     2480           .pipe(Effect.mapError(threadManagementFailure));
2026-10-24T10:37:22.8416814Z                          ~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8416816Z
2026-10-24T10:37:22.8417043Z   src/mcp/OrchestratorMcpService.ts:2483:17 - This repeated `Effect.mapError(...)` site participates in the hoistable generator-wide mapping. effect(redundantMapError)
2026-10-24T10:37:22.8417124Z     2483           .pipe(Effect.mapError(threadManagementFailure));
2026-10-24T10:37:22.8417169Z                          ~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8417171Z
2026-10-24T10:37:22.8417446Z 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-24T10:37:22.8417448Z
2026-10-24T10:37:22.8417494Z 651         onNone: () =>
2026-10-24T10:37:22.8417536Z             ~~~~~~
2026-10-24T10:37:22.8417538Z
2026-10-24T10:37:22.8417739Z src/mcp/WorktreeMcpService.test.ts:355:3 - suggestion TS377017: This Effect.gen contains a single return statement. effect(unnecessaryEffectGen)
2026-10-24T10:37:22.8417741Z
2026-10-24T10:37:22.8417791Z 355   Effect.gen(function* () {
2026-10-24T10:37:22.8417835Z       ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8417921Z 356     return yield* WorktreeMcpService.WorktreeMcpService;
2026-10-24T10:37:22.8418027Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8418089Z 357   }).pipe(Effect.provide(harness.layer));
2026-10-24T10:37:22.8418131Z     ~~~~
2026-10-24T10:37:22.8418133Z
2026-10-24T10:37:22.8418405Z src/mcp/toolkits/pullRequests/handlers.ts:222:27 - suggestion TS377015: This expression contains chained `pipe` calls that can be simplified to a single `pipe` call. effect(unnecessaryPipeChain)
2026-10-24T10:37:22.8418407Z
2026-10-24T10:37:22.8418459Z 222     const thread = yield* engine
2026-10-24T10:37:22.8418503Z                               ~~~~~~
2026-10-24T10:37:22.8418557Z 223       .getThreadShell(threadId)
2026-10-24T10:37:22.8418602Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8418664Z 224       .pipe(Effect.map(Option.fromNullishOr))
2026-10-24T10:37:22.8418718Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8418802Z 225       .pipe(Effect.mapError((cause) => new Failure({ cause })));
2026-10-24T10:37:22.8418872Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8418874Z
2026-10-24T10:37:22.8419162Z 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-24T10:37:22.8419164Z
2026-10-24T10:37:22.8419283Z 96   McpAppModelContext.of({ set: () => Effect.void, forThread: () => Effect.succeed([]) }),
2026-10-24T10:37:22.8419331Z                              ~~~
2026-10-24T10:37:22.8419333Z
2026-10-24T10:37:22.8419631Z 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-24T10:37:22.8419633Z
2026-10-24T10:37:22.8419749Z 96   McpAppModelContext.of({ set: () => Effect.void, forThread: () => Effect.succeed([]) }),
2026-10-24T10:37:22.8419810Z                                                      ~~~~~~~~~
2026-10-24T10:37:22.8419814Z
2026-10-24T10:37:22.8420136Z 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-24T10:37:22.8420139Z
2026-10-24T10:37:22.8420188Z 16     record: (records) =>
2026-10-24T10:37:22.8420231Z        ~~~~~~
2026-10-24T10:37:22.8420233Z
2026-10-24T10:37:22.8420535Z 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-24T10:37:22.8420581Z
2026-10-24T10:37:22.8420684Z 41   defaultValue: () => ({ latestNoticeableStall: Effect.succeed(undefined) }),
2026-10-24T10:37:22.8420748Z                                                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8420751Z
2026-10-24T10:37:22.8421202Z 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-24T10:37:22.8421205Z
2026-10-24T10:37:22.8421308Z 30 const REPLAY_SETTINGS = Schema.decodeUnknownSync(AcpRegistrySettings)({
2026-10-24T10:37:22.8421361Z                                   ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8421363Z
2026-10-24T10:37:22.8421672Z 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-24T10:37:22.8421676Z
2026-10-24T10:37:22.8421734Z 48   defaultModel: Effect.succeed(undefined),
2026-10-24T10:37:22.8421784Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8421786Z
2026-10-24T10:37:22.8422134Z 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-24T10:37:22.8422136Z
2026-10-24T10:37:22.8422201Z 169         defaultModel: Effect.succeed(undefined),
2026-10-24T10:37:22.8422272Z                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8422275Z
2026-10-24T10:37:22.8422651Z 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-24T10:37:22.8422655Z
2026-10-24T10:37:22.8422721Z 306         defaultModel: Effect.succeed(undefined),
2026-10-24T10:37:22.8422773Z                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8422775Z
2026-10-24T10:37:22.8423081Z 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-24T10:37:22.8423083Z
2026-10-24T10:37:22.8423146Z 542         defaultModel: Effect.succeed(undefined),
2026-10-24T10:37:22.8423194Z                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8423197Z
2026-10-24T10:37:22.8423540Z 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-24T10:37:22.8423547Z
2026-10-24T10:37:22.8423609Z 974       const controller = new AbortController();
2026-10-24T10:37:22.8423661Z                              ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8423663Z
2026-10-24T10:37:22.8423956Z 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-24T10:37:22.8423959Z
2026-10-24T10:37:22.8424025Z 1326         const requestEvent = yield* runtime.events
2026-10-24T10:37:22.8424081Z                                          ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8424126Z 1327           .pipe(
2026-10-24T10:37:22.8424169Z      ~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8424208Z  ...
2026-10-24T10:37:22.8424251Z 1330           )
2026-10-24T10:37:22.8424293Z      ~~~~~~~~~~~
2026-10-24T10:37:22.8424347Z 1331           .pipe(Effect.forkScoped);
2026-10-24T10:37:22.8424469Z      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8424471Z
2026-10-24T10:37:22.8424812Z 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-24T10:37:22.8424814Z
2026-10-24T10:37:22.8424884Z 1332         const controller = new AbortController();
2026-10-24T10:37:22.8424941Z                                 ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8424943Z
2026-10-24T10:37:22.8425275Z 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-24T10:37:22.8425277Z
2026-10-24T10:37:22.8425359Z 1355         const cancelledController = new AbortController();
2026-10-24T10:37:22.8425420Z                                          ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8425425Z
2026-10-24T10:37:22.8425788Z src/orchestration-v2/Adapters/ClaudeAdapterV2.ts:4018:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.getCapabilities")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8425791Z
2026-10-24T10:37:22.8425897Z 4018     getCapabilities: () => Effect.succeed(ClaudeProviderCapabilitiesV2),
2026-10-24T10:37:22.8425994Z          ~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8425996Z
2026-10-24T10:37:22.8426376Z src/orchestration-v2/Adapters/ClaudeAdapterV2.ts:4019:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.planSelectionTransition")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8426378Z
2026-10-24T10:37:22.8426499Z 4019     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T10:37:22.8426545Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8426549Z
2026-10-24T10:37:22.8426908Z 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-24T10:37:22.8426911Z
2026-10-24T10:37:22.8426969Z 201         signal: new AbortController().signal,
2026-10-24T10:37:22.8427018Z                     ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8427021Z
2026-10-24T10:37:22.8427416Z 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-24T10:37:22.8427418Z
2026-10-24T10:37:22.8427471Z 74   const pause = Effect.raceFirst(
2026-10-24T10:37:22.8427517Z                    ~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8427521Z
2026-10-24T10:37:22.8427812Z 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-24T10:37:22.8427816Z
2026-10-24T10:37:22.8427921Z 1741     threadId === null ? Effect.succeed(undefined) : mcpSessions.read(threadId);
2026-10-24T10:37:22.8427978Z                              ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8427980Z
2026-10-24T10:37:22.8428341Z 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-24T10:37:22.8428344Z
2026-10-24T10:37:22.8428443Z 1748     getCapabilities: () => Effect.succeed(CodexProviderCapabilitiesV2),
2026-10-24T10:37:22.8428484Z          ~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8428486Z
2026-10-24T10:37:22.8428904Z 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-24T10:37:22.8428906Z
2026-10-24T10:37:22.8429024Z 1749     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T10:37:22.8429072Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8429074Z
2026-10-24T10:37:22.8429398Z 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-24T10:37:22.8429400Z
2026-10-24T10:37:22.8429471Z 3045                   Effect.catch(() => Effect.succeed(null)),
2026-10-24T10:37:22.8429516Z                        ~~~~~~~~~~~~
2026-10-24T10:37:22.8429518Z
2026-10-24T10:37:22.8429889Z 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-24T10:37:22.8429893Z
2026-10-24T10:37:22.8429954Z 3046                   Effect.flatMap((response) =>
2026-10-24T10:37:22.8430001Z                        ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8430004Z
2026-10-24T10:37:22.8430370Z 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-24T10:37:22.8430376Z
2026-10-24T10:37:22.8430439Z 3068                   Effect.catch(() => Effect.void),
2026-10-24T10:37:22.8430486Z                        ~~~~~~~~~~~~
2026-10-24T10:37:22.8430488Z
2026-10-24T10:37:22.8430849Z 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-24T10:37:22.8430853Z
2026-10-24T10:37:22.8430937Z 7268                   return yield* Effect.fail(failedTermination.error);
2026-10-24T10:37:22.8430980Z                               ~~~~~
2026-10-24T10:37:22.8430982Z
2026-10-24T10:37:22.8431418Z 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-24T10:37:22.8431421Z
2026-10-24T10:37:22.8431523Z 33 const DEFAULT_GROK_SETTINGS = Schema.decodeUnknownSync(GrokSettings)({});
2026-10-24T10:37:22.8431581Z                                         ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8431583Z
2026-10-24T10:37:22.8432012Z 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-24T10:37:22.8432016Z
2026-10-24T10:37:22.8432142Z 414 const DEFAULT_MUSE_SETTINGS = Schema.decodeUnknownSync(MuseSettings)({ enabled: true });
2026-10-24T10:37:22.8432199Z                                          ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8432201Z
2026-10-24T10:37:22.8432543Z 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-24T10:37:22.8432545Z
2026-10-24T10:37:22.8432594Z 242       execute: (input) =>
2026-10-24T10:37:22.8432634Z           ~~~~~~~
2026-10-24T10:37:22.8432636Z
2026-10-24T10:37:22.8432900Z src/orchestration-v2/CheckpointRestoreSafety.test.ts:104:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8432945Z
2026-10-24T10:37:22.8433052Z 104             get: () => Effect.succeed(Option.some({ workspaceRoot: parent } as never)),
2026-10-24T10:37:22.8433102Z                            ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8433104Z
2026-10-24T10:37:22.8433457Z 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-24T10:37:22.8433459Z
2026-10-24T10:37:22.8433513Z 41             Effect.catch((error) =>
2026-10-24T10:37:22.8433555Z                ~~~~~~~~~~~~
2026-10-24T10:37:22.8433562Z
2026-10-24T10:37:22.8433906Z 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-24T10:37:22.8433911Z
2026-10-24T10:37:22.8433966Z 83                 Effect.catch((error) =>
2026-10-24T10:37:22.8434010Z                    ~~~~~~~~~~~~
2026-10-24T10:37:22.8434012Z
2026-10-24T10:37:22.8434317Z src/orchestration-v2/CheckpointRollbackService.test.ts:233:22 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8434320Z
2026-10-24T10:37:22.8434418Z 233               return Effect.succeed(Option.some({ workspaceRoot } as never));
2026-10-24T10:37:22.8434465Z                          ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8434468Z
2026-10-24T10:37:22.8434829Z 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-24T10:37:22.8434832Z
2026-10-24T10:37:22.8434898Z 142         const batchAbort = new AbortController();
2026-10-24T10:37:22.8434952Z                                ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8434954Z
2026-10-24T10:37:22.8435328Z 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-24T10:37:22.8435334Z
2026-10-24T10:37:22.8435383Z 168     Effect.flatMap((frame) =>
2026-10-24T10:37:22.8435428Z         ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8435430Z
2026-10-24T10:37:22.8435677Z src/orchestration-v2/CommandReceiptStore.ts:164:29 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8435679Z
2026-10-24T10:37:22.8435750Z 164               onNone: () => Effect.succeed(Option.none()),
2026-10-24T10:37:22.8435801Z                                 ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8435803Z
2026-10-24T10:37:22.8436047Z src/orchestration-v2/CommandReceiptStore.ts:167:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8436049Z
2026-10-24T10:37:22.8436111Z 167                   ? Effect.succeed(Option.none())
2026-10-24T10:37:22.8436159Z                         ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8436161Z
2026-10-24T10:37:22.8436409Z src/orchestration-v2/CommandReceiptStore.ts:168:58 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T10:37:22.8436412Z
2026-10-24T10:37:22.8436512Z 168                   : fromApplicationReceipt(receipt).pipe(Effect.map(Option.some)),
2026-10-24T10:37:22.8436577Z                                                              ~~~~~~~~~~
2026-10-24T10:37:22.8436579Z
2026-10-24T10:37:22.8436864Z src/orchestration-v2/CommandReceiptStore.ts:183:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8436866Z
2026-10-24T10:37:22.8436927Z 183               ? Effect.succeed(Option.none())
2026-10-24T10:37:22.8436974Z                     ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8436977Z
2026-10-24T10:37:22.8437221Z src/orchestration-v2/CommandReceiptStore.ts:192:25 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T10:37:22.8437224Z
2026-10-24T10:37:22.8437287Z 192                 }).pipe(Effect.map(Option.some)),
2026-10-24T10:37:22.8437334Z                             ~~~~~~~~~~
2026-10-24T10:37:22.8437336Z
2026-10-24T10:37:22.8437564Z src/orchestration-v2/EffectOutbox.ts:429:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8437568Z
2026-10-24T10:37:22.8437626Z 429               ? Effect.succeed(Option.none())
2026-10-24T10:37:22.8437672Z                     ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8437674Z
2026-10-24T10:37:22.8437906Z src/orchestration-v2/EffectOutbox.ts:430:39 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T10:37:22.8437909Z
2026-10-24T10:37:22.8438024Z 430               : rowToEffect(row).pipe(Effect.map(Option.some));
2026-10-24T10:37:22.8438079Z                                           ~~~~~~~~~~
2026-10-24T10:37:22.8438081Z
2026-10-24T10:37:22.8438314Z src/orchestration-v2/EffectWorker.test.ts:107:20 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8438318Z
2026-10-24T10:37:22.8438378Z 107         get: () => Effect.succeed(Option.none()),
2026-10-24T10:37:22.8438425Z                        ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8438429Z
2026-10-24T10:37:22.8438663Z src/orchestration-v2/EffectWorker.test.ts:302:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8438666Z
2026-10-24T10:37:22.8438752Z 302       claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T10:37:22.8438798Z                            ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8438800Z
2026-10-24T10:37:22.8439035Z src/orchestration-v2/EffectWorker.test.ts:369:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8439037Z
2026-10-24T10:37:22.8439120Z 369       claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T10:37:22.8439171Z                            ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8439173Z
2026-10-24T10:37:22.8439409Z src/orchestration-v2/EffectWorker.test.ts:436:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8439413Z
2026-10-24T10:37:22.8439493Z 436       claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T10:37:22.8439539Z                            ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8439542Z
2026-10-24T10:37:22.8439777Z src/orchestration-v2/EffectWorker.test.ts:437:18 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8439779Z
2026-10-24T10:37:22.8439855Z 437       get: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T10:37:22.8439900Z                      ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8439904Z
2026-10-24T10:37:22.8440240Z 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-24T10:37:22.8440242Z
2026-10-24T10:37:22.8440371Z 98       execute: (effect, options) => {
2026-10-24T10:37:22.8440414Z          ~~~~~~~
2026-10-24T10:37:22.8440416Z
2026-10-24T10:37:22.8440752Z 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-24T10:37:22.8440754Z
2026-10-24T10:37:22.8440811Z 180                 Effect.catch((cause) =>
2026-10-24T10:37:22.8440861Z                     ~~~~~~~~~~~~
2026-10-24T10:37:22.8440863Z
2026-10-24T10:37:22.8441154Z 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-24T10:37:22.8441157Z
2026-10-24T10:37:22.8441208Z 110         append: (input) =>
2026-10-24T10:37:22.8441252Z             ~~~~~~
2026-10-24T10:37:22.8441254Z
2026-10-24T10:37:22.8441566Z 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-24T10:37:22.8441570Z
2026-10-24T10:37:22.8441629Z 120         appendProjectEvent: (event) =>
2026-10-24T10:37:22.8441676Z             ~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8441678Z
2026-10-24T10:37:22.8442028Z 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-24T10:37:22.8442031Z
2026-10-24T10:37:22.8442086Z 131         latestSequence: (input) =>
2026-10-24T10:37:22.8442130Z             ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8442133Z
2026-10-24T10:37:22.8442400Z src/orchestration-v2/FoundationPersistence.test.ts:1791:26 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8442404Z
2026-10-24T10:37:22.8442494Z 1791         claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T10:37:22.8442545Z                               ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8442547Z
2026-10-24T10:37:22.8442809Z src/orchestration-v2/FoundationPersistence.test.ts:1793:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8442812Z
2026-10-24T10:37:22.8442858Z 1793           Effect.succeed(
2026-10-24T10:37:22.8442906Z                ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8442908Z
2026-10-24T10:37:22.8447454Z src/orchestration-v2/FoundationPersistence.test.ts:2663:30 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8447458Z
2026-10-24T10:37:22.8447553Z 2663             nextClaimableAt: Effect.succeed(Option.none()),
2026-10-24T10:37:22.8447606Z                                   ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8447611Z
2026-10-24T10:37:22.8447879Z src/orchestration-v2/FoundationPersistence.test.ts:2880:30 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8447881Z
2026-10-24T10:37:22.8447959Z 2880             nextClaimableAt: Effect.succeed(Option.none()),
2026-10-24T10:37:22.8448011Z                                   ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8448014Z
2026-10-24T10:37:22.8448377Z src/orchestration-v2/Orchestrator.ts:11782:7 - suggestion TS377120: `Effect.filterOrFail` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-24T10:37:22.8448379Z
2026-10-24T10:37:22.8448431Z 11782       Effect.flatMap((planned) =>
2026-10-24T10:37:22.8448478Z             ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8448480Z
2026-10-24T10:37:22.8448819Z src/orchestration-v2/Orchestrator.ts:12205:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.restartContinuationPending")((run) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8448914Z
2026-10-24T10:37:22.8448983Z 12205     restartContinuationPending: (run) =>
2026-10-24T10:37:22.8449030Z           ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8449032Z
2026-10-24T10:37:22.8449364Z src/orchestration-v2/Orchestrator.ts:12207:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.awaitRestartContinuation")((run) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8449366Z
2026-10-24T10:37:22.8449426Z 12207     awaitRestartContinuation: (run) =>
2026-10-24T10:37:22.8449474Z           ~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8449476Z
2026-10-24T10:37:22.8449800Z src/orchestration-v2/Orchestrator.ts:12210:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.autoArmLimitRecovery")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8449804Z
2026-10-24T10:37:22.8449861Z 12210     autoArmLimitRecovery: (input) =>
2026-10-24T10:37:22.8449904Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8449906Z
2026-10-24T10:37:22.8450280Z src/orchestration-v2/Orchestrator.ts:12238:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.searchThread")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8450282Z
2026-10-24T10:37:22.8450333Z 12238     searchThread: (input) =>
2026-10-24T10:37:22.8450374Z           ~~~~~~~~~~~~
2026-10-24T10:37:22.8450377Z
2026-10-24T10:37:22.8450777Z src/orchestration-v2/Orchestrator.ts:12246: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-24T10:37:22.8450781Z
2026-10-24T10:37:22.8450901Z 12246     getThreadHistoryPage: (threadId, cursor, throughEntryId, conversationOnly) =>
2026-10-24T10:37:22.8450945Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8450947Z
2026-10-24T10:37:22.8451284Z src/orchestration-v2/Orchestrator.ts:12250:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getTimelinePage")((threadId, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8451287Z
2026-10-24T10:37:22.8451350Z 12250     getTimelinePage: (threadId, options) =>
2026-10-24T10:37:22.8451393Z           ~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8451396Z
2026-10-24T10:37:22.8451712Z src/orchestration-v2/Orchestrator.ts:12254:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getMessageCount")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8451714Z
2026-10-24T10:37:22.8451768Z 12254     getMessageCount: (threadId) =>
2026-10-24T10:37:22.8451812Z           ~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8451815Z
2026-10-24T10:37:22.8452122Z src/orchestration-v2/Orchestrator.ts:12258:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getTurnItem")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8452124Z
2026-10-24T10:37:22.8452174Z 12258     getTurnItem: (input) =>
2026-10-24T10:37:22.8452217Z           ~~~~~~~~~~~
2026-10-24T10:37:22.8452219Z
2026-10-24T10:37:22.8452565Z src/orchestration-v2/Orchestrator.ts:12266:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadRecords")((threadId, fields, filter) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8452567Z
2026-10-24T10:37:22.8452641Z 12266     getThreadRecords: (threadId, fields, filter) =>
2026-10-24T10:37:22.8452684Z           ~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8452730Z
2026-10-24T10:37:22.8453053Z src/orchestration-v2/Orchestrator.ts:12270:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadProjection")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8453057Z
2026-10-24T10:37:22.8453116Z 12270     getThreadProjection: (threadId) =>
2026-10-24T10:37:22.8453160Z           ~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8453162Z
2026-10-24T10:37:22.8453493Z src/orchestration-v2/Orchestrator.ts:12274:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getCheckpointContext")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8453495Z
2026-10-24T10:37:22.8453554Z 12274     getCheckpointContext: (threadId) =>
2026-10-24T10:37:22.8453596Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8453598Z
2026-10-24T10:37:22.8453918Z src/orchestration-v2/Orchestrator.ts:12278:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadSnapshot")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8453923Z
2026-10-24T10:37:22.8453978Z 12278     getThreadSnapshot: (threadId) =>
2026-10-24T10:37:22.8454021Z           ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8454023Z
2026-10-24T10:37:22.8454411Z src/orchestration-v2/Orchestrator.ts:12282:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadSnapshotWindow")((threadId, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8454414Z
2026-10-24T10:37:22.8454489Z 12282     getThreadSnapshotWindow: (threadId, options) =>
2026-10-24T10:37:22.8454534Z           ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8454537Z
2026-10-24T10:37:22.8454856Z src/orchestration-v2/Orchestrator.ts:12286:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getShellSnapshot")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8454860Z
2026-10-24T10:37:22.8454915Z 12286     getShellSnapshot: (options) =>
2026-10-24T10:37:22.8454957Z           ~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8454959Z
2026-10-24T10:37:22.8455290Z src/orchestration-v2/Orchestrator.ts:12288:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.listActiveSubagentThreadIds")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8455293Z
2026-10-24T10:37:22.8455354Z 12288     listActiveSubagentThreadIds: () =>
2026-10-24T10:37:22.8455404Z           ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8455406Z
2026-10-24T10:37:22.8455732Z src/orchestration-v2/Orchestrator.ts:12290:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.readShellSnapshot")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8455735Z
2026-10-24T10:37:22.8455793Z 12290     readShellSnapshot: (options) =>
2026-10-24T10:37:22.8455838Z           ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8455840Z
2026-10-24T10:37:22.8456162Z src/orchestration-v2/Orchestrator.ts:12297:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadShell")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8456164Z
2026-10-24T10:37:22.8456220Z 12297     getThreadShell: (threadId) =>
2026-10-24T10:37:22.8456267Z           ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8456269Z
2026-10-24T10:37:22.8456604Z src/orchestration-v2/Orchestrator.ts:12301:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadEventSequence")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8456606Z
2026-10-24T10:37:22.8456669Z 12301     getThreadEventSequence: (threadId) =>
2026-10-24T10:37:22.8456717Z           ~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8456762Z
2026-10-24T10:37:22.8457093Z 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-24T10:37:22.8457095Z
2026-10-24T10:37:22.8457165Z 160         getInstance: () => Effect.succeed(undefined),
2026-10-24T10:37:22.8457219Z                                ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8457225Z
2026-10-24T10:37:22.8457531Z 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-24T10:37:22.8457533Z
2026-10-24T10:37:22.8457646Z 269     getShell: (projectId) => get(projectId).pipe(Effect.map(Option.map(toShell))),
2026-10-24T10:37:22.8457689Z         ~~~~~~~~
2026-10-24T10:37:22.8457691Z
2026-10-24T10:37:22.8457997Z 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-24T10:37:22.8458001Z
2026-10-24T10:37:22.8458051Z 270     listShells: (options) =>
2026-10-24T10:37:22.8458093Z         ~~~~~~~~~~
2026-10-24T10:37:22.8458095Z
2026-10-24T10:37:22.8458421Z src/orchestration-v2/ProjectionControlReads.test.ts:279:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8458424Z
2026-10-24T10:37:22.8458475Z 279           Effect.succeed(
2026-10-24T10:37:22.8458520Z               ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8458522Z
2026-10-24T10:37:22.8458864Z 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-24T10:37:22.8458871Z
2026-10-24T10:37:22.8458919Z 78       get: (instanceId) =>
2026-10-24T10:37:22.8458960Z          ~~~
2026-10-24T10:37:22.8458963Z
2026-10-24T10:37:22.8459287Z 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-24T10:37:22.8459290Z
2026-10-24T10:37:22.8459336Z 135       list: () =>
2026-10-24T10:37:22.8459377Z           ~~~~
2026-10-24T10:37:22.8459379Z
2026-10-24T10:37:22.8459713Z 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-24T10:37:22.8459715Z
2026-10-24T10:37:22.8459802Z 93       record: (properties: Readonly<Record<string, unknown>>) =>
2026-10-24T10:37:22.8459845Z          ~~~~~~
2026-10-24T10:37:22.8459849Z
2026-10-24T10:37:22.8460227Z 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-24T10:37:22.8460229Z
2026-10-24T10:37:22.8460311Z 818               Effect.flatMap((storedEvents) =>
2026-10-24T10:37:22.8460357Z                   ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8460360Z
2026-10-24T10:37:22.8460624Z src/orchestration-v2/ProviderSessionManager.test.ts:1155:19 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8460627Z
2026-10-24T10:37:22.8460751Z 1155                 : Effect.succeed(Option.some(makeBrowserAccessProject(requestedProjectId))),
2026-10-24T10:37:22.8460799Z                        ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8460801Z
2026-10-24T10:37:22.8461069Z src/orchestration-v2/ProviderTurnStartService.test.ts:150:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8461118Z
2026-10-24T10:37:22.8461169Z 150             Effect.succeed(
2026-10-24T10:37:22.8461215Z                 ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8461217Z
2026-10-24T10:37:22.8461486Z src/orchestration-v2/ProviderTurnStartService.test.ts:703:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8461488Z
2026-10-24T10:37:22.8461623Z 703             Effect.succeed(Option.some({ workspaceRoot: "/tmp/native-account-project" } as never)),
2026-10-24T10:37:22.8461672Z                 ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8461674Z
2026-10-24T10:37:22.8461943Z src/orchestration-v2/ProviderTurnStartService.testkit.ts:14:20 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8461947Z
2026-10-24T10:37:22.8462015Z 14     getById: () => Effect.succeed(Option.none()),
2026-10-24T10:37:22.8462063Z                       ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8462065Z
2026-10-24T10:37:22.8462454Z 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-24T10:37:22.8462458Z
2026-10-24T10:37:22.8462596Z 205               Effect.catchCause(() => Effect.succeed(undefined)),
2026-10-24T10:37:22.8462661Z                                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8462663Z
2026-10-24T10:37:22.8463054Z 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-24T10:37:22.8463057Z
2026-10-24T10:37:22.8463117Z 512               Effect.catchCause((cause) =>
2026-10-24T10:37:22.8463161Z                   ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8463163Z
2026-10-24T10:37:22.8463585Z 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-24T10:37:22.8463588Z
2026-10-24T10:37:22.8463654Z 1302       return runExecution.startRootRun({
2026-10-24T10:37:22.8463698Z            ~~~~~~
2026-10-24T10:37:22.8463700Z
2026-10-24T10:37:22.8463962Z src/orchestration-v2/PullRequestWatchReactor.ts:478:53 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T10:37:22.8463964Z
2026-10-24T10:37:22.8464063Z 478             ? pullRequests.activity(reference).pipe(Effect.map(Option.some))
2026-10-24T10:37:22.8464131Z                                                         ~~~~~~~~~~
2026-10-24T10:37:22.8464133Z
2026-10-24T10:37:22.8464498Z 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-24T10:37:22.8464501Z
2026-10-24T10:37:22.8464576Z 49       cleanupScheduledTasks: (threadId: ThreadId) =>
2026-10-24T10:37:22.8464622Z          ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8464625Z
2026-10-24T10:37:22.8464975Z 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-24T10:37:22.8464979Z
2026-10-24T10:37:22.8465039Z 58       cleanupTerminals: (threadId: string) =>
2026-10-24T10:37:22.8465084Z          ~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8465137Z
2026-10-24T10:37:22.8465490Z 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-24T10:37:22.8465493Z
2026-10-24T10:37:22.8465553Z 66       cleanupPreviews: (threadId: string) =>
2026-10-24T10:37:22.8465597Z          ~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8465600Z
2026-10-24T10:37:22.8465966Z 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-24T10:37:22.8465969Z
2026-10-24T10:37:22.8466063Z 74       cleanupAttachments: (attachmentIds: ReadonlyArray<string>) =>
2026-10-24T10:37:22.8466108Z          ~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8466110Z
2026-10-24T10:37:22.8466378Z 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-24T10:37:22.8466380Z
2026-10-24T10:37:22.8466437Z 1812         ).pipe(Effect.map(Option.some)),
2026-10-24T10:37:22.8466483Z                     ~~~~~~~~~~
2026-10-24T10:37:22.8466485Z
2026-10-24T10:37:22.8466905Z 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-24T10:37:22.8466908Z
2026-10-24T10:37:22.8466967Z 931               Effect.catchCause((cause) =>
2026-10-24T10:37:22.8467016Z                   ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8467018Z
2026-10-24T10:37:22.8467257Z src/orchestration-v2/RuntimePolicy.test.ts:90:9 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8467261Z
2026-10-24T10:37:22.8467312Z 90         Effect.succeed(
2026-10-24T10:37:22.8467356Z            ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8467358Z
2026-10-24T10:37:22.8467658Z 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-24T10:37:22.8467662Z
2026-10-24T10:37:22.8467709Z 54   resolve: (input) =>
2026-10-24T10:37:22.8467751Z      ~~~~~~~
2026-10-24T10:37:22.8467753Z
2026-10-24T10:37:22.8468013Z src/orchestration-v2/RuntimeRequestService.test.ts:29:7 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8468016Z
2026-10-24T10:37:22.8468063Z 29       Effect.succeed(
2026-10-24T10:37:22.8468106Z          ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8468108Z
2026-10-24T10:37:22.8468361Z src/orchestration-v2/ThreadLaunchService.test.ts:189:33 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8468364Z
2026-10-24T10:37:22.8468458Z 189       getByWorkspaceRoot: () => Effect.succeed(Option.some(project)),
2026-10-24T10:37:22.8468513Z                                     ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8468516Z
2026-10-24T10:37:22.8468770Z src/orchestration-v2/ThreadLaunchService.test.ts:220:32 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8468772Z
2026-10-24T10:37:22.8468855Z 220         folderForThread: () => Effect.succeed(Option.none()),
2026-10-24T10:37:22.8468905Z                                    ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8468908Z
2026-10-24T10:37:22.8469240Z 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-24T10:37:22.8469287Z
2026-10-24T10:37:22.8469337Z 91     archive: (input) =>
2026-10-24T10:37:22.8469380Z        ~~~~~~~
2026-10-24T10:37:22.8469382Z
2026-10-24T10:37:22.8469720Z 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-24T10:37:22.8469722Z
2026-10-24T10:37:22.8469769Z 97     unarchive: (input) =>
2026-10-24T10:37:22.8469811Z        ~~~~~~~~~
2026-10-24T10:37:22.8469813Z
2026-10-24T10:37:22.8470141Z 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-24T10:37:22.8470143Z
2026-10-24T10:37:22.8470191Z 103     delete: (input) =>
2026-10-24T10:37:22.8470233Z         ~~~~~~
2026-10-24T10:37:22.8470236Z
2026-10-24T10:37:22.8470603Z 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-24T10:37:22.8470606Z
2026-10-24T10:37:22.8470658Z 109     updateMetadata: (input) =>
2026-10-24T10:37:22.8470745Z         ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8470748Z
2026-10-24T10:37:22.8471091Z 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-24T10:37:22.8471093Z
2026-10-24T10:37:22.8471142Z 118     setRuntimeMode: (input) =>
2026-10-24T10:37:22.8471185Z         ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8471187Z
2026-10-24T10:37:22.8471540Z 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-24T10:37:22.8471544Z
2026-10-24T10:37:22.8471599Z 125     setInteractionMode: (input) =>
2026-10-24T10:37:22.8471645Z         ~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8471647Z
2026-10-24T10:37:22.8471998Z 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-24T10:37:22.8472003Z
2026-10-24T10:37:22.8472055Z 132     setModelSelection: (input) =>
2026-10-24T10:37:22.8472099Z         ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8472102Z
2026-10-24T10:37:22.8472484Z 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-24T10:37:22.8472488Z
2026-10-24T10:37:22.8472543Z 689       Effect.flatMap((projection) =>
2026-10-24T10:37:22.8472584Z           ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8472587Z
2026-10-24T10:37:22.8472875Z 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-24T10:37:22.8472878Z
2026-10-24T10:37:22.8472946Z 706     ensureProjectionTranscript(input.threadId)
2026-10-24T10:37:22.8472999Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8473132Z 707       .pipe(Effect.andThen(orchestrator.getThreadRecords(input.threadId, fields, filter)))
2026-10-24T10:37:22.8473218Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8473259Z ...
2026-10-24T10:37:22.8473345Z 726         ),
2026-10-24T10:37:22.8473389Z     ~~~~~~~~~~
2026-10-24T10:37:22.8473432Z 727       );
2026-10-24T10:37:22.8473474Z     ~~~~~~~
2026-10-24T10:37:22.8473476Z
2026-10-24T10:37:22.8473854Z 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-24T10:37:22.8473856Z
2026-10-24T10:37:22.8473914Z 717         Effect.flatMap((projection) =>
2026-10-24T10:37:22.8473957Z             ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8473959Z
2026-10-24T10:37:22.8474329Z 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-24T10:37:22.8474332Z
2026-10-24T10:37:22.8474432Z 1131     if (failures[0] !== undefined) return yield* Effect.fail(failures[0]);
2026-10-24T10:37:22.8474489Z                                                ~~~~~
2026-10-24T10:37:22.8474492Z
2026-10-24T10:37:22.8474845Z 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-24T10:37:22.8474889Z
2026-10-24T10:37:22.8474941Z 1142     searchThread: (input) =>
2026-10-24T10:37:22.8474986Z          ~~~~~~~~~~~~
2026-10-24T10:37:22.8474988Z
2026-10-24T10:37:22.8475429Z 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-24T10:37:22.8475432Z
2026-10-24T10:37:22.8475554Z 1147     getThreadHistoryPage: (threadId, cursor, throughEntryId, conversationOnly) =>
2026-10-24T10:37:22.8475601Z          ~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8475603Z
2026-10-24T10:37:22.8475974Z 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-24T10:37:22.8475978Z
2026-10-24T10:37:22.8476044Z 1153     getTimelinePage: (threadId, options) =>
2026-10-24T10:37:22.8476089Z          ~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8476091Z
2026-10-24T10:37:22.8476449Z 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-24T10:37:22.8476452Z
2026-10-24T10:37:22.8476507Z 1157     getMessageCount: (threadId) =>
2026-10-24T10:37:22.8476551Z          ~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8476553Z
2026-10-24T10:37:22.8476898Z 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-24T10:37:22.8476900Z
2026-10-24T10:37:22.8476952Z 1161     getTurnItem: (input) =>
2026-10-24T10:37:22.8476996Z          ~~~~~~~~~~~
2026-10-24T10:37:22.8476998Z
2026-10-24T10:37:22.8477383Z 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-24T10:37:22.8477385Z
2026-10-24T10:37:22.8477458Z 1166     getThreadRecords: (threadId, fields, filter) =>
2026-10-24T10:37:22.8477503Z          ~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8477505Z
2026-10-24T10:37:22.8477950Z 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-24T10:37:22.8477952Z
2026-10-24T10:37:22.8478091Z 1206     ensureTranscript: () => Effect.succeed({ importedThreadCount: 0, importedMessageCount: 0 }),
2026-10-24T10:37:22.8478137Z          ~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8478139Z
2026-10-24T10:37:22.8478407Z src/orchestration-v2/ThreadPullRequestService.test.ts:119:29 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8478409Z
2026-10-24T10:37:22.8478491Z 119             getShell: () => Effect.succeed(Option.some(project)),
2026-10-24T10:37:22.8478545Z                                 ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8478547Z
2026-10-24T10:37:22.8478811Z src/orchestration-v2/ThreadPullRequestService.test.ts:238:31 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8478816Z
2026-10-24T10:37:22.8478897Z 238               getShell: () => Effect.succeed(Option.some(project)),
2026-10-24T10:37:22.8478948Z                                   ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8478950Z
2026-10-24T10:37:22.8479383Z src/orchestration-v2/ThreadPullRequestService.ts:329:17 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T10:37:22.8479385Z
2026-10-24T10:37:22.8479444Z 329                 Effect.catchCause((cause) =>
2026-10-24T10:37:22.8479493Z                     ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8479495Z
2026-10-24T10:37:22.8479874Z src/orchestration-v2/ThreadSettlementService.ts:353:11 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T10:37:22.8479879Z
2026-10-24T10:37:22.8479940Z 353           Effect.catchCause((cause) =>
2026-10-24T10:37:22.8479987Z               ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8479989Z
2026-10-24T10:37:22.8480392Z src/orchestration-v2/ThreadSettlementService.ts:516:11 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T10:37:22.8480395Z
2026-10-24T10:37:22.8480450Z 516           Effect.catchCause((cause) =>
2026-10-24T10:37:22.8480494Z               ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8480500Z
2026-10-24T10:37:22.8480877Z src/orchestration-v2/ThreadSettlementService.ts:534:7 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T10:37:22.8480881Z
2026-10-24T10:37:22.8480936Z 534       Effect.catchCause((cause) =>
2026-10-24T10:37:22.8480980Z           ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8480983Z
2026-10-24T10:37:22.8481358Z src/orchestration-v2/ThreadSettlementService.ts:576:9 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T10:37:22.8481361Z
2026-10-24T10:37:22.8481415Z 576         Effect.catchCause((cause) =>
2026-10-24T10:37:22.8481459Z             ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8481461Z
2026-10-24T10:37:22.8481815Z 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-24T10:37:22.8481861Z
2026-10-24T10:37:22.8481917Z 106       normalize: (item, runOrdinal) =>
2026-10-24T10:37:22.8481960Z           ~~~~~~~~~
2026-10-24T10:37:22.8481962Z
2026-10-24T10:37:22.8482363Z 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-24T10:37:22.8482368Z
2026-10-24T10:37:22.8482464Z 54 const thread = Schema.decodeUnknownSync(OrchestrationV2AppThread)({
2026-10-24T10:37:22.8482511Z                          ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8482513Z
2026-10-24T10:37:22.8482885Z 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-24T10:37:22.8482889Z
2026-10-24T10:37:22.8482932Z 231           try {
2026-10-24T10:37:22.8482972Z               ~~~~~
2026-10-24T10:37:22.8483053Z 232             decodeThreadHistoryCursor(args.query.cursor);
2026-10-24T10:37:22.8483119Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8483161Z ...
2026-10-24T10:37:22.8483290Z 236             return yield* failEnvironmentInternal("orchestration_thread_history_failed", cause);
2026-10-24T10:37:22.8483421Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8483464Z 237           }
2026-10-24T10:37:22.8483506Z     ~~~~~~~~~~~
2026-10-24T10:37:22.8483509Z
2026-10-24T10:37:22.8483751Z src/orchestration-v2/runtimeLayer.test.ts:120:18 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8483757Z
2026-10-24T10:37:22.8483823Z 120   getById: () => Effect.succeed(Option.none()),
2026-10-24T10:37:22.8483873Z                      ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8483875Z
2026-10-24T10:37:22.8484115Z src/orchestration-v2/runtimeLayer.test.ts:996:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8484117Z
2026-10-24T10:37:22.8484165Z 996           Effect.succeed(
2026-10-24T10:37:22.8484208Z               ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8484212Z
2026-10-24T10:37:22.8484577Z 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-24T10:37:22.8484580Z
2026-10-24T10:37:22.8484629Z 40         append: (input) =>
2026-10-24T10:37:22.8484670Z            ~~~~~~
2026-10-24T10:37:22.8484673Z
2026-10-24T10:37:22.8484993Z 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-24T10:37:22.8484998Z
2026-10-24T10:37:22.8485057Z 283       const awaitDispatch = (key: string) =>
2026-10-24T10:37:22.8485101Z                 ~~~~~~~~~~~~~
2026-10-24T10:37:22.8485103Z
2026-10-24T10:37:22.8485524Z 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-24T10:37:22.8485527Z
2026-10-24T10:37:22.8485580Z 447       execute: () => Effect.void,
2026-10-24T10:37:22.8485621Z           ~~~~~~~
2026-10-24T10:37:22.8485625Z
2026-10-24T10:37:22.8485962Z 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-24T10:37:22.8486007Z
2026-10-24T10:37:22.8486056Z 92     list: (input) =>
2026-10-24T10:37:22.8486099Z        ~~~~
2026-10-24T10:37:22.8486101Z
2026-10-24T10:37:22.8486438Z 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-24T10:37:22.8486440Z
2026-10-24T10:37:22.8486486Z 102     set: (input) =>
2026-10-24T10:37:22.8486529Z         ~~~
2026-10-24T10:37:22.8486532Z
2026-10-24T10:37:22.8486866Z 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-24T10:37:22.8486868Z
2026-10-24T10:37:22.8486913Z 54     get: (key) =>
2026-10-24T10:37:22.8486955Z        ~~~
2026-10-24T10:37:22.8486959Z
2026-10-24T10:37:22.8487303Z 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-24T10:37:22.8487307Z
2026-10-24T10:37:22.8487355Z 64     put: (key, guide) =>
2026-10-24T10:37:22.8487396Z        ~~~
2026-10-24T10:37:22.8487399Z
2026-10-24T10:37:22.8487783Z 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-24T10:37:22.8487786Z
2026-10-24T10:37:22.8487840Z 45         Effect.catch((error) =>
2026-10-24T10:37:22.8487881Z            ~~~~~~~~~~~~
2026-10-24T10:37:22.8487884Z
2026-10-24T10:37:22.8488202Z 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-24T10:37:22.8488206Z
2026-10-24T10:37:22.8488271Z 75       awaitAttached: () => Effect.succeed(false),
2026-10-24T10:37:22.8488314Z          ~~~~~~~~~~~~~
2026-10-24T10:37:22.8488317Z
2026-10-24T10:37:22.8488627Z 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-24T10:37:22.8488630Z
2026-10-24T10:37:22.8488689Z 78       isAttached: () => Effect.succeed(false),
2026-10-24T10:37:22.8488732Z          ~~~~~~~~~~
2026-10-24T10:37:22.8488734Z
2026-10-24T10:37:22.8489038Z 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-24T10:37:22.8489042Z
2026-10-24T10:37:22.8489145Z 79       endpoint: () => Effect.die("No desktop app is attached to this server."),
2026-10-24T10:37:22.8489186Z          ~~~~~~~~
2026-10-24T10:37:22.8489190Z
2026-10-24T10:37:22.8489490Z 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-24T10:37:22.8489494Z
2026-10-24T10:37:22.8489551Z 80       pointer: () => Effect.void,
2026-10-24T10:37:22.8489593Z          ~~~~~~~
2026-10-24T10:37:22.8489595Z
2026-10-24T10:37:22.8489932Z 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-24T10:37:22.8489934Z
2026-10-24T10:37:22.8489989Z 194     awaitAttached: (key, timeout) =>
2026-10-24T10:37:22.8490030Z         ~~~~~~~~~~~~~
2026-10-24T10:37:22.8490079Z
2026-10-24T10:37:22.8490414Z 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-24T10:37:22.8490416Z
2026-10-24T10:37:22.8490517Z 216     isAttached: (key) => Effect.sync(() => attachedTabs.has(keyOf(key))),
2026-10-24T10:37:22.8490562Z         ~~~~~~~~~~
2026-10-24T10:37:22.8490564Z
2026-10-24T10:37:22.8490884Z 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-24T10:37:22.8490886Z
2026-10-24T10:37:22.8490990Z 218     pointer: (key, pointer) => command({ type: "pointer", ...key, ...pointer }),
2026-10-24T10:37:22.8491031Z         ~~~~~~~
2026-10-24T10:37:22.8491033Z
2026-10-24T10:37:22.8491486Z 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-24T10:37:22.8491490Z
2026-10-24T10:37:22.8491587Z 481     executable: () => Effect.runPromise(previewBrowser.executable),
2026-10-24T10:37:22.8491683Z                           ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8491686Z
2026-10-24T10:37:22.8492129Z 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-24T10:37:22.8492132Z
2026-10-24T10:37:22.8492181Z 688       ? Effect.runPromise(
2026-10-24T10:37:22.8492229Z             ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8492232Z
2026-10-24T10:37:22.8492676Z 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-24T10:37:22.8492678Z
2026-10-24T10:37:22.8492760Z 697     const scope = await Effect.runPromise(Scope.make());
2026-10-24T10:37:22.8492812Z                             ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8492814Z
2026-10-24T10:37:22.8493253Z 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-24T10:37:22.8493257Z
2026-10-24T10:37:22.8493321Z 699       const endpoint = await Effect.runPromise(
2026-10-24T10:37:22.8493376Z                                  ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8493378Z
2026-10-24T10:37:22.8493819Z 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-24T10:37:22.8493821Z
2026-10-24T10:37:22.8493906Z 709           await Effect.runPromise(Scope.close(scope, Exit.void));
2026-10-24T10:37:22.8493953Z                     ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8493955Z
2026-10-24T10:37:22.8494396Z 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-24T10:37:22.8494440Z
2026-10-24T10:37:22.8494527Z 713       await Effect.runPromise(Scope.close(scope, Exit.void));
2026-10-24T10:37:22.8494573Z                 ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8494575Z
2026-10-24T10:37:22.8495025Z 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-24T10:37:22.8495027Z
2026-10-24T10:37:22.8495078Z 1200     await Effect.runPromise(
2026-10-24T10:37:22.8495122Z                ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8495124Z
2026-10-24T10:37:22.8495570Z 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-24T10:37:22.8495574Z
2026-10-24T10:37:22.8495627Z 1693         : await Effect.runPromise(
2026-10-24T10:37:22.8495676Z                      ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8495678Z
2026-10-24T10:37:22.8496157Z 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-24T10:37:22.8496159Z
2026-10-24T10:37:22.8496214Z 1757             ? await Effect.runPromise(
2026-10-24T10:37:22.8496262Z                          ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8496264Z
2026-10-24T10:37:22.8496534Z 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-24T10:37:22.8496539Z
2026-10-24T10:37:22.8496646Z 1760                     ServerBrowserTabNotFoundError: () => Effect.succeed(undefined),
2026-10-24T10:37:22.8496716Z                                                               ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8496719Z
2026-10-24T10:37:22.8497163Z 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-24T10:37:22.8497167Z
2026-10-24T10:37:22.8497240Z 1766           const { sessions } = await Effect.runPromise(
2026-10-24T10:37:22.8497298Z                                           ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8497300Z
2026-10-24T10:37:22.8497747Z 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-24T10:37:22.8497751Z
2026-10-24T10:37:22.8497805Z 1794             await Effect.runPromise(
2026-10-24T10:37:22.8497850Z                        ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8497852Z
2026-10-24T10:37:22.8498298Z 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-24T10:37:22.8498300Z
2026-10-24T10:37:22.8498356Z 1825               await Effect.runPromise(
2026-10-24T10:37:22.8498403Z                          ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8498405Z
2026-10-24T10:37:22.8498936Z 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-24T10:37:22.8498939Z
2026-10-24T10:37:22.8499071Z 1889       await Effect.runPromise(manager.close({ threadId: tab.threadId, tabId: tab.tabId }));
2026-10-24T10:37:22.8499118Z                  ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8499120Z
2026-10-24T10:37:22.8499561Z 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-24T10:37:22.8499563Z
2026-10-24T10:37:22.8499615Z 1957         await Effect.runPromise(
2026-10-24T10:37:22.8499663Z                    ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8499665Z
2026-10-24T10:37:22.8500105Z 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-24T10:37:22.8500108Z
2026-10-24T10:37:22.8500215Z 1969         const snapshot = await Effect.runPromise(
2026-10-24T10:37:22.8500300Z                                     ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8500302Z
2026-10-24T10:37:22.8500746Z 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-24T10:37:22.8500750Z
2026-10-24T10:37:22.8500802Z 2215         await Effect.runPromise(
2026-10-24T10:37:22.8500848Z                    ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8500851Z
2026-10-24T10:37:22.8501123Z 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-24T10:37:22.8501125Z
2026-10-24T10:37:22.8501201Z 179       const receive = (chunk: Uint8Array | string) => {
2026-10-24T10:37:22.8501244Z                 ~~~~~~~
2026-10-24T10:37:22.8501247Z
2026-10-24T10:37:22.8501543Z 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-24T10:37:22.8501546Z
2026-10-24T10:37:22.8501641Z 209     Effect.catch(() => Effect.succeed(HttpServerResponse.empty())),
2026-10-24T10:37:22.8501681Z         ~~~~~~~~~~~~
2026-10-24T10:37:22.8501685Z
2026-10-24T10:37:22.8502008Z 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-24T10:37:22.8502011Z
2026-10-24T10:37:22.8502097Z 860     resolveAvailableEditors: () => cachedAvailableEditors,
2026-10-24T10:37:22.8502142Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8502146Z
2026-10-24T10:37:22.8502548Z 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-24T10:37:22.8502551Z
2026-10-24T10:37:22.8502609Z 861     resolveFileManagerRevealKind: () =>
2026-10-24T10:37:22.8502655Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8502657Z
2026-10-24T10:37:22.8502965Z 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-24T10:37:22.8503025Z
2026-10-24T10:37:22.8503077Z 865     launchBrowser: (target) =>
2026-10-24T10:37:22.8503119Z         ~~~~~~~~~~~~~
2026-10-24T10:37:22.8503123Z
2026-10-24T10:37:22.8503426Z 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-24T10:37:22.8503428Z
2026-10-24T10:37:22.8503481Z 869     launchEditor: (input) =>
2026-10-24T10:37:22.8503523Z         ~~~~~~~~~~~~
2026-10-24T10:37:22.8503525Z
2026-10-24T10:37:22.8503770Z src/project/AgentSessionImporter.test.ts:212:15 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8503772Z
2026-10-24T10:37:22.8503822Z 212               Effect.succeed(
2026-10-24T10:37:22.8503868Z                   ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8503870Z
2026-10-24T10:37:22.8504105Z src/project/ManagedProjectFolders.ts:346:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8504107Z
2026-10-24T10:37:22.8504190Z 346           ? Effect.succeed(Option.some(folderFor(id.slice(-8))))
2026-10-24T10:37:22.8504285Z                 ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8504287Z
2026-10-24T10:37:22.8504519Z src/project/ManagedProjectFolders.ts:348:15 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8504521Z
2026-10-24T10:37:22.8504590Z 348             ? Effect.succeed(Option.some(fullFolder))
2026-10-24T10:37:22.8504634Z                   ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8504636Z
2026-10-24T10:37:22.8504950Z 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-24T10:37:22.8504954Z
2026-10-24T10:37:22.8505034Z 432     start: (input, hooks) => locked(start(input, hooks)),
2026-10-24T10:37:22.8505076Z         ~~~~~
2026-10-24T10:37:22.8505078Z
2026-10-24T10:37:22.8505389Z 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-24T10:37:22.8505392Z
2026-10-24T10:37:22.8505462Z 433     cancel: (projectId) => locked(cancel(projectId)),
2026-10-24T10:37:22.8505504Z         ~~~~~~
2026-10-24T10:37:22.8505506Z
2026-10-24T10:37:22.8505811Z 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-24T10:37:22.8505816Z
2026-10-24T10:37:22.8505884Z 434     retry: (projectId) => locked(retry(projectId)),
2026-10-24T10:37:22.8505926Z         ~~~~~
2026-10-24T10:37:22.8505928Z
2026-10-24T10:37:22.8506239Z 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-24T10:37:22.8506241Z
2026-10-24T10:37:22.8506316Z 435     discard: (projectId) => locked(discard(projectId)),
2026-10-24T10:37:22.8506355Z         ~~~~~~~
2026-10-24T10:37:22.8506358Z
2026-10-24T10:37:22.8506682Z 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-24T10:37:22.8506684Z
2026-10-24T10:37:22.8506783Z 21         get: (key) => Effect.sync(() => Option.fromUndefinedOr(bytes.get(key))),
2026-10-24T10:37:22.8506866Z            ~~~
2026-10-24T10:37:22.8506868Z
2026-10-24T10:37:22.8507202Z 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-24T10:37:22.8507204Z
2026-10-24T10:37:22.8507252Z 22         set: (key, value) =>
2026-10-24T10:37:22.8507293Z            ~~~
2026-10-24T10:37:22.8507295Z
2026-10-24T10:37:22.8507628Z 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-24T10:37:22.8507631Z
2026-10-24T10:37:22.8507678Z 26         remove: (key) =>
2026-10-24T10:37:22.8507720Z            ~~~~~~
2026-10-24T10:37:22.8507722Z
2026-10-24T10:37:22.8508044Z 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-24T10:37:22.8508048Z
2026-10-24T10:37:22.8508148Z 30         create: () => Effect.die("Handoff does not create persistent secrets."),
2026-10-24T10:37:22.8508188Z            ~~~~~~
2026-10-24T10:37:22.8508190Z
2026-10-24T10:37:22.8508587Z 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-24T10:37:22.8508589Z
2026-10-24T10:37:22.8508719Z 31         getOrCreateRandom: () => Effect.die("Handoff uses the destination environment identity."),
2026-10-24T10:37:22.8508764Z            ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8508766Z
2026-10-24T10:37:22.8509181Z 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-24T10:37:22.8509185Z
2026-10-24T10:37:22.8509295Z 205     return yield* Schema.decodeUnknownEffect(Schema.fromJsonString(schema))(
2026-10-24T10:37:22.8509347Z                              ~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8509351Z
2026-10-24T10:37:22.8509618Z 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-24T10:37:22.8509620Z
2026-10-24T10:37:22.8509673Z 569         ? Effect.succeed(undefined)
2026-10-24T10:37:22.8509720Z               ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8509722Z
2026-10-24T10:37:22.8510037Z 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-24T10:37:22.8510041Z
2026-10-24T10:37:22.8510093Z 284       current: (driverKind) =>
2026-10-24T10:37:22.8510134Z           ~~~~~~~
2026-10-24T10:37:22.8510136Z
2026-10-24T10:37:22.8510510Z 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-24T10:37:22.8510512Z
2026-10-24T10:37:22.8510568Z 284                 return yield* Effect.fail(
2026-10-24T10:37:22.8510612Z                            ~~~~~
2026-10-24T10:37:22.8510614Z
2026-10-24T10:37:22.8510933Z 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-24T10:37:22.8510978Z
2026-10-24T10:37:22.8511031Z 211     importProfile: (input) =>
2026-10-24T10:37:22.8511072Z         ~~~~~~~~~~~~~
2026-10-24T10:37:22.8511075Z
2026-10-24T10:37:22.8511424Z 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-24T10:37:22.8511428Z
2026-10-24T10:37:22.8511490Z 39       credentials: (namespace, bindingId) =>
2026-10-24T10:37:22.8511531Z          ~~~~~~~~~~~
2026-10-24T10:37:22.8511534Z
2026-10-24T10:37:22.8511904Z src/pullRequest/PullRequestService.ts:2933:7 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T10:37:22.8511907Z
2026-10-24T10:37:22.8511958Z 2933       Effect.catchCause((cause) =>
2026-10-24T10:37:22.8512005Z            ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8512007Z
2026-10-24T10:37:22.8512372Z src/pullRequest/PullRequestService.ts:3336:7 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T10:37:22.8512374Z
2026-10-24T10:37:22.8512427Z 3336       Effect.catchCause((cause) =>
2026-10-24T10:37:22.8512510Z            ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8512514Z
2026-10-24T10:37:22.8512831Z src/pullRequest/PullRequestService.ts:3556:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestService.listStats")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8512833Z
2026-10-24T10:37:22.8512884Z 3556     listStats: (input) =>
2026-10-24T10:37:22.8512924Z          ~~~~~~~~~
2026-10-24T10:37:22.8512926Z
2026-10-24T10:37:22.8513162Z src/relay/AgentAwarenessRelay.test.ts:271:9 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T10:37:22.8513166Z
2026-10-24T10:37:22.8513212Z 271         Effect.succeed(
2026-10-24T10:37:22.8513258Z             ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8513260Z
2026-10-24T10:37:22.8513572Z 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-24T10:37:22.8513574Z
2026-10-24T10:37:22.8513693Z 822     requestCatchUp: () => Queue.offer(catchUpRequests, undefined).pipe(Effect.asVoid),
2026-10-24T10:37:22.8513735Z         ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8513737Z
2026-10-24T10:37:22.8514116Z 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-24T10:37:22.8514120Z
2026-10-24T10:37:22.8514182Z 641     requestDesktopUpdate: (requestId) =>
2026-10-24T10:37:22.8514227Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8514229Z
2026-10-24T10:37:22.8514601Z 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-24T10:37:22.8514603Z
2026-10-24T10:37:22.8514665Z 647     commitDesktopUpdate: (requestId) =>
2026-10-24T10:37:22.8514708Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8514710Z
2026-10-24T10:37:22.8515081Z 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-24T10:37:22.8515125Z
2026-10-24T10:37:22.8515184Z 649     cancelDesktopUpdate: (requestId) =>
2026-10-24T10:37:22.8515228Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8515230Z
2026-10-24T10:37:22.8515590Z 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-24T10:37:22.8515594Z
2026-10-24T10:37:22.8515656Z 698       setDiagnosticsDemand: () => Effect.void,
2026-10-24T10:37:22.8515702Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8515704Z
2026-10-24T10:37:22.8516063Z 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-24T10:37:22.8516065Z
2026-10-24T10:37:22.8516129Z 699       requestDesktopUpdate: () => Effect.void,
2026-10-24T10:37:22.8516178Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8516180Z
2026-10-24T10:37:22.8516536Z 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-24T10:37:22.8516538Z
2026-10-24T10:37:22.8516641Z 700       commitDesktopUpdate: () => Effect.void,
2026-10-24T10:37:22.8516687Z           ~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8516689Z
2026-10-24T10:37:22.8517047Z 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-24T10:37:22.8517050Z
2026-10-24T10:37:22.8517112Z 701       cancelDesktopUpdate: () => Effect.void,
2026-10-24T10:37:22.8517155Z           ~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8517159Z
2026-10-24T10:37:22.8517491Z 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-24T10:37:22.8517494Z
2026-10-24T10:37:22.8517539Z 1091       readHistory: () =>
2026-10-24T10:37:22.8517581Z            ~~~~~~~~~~~
2026-10-24T10:37:22.8517583Z
2026-10-24T10:37:22.8517934Z 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-24T10:37:22.8517936Z
2026-10-24T10:37:22.8517998Z 1097       setExternalProcesses: () => Effect.void,
2026-10-24T10:37:22.8518043Z            ~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8518045Z
2026-10-24T10:37:22.8518387Z 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-24T10:37:22.8518391Z
2026-10-24T10:37:22.8518452Z 1098       setHostPowerState: () => Effect.void,
2026-10-24T10:37:22.8518495Z            ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8518499Z
2026-10-24T10:37:22.8518796Z 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-24T10:37:22.8518798Z
2026-10-24T10:37:22.8518867Z 1136                             ? Effect.succeed(undefined)
2026-10-24T10:37:22.8518925Z                                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8518927Z
2026-10-24T10:37:22.8519210Z 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-24T10:37:22.8519254Z
2026-10-24T10:37:22.8519310Z 166       const results = yield* Effect.all(
2026-10-24T10:37:22.8519361Z                                  ~~~~~~~~~~
2026-10-24T10:37:22.8519363Z
2026-10-24T10:37:22.8519717Z src/server.ts:482: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-24T10:37:22.8519720Z
2026-10-24T10:37:22.8519775Z 482     return Effect.gen(function* () {
2026-10-24T10:37:22.8519818Z         ~~~~~~
2026-10-24T10:37:22.8519820Z
2026-10-24T10:37:22.8520088Z 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-24T10:37:22.8520093Z
2026-10-24T10:37:22.8520159Z 209           prepareTrial: Effect.succeed(undefined),
2026-10-24T10:37:22.8520215Z                             ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8520217Z
2026-10-24T10:37:22.8520518Z 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-24T10:37:22.8520520Z
2026-10-24T10:37:22.8520581Z 413       const results = yield* Effect.all(
2026-10-24T10:37:22.8520665Z                                  ~~~~~~~~~~
2026-10-24T10:37:22.8520667Z
2026-10-24T10:37:22.8521081Z 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-24T10:37:22.8521083Z
2026-10-24T10:37:22.8521139Z 204     listChangeRequests: (input) =>
2026-10-24T10:37:22.8521185Z         ~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8521188Z
2026-10-24T10:37:22.8521592Z 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-24T10:37:22.8521594Z
2026-10-24T10:37:22.8521646Z 209     getChangeRequest: (input) =>
2026-10-24T10:37:22.8521693Z         ~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8521695Z
2026-10-24T10:37:22.8522104Z 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-24T10:37:22.8522106Z
2026-10-24T10:37:22.8522160Z 214     createChangeRequest: (input) =>
2026-10-24T10:37:22.8522206Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8522208Z
2026-10-24T10:37:22.8522622Z 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-24T10:37:22.8522626Z
2026-10-24T10:37:22.8522686Z 219     getRepositoryCloneUrls: (input) =>
2026-10-24T10:37:22.8522730Z         ~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8522732Z
2026-10-24T10:37:22.8523133Z 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-24T10:37:22.8523136Z
2026-10-24T10:37:22.8523232Z 224     createRepository: (input) => provider.createRepository(input),
2026-10-24T10:37:22.8523274Z         ~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8523276Z
2026-10-24T10:37:22.8523675Z 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-24T10:37:22.8523724Z
2026-10-24T10:37:22.8523775Z 225     getDefaultBranch: (input) =>
2026-10-24T10:37:22.8523819Z         ~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8523821Z
2026-10-24T10:37:22.8524234Z 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-24T10:37:22.8524237Z
2026-10-24T10:37:22.8524292Z 230     checkoutChangeRequest: (input) =>
2026-10-24T10:37:22.8524338Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8524340Z
2026-10-24T10:37:22.8524697Z 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-24T10:37:22.8524701Z
2026-10-24T10:37:22.8524829Z 345       resolve: (input) => resolveHandle(input).pipe(Effect.map((handle) => handle.provider)),
2026-10-24T10:37:22.8524871Z           ~~~~~~~
2026-10-24T10:37:22.8524873Z
2026-10-24T10:37:22.8525277Z src/sourceControl/SourceControlRepositoryService.ts:409:7 - suggestion TS377116: `Effect.catchIf` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T10:37:22.8525281Z
2026-10-24T10:37:22.8525330Z 409       Effect.catch((sshError) =>
2026-10-24T10:37:22.8525373Z           ~~~~~~~~~~~~
2026-10-24T10:37:22.8525375Z
2026-10-24T10:37:22.8525753Z src/sourceControl/SourceControlRepositoryService.ts:556:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.lookupRepository")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8525757Z
2026-10-24T10:37:22.8525809Z 556     lookupRepository: (input) =>
2026-10-24T10:37:22.8525851Z         ~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8525853Z
2026-10-24T10:37:22.8526222Z src/sourceControl/SourceControlRepositoryService.ts:558:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.prepareClone")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8526224Z
2026-10-24T10:37:22.8526275Z 558     prepareClone: (input) =>
2026-10-24T10:37:22.8526322Z         ~~~~~~~~~~~~
2026-10-24T10:37:22.8526324Z
2026-10-24T10:37:22.8526712Z src/sourceControl/SourceControlRepositoryService.ts:565:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.cloneRepository")((input, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8526716Z
2026-10-24T10:37:22.8526775Z 565     cloneRepository: (input, options) =>
2026-10-24T10:37:22.8526818Z         ~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8526820Z
2026-10-24T10:37:22.8527202Z src/sourceControl/SourceControlRepositoryService.ts:572:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.discardClone")((destinationPath) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8527205Z
2026-10-24T10:37:22.8527262Z 572     discardClone: (destinationPath) =>
2026-10-24T10:37:22.8527305Z         ~~~~~~~~~~~~
2026-10-24T10:37:22.8527307Z
2026-10-24T10:37:22.8527683Z src/sourceControl/SourceControlRepositoryService.ts:576:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.publishRepository")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8527685Z
2026-10-24T10:37:22.8527782Z 576     publishRepository: (input) =>
2026-10-24T10:37:22.8527828Z         ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8527830Z
2026-10-24T10:37:22.8528150Z 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-24T10:37:22.8528152Z
2026-10-24T10:37:22.8528204Z 708       return yield* Effect.fail(
2026-10-24T10:37:22.8528244Z                  ~~~~~
2026-10-24T10:37:22.8528246Z
2026-10-24T10:37:22.8528533Z 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-24T10:37:22.8528535Z
2026-10-24T10:37:22.8528583Z 113       record: () => Effect.void,
2026-10-24T10:37:22.8528625Z           ~~~~~~
2026-10-24T10:37:22.8528627Z
2026-10-24T10:37:22.8528922Z 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-24T10:37:22.8528929Z
2026-10-24T10:37:22.8528982Z 115       recordOwners: () => Effect.void,
2026-10-24T10:37:22.8529024Z           ~~~~~~~~~~~~
2026-10-24T10:37:22.8529026Z
2026-10-24T10:37:22.8529377Z 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-24T10:37:22.8529380Z
2026-10-24T10:37:22.8529526Z 329   yield* Effect.forever(Effect.sleep(FLUSH_INTERVAL_MS).pipe(Effect.flatMap(() => flushWhenDue)), {
2026-10-24T10:37:22.8529593Z                                                                  ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8529595Z
2026-10-24T10:37:22.8529873Z 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-24T10:37:22.8529877Z
2026-10-24T10:37:22.8529939Z 90       .pipe(Effect.catch(() => Effect.void));
2026-10-24T10:37:22.8529983Z                ~~~~~~~~~~~~
2026-10-24T10:37:22.8529985Z
2026-10-24T10:37:22.8530325Z 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-24T10:37:22.8530328Z
2026-10-24T10:37:22.8530397Z 60     generateCommitMessage: (input) =>
2026-10-24T10:37:22.8530443Z        ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8530445Z
2026-10-24T10:37:22.8530762Z 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-24T10:37:22.8530767Z
2026-10-24T10:37:22.8530818Z 64     generatePrContent: (input) =>
2026-10-24T10:37:22.8530862Z        ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8530864Z
2026-10-24T10:37:22.8531178Z 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-24T10:37:22.8531180Z
2026-10-24T10:37:22.8531235Z 68     generateBranchName: (input) =>
2026-10-24T10:37:22.8531280Z        ~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8531282Z
2026-10-24T10:37:22.8531600Z 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-24T10:37:22.8531602Z
2026-10-24T10:37:22.8531655Z 72     generateReviewGuide: (input) =>
2026-10-24T10:37:22.8531698Z        ~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8531744Z
2026-10-24T10:37:22.8532061Z 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-24T10:37:22.8532063Z
2026-10-24T10:37:22.8532116Z 76     generateThreadTitle: (input) =>
2026-10-24T10:37:22.8532161Z        ~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8532163Z
2026-10-24T10:37:22.8532449Z 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-24T10:37:22.8532453Z
2026-10-24T10:37:22.8532501Z 172     readSummary: (input) =>
2026-10-24T10:37:22.8532544Z         ~~~~~~~~~~~
2026-10-24T10:37:22.8532547Z
2026-10-24T10:37:22.8532793Z 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-24T10:37:22.8532797Z
2026-10-24T10:37:22.8532855Z 642         usageInstances(driver, settings)
2026-10-24T10:37:22.8532903Z             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8532946Z 643           .pipe(
2026-10-24T10:37:22.8532989Z     ~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8533028Z ...
2026-10-24T10:37:22.8533095Z 664             Effect.provideContext(readerContext),
2026-10-24T10:37:22.8533197Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8533240Z 665           ),
2026-10-24T10:37:22.8533280Z     ~~~~~~~~~~~
2026-10-24T10:37:22.8533285Z
2026-10-24T10:37:22.8533628Z src/vcs/GitVcsDriverCore.ts:4009:9 - suggestion TS377120: `Effect.filterOrElse` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-24T10:37:22.8533631Z
2026-10-24T10:37:22.8533685Z 4009         Effect.flatMap((result) =>
2026-10-24T10:37:22.8533730Z              ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8533733Z
2026-10-24T10:37:22.8534065Z src/vcs/GitVcsDriverCore.ts:4500:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.commit")((cwd, subject, body, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8534068Z
2026-10-24T10:37:22.8534129Z 4500     commit: (cwd, subject, body, options) =>
2026-10-24T10:37:22.8534170Z          ~~~~~~
2026-10-24T10:37:22.8534172Z
2026-10-24T10:37:22.8534529Z src/vcs/GitVcsDriverCore.ts:4502:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.pushCurrentBranch")((cwd, fallbackBranch, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8534532Z
2026-10-24T10:37:22.8534616Z 4502     pushCurrentBranch: (cwd, fallbackBranch, options) =>
2026-10-24T10:37:22.8534660Z          ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8534662Z
2026-10-24T10:37:22.8534983Z src/vcs/GitVcsDriverCore.ts:4504:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.pullCurrentBranch")((cwd) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8534987Z
2026-10-24T10:37:22.8535110Z 4504     pullCurrentBranch: (cwd) => withListRefsInvalidation(cwd, pullCurrentBranch(cwd)),
2026-10-24T10:37:22.8535154Z          ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8535157Z
2026-10-24T10:37:22.8535489Z src/vcs/GitVcsDriverCore.ts:4511:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.createWorktree")((input, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8535491Z
2026-10-24T10:37:22.8535549Z 4511     createWorktree: (input, options) =>
2026-10-24T10:37:22.8535592Z          ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8535594Z
2026-10-24T10:37:22.8535933Z src/vcs/GitVcsDriverCore.ts:4513:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchPullRequestBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8535983Z
2026-10-24T10:37:22.8536044Z 4513     fetchPullRequestBranch: (input) =>
2026-10-24T10:37:22.8536089Z          ~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8536092Z
2026-10-24T10:37:22.8536429Z src/vcs/GitVcsDriverCore.ts:4517:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.refreshCheckedOutBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8536432Z
2026-10-24T10:37:22.8536489Z 4517     refreshCheckedOutBranch: (input) =>
2026-10-24T10:37:22.8536536Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8536538Z
2026-10-24T10:37:22.8536855Z src/vcs/GitVcsDriverCore.ts:4519:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.ensureRemote")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8536859Z
2026-10-24T10:37:22.8536984Z 4519     ensureRemote: (input) => withListRefsInvalidation(input.cwd, ensureRemote(input)),
2026-10-24T10:37:22.8537026Z          ~~~~~~~~~~~~
2026-10-24T10:37:22.8537029Z
2026-10-24T10:37:22.8537387Z src/vcs/GitVcsDriverCore.ts:4522:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchRemote")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8537391Z
2026-10-24T10:37:22.8537439Z 4522     fetchRemote: (input) =>
2026-10-24T10:37:22.8537481Z          ~~~~~~~~~~~
2026-10-24T10:37:22.8537483Z
2026-10-24T10:37:22.8537818Z src/vcs/GitVcsDriverCore.ts:4537:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchWorktreeBaseCommit")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8537820Z
2026-10-24T10:37:22.8537880Z 4537     fetchWorktreeBaseCommit: (input) =>
2026-10-24T10:37:22.8537922Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8537925Z
2026-10-24T10:37:22.8538246Z src/vcs/GitVcsDriverCore.ts:4539:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchRemoteBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8538248Z
2026-10-24T10:37:22.8538390Z 4539     fetchRemoteBranch: (input) => withListRefsInvalidation(input.cwd, fetchRemoteBranch(input)),
2026-10-24T10:37:22.8538434Z          ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8538437Z
2026-10-24T10:37:22.8538781Z src/vcs/GitVcsDriverCore.ts:4540:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchRemoteTrackingBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8538783Z
2026-10-24T10:37:22.8538844Z 4540     fetchRemoteTrackingBranch: (input) =>
2026-10-24T10:37:22.8538894Z          ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8538896Z
2026-10-24T10:37:22.8539219Z src/vcs/GitVcsDriverCore.ts:4542:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.setBranchUpstream")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8539221Z
2026-10-24T10:37:22.8539363Z 4542     setBranchUpstream: (input) => withListRefsInvalidation(input.cwd, setBranchUpstream(input)),
2026-10-24T10:37:22.8539407Z          ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8539410Z
2026-10-24T10:37:22.8539728Z src/vcs/GitVcsDriverCore.ts:4543:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.removeWorktree")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8539731Z
2026-10-24T10:37:22.8539861Z 4543     removeWorktree: (input) => withListRefsInvalidation(input.cwd, removeWorktree(input)),
2026-10-24T10:37:22.8539953Z          ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8539955Z
2026-10-24T10:37:22.8540283Z src/vcs/GitVcsDriverCore.ts:4544:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.pruneWorktrees")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8540286Z
2026-10-24T10:37:22.8540432Z 4544     pruneWorktrees: (input) => withListRefsInvalidation(input.cwd, pruneWorktrees(input)),
2026-10-24T10:37:22.8540475Z          ~~~~~~~~~~~~~~
2026-10-24T10:37:22.8540477Z
2026-10-24T10:37:22.8540800Z src/vcs/GitVcsDriverCore.ts:4545:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.deleteLocalBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8540802Z
2026-10-24T10:37:22.8540940Z 4545     deleteLocalBranch: (input) => withListRefsInvalidation(input.cwd, deleteLocalBranch(input)),
2026-10-24T10:37:22.8540983Z          ~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8540988Z
2026-10-24T10:37:22.8541306Z src/vcs/GitVcsDriverCore.ts:4546:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.renameBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8541308Z
2026-10-24T10:37:22.8541426Z 4546     renameBranch: (input) => withListRefsInvalidation(input.cwd, renameBranch(input)),
2026-10-24T10:37:22.8541512Z          ~~~~~~~~~~~~
2026-10-24T10:37:22.8541515Z
2026-10-24T10:37:22.8541825Z src/vcs/GitVcsDriverCore.ts:4547:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.createRef")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8541827Z
2026-10-24T10:37:22.8541937Z 4547     createRef: (input) => withListRefsInvalidation(input.cwd, createRef(input)),
2026-10-24T10:37:22.8541979Z          ~~~~~~~~~
2026-10-24T10:37:22.8541981Z
2026-10-24T10:37:22.8542334Z src/vcs/GitVcsDriverCore.ts:4548:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.switchRef")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T10:37:22.8542336Z
2026-10-24T10:37:22.8542444Z 4548     switchRef: (input) => withListRefsInvalidation(input.cwd, switchRef(input)),
2026-10-24T10:37:22.8542486Z          ~~~~~~~~~
2026-10-24T10:37:22.8542488Z
2026-10-24T10:37:22.8542877Z 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-24T10:37:22.8542879Z
2026-10-24T10:37:22.8542946Z 153     return serverSettings.getSettings.pipe(
2026-10-24T10:37:22.8542986Z         ~~~~~~
2026-10-24T10:37:22.8542988Z
2026-10-24T10:37:22.8543293Z 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-24T10:37:22.8543297Z
2026-10-24T10:37:22.8543385Z 171       }).pipe(Effect.catch(() => Effect.succeed(undefined)));
2026-10-24T10:37:22.8543430Z                   ~~~~~~~~~~~~
2026-10-24T10:37:22.8543432Z
2026-10-24T10:37:22.8543710Z 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-24T10:37:22.8543713Z
2026-10-24T10:37:22.8543790Z 171       }).pipe(Effect.catch(() => Effect.succeed(undefined)));
2026-10-24T10:37:22.8543851Z                                      ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8543853Z
2026-10-24T10:37:22.8544090Z 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-24T10:37:22.8544148Z
2026-10-24T10:37:22.8544249Z 401           resolveFileManagerRevealKind: () => Effect.succeed(undefined),
2026-10-24T10:37:22.8544315Z                                                   ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T10:37:22.8544317Z
2026-10-24T10:37:22.8544600Z src/ws.ts:1384:23 - suggestion TS377118: `Effect.fromOption` expresses this Option-to-Effect conversion more directly than `Option.match` or an Option tag conditional. effect(optionMatchToFromOption)
2026-10-24T10:37:22.8544602Z
2026-10-24T10:37:22.8544664Z 1384         return yield* Option.match(project, {
2026-10-24T10:37:22.8544710Z                            ~~~~~~~~~~~~
2026-10-24T10:37:22.8544712Z
2026-10-24T10:37:22.8545015Z src/ws.ts:2319:24 - suggestion TS377019: This `yield* Effect.fail(...)` passes a yieldable error value. `yield*` represents that value directly without wrapping it in `Effect.fail`. effect(unnecessaryFailYieldableError)
2026-10-24T10:37:22.8545017Z
2026-10-24T10:37:22.8545076Z 2319                 return yield* Effect.fail(
2026-10-24T10:37:22.8545123Z                             ~~~~~
2026-10-24T10:37:22.8545125Z
2026-10-24T10:37:22.8545421Z src/ws.ts:2328:24 - suggestion TS377019: This `yield* Effect.fail(...)` passes a yieldable error value. `yield*` represents that value directly without wrapping it in `Effect.fail`. effect(unnecessaryFailYieldableError)
2026-10-24T10:37:22.8545423Z
2026-10-24T10:37:22.8545527Z 2328                 return yield* Effect.fail(
2026-10-24T10:37:22.8545573Z                             ~~~~~
2026-10-24T10:37:22.8545575Z
2026-10-24T10:37:22.8545868Z src/ws.ts:2336:24 - suggestion TS377019: This `yield* Effect.fail(...)` passes a yieldable error value. `yield*` represents that value directly without wrapping it in `Effect.fail`. effect(unnecessaryFailYieldableError)
2026-10-24T10:37:22.8545872Z
2026-10-24T10:37:22.8545927Z 2336                 return yield* Effect.fail(
2026-10-24T10:37:22.8545972Z                             ~~~~~
2026-10-24T10:37:22.8545976Z
2026-10-24T10:37:22.8545978Z
2026-10-24T10:37:22.8546020Z ---
2026-10-24T10:37:22.8546300Z vp run: 0/32 cache hit (0%), 32/32 successful. @t3tools/oxlint-plugin-t3code#typecheck (and 1 more) not cached because they modified their inputs. (Run `vp run --last-details` for full details)
2026-10-24T10:37:22.8953255Z Post job cleanup.
2026-10-24T10:37:22.9543042Z Cache hit occurred on the primary key electron-Linux-X64-854e11ddd491bd4f350eebb67a74265df119376a3984c8e153cfe5fc8ced6309, not saving cache.
2026-10-24T10:37:22.9606969Z Post job cleanup.
2026-10-24T10:37:22.9620854Z ##[start-action display=Cache full pnpm store;id=__259b328d-5014-4f25-a467-c83c2a6496d8.__actions_cache]
2026-10-24T10:37:22.9948003Z Post job cleanup.
2026-10-24T10:37:23.0566733Z Cache hit occurred on the primary key pnpm-full-v1-Linux-X64-8600a8d4a7fcc9519d421cef0c77201c793c5d8afbbef2897636b5b9305a9b7d, not saving cache.
2026-10-24T10:37:23.0595920Z ##[end-action id=__259b328d-5014-4f25-a467-c83c2a6496d8.__actions_cache;outcome=success;conclusion=success;duration_ms=97]
2026-10-24T10:37:23.0597503Z ##[start-action display=Cache Vite+;id=__259b328d-5014-4f25-a467-c83c2a6496d8.vp_cache]
2026-10-24T10:37:23.0616973Z Post job cleanup.
2026-10-24T10:37:23.1210537Z 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-24T10:37:23.1238861Z ##[end-action id=__259b328d-5014-4f25-a467-c83c2a6496d8.vp_cache;outcome=success;conclusion=success;duration_ms=64]
2026-10-24T10:37:23.1274703Z Post job cleanup.
2026-10-24T10:37:23.1675253Z [command]/usr/local/bin/git version
2026-10-24T10:37:23.1700915Z git version 2.55.0
2026-10-24T10:37:23.1717221Z Temporarily overriding HOME='/home/runner/_work/_temp/6df3730f-ea22-4b74-842d-aa950e54268d' before making global git config changes
2026-10-24T10:37:23.1717841Z Adding repository directory to the temporary git global config as a safe directory
2026-10-24T10:37:23.1719813Z [command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
2026-10-24T10:37:23.1739232Z Removing SSH command configuration
2026-10-24T10:37:23.1742807Z [command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-10-24T10:37:23.1764163Z [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-24T10:37:23.1875392Z fatal: No url found for submodule path '.repos/alchemy-effect/submodules/distilled' in .gitmodules
2026-10-24T10:37:23.1896570Z ##[warning]The process '/usr/local/bin/git' failed with exit code 128
2026-10-24T10:37:23.1932082Z A job completed hook has been configured by the self-hosted runner administrator
2026-10-24T10:37:23.1950823Z ##[group]Run '/job_completed.sh'
2026-10-24T10:37:23.1959897Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
2026-10-24T10:37:23.1960166Z env:
2026-10-24T10:37:23.1960354Z   BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 143
2026-10-24T10:37:23.1960623Z   BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 367
2026-10-24T10:37:23.1960852Z   BLACKSMITH_CHECK_RUN_ID: 120850430454
2026-10-24T10:37:23.1961100Z   BLACKSMITH_JOB_DISPLAY_NAME: Build and Typecheck
2026-10-24T10:37:23.1961264Z   GITHUB_ACTIONS_CACHE_MODE: write
2026-10-24T10:37:23.1961400Z ##[endgroup]
2026-10-24T10:37:23.2035026Z Docker container cache not activated, skipping hash computation.
2026-10-24T10:37:23.2286750Z No active SSH sessions detected. Proceeding with shutdown immediately.
2026-10-24T10:37:23.2326609Z Cleaning up orphan processes