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-24T11:04:44.0351402Z
2026-10-24T11:04:44.0351535Z 663     setPullRequestReviewers: (input) =>
2026-10-24T11:04:44.0351714Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0351794Z
2026-10-24T11:04:44.0352142Z 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-24T11:04:44.0352530Z
2026-10-24T11:04:44.0352585Z 688     runPullRequestAction: (input) =>
2026-10-24T11:04:44.0352725Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0352800Z
2026-10-24T11:04:44.0353142Z 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-24T11:04:44.0353528Z
2026-10-24T11:04:44.0353587Z 707     updatePullRequest: (input) =>
2026-10-24T11:04:44.0353722Z         ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0353797Z
2026-10-24T11:04:44.0354195Z 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-24T11:04:44.0354640Z
2026-10-24T11:04:44.0354695Z 81     listChangeRequests: (input) => {
2026-10-24T11:04:44.0354830Z        ~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0354901Z
2026-10-24T11:04:44.0355291Z 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-24T11:04:44.0355723Z
2026-10-24T11:04:44.0355777Z 109     getChangeRequest: (input) =>
2026-10-24T11:04:44.0355910Z         ~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0355982Z
2026-10-24T11:04:44.0356376Z 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-24T11:04:44.0356812Z
2026-10-24T11:04:44.0356869Z 127     createChangeRequest: (input) => {
2026-10-24T11:04:44.0357009Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0357084Z
2026-10-24T11:04:44.0357487Z 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-24T11:04:44.0357975Z
2026-10-24T11:04:44.0358032Z 156     getRepositoryCloneUrls: (input) =>
2026-10-24T11:04:44.0358176Z         ~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0358251Z
2026-10-24T11:04:44.0358638Z 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-24T11:04:44.0359065Z
2026-10-24T11:04:44.0359118Z 173     createRepository: (input) =>
2026-10-24T11:04:44.0359247Z         ~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0359317Z
2026-10-24T11:04:44.0359703Z 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-24T11:04:44.0360128Z
2026-10-24T11:04:44.0360220Z 190     getDefaultBranch: (input) =>
2026-10-24T11:04:44.0360388Z         ~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0360458Z
2026-10-24T11:04:44.0360851Z 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-24T11:04:44.0361403Z
2026-10-24T11:04:44.0361461Z 204     checkoutChangeRequest: (input) =>
2026-10-24T11:04:44.0361599Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0361676Z
2026-10-24T11:04:44.0361678Z
2026-10-24T11:04:44.0361734Z ~/packages/provider-pi$ tsc --noEmit
2026-10-24T11:04:44.0362107Z 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-24T11:04:44.0362433Z
2026-10-24T11:04:44.0362480Z 170     get: (host) =>
2026-10-24T11:04:44.0362591Z         ~~~
2026-10-24T11:04:44.0362648Z
2026-10-24T11:04:44.0362948Z 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-24T11:04:44.0363286Z
2026-10-24T11:04:44.0363382Z 183     invalidate: (host) => Cache.invalidate(cache, normalizeHost(host)),
2026-10-24T11:04:44.0363568Z         ~~~~~~~~~~
2026-10-24T11:04:44.0363632Z
2026-10-24T11:04:44.0363924Z 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-24T11:04:44.0364257Z
2026-10-24T11:04:44.0364306Z 184     cliEnv: (host) =>
2026-10-24T11:04:44.0364423Z         ~~~~~~
2026-10-24T11:04:44.0364484Z
2026-10-24T11:04:44.0364736Z src/server/GitCafePullRequestProvider.ts:341:9 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T11:04:44.0365022Z
2026-10-24T11:04:44.0365074Z 341         Effect.map(Option.some),
2026-10-24T11:04:44.0365200Z             ~~~~~~~~~~
2026-10-24T11:04:44.0365270Z
2026-10-24T11:04:44.0365511Z src/server/GitCafePullRequestProvider.ts:346:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0365794Z
2026-10-24T11:04:44.0365856Z 346               : Effect.succeed(Option.none()),
2026-10-24T11:04:44.0366007Z                     ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0366089Z
2026-10-24T11:04:44.0366333Z src/server/GitCafePullRequestProvider.ts:655:13 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T11:04:44.0366618Z
2026-10-24T11:04:44.0366673Z 655             Effect.map(Option.some),
2026-10-24T11:04:44.0366809Z                 ~~~~~~~~~~
2026-10-24T11:04:44.0366881Z
2026-10-24T11:04:44.0367121Z src/server/GitCafePullRequestProvider.ts:660:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0367402Z
2026-10-24T11:04:44.0367466Z 660                   : Effect.succeed(Option.none()),
2026-10-24T11:04:44.0367649Z                         ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0367746Z
2026-10-24T11:04:44.0368036Z 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-24T11:04:44.0368362Z
2026-10-24T11:04:44.0368446Z 673         const readPage = (rows: number, after: string | null) => {
2026-10-24T11:04:44.0368616Z                   ~~~~~~~~
2026-10-24T11:04:44.0368688Z
2026-10-24T11:04:44.0369114Z 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-24T11:04:44.0369532Z
2026-10-24T11:04:44.0369587Z 790             Effect.catch((error) =>
2026-10-24T11:04:44.0369831Z                 ~~~~~~~~~~~~
2026-10-24T11:04:44.0369906Z
2026-10-24T11:04:44.0370244Z 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-24T11:04:44.0370619Z
2026-10-24T11:04:44.0370675Z 868                   Effect.catch((error) =>
2026-10-24T11:04:44.0370817Z                       ~~~~~~~~~~~~
2026-10-24T11:04:44.0370899Z
2026-10-24T11:04:44.0370901Z
2026-10-24T11:04:44.0370960Z ~/packages/provider-muse$ tsc --noEmit
2026-10-24T11:04:44.0371434Z 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-24T11:04:44.0371861Z
2026-10-24T11:04:44.0371914Z 340     getChangeRequest: (input) =>
2026-10-24T11:04:44.0372045Z         ~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0372116Z
2026-10-24T11:04:44.0372118Z
2026-10-24T11:04:44.0372179Z ~/packages/provider-opencode$ tsc --noEmit
2026-10-24T11:04:44.0372588Z 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-24T11:04:44.0373209Z
2026-10-24T11:04:44.0373306Z 440     getCapabilities: () => Effect.succeed(PiProviderCapabilitiesV2),
2026-10-24T11:04:44.0373488Z         ~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0373557Z
2026-10-24T11:04:44.0373885Z 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-24T11:04:44.0374250Z
2026-10-24T11:04:44.0374369Z 441     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T11:04:44.0374582Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0374661Z
2026-10-24T11:04:44.0374875Z src/server/adapter.ts:1694:31 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T11:04:44.0375130Z
2026-10-24T11:04:44.0375199Z 1694                               Effect.map(Option.some),
2026-10-24T11:04:44.0375358Z                                    ~~~~~~~~~~
2026-10-24T11:04:44.0375449Z
2026-10-24T11:04:44.0375661Z src/server/adapter.ts:1697:29 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0375912Z
2026-10-24T11:04:44.0375981Z 1697                           : Effect.succeed(Option.none()),
2026-10-24T11:04:44.0376145Z                                  ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0376239Z
2026-10-24T11:04:44.0376480Z 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-24T11:04:44.0376765Z
2026-10-24T11:04:44.0376815Z 334       onSuccess: () =>
2026-10-24T11:04:44.0376930Z           ~~~~~~~~~
2026-10-24T11:04:44.0376996Z
2026-10-24T11:04:44.0377203Z src/server/rpc.ts:342:17 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T11:04:44.0377447Z
2026-10-24T11:04:44.0377502Z 342                 Effect.map(Option.some),
2026-10-24T11:04:44.0377683Z                     ~~~~~~~~~~
2026-10-24T11:04:44.0377762Z
2026-10-24T11:04:44.0377764Z
2026-10-24T11:04:44.0377876Z ~/packages/provider-cursor$ tsc --noEmit
2026-10-24T11:04:44.0378325Z 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-24T11:04:44.0378808Z
2026-10-24T11:04:44.0378903Z 284     getCapabilities: () => Effect.succeed(MuseProviderCapabilitiesV2),
2026-10-24T11:04:44.0379089Z         ~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0379159Z
2026-10-24T11:04:44.0379485Z 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-24T11:04:44.0379854Z
2026-10-24T11:04:44.0379973Z 285     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T11:04:44.0380178Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0380257Z
2026-10-24T11:04:44.0380519Z 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-24T11:04:44.0380822Z
2026-10-24T11:04:44.0380873Z 388             TimeoutError: (cause) =>
2026-10-24T11:04:44.0381012Z                 ~~~~~~~~~~~~
2026-10-24T11:04:44.0381087Z
2026-10-24T11:04:44.0381297Z src/server/adapter.ts:1366:35 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T11:04:44.0381548Z
2026-10-24T11:04:44.0381672Z 1366                   wake === held ? Effect.map(dispatch, Option.some) : Effect.succeed(Option.none()),
2026-10-24T11:04:44.0381884Z                                        ~~~~~~~~~~
2026-10-24T11:04:44.0381981Z
2026-10-24T11:04:44.0382194Z src/server/adapter.ts:1366:71 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0382443Z
2026-10-24T11:04:44.0382559Z 1366                   wake === held ? Effect.map(dispatch, Option.some) : Effect.succeed(Option.none()),
2026-10-24T11:04:44.0382789Z                                                                            ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0382905Z
2026-10-24T11:04:44.0382907Z
2026-10-24T11:04:44.0382964Z ~/packages/provider-grok$ tsc --noEmit
2026-10-24T11:04:44.0383325Z 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-24T11:04:44.0383633Z
2026-10-24T11:04:44.0383689Z 147     return Effect.succeed(undefined);
2026-10-24T11:04:44.0383826Z                ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0383911Z
2026-10-24T11:04:44.0384301Z 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-24T11:04:44.0384724Z
2026-10-24T11:04:44.0384784Z 188       if (!recordable) return Effect.void;
2026-10-24T11:04:44.0384931Z                            ~~~~~~
2026-10-24T11:04:44.0385011Z
2026-10-24T11:04:44.0385389Z 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-24T11:04:44.0385805Z
2026-10-24T11:04:44.0385857Z 208         return Effect.void;
2026-10-24T11:04:44.0385977Z             ~~~~~~
2026-10-24T11:04:44.0386040Z
2026-10-24T11:04:44.0386467Z 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-24T11:04:44.0386925Z
2026-10-24T11:04:44.0386967Z 228       return fs
2026-10-24T11:04:44.0387073Z           ~~~~~~
2026-10-24T11:04:44.0387133Z
2026-10-24T11:04:44.0387430Z 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-24T11:04:44.0387898Z
2026-10-24T11:04:44.0388005Z 311   OpenCodeServerLedger.of({ track: () => Effect.succeed(Effect.void) }),
2026-10-24T11:04:44.0388198Z                                 ~~~~~
2026-10-24T11:04:44.0388283Z
2026-10-24T11:04:44.0388589Z 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-24T11:04:44.0388932Z
2026-10-24T11:04:44.0388980Z 169     withServer: (use) =>
2026-10-24T11:04:44.0389104Z         ~~~~~~~~~~
2026-10-24T11:04:44.0389167Z
2026-10-24T11:04:44.0389548Z 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-24T11:04:44.0389969Z
2026-10-24T11:04:44.0390086Z 103 const OPENCODE_TEST_SETTINGS = Schema.decodeUnknownSync(OpenCodeSettings)({});
2026-10-24T11:04:44.0390299Z                                           ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0390400Z
2026-10-24T11:04:44.0390717Z 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-24T11:04:44.0391070Z
2026-10-24T11:04:44.0391181Z 938     getCapabilities: () => Effect.succeed(OpenCodeProviderCapabilitiesV2),
2026-10-24T11:04:44.0391374Z         ~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0391444Z
2026-10-24T11:04:44.0391776Z 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-24T11:04:44.0392148Z
2026-10-24T11:04:44.0392268Z 939     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T11:04:44.0392478Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0392554Z
2026-10-24T11:04:44.0392844Z 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-24T11:04:44.0393168Z
2026-10-24T11:04:44.0393243Z 1011         const abortController = new AbortController();
2026-10-24T11:04:44.0393414Z                                      ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0393513Z
2026-10-24T11:04:44.0393830Z 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-24T11:04:44.0394185Z
2026-10-24T11:04:44.0394262Z 1088           if (failure) return yield* Effect.fail(failure);
2026-10-24T11:04:44.0394430Z                                    ~~~~~
2026-10-24T11:04:44.0394515Z
2026-10-24T11:04:44.0394789Z 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-24T11:04:44.0395106Z
2026-10-24T11:04:44.0395185Z 1584               Effect.catch(() => Effect.succeed(undefined)),
2026-10-24T11:04:44.0395351Z                    ~~~~~~~~~~~~
2026-10-24T11:04:44.0395478Z
2026-10-24T11:04:44.0395773Z 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-24T11:04:44.0396063Z
2026-10-24T11:04:44.0396137Z 1584               Effect.catch(() => Effect.succeed(undefined)),
2026-10-24T11:04:44.0396423Z                                       ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0396526Z
2026-10-24T11:04:44.0396808Z 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-24T11:04:44.0397140Z
2026-10-24T11:04:44.0397225Z 3194                 admissionAbortController: new AbortController(),
2026-10-24T11:04:44.0397407Z                                                ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0397510Z
2026-10-24T11:04:44.0397835Z 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-24T11:04:44.0403470Z
2026-10-24T11:04:44.0403565Z 3354               turn.admissionAbortController = new AbortController();
2026-10-24T11:04:44.0403759Z                                                    ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0403864Z
2026-10-24T11:04:44.0404152Z 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-24T11:04:44.0404473Z
2026-10-24T11:04:44.0404533Z 158     connect: ({ baseUrl, password }) => {
2026-10-24T11:04:44.0404678Z         ~~~~~~~
2026-10-24T11:04:44.0404740Z
2026-10-24T11:04:44.0405035Z 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-24T11:04:44.0405370Z
2026-10-24T11:04:44.0405423Z 160       withConnection: (use) =>
2026-10-24T11:04:44.0405552Z           ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0405624Z
2026-10-24T11:04:44.0405920Z 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-24T11:04:44.0406255Z
2026-10-24T11:04:44.0406308Z 175     withConnection: (use) =>
2026-10-24T11:04:44.0406432Z         ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0406500Z
2026-10-24T11:04:44.0406717Z src/server/v2/adapter.ts:1544:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0406971Z
2026-10-24T11:04:44.0407098Z 1544           wake.dropped ? Effect.succeed(Option.none()) : Effect.map(dispatch, Option.some),
2026-10-24T11:04:44.0407312Z                               ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0407403Z
2026-10-24T11:04:44.0407661Z src/server/v2/adapter.ts:1544:58 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T11:04:44.0407921Z
2026-10-24T11:04:44.0408042Z 1544           wake.dropped ? Effect.succeed(Option.none()) : Effect.map(dispatch, Option.some),
2026-10-24T11:04:44.0408262Z                                                               ~~~~~~~~~~
2026-10-24T11:04:44.0408366Z
2026-10-24T11:04:44.0408686Z 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-24T11:04:44.0409041Z
2026-10-24T11:04:44.0409149Z 4137     getCapabilities: () => Effect.succeed(OpenCode2ProviderCapabilities),
2026-10-24T11:04:44.0409340Z          ~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0409480Z
2026-10-24T11:04:44.0409877Z 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-24T11:04:44.0410374Z
2026-10-24T11:04:44.0410491Z 4138     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T11:04:44.0410691Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0410770Z
2026-10-24T11:04:44.0410771Z
2026-10-24T11:04:44.0410840Z ~/packages/provider-acp-registry$ tsc --noEmit
2026-10-24T11:04:44.0411278Z 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-24T11:04:44.0411649Z
2026-10-24T11:04:44.0411719Z 31       read: (credentialSource, sinceMs, untilMs) =>
2026-10-24T11:04:44.0411869Z          ~~~~
2026-10-24T11:04:44.0411928Z
2026-10-24T11:04:44.0412211Z 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-24T11:04:44.0412531Z
2026-10-24T11:04:44.0412578Z 82     read: (apiKey) =>
2026-10-24T11:04:44.0412772Z        ~~~~
2026-10-24T11:04:44.0412857Z
2026-10-24T11:04:44.0413173Z 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-24T11:04:44.0413486Z
2026-10-24T11:04:44.0413535Z 360     Effect.catch(() =>
2026-10-24T11:04:44.0413650Z         ~~~~~~~~~~~~
2026-10-24T11:04:44.0413717Z
2026-10-24T11:04:44.0414033Z 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-24T11:04:44.0414390Z
2026-10-24T11:04:44.0414490Z 904     getCapabilities: () => Effect.succeed(CursorProviderCapabilitiesV2),
2026-10-24T11:04:44.0414678Z         ~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0414746Z
2026-10-24T11:04:44.0415074Z 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-24T11:04:44.0415443Z
2026-10-24T11:04:44.0415562Z 905     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T11:04:44.0415767Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0415845Z
2026-10-24T11:04:44.0416291Z 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-24T11:04:44.0416769Z
2026-10-24T11:04:44.0416821Z 55       Effect.runPromise(
2026-10-24T11:04:44.0416941Z          ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0417011Z
2026-10-24T11:04:44.0417273Z 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-24T11:04:44.0417611Z
2026-10-24T11:04:44.0417679Z 59               onNone: () => Effect.succeed(undefined),
2026-10-24T11:04:44.0417838Z                                ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0417935Z
2026-10-24T11:04:44.0418434Z 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-24T11:04:44.0418950Z
2026-10-24T11:04:44.0419001Z 69       Effect.runPromise(
2026-10-24T11:04:44.0419120Z          ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0419191Z
2026-10-24T11:04:44.0419623Z 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-24T11:04:44.0420238Z
2026-10-24T11:04:44.0420308Z 82     clear: () => Effect.runPromise(credentials.remove),
2026-10-24T11:04:44.0420468Z                     ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0420552Z
2026-10-24T11:04:44.0420879Z 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-24T11:04:44.0421243Z
2026-10-24T11:04:44.0421301Z 228           Effect.flatMap((snapshot) =>
2026-10-24T11:04:44.0421440Z               ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0421516Z
2026-10-24T11:04:44.0421707Z src/server/usageLimits.test.ts:74:5 - suggestion TS377017: This Effect.gen contains a single return statement. effect(unnecessaryEffectGen)
2026-10-24T11:04:44.0421939Z
2026-10-24T11:04:44.0421990Z  74     Effect.gen(function* () {
2026-10-24T11:04:44.0422120Z         ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0422249Z  75       yield* withNodeServices(
2026-10-24T11:04:44.0422379Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0422495Z ...
2026-10-24T11:04:44.0422585Z 115       );
2026-10-24T11:04:44.0422684Z     ~~~~~~~~
2026-10-24T11:04:44.0422777Z 116     }),
2026-10-24T11:04:44.0422874Z     ~~~~~~
2026-10-24T11:04:44.0422928Z
2026-10-24T11:04:44.0422930Z
2026-10-24T11:04:44.0422987Z ~/packages/client-runtime$ tsc --noEmit
2026-10-24T11:04:44.0423399Z 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-24T11:04:44.0423756Z
2026-10-24T11:04:44.0423808Z 174       Effect.flatMap((snapshot) =>
2026-10-24T11:04:44.0423943Z           ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0424012Z
2026-10-24T11:04:44.0424249Z 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-24T11:04:44.0424522Z
2026-10-24T11:04:44.0424591Z 1507       }).pipe(Effect.catch(() => Effect.void));
2026-10-24T11:04:44.0424741Z                    ~~~~~~~~~~~~
2026-10-24T11:04:44.0424818Z
2026-10-24T11:04:44.0425072Z 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-24T11:04:44.0425363Z
2026-10-24T11:04:44.0425425Z 1507       }).pipe(Effect.catch(() => Effect.void));
2026-10-24T11:04:44.0425574Z                    ~~~~~~~~~~~~
2026-10-24T11:04:44.0425648Z
2026-10-24T11:04:44.0425991Z 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-24T11:04:44.0426374Z
2026-10-24T11:04:44.0426433Z 1588             Effect.catchCause((cause) =>
2026-10-24T11:04:44.0426576Z                  ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0426657Z
2026-10-24T11:04:44.0426659Z
2026-10-24T11:04:44.0426911Z src/server/AcpRegistryRuntimeCoordinator.ts:154:52 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T11:04:44.0427200Z
2026-10-24T11:04:44.0427383Z 154         return yield* Effect.raceFirst(effect.pipe(Effect.map(Option.some)), foregroundStarted);
2026-10-24T11:04:44.0427695Z                                                        ~~~~~~~~~~
2026-10-24T11:04:44.0427799Z
2026-10-24T11:04:44.0428116Z 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-24T11:04:44.0428597Z
2026-10-24T11:04:44.0428649Z 1301         Effect.catch((error) =>
2026-10-24T11:04:44.0428779Z              ~~~~~~~~~~~~
2026-10-24T11:04:44.0428851Z
2026-10-24T11:04:44.0429142Z 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-24T11:04:44.0429470Z
2026-10-24T11:04:44.0429524Z 146             Option.isSome(result)
2026-10-24T11:04:44.0429656Z                 ~~~~~~~~~~~~~
2026-10-24T11:04:44.0429735Z
2026-10-24T11:04:44.0429988Z 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-24T11:04:44.0430283Z
2026-10-24T11:04:44.0430383Z 640       enrichSnapshot: ({ snapshot, getSnapshot, publishSnapshot }) => {
2026-10-24T11:04:44.0430566Z           ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0430639Z
2026-10-24T11:04:44.0430850Z src/server/driver.ts:650:51 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T11:04:44.0431098Z
2026-10-24T11:04:44.0431199Z 650             : enrichProviderCached(snapshot).pipe(Effect.map(Option.some))
2026-10-24T11:04:44.0431396Z                                                       ~~~~~~~~~~
2026-10-24T11:04:44.0431500Z
2026-10-24T11:04:44.0431502Z
2026-10-24T11:04:44.0431732Z src/authorization/remote.test.ts:232:25 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0431996Z
2026-10-24T11:04:44.0432102Z 232               identity: Effect.succeed(Option.some({ accountId: "user_connect" })),
2026-10-24T11:04:44.0432301Z                             ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0432388Z
2026-10-24T11:04:44.0432614Z src/authorization/remote.test.ts:237:17 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0432886Z
2026-10-24T11:04:44.0432960Z 237             id: Effect.succeed(Option.some("device-1")),
2026-10-24T11:04:44.0433116Z                     ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0433198Z
2026-10-24T11:04:44.0433535Z 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-24T11:04:44.0433903Z
2026-10-24T11:04:44.0433956Z 553     authorizeDpop: (input) =>
2026-10-24T11:04:44.0434086Z         ~~~~~~~~~~~~~
2026-10-24T11:04:44.0434152Z
2026-10-24T11:04:44.0434485Z 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-24T11:04:44.0434861Z
2026-10-24T11:04:44.0434916Z 555     authorizeDpopHttp: (input) =>
2026-10-24T11:04:44.0435048Z         ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0435119Z
2026-10-24T11:04:44.0435444Z 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-24T11:04:44.0435804Z
2026-10-24T11:04:44.0435849Z 138       get: (entry) =>
2026-10-24T11:04:44.0435963Z           ~~~
2026-10-24T11:04:44.0436020Z
2026-10-24T11:04:44.0436403Z 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-24T11:04:44.0436820Z
2026-10-24T11:04:44.0436941Z 143       set: (entry, permission) => {
2026-10-24T11:04:44.0437113Z           ~~~
2026-10-24T11:04:44.0437171Z
2026-10-24T11:04:44.0437501Z 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-24T11:04:44.0438051Z
2026-10-24T11:04:44.0438102Z 159       forget: (environmentId) =>
2026-10-24T11:04:44.0438232Z           ~~~~~~
2026-10-24T11:04:44.0438291Z
2026-10-24T11:04:44.0438599Z 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-24T11:04:44.0438944Z
2026-10-24T11:04:44.0438998Z 298     registerPairing: (input) =>
2026-10-24T11:04:44.0439126Z         ~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0439195Z
2026-10-24T11:04:44.0439494Z 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-24T11:04:44.0439830Z
2026-10-24T11:04:44.0439879Z 304     registerSsh: (input) =>
2026-10-24T11:04:44.0440002Z         ~~~~~~~~~~~
2026-10-24T11:04:44.0440064Z
2026-10-24T11:04:44.0440361Z 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-24T11:04:44.0440694Z
2026-10-24T11:04:44.0440749Z 309     updateBearer: (input) =>
2026-10-24T11:04:44.0440873Z         ~~~~~~~~~~~~
2026-10-24T11:04:44.0440937Z
2026-10-24T11:04:44.0441199Z 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-24T11:04:44.0441501Z
2026-10-24T11:04:44.0441555Z 1392             ? Effect.succeed(undefined)
2026-10-24T11:04:44.0441695Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0441782Z
2026-10-24T11:04:44.0442041Z 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-24T11:04:44.0442339Z
2026-10-24T11:04:44.0442391Z 1476             ? Effect.succeed(undefined)
2026-10-24T11:04:44.0442526Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0442610Z
2026-10-24T11:04:44.0442871Z 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-24T11:04:44.0443169Z
2026-10-24T11:04:44.0443231Z 1489                     : Effect.succeed(undefined),
2026-10-24T11:04:44.0443385Z                            ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0443480Z
2026-10-24T11:04:44.0443723Z src/platform/orchestrationCache.test.ts:104:15 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T11:04:44.0444002Z
2026-10-24T11:04:44.0444057Z 104       }).pipe(Effect.map(Option.some));
2026-10-24T11:04:44.0444195Z                   ~~~~~~~~~~
2026-10-24T11:04:44.0444265Z
2026-10-24T11:04:44.0444678Z 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-24T11:04:44.0445122Z
2026-10-24T11:04:44.0445208Z 72       load: (prepared: PreparedConnection, threadId: ThreadId) => {
2026-10-24T11:04:44.0445375Z          ~~~~
2026-10-24T11:04:44.0445432Z
2026-10-24T11:04:44.0445718Z 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-24T11:04:44.0446160Z
2026-10-24T11:04:44.0446258Z 56             Effect.catch(() => Effect.succeed(Option.none<AuthSessionState>())),
2026-10-24T11:04:44.0446442Z                ~~~~~~~~~~~~
2026-10-24T11:04:44.0446512Z
2026-10-24T11:04:44.0446842Z 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-24T11:04:44.0447210Z
2026-10-24T11:04:44.0447264Z 62             return yield* Effect.fail(
2026-10-24T11:04:44.0447397Z                       ~~~~~
2026-10-24T11:04:44.0447468Z
2026-10-24T11:04:44.0447803Z 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-24T11:04:44.0448127Z
2026-10-24T11:04:44.0448218Z 57     execute: (target: OutdatedServerUpdateTarget, atomRegistry) => {
2026-10-24T11:04:44.0448393Z        ~~~~~~~
2026-10-24T11:04:44.0448452Z
2026-10-24T11:04:44.0448758Z 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-24T11:04:44.0449102Z
2026-10-24T11:04:44.0449155Z 90       load: (prepared, input) =>
2026-10-24T11:04:44.0449276Z          ~~~~
2026-10-24T11:04:44.0449334Z
2026-10-24T11:04:44.0449729Z 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-24T11:04:44.0450161Z
2026-10-24T11:04:44.0450260Z 34       return yield* Schema.decodeUnknownEffect(codec)(stored.value).pipe(
2026-10-24T11:04:44.0450450Z                               ~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0450543Z
2026-10-24T11:04:44.0450765Z src/state/queryPersistence.ts:35:9 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T11:04:44.0451026Z
2026-10-24T11:04:44.0451077Z 35         Effect.map(Option.some),
2026-10-24T11:04:44.0451203Z            ~~~~~~~~~~
2026-10-24T11:04:44.0451267Z
2026-10-24T11:04:44.0451527Z 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-24T11:04:44.0451827Z
2026-10-24T11:04:44.0451884Z 680     execute: (target, atomRegistry) => {
2026-10-24T11:04:44.0452013Z         ~~~~~~~
2026-10-24T11:04:44.0452072Z
2026-10-24T11:04:44.0452399Z 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-24T11:04:44.0452834Z
2026-10-24T11:04:44.0452889Z 1125           Effect.flatMap((summary) =>
2026-10-24T11:04:44.0453026Z                ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0453100Z
2026-10-24T11:04:44.0453317Z src/state/shell-sync.test.ts:90:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0453570Z
2026-10-24T11:04:44.0453695Z 90         loadShell: () => Effect.succeed(Option.none()),
2026-10-24T11:04:44.0453921Z                             ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0454009Z
2026-10-24T11:04:44.0454222Z src/state/shell-sync.test.ts:96:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0454649Z
2026-10-24T11:04:44.0454720Z 96         loadThread: () => Effect.succeed(Option.none()),
2026-10-24T11:04:44.0454878Z                              ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0454964Z
2026-10-24T11:04:44.0455180Z src/state/shell-sync.test.ts:99:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0455437Z
2026-10-24T11:04:44.0455517Z 99         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-24T11:04:44.0455683Z                                    ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0455775Z
2026-10-24T11:04:44.0455995Z src/state/shell-sync.test.ts:101:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0456247Z
2026-10-24T11:04:44.0456322Z 101         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-24T11:04:44.0456481Z                                ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0456572Z
2026-10-24T11:04:44.0456787Z src/state/shell-sync.test.ts:108:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0457042Z
2026-10-24T11:04:44.0457106Z 108         load: () => Effect.succeed(Option.none()),
2026-10-24T11:04:44.0457255Z                         ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0457338Z
2026-10-24T11:04:44.0457551Z src/state/shell-sync.test.ts:229:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0457841Z
2026-10-24T11:04:44.0457913Z 229         loadShell: () => Effect.succeed(Option.none()),
2026-10-24T11:04:44.0458069Z                              ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0458152Z
2026-10-24T11:04:44.0458365Z src/state/shell-sync.test.ts:238:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0458621Z
2026-10-24T11:04:44.0458694Z 238         loadThread: () => Effect.succeed(Option.none()),
2026-10-24T11:04:44.0458851Z                               ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0458938Z
2026-10-24T11:04:44.0459154Z src/state/shell-sync.test.ts:241:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0459407Z
2026-10-24T11:04:44.0459489Z 241         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-24T11:04:44.0459661Z                                     ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0459753Z
2026-10-24T11:04:44.0459968Z src/state/shell-sync.test.ts:243:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0460221Z
2026-10-24T11:04:44.0460295Z 243         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-24T11:04:44.0460452Z                                ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0460457Z
2026-10-24T11:04:44.0460669Z src/state/shell-sync.test.ts:250:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0460671Z
2026-10-24T11:04:44.0460735Z 250         load: () => Effect.succeed(Option.none()),
2026-10-24T11:04:44.0460781Z                         ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0460783Z
2026-10-24T11:04:44.0460993Z src/state/shell-sync.test.ts:349:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0460996Z
2026-10-24T11:04:44.0461109Z 349         loadShell: () => Effect.succeed(Option.none()),
2026-10-24T11:04:44.0461169Z                              ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0461172Z
2026-10-24T11:04:44.0461412Z src/state/shell-sync.test.ts:355:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0461460Z
2026-10-24T11:04:44.0461569Z 355         loadThread: () => Effect.succeed(Option.none()),
2026-10-24T11:04:44.0461644Z                               ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0461646Z
2026-10-24T11:04:44.0461858Z src/state/shell-sync.test.ts:358:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0461860Z
2026-10-24T11:04:44.0461940Z 358         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-24T11:04:44.0461992Z                                     ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0461994Z
2026-10-24T11:04:44.0462207Z src/state/shell-sync.test.ts:360:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0462210Z
2026-10-24T11:04:44.0462281Z 360         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-24T11:04:44.0462331Z                                ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0462335Z
2026-10-24T11:04:44.0462545Z src/state/shell-sync.test.ts:367:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0462548Z
2026-10-24T11:04:44.0462611Z 367         load: () => Effect.succeed(Option.none()),
2026-10-24T11:04:44.0462655Z                         ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0462657Z
2026-10-24T11:04:44.0462869Z src/state/shell-sync.test.ts:446:26 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0462871Z
2026-10-24T11:04:44.0462959Z 446         loadShell: () => Effect.succeed(Option.some(cachedSnapshot)),
2026-10-24T11:04:44.0463008Z                              ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0463010Z
2026-10-24T11:04:44.0463221Z src/state/shell-sync.test.ts:448:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0463225Z
2026-10-24T11:04:44.0463294Z 448         loadThread: () => Effect.succeed(Option.none()),
2026-10-24T11:04:44.0463342Z                               ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0463345Z
2026-10-24T11:04:44.0463554Z src/state/shell-sync.test.ts:451:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0463556Z
2026-10-24T11:04:44.0463636Z 451         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-24T11:04:44.0463685Z                                     ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0463687Z
2026-10-24T11:04:44.0463900Z src/state/shell-sync.test.ts:453:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0463902Z
2026-10-24T11:04:44.0463973Z 453         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-24T11:04:44.0464022Z                                ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0464025Z
2026-10-24T11:04:44.0464236Z src/state/shell-sync.test.ts:460:21 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0464238Z
2026-10-24T11:04:44.0464312Z 460         load: () => Effect.succeed(Option.some(httpSnapshot)),
2026-10-24T11:04:44.0464357Z                         ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0464360Z
2026-10-24T11:04:44.0464656Z 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-24T11:04:44.0464699Z
2026-10-24T11:04:44.0464782Z 98       load: (prepared: PreparedConnection) =>
2026-10-24T11:04:44.0464835Z          ~~~~
2026-10-24T11:04:44.0464837Z
2026-10-24T11:04:44.0465191Z 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-24T11:04:44.0465238Z
2026-10-24T11:04:44.0465342Z 52       register: (environmentId, threadId, handler) =>
2026-10-24T11:04:44.0465407Z          ~~~~~~~~
2026-10-24T11:04:44.0465410Z
2026-10-24T11:04:44.0465739Z 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-24T11:04:44.0465741Z
2026-10-24T11:04:44.0465792Z 64       unregister: (registration) =>
2026-10-24T11:04:44.0465836Z          ~~~~~~~~~~
2026-10-24T11:04:44.0465838Z
2026-10-24T11:04:44.0466204Z 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-24T11:04:44.0466209Z
2026-10-24T11:04:44.0466289Z 79       loadEarlier: (environmentId, threadId, throughEntryId) =>
2026-10-24T11:04:44.0466332Z          ~~~~~~~~~~~
2026-10-24T11:04:44.0466334Z
2026-10-24T11:04:44.0466695Z 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-24T11:04:44.0466697Z
2026-10-24T11:04:44.0466770Z 89       reconcilePendingWork: (environmentId, threadId) =>
2026-10-24T11:04:44.0466818Z          ~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0466820Z
2026-10-24T11:04:44.0467042Z src/state/threads-sync.test.ts:1458:29 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0467044Z
2026-10-24T11:04:44.0467125Z 1458             : { loadCached: Effect.succeed(Option.some(saved!)) },
2026-10-24T11:04:44.0467176Z                                  ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0467179Z
2026-10-24T11:04:44.0467440Z 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-24T11:04:44.0467442Z
2026-10-24T11:04:44.0467529Z 447       execute: (input: RunVcsStackedActionInput, registry) => {
2026-10-24T11:04:44.0467589Z           ~~~~~~~
2026-10-24T11:04:44.0467591Z
2026-10-24T11:04:44.0467593Z
2026-10-24T11:04:44.0467642Z ~/apps/mobile$ tsc --noEmit
2026-10-24T11:04:44.0467717Z ~/infra/relay$ tsc --noEmit
2026-10-24T11:04:44.0467764Z ~/apps/web$ tsc --noEmit
2026-10-24T11:04:44.0467807Z Result (22 files):
2026-10-24T11:04:44.0467849Z - 0 errors
2026-10-24T11:04:44.0467889Z - 0 warnings
2026-10-24T11:04:44.0467929Z - 0 hints
2026-10-24T11:04:44.0467932Z
2026-10-24T11:04:44.0467934Z
2026-10-24T11:04:44.0467984Z ~/apps/desktop$ tsc --noEmit
2026-10-24T11:04:44.0468292Z 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-24T11:04:44.0468295Z
2026-10-24T11:04:44.0468340Z 220           send: (body) =>
2026-10-24T11:04:44.0468381Z               ~~~~
2026-10-24T11:04:44.0468383Z
2026-10-24T11:04:44.0468677Z 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-24T11:04:44.0468719Z
2026-10-24T11:04:44.0468779Z 12       onFailure: (error) =>
2026-10-24T11:04:44.0468843Z          ~~~~~~~~~
2026-10-24T11:04:44.0468846Z
2026-10-24T11:04:44.0469159Z 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-24T11:04:44.0469203Z
2026-10-24T11:04:44.0469280Z 64     pauseUntil: (untilMillis) =>
2026-10-24T11:04:44.0469345Z        ~~~~~~~~~~
2026-10-24T11:04:44.0469348Z
2026-10-24T11:04:44.0469599Z 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-24T11:04:44.0469602Z
2026-10-24T11:04:44.0469647Z 198         onNone: () =>
2026-10-24T11:04:44.0469687Z             ~~~~~~
2026-10-24T11:04:44.0469689Z
2026-10-24T11:04:44.0469951Z src/previewTunnelSweep.test.ts:53:11 - suggestion TS377124: `Effect.provideService` provides this inline single-service layer directly. effect(provideLayerSucceedToProvideService)
2026-10-24T11:04:44.0469953Z
2026-10-24T11:04:44.0470069Z 53   }).pipe(Effect.provide(Layer.succeed(HttpClient.HttpClient, cloudflare.client)));
2026-10-24T11:04:44.0470114Z              ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0470116Z
2026-10-24T11:04:44.0470388Z 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-24T11:04:44.0470392Z
2026-10-24T11:04:44.0470495Z 92   fileResponse: () => Effect.die("Relay API does not serve filesystem responses"),
2026-10-24T11:04:44.0470535Z      ~~~~~~~~~~~~
2026-10-24T11:04:44.0470537Z
2026-10-24T11:04:44.0470815Z 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-24T11:04:44.0470818Z
2026-10-24T11:04:44.0470920Z 93   fileWebResponse: () => Effect.die("Relay API does not serve file responses"),
2026-10-24T11:04:44.0470959Z      ~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0470962Z
2026-10-24T11:04:44.0471208Z 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-24T11:04:44.0471212Z
2026-10-24T11:04:44.0471275Z 242       hold: ({ endpointKey, baseUrl, hook }) =>
2026-10-24T11:04:44.0471315Z           ~~~~
2026-10-24T11:04:44.0471317Z
2026-10-24T11:04:44.0471565Z 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-24T11:04:44.0471567Z
2026-10-24T11:04:44.0471622Z 244       wake: ({ endpointKey, baseUrl }) =>
2026-10-24T11:04:44.0471665Z           ~~~~
2026-10-24T11:04:44.0471667Z
2026-10-24T11:04:44.0471918Z 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-24T11:04:44.0471920Z
2026-10-24T11:04:44.0471972Z 246       clear: ({ endpointKey }) =>
2026-10-24T11:04:44.0472011Z           ~~~~~
2026-10-24T11:04:44.0472014Z
2026-10-24T11:04:44.0472320Z 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-24T11:04:44.0472322Z
2026-10-24T11:04:44.0472369Z 275               send: (body) =>
2026-10-24T11:04:44.0472411Z                   ~~~~
2026-10-24T11:04:44.0472413Z
2026-10-24T11:04:44.0472415Z
2026-10-24T11:04:44.0472762Z 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-24T11:04:44.0472765Z
2026-10-24T11:04:44.0472896Z 389     complete: (response) => Effect.sync(() => broker.complete(response)),
2026-10-24T11:04:44.0472935Z         ~~~~~~~~
2026-10-24T11:04:44.0472977Z
2026-10-24T11:04:44.0473268Z src/app/DesktopClerk.test.ts:300:27 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0473271Z
2026-10-24T11:04:44.0473355Z 300       currentMainOrFirst: Effect.succeed(Option.some(window)),
2026-10-24T11:04:44.0473402Z                               ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0473404Z
2026-10-24T11:04:44.0473672Z 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-24T11:04:44.0473675Z
2026-10-24T11:04:44.0473724Z 461     onSome: (logFile) =>
2026-10-24T11:04:44.0473762Z         ~~~~~~
2026-10-24T11:04:44.0473764Z
2026-10-24T11:04:44.0474077Z 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-24T11:04:44.0474081Z
2026-10-24T11:04:44.0474137Z 591       forInstance: (id) => makeForId(id),
2026-10-24T11:04:44.0474178Z           ~~~~~~~~~~~
2026-10-24T11:04:44.0474180Z
2026-10-24T11:04:44.0474400Z src/app/DesktopWebLinks.test.ts:29:31 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0474402Z
2026-10-24T11:04:44.0474486Z 29           currentMainOrFirst: Effect.succeed(Option.some(window)),
2026-10-24T11:04:44.0474536Z                                  ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0474538Z
2026-10-24T11:04:44.0474811Z 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-24T11:04:44.0474814Z
2026-10-24T11:04:44.0474858Z 72     receive: (url) =>
2026-10-24T11:04:44.0474898Z        ~~~~~~~
2026-10-24T11:04:44.0474901Z
2026-10-24T11:04:44.0475190Z 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-24T11:04:44.0475192Z
2026-10-24T11:04:44.0475243Z 77     setRendererReady: (ready) =>
2026-10-24T11:04:44.0475284Z        ~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0475286Z
2026-10-24T11:04:44.0475558Z 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-24T11:04:44.0475562Z
2026-10-24T11:04:44.0475606Z 1062       onSome: (run) =>
2026-10-24T11:04:44.0475646Z            ~~~~~~
2026-10-24T11:04:44.0475648Z
2026-10-24T11:04:44.0475929Z 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-24T11:04:44.0475932Z
2026-10-24T11:04:44.0475974Z 307       get: (id) =>
2026-10-24T11:04:44.0476013Z           ~~~
2026-10-24T11:04:44.0476016Z
2026-10-24T11:04:44.0476295Z 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-24T11:04:44.0476297Z
2026-10-24T11:04:44.0476386Z 342         get: (id) => Effect.succeed(Option.fromNullishOr(byId.get(id))),
2026-10-24T11:04:44.0476426Z             ~~~
2026-10-24T11:04:44.0476428Z
2026-10-24T11:04:44.0476756Z 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-24T11:04:44.0476759Z
2026-10-24T11:04:44.0476919Z 345         register: () => Effect.die("DesktopBackendPool.layerTest does not support register"),
2026-10-24T11:04:44.0477025Z             ~~~~~~~~
2026-10-24T11:04:44.0477028Z
2026-10-24T11:04:44.0477361Z 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-24T11:04:44.0477364Z
2026-10-24T11:04:44.0477491Z 346         unregister: () => Effect.die("DesktopBackendPool.layerTest does not support unregister"),
2026-10-24T11:04:44.0477531Z             ~~~~~~~~~~
2026-10-24T11:04:44.0477533Z
2026-10-24T11:04:44.0477832Z 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-24T11:04:44.0477834Z
2026-10-24T11:04:44.0477877Z 145   exit: (code) =>
2026-10-24T11:04:44.0477916Z       ~~~~
2026-10-24T11:04:44.0477918Z
2026-10-24T11:04:44.0478191Z 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-24T11:04:44.0478194Z
2026-10-24T11:04:44.0478241Z 149   relaunch: (options) =>
2026-10-24T11:04:44.0478282Z       ~~~~~~~~
2026-10-24T11:04:44.0478284Z
2026-10-24T11:04:44.0478557Z 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-24T11:04:44.0478560Z
2026-10-24T11:04:44.0478611Z 153   setPath: (name, path) =>
2026-10-24T11:04:44.0478650Z       ~~~~~~~
2026-10-24T11:04:44.0478652Z
2026-10-24T11:04:44.0478917Z 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-24T11:04:44.0478921Z
2026-10-24T11:04:44.0478965Z 157   setName: (name) =>
2026-10-24T11:04:44.0479005Z       ~~~~~~~
2026-10-24T11:04:44.0479007Z
2026-10-24T11:04:44.0479303Z 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-24T11:04:44.0479305Z
2026-10-24T11:04:44.0479360Z 161   setAboutPanelOptions: (options) =>
2026-10-24T11:04:44.0479404Z       ~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0479406Z
2026-10-24T11:04:44.0479690Z 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-24T11:04:44.0479692Z
2026-10-24T11:04:44.0479743Z 165   setAppUserModelId: (id) =>
2026-10-24T11:04:44.0479785Z       ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0479790Z
2026-10-24T11:04:44.0480119Z 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-24T11:04:44.0480121Z
2026-10-24T11:04:44.0480204Z 170   setAsDefaultProtocolClient: (protocol, path, args) =>
2026-10-24T11:04:44.0480249Z       ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0480251Z
2026-10-24T11:04:44.0480541Z 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-24T11:04:44.0480585Z
2026-10-24T11:04:44.0480646Z 177   setDesktopName: (desktopName) =>
2026-10-24T11:04:44.0480711Z       ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0480713Z
2026-10-24T11:04:44.0480991Z 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-24T11:04:44.0481099Z
2026-10-24T11:04:44.0481178Z 184   setDockIcon: (iconPath) =>
2026-10-24T11:04:44.0481234Z       ~~~~~~~~~~~
2026-10-24T11:04:44.0481237Z
2026-10-24T11:04:44.0481549Z 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-24T11:04:44.0481553Z
2026-10-24T11:04:44.0481623Z 188   appendCommandLineSwitch: (switchName, value) =>
2026-10-24T11:04:44.0481668Z       ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0481671Z
2026-10-24T11:04:44.0481968Z 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-24T11:04:44.0481970Z
2026-10-24T11:04:44.0482029Z 196   onBeforeQuitForUpdate: (listener) =>
2026-10-24T11:04:44.0482072Z       ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0482074Z
2026-10-24T11:04:44.0482380Z 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-24T11:04:44.0482382Z
2026-10-24T11:04:44.0482445Z 206   removeCommandLineSwitch: (switchName) =>
2026-10-24T11:04:44.0482493Z       ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0482495Z
2026-10-24T11:04:44.0482803Z 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-24T11:04:44.0482806Z
2026-10-24T11:04:44.0482858Z 169   showMessageBox: (options, owner) =>
2026-10-24T11:04:44.0482898Z       ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0482901Z
2026-10-24T11:04:44.0483204Z 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-24T11:04:44.0483207Z
2026-10-24T11:04:44.0483260Z 185   showErrorBox: (title, content) =>
2026-10-24T11:04:44.0483299Z       ~~~~~~~~~~~~
2026-10-24T11:04:44.0483303Z
2026-10-24T11:04:44.0483601Z 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-24T11:04:44.0483604Z
2026-10-24T11:04:44.0483661Z 193     setApplicationMenu: (template) =>
2026-10-24T11:04:44.0483704Z         ~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0483706Z
2026-10-24T11:04:44.0483991Z 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-24T11:04:44.0483994Z
2026-10-24T11:04:44.0484044Z 207     popupTemplate: (input) =>
2026-10-24T11:04:44.0484084Z         ~~~~~~~~~~~~~
2026-10-24T11:04:44.0484087Z
2026-10-24T11:04:44.0484371Z 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-24T11:04:44.0484373Z
2026-10-24T11:04:44.0484423Z 225     showContextMenu: (input) =>
2026-10-24T11:04:44.0484465Z         ~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0484467Z
2026-10-24T11:04:44.0484857Z 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-24T11:04:44.0484862Z
2026-10-24T11:04:44.0484951Z 82   getSystemIdleState: (idleThresholdSeconds) =>
2026-10-24T11:04:44.0485063Z      ~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0485066Z
2026-10-24T11:04:44.0485416Z 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-24T11:04:44.0485419Z
2026-10-24T11:04:44.0485469Z 77     encryptString: (value) =>
2026-10-24T11:04:44.0485508Z        ~~~~~~~~~~~~~
2026-10-24T11:04:44.0485510Z
2026-10-24T11:04:44.0485815Z 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-24T11:04:44.0485817Z
2026-10-24T11:04:44.0485863Z 82     decryptString: (value) =>
2026-10-24T11:04:44.0485903Z        ~~~~~~~~~~~~~
2026-10-24T11:04:44.0485905Z
2026-10-24T11:04:44.0486187Z 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-24T11:04:44.0486191Z
2026-10-24T11:04:44.0486239Z 68   openExternal: (rawUrl) =>
2026-10-24T11:04:44.0486279Z      ~~~~~~~~~~~~
2026-10-24T11:04:44.0486282Z
2026-10-24T11:04:44.0486577Z 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-24T11:04:44.0486580Z
2026-10-24T11:04:44.0486631Z 79   openSystemSettings: (pane) =>
2026-10-24T11:04:44.0486674Z      ~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0486677Z
2026-10-24T11:04:44.0486947Z 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-24T11:04:44.0486950Z
2026-10-24T11:04:44.0486997Z 86   copyText: (text) =>
2026-10-24T11:04:44.0487038Z      ~~~~~~~~
2026-10-24T11:04:44.0487040Z
2026-10-24T11:04:44.0487314Z 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-24T11:04:44.0487317Z
2026-10-24T11:04:44.0487362Z 34   setSource: (theme) =>
2026-10-24T11:04:44.0487403Z      ~~~~~~~~~
2026-10-24T11:04:44.0487405Z
2026-10-24T11:04:44.0487730Z 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-24T11:04:44.0487733Z
2026-10-24T11:04:44.0487782Z 41   onUpdated: (listener) =>
2026-10-24T11:04:44.0487821Z      ~~~~~~~~~
2026-10-24T11:04:44.0487825Z
2026-10-24T11:04:44.0488117Z 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-24T11:04:44.0488120Z
2026-10-24T11:04:44.0488168Z 85   setFeedURL: (options) =>
2026-10-24T11:04:44.0488209Z      ~~~~~~~~~~
2026-10-24T11:04:44.0488211Z
2026-10-24T11:04:44.0488504Z 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-24T11:04:44.0488507Z
2026-10-24T11:04:44.0488554Z 90   setAutoDownload: (value) =>
2026-10-24T11:04:44.0488642Z      ~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0488644Z
2026-10-24T11:04:44.0488994Z 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-24T11:04:44.0489040Z
2026-10-24T11:04:44.0489128Z 95   setAutoInstallOnAppQuit: (value) =>
2026-10-24T11:04:44.0489196Z      ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0489199Z
2026-10-24T11:04:44.0489495Z 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-24T11:04:44.0489499Z
2026-10-24T11:04:44.0489544Z 100   setChannel: (channel) =>
2026-10-24T11:04:44.0489585Z       ~~~~~~~~~~
2026-10-24T11:04:44.0489587Z
2026-10-24T11:04:44.0489888Z 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-24T11:04:44.0489890Z
2026-10-24T11:04:44.0489941Z 105   setAllowPrerelease: (value) =>
2026-10-24T11:04:44.0489983Z       ~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0489987Z
2026-10-24T11:04:44.0490286Z 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-24T11:04:44.0490288Z
2026-10-24T11:04:44.0490336Z 111   setAllowDowngrade: (value) =>
2026-10-24T11:04:44.0490377Z       ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0490379Z
2026-10-24T11:04:44.0490675Z 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-24T11:04:44.0490678Z
2026-10-24T11:04:44.0490727Z 116   setFullChangelog: (value) =>
2026-10-24T11:04:44.0490768Z       ~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0490771Z
2026-10-24T11:04:44.0491095Z 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-24T11:04:44.0491099Z
2026-10-24T11:04:44.0491166Z 121   setDisableDifferentialDownload: (value) =>
2026-10-24T11:04:44.0491210Z       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0491214Z
2026-10-24T11:04:44.0491500Z 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-24T11:04:44.0491502Z
2026-10-24T11:04:44.0491575Z 140   quitAndInstall: ({ isSilent, isForceRunAfter }) =>
2026-10-24T11:04:44.0491616Z       ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0491619Z
2026-10-24T11:04:44.0491909Z 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-24T11:04:44.0491913Z
2026-10-24T11:04:44.0491961Z 154   on: (eventName, listener) => {
2026-10-24T11:04:44.0492001Z       ~~
2026-10-24T11:04:44.0492003Z
2026-10-24T11:04:44.0492281Z 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-24T11:04:44.0492283Z
2026-10-24T11:04:44.0492330Z 211     create: (options) => {
2026-10-24T11:04:44.0492368Z         ~~~~~~
2026-10-24T11:04:44.0492371Z
2026-10-24T11:04:44.0492775Z 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-24T11:04:44.0492779Z
2026-10-24T11:04:44.0492926Z 243     setMain: (window) => Ref.set(mainWindowRef, Option.some(window)),
2026-10-24T11:04:44.0492975Z         ~~~~~~~
2026-10-24T11:04:44.0492977Z
2026-10-24T11:04:44.0493259Z 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-24T11:04:44.0493314Z
2026-10-24T11:04:44.0493386Z 244     clearMain: (window) =>
2026-10-24T11:04:44.0493450Z         ~~~~~~~~~
2026-10-24T11:04:44.0493454Z
2026-10-24T11:04:44.0493805Z 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-24T11:04:44.0493807Z
2026-10-24T11:04:44.0493856Z 254     prepareReveal: (window) =>
2026-10-24T11:04:44.0493899Z         ~~~~~~~~~~~~~
2026-10-24T11:04:44.0493901Z
2026-10-24T11:04:44.0494177Z 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-24T11:04:44.0494182Z
2026-10-24T11:04:44.0494226Z 264     reveal: (window) =>
2026-10-24T11:04:44.0494266Z         ~~~~~~
2026-10-24T11:04:44.0494268Z
2026-10-24T11:04:44.0494610Z 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-24T11:04:44.0494612Z
2026-10-24T11:04:44.0494682Z 526     setMainWindowBounds: (bounds, isMaximized) =>
2026-10-24T11:04:44.0494725Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0494727Z
2026-10-24T11:04:44.0495053Z 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-24T11:04:44.0495055Z
2026-10-24T11:04:44.0495110Z 538     setServerExposureMode: (mode) =>
2026-10-24T11:04:44.0495160Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0495162Z
2026-10-24T11:04:44.0495475Z 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-24T11:04:44.0495477Z
2026-10-24T11:04:44.0495529Z 542     setTailscaleServe: (input) =>
2026-10-24T11:04:44.0495573Z         ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0495575Z
2026-10-24T11:04:44.0495888Z 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-24T11:04:44.0495890Z
2026-10-24T11:04:44.0495942Z 546     setUpdateChannel: (channel) =>
2026-10-24T11:04:44.0495986Z         ~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0495988Z
2026-10-24T11:04:44.0496306Z 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-24T11:04:44.0496310Z
2026-10-24T11:04:44.0496366Z 550     setWslBackendEnabled: (enabled) =>
2026-10-24T11:04:44.0496409Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0496411Z
2026-10-24T11:04:44.0496717Z 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-24T11:04:44.0496719Z
2026-10-24T11:04:44.0496812Z 554     setWslDistro: (distro) =>
2026-10-24T11:04:44.0496860Z         ~~~~~~~~~~~~
2026-10-24T11:04:44.0496863Z
2026-10-24T11:04:44.0497189Z 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-24T11:04:44.0497234Z
2026-10-24T11:04:44.0497307Z 560     setWslOnly: (enabled) =>
2026-10-24T11:04:44.0497372Z         ~~~~~~~~~~
2026-10-24T11:04:44.0497375Z
2026-10-24T11:04:44.0497764Z 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-24T11:04:44.0497769Z
2026-10-24T11:04:44.0497831Z 564     setLocalEnvironmentEnabled: (enabled) =>
2026-10-24T11:04:44.0497875Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0497877Z
2026-10-24T11:04:44.0498211Z 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-24T11:04:44.0498213Z
2026-10-24T11:04:44.0498283Z 599         setMainWindowBounds: (bounds, isMaximized) =>
2026-10-24T11:04:44.0498327Z             ~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0498329Z
2026-10-24T11:04:44.0498647Z 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-24T11:04:44.0498649Z
2026-10-24T11:04:44.0498706Z 601         setServerExposureMode: (mode) =>
2026-10-24T11:04:44.0498749Z             ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0498751Z
2026-10-24T11:04:44.0499064Z 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-24T11:04:44.0499067Z
2026-10-24T11:04:44.0499191Z 603         setTailscaleServe: (input) => update((settings) => setTailscaleServe(settings, input)),
2026-10-24T11:04:44.0499236Z             ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0499238Z
2026-10-24T11:04:44.0499548Z 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-24T11:04:44.0499550Z
2026-10-24T11:04:44.0499677Z 604         setUpdateChannel: (channel) => update((settings) => setUpdateChannel(settings, channel)),
2026-10-24T11:04:44.0499721Z             ~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0499723Z
2026-10-24T11:04:44.0500042Z 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-24T11:04:44.0500045Z
2026-10-24T11:04:44.0500102Z 605         setWslBackendEnabled: (enabled) =>
2026-10-24T11:04:44.0500146Z             ~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0500150Z
2026-10-24T11:04:44.0500454Z 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-24T11:04:44.0500457Z
2026-10-24T11:04:44.0500569Z 607         setWslDistro: (distro) => update((settings) => setWslDistro(settings, distro)),
2026-10-24T11:04:44.0500611Z             ~~~~~~~~~~~~
2026-10-24T11:04:44.0500613Z
2026-10-24T11:04:44.0500956Z 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-24T11:04:44.0500958Z
2026-10-24T11:04:44.0501099Z 608         setWslOnly: (enabled) => update((settings) => setWslOnly(settings, enabled)),
2026-10-24T11:04:44.0501142Z             ~~~~~~~~~~
2026-10-24T11:04:44.0501144Z
2026-10-24T11:04:44.0501477Z 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-24T11:04:44.0501526Z
2026-10-24T11:04:44.0501629Z 609         setLocalEnvironmentEnabled: (enabled) =>
2026-10-24T11:04:44.0501704Z             ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0501706Z
2026-10-24T11:04:44.0502011Z 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-24T11:04:44.0502013Z
2026-10-24T11:04:44.0502063Z 197     set: (settings) =>
2026-10-24T11:04:44.0502104Z         ~~~
2026-10-24T11:04:44.0502106Z
2026-10-24T11:04:44.0502408Z 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-24T11:04:44.0502411Z
2026-10-24T11:04:44.0502502Z 231         set: (settings) => Ref.set(settingsRef, Option.some(settings)),
2026-10-24T11:04:44.0502543Z             ~~~
2026-10-24T11:04:44.0502545Z
2026-10-24T11:04:44.0502876Z 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-24T11:04:44.0502878Z
2026-10-24T11:04:44.0502948Z 1729     setAnimationDestination: (id, destination) =>
2026-10-24T11:04:44.0502991Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0502994Z
2026-10-24T11:04:44.0503412Z 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-24T11:04:44.0503418Z
2026-10-24T11:04:44.0503495Z 1740     dismissAnimation: (id) =>
2026-10-24T11:04:44.0503562Z          ~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0503565Z
2026-10-24T11:04:44.0503978Z 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-24T11:04:44.0503980Z
2026-10-24T11:04:44.0504026Z 1745     acknowledge: (id) =>
2026-10-24T11:04:44.0504068Z          ~~~~~~~~~~~
2026-10-24T11:04:44.0504070Z
2026-10-24T11:04:44.0504384Z 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-24T11:04:44.0504387Z
2026-10-24T11:04:44.0504437Z 136     discoverHosts: (input) =>
2026-10-24T11:04:44.0504477Z         ~~~~~~~~~~~~~
2026-10-24T11:04:44.0504482Z
2026-10-24T11:04:44.0504789Z 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-24T11:04:44.0504791Z
2026-10-24T11:04:44.0504841Z 141     resolveHost: (alias) =>
2026-10-24T11:04:44.0504882Z         ~~~~~~~~~~~
2026-10-24T11:04:44.0504885Z
2026-10-24T11:04:44.0505226Z 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-24T11:04:44.0505228Z
2026-10-24T11:04:44.0505339Z 146     ensureEnvironment: (target, ensureOptions) =>
2026-10-24T11:04:44.0505391Z         ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0505394Z
2026-10-24T11:04:44.0505918Z 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-24T11:04:44.0505961Z
2026-10-24T11:04:44.0506045Z 154     disconnectEnvironment: (target) =>
2026-10-24T11:04:44.0506114Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0506118Z
2026-10-24T11:04:44.0506644Z 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-24T11:04:44.0506650Z
2026-10-24T11:04:44.0506851Z 1171     installPrepared: (expectedVersion) => installWithExpectedVersion(expectedVersion),
2026-10-24T11:04:44.0506897Z          ~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0506900Z
2026-10-24T11:04:44.0507190Z 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-24T11:04:44.0507193Z
2026-10-24T11:04:44.0507243Z 1101       preWarm: () => Effect.void,
2026-10-24T11:04:44.0507284Z            ~~~~~~~
2026-10-24T11:04:44.0507286Z
2026-10-24T11:04:44.0507645Z 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-24T11:04:44.0507647Z
2026-10-24T11:04:44.0507722Z 1102       windowsToWslPath: (distro, windowsPath) =>
2026-10-24T11:04:44.0507766Z            ~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0507768Z
2026-10-24T11:04:44.0508075Z 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-24T11:04:44.0508077Z
2026-10-24T11:04:44.0508211Z 1104       getUserHome: (distro) => Effect.succeed(stub.getUserHome?.(distro) ?? Option.none<string>()),
2026-10-24T11:04:44.0508256Z            ~~~~~~~~~~~
2026-10-24T11:04:44.0508258Z
2026-10-24T11:04:44.0508564Z 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-24T11:04:44.0508566Z
2026-10-24T11:04:44.0508699Z 1105       getDistroIp: (distro) => Effect.succeed(stub.getDistroIp?.(distro) ?? Option.none<string>()),
2026-10-24T11:04:44.0508741Z            ~~~~~~~~~~~
2026-10-24T11:04:44.0508743Z
2026-10-24T11:04:44.0509073Z 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-24T11:04:44.0509075Z
2026-10-24T11:04:44.0509137Z 1106       prepareRuntime: (distro, archive) =>
2026-10-24T11:04:44.0509181Z            ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0509183Z
2026-10-24T11:04:44.0509508Z 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-24T11:04:44.0509510Z
2026-10-24T11:04:44.0509641Z 1113       pruneRuntimes: (distro, runtimeId) => stub.pruneRuntimes?.(distro, runtimeId) ?? Effect.void,
2026-10-24T11:04:44.0509683Z            ~~~~~~~~~~~~~
2026-10-24T11:04:44.0509685Z
2026-10-24T11:04:44.0510062Z 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-24T11:04:44.0510065Z
2026-10-24T11:04:44.0510153Z 1114       invalidateRuntime: (distro, runtimeId) =>
2026-10-24T11:04:44.0510207Z            ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0510249Z
2026-10-24T11:04:44.0510649Z 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-24T11:04:44.0510652Z
2026-10-24T11:04:44.0510712Z 1116       probeRuntime: (distro, linuxAppRoot) =>
2026-10-24T11:04:44.0510754Z            ~~~~~~~~~~~~
2026-10-24T11:04:44.0510756Z
2026-10-24T11:04:44.0511102Z 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-24T11:04:44.0511104Z
2026-10-24T11:04:44.0511179Z 1120       ensureNodePty: (distro, linuxAppRoot, options) =>
2026-10-24T11:04:44.0511220Z            ~~~~~~~~~~~~~
2026-10-24T11:04:44.0511222Z
2026-10-24T11:04:44.0511520Z 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-24T11:04:44.0511524Z
2026-10-24T11:04:44.0511572Z 1187       preWarm: (distro) =>
2026-10-24T11:04:44.0511613Z            ~~~~~~~
2026-10-24T11:04:44.0511615Z
2026-10-24T11:04:44.0511938Z 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-24T11:04:44.0511940Z
2026-10-24T11:04:44.0512000Z 1192       prepareRuntime: (distro, archive) =>
2026-10-24T11:04:44.0512042Z            ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0512045Z
2026-10-24T11:04:44.0512372Z 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-24T11:04:44.0512376Z
2026-10-24T11:04:44.0512437Z 1196       pruneRuntimes: (distro, runtimeId) =>
2026-10-24T11:04:44.0512480Z            ~~~~~~~~~~~~~
2026-10-24T11:04:44.0512482Z
2026-10-24T11:04:44.0512819Z 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-24T11:04:44.0512821Z
2026-10-24T11:04:44.0512883Z 1200       invalidateRuntime: (distro, runtimeId) =>
2026-10-24T11:04:44.0512927Z            ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0512930Z
2026-10-24T11:04:44.0513257Z 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-24T11:04:44.0513262Z
2026-10-24T11:04:44.0513325Z 1204       probeRuntime: (distro, linuxAppRoot) =>
2026-10-24T11:04:44.0513365Z            ~~~~~~~~~~~~
2026-10-24T11:04:44.0513370Z
2026-10-24T11:04:44.0513716Z 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-24T11:04:44.0513718Z
2026-10-24T11:04:44.0513793Z 1208       ensureNodePty: (distro, linuxAppRoot, options) =>
2026-10-24T11:04:44.0513837Z            ~~~~~~~~~~~~~
2026-10-24T11:04:44.0513839Z
2026-10-24T11:04:44.0513841Z
2026-10-24T11:04:44.0513843Z
2026-10-24T11:04:44.0514214Z 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-24T11:04:44.0514216Z
2026-10-24T11:04:44.0514320Z 820     clear: (environmentId) =>
2026-10-24T11:04:44.0514361Z         ~~~~~
2026-10-24T11:04:44.0514364Z
2026-10-24T11:04:44.0514659Z 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-24T11:04:44.0514662Z
2026-10-24T11:04:44.0514747Z 830     observe: ({ environmentId, environmentLabel, method }) =>
2026-10-24T11:04:44.0514788Z         ~~~~~~~
2026-10-24T11:04:44.0514790Z
2026-10-24T11:04:44.0515072Z 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-24T11:04:44.0515074Z
2026-10-24T11:04:44.0515117Z 549     get: (entry) =>
2026-10-24T11:04:44.0515158Z         ~~~
2026-10-24T11:04:44.0515160Z
2026-10-24T11:04:44.0515460Z 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-24T11:04:44.0515465Z
2026-10-24T11:04:44.0515518Z 576     set: (entry, permission) => {
2026-10-24T11:04:44.0515556Z         ~~~
2026-10-24T11:04:44.0515558Z
2026-10-24T11:04:44.0515856Z 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-24T11:04:44.0515859Z
2026-10-24T11:04:44.0515941Z 596     forget: (environmentId) => write(environmentId, null),
2026-10-24T11:04:44.0515982Z         ~~~~~~
2026-10-24T11:04:44.0515984Z
2026-10-24T11:04:44.0516322Z 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-24T11:04:44.0516326Z
2026-10-24T11:04:44.0516382Z 643       register: (registration, routes) =>
2026-10-24T11:04:44.0516423Z           ~~~~~~~~
2026-10-24T11:04:44.0516425Z
2026-10-24T11:04:44.0516770Z 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-24T11:04:44.0516773Z
2026-10-24T11:04:44.0516830Z 647       setRoutes: (environmentId, routes) =>
2026-10-24T11:04:44.0516872Z           ~~~~~~~~~
2026-10-24T11:04:44.0516874Z
2026-10-24T11:04:44.0517201Z 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-24T11:04:44.0517203Z
2026-10-24T11:04:44.0517255Z 651       remove: (environmentId) =>
2026-10-24T11:04:44.0517295Z           ~~~~~~
2026-10-24T11:04:44.0517297Z
2026-10-24T11:04:44.0517678Z 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-24T11:04:44.0517681Z
2026-10-24T11:04:44.0517744Z 655       setEnabled: (environmentId, enabled) =>
2026-10-24T11:04:44.0517785Z           ~~~~~~~~~~
2026-10-24T11:04:44.0517787Z
2026-10-24T11:04:44.0518149Z 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-24T11:04:44.0518152Z
2026-10-24T11:04:44.0518221Z 732       loadShell: (environmentId) =>
2026-10-24T11:04:44.0518279Z           ~~~~~~~~~
2026-10-24T11:04:44.0518347Z
2026-10-24T11:04:44.0518746Z 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-24T11:04:44.0518748Z
2026-10-24T11:04:44.0518806Z 768       loadServerConfig: (environmentId) =>
2026-10-24T11:04:44.0518850Z           ~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0518853Z
2026-10-24T11:04:44.0519190Z 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-24T11:04:44.0519192Z
2026-10-24T11:04:44.0519251Z 802       loadThread: (environmentId, threadId) =>
2026-10-24T11:04:44.0519290Z           ~~~~~~~~~~
2026-10-24T11:04:44.0519294Z
2026-10-24T11:04:44.0519623Z 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-24T11:04:44.0519627Z
2026-10-24T11:04:44.0519684Z 851       loadVcsRefs: (environmentId, cwd) =>
2026-10-24T11:04:44.0519726Z           ~~~~~~~~~~~
2026-10-24T11:04:44.0519728Z
2026-10-24T11:04:44.0520062Z 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-24T11:04:44.0520064Z
2026-10-24T11:04:44.0520125Z 893       removeVcsRefs: (environmentId, cwd) =>
2026-10-24T11:04:44.0520166Z           ~~~~~~~~~~~~~
2026-10-24T11:04:44.0520168Z
2026-10-24T11:04:44.0520494Z 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-24T11:04:44.0520497Z
2026-10-24T11:04:44.0520552Z 899       clearVcsRefs: (environmentId) =>
2026-10-24T11:04:44.0520594Z           ~~~~~~~~~~~~
2026-10-24T11:04:44.0520596Z
2026-10-24T11:04:44.0520933Z 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-24T11:04:44.0520937Z
2026-10-24T11:04:44.0521000Z 905       removeThread: (environmentId, threadId) =>
2026-10-24T11:04:44.0521042Z           ~~~~~~~~~~~~
2026-10-24T11:04:44.0521046Z
2026-10-24T11:04:44.0521356Z 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-24T11:04:44.0521358Z
2026-10-24T11:04:44.0521410Z 911       clear: (environmentId) =>
2026-10-24T11:04:44.0521448Z           ~~~~~
2026-10-24T11:04:44.0521450Z
2026-10-24T11:04:44.0521452Z
2026-10-24T11:04:44.0521502Z ~/apps/server$ tsc --noEmit
2026-10-24T11:04:44.0521746Z 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-24T11:04:44.0521748Z
2026-10-24T11:04:44.0521806Z 941         yield* Effect.sleep("1200 millis")
2026-10-24T11:04:44.0521855Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0521897Z 942           .pipe(
2026-10-24T11:04:44.0521937Z     ~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0522020Z ...
2026-10-24T11:04:44.0522067Z 954           )
2026-10-24T11:04:44.0522138Z     ~~~~~~~~~~~
2026-10-24T11:04:44.0522195Z 955           .pipe(Effect.forkDetach);
2026-10-24T11:04:44.0522242Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0522245Z
2026-10-24T11:04:44.0522541Z 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-24T11:04:44.0522587Z
2026-10-24T11:04:44.0522656Z 1175     logger: (event) => {
2026-10-24T11:04:44.0522722Z          ~~~~~~
2026-10-24T11:04:44.0522725Z
2026-10-24T11:04:44.0523161Z 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-24T11:04:44.0523165Z
2026-10-24T11:04:44.0523273Z 376 const DEFAULT_GROK_SETTINGS = Schema.decodeUnknownSync(GrokSettings)({});
2026-10-24T11:04:44.0523329Z                                          ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0523331Z
2026-10-24T11:04:44.0523622Z 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-24T11:04:44.0523625Z
2026-10-24T11:04:44.0523676Z 1346     getDescriptor: () =>
2026-10-24T11:04:44.0523717Z          ~~~~~~~~~~~~~
2026-10-24T11:04:44.0523720Z
2026-10-24T11:04:44.0524025Z 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-24T11:04:44.0524028Z
2026-10-24T11:04:44.0524074Z 55     getDescriptor: () =>
2026-10-24T11:04:44.0524118Z        ~~~~~~~~~~~~~
2026-10-24T11:04:44.0524120Z
2026-10-24T11:04:44.0524438Z 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-24T11:04:44.0524442Z
2026-10-24T11:04:44.0524495Z 540       authenticate: (request) =>
2026-10-24T11:04:44.0524537Z           ~~~~~~~~~~~~
2026-10-24T11:04:44.0524540Z
2026-10-24T11:04:44.0524780Z 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-24T11:04:44.0524782Z
2026-10-24T11:04:44.0524837Z 468         : Effect.succeed(undefined),
2026-10-24T11:04:44.0524885Z               ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0524888Z
2026-10-24T11:04:44.0525167Z 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-24T11:04:44.0525169Z
2026-10-24T11:04:44.0525223Z 328       HttpClientError: (cause) =>
2026-10-24T11:04:44.0525266Z           ~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0525268Z
2026-10-24T11:04:44.0525504Z src/cloud/CloudLink.lifecycle.test.ts:166:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0525508Z
2026-10-24T11:04:44.0525574Z 166             latest: Effect.succeed(Option.none()),
2026-10-24T11:04:44.0525623Z                         ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0525625Z
2026-10-24T11:04:44.0525839Z src/cloud/CloudLink.test.ts:99:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0525842Z
2026-10-24T11:04:44.0525903Z 99         latest: Effect.succeed(Option.none()),
2026-10-24T11:04:44.0525993Z                    ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0525996Z
2026-10-24T11:04:44.0526370Z 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-24T11:04:44.0526417Z
2026-10-24T11:04:44.0526613Z 791     requestRecovery: (config) => Queue.offer(recoveryRequests, config).pipe(Effect.asVoid),
2026-10-24T11:04:44.0526656Z         ~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0526658Z
2026-10-24T11:04:44.0526866Z src/cloud/http.test.ts:81:67 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0526869Z
2026-10-24T11:04:44.0527015Z 81     Layer.mock(ConnectReachability.ConnectReachability)({ latest: Effect.succeed(Option.none()) }),
2026-10-24T11:04:44.0527085Z                                                                      ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0527089Z
2026-10-24T11:04:44.0527420Z 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-24T11:04:44.0527424Z
2026-10-24T11:04:44.0527505Z 371     commitDesktopUpdate: (requestId, onHandoffAccepted) =>
2026-10-24T11:04:44.0527550Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0527552Z
2026-10-24T11:04:44.0527869Z 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-24T11:04:44.0527872Z
2026-10-24T11:04:44.0527922Z 808       updateTool: (tool) =>
2026-10-24T11:04:44.0527965Z           ~~~~~~~~~~
2026-10-24T11:04:44.0527967Z
2026-10-24T11:04:44.0528239Z 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-24T11:04:44.0528241Z
2026-10-24T11:04:44.0528288Z 823       easAccount: () =>
2026-10-24T11:04:44.0528329Z           ~~~~~~~~~~
2026-10-24T11:04:44.0528331Z
2026-10-24T11:04:44.0528643Z 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-24T11:04:44.0528647Z
2026-10-24T11:04:44.0528701Z 868     ensureAgentReady: (onPhase) =>
2026-10-24T11:04:44.0528743Z         ~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0528745Z
2026-10-24T11:04:44.0528968Z src/device/easProjectId.ts:201:7 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T11:04:44.0528970Z
2026-10-24T11:04:44.0529022Z 201       Effect.map(Option.some),
2026-10-24T11:04:44.0529065Z           ~~~~~~~~~~
2026-10-24T11:04:44.0529067Z
2026-10-24T11:04:44.0529349Z 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-24T11:04:44.0529353Z
2026-10-24T11:04:44.0529437Z 141   return DirectEndpoints.of({ resolve: () => resolve });
2026-10-24T11:04:44.0529487Z                                   ~~~~~~~
2026-10-24T11:04:44.0529489Z
2026-10-24T11:04:44.0529790Z 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-24T11:04:44.0529792Z
2026-10-24T11:04:44.0529895Z 83   return RemoteOpenTargets.of({ resolveTargets: () => resolveTargets });
2026-10-24T11:04:44.0529946Z                                    ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0529948Z
2026-10-24T11:04:44.0530284Z 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-24T11:04:44.0530286Z
2026-10-24T11:04:44.0530352Z 302     isRepository: (cwd) =>
2026-10-24T11:04:44.0530456Z         ~~~~~~~~~~~~
2026-10-24T11:04:44.0530459Z
2026-10-24T11:04:44.0530798Z 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-24T11:04:44.0530800Z
2026-10-24T11:04:44.0530848Z 315     hasCommit: (input) =>
2026-10-24T11:04:44.0530891Z         ~~~~~~~~~
2026-10-24T11:04:44.0530893Z
2026-10-24T11:04:44.0531190Z 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-24T11:04:44.0531192Z
2026-10-24T11:04:44.0531242Z 327     hasRefNamed: (input) =>
2026-10-24T11:04:44.0531281Z         ~~~~~~~~~~~
2026-10-24T11:04:44.0531285Z
2026-10-24T11:04:44.0531568Z 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-24T11:04:44.0531572Z
2026-10-24T11:04:44.0531622Z 346     status: (input) =>
2026-10-24T11:04:44.0531663Z         ~~~~~~
2026-10-24T11:04:44.0531665Z
2026-10-24T11:04:44.0531959Z 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-24T11:04:44.0531961Z
2026-10-24T11:04:44.0532007Z 352     localStatus: (input) =>
2026-10-24T11:04:44.0532049Z         ~~~~~~~~~~~
2026-10-24T11:04:44.0532051Z
2026-10-24T11:04:44.0532359Z 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-24T11:04:44.0532361Z
2026-10-24T11:04:44.0532417Z 360     remoteStatus: (input, options) =>
2026-10-24T11:04:44.0532462Z         ~~~~~~~~~~~~
2026-10-24T11:04:44.0532464Z
2026-10-24T11:04:44.0532843Z 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-24T11:04:44.0532846Z
2026-10-24T11:04:44.0532901Z 369     pullCurrentBranch: (cwd) =>
2026-10-24T11:04:44.0532946Z         ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0532948Z
2026-10-24T11:04:44.0533263Z 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-24T11:04:44.0533266Z
2026-10-24T11:04:44.0533326Z 373     runStackedAction: (input, options) =>
2026-10-24T11:04:44.0533368Z         ~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0533370Z
2026-10-24T11:04:44.0533688Z 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-24T11:04:44.0533691Z
2026-10-24T11:04:44.0533752Z 388     preparePullRequestThread: (input) =>
2026-10-24T11:04:44.0533798Z         ~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0533800Z
2026-10-24T11:04:44.0534087Z 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-24T11:04:44.0534090Z
2026-10-24T11:04:44.0534196Z 399     listRefs: (input) =>
2026-10-24T11:04:44.0534252Z         ~~~~~~~~
2026-10-24T11:04:44.0534256Z
2026-10-24T11:04:44.0534628Z 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-24T11:04:44.0534678Z
2026-10-24T11:04:44.0534763Z 405     createWorktree: (input, options) =>
2026-10-24T11:04:44.0534828Z         ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0534831Z
2026-10-24T11:04:44.0535194Z 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-24T11:04:44.0535196Z
2026-10-24T11:04:44.0535253Z 409     listLocalBranchNames: (cwd) =>
2026-10-24T11:04:44.0535299Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0535301Z
2026-10-24T11:04:44.0535594Z 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-24T11:04:44.0535596Z
2026-10-24T11:04:44.0535644Z 413     fetchRemote: (input) =>
2026-10-24T11:04:44.0535689Z         ~~~~~~~~~~~
2026-10-24T11:04:44.0535691Z
2026-10-24T11:04:44.0535985Z 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-24T11:04:44.0535987Z
2026-10-24T11:04:44.0536036Z 417     remoteExists: (input) =>
2026-10-24T11:04:44.0536079Z         ~~~~~~~~~~~~
2026-10-24T11:04:44.0536081Z
2026-10-24T11:04:44.0536388Z 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-24T11:04:44.0536391Z
2026-10-24T11:04:44.0536446Z 421     remoteBranchExists: (input) =>
2026-10-24T11:04:44.0536491Z         ~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0536494Z
2026-10-24T11:04:44.0536817Z 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-24T11:04:44.0536821Z
2026-10-24T11:04:44.0536886Z 425     resolveRemoteTrackingCommit: (input) =>
2026-10-24T11:04:44.0536930Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0536932Z
2026-10-24T11:04:44.0537250Z 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-24T11:04:44.0537252Z
2026-10-24T11:04:44.0537314Z 429     resolveWorktreeBaseRemote: (input) =>
2026-10-24T11:04:44.0537361Z         ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0537364Z
2026-10-24T11:04:44.0537706Z 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-24T11:04:44.0537712Z
2026-10-24T11:04:44.0537768Z 433     fetchWorktreeBaseCommit: (input) =>
2026-10-24T11:04:44.0537814Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0537816Z
2026-10-24T11:04:44.0538114Z 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-24T11:04:44.0538116Z
2026-10-24T11:04:44.0538167Z 437     removeWorktree: (input) =>
2026-10-24T11:04:44.0538208Z         ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0538210Z
2026-10-24T11:04:44.0538544Z 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-24T11:04:44.0538547Z
2026-10-24T11:04:44.0538598Z 441     pruneWorktrees: (input) =>
2026-10-24T11:04:44.0538692Z         ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0538695Z
2026-10-24T11:04:44.0539005Z 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-24T11:04:44.0539007Z
2026-10-24T11:04:44.0539058Z 445     deleteLocalBranch: (input) =>
2026-10-24T11:04:44.0539104Z         ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0539106Z
2026-10-24T11:04:44.0539396Z 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-24T11:04:44.0539399Z
2026-10-24T11:04:44.0539448Z 449     createRef: (input) =>
2026-10-24T11:04:44.0539489Z         ~~~~~~~~~
2026-10-24T11:04:44.0539492Z
2026-10-24T11:04:44.0539776Z 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-24T11:04:44.0539780Z
2026-10-24T11:04:44.0539829Z 457     switchRef: (input) =>
2026-10-24T11:04:44.0539871Z         ~~~~~~~~~
2026-10-24T11:04:44.0539873Z
2026-10-24T11:04:44.0540168Z 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-24T11:04:44.0540170Z
2026-10-24T11:04:44.0540219Z 463     renameBranch: (input) =>
2026-10-24T11:04:44.0540258Z         ~~~~~~~~~~~~
2026-10-24T11:04:44.0540262Z
2026-10-24T11:04:44.0540523Z 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-24T11:04:44.0540525Z
2026-10-24T11:04:44.0540579Z 281   const receive = (raw: string) => {
2026-10-24T11:04:44.0540620Z             ~~~~~~~
2026-10-24T11:04:44.0540622Z
2026-10-24T11:04:44.0540992Z 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-24T11:04:44.0540995Z
2026-10-24T11:04:44.0541037Z 284       try {
2026-10-24T11:04:44.0541077Z           ~~~~~
2026-10-24T11:04:44.0541129Z 285         parsed = JSON.parse(line);
2026-10-24T11:04:44.0541173Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0541213Z ...
2026-10-24T11:04:44.0541314Z 287         return yield* respondWithError(null, "Parse error", -32700);
2026-10-24T11:04:44.0541384Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0541424Z 288       }
2026-10-24T11:04:44.0541463Z     ~~~~~~~
2026-10-24T11:04:44.0541466Z
2026-10-24T11:04:44.0541737Z 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-24T11:04:44.0541740Z
2026-10-24T11:04:44.0541800Z 324       Effect.catchCause(() => Effect.void),
2026-10-24T11:04:44.0541842Z           ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0541846Z
2026-10-24T11:04:44.0542073Z src/mcp/McpDeviceToolkit.test.ts:105:18 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0542075Z
2026-10-24T11:04:44.0542141Z 105   getById: () => Effect.succeed(Option.none()),
2026-10-24T11:04:44.0542227Z                      ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0542229Z
2026-10-24T11:04:44.0542545Z 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-24T11:04:44.0542593Z
2026-10-24T11:04:44.0542694Z 421 const previewSnapshotFailure = <E>(cause: Cause.Cause<E>) => {
2026-10-24T11:04:44.0542764Z           ~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0542767Z
2026-10-24T11:04:44.0543096Z src/mcp/McpHttpServer.ts:938:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("McpServer.McpServer.addTool")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T11:04:44.0543099Z
2026-10-24T11:04:44.0543163Z 938       addTool: (options) =>
2026-10-24T11:04:44.0543205Z           ~~~~~~~
2026-10-24T11:04:44.0543207Z
2026-10-24T11:04:44.0543492Z 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-24T11:04:44.0543495Z
2026-10-24T11:04:44.0543568Z 22     resolve: () => Effect.succeed(undefined),
2026-10-24T11:04:44.0543632Z                       ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0543636Z
2026-10-24T11:04:44.0543929Z 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-24T11:04:44.0543931Z
2026-10-24T11:04:44.0543990Z 112       Effect.flatMap(() => writingCaller),
2026-10-24T11:04:44.0544033Z           ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0544035Z
2026-10-24T11:04:44.0544527Z 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-24T11:04:44.0544530Z
2026-10-24T11:04:44.0544605Z 2465       const cancelOrphan = Effect.gen(function* () {
2026-10-24T11:04:44.0544660Z                                            ~~~~~~~~~
2026-10-24T11:04:44.0544664Z
2026-10-24T11:04:44.0544897Z   src/mcp/OrchestratorMcpService.ts:2480:17 - This repeated `Effect.mapError(...)` site participates in the hoistable generator-wide mapping. effect(redundantMapError)
2026-10-24T11:04:44.0544978Z     2480           .pipe(Effect.mapError(threadManagementFailure));
2026-10-24T11:04:44.0545028Z                          ~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0545030Z
2026-10-24T11:04:44.0545256Z   src/mcp/OrchestratorMcpService.ts:2483:17 - This repeated `Effect.mapError(...)` site participates in the hoistable generator-wide mapping. effect(redundantMapError)
2026-10-24T11:04:44.0545339Z     2483           .pipe(Effect.mapError(threadManagementFailure));
2026-10-24T11:04:44.0545384Z                          ~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0545386Z
2026-10-24T11:04:44.0545656Z 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-24T11:04:44.0545660Z
2026-10-24T11:04:44.0545709Z 651         onNone: () =>
2026-10-24T11:04:44.0545752Z             ~~~~~~
2026-10-24T11:04:44.0545754Z
2026-10-24T11:04:44.0545952Z src/mcp/WorktreeMcpService.test.ts:355:3 - suggestion TS377017: This Effect.gen contains a single return statement. effect(unnecessaryEffectGen)
2026-10-24T11:04:44.0545955Z
2026-10-24T11:04:44.0546002Z 355   Effect.gen(function* () {
2026-10-24T11:04:44.0546048Z       ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0546132Z 356     return yield* WorktreeMcpService.WorktreeMcpService;
2026-10-24T11:04:44.0546254Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0546345Z 357   }).pipe(Effect.provide(harness.layer));
2026-10-24T11:04:44.0546412Z     ~~~~
2026-10-24T11:04:44.0546416Z
2026-10-24T11:04:44.0546694Z 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-24T11:04:44.0546807Z
2026-10-24T11:04:44.0546882Z 222     const thread = yield* engine
2026-10-24T11:04:44.0546953Z                               ~~~~~~
2026-10-24T11:04:44.0547023Z 223       .getThreadShell(threadId)
2026-10-24T11:04:44.0547070Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0547135Z 224       .pipe(Effect.map(Option.fromNullishOr))
2026-10-24T11:04:44.0547186Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0547272Z 225       .pipe(Effect.mapError((cause) => new Failure({ cause })));
2026-10-24T11:04:44.0547342Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0547344Z
2026-10-24T11:04:44.0547664Z 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-24T11:04:44.0547669Z
2026-10-24T11:04:44.0547788Z 96   McpAppModelContext.of({ set: () => Effect.void, forThread: () => Effect.succeed([]) }),
2026-10-24T11:04:44.0547832Z                              ~~~
2026-10-24T11:04:44.0547834Z
2026-10-24T11:04:44.0548126Z 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-24T11:04:44.0548128Z
2026-10-24T11:04:44.0548244Z 96   McpAppModelContext.of({ set: () => Effect.void, forThread: () => Effect.succeed([]) }),
2026-10-24T11:04:44.0548305Z                                                      ~~~~~~~~~
2026-10-24T11:04:44.0548308Z
2026-10-24T11:04:44.0548625Z 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-24T11:04:44.0548627Z
2026-10-24T11:04:44.0548676Z 16     record: (records) =>
2026-10-24T11:04:44.0548718Z        ~~~~~~
2026-10-24T11:04:44.0548720Z
2026-10-24T11:04:44.0548991Z 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-24T11:04:44.0548993Z
2026-10-24T11:04:44.0549096Z 41   defaultValue: () => ({ latestNoticeableStall: Effect.succeed(undefined) }),
2026-10-24T11:04:44.0549160Z                                                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0549165Z
2026-10-24T11:04:44.0549610Z 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-24T11:04:44.0549613Z
2026-10-24T11:04:44.0549717Z 30 const REPLAY_SETTINGS = Schema.decodeUnknownSync(AcpRegistrySettings)({
2026-10-24T11:04:44.0549771Z                                   ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0549773Z
2026-10-24T11:04:44.0550082Z 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-24T11:04:44.0550084Z
2026-10-24T11:04:44.0550144Z 48   defaultModel: Effect.succeed(undefined),
2026-10-24T11:04:44.0550191Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0550193Z
2026-10-24T11:04:44.0550549Z 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-24T11:04:44.0550551Z
2026-10-24T11:04:44.0550637Z 169         defaultModel: Effect.succeed(undefined),
2026-10-24T11:04:44.0550756Z                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0550760Z
2026-10-24T11:04:44.0551100Z 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-24T11:04:44.0551103Z
2026-10-24T11:04:44.0551164Z 306         defaultModel: Effect.succeed(undefined),
2026-10-24T11:04:44.0551215Z                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0551217Z
2026-10-24T11:04:44.0551518Z 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-24T11:04:44.0551520Z
2026-10-24T11:04:44.0551582Z 542         defaultModel: Effect.succeed(undefined),
2026-10-24T11:04:44.0551630Z                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0551635Z
2026-10-24T11:04:44.0551971Z 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-24T11:04:44.0551973Z
2026-10-24T11:04:44.0552036Z 974       const controller = new AbortController();
2026-10-24T11:04:44.0552088Z                              ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0552090Z
2026-10-24T11:04:44.0552379Z 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-24T11:04:44.0552381Z
2026-10-24T11:04:44.0552449Z 1326         const requestEvent = yield* runtime.events
2026-10-24T11:04:44.0552500Z                                          ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0552547Z 1327           .pipe(
2026-10-24T11:04:44.0552593Z      ~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0552634Z  ...
2026-10-24T11:04:44.0552677Z 1330           )
2026-10-24T11:04:44.0552720Z      ~~~~~~~~~~~
2026-10-24T11:04:44.0552774Z 1331           .pipe(Effect.forkScoped);
2026-10-24T11:04:44.0552819Z      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0552821Z
2026-10-24T11:04:44.0553155Z 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-24T11:04:44.0553157Z
2026-10-24T11:04:44.0553223Z 1332         const controller = new AbortController();
2026-10-24T11:04:44.0553279Z                                 ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0553281Z
2026-10-24T11:04:44.0553612Z 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-24T11:04:44.0553616Z
2026-10-24T11:04:44.0553694Z 1355         const cancelledController = new AbortController();
2026-10-24T11:04:44.0553754Z                                          ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0553756Z
2026-10-24T11:04:44.0554116Z 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-24T11:04:44.0554119Z
2026-10-24T11:04:44.0554225Z 4018     getCapabilities: () => Effect.succeed(ClaudeProviderCapabilitiesV2),
2026-10-24T11:04:44.0554313Z          ~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0554316Z
2026-10-24T11:04:44.0554722Z 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-24T11:04:44.0554768Z
2026-10-24T11:04:44.0554960Z 4019     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T11:04:44.0555006Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0555008Z
2026-10-24T11:04:44.0555362Z 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-24T11:04:44.0555364Z
2026-10-24T11:04:44.0555425Z 201         signal: new AbortController().signal,
2026-10-24T11:04:44.0555473Z                     ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0555476Z
2026-10-24T11:04:44.0555864Z 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-24T11:04:44.0555868Z
2026-10-24T11:04:44.0555921Z 74   const pause = Effect.raceFirst(
2026-10-24T11:04:44.0555968Z                    ~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0555970Z
2026-10-24T11:04:44.0556261Z 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-24T11:04:44.0556263Z
2026-10-24T11:04:44.0556368Z 1741     threadId === null ? Effect.succeed(undefined) : mcpSessions.read(threadId);
2026-10-24T11:04:44.0556426Z                              ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0556428Z
2026-10-24T11:04:44.0556784Z 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-24T11:04:44.0556787Z
2026-10-24T11:04:44.0556888Z 1748     getCapabilities: () => Effect.succeed(CodexProviderCapabilitiesV2),
2026-10-24T11:04:44.0556933Z          ~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0556935Z
2026-10-24T11:04:44.0557308Z 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-24T11:04:44.0557312Z
2026-10-24T11:04:44.0557428Z 1749     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T11:04:44.0557477Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0557479Z
2026-10-24T11:04:44.0557835Z 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-24T11:04:44.0557839Z
2026-10-24T11:04:44.0557912Z 3045                   Effect.catch(() => Effect.succeed(null)),
2026-10-24T11:04:44.0557956Z                        ~~~~~~~~~~~~
2026-10-24T11:04:44.0557958Z
2026-10-24T11:04:44.0558326Z 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-24T11:04:44.0558329Z
2026-10-24T11:04:44.0558392Z 3046                   Effect.flatMap((response) =>
2026-10-24T11:04:44.0558441Z                        ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0558443Z
2026-10-24T11:04:44.0558765Z 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-24T11:04:44.0558768Z
2026-10-24T11:04:44.0558852Z 3068                   Effect.catch(() => Effect.void),
2026-10-24T11:04:44.0558973Z                        ~~~~~~~~~~~~
2026-10-24T11:04:44.0558977Z
2026-10-24T11:04:44.0559372Z 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-24T11:04:44.0559374Z
2026-10-24T11:04:44.0559459Z 7268                   return yield* Effect.fail(failedTermination.error);
2026-10-24T11:04:44.0559505Z                               ~~~~~
2026-10-24T11:04:44.0559508Z
2026-10-24T11:04:44.0559968Z 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-24T11:04:44.0559973Z
2026-10-24T11:04:44.0560073Z 33 const DEFAULT_GROK_SETTINGS = Schema.decodeUnknownSync(GrokSettings)({});
2026-10-24T11:04:44.0560135Z                                         ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0560137Z
2026-10-24T11:04:44.0560558Z 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-24T11:04:44.0560561Z
2026-10-24T11:04:44.0560686Z 414 const DEFAULT_MUSE_SETTINGS = Schema.decodeUnknownSync(MuseSettings)({ enabled: true });
2026-10-24T11:04:44.0560743Z                                          ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0560747Z
2026-10-24T11:04:44.0561083Z 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-24T11:04:44.0561086Z
2026-10-24T11:04:44.0561138Z 242       execute: (input) =>
2026-10-24T11:04:44.0561181Z           ~~~~~~~
2026-10-24T11:04:44.0561183Z
2026-10-24T11:04:44.0561442Z src/orchestration-v2/CheckpointRestoreSafety.test.ts:104:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0561444Z
2026-10-24T11:04:44.0561551Z 104             get: () => Effect.succeed(Option.some({ workspaceRoot: parent } as never)),
2026-10-24T11:04:44.0561597Z                            ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0561600Z
2026-10-24T11:04:44.0561945Z 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-24T11:04:44.0561948Z
2026-10-24T11:04:44.0562000Z 41             Effect.catch((error) =>
2026-10-24T11:04:44.0562049Z                ~~~~~~~~~~~~
2026-10-24T11:04:44.0562051Z
2026-10-24T11:04:44.0562390Z 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-24T11:04:44.0562395Z
2026-10-24T11:04:44.0562446Z 83                 Effect.catch((error) =>
2026-10-24T11:04:44.0562491Z                    ~~~~~~~~~~~~
2026-10-24T11:04:44.0562493Z
2026-10-24T11:04:44.0562809Z src/orchestration-v2/CheckpointRollbackService.test.ts:233:22 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0562812Z
2026-10-24T11:04:44.0562943Z 233               return Effect.succeed(Option.some({ workspaceRoot } as never));
2026-10-24T11:04:44.0562990Z                          ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0562992Z
2026-10-24T11:04:44.0563466Z 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-24T11:04:44.0563468Z
2026-10-24T11:04:44.0563534Z 142         const batchAbort = new AbortController();
2026-10-24T11:04:44.0563588Z                                ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0563591Z
2026-10-24T11:04:44.0563954Z 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-24T11:04:44.0563956Z
2026-10-24T11:04:44.0564006Z 168     Effect.flatMap((frame) =>
2026-10-24T11:04:44.0564050Z         ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0564052Z
2026-10-24T11:04:44.0564292Z src/orchestration-v2/CommandReceiptStore.ts:164:29 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0564296Z
2026-10-24T11:04:44.0564368Z 164               onNone: () => Effect.succeed(Option.none()),
2026-10-24T11:04:44.0564419Z                                 ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0564421Z
2026-10-24T11:04:44.0564660Z src/orchestration-v2/CommandReceiptStore.ts:167:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0564662Z
2026-10-24T11:04:44.0564726Z 167                   ? Effect.succeed(Option.none())
2026-10-24T11:04:44.0564775Z                         ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0564777Z
2026-10-24T11:04:44.0565021Z src/orchestration-v2/CommandReceiptStore.ts:168:58 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T11:04:44.0565023Z
2026-10-24T11:04:44.0565127Z 168                   : fromApplicationReceipt(receipt).pipe(Effect.map(Option.some)),
2026-10-24T11:04:44.0565188Z                                                              ~~~~~~~~~~
2026-10-24T11:04:44.0565190Z
2026-10-24T11:04:44.0565428Z src/orchestration-v2/CommandReceiptStore.ts:183:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0565430Z
2026-10-24T11:04:44.0565488Z 183               ? Effect.succeed(Option.none())
2026-10-24T11:04:44.0565536Z                     ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0565538Z
2026-10-24T11:04:44.0565783Z src/orchestration-v2/CommandReceiptStore.ts:192:25 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T11:04:44.0565785Z
2026-10-24T11:04:44.0565845Z 192                 }).pipe(Effect.map(Option.some)),
2026-10-24T11:04:44.0565892Z                             ~~~~~~~~~~
2026-10-24T11:04:44.0565896Z
2026-10-24T11:04:44.0566123Z src/orchestration-v2/EffectOutbox.ts:429:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0566125Z
2026-10-24T11:04:44.0566185Z 429               ? Effect.succeed(Option.none())
2026-10-24T11:04:44.0566230Z                     ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0566232Z
2026-10-24T11:04:44.0566480Z src/orchestration-v2/EffectOutbox.ts:430:39 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T11:04:44.0566482Z
2026-10-24T11:04:44.0566613Z 430               : rowToEffect(row).pipe(Effect.map(Option.some));
2026-10-24T11:04:44.0566689Z                                           ~~~~~~~~~~
2026-10-24T11:04:44.0566692Z
2026-10-24T11:04:44.0566936Z src/orchestration-v2/EffectWorker.test.ts:107:20 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0566982Z
2026-10-24T11:04:44.0567074Z 107         get: () => Effect.succeed(Option.none()),
2026-10-24T11:04:44.0567149Z                        ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0567152Z
2026-10-24T11:04:44.0567390Z src/orchestration-v2/EffectWorker.test.ts:302:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0567393Z
2026-10-24T11:04:44.0567478Z 302       claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T11:04:44.0567526Z                            ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0567528Z
2026-10-24T11:04:44.0567796Z src/orchestration-v2/EffectWorker.test.ts:369:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0567798Z
2026-10-24T11:04:44.0567884Z 369       claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T11:04:44.0567934Z                            ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0567936Z
2026-10-24T11:04:44.0568169Z src/orchestration-v2/EffectWorker.test.ts:436:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0568171Z
2026-10-24T11:04:44.0568253Z 436       claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T11:04:44.0568298Z                            ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0568300Z
2026-10-24T11:04:44.0568536Z src/orchestration-v2/EffectWorker.test.ts:437:18 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0568538Z
2026-10-24T11:04:44.0568616Z 437       get: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T11:04:44.0568662Z                      ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0568664Z
2026-10-24T11:04:44.0568996Z 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-24T11:04:44.0569002Z
2026-10-24T11:04:44.0569053Z 98       execute: (effect, options) => {
2026-10-24T11:04:44.0569097Z          ~~~~~~~
2026-10-24T11:04:44.0569099Z
2026-10-24T11:04:44.0569425Z 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-24T11:04:44.0569427Z
2026-10-24T11:04:44.0569485Z 180                 Effect.catch((cause) =>
2026-10-24T11:04:44.0569528Z                     ~~~~~~~~~~~~
2026-10-24T11:04:44.0569530Z
2026-10-24T11:04:44.0569817Z 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-24T11:04:44.0569821Z
2026-10-24T11:04:44.0569873Z 110         append: (input) =>
2026-10-24T11:04:44.0574515Z             ~~~~~~
2026-10-24T11:04:44.0574518Z
2026-10-24T11:04:44.0574851Z 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-24T11:04:44.0574853Z
2026-10-24T11:04:44.0574912Z 120         appendProjectEvent: (event) =>
2026-10-24T11:04:44.0574959Z             ~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0574961Z
2026-10-24T11:04:44.0575341Z 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-24T11:04:44.0575344Z
2026-10-24T11:04:44.0575418Z 131         latestSequence: (input) =>
2026-10-24T11:04:44.0575489Z             ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0575545Z
2026-10-24T11:04:44.0575886Z src/orchestration-v2/FoundationPersistence.test.ts:1791:26 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0575888Z
2026-10-24T11:04:44.0575978Z 1791         claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T11:04:44.0576030Z                               ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0576032Z
2026-10-24T11:04:44.0576285Z src/orchestration-v2/FoundationPersistence.test.ts:1793:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0576288Z
2026-10-24T11:04:44.0576337Z 1793           Effect.succeed(
2026-10-24T11:04:44.0576383Z                ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0576385Z
2026-10-24T11:04:44.0576652Z src/orchestration-v2/FoundationPersistence.test.ts:2663:30 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0576657Z
2026-10-24T11:04:44.0576736Z 2663             nextClaimableAt: Effect.succeed(Option.none()),
2026-10-24T11:04:44.0576787Z                                   ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0576789Z
2026-10-24T11:04:44.0577041Z src/orchestration-v2/FoundationPersistence.test.ts:2880:30 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0577043Z
2026-10-24T11:04:44.0577120Z 2880             nextClaimableAt: Effect.succeed(Option.none()),
2026-10-24T11:04:44.0577173Z                                   ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0577175Z
2026-10-24T11:04:44.0577527Z 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-24T11:04:44.0577531Z
2026-10-24T11:04:44.0577626Z 11782       Effect.flatMap((planned) =>
2026-10-24T11:04:44.0577672Z             ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0577674Z
2026-10-24T11:04:44.0578005Z 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-24T11:04:44.0578007Z
2026-10-24T11:04:44.0578070Z 12205     restartContinuationPending: (run) =>
2026-10-24T11:04:44.0578115Z           ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0578119Z
2026-10-24T11:04:44.0578443Z 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-24T11:04:44.0578445Z
2026-10-24T11:04:44.0578506Z 12207     awaitRestartContinuation: (run) =>
2026-10-24T11:04:44.0578553Z           ~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0578555Z
2026-10-24T11:04:44.0578874Z 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-24T11:04:44.0578876Z
2026-10-24T11:04:44.0578931Z 12210     autoArmLimitRecovery: (input) =>
2026-10-24T11:04:44.0578976Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0578979Z
2026-10-24T11:04:44.0579336Z 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-24T11:04:44.0579339Z
2026-10-24T11:04:44.0579407Z 12238     searchThread: (input) =>
2026-10-24T11:04:44.0579467Z           ~~~~~~~~~~~~
2026-10-24T11:04:44.0579469Z
2026-10-24T11:04:44.0579855Z 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-24T11:04:44.0579906Z
2026-10-24T11:04:44.0580094Z 12246     getThreadHistoryPage: (threadId, cursor, throughEntryId, conversationOnly) =>
2026-10-24T11:04:44.0580139Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0580141Z
2026-10-24T11:04:44.0580471Z 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-24T11:04:44.0580474Z
2026-10-24T11:04:44.0580540Z 12250     getTimelinePage: (threadId, options) =>
2026-10-24T11:04:44.0580582Z           ~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0580585Z
2026-10-24T11:04:44.0580895Z 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-24T11:04:44.0580898Z
2026-10-24T11:04:44.0580953Z 12254     getMessageCount: (threadId) =>
2026-10-24T11:04:44.0580995Z           ~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0580997Z
2026-10-24T11:04:44.0581294Z 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-24T11:04:44.0581297Z
2026-10-24T11:04:44.0581345Z 12258     getTurnItem: (input) =>
2026-10-24T11:04:44.0581390Z           ~~~~~~~~~~~
2026-10-24T11:04:44.0581392Z
2026-10-24T11:04:44.0581725Z 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-24T11:04:44.0581729Z
2026-10-24T11:04:44.0581804Z 12266     getThreadRecords: (threadId, fields, filter) =>
2026-10-24T11:04:44.0581850Z           ~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0581852Z
2026-10-24T11:04:44.0582166Z 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-24T11:04:44.0582169Z
2026-10-24T11:04:44.0582228Z 12270     getThreadProjection: (threadId) =>
2026-10-24T11:04:44.0582275Z           ~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0582277Z
2026-10-24T11:04:44.0582599Z 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-24T11:04:44.0582601Z
2026-10-24T11:04:44.0582660Z 12274     getCheckpointContext: (threadId) =>
2026-10-24T11:04:44.0582705Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0582707Z
2026-10-24T11:04:44.0583019Z 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-24T11:04:44.0583021Z
2026-10-24T11:04:44.0583077Z 12278     getThreadSnapshot: (threadId) =>
2026-10-24T11:04:44.0583122Z           ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0583124Z
2026-10-24T11:04:44.0583504Z 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-24T11:04:44.0583506Z
2026-10-24T11:04:44.0583611Z 12282     getThreadSnapshotWindow: (threadId, options) =>
2026-10-24T11:04:44.0583659Z           ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0583705Z
2026-10-24T11:04:44.0584089Z 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-24T11:04:44.0584091Z
2026-10-24T11:04:44.0584146Z 12286     getShellSnapshot: (options) =>
2026-10-24T11:04:44.0584188Z           ~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0584192Z
2026-10-24T11:04:44.0584514Z 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-24T11:04:44.0584516Z
2026-10-24T11:04:44.0584576Z 12288     listActiveSubagentThreadIds: () =>
2026-10-24T11:04:44.0584623Z           ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0584625Z
2026-10-24T11:04:44.0584937Z 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-24T11:04:44.0584941Z
2026-10-24T11:04:44.0584998Z 12290     readShellSnapshot: (options) =>
2026-10-24T11:04:44.0585042Z           ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0585044Z
2026-10-24T11:04:44.0585360Z 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-24T11:04:44.0585362Z
2026-10-24T11:04:44.0585416Z 12297     getThreadShell: (threadId) =>
2026-10-24T11:04:44.0585461Z           ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0585464Z
2026-10-24T11:04:44.0585787Z 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-24T11:04:44.0585792Z
2026-10-24T11:04:44.0585853Z 12301     getThreadEventSequence: (threadId) =>
2026-10-24T11:04:44.0585900Z           ~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0585902Z
2026-10-24T11:04:44.0586225Z 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-24T11:04:44.0586227Z
2026-10-24T11:04:44.0586296Z 160         getInstance: () => Effect.succeed(undefined),
2026-10-24T11:04:44.0586351Z                                ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0586354Z
2026-10-24T11:04:44.0586655Z 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-24T11:04:44.0586657Z
2026-10-24T11:04:44.0586772Z 269     getShell: (projectId) => get(projectId).pipe(Effect.map(Option.map(toShell))),
2026-10-24T11:04:44.0586817Z         ~~~~~~~~
2026-10-24T11:04:44.0586819Z
2026-10-24T11:04:44.0587118Z 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-24T11:04:44.0587121Z
2026-10-24T11:04:44.0587168Z 270     listShells: (options) =>
2026-10-24T11:04:44.0587213Z         ~~~~~~~~~~
2026-10-24T11:04:44.0587215Z
2026-10-24T11:04:44.0587532Z src/orchestration-v2/ProjectionControlReads.test.ts:279:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0587535Z
2026-10-24T11:04:44.0587613Z 279           Effect.succeed(
2026-10-24T11:04:44.0587704Z               ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0587707Z
2026-10-24T11:04:44.0588153Z 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-24T11:04:44.0588155Z
2026-10-24T11:04:44.0588206Z 78       get: (instanceId) =>
2026-10-24T11:04:44.0588247Z          ~~~
2026-10-24T11:04:44.0588249Z
2026-10-24T11:04:44.0588563Z 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-24T11:04:44.0588566Z
2026-10-24T11:04:44.0588611Z 135       list: () =>
2026-10-24T11:04:44.0588651Z           ~~~~
2026-10-24T11:04:44.0588653Z
2026-10-24T11:04:44.0588976Z 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-24T11:04:44.0588979Z
2026-10-24T11:04:44.0589066Z 93       record: (properties: Readonly<Record<string, unknown>>) =>
2026-10-24T11:04:44.0589108Z          ~~~~~~
2026-10-24T11:04:44.0589110Z
2026-10-24T11:04:44.0589474Z 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-24T11:04:44.0589478Z
2026-10-24T11:04:44.0589537Z 818               Effect.flatMap((storedEvents) =>
2026-10-24T11:04:44.0589582Z                   ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0589585Z
2026-10-24T11:04:44.0589841Z src/orchestration-v2/ProviderSessionManager.test.ts:1155:19 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0589844Z
2026-10-24T11:04:44.0589967Z 1155                 : Effect.succeed(Option.some(makeBrowserAccessProject(requestedProjectId))),
2026-10-24T11:04:44.0590014Z                        ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0590017Z
2026-10-24T11:04:44.0590274Z src/orchestration-v2/ProviderTurnStartService.test.ts:150:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0590276Z
2026-10-24T11:04:44.0590323Z 150             Effect.succeed(
2026-10-24T11:04:44.0590368Z                 ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0590370Z
2026-10-24T11:04:44.0590628Z src/orchestration-v2/ProviderTurnStartService.test.ts:703:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0590630Z
2026-10-24T11:04:44.0590762Z 703             Effect.succeed(Option.some({ workspaceRoot: "/tmp/native-account-project" } as never)),
2026-10-24T11:04:44.0590807Z                 ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0590810Z
2026-10-24T11:04:44.0591070Z src/orchestration-v2/ProviderTurnStartService.testkit.ts:14:20 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0591072Z
2026-10-24T11:04:44.0591139Z 14     getById: () => Effect.succeed(Option.none()),
2026-10-24T11:04:44.0591186Z                       ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0591188Z
2026-10-24T11:04:44.0591476Z 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-24T11:04:44.0591478Z
2026-10-24T11:04:44.0591602Z 205               Effect.catchCause(() => Effect.succeed(undefined)),
2026-10-24T11:04:44.0591689Z                                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0591692Z
2026-10-24T11:04:44.0592073Z src/orchestration-v2/ProviderTurnStartService.ts:513:15 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T11:04:44.0592117Z
2026-10-24T11:04:44.0592201Z 513               Effect.catchCause((cause) =>
2026-10-24T11:04:44.0592271Z                   ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0592274Z
2026-10-24T11:04:44.0592709Z src/orchestration-v2/ProviderTurnStartService.ts:1316: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-24T11:04:44.0592712Z
2026-10-24T11:04:44.0592774Z 1316       return runExecution.startRootRun({
2026-10-24T11:04:44.0592815Z            ~~~~~~
2026-10-24T11:04:44.0592818Z
2026-10-24T11:04:44.0593073Z src/orchestration-v2/PullRequestWatchReactor.ts:478:53 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T11:04:44.0593077Z
2026-10-24T11:04:44.0593175Z 478             ? pullRequests.activity(reference).pipe(Effect.map(Option.some))
2026-10-24T11:04:44.0593239Z                                                         ~~~~~~~~~~
2026-10-24T11:04:44.0593241Z
2026-10-24T11:04:44.0593602Z 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-24T11:04:44.0593604Z
2026-10-24T11:04:44.0593676Z 49       cleanupScheduledTasks: (threadId: ThreadId) =>
2026-10-24T11:04:44.0593721Z          ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0593724Z
2026-10-24T11:04:44.0594062Z 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-24T11:04:44.0594066Z
2026-10-24T11:04:44.0594129Z 58       cleanupTerminals: (threadId: string) =>
2026-10-24T11:04:44.0594173Z          ~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0594175Z
2026-10-24T11:04:44.0594514Z 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-24T11:04:44.0594516Z
2026-10-24T11:04:44.0594576Z 66       cleanupPreviews: (threadId: string) =>
2026-10-24T11:04:44.0594620Z          ~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0594622Z
2026-10-24T11:04:44.0594975Z 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-24T11:04:44.0594978Z
2026-10-24T11:04:44.0595068Z 74       cleanupAttachments: (attachmentIds: ReadonlyArray<string>) =>
2026-10-24T11:04:44.0595111Z          ~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0595114Z
2026-10-24T11:04:44.0595373Z 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-24T11:04:44.0595375Z
2026-10-24T11:04:44.0595433Z 1812         ).pipe(Effect.map(Option.some)),
2026-10-24T11:04:44.0595478Z                     ~~~~~~~~~~
2026-10-24T11:04:44.0595480Z
2026-10-24T11:04:44.0595899Z 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-24T11:04:44.0595902Z
2026-10-24T11:04:44.0595980Z 931               Effect.catchCause((cause) =>
2026-10-24T11:04:44.0596091Z                   ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0596097Z
2026-10-24T11:04:44.0596371Z src/orchestration-v2/RuntimePolicy.test.ts:90:9 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0596373Z
2026-10-24T11:04:44.0596422Z 90         Effect.succeed(
2026-10-24T11:04:44.0596466Z            ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0596468Z
2026-10-24T11:04:44.0596760Z 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-24T11:04:44.0596764Z
2026-10-24T11:04:44.0596810Z 54   resolve: (input) =>
2026-10-24T11:04:44.0596851Z      ~~~~~~~
2026-10-24T11:04:44.0596853Z
2026-10-24T11:04:44.0597104Z src/orchestration-v2/RuntimeRequestService.test.ts:29:7 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0597108Z
2026-10-24T11:04:44.0597153Z 29       Effect.succeed(
2026-10-24T11:04:44.0597198Z          ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0597200Z
2026-10-24T11:04:44.0597443Z src/orchestration-v2/ThreadLaunchService.test.ts:189:33 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0597445Z
2026-10-24T11:04:44.0597538Z 189       getByWorkspaceRoot: () => Effect.succeed(Option.some(project)),
2026-10-24T11:04:44.0597603Z                                     ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0597605Z
2026-10-24T11:04:44.0597889Z src/orchestration-v2/ThreadLaunchService.test.ts:220:32 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0597891Z
2026-10-24T11:04:44.0597973Z 220         folderForThread: () => Effect.succeed(Option.none()),
2026-10-24T11:04:44.0598026Z                                    ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0598028Z
2026-10-24T11:04:44.0598349Z 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-24T11:04:44.0598351Z
2026-10-24T11:04:44.0598399Z 91     archive: (input) =>
2026-10-24T11:04:44.0598442Z        ~~~~~~~
2026-10-24T11:04:44.0598444Z
2026-10-24T11:04:44.0598767Z 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-24T11:04:44.0598772Z
2026-10-24T11:04:44.0598820Z 97     unarchive: (input) =>
2026-10-24T11:04:44.0598862Z        ~~~~~~~~~
2026-10-24T11:04:44.0598864Z
2026-10-24T11:04:44.0599180Z 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-24T11:04:44.0599184Z
2026-10-24T11:04:44.0599231Z 103     delete: (input) =>
2026-10-24T11:04:44.0599270Z         ~~~~~~
2026-10-24T11:04:44.0599272Z
2026-10-24T11:04:44.0599607Z 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-24T11:04:44.0599609Z
2026-10-24T11:04:44.0599661Z 109     updateMetadata: (input) =>
2026-10-24T11:04:44.0599758Z         ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0599760Z
2026-10-24T11:04:44.0600136Z 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-24T11:04:44.0600182Z
2026-10-24T11:04:44.0600255Z 118     setRuntimeMode: (input) =>
2026-10-24T11:04:44.0600322Z         ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0600325Z
2026-10-24T11:04:44.0600684Z 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-24T11:04:44.0600686Z
2026-10-24T11:04:44.0600742Z 125     setInteractionMode: (input) =>
2026-10-24T11:04:44.0600786Z         ~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0600788Z
2026-10-24T11:04:44.0601125Z 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-24T11:04:44.0601127Z
2026-10-24T11:04:44.0601181Z 132     setModelSelection: (input) =>
2026-10-24T11:04:44.0601227Z         ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0601229Z
2026-10-24T11:04:44.0601598Z 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-24T11:04:44.0601600Z
2026-10-24T11:04:44.0601655Z 689       Effect.flatMap((projection) =>
2026-10-24T11:04:44.0601697Z           ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0601699Z
2026-10-24T11:04:44.0601975Z 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-24T11:04:44.0601978Z
2026-10-24T11:04:44.0602044Z 706     ensureProjectionTranscript(input.threadId)
2026-10-24T11:04:44.0602097Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0602224Z 707       .pipe(Effect.andThen(orchestrator.getThreadRecords(input.threadId, fields, filter)))
2026-10-24T11:04:44.0602312Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0602351Z ...
2026-10-24T11:04:44.0602391Z 726         ),
2026-10-24T11:04:44.0602430Z     ~~~~~~~~~~
2026-10-24T11:04:44.0602471Z 727       );
2026-10-24T11:04:44.0602511Z     ~~~~~~~
2026-10-24T11:04:44.0602514Z
2026-10-24T11:04:44.0602884Z 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-24T11:04:44.0602886Z
2026-10-24T11:04:44.0602940Z 717         Effect.flatMap((projection) =>
2026-10-24T11:04:44.0602984Z             ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0602986Z
2026-10-24T11:04:44.0603345Z 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-24T11:04:44.0603349Z
2026-10-24T11:04:44.0603447Z 1131     if (failures[0] !== undefined) return yield* Effect.fail(failures[0]);
2026-10-24T11:04:44.0603500Z                                                ~~~~~
2026-10-24T11:04:44.0603503Z
2026-10-24T11:04:44.0603837Z 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-24T11:04:44.0603888Z
2026-10-24T11:04:44.0603956Z 1142     searchThread: (input) =>
2026-10-24T11:04:44.0604014Z          ~~~~~~~~~~~~
2026-10-24T11:04:44.0604016Z
2026-10-24T11:04:44.0604439Z 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-24T11:04:44.0604487Z
2026-10-24T11:04:44.0604674Z 1147     getThreadHistoryPage: (threadId, cursor, throughEntryId, conversationOnly) =>
2026-10-24T11:04:44.0604717Z          ~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0604720Z
2026-10-24T11:04:44.0605081Z 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-24T11:04:44.0605085Z
2026-10-24T11:04:44.0605147Z 1153     getTimelinePage: (threadId, options) =>
2026-10-24T11:04:44.0605191Z          ~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0605194Z
2026-10-24T11:04:44.0605540Z 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-24T11:04:44.0605544Z
2026-10-24T11:04:44.0605597Z 1157     getMessageCount: (threadId) =>
2026-10-24T11:04:44.0605640Z          ~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0605642Z
2026-10-24T11:04:44.0605985Z 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-24T11:04:44.0605987Z
2026-10-24T11:04:44.0606037Z 1161     getTurnItem: (input) =>
2026-10-24T11:04:44.0606082Z          ~~~~~~~~~~~
2026-10-24T11:04:44.0606084Z
2026-10-24T11:04:44.0606464Z 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-24T11:04:44.0606470Z
2026-10-24T11:04:44.0606541Z 1166     getThreadRecords: (threadId, fields, filter) =>
2026-10-24T11:04:44.0606585Z          ~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0606587Z
2026-10-24T11:04:44.0606967Z 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-24T11:04:44.0606970Z
2026-10-24T11:04:44.0607105Z 1206     ensureTranscript: () => Effect.succeed({ importedThreadCount: 0, importedMessageCount: 0 }),
2026-10-24T11:04:44.0607149Z          ~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0607151Z
2026-10-24T11:04:44.0607414Z src/orchestration-v2/ThreadPullRequestService.test.ts:119:29 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0607416Z
2026-10-24T11:04:44.0607498Z 119             getShell: () => Effect.succeed(Option.some(project)),
2026-10-24T11:04:44.0607548Z                                 ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0607550Z
2026-10-24T11:04:44.0607845Z src/orchestration-v2/ThreadPullRequestService.test.ts:238:31 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0607847Z
2026-10-24T11:04:44.0607924Z 238               getShell: () => Effect.succeed(Option.some(project)),
2026-10-24T11:04:44.0607975Z                                   ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0607977Z
2026-10-24T11:04:44.0608416Z 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-24T11:04:44.0608418Z
2026-10-24T11:04:44.0608504Z 329                 Effect.catchCause((cause) =>
2026-10-24T11:04:44.0608622Z                     ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0608626Z
2026-10-24T11:04:44.0609032Z 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-24T11:04:44.0609037Z
2026-10-24T11:04:44.0609090Z 353           Effect.catchCause((cause) =>
2026-10-24T11:04:44.0609136Z               ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0609138Z
2026-10-24T11:04:44.0609501Z 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-24T11:04:44.0609503Z
2026-10-24T11:04:44.0609559Z 516           Effect.catchCause((cause) =>
2026-10-24T11:04:44.0609603Z               ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0609607Z
2026-10-24T11:04:44.0609970Z 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-24T11:04:44.0609972Z
2026-10-24T11:04:44.0610024Z 534       Effect.catchCause((cause) =>
2026-10-24T11:04:44.0610066Z           ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0610068Z
2026-10-24T11:04:44.0610463Z 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-24T11:04:44.0610466Z
2026-10-24T11:04:44.0610519Z 576         Effect.catchCause((cause) =>
2026-10-24T11:04:44.0610564Z             ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0610566Z
2026-10-24T11:04:44.0610912Z 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-24T11:04:44.0610914Z
2026-10-24T11:04:44.0610967Z 106       normalize: (item, runOrdinal) =>
2026-10-24T11:04:44.0611023Z           ~~~~~~~~~
2026-10-24T11:04:44.0611025Z
2026-10-24T11:04:44.0611416Z 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-24T11:04:44.0611418Z
2026-10-24T11:04:44.0611515Z 54 const thread = Schema.decodeUnknownSync(OrchestrationV2AppThread)({
2026-10-24T11:04:44.0611561Z                          ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0611563Z
2026-10-24T11:04:44.0611921Z 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-24T11:04:44.0611924Z
2026-10-24T11:04:44.0611967Z 231           try {
2026-10-24T11:04:44.0612008Z               ~~~~~
2026-10-24T11:04:44.0612087Z 232             decodeThreadHistoryCursor(args.query.cursor);
2026-10-24T11:04:44.0612148Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0612188Z ...
2026-10-24T11:04:44.0612313Z 236             return yield* failEnvironmentInternal("orchestration_thread_history_failed", cause);
2026-10-24T11:04:44.0612449Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0612500Z 237           }
2026-10-24T11:04:44.0612562Z     ~~~~~~~~~~~
2026-10-24T11:04:44.0612565Z
2026-10-24T11:04:44.0612920Z src/orchestration-v2/runtimeLayer.test.ts:120:18 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0612979Z
2026-10-24T11:04:44.0613082Z 120   getById: () => Effect.succeed(Option.none()),
2026-10-24T11:04:44.0613152Z                      ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0613155Z
2026-10-24T11:04:44.0613429Z src/orchestration-v2/runtimeLayer.test.ts:996:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0613432Z
2026-10-24T11:04:44.0613479Z 996           Effect.succeed(
2026-10-24T11:04:44.0613525Z               ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0613529Z
2026-10-24T11:04:44.0613885Z 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-24T11:04:44.0613889Z
2026-10-24T11:04:44.0613936Z 40         append: (input) =>
2026-10-24T11:04:44.0613977Z            ~~~~~~
2026-10-24T11:04:44.0613980Z
2026-10-24T11:04:44.0614293Z 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-24T11:04:44.0614295Z
2026-10-24T11:04:44.0614355Z 283       const awaitDispatch = (key: string) =>
2026-10-24T11:04:44.0614398Z                 ~~~~~~~~~~~~~
2026-10-24T11:04:44.0614400Z
2026-10-24T11:04:44.0614803Z 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-24T11:04:44.0614805Z
2026-10-24T11:04:44.0614858Z 447       execute: () => Effect.void,
2026-10-24T11:04:44.0614901Z           ~~~~~~~
2026-10-24T11:04:44.0614903Z
2026-10-24T11:04:44.0615228Z 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-24T11:04:44.0615230Z
2026-10-24T11:04:44.0615277Z 92     list: (input) =>
2026-10-24T11:04:44.0615317Z        ~~~~
2026-10-24T11:04:44.0615319Z
2026-10-24T11:04:44.0615644Z 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-24T11:04:44.0615647Z
2026-10-24T11:04:44.0615691Z 102     set: (input) =>
2026-10-24T11:04:44.0615732Z         ~~~
2026-10-24T11:04:44.0615734Z
2026-10-24T11:04:44.0616053Z 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-24T11:04:44.0616058Z
2026-10-24T11:04:44.0616100Z 54     get: (key) =>
2026-10-24T11:04:44.0616140Z        ~~~
2026-10-24T11:04:44.0616143Z
2026-10-24T11:04:44.0616473Z 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-24T11:04:44.0616475Z
2026-10-24T11:04:44.0616523Z 64     put: (key, guide) =>
2026-10-24T11:04:44.0616562Z        ~~~
2026-10-24T11:04:44.0616564Z
2026-10-24T11:04:44.0617042Z 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-24T11:04:44.0617046Z
2026-10-24T11:04:44.0617171Z 45         Effect.catch((error) =>
2026-10-24T11:04:44.0617240Z            ~~~~~~~~~~~~
2026-10-24T11:04:44.0617243Z
2026-10-24T11:04:44.0617615Z 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-24T11:04:44.0617617Z
2026-10-24T11:04:44.0617680Z 75       awaitAttached: () => Effect.succeed(false),
2026-10-24T11:04:44.0617723Z          ~~~~~~~~~~~~~
2026-10-24T11:04:44.0617725Z
2026-10-24T11:04:44.0618027Z 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-24T11:04:44.0618030Z
2026-10-24T11:04:44.0618092Z 78       isAttached: () => Effect.succeed(false),
2026-10-24T11:04:44.0618134Z          ~~~~~~~~~~
2026-10-24T11:04:44.0618136Z
2026-10-24T11:04:44.0618431Z 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-24T11:04:44.0618434Z
2026-10-24T11:04:44.0618534Z 79       endpoint: () => Effect.die("No desktop app is attached to this server."),
2026-10-24T11:04:44.0618576Z          ~~~~~~~~
2026-10-24T11:04:44.0618578Z
2026-10-24T11:04:44.0618869Z 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-24T11:04:44.0618872Z
2026-10-24T11:04:44.0618924Z 80       pointer: () => Effect.void,
2026-10-24T11:04:44.0618963Z          ~~~~~~~
2026-10-24T11:04:44.0618965Z
2026-10-24T11:04:44.0619287Z 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-24T11:04:44.0619291Z
2026-10-24T11:04:44.0619344Z 194     awaitAttached: (key, timeout) =>
2026-10-24T11:04:44.0619386Z         ~~~~~~~~~~~~~
2026-10-24T11:04:44.0619388Z
2026-10-24T11:04:44.0619693Z 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-24T11:04:44.0619697Z
2026-10-24T11:04:44.0619792Z 216     isAttached: (key) => Effect.sync(() => attachedTabs.has(keyOf(key))),
2026-10-24T11:04:44.0619837Z         ~~~~~~~~~~
2026-10-24T11:04:44.0619839Z
2026-10-24T11:04:44.0620151Z 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-24T11:04:44.0620155Z
2026-10-24T11:04:44.0620257Z 218     pointer: (key, pointer) => command({ type: "pointer", ...key, ...pointer }),
2026-10-24T11:04:44.0620296Z         ~~~~~~~
2026-10-24T11:04:44.0620298Z
2026-10-24T11:04:44.0620742Z 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-24T11:04:44.0620744Z
2026-10-24T11:04:44.0620840Z 481     executable: () => Effect.runPromise(previewBrowser.executable),
2026-10-24T11:04:44.0620931Z                           ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0620934Z
2026-10-24T11:04:44.0621404Z 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-24T11:04:44.0621448Z
2026-10-24T11:04:44.0621521Z 688       ? Effect.runPromise(
2026-10-24T11:04:44.0621589Z             ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0621592Z
2026-10-24T11:04:44.0622044Z 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-24T11:04:44.0622046Z
2026-10-24T11:04:44.0622125Z 697     const scope = await Effect.runPromise(Scope.make());
2026-10-24T11:04:44.0622175Z                             ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0622177Z
2026-10-24T11:04:44.0622608Z 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-24T11:04:44.0622612Z
2026-10-24T11:04:44.0622674Z 699       const endpoint = await Effect.runPromise(
2026-10-24T11:04:44.0622727Z                                  ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0622729Z
2026-10-24T11:04:44.0623160Z 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-24T11:04:44.0623162Z
2026-10-24T11:04:44.0623246Z 709           await Effect.runPromise(Scope.close(scope, Exit.void));
2026-10-24T11:04:44.0623293Z                     ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0623295Z
2026-10-24T11:04:44.0623719Z 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-24T11:04:44.0623725Z
2026-10-24T11:04:44.0623807Z 713       await Effect.runPromise(Scope.close(scope, Exit.void));
2026-10-24T11:04:44.0623854Z                 ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0623856Z
2026-10-24T11:04:44.0624289Z 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-24T11:04:44.0624291Z
2026-10-24T11:04:44.0624341Z 1200     await Effect.runPromise(
2026-10-24T11:04:44.0624386Z                ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0624391Z
2026-10-24T11:04:44.0624826Z 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-24T11:04:44.0624828Z
2026-10-24T11:04:44.0624882Z 1693         : await Effect.runPromise(
2026-10-24T11:04:44.0624929Z                      ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0624931Z
2026-10-24T11:04:44.0625406Z 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-24T11:04:44.0625409Z
2026-10-24T11:04:44.0625509Z 1757             ? await Effect.runPromise(
2026-10-24T11:04:44.0625638Z                          ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0625641Z
2026-10-24T11:04:44.0625949Z 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-24T11:04:44.0625951Z
2026-10-24T11:04:44.0626058Z 1760                     ServerBrowserTabNotFoundError: () => Effect.succeed(undefined),
2026-10-24T11:04:44.0626126Z                                                               ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0626128Z
2026-10-24T11:04:44.0626563Z 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-24T11:04:44.0626565Z
2026-10-24T11:04:44.0626635Z 1766           const { sessions } = await Effect.runPromise(
2026-10-24T11:04:44.0626694Z                                           ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0626696Z
2026-10-24T11:04:44.0627128Z 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-24T11:04:44.0627130Z
2026-10-24T11:04:44.0627185Z 1794             await Effect.runPromise(
2026-10-24T11:04:44.0627231Z                        ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0627233Z
2026-10-24T11:04:44.0627705Z 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-24T11:04:44.0627711Z
2026-10-24T11:04:44.0627763Z 1825               await Effect.runPromise(
2026-10-24T11:04:44.0627809Z                          ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0627811Z
2026-10-24T11:04:44.0628246Z 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-24T11:04:44.0628248Z
2026-10-24T11:04:44.0628379Z 1889       await Effect.runPromise(manager.close({ threadId: tab.threadId, tabId: tab.tabId }));
2026-10-24T11:04:44.0628424Z                  ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0628428Z
2026-10-24T11:04:44.0628859Z 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-24T11:04:44.0628863Z
2026-10-24T11:04:44.0628916Z 1957         await Effect.runPromise(
2026-10-24T11:04:44.0628962Z                    ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0628965Z
2026-10-24T11:04:44.0629400Z 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-24T11:04:44.0629402Z
2026-10-24T11:04:44.0629514Z 1969         const snapshot = await Effect.runPromise(
2026-10-24T11:04:44.0629586Z                                     ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0629590Z
2026-10-24T11:04:44.0630037Z 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-24T11:04:44.0630089Z
2026-10-24T11:04:44.0630170Z 2215         await Effect.runPromise(
2026-10-24T11:04:44.0630239Z                    ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0630242Z
2026-10-24T11:04:44.0630521Z 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-24T11:04:44.0630523Z
2026-10-24T11:04:44.0630595Z 179       const receive = (chunk: Uint8Array | string) => {
2026-10-24T11:04:44.0630639Z                 ~~~~~~~
2026-10-24T11:04:44.0630641Z
2026-10-24T11:04:44.0630931Z 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-24T11:04:44.0630935Z
2026-10-24T11:04:44.0631027Z 209     Effect.catch(() => Effect.succeed(HttpServerResponse.empty())),
2026-10-24T11:04:44.0631069Z         ~~~~~~~~~~~~
2026-10-24T11:04:44.0631071Z
2026-10-24T11:04:44.0631386Z 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-24T11:04:44.0631389Z
2026-10-24T11:04:44.0631474Z 860     resolveAvailableEditors: () => cachedAvailableEditors,
2026-10-24T11:04:44.0631519Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0631523Z
2026-10-24T11:04:44.0631843Z 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-24T11:04:44.0631847Z
2026-10-24T11:04:44.0631904Z 861     resolveFileManagerRevealKind: () =>
2026-10-24T11:04:44.0631948Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0631950Z
2026-10-24T11:04:44.0632257Z 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-24T11:04:44.0632260Z
2026-10-24T11:04:44.0632310Z 865     launchBrowser: (target) =>
2026-10-24T11:04:44.0632351Z         ~~~~~~~~~~~~~
2026-10-24T11:04:44.0632353Z
2026-10-24T11:04:44.0632649Z 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-24T11:04:44.0632654Z
2026-10-24T11:04:44.0632701Z 869     launchEditor: (input) =>
2026-10-24T11:04:44.0632744Z         ~~~~~~~~~~~~
2026-10-24T11:04:44.0632746Z
2026-10-24T11:04:44.0632988Z src/project/AgentSessionImporter.test.ts:212:15 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0632990Z
2026-10-24T11:04:44.0633037Z 212               Effect.succeed(
2026-10-24T11:04:44.0633079Z                   ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0633081Z
2026-10-24T11:04:44.0633313Z src/project/ManagedProjectFolders.ts:346:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0633316Z
2026-10-24T11:04:44.0633396Z 346           ? Effect.succeed(Option.some(folderFor(id.slice(-8))))
2026-10-24T11:04:44.0633484Z                 ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0633487Z
2026-10-24T11:04:44.0633752Z src/project/ManagedProjectFolders.ts:348:15 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0633755Z
2026-10-24T11:04:44.0633919Z 348             ? Effect.succeed(Option.some(fullFolder))
2026-10-24T11:04:44.0633987Z                   ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0633989Z
2026-10-24T11:04:44.0634297Z 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-24T11:04:44.0634299Z
2026-10-24T11:04:44.0634375Z 432     start: (input, hooks) => locked(start(input, hooks)),
2026-10-24T11:04:44.0634414Z         ~~~~~
2026-10-24T11:04:44.0634418Z
2026-10-24T11:04:44.0634722Z 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-24T11:04:44.0634725Z
2026-10-24T11:04:44.0634794Z 433     cancel: (projectId) => locked(cancel(projectId)),
2026-10-24T11:04:44.0634835Z         ~~~~~~
2026-10-24T11:04:44.0634839Z
2026-10-24T11:04:44.0635137Z 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-24T11:04:44.0635140Z
2026-10-24T11:04:44.0635208Z 434     retry: (projectId) => locked(retry(projectId)),
2026-10-24T11:04:44.0635246Z         ~~~~~
2026-10-24T11:04:44.0635248Z
2026-10-24T11:04:44.0635553Z 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-24T11:04:44.0635556Z
2026-10-24T11:04:44.0635628Z 435     discard: (projectId) => locked(discard(projectId)),
2026-10-24T11:04:44.0635670Z         ~~~~~~~
2026-10-24T11:04:44.0635672Z
2026-10-24T11:04:44.0635988Z 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-24T11:04:44.0635994Z
2026-10-24T11:04:44.0636089Z 21         get: (key) => Effect.sync(() => Option.fromUndefinedOr(bytes.get(key))),
2026-10-24T11:04:44.0636131Z            ~~~
2026-10-24T11:04:44.0636133Z
2026-10-24T11:04:44.0636459Z 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-24T11:04:44.0636462Z
2026-10-24T11:04:44.0636510Z 22         set: (key, value) =>
2026-10-24T11:04:44.0636549Z            ~~~
2026-10-24T11:04:44.0636551Z
2026-10-24T11:04:44.0636877Z 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-24T11:04:44.0636881Z
2026-10-24T11:04:44.0636929Z 26         remove: (key) =>
2026-10-24T11:04:44.0636972Z            ~~~~~~
2026-10-24T11:04:44.0636974Z
2026-10-24T11:04:44.0637293Z 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-24T11:04:44.0637296Z
2026-10-24T11:04:44.0637392Z 30         create: () => Effect.die("Handoff does not create persistent secrets."),
2026-10-24T11:04:44.0637434Z            ~~~~~~
2026-10-24T11:04:44.0637436Z
2026-10-24T11:04:44.0637866Z 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-24T11:04:44.0637869Z
2026-10-24T11:04:44.0638036Z 31         getOrCreateRandom: () => Effect.die("Handoff uses the destination environment identity."),
2026-10-24T11:04:44.0638152Z            ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0638155Z
2026-10-24T11:04:44.0638601Z 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-24T11:04:44.0638606Z
2026-10-24T11:04:44.0638712Z 205     return yield* Schema.decodeUnknownEffect(Schema.fromJsonString(schema))(
2026-10-24T11:04:44.0638766Z                              ~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0638769Z
2026-10-24T11:04:44.0639030Z 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-24T11:04:44.0639032Z
2026-10-24T11:04:44.0639086Z 569         ? Effect.succeed(undefined)
2026-10-24T11:04:44.0639131Z               ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0639133Z
2026-10-24T11:04:44.0639441Z 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-24T11:04:44.0639444Z
2026-10-24T11:04:44.0639495Z 284       current: (driverKind) =>
2026-10-24T11:04:44.0639535Z           ~~~~~~~
2026-10-24T11:04:44.0639537Z
2026-10-24T11:04:44.0639886Z 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-24T11:04:44.0639889Z
2026-10-24T11:04:44.0639943Z 284                 return yield* Effect.fail(
2026-10-24T11:04:44.0639990Z                            ~~~~~
2026-10-24T11:04:44.0639993Z
2026-10-24T11:04:44.0640305Z 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-24T11:04:44.0640308Z
2026-10-24T11:04:44.0640358Z 211     importProfile: (input) =>
2026-10-24T11:04:44.0640399Z         ~~~~~~~~~~~~~
2026-10-24T11:04:44.0640402Z
2026-10-24T11:04:44.0640735Z 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-24T11:04:44.0640738Z
2026-10-24T11:04:44.0640814Z 39       credentials: (namespace, bindingId) =>
2026-10-24T11:04:44.0640856Z          ~~~~~~~~~~~
2026-10-24T11:04:44.0640858Z
2026-10-24T11:04:44.0641222Z 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-24T11:04:44.0641226Z
2026-10-24T11:04:44.0641281Z 2933       Effect.catchCause((cause) =>
2026-10-24T11:04:44.0641324Z            ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0641327Z
2026-10-24T11:04:44.0641688Z 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-24T11:04:44.0641690Z
2026-10-24T11:04:44.0641741Z 3336       Effect.catchCause((cause) =>
2026-10-24T11:04:44.0641833Z            ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0641836Z
2026-10-24T11:04:44.0642181Z 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-24T11:04:44.0642228Z
2026-10-24T11:04:44.0642298Z 3556     listStats: (input) =>
2026-10-24T11:04:44.0642363Z          ~~~~~~~~~
2026-10-24T11:04:44.0642367Z
2026-10-24T11:04:44.0642616Z src/relay/AgentAwarenessRelay.test.ts:271:9 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T11:04:44.0642619Z
2026-10-24T11:04:44.0642666Z 271         Effect.succeed(
2026-10-24T11:04:44.0642708Z             ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0642710Z
2026-10-24T11:04:44.0643013Z 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-24T11:04:44.0643015Z
2026-10-24T11:04:44.0643133Z 822     requestCatchUp: () => Queue.offer(catchUpRequests, undefined).pipe(Effect.asVoid),
2026-10-24T11:04:44.0643175Z         ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0643178Z
2026-10-24T11:04:44.0643546Z 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-24T11:04:44.0643549Z
2026-10-24T11:04:44.0643606Z 641     requestDesktopUpdate: (requestId) =>
2026-10-24T11:04:44.0643652Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0643654Z
2026-10-24T11:04:44.0644016Z 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-24T11:04:44.0644019Z
2026-10-24T11:04:44.0644076Z 647     commitDesktopUpdate: (requestId) =>
2026-10-24T11:04:44.0644120Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0644122Z
2026-10-24T11:04:44.0644481Z 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-24T11:04:44.0644485Z
2026-10-24T11:04:44.0644541Z 649     cancelDesktopUpdate: (requestId) =>
2026-10-24T11:04:44.0644584Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0644586Z
2026-10-24T11:04:44.0644936Z 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-24T11:04:44.0644940Z
2026-10-24T11:04:44.0645003Z 698       setDiagnosticsDemand: () => Effect.void,
2026-10-24T11:04:44.0645047Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0645049Z
2026-10-24T11:04:44.0645400Z 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-24T11:04:44.0645404Z
2026-10-24T11:04:44.0645470Z 699       requestDesktopUpdate: () => Effect.void,
2026-10-24T11:04:44.0645513Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0645515Z
2026-10-24T11:04:44.0645862Z 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-24T11:04:44.0645864Z
2026-10-24T11:04:44.0645966Z 700       commitDesktopUpdate: () => Effect.void,
2026-10-24T11:04:44.0646027Z           ~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0646030Z
2026-10-24T11:04:44.0646398Z 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-24T11:04:44.0646448Z
2026-10-24T11:04:44.0646541Z 701       cancelDesktopUpdate: () => Effect.void,
2026-10-24T11:04:44.0646612Z           ~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0646615Z
2026-10-24T11:04:44.0646943Z 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-24T11:04:44.0646945Z
2026-10-24T11:04:44.0646993Z 1091       readHistory: () =>
2026-10-24T11:04:44.0647034Z            ~~~~~~~~~~~
2026-10-24T11:04:44.0647037Z
2026-10-24T11:04:44.0647377Z 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-24T11:04:44.0647379Z
2026-10-24T11:04:44.0647443Z 1097       setExternalProcesses: () => Effect.void,
2026-10-24T11:04:44.0647485Z            ~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0647487Z
2026-10-24T11:04:44.0647856Z 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-24T11:04:44.0647859Z
2026-10-24T11:04:44.0647917Z 1098       setHostPowerState: () => Effect.void,
2026-10-24T11:04:44.0647959Z            ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0647962Z
2026-10-24T11:04:44.0648248Z 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-24T11:04:44.0648253Z
2026-10-24T11:04:44.0648319Z 1136                             ? Effect.succeed(undefined)
2026-10-24T11:04:44.0648377Z                                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0648381Z
2026-10-24T11:04:44.0648650Z 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-24T11:04:44.0648653Z
2026-10-24T11:04:44.0648723Z 166       const results = yield* Effect.all(
2026-10-24T11:04:44.0648769Z                                  ~~~~~~~~~~
2026-10-24T11:04:44.0648771Z
2026-10-24T11:04:44.0649116Z 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-24T11:04:44.0649119Z
2026-10-24T11:04:44.0649171Z 482     return Effect.gen(function* () {
2026-10-24T11:04:44.0649212Z         ~~~~~~
2026-10-24T11:04:44.0649214Z
2026-10-24T11:04:44.0649480Z 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-24T11:04:44.0649484Z
2026-10-24T11:04:44.0649549Z 209           prepareTrial: Effect.succeed(undefined),
2026-10-24T11:04:44.0649605Z                             ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0649607Z
2026-10-24T11:04:44.0649866Z 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-24T11:04:44.0649868Z
2026-10-24T11:04:44.0649922Z 413       const results = yield* Effect.all(
2026-10-24T11:04:44.0650018Z                                  ~~~~~~~~~~
2026-10-24T11:04:44.0650021Z
2026-10-24T11:04:44.0650459Z 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-24T11:04:44.0650510Z
2026-10-24T11:04:44.0650593Z 204     listChangeRequests: (input) =>
2026-10-24T11:04:44.0650662Z         ~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0650665Z
2026-10-24T11:04:44.0651070Z 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-24T11:04:44.0651072Z
2026-10-24T11:04:44.0651127Z 209     getChangeRequest: (input) =>
2026-10-24T11:04:44.0651171Z         ~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0651173Z
2026-10-24T11:04:44.0651570Z 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-24T11:04:44.0651574Z
2026-10-24T11:04:44.0651628Z 214     createChangeRequest: (input) =>
2026-10-24T11:04:44.0651672Z         ~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0651674Z
2026-10-24T11:04:44.0652077Z 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-24T11:04:44.0652080Z
2026-10-24T11:04:44.0652137Z 219     getRepositoryCloneUrls: (input) =>
2026-10-24T11:04:44.0652182Z         ~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0652184Z
2026-10-24T11:04:44.0652577Z 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-24T11:04:44.0652580Z
2026-10-24T11:04:44.0652679Z 224     createRepository: (input) => provider.createRepository(input),
2026-10-24T11:04:44.0652770Z         ~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0652774Z
2026-10-24T11:04:44.0653207Z 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-24T11:04:44.0653212Z
2026-10-24T11:04:44.0653263Z 225     getDefaultBranch: (input) =>
2026-10-24T11:04:44.0653307Z         ~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0653309Z
2026-10-24T11:04:44.0653707Z 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-24T11:04:44.0653709Z
2026-10-24T11:04:44.0653769Z 230     checkoutChangeRequest: (input) =>
2026-10-24T11:04:44.0653813Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0653815Z
2026-10-24T11:04:44.0654158Z 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-24T11:04:44.0654161Z
2026-10-24T11:04:44.0654287Z 345       resolve: (input) => resolveHandle(input).pipe(Effect.map((handle) => handle.provider)),
2026-10-24T11:04:44.0654328Z           ~~~~~~~
2026-10-24T11:04:44.0654330Z
2026-10-24T11:04:44.0654737Z 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-24T11:04:44.0654740Z
2026-10-24T11:04:44.0654807Z 409       Effect.catch((sshError) =>
2026-10-24T11:04:44.0654928Z           ~~~~~~~~~~~~
2026-10-24T11:04:44.0654931Z
2026-10-24T11:04:44.0655340Z 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-24T11:04:44.0655342Z
2026-10-24T11:04:44.0655392Z 556     lookupRepository: (input) =>
2026-10-24T11:04:44.0655435Z         ~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0655437Z
2026-10-24T11:04:44.0655804Z 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-24T11:04:44.0655806Z
2026-10-24T11:04:44.0655856Z 558     prepareClone: (input) =>
2026-10-24T11:04:44.0655899Z         ~~~~~~~~~~~~
2026-10-24T11:04:44.0655901Z
2026-10-24T11:04:44.0656280Z 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-24T11:04:44.0656283Z
2026-10-24T11:04:44.0656340Z 565     cloneRepository: (input, options) =>
2026-10-24T11:04:44.0656382Z         ~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0656384Z
2026-10-24T11:04:44.0656765Z 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-24T11:04:44.0656767Z
2026-10-24T11:04:44.0656822Z 572     discardClone: (destinationPath) =>
2026-10-24T11:04:44.0656862Z         ~~~~~~~~~~~~
2026-10-24T11:04:44.0656864Z
2026-10-24T11:04:44.0657234Z 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-24T11:04:44.0657238Z
2026-10-24T11:04:44.0657291Z 576     publishRepository: (input) =>
2026-10-24T11:04:44.0657336Z         ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0657338Z
2026-10-24T11:04:44.0657699Z 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-24T11:04:44.0657701Z
2026-10-24T11:04:44.0657753Z 708       return yield* Effect.fail(
2026-10-24T11:04:44.0657793Z                  ~~~~~
2026-10-24T11:04:44.0657797Z
2026-10-24T11:04:44.0658077Z 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-24T11:04:44.0658081Z
2026-10-24T11:04:44.0658128Z 113       record: () => Effect.void,
2026-10-24T11:04:44.0658170Z           ~~~~~~
2026-10-24T11:04:44.0658172Z
2026-10-24T11:04:44.0658463Z 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-24T11:04:44.0658465Z
2026-10-24T11:04:44.0658517Z 115       recordOwners: () => Effect.void,
2026-10-24T11:04:44.0658558Z           ~~~~~~~~~~~~
2026-10-24T11:04:44.0658560Z
2026-10-24T11:04:44.0658902Z 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-24T11:04:44.0658905Z
2026-10-24T11:04:44.0659083Z 329   yield* Effect.forever(Effect.sleep(FLUSH_INTERVAL_MS).pipe(Effect.flatMap(() => flushWhenDue)), {
2026-10-24T11:04:44.0659230Z                                                                  ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0659234Z
2026-10-24T11:04:44.0659530Z 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-24T11:04:44.0659534Z
2026-10-24T11:04:44.0659591Z 90       .pipe(Effect.catch(() => Effect.void));
2026-10-24T11:04:44.0659634Z                ~~~~~~~~~~~~
2026-10-24T11:04:44.0659636Z
2026-10-24T11:04:44.0659954Z 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-24T11:04:44.0659956Z
2026-10-24T11:04:44.0660012Z 60     generateCommitMessage: (input) =>
2026-10-24T11:04:44.0660055Z        ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0660057Z
2026-10-24T11:04:44.0660365Z 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-24T11:04:44.0660367Z
2026-10-24T11:04:44.0660419Z 64     generatePrContent: (input) =>
2026-10-24T11:04:44.0660461Z        ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0660463Z
2026-10-24T11:04:44.0660774Z 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-24T11:04:44.0660776Z
2026-10-24T11:04:44.0660829Z 68     generateBranchName: (input) =>
2026-10-24T11:04:44.0660873Z        ~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0660875Z
2026-10-24T11:04:44.0661187Z 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-24T11:04:44.0661191Z
2026-10-24T11:04:44.0661242Z 72     generateReviewGuide: (input) =>
2026-10-24T11:04:44.0661284Z        ~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0661287Z
2026-10-24T11:04:44.0661597Z 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-24T11:04:44.0661599Z
2026-10-24T11:04:44.0661652Z 76     generateThreadTitle: (input) =>
2026-10-24T11:04:44.0661695Z        ~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0661698Z
2026-10-24T11:04:44.0661976Z 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-24T11:04:44.0661979Z
2026-10-24T11:04:44.0662027Z 172     readSummary: (input) =>
2026-10-24T11:04:44.0662068Z         ~~~~~~~~~~~
2026-10-24T11:04:44.0662070Z
2026-10-24T11:04:44.0662307Z 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-24T11:04:44.0662309Z
2026-10-24T11:04:44.0662368Z 642         usageInstances(driver, settings)
2026-10-24T11:04:44.0662417Z             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0662458Z 643           .pipe(
2026-10-24T11:04:44.0662499Z     ~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0662540Z ...
2026-10-24T11:04:44.0662606Z 664             Effect.provideContext(readerContext),
2026-10-24T11:04:44.0662708Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0662762Z 665           ),
2026-10-24T11:04:44.0662821Z     ~~~~~~~~~~~
2026-10-24T11:04:44.0662823Z
2026-10-24T11:04:44.0663161Z 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-24T11:04:44.0663207Z
2026-10-24T11:04:44.0663284Z 4009         Effect.flatMap((result) =>
2026-10-24T11:04:44.0663352Z              ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0663355Z
2026-10-24T11:04:44.0663693Z 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-24T11:04:44.0663696Z
2026-10-24T11:04:44.0663757Z 4500     commit: (cwd, subject, body, options) =>
2026-10-24T11:04:44.0663799Z          ~~~~~~
2026-10-24T11:04:44.0663803Z
2026-10-24T11:04:44.0664153Z 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-24T11:04:44.0664157Z
2026-10-24T11:04:44.0664237Z 4502     pushCurrentBranch: (cwd, fallbackBranch, options) =>
2026-10-24T11:04:44.0664280Z          ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0664282Z
2026-10-24T11:04:44.0664595Z 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-24T11:04:44.0664598Z
2026-10-24T11:04:44.0664722Z 4504     pullCurrentBranch: (cwd) => withListRefsInvalidation(cwd, pullCurrentBranch(cwd)),
2026-10-24T11:04:44.0664764Z          ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0664767Z
2026-10-24T11:04:44.0665088Z 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-24T11:04:44.0665092Z
2026-10-24T11:04:44.0665148Z 4511     createWorktree: (input, options) =>
2026-10-24T11:04:44.0665191Z          ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0665193Z
2026-10-24T11:04:44.0665516Z 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-24T11:04:44.0665520Z
2026-10-24T11:04:44.0665576Z 4513     fetchPullRequestBranch: (input) =>
2026-10-24T11:04:44.0665620Z          ~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0665622Z
2026-10-24T11:04:44.0665948Z 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-24T11:04:44.0665950Z
2026-10-24T11:04:44.0666007Z 4517     refreshCheckedOutBranch: (input) =>
2026-10-24T11:04:44.0666049Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0666053Z
2026-10-24T11:04:44.0666360Z 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-24T11:04:44.0666362Z
2026-10-24T11:04:44.0666483Z 4519     ensureRemote: (input) => withListRefsInvalidation(input.cwd, ensureRemote(input)),
2026-10-24T11:04:44.0666525Z          ~~~~~~~~~~~~
2026-10-24T11:04:44.0666527Z
2026-10-24T11:04:44.0666876Z 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-24T11:04:44.0666878Z
2026-10-24T11:04:44.0666946Z 4522     fetchRemote: (input) =>
2026-10-24T11:04:44.0667000Z          ~~~~~~~~~~~
2026-10-24T11:04:44.0667002Z
2026-10-24T11:04:44.0667332Z 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-24T11:04:44.0667384Z
2026-10-24T11:04:44.0667474Z 4537     fetchWorktreeBaseCommit: (input) =>
2026-10-24T11:04:44.0667542Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0667545Z
2026-10-24T11:04:44.0667906Z 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-24T11:04:44.0667908Z
2026-10-24T11:04:44.0668046Z 4539     fetchRemoteBranch: (input) => withListRefsInvalidation(input.cwd, fetchRemoteBranch(input)),
2026-10-24T11:04:44.0668088Z          ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0668090Z
2026-10-24T11:04:44.0668420Z 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-24T11:04:44.0668424Z
2026-10-24T11:04:44.0668484Z 4540     fetchRemoteTrackingBranch: (input) =>
2026-10-24T11:04:44.0668528Z          ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0668531Z
2026-10-24T11:04:44.0668862Z 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-24T11:04:44.0668864Z
2026-10-24T11:04:44.0669002Z 4542     setBranchUpstream: (input) => withListRefsInvalidation(input.cwd, setBranchUpstream(input)),
2026-10-24T11:04:44.0669046Z          ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0669048Z
2026-10-24T11:04:44.0669357Z 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-24T11:04:44.0669361Z
2026-10-24T11:04:44.0669485Z 4543     removeWorktree: (input) => withListRefsInvalidation(input.cwd, removeWorktree(input)),
2026-10-24T11:04:44.0669527Z          ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0669530Z
2026-10-24T11:04:44.0669839Z 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-24T11:04:44.0669841Z
2026-10-24T11:04:44.0669970Z 4544     pruneWorktrees: (input) => withListRefsInvalidation(input.cwd, pruneWorktrees(input)),
2026-10-24T11:04:44.0670013Z          ~~~~~~~~~~~~~~
2026-10-24T11:04:44.0670015Z
2026-10-24T11:04:44.0670329Z 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-24T11:04:44.0670333Z
2026-10-24T11:04:44.0670466Z 4545     deleteLocalBranch: (input) => withListRefsInvalidation(input.cwd, deleteLocalBranch(input)),
2026-10-24T11:04:44.0670510Z          ~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0670512Z
2026-10-24T11:04:44.0670822Z 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-24T11:04:44.0670824Z
2026-10-24T11:04:44.0670944Z 4546     renameBranch: (input) => withListRefsInvalidation(input.cwd, renameBranch(input)),
2026-10-24T11:04:44.0671035Z          ~~~~~~~~~~~~
2026-10-24T11:04:44.0671038Z
2026-10-24T11:04:44.0671376Z 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-24T11:04:44.0671421Z
2026-10-24T11:04:44.0671593Z 4547     createRef: (input) => withListRefsInvalidation(input.cwd, createRef(input)),
2026-10-24T11:04:44.0671638Z          ~~~~~~~~~
2026-10-24T11:04:44.0671641Z
2026-10-24T11:04:44.0671939Z 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-24T11:04:44.0671941Z
2026-10-24T11:04:44.0672045Z 4548     switchRef: (input) => withListRefsInvalidation(input.cwd, switchRef(input)),
2026-10-24T11:04:44.0672087Z          ~~~~~~~~~
2026-10-24T11:04:44.0672089Z
2026-10-24T11:04:44.0672469Z 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-24T11:04:44.0672473Z
2026-10-24T11:04:44.0672539Z 153     return serverSettings.getSettings.pipe(
2026-10-24T11:04:44.0672579Z         ~~~~~~
2026-10-24T11:04:44.0672581Z
2026-10-24T11:04:44.0672873Z 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-24T11:04:44.0672875Z
2026-10-24T11:04:44.0672956Z 171       }).pipe(Effect.catch(() => Effect.succeed(undefined)));
2026-10-24T11:04:44.0673001Z                   ~~~~~~~~~~~~
2026-10-24T11:04:44.0673003Z
2026-10-24T11:04:44.0673274Z 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-24T11:04:44.0673276Z
2026-10-24T11:04:44.0673354Z 171       }).pipe(Effect.catch(() => Effect.succeed(undefined)));
2026-10-24T11:04:44.0673413Z                                      ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0673416Z
2026-10-24T11:04:44.0673649Z 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-24T11:04:44.0673651Z
2026-10-24T11:04:44.0673747Z 401           resolveFileManagerRevealKind: () => Effect.succeed(undefined),
2026-10-24T11:04:44.0673812Z                                                   ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T11:04:44.0673814Z
2026-10-24T11:04:44.0674087Z 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-24T11:04:44.0674090Z
2026-10-24T11:04:44.0674150Z 1384         return yield* Option.match(project, {
2026-10-24T11:04:44.0674198Z                            ~~~~~~~~~~~~
2026-10-24T11:04:44.0674200Z
2026-10-24T11:04:44.0674495Z 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-24T11:04:44.0674498Z
2026-10-24T11:04:44.0674554Z 2319                 return yield* Effect.fail(
2026-10-24T11:04:44.0674598Z                             ~~~~~
2026-10-24T11:04:44.0674601Z
2026-10-24T11:04:44.0674889Z 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-24T11:04:44.0674892Z
2026-10-24T11:04:44.0674990Z 2328                 return yield* Effect.fail(
2026-10-24T11:04:44.0675049Z                             ~~~~~
2026-10-24T11:04:44.0675052Z
2026-10-24T11:04:44.0675361Z 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-24T11:04:44.0675406Z
2026-10-24T11:04:44.0675490Z 2336                 return yield* Effect.fail(
2026-10-24T11:04:44.0675558Z                             ~~~~~
2026-10-24T11:04:44.0675561Z
2026-10-24T11:04:44.0675564Z
2026-10-24T11:04:44.0675612Z ---
2026-10-24T11:04:44.0675875Z 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-24T11:04:44.1086647Z Post job cleanup.
2026-10-24T11:04:44.1664460Z Cache hit occurred on the primary key electron-Linux-X64-854e11ddd491bd4f350eebb67a74265df119376a3984c8e153cfe5fc8ced6309, not saving cache.
2026-10-24T11:04:44.1730701Z Post job cleanup.
2026-10-24T11:04:44.2673289Z ##[start-action display=Cache full pnpm store;id=__59d01b0c-1d9b-4328-a089-a7e1361345c1.__actions_cache]
2026-10-24T11:04:44.2996332Z Post job cleanup.
2026-10-24T11:04:44.3606286Z Cache hit occurred on the primary key pnpm-full-v1-Linux-X64-8600a8d4a7fcc9519d421cef0c77201c793c5d8afbbef2897636b5b9305a9b7d, not saving cache.
2026-10-24T11:04:44.3633349Z ##[end-action id=__59d01b0c-1d9b-4328-a089-a7e1361345c1.__actions_cache;outcome=success;conclusion=success;duration_ms=95]
2026-10-24T11:04:44.3634982Z ##[start-action display=Cache Vite+;id=__59d01b0c-1d9b-4328-a089-a7e1361345c1.vp_cache]
2026-10-24T11:04:44.3654507Z Post job cleanup.
2026-10-24T11:04:44.4252474Z 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-24T11:04:44.4282363Z ##[end-action id=__59d01b0c-1d9b-4328-a089-a7e1361345c1.vp_cache;outcome=success;conclusion=success;duration_ms=64]
2026-10-24T11:04:44.4317870Z Post job cleanup.
2026-10-24T11:04:44.4704872Z [command]/usr/local/bin/git version
2026-10-24T11:04:44.4731152Z git version 2.55.0
2026-10-24T11:04:44.4747233Z Temporarily overriding HOME='/home/runner/_work/_temp/83880ed8-ee4a-45ac-89f5-0fea8dba7757' before making global git config changes
2026-10-24T11:04:44.4747631Z Adding repository directory to the temporary git global config as a safe directory
2026-10-24T11:04:44.4749957Z [command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
2026-10-24T11:04:44.4770986Z Removing SSH command configuration
2026-10-24T11:04:44.4773859Z [command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-10-24T11:04:44.4815801Z [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-24T11:04:44.4935361Z fatal: No url found for submodule path '.repos/alchemy-effect/submodules/distilled' in .gitmodules
2026-10-24T11:04:44.4955068Z ##[warning]The process '/usr/local/bin/git' failed with exit code 128
2026-10-24T11:04:44.4985425Z A job completed hook has been configured by the self-hosted runner administrator
2026-10-24T11:04:44.4999757Z ##[group]Run '/job_completed.sh'
2026-10-24T11:04:44.5006159Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
2026-10-24T11:04:44.5006323Z env:
2026-10-24T11:04:44.5006437Z   BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 190
2026-10-24T11:04:44.5006579Z   BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 386
2026-10-24T11:04:44.5006719Z   BLACKSMITH_CHECK_RUN_ID: 120855887383
2026-10-24T11:04:44.5006870Z   BLACKSMITH_JOB_DISPLAY_NAME: Build and Typecheck
2026-10-24T11:04:44.5007027Z   GITHUB_ACTIONS_CACHE_MODE: write
2026-10-24T11:04:44.5007155Z ##[endgroup]
2026-10-24T11:04:44.5077821Z Docker container cache not activated, skipping hash computation.
2026-10-24T11:04:44.5324614Z No active SSH sessions detected. Proceeding with shutdown immediately.
2026-10-24T11:04:44.5365935Z Cleaning up orphan processes