GitHub check

256 KB of 523 KB loaded Download the full log (523 KB)
267 KB of earlier output not loaded
ullRequestApi.ts:2337:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubPullRequestApi.setLabels")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7294811Z
2026-10-23T17:26:40.7294861Z 2337     setLabels: (input) => {
2026-10-23T17:26:40.7294985Z          ~~~~~~~~~
2026-10-23T17:26:40.7295045Z
2026-10-23T17:26:40.7295379Z src/server/GitHubPullRequestApi.ts:2364:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubPullRequestApi.runPullRequestAction")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7295752Z
2026-10-23T17:26:40.7295908Z 2364     runPullRequestAction: (input) => {
2026-10-23T17:26:40.7296046Z          ~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7296122Z
2026-10-23T17:26:40.7296450Z src/server/GitHubPullRequestApi.ts:2623:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubPullRequestApi.commentOnPullRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7296821Z
2026-10-23T17:26:40.7296876Z 2623     commentOnPullRequest: (input) =>
2026-10-23T17:26:40.7297010Z          ~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7297084Z
2026-10-23T17:26:40.7297399Z src/server/GitHubPullRequestApi.ts:2633:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubPullRequestApi.submitReview")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7297756Z
2026-10-23T17:26:40.7297807Z 2633     submitReview: (input) => {
2026-10-23T17:26:40.7297932Z          ~~~~~~~~~~~~
2026-10-23T17:26:40.7297997Z
2026-10-23T17:26:40.7298327Z src/server/GitHubPullRequestApi.ts:2650:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubPullRequestApi.replyToReviewThread")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7298729Z
2026-10-23T17:26:40.7298782Z 2650     replyToReviewThread: (input) =>
2026-10-23T17:26:40.7298916Z          ~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7298988Z
2026-10-23T17:26:40.7299332Z src/server/GitHubPullRequestApi.ts:2655:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubPullRequestApi.getPullRequestFilesViewed")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7299720Z
2026-10-23T17:26:40.7299785Z 2655     getPullRequestFilesViewed: (input) => {
2026-10-23T17:26:40.7299992Z          ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7300072Z
2026-10-23T17:26:40.7300413Z src/server/GitHubPullRequestApi.ts:2683:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubPullRequestApi.getPullRequestFileStats")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7300793Z
2026-10-23T17:26:40.7300853Z 2683     getPullRequestFileStats: (input) => {
2026-10-23T17:26:40.7300995Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7301073Z
2026-10-23T17:26:40.7301421Z src/server/GitHubPullRequestApi.ts:2711:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubPullRequestApi.setPullRequestFilesViewed")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7301809Z
2026-10-23T17:26:40.7301873Z 2711     setPullRequestFilesViewed: (input) => {
2026-10-23T17:26:40.7302018Z          ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7302101Z
2026-10-23T17:26:40.7302441Z src/server/GitHubPullRequestApi.ts:2732:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubPullRequestApi.setReviewThreadResolution")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7302821Z
2026-10-23T17:26:40.7302882Z 2732     setReviewThreadResolution: (input) =>
2026-10-23T17:26:40.7303022Z          ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7303102Z
2026-10-23T17:26:40.7303413Z src/server/GitHubPullRequestApi.ts:2738:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubPullRequestApi.setReaction")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7303767Z
2026-10-23T17:26:40.7303816Z 2738     setReaction: (input) => {
2026-10-23T17:26:40.7303935Z          ~~~~~~~~~~~
2026-10-23T17:26:40.7303999Z
2026-10-23T17:26:40.7304326Z src/server/GitHubPullRequestApi.ts:2771:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubPullRequestApi.updatePullRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7304699Z
2026-10-23T17:26:40.7304799Z 2771     updatePullRequest: (input) =>
2026-10-23T17:26:40.7304933Z          ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7305002Z
2026-10-23T17:26:40.7305319Z src/server/GitHubPullRequestApi.ts:2787:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubPullRequestApi.updateComment")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7305679Z
2026-10-23T17:26:40.7305729Z 2787     updateComment: (input) =>
2026-10-23T17:26:40.7305851Z          ~~~~~~~~~~~~~
2026-10-23T17:26:40.7305914Z
2026-10-23T17:26:40.7306314Z src/server/GitHubSourceControlProvider.ts:894:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.readChangeRequestTemplate")((_) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7306755Z
2026-10-23T17:26:40.7306828Z 894     readChangeRequestTemplate: ({ cwd, treeish }) =>
2026-10-23T17:26:40.7306985Z         ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7307066Z
2026-10-23T17:26:40.7307455Z src/server/GitHubSourceControlProvider.ts:905:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.listChangeRequests")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7307881Z
2026-10-23T17:26:40.7307933Z 905     listChangeRequests: (input) =>
2026-10-23T17:26:40.7308065Z         ~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7308132Z
2026-10-23T17:26:40.7308512Z src/server/GitHubSourceControlProvider.ts:923:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7309015Z
2026-10-23T17:26:40.7309067Z 923     getChangeRequest: (input) =>
2026-10-23T17:26:40.7309194Z         ~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7309261Z
2026-10-23T17:26:40.7309652Z src/server/GitHubSourceControlProvider.ts:1036:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.checkoutChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7310085Z
2026-10-23T17:26:40.7310140Z 1036     checkoutChangeRequest: (input) =>
2026-10-23T17:26:40.7310278Z          ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7310353Z
2026-10-23T17:26:40.7310802Z src/server/gitHubGraphQlClient.ts:118:12 - suggestion TS377019: This `yield* Effect.fail(...)` passes a yieldable error value. `yield*` represents that value directly without wrapping it in `Effect.fail`. effect(unnecessaryFailYieldableError)
2026-10-23T17:26:40.7311180Z
2026-10-23T17:26:40.7311234Z 118     return yield* Effect.fail(error);
2026-10-23T17:26:40.7311367Z                ~~~~~
2026-10-23T17:26:40.7311431Z
2026-10-23T17:26:40.7311434Z
2026-10-23T17:26:40.7311490Z ~/packages/provider-grok$ tsc --noEmit
2026-10-23T17:26:40.7311870Z 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-23T17:26:40.7312198Z
2026-10-23T17:26:40.7312243Z 170     get: (host) =>
2026-10-23T17:26:40.7312348Z         ~~~
2026-10-23T17:26:40.7312403Z
2026-10-23T17:26:40.7312703Z 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-23T17:26:40.7313047Z
2026-10-23T17:26:40.7313143Z 183     invalidate: (host) => Cache.invalidate(cache, normalizeHost(host)),
2026-10-23T17:26:40.7313323Z         ~~~~~~~~~~
2026-10-23T17:26:40.7313383Z
2026-10-23T17:26:40.7313743Z 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-23T17:26:40.7314079Z
2026-10-23T17:26:40.7314125Z 184     cliEnv: (host) =>
2026-10-23T17:26:40.7314235Z         ~~~~~~
2026-10-23T17:26:40.7314291Z
2026-10-23T17:26:40.7314543Z src/server/GitCafePullRequestProvider.ts:559:13 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T17:26:40.7314832Z
2026-10-23T17:26:40.7314884Z 559             Effect.map(Option.some),
2026-10-23T17:26:40.7315017Z                 ~~~~~~~~~~
2026-10-23T17:26:40.7315086Z
2026-10-23T17:26:40.7315330Z src/server/GitCafePullRequestProvider.ts:564:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7315615Z
2026-10-23T17:26:40.7315680Z 564                   : Effect.succeed(Option.none()),
2026-10-23T17:26:40.7315826Z                         ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7315908Z
2026-10-23T17:26:40.7316256Z src/server/GitCafePullRequestProvider.ts:656:13 - suggestion TS377116: `Effect.catchIf` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-23T17:26:40.7316639Z
2026-10-23T17:26:40.7316691Z 656             Effect.catch((error) =>
2026-10-23T17:26:40.7316820Z                 ~~~~~~~~~~~~
2026-10-23T17:26:40.7316894Z
2026-10-23T17:26:40.7317234Z src/server/GitCafePullRequestProvider.ts:734:19 - suggestion TS377116: `Effect.catchIf` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-23T17:26:40.7317618Z
2026-10-23T17:26:40.7317673Z 734                   Effect.catch((error) =>
2026-10-23T17:26:40.7317874Z                       ~~~~~~~~~~~~
2026-10-23T17:26:40.7317956Z
2026-10-23T17:26:40.7317958Z
2026-10-23T17:26:40.7318016Z ~/packages/provider-pi$ tsc --noEmit
2026-10-23T17:26:40.7318499Z 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-23T17:26:40.7318973Z
2026-10-23T17:26:40.7319026Z 340     getChangeRequest: (input) =>
2026-10-23T17:26:40.7319154Z         ~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7319221Z
2026-10-23T17:26:40.7319224Z
2026-10-23T17:26:40.7319280Z ~/packages/provider-muse$ tsc --noEmit
2026-10-23T17:26:40.7319697Z 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-23T17:26:40.7320058Z
2026-10-23T17:26:40.7320158Z 440     getCapabilities: () => Effect.succeed(PiProviderCapabilitiesV2),
2026-10-23T17:26:40.7320341Z         ~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7320407Z
2026-10-23T17:26:40.7320745Z 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-23T17:26:40.7321121Z
2026-10-23T17:26:40.7321240Z 441     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-23T17:26:40.7321447Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7321525Z
2026-10-23T17:26:40.7321746Z src/server/adapter.ts:1694:31 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T17:26:40.7322004Z
2026-10-23T17:26:40.7322072Z 1694                               Effect.map(Option.some),
2026-10-23T17:26:40.7322233Z                                    ~~~~~~~~~~
2026-10-23T17:26:40.7322324Z
2026-10-23T17:26:40.7322603Z src/server/adapter.ts:1697:29 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7322856Z
2026-10-23T17:26:40.7322927Z 1697                           : Effect.succeed(Option.none()),
2026-10-23T17:26:40.7323087Z                                  ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7323182Z
2026-10-23T17:26:40.7323431Z 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-23T17:26:40.7323721Z
2026-10-23T17:26:40.7323767Z 334       onSuccess: () =>
2026-10-23T17:26:40.7323881Z           ~~~~~~~~~
2026-10-23T17:26:40.7323942Z
2026-10-23T17:26:40.7324149Z src/server/rpc.ts:342:17 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T17:26:40.7324400Z
2026-10-23T17:26:40.7324456Z 342                 Effect.map(Option.some),
2026-10-23T17:26:40.7324594Z                     ~~~~~~~~~~
2026-10-23T17:26:40.7324671Z
2026-10-23T17:26:40.7324676Z
2026-10-23T17:26:40.7324736Z ~/packages/provider-opencode$ tsc --noEmit
2026-10-23T17:26:40.7325162Z 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-23T17:26:40.7325532Z
2026-10-23T17:26:40.7325588Z 174       Effect.flatMap((snapshot) =>
2026-10-23T17:26:40.7325722Z           ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7325792Z
2026-10-23T17:26:40.7326034Z 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-23T17:26:40.7326312Z
2026-10-23T17:26:40.7326379Z 1507       }).pipe(Effect.catch(() => Effect.void));
2026-10-23T17:26:40.7326582Z                    ~~~~~~~~~~~~
2026-10-23T17:26:40.7326657Z
2026-10-23T17:26:40.7326917Z 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-23T17:26:40.7327218Z
2026-10-23T17:26:40.7327284Z 1507       }).pipe(Effect.catch(() => Effect.void));
2026-10-23T17:26:40.7327430Z                    ~~~~~~~~~~~~
2026-10-23T17:26:40.7327506Z
2026-10-23T17:26:40.7327859Z 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-23T17:26:40.7328251Z
2026-10-23T17:26:40.7328306Z 1588             Effect.catchCause((cause) =>
2026-10-23T17:26:40.7328449Z                  ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7328530Z
2026-10-23T17:26:40.7328535Z
2026-10-23T17:26:40.7328590Z ~/packages/provider-cursor$ tsc --noEmit
2026-10-23T17:26:40.7329034Z 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-23T17:26:40.7329391Z
2026-10-23T17:26:40.7329485Z 284     getCapabilities: () => Effect.succeed(MuseProviderCapabilitiesV2),
2026-10-23T17:26:40.7329668Z         ~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7329736Z
2026-10-23T17:26:40.7330073Z 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-23T17:26:40.7330449Z
2026-10-23T17:26:40.7330570Z 285     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-23T17:26:40.7330777Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7330859Z
2026-10-23T17:26:40.7331176Z 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-23T17:26:40.7331486Z
2026-10-23T17:26:40.7331537Z 388             TimeoutError: (cause) =>
2026-10-23T17:26:40.7331673Z                 ~~~~~~~~~~~~
2026-10-23T17:26:40.7331748Z
2026-10-23T17:26:40.7331962Z src/server/adapter.ts:1366:35 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T17:26:40.7332219Z
2026-10-23T17:26:40.7332344Z 1366                   wake === held ? Effect.map(dispatch, Option.some) : Effect.succeed(Option.none()),
2026-10-23T17:26:40.7332558Z                                        ~~~~~~~~~~
2026-10-23T17:26:40.7332654Z
2026-10-23T17:26:40.7332864Z src/server/adapter.ts:1366:71 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7333119Z
2026-10-23T17:26:40.7333243Z 1366                   wake === held ? Effect.map(dispatch, Option.some) : Effect.succeed(Option.none()),
2026-10-23T17:26:40.7333473Z                                                                            ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7333587Z
2026-10-23T17:26:40.7333589Z
2026-10-23T17:26:40.7333653Z ~/packages/provider-acp-registry$ tsc --noEmit
2026-10-23T17:26:40.7334013Z src/server/AcpRegistryRuntimeCoordinator.ts:154:52 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T17:26:40.7334308Z
2026-10-23T17:26:40.7334443Z 154         return yield* Effect.raceFirst(effect.pipe(Effect.map(Option.some)), foregroundStarted);
2026-10-23T17:26:40.7334677Z                                                        ~~~~~~~~~~
2026-10-23T17:26:40.7334778Z
2026-10-23T17:26:40.7335108Z 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-23T17:26:40.7335535Z
2026-10-23T17:26:40.7335587Z 1301         Effect.catch((error) =>
2026-10-23T17:26:40.7335719Z              ~~~~~~~~~~~~
2026-10-23T17:26:40.7335789Z
2026-10-23T17:26:40.7336085Z 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-23T17:26:40.7336419Z
2026-10-23T17:26:40.7336471Z 146             Option.isSome(result)
2026-10-23T17:26:40.7336602Z                 ~~~~~~~~~~~~~
2026-10-23T17:26:40.7336677Z
2026-10-23T17:26:40.7336932Z 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-23T17:26:40.7337225Z
2026-10-23T17:26:40.7337323Z 640       enrichSnapshot: ({ snapshot, getSnapshot, publishSnapshot }) => {
2026-10-23T17:26:40.7337507Z           ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7337577Z
2026-10-23T17:26:40.7337792Z src/server/driver.ts:650:51 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T17:26:40.7338046Z
2026-10-23T17:26:40.7338143Z 650             : enrichProviderCached(snapshot).pipe(Effect.map(Option.some))
2026-10-23T17:26:40.7338335Z                                                       ~~~~~~~~~~
2026-10-23T17:26:40.7338435Z
2026-10-23T17:26:40.7338437Z
2026-10-23T17:26:40.7338491Z ~/packages/client-runtime$ tsc --noEmit
2026-10-23T17:26:40.7338952Z 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-23T17:26:40.7339333Z
2026-10-23T17:26:40.7339402Z 31       read: (credentialSource, sinceMs, untilMs) =>
2026-10-23T17:26:40.7339547Z          ~~~~
2026-10-23T17:26:40.7339607Z
2026-10-23T17:26:40.7339951Z 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-23T17:26:40.7340277Z
2026-10-23T17:26:40.7340323Z 82     read: (apiKey) =>
2026-10-23T17:26:40.7340438Z        ~~~~
2026-10-23T17:26:40.7340493Z
2026-10-23T17:26:40.7340776Z 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-23T17:26:40.7341096Z
2026-10-23T17:26:40.7341144Z 360     Effect.catch(() =>
2026-10-23T17:26:40.7341255Z         ~~~~~~~~~~~~
2026-10-23T17:26:40.7341321Z
2026-10-23T17:26:40.7341642Z 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-23T17:26:40.7342002Z
2026-10-23T17:26:40.7342103Z 904     getCapabilities: () => Effect.succeed(CursorProviderCapabilitiesV2),
2026-10-23T17:26:40.7342289Z         ~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7342356Z
2026-10-23T17:26:40.7342687Z 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-23T17:26:40.7343062Z
2026-10-23T17:26:40.7343182Z 905     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-23T17:26:40.7343386Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7343463Z
2026-10-23T17:26:40.7343913Z 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-23T17:26:40.7344452Z
2026-10-23T17:26:40.7344502Z 55       Effect.runPromise(
2026-10-23T17:26:40.7344621Z          ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7344692Z
2026-10-23T17:26:40.7344954Z 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-23T17:26:40.7345253Z
2026-10-23T17:26:40.7345317Z 59               onNone: () => Effect.succeed(undefined),
2026-10-23T17:26:40.7345474Z                                ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7345571Z
2026-10-23T17:26:40.7346017Z 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-23T17:26:40.7346502Z
2026-10-23T17:26:40.7346551Z 69       Effect.runPromise(
2026-10-23T17:26:40.7346668Z          ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7346737Z
2026-10-23T17:26:40.7347181Z 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-23T17:26:40.7347668Z
2026-10-23T17:26:40.7347737Z 82     clear: () => Effect.runPromise(credentials.remove),
2026-10-23T17:26:40.7347897Z                     ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7347980Z
2026-10-23T17:26:40.7348311Z 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-23T17:26:40.7348705Z
2026-10-23T17:26:40.7348811Z 228           Effect.flatMap((snapshot) =>
2026-10-23T17:26:40.7348949Z               ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7349025Z
2026-10-23T17:26:40.7349218Z src/server/usageLimits.test.ts:74:5 - suggestion TS377017: This Effect.gen contains a single return statement. effect(unnecessaryEffectGen)
2026-10-23T17:26:40.7349452Z
2026-10-23T17:26:40.7349503Z  74     Effect.gen(function* () {
2026-10-23T17:26:40.7349632Z         ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7349759Z  75       yield* withNodeServices(
2026-10-23T17:26:40.7349887Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7350005Z ...
2026-10-23T17:26:40.7350097Z 115       );
2026-10-23T17:26:40.7350195Z     ~~~~~~~~
2026-10-23T17:26:40.7350287Z 116     }),
2026-10-23T17:26:40.7350380Z     ~~~~~~
2026-10-23T17:26:40.7350497Z
2026-10-23T17:26:40.7350499Z
2026-10-23T17:26:40.7350779Z 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-23T17:26:40.7351092Z
2026-10-23T17:26:40.7351146Z 147     return Effect.succeed(undefined);
2026-10-23T17:26:40.7351285Z                ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7351371Z
2026-10-23T17:26:40.7351765Z 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-23T17:26:40.7352196Z
2026-10-23T17:26:40.7352256Z 188       if (!recordable) return Effect.void;
2026-10-23T17:26:40.7352402Z                            ~~~~~~
2026-10-23T17:26:40.7352483Z
2026-10-23T17:26:40.7352871Z 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-23T17:26:40.7353373Z
2026-10-23T17:26:40.7353424Z 208         return Effect.void;
2026-10-23T17:26:40.7353546Z             ~~~~~~
2026-10-23T17:26:40.7353608Z
2026-10-23T17:26:40.7353991Z 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-23T17:26:40.7354417Z
2026-10-23T17:26:40.7354461Z 228       return fs
2026-10-23T17:26:40.7354563Z           ~~~~~~
2026-10-23T17:26:40.7354623Z
2026-10-23T17:26:40.7354923Z 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-23T17:26:40.7355266Z
2026-10-23T17:26:40.7355372Z 311   OpenCodeServerLedger.of({ track: () => Effect.succeed(Effect.void) }),
2026-10-23T17:26:40.7355565Z                                 ~~~~~
2026-10-23T17:26:40.7355651Z
2026-10-23T17:26:40.7355961Z 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-23T17:26:40.7356310Z
2026-10-23T17:26:40.7356360Z 169     withServer: (use) =>
2026-10-23T17:26:40.7356475Z         ~~~~~~~~~~
2026-10-23T17:26:40.7356537Z
2026-10-23T17:26:40.7356929Z 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-23T17:26:40.7357356Z
2026-10-23T17:26:40.7357471Z 103 const OPENCODE_TEST_SETTINGS = Schema.decodeUnknownSync(OpenCodeSettings)({});
2026-10-23T17:26:40.7357743Z                                           ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7357843Z
2026-10-23T17:26:40.7358166Z 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-23T17:26:40.7358527Z
2026-10-23T17:26:40.7358636Z 938     getCapabilities: () => Effect.succeed(OpenCodeProviderCapabilitiesV2),
2026-10-23T17:26:40.7358859Z         ~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7358929Z
2026-10-23T17:26:40.7359267Z 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-23T17:26:40.7359642Z
2026-10-23T17:26:40.7359760Z 939     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-23T17:26:40.7359967Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7360049Z
2026-10-23T17:26:40.7360342Z 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-23T17:26:40.7360672Z
2026-10-23T17:26:40.7360747Z 1011         const abortController = new AbortController();
2026-10-23T17:26:40.7360917Z                                      ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7361017Z
2026-10-23T17:26:40.7361338Z 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-23T17:26:40.7361699Z
2026-10-23T17:26:40.7361828Z 1088           if (failure) return yield* Effect.fail(failure);
2026-10-23T17:26:40.7361992Z                                    ~~~~~
2026-10-23T17:26:40.7362079Z
2026-10-23T17:26:40.7362359Z 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-23T17:26:40.7362676Z
2026-10-23T17:26:40.7362752Z 1584               Effect.catch(() => Effect.succeed(undefined)),
2026-10-23T17:26:40.7362912Z                    ~~~~~~~~~~~~
2026-10-23T17:26:40.7362992Z
2026-10-23T17:26:40.7363248Z 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-23T17:26:40.7363544Z
2026-10-23T17:26:40.7363619Z 1584               Effect.catch(() => Effect.succeed(undefined)),
2026-10-23T17:26:40.7363790Z                                       ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7363896Z
2026-10-23T17:26:40.7364189Z 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-23T17:26:40.7364519Z
2026-10-23T17:26:40.7364604Z 3194                 admissionAbortController: new AbortController(),
2026-10-23T17:26:40.7364791Z                                                ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7364891Z
2026-10-23T17:26:40.7365179Z 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-23T17:26:40.7365505Z
2026-10-23T17:26:40.7365595Z 3354               turn.admissionAbortController = new AbortController();
2026-10-23T17:26:40.7365786Z                                                    ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7365894Z
2026-10-23T17:26:40.7366242Z 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-23T17:26:40.7366564Z
2026-10-23T17:26:40.7366628Z 158     connect: ({ baseUrl, password }) => {
2026-10-23T17:26:40.7366772Z         ~~~~~~~
2026-10-23T17:26:40.7366831Z
2026-10-23T17:26:40.7367132Z 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-23T17:26:40.7367472Z
2026-10-23T17:26:40.7367525Z 160       withConnection: (use) =>
2026-10-23T17:26:40.7367654Z           ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7367725Z
2026-10-23T17:26:40.7368025Z 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-23T17:26:40.7368370Z
2026-10-23T17:26:40.7368421Z 175     withConnection: (use) =>
2026-10-23T17:26:40.7368552Z         ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7368618Z
2026-10-23T17:26:40.7368871Z src/server/v2/adapter.ts:1544:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7369133Z
2026-10-23T17:26:40.7369260Z 1544           wake.dropped ? Effect.succeed(Option.none()) : Effect.map(dispatch, Option.some),
2026-10-23T17:26:40.7369472Z                               ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7369562Z
2026-10-23T17:26:40.7369785Z src/server/v2/adapter.ts:1544:58 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T17:26:40.7370049Z
2026-10-23T17:26:40.7370169Z 1544           wake.dropped ? Effect.succeed(Option.none()) : Effect.map(dispatch, Option.some),
2026-10-23T17:26:40.7370451Z                                                               ~~~~~~~~~~
2026-10-23T17:26:40.7370556Z
2026-10-23T17:26:40.7370886Z 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-23T17:26:40.7371256Z
2026-10-23T17:26:40.7371363Z 4137     getCapabilities: () => Effect.succeed(OpenCode2ProviderCapabilities),
2026-10-23T17:26:40.7371554Z          ~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7371624Z
2026-10-23T17:26:40.7371966Z 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-23T17:26:40.7372352Z
2026-10-23T17:26:40.7372472Z 4138     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-23T17:26:40.7372686Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7372766Z
2026-10-23T17:26:40.7372768Z
2026-10-23T17:26:40.7372812Z Result (22 files):
2026-10-23T17:26:40.7372923Z - 0 errors
2026-10-23T17:26:40.7373023Z - 0 warnings
2026-10-23T17:26:40.7373124Z - 0 hints
2026-10-23T17:26:40.7373177Z
2026-10-23T17:26:40.7373179Z
2026-10-23T17:26:40.7373412Z src/authorization/remote.test.ts:232:25 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7373683Z
2026-10-23T17:26:40.7373793Z 232               identity: Effect.succeed(Option.some({ accountId: "user_connect" })),
2026-10-23T17:26:40.7373993Z                             ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7374083Z
2026-10-23T17:26:40.7374310Z src/authorization/remote.test.ts:237:17 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7374580Z
2026-10-23T17:26:40.7374653Z 237             id: Effect.succeed(Option.some("device-1")),
2026-10-23T17:26:40.7374816Z                     ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7374898Z
2026-10-23T17:26:40.7375282Z 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-23T17:26:40.7375655Z
2026-10-23T17:26:40.7375710Z 553     authorizeDpop: (input) =>
2026-10-23T17:26:40.7375840Z         ~~~~~~~~~~~~~
2026-10-23T17:26:40.7375909Z
2026-10-23T17:26:40.7376247Z 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-23T17:26:40.7376630Z
2026-10-23T17:26:40.7376684Z 555     authorizeDpopHttp: (input) =>
2026-10-23T17:26:40.7376826Z         ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7376897Z
2026-10-23T17:26:40.7377219Z 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-23T17:26:40.7377582Z
2026-10-23T17:26:40.7377633Z 138       get: (entry) =>
2026-10-23T17:26:40.7377745Z           ~~~
2026-10-23T17:26:40.7377803Z
2026-10-23T17:26:40.7378138Z 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-23T17:26:40.7378513Z
2026-10-23T17:26:40.7378567Z 143       set: (entry, permission) => {
2026-10-23T17:26:40.7378722Z           ~~~
2026-10-23T17:26:40.7378781Z
2026-10-23T17:26:40.7379116Z 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-23T17:26:40.7379550Z
2026-10-23T17:26:40.7379605Z 159       forget: (environmentId) =>
2026-10-23T17:26:40.7379734Z           ~~~~~~
2026-10-23T17:26:40.7379797Z
2026-10-23T17:26:40.7380107Z 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-23T17:26:40.7380457Z
2026-10-23T17:26:40.7380511Z 298     registerPairing: (input) =>
2026-10-23T17:26:40.7380641Z         ~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7380710Z
2026-10-23T17:26:40.7381012Z 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-23T17:26:40.7381355Z
2026-10-23T17:26:40.7381407Z 304     registerSsh: (input) =>
2026-10-23T17:26:40.7381528Z         ~~~~~~~~~~~
2026-10-23T17:26:40.7381593Z
2026-10-23T17:26:40.7381908Z 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-23T17:26:40.7382256Z
2026-10-23T17:26:40.7382309Z 309     updateBearer: (input) =>
2026-10-23T17:26:40.7382433Z         ~~~~~~~~~~~~
2026-10-23T17:26:40.7382501Z
2026-10-23T17:26:40.7382775Z 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-23T17:26:40.7383085Z
2026-10-23T17:26:40.7383145Z 1392             ? Effect.succeed(undefined)
2026-10-23T17:26:40.7383292Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7383381Z
2026-10-23T17:26:40.7383651Z 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-23T17:26:40.7384008Z
2026-10-23T17:26:40.7384064Z 1476             ? Effect.succeed(undefined)
2026-10-23T17:26:40.7384203Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7384292Z
2026-10-23T17:26:40.7384557Z 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-23T17:26:40.7384863Z
2026-10-23T17:26:40.7384927Z 1489                     : Effect.succeed(undefined),
2026-10-23T17:26:40.7385089Z                            ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7385184Z
2026-10-23T17:26:40.7385436Z src/platform/orchestrationCache.test.ts:104:15 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T17:26:40.7385726Z
2026-10-23T17:26:40.7385785Z 104       }).pipe(Effect.map(Option.some));
2026-10-23T17:26:40.7385924Z                   ~~~~~~~~~~
2026-10-23T17:26:40.7386004Z
2026-10-23T17:26:40.7386377Z 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-23T17:26:40.7386787Z
2026-10-23T17:26:40.7386878Z 72       load: (prepared: PreparedConnection, threadId: ThreadId) => {
2026-10-23T17:26:40.7387049Z          ~~~~
2026-10-23T17:26:40.7387105Z
2026-10-23T17:26:40.7387403Z 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-23T17:26:40.7387734Z
2026-10-23T17:26:40.7387835Z 56             Effect.catch(() => Effect.succeed(Option.none<AuthSessionState>())),
2026-10-23T17:26:40.7388074Z                ~~~~~~~~~~~~
2026-10-23T17:26:40.7388148Z
2026-10-23T17:26:40.7388488Z 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-23T17:26:40.7388892Z
2026-10-23T17:26:40.7388945Z 62             return yield* Effect.fail(
2026-10-23T17:26:40.7389082Z                       ~~~~~
2026-10-23T17:26:40.7389156Z
2026-10-23T17:26:40.7389448Z 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-23T17:26:40.7389780Z
2026-10-23T17:26:40.7389877Z 57     execute: (target: OutdatedServerUpdateTarget, atomRegistry) => {
2026-10-23T17:26:40.7390053Z        ~~~~~~~
2026-10-23T17:26:40.7390118Z
2026-10-23T17:26:40.7390519Z 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-23T17:26:40.7390951Z
2026-10-23T17:26:40.7391003Z 90       load: (prepared, input) =>
2026-10-23T17:26:40.7391136Z          ~~~~
2026-10-23T17:26:40.7391194Z
2026-10-23T17:26:40.7391594Z 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-23T17:26:40.7392035Z
2026-10-23T17:26:40.7392138Z 34       return yield* Schema.decodeUnknownEffect(codec)(stored.value).pipe(
2026-10-23T17:26:40.7392332Z                               ~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7392429Z
2026-10-23T17:26:40.7392662Z src/state/queryPersistence.ts:35:9 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T17:26:40.7392927Z
2026-10-23T17:26:40.7393046Z 35         Effect.map(Option.some),
2026-10-23T17:26:40.7393175Z            ~~~~~~~~~~
2026-10-23T17:26:40.7393244Z
2026-10-23T17:26:40.7393512Z 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-23T17:26:40.7393821Z
2026-10-23T17:26:40.7393880Z 680     execute: (target, atomRegistry) => {
2026-10-23T17:26:40.7394015Z         ~~~~~~~
2026-10-23T17:26:40.7394078Z
2026-10-23T17:26:40.7394408Z 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-23T17:26:40.7394779Z
2026-10-23T17:26:40.7394835Z 1125           Effect.flatMap((summary) =>
2026-10-23T17:26:40.7394973Z                ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7395053Z
2026-10-23T17:26:40.7395277Z src/state/shell-sync.test.ts:90:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7395540Z
2026-10-23T17:26:40.7395613Z 90         loadShell: () => Effect.succeed(Option.none()),
2026-10-23T17:26:40.7395773Z                             ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7395862Z
2026-10-23T17:26:40.7396083Z src/state/shell-sync.test.ts:96:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7396342Z
2026-10-23T17:26:40.7396415Z 96         loadThread: () => Effect.succeed(Option.none()),
2026-10-23T17:26:40.7396577Z                              ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7396667Z
2026-10-23T17:26:40.7396948Z src/state/shell-sync.test.ts:99:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7397211Z
2026-10-23T17:26:40.7397297Z 99         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-23T17:26:40.7397466Z                                    ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7397560Z
2026-10-23T17:26:40.7397779Z src/state/shell-sync.test.ts:101:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7398040Z
2026-10-23T17:26:40.7398116Z 101         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-23T17:26:40.7398282Z                                ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7398374Z
2026-10-23T17:26:40.7398595Z src/state/shell-sync.test.ts:108:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7398892Z
2026-10-23T17:26:40.7398959Z 108         load: () => Effect.succeed(Option.none()),
2026-10-23T17:26:40.7399111Z                         ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7399194Z
2026-10-23T17:26:40.7399415Z src/state/shell-sync.test.ts:229:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7399676Z
2026-10-23T17:26:40.7399750Z 229         loadShell: () => Effect.succeed(Option.none()),
2026-10-23T17:26:40.7399911Z                              ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7400002Z
2026-10-23T17:26:40.7400223Z src/state/shell-sync.test.ts:238:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7400485Z
2026-10-23T17:26:40.7400562Z 238         loadThread: () => Effect.succeed(Option.none()),
2026-10-23T17:26:40.7400728Z                               ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7400814Z
2026-10-23T17:26:40.7401036Z src/state/shell-sync.test.ts:241:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7401299Z
2026-10-23T17:26:40.7401544Z 241         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-23T17:26:40.7401718Z                                     ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7401813Z
2026-10-23T17:26:40.7402031Z src/state/shell-sync.test.ts:243:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7402289Z
2026-10-23T17:26:40.7402366Z 243         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-23T17:26:40.7402530Z                                ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7402618Z
2026-10-23T17:26:40.7402838Z src/state/shell-sync.test.ts:250:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7403103Z
2026-10-23T17:26:40.7403173Z 250         load: () => Effect.succeed(Option.none()),
2026-10-23T17:26:40.7403326Z                         ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7403411Z
2026-10-23T17:26:40.7403633Z src/state/shell-sync.test.ts:349:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7403892Z
2026-10-23T17:26:40.7403966Z 349         loadShell: () => Effect.succeed(Option.none()),
2026-10-23T17:26:40.7404127Z                              ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7404213Z
2026-10-23T17:26:40.7404438Z src/state/shell-sync.test.ts:355:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7404703Z
2026-10-23T17:26:40.7404779Z 355         loadThread: () => Effect.succeed(Option.none()),
2026-10-23T17:26:40.7404941Z                               ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7405030Z
2026-10-23T17:26:40.7405306Z src/state/shell-sync.test.ts:358:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7405563Z
2026-10-23T17:26:40.7405648Z 358         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-23T17:26:40.7405824Z                                     ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7405917Z
2026-10-23T17:26:40.7406135Z src/state/shell-sync.test.ts:360:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7406395Z
2026-10-23T17:26:40.7406470Z 360         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-23T17:26:40.7406631Z                                ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7406722Z
2026-10-23T17:26:40.7406943Z src/state/shell-sync.test.ts:367:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7407203Z
2026-10-23T17:26:40.7407269Z 367         load: () => Effect.succeed(Option.none()),
2026-10-23T17:26:40.7407421Z                         ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7407503Z
2026-10-23T17:26:40.7407724Z src/state/shell-sync.test.ts:446:26 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7407982Z
2026-10-23T17:26:40.7408074Z 446         loadShell: () => Effect.succeed(Option.some(cachedSnapshot)),
2026-10-23T17:26:40.7408256Z                              ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7408346Z
2026-10-23T17:26:40.7408568Z src/state/shell-sync.test.ts:448:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7408860Z
2026-10-23T17:26:40.7408938Z 448         loadThread: () => Effect.succeed(Option.none()),
2026-10-23T17:26:40.7409105Z                               ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7409195Z
2026-10-23T17:26:40.7409416Z src/state/shell-sync.test.ts:451:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7409761Z
2026-10-23T17:26:40.7409878Z 451         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-23T17:26:40.7410169Z                                     ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7410375Z
2026-10-23T17:26:40.7410612Z src/state/shell-sync.test.ts:453:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7410905Z
2026-10-23T17:26:40.7411018Z 453         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-23T17:26:40.7411249Z                                ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7411378Z
2026-10-23T17:26:40.7411635Z src/state/shell-sync.test.ts:460:21 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7411922Z
2026-10-23T17:26:40.7412057Z 460         load: () => Effect.succeed(Option.some(httpSnapshot)),
2026-10-23T17:26:40.7412270Z                         ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7412395Z
2026-10-23T17:26:40.7412733Z 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-23T17:26:40.7413097Z
2026-10-23T17:26:40.7413196Z 98       load: (prepared: PreparedConnection) =>
2026-10-23T17:26:40.7413448Z          ~~~~
2026-10-23T17:26:40.7413533Z
2026-10-23T17:26:40.7413936Z src/state/threadHistoryController.ts:47:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadHistoryController.register")((environmentId, threadId, handler) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7413940Z
2026-10-23T17:26:40.7414048Z 47       register: (environmentId, threadId, handler) =>
2026-10-23T17:26:40.7414180Z          ~~~~~~~~
2026-10-23T17:26:40.7414182Z
2026-10-23T17:26:40.7414519Z src/state/threadHistoryController.ts:59:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadHistoryController.unregister")((registration) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7414550Z
2026-10-23T17:26:40.7414625Z 59       unregister: (registration) =>
2026-10-23T17:26:40.7414702Z          ~~~~~~~~~~
2026-10-23T17:26:40.7414705Z
2026-10-23T17:26:40.7415106Z src/state/threadHistoryController.ts:74:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadHistoryController.loadEarlier")((environmentId, threadId, throughEntryId) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7415108Z
2026-10-23T17:26:40.7415214Z 74       loadEarlier: (environmentId, threadId, throughEntryId) =>
2026-10-23T17:26:40.7415282Z          ~~~~~~~~~~~
2026-10-23T17:26:40.7415311Z
2026-10-23T17:26:40.7415558Z src/state/threads-sync.test.ts:1006:29 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7415564Z
2026-10-23T17:26:40.7415682Z 1006             : { loadCached: Effect.succeed(Option.some(saved!)) },
2026-10-23T17:26:40.7415769Z                                  ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7415771Z
2026-10-23T17:26:40.7416067Z 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-23T17:26:40.7416069Z
2026-10-23T17:26:40.7416201Z 447       execute: (input: RunVcsStackedActionInput, registry) => {
2026-10-23T17:26:40.7416260Z           ~~~~~~~
2026-10-23T17:26:40.7416262Z
2026-10-23T17:26:40.7416264Z
2026-10-23T17:26:40.7416408Z ~/apps/mobile$ tsc --noEmit
2026-10-23T17:26:40.7416484Z ~/infra/relay$ tsc --noEmit
2026-10-23T17:26:40.7416583Z ~/apps/web$ tsc --noEmit
2026-10-23T17:26:40.7421051Z ~/apps/desktop$ tsc --noEmit
2026-10-23T17:26:40.7421458Z 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-23T17:26:40.7421462Z
2026-10-23T17:26:40.7421567Z 389     complete: (response) => Effect.sync(() => broker.complete(response)),
2026-10-23T17:26:40.7421611Z         ~~~~~~~~
2026-10-23T17:26:40.7421614Z
2026-10-23T17:26:40.7421840Z src/app/DesktopClerk.test.ts:300:27 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7421845Z
2026-10-23T17:26:40.7421933Z 300       currentMainOrFirst: Effect.succeed(Option.some(window)),
2026-10-23T17:26:40.7421985Z                               ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7421988Z
2026-10-23T17:26:40.7422268Z src/app/DesktopObservability.ts:459:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("onSome")(function*(logFile) { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7422275Z
2026-10-23T17:26:40.7422325Z 459     onSome: (logFile) =>
2026-10-23T17:26:40.7422365Z         ~~~~~~
2026-10-23T17:26:40.7422367Z
2026-10-23T17:26:40.7422693Z src/app/DesktopObservability.ts:589:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBackendOutputLogFactory.forInstance")((id) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7422696Z
2026-10-23T17:26:40.7422754Z 589       forInstance: (id) => makeForId(id),
2026-10-23T17:26:40.7422800Z           ~~~~~~~~~~~
2026-10-23T17:26:40.7422803Z
2026-10-23T17:26:40.7423031Z src/app/DesktopWebLinks.test.ts:29:31 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7423034Z
2026-10-23T17:26:40.7423174Z 29           currentMainOrFirst: Effect.succeed(Option.some(window)),
2026-10-23T17:26:40.7423227Z                                  ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7423229Z
2026-10-23T17:26:40.7423514Z 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-23T17:26:40.7423516Z
2026-10-23T17:26:40.7423563Z 72     receive: (url) =>
2026-10-23T17:26:40.7423603Z        ~~~~~~~
2026-10-23T17:26:40.7423606Z
2026-10-23T17:26:40.7423902Z 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-23T17:26:40.7423905Z
2026-10-23T17:26:40.7423958Z 77     setRendererReady: (ready) =>
2026-10-23T17:26:40.7424002Z        ~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7424004Z
2026-10-23T17:26:40.7424292Z 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-23T17:26:40.7424295Z
2026-10-23T17:26:40.7424339Z 1062       onSome: (run) =>
2026-10-23T17:26:40.7424380Z            ~~~~~~
2026-10-23T17:26:40.7424382Z
2026-10-23T17:26:40.7424669Z 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-23T17:26:40.7424671Z
2026-10-23T17:26:40.7424718Z 307       get: (id) =>
2026-10-23T17:26:40.7424760Z           ~~~
2026-10-23T17:26:40.7424762Z
2026-10-23T17:26:40.7425045Z 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-23T17:26:40.7425050Z
2026-10-23T17:26:40.7425143Z 342         get: (id) => Effect.succeed(Option.fromNullishOr(byId.get(id))),
2026-10-23T17:26:40.7425186Z             ~~~
2026-10-23T17:26:40.7425188Z
2026-10-23T17:26:40.7425522Z 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-23T17:26:40.7425525Z
2026-10-23T17:26:40.7425653Z 345         register: () => Effect.die("DesktopBackendPool.layerTest does not support register"),
2026-10-23T17:26:40.7425695Z             ~~~~~~~~
2026-10-23T17:26:40.7425697Z
2026-10-23T17:26:40.7425995Z 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-23T17:26:40.7425997Z
2026-10-23T17:26:40.7426128Z 346         unregister: () => Effect.die("DesktopBackendPool.layerTest does not support unregister"),
2026-10-23T17:26:40.7426174Z             ~~~~~~~~~~
2026-10-23T17:26:40.7426177Z
2026-10-23T17:26:40.7426452Z 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-23T17:26:40.7426454Z
2026-10-23T17:26:40.7426497Z 145   exit: (code) =>
2026-10-23T17:26:40.7426539Z       ~~~~
2026-10-23T17:26:40.7426541Z
2026-10-23T17:26:40.7426822Z 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-23T17:26:40.7426824Z
2026-10-23T17:26:40.7426876Z 149   relaunch: (options) =>
2026-10-23T17:26:40.7426916Z       ~~~~~~~~
2026-10-23T17:26:40.7426918Z
2026-10-23T17:26:40.7427197Z 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-23T17:26:40.7427249Z
2026-10-23T17:26:40.7427303Z 153   setPath: (name, path) =>
2026-10-23T17:26:40.7427344Z       ~~~~~~~
2026-10-23T17:26:40.7427347Z
2026-10-23T17:26:40.7427618Z 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-23T17:26:40.7427620Z
2026-10-23T17:26:40.7427665Z 157   setName: (name) =>
2026-10-23T17:26:40.7427707Z       ~~~~~~~
2026-10-23T17:26:40.7427709Z
2026-10-23T17:26:40.7428012Z 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-23T17:26:40.7428015Z
2026-10-23T17:26:40.7428074Z 161   setAboutPanelOptions: (options) =>
2026-10-23T17:26:40.7428122Z       ~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7428124Z
2026-10-23T17:26:40.7428413Z 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-23T17:26:40.7428415Z
2026-10-23T17:26:40.7428471Z 165   setAppUserModelId: (id) =>
2026-10-23T17:26:40.7428515Z       ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7428517Z
2026-10-23T17:26:40.7428876Z 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-23T17:26:40.7428879Z
2026-10-23T17:26:40.7428962Z 170   setAsDefaultProtocolClient: (protocol, path, args) =>
2026-10-23T17:26:40.7429006Z       ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7429009Z
2026-10-23T17:26:40.7429358Z 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-23T17:26:40.7429360Z
2026-10-23T17:26:40.7429416Z 177   setDesktopName: (desktopName) =>
2026-10-23T17:26:40.7429458Z       ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7429460Z
2026-10-23T17:26:40.7429743Z 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-23T17:26:40.7429747Z
2026-10-23T17:26:40.7429795Z 184   setDockIcon: (iconPath) =>
2026-10-23T17:26:40.7429837Z       ~~~~~~~~~~~
2026-10-23T17:26:40.7429840Z
2026-10-23T17:26:40.7430162Z 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-23T17:26:40.7430167Z
2026-10-23T17:26:40.7430240Z 188   appendCommandLineSwitch: (switchName, value) =>
2026-10-23T17:26:40.7430285Z       ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7430288Z
2026-10-23T17:26:40.7430717Z 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-23T17:26:40.7430720Z
2026-10-23T17:26:40.7430780Z 196   onBeforeQuitForUpdate: (listener) =>
2026-10-23T17:26:40.7430825Z       ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7430827Z
2026-10-23T17:26:40.7431136Z 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-23T17:26:40.7431139Z
2026-10-23T17:26:40.7431200Z 206   removeCommandLineSwitch: (switchName) =>
2026-10-23T17:26:40.7431313Z       ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7431315Z
2026-10-23T17:26:40.7431630Z 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-23T17:26:40.7431632Z
2026-10-23T17:26:40.7431688Z 169   showMessageBox: (options, owner) =>
2026-10-23T17:26:40.7431731Z       ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7431733Z
2026-10-23T17:26:40.7432040Z 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-23T17:26:40.7432043Z
2026-10-23T17:26:40.7432098Z 185   showErrorBox: (title, content) =>
2026-10-23T17:26:40.7432141Z       ~~~~~~~~~~~~
2026-10-23T17:26:40.7432143Z
2026-10-23T17:26:40.7432449Z 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-23T17:26:40.7432454Z
2026-10-23T17:26:40.7432512Z 193     setApplicationMenu: (template) =>
2026-10-23T17:26:40.7432555Z         ~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7432558Z
2026-10-23T17:26:40.7432850Z 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-23T17:26:40.7432853Z
2026-10-23T17:26:40.7432905Z 207     popupTemplate: (input) =>
2026-10-23T17:26:40.7432948Z         ~~~~~~~~~~~~~
2026-10-23T17:26:40.7432951Z
2026-10-23T17:26:40.7433240Z 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-23T17:26:40.7433247Z
2026-10-23T17:26:40.7433299Z 225     showContextMenu: (input) =>
2026-10-23T17:26:40.7433343Z         ~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7433345Z
2026-10-23T17:26:40.7433752Z 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-23T17:26:40.7433756Z
2026-10-23T17:26:40.7433825Z 82   getSystemIdleState: (idleThresholdSeconds) =>
2026-10-23T17:26:40.7433867Z      ~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7433870Z
2026-10-23T17:26:40.7434184Z 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-23T17:26:40.7434186Z
2026-10-23T17:26:40.7434236Z 77     encryptString: (value) =>
2026-10-23T17:26:40.7434279Z        ~~~~~~~~~~~~~
2026-10-23T17:26:40.7434281Z
2026-10-23T17:26:40.7434597Z 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-23T17:26:40.7434600Z
2026-10-23T17:26:40.7434648Z 82     decryptString: (value) =>
2026-10-23T17:26:40.7434689Z        ~~~~~~~~~~~~~
2026-10-23T17:26:40.7434691Z
2026-10-23T17:26:40.7434980Z 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-23T17:26:40.7434982Z
2026-10-23T17:26:40.7435032Z 68   openExternal: (rawUrl) =>
2026-10-23T17:26:40.7435071Z      ~~~~~~~~~~~~
2026-10-23T17:26:40.7435075Z
2026-10-23T17:26:40.7435380Z 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-23T17:26:40.7435436Z
2026-10-23T17:26:40.7435492Z 79   openSystemSettings: (pane) =>
2026-10-23T17:26:40.7435534Z      ~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7435536Z
2026-10-23T17:26:40.7435813Z 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-23T17:26:40.7435815Z
2026-10-23T17:26:40.7435861Z 86   copyText: (text) =>
2026-10-23T17:26:40.7435901Z      ~~~~~~~~
2026-10-23T17:26:40.7435903Z
2026-10-23T17:26:40.7436184Z 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-23T17:26:40.7436186Z
2026-10-23T17:26:40.7436233Z 34   setSource: (theme) =>
2026-10-23T17:26:40.7436278Z      ~~~~~~~~~
2026-10-23T17:26:40.7436280Z
2026-10-23T17:26:40.7436566Z 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-23T17:26:40.7436568Z
2026-10-23T17:26:40.7436617Z 41   onUpdated: (listener) =>
2026-10-23T17:26:40.7436658Z      ~~~~~~~~~
2026-10-23T17:26:40.7436660Z
2026-10-23T17:26:40.7436961Z 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-23T17:26:40.7436963Z
2026-10-23T17:26:40.7437011Z 85   setFeedURL: (options) =>
2026-10-23T17:26:40.7437050Z      ~~~~~~~~~~
2026-10-23T17:26:40.7437053Z
2026-10-23T17:26:40.7437354Z 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-23T17:26:40.7437358Z
2026-10-23T17:26:40.7437408Z 90   setAutoDownload: (value) =>
2026-10-23T17:26:40.7437493Z      ~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7437496Z
2026-10-23T17:26:40.7437811Z 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-23T17:26:40.7437815Z
2026-10-23T17:26:40.7437872Z 95   setAutoInstallOnAppQuit: (value) =>
2026-10-23T17:26:40.7437918Z      ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7437920Z
2026-10-23T17:26:40.7438216Z 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-23T17:26:40.7438218Z
2026-10-23T17:26:40.7438269Z 100   setChannel: (channel) =>
2026-10-23T17:26:40.7438309Z       ~~~~~~~~~~
2026-10-23T17:26:40.7438311Z
2026-10-23T17:26:40.7438620Z 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-23T17:26:40.7438622Z
2026-10-23T17:26:40.7438704Z 105   setAllowPrerelease: (value) =>
2026-10-23T17:26:40.7438749Z       ~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7438751Z
2026-10-23T17:26:40.7439058Z 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-23T17:26:40.7439060Z
2026-10-23T17:26:40.7439110Z 111   setAllowDowngrade: (value) =>
2026-10-23T17:26:40.7439154Z       ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7439156Z
2026-10-23T17:26:40.7439461Z 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-23T17:26:40.7439519Z
2026-10-23T17:26:40.7439569Z 116   setFullChangelog: (value) =>
2026-10-23T17:26:40.7439611Z       ~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7439615Z
2026-10-23T17:26:40.7439950Z 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-23T17:26:40.7439952Z
2026-10-23T17:26:40.7440021Z 121   setDisableDifferentialDownload: (value) =>
2026-10-23T17:26:40.7440068Z       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7440071Z
2026-10-23T17:26:40.7440368Z 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-23T17:26:40.7440374Z
2026-10-23T17:26:40.7440448Z 140   quitAndInstall: ({ isSilent, isForceRunAfter }) =>
2026-10-23T17:26:40.7440490Z       ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7440493Z
2026-10-23T17:26:40.7440793Z 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-23T17:26:40.7440795Z
2026-10-23T17:26:40.7440846Z 154   on: (eventName, listener) => {
2026-10-23T17:26:40.7440887Z       ~~
2026-10-23T17:26:40.7440890Z
2026-10-23T17:26:40.7441173Z 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-23T17:26:40.7441176Z
2026-10-23T17:26:40.7441223Z 211     create: (options) => {
2026-10-23T17:26:40.7441266Z         ~~~~~~
2026-10-23T17:26:40.7441268Z
2026-10-23T17:26:40.7441597Z 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-23T17:26:40.7441600Z
2026-10-23T17:26:40.7441695Z 243     setMain: (window) => Ref.set(mainWindowRef, Option.some(window)),
2026-10-23T17:26:40.7441736Z         ~~~~~~~
2026-10-23T17:26:40.7441738Z
2026-10-23T17:26:40.7442027Z 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-23T17:26:40.7442030Z
2026-10-23T17:26:40.7442077Z 244     clearMain: (window) =>
2026-10-23T17:26:40.7442117Z         ~~~~~~~~~
2026-10-23T17:26:40.7442120Z
2026-10-23T17:26:40.7442420Z 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-23T17:26:40.7442424Z
2026-10-23T17:26:40.7442475Z 254     prepareReveal: (window) =>
2026-10-23T17:26:40.7442518Z         ~~~~~~~~~~~~~
2026-10-23T17:26:40.7442520Z
2026-10-23T17:26:40.7442805Z 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-23T17:26:40.7442807Z
2026-10-23T17:26:40.7442854Z 264     reveal: (window) =>
2026-10-23T17:26:40.7442894Z         ~~~~~~
2026-10-23T17:26:40.7442896Z
2026-10-23T17:26:40.7443246Z 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-23T17:26:40.7443248Z
2026-10-23T17:26:40.7443369Z 526     setMainWindowBounds: (bounds, isMaximized) =>
2026-10-23T17:26:40.7443412Z         ~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7443414Z
2026-10-23T17:26:40.7443741Z 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-23T17:26:40.7443744Z
2026-10-23T17:26:40.7443799Z 538     setServerExposureMode: (mode) =>
2026-10-23T17:26:40.7443844Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7443846Z
2026-10-23T17:26:40.7444161Z 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-23T17:26:40.7444164Z
2026-10-23T17:26:40.7444219Z 542     setTailscaleServe: (input) =>
2026-10-23T17:26:40.7444264Z         ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7444269Z
2026-10-23T17:26:40.7444586Z 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-23T17:26:40.7444589Z
2026-10-23T17:26:40.7444644Z 546     setUpdateChannel: (channel) =>
2026-10-23T17:26:40.7444688Z         ~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7444690Z
2026-10-23T17:26:40.7445017Z 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-23T17:26:40.7445019Z
2026-10-23T17:26:40.7445077Z 550     setWslBackendEnabled: (enabled) =>
2026-10-23T17:26:40.7445120Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7445122Z
2026-10-23T17:26:40.7445433Z 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-23T17:26:40.7445436Z
2026-10-23T17:26:40.7445531Z 554     setWslDistro: (distro) =>
2026-10-23T17:26:40.7445574Z         ~~~~~~~~~~~~
2026-10-23T17:26:40.7445576Z
2026-10-23T17:26:40.7445883Z 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-23T17:26:40.7445885Z
2026-10-23T17:26:40.7445932Z 560     setWslOnly: (enabled) =>
2026-10-23T17:26:40.7445975Z         ~~~~~~~~~~
2026-10-23T17:26:40.7445978Z
2026-10-23T17:26:40.7446316Z 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-23T17:26:40.7446320Z
2026-10-23T17:26:40.7446384Z 564     setLocalEnvironmentEnabled: (enabled) =>
2026-10-23T17:26:40.7446429Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7446433Z
2026-10-23T17:26:40.7446773Z 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-23T17:26:40.7446775Z
2026-10-23T17:26:40.7446847Z 599         setMainWindowBounds: (bounds, isMaximized) =>
2026-10-23T17:26:40.7446892Z             ~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7446895Z
2026-10-23T17:26:40.7447216Z 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-23T17:26:40.7447218Z
2026-10-23T17:26:40.7447276Z 601         setServerExposureMode: (mode) =>
2026-10-23T17:26:40.7447371Z             ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7447374Z
2026-10-23T17:26:40.7447694Z 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-23T17:26:40.7447696Z
2026-10-23T17:26:40.7447824Z 603         setTailscaleServe: (input) => update((settings) => setTailscaleServe(settings, input)),
2026-10-23T17:26:40.7447869Z             ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7447871Z
2026-10-23T17:26:40.7448188Z 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-23T17:26:40.7448192Z
2026-10-23T17:26:40.7448317Z 604         setUpdateChannel: (channel) => update((settings) => setUpdateChannel(settings, channel)),
2026-10-23T17:26:40.7448364Z             ~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7448366Z
2026-10-23T17:26:40.7448716Z 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-23T17:26:40.7448718Z
2026-10-23T17:26:40.7448779Z 605         setWslBackendEnabled: (enabled) =>
2026-10-23T17:26:40.7448824Z             ~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7448826Z
2026-10-23T17:26:40.7449135Z 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-23T17:26:40.7449137Z
2026-10-23T17:26:40.7449250Z 607         setWslDistro: (distro) => update((settings) => setWslDistro(settings, distro)),
2026-10-23T17:26:40.7449295Z             ~~~~~~~~~~~~
2026-10-23T17:26:40.7449299Z
2026-10-23T17:26:40.7449657Z 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-23T17:26:40.7449660Z
2026-10-23T17:26:40.7449767Z 608         setWslOnly: (enabled) => update((settings) => setWslOnly(settings, enabled)),
2026-10-23T17:26:40.7449810Z             ~~~~~~~~~~
2026-10-23T17:26:40.7449813Z
2026-10-23T17:26:40.7450152Z 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-23T17:26:40.7450155Z
2026-10-23T17:26:40.7450223Z 609         setLocalEnvironmentEnabled: (enabled) =>
2026-10-23T17:26:40.7450270Z             ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7450272Z
2026-10-23T17:26:40.7450577Z 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-23T17:26:40.7450583Z
2026-10-23T17:26:40.7450629Z 197     set: (settings) =>
2026-10-23T17:26:40.7450671Z         ~~~
2026-10-23T17:26:40.7450673Z
2026-10-23T17:26:40.7450978Z 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-23T17:26:40.7450980Z
2026-10-23T17:26:40.7451071Z 231         set: (settings) => Ref.set(settingsRef, Option.some(settings)),
2026-10-23T17:26:40.7451110Z             ~~~
2026-10-23T17:26:40.7451113Z
2026-10-23T17:26:40.7451445Z 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-23T17:26:40.7451496Z
2026-10-23T17:26:40.7451569Z 1729     setAnimationDestination: (id, destination) =>
2026-10-23T17:26:40.7451618Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7451620Z
2026-10-23T17:26:40.7451921Z 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-23T17:26:40.7451923Z
2026-10-23T17:26:40.7451974Z 1740     dismissAnimation: (id) =>
2026-10-23T17:26:40.7452019Z          ~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7452021Z
2026-10-23T17:26:40.7452314Z 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-23T17:26:40.7452316Z
2026-10-23T17:26:40.7452364Z 1745     acknowledge: (id) =>
2026-10-23T17:26:40.7452406Z          ~~~~~~~~~~~
2026-10-23T17:26:40.7452410Z
2026-10-23T17:26:40.7452722Z 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-23T17:26:40.7452724Z
2026-10-23T17:26:40.7452774Z 136     discoverHosts: (input) =>
2026-10-23T17:26:40.7452819Z         ~~~~~~~~~~~~~
2026-10-23T17:26:40.7452822Z
2026-10-23T17:26:40.7453128Z 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-23T17:26:40.7453131Z
2026-10-23T17:26:40.7453178Z 141     resolveHost: (alias) =>
2026-10-23T17:26:40.7453219Z         ~~~~~~~~~~~
2026-10-23T17:26:40.7453222Z
2026-10-23T17:26:40.7453566Z 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-23T17:26:40.7453572Z
2026-10-23T17:26:40.7453686Z 146     ensureEnvironment: (target, ensureOptions) =>
2026-10-23T17:26:40.7453731Z         ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7453734Z
2026-10-23T17:26:40.7454061Z 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-23T17:26:40.7454063Z
2026-10-23T17:26:40.7454120Z 154     disconnectEnvironment: (target) =>
2026-10-23T17:26:40.7454165Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7454167Z
2026-10-23T17:26:40.7454483Z 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-23T17:26:40.7454487Z
2026-10-23T17:26:40.7454617Z 1171     installPrepared: (expectedVersion) => installWithExpectedVersion(expectedVersion),
2026-10-23T17:26:40.7454660Z          ~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7454663Z
2026-10-23T17:26:40.7454959Z 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-23T17:26:40.7454962Z
2026-10-23T17:26:40.7455014Z 1101       preWarm: () => Effect.void,
2026-10-23T17:26:40.7455055Z            ~~~~~~~
2026-10-23T17:26:40.7455057Z
2026-10-23T17:26:40.7455395Z 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-23T17:26:40.7455446Z
2026-10-23T17:26:40.7455514Z 1102       windowsToWslPath: (distro, windowsPath) =>
2026-10-23T17:26:40.7455559Z            ~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7455562Z
2026-10-23T17:26:40.7455876Z 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-23T17:26:40.7455878Z
2026-10-23T17:26:40.7456015Z 1104       getUserHome: (distro) => Effect.succeed(stub.getUserHome?.(distro) ?? Option.none<string>()),
2026-10-23T17:26:40.7456056Z            ~~~~~~~~~~~
2026-10-23T17:26:40.7456060Z
2026-10-23T17:26:40.7456368Z 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-23T17:26:40.7456370Z
2026-10-23T17:26:40.7456504Z 1105       getDistroIp: (distro) => Effect.succeed(stub.getDistroIp?.(distro) ?? Option.none<string>()),
2026-10-23T17:26:40.7456547Z            ~~~~~~~~~~~
2026-10-23T17:26:40.7456549Z
2026-10-23T17:26:40.7456880Z 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-23T17:26:40.7456882Z
2026-10-23T17:26:40.7456942Z 1106       prepareRuntime: (distro, archive) =>
2026-10-23T17:26:40.7456984Z            ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7456987Z
2026-10-23T17:26:40.7457318Z 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-23T17:26:40.7457320Z
2026-10-23T17:26:40.7457452Z 1113       pruneRuntimes: (distro, runtimeId) => stub.pruneRuntimes?.(distro, runtimeId) ?? Effect.void,
2026-10-23T17:26:40.7457499Z            ~~~~~~~~~~~~~
2026-10-23T17:26:40.7457501Z
2026-10-23T17:26:40.7457884Z 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-23T17:26:40.7457888Z
2026-10-23T17:26:40.7457953Z 1114       invalidateRuntime: (distro, runtimeId) =>
2026-10-23T17:26:40.7457998Z            ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7458000Z
2026-10-23T17:26:40.7458334Z 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-23T17:26:40.7458336Z
2026-10-23T17:26:40.7458399Z 1116       probeRuntime: (distro, linuxAppRoot) =>
2026-10-23T17:26:40.7458441Z            ~~~~~~~~~~~~
2026-10-23T17:26:40.7458445Z
2026-10-23T17:26:40.7458815Z 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-23T17:26:40.7458818Z
2026-10-23T17:26:40.7458894Z 1120       ensureNodePty: (distro, linuxAppRoot, options) =>
2026-10-23T17:26:40.7458938Z            ~~~~~~~~~~~~~
2026-10-23T17:26:40.7458940Z
2026-10-23T17:26:40.7459244Z 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-23T17:26:40.7459247Z
2026-10-23T17:26:40.7459294Z 1187       preWarm: (distro) =>
2026-10-23T17:26:40.7459336Z            ~~~~~~~
2026-10-23T17:26:40.7459339Z
2026-10-23T17:26:40.7459670Z 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-23T17:26:40.7459724Z
2026-10-23T17:26:40.7459786Z 1192       prepareRuntime: (distro, archive) =>
2026-10-23T17:26:40.7459829Z            ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7459831Z
2026-10-23T17:26:40.7460162Z 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-23T17:26:40.7460166Z
2026-10-23T17:26:40.7460225Z 1196       pruneRuntimes: (distro, runtimeId) =>
2026-10-23T17:26:40.7460267Z            ~~~~~~~~~~~~~
2026-10-23T17:26:40.7460269Z
2026-10-23T17:26:40.7460609Z 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-23T17:26:40.7460613Z
2026-10-23T17:26:40.7460678Z 1200       invalidateRuntime: (distro, runtimeId) =>
2026-10-23T17:26:40.7460720Z            ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7460724Z
2026-10-23T17:26:40.7461059Z 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-23T17:26:40.7461061Z
2026-10-23T17:26:40.7461122Z 1204       probeRuntime: (distro, linuxAppRoot) =>
2026-10-23T17:26:40.7461165Z            ~~~~~~~~~~~~
2026-10-23T17:26:40.7461168Z
2026-10-23T17:26:40.7461518Z 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-23T17:26:40.7461521Z
2026-10-23T17:26:40.7461597Z 1208       ensureNodePty: (distro, linuxAppRoot, options) =>
2026-10-23T17:26:40.7461639Z            ~~~~~~~~~~~~~
2026-10-23T17:26:40.7461642Z
2026-10-23T17:26:40.7461644Z
2026-10-23T17:26:40.7461997Z 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-23T17:26:40.7462000Z
2026-10-23T17:26:40.7462048Z 220           send: (body) =>
2026-10-23T17:26:40.7462089Z               ~~~~
2026-10-23T17:26:40.7462092Z
2026-10-23T17:26:40.7462390Z 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-23T17:26:40.7462392Z
2026-10-23T17:26:40.7462441Z 12       onFailure: (error) =>
2026-10-23T17:26:40.7462482Z          ~~~~~~~~~
2026-10-23T17:26:40.7462486Z
2026-10-23T17:26:40.7462812Z 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-23T17:26:40.7462814Z
2026-10-23T17:26:40.7462867Z 64     pauseUntil: (untilMillis) =>
2026-10-23T17:26:40.7462907Z        ~~~~~~~~~~
2026-10-23T17:26:40.7462909Z
2026-10-23T17:26:40.7463148Z 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-23T17:26:40.7463151Z
2026-10-23T17:26:40.7463196Z 198         onNone: () =>
2026-10-23T17:26:40.7463237Z             ~~~~~~
2026-10-23T17:26:40.7463239Z
2026-10-23T17:26:40.7463519Z 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-23T17:26:40.7463573Z
2026-10-23T17:26:40.7463682Z 92   fileResponse: () => Effect.die("Relay API does not serve filesystem responses"),
2026-10-23T17:26:40.7463723Z      ~~~~~~~~~~~~
2026-10-23T17:26:40.7463727Z
2026-10-23T17:26:40.7464011Z 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-23T17:26:40.7464013Z
2026-10-23T17:26:40.7464119Z 93   fileWebResponse: () => Effect.die("Relay API does not serve file responses"),
2026-10-23T17:26:40.7464160Z      ~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7464162Z
2026-10-23T17:26:40.7464418Z 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-23T17:26:40.7464421Z
2026-10-23T17:26:40.7464483Z 242       hold: ({ endpointKey, baseUrl, hook }) =>
2026-10-23T17:26:40.7464525Z           ~~~~
2026-10-23T17:26:40.7464527Z
2026-10-23T17:26:40.7464779Z 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-23T17:26:40.7464782Z
2026-10-23T17:26:40.7464837Z 244       wake: ({ endpointKey, baseUrl }) =>
2026-10-23T17:26:40.7464878Z           ~~~~
2026-10-23T17:26:40.7464881Z
2026-10-23T17:26:40.7465137Z 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-23T17:26:40.7465139Z
2026-10-23T17:26:40.7465190Z 246       clear: ({ endpointKey }) =>
2026-10-23T17:26:40.7465229Z           ~~~~~
2026-10-23T17:26:40.7465233Z
2026-10-23T17:26:40.7465543Z 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-23T17:26:40.7465547Z
2026-10-23T17:26:40.7465595Z 275               send: (body) =>
2026-10-23T17:26:40.7465682Z                   ~~~~
2026-10-23T17:26:40.7465685Z
2026-10-23T17:26:40.7465687Z
2026-10-23T17:26:40.7465689Z
2026-10-23T17:26:40.7466027Z src/connection/platform.ts:805:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentOwnedDataCleanup.clear")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7466030Z
2026-10-23T17:26:40.7466080Z 805     clear: (environmentId) =>
2026-10-23T17:26:40.7466120Z         ~~~~~
2026-10-23T17:26:40.7466122Z
2026-10-23T17:26:40.7466422Z src/connection/platform.ts:815:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("EnvironmentRpcRequestObserver.observe")((_) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7466426Z
2026-10-23T17:26:40.7466511Z 815     observe: ({ environmentId, environmentLabel, method }) =>
2026-10-23T17:26:40.7466552Z         ~~~~~~~
2026-10-23T17:26:40.7466554Z
2026-10-23T17:26:40.7466838Z 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-23T17:26:40.7466842Z
2026-10-23T17:26:40.7466885Z 549     get: (entry) =>
2026-10-23T17:26:40.7466926Z         ~~~
2026-10-23T17:26:40.7466929Z
2026-10-23T17:26:40.7467231Z 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-23T17:26:40.7467234Z
2026-10-23T17:26:40.7467284Z 576     set: (entry, permission) => {
2026-10-23T17:26:40.7467323Z         ~~~
2026-10-23T17:26:40.7467325Z
2026-10-23T17:26:40.7467679Z 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-23T17:26:40.7467681Z
2026-10-23T17:26:40.7467760Z 596     forget: (environmentId) => write(environmentId, null),
2026-10-23T17:26:40.7467801Z         ~~~~~~
2026-10-23T17:26:40.7467803Z
2026-10-23T17:26:40.7468149Z 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-23T17:26:40.7468152Z
2026-10-23T17:26:40.7468208Z 643       register: (registration, routes) =>
2026-10-23T17:26:40.7468249Z           ~~~~~~~~
2026-10-23T17:26:40.7468251Z
2026-10-23T17:26:40.7468599Z 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-23T17:26:40.7468603Z
2026-10-23T17:26:40.7468693Z 647       setRoutes: (environmentId, routes) =>
2026-10-23T17:26:40.7468735Z           ~~~~~~~~~
2026-10-23T17:26:40.7468737Z
2026-10-23T17:26:40.7469069Z 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-23T17:26:40.7469072Z
2026-10-23T17:26:40.7469123Z 651       remove: (environmentId) =>
2026-10-23T17:26:40.7469164Z           ~~~~~~
2026-10-23T17:26:40.7469166Z
2026-10-23T17:26:40.7469520Z 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-23T17:26:40.7469524Z
2026-10-23T17:26:40.7469585Z 655       setEnabled: (environmentId, enabled) =>
2026-10-23T17:26:40.7469625Z           ~~~~~~~~~~
2026-10-23T17:26:40.7469628Z
2026-10-23T17:26:40.7469997Z 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-23T17:26:40.7469999Z
2026-10-23T17:26:40.7470052Z 732       loadShell: (environmentId) =>
2026-10-23T17:26:40.7470093Z           ~~~~~~~~~
2026-10-23T17:26:40.7470095Z
2026-10-23T17:26:40.7470521Z 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-23T17:26:40.7470524Z
2026-10-23T17:26:40.7470583Z 768       loadServerConfig: (environmentId) =>
2026-10-23T17:26:40.7470629Z           ~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7470632Z
2026-10-23T17:26:40.7470977Z 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-23T17:26:40.7470979Z
2026-10-23T17:26:40.7471040Z 802       loadThread: (environmentId, threadId) =>
2026-10-23T17:26:40.7471080Z           ~~~~~~~~~~
2026-10-23T17:26:40.7471084Z
2026-10-23T17:26:40.7471421Z 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-23T17:26:40.7471424Z
2026-10-23T17:26:40.7471481Z 851       loadVcsRefs: (environmentId, cwd) =>
2026-10-23T17:26:40.7471523Z           ~~~~~~~~~~~
2026-10-23T17:26:40.7471526Z
2026-10-23T17:26:40.7471929Z 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-23T17:26:40.7471931Z
2026-10-23T17:26:40.7471990Z 893       removeVcsRefs: (environmentId, cwd) =>
2026-10-23T17:26:40.7472033Z           ~~~~~~~~~~~~~
2026-10-23T17:26:40.7472036Z
2026-10-23T17:26:40.7472371Z 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-23T17:26:40.7472373Z
2026-10-23T17:26:40.7472430Z 899       clearVcsRefs: (environmentId) =>
2026-10-23T17:26:40.7472472Z           ~~~~~~~~~~~~
2026-10-23T17:26:40.7472475Z
2026-10-23T17:26:40.7472819Z 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-23T17:26:40.7472825Z
2026-10-23T17:26:40.7472891Z 905       removeThread: (environmentId, threadId) =>
2026-10-23T17:26:40.7472932Z           ~~~~~~~~~~~~
2026-10-23T17:26:40.7472934Z
2026-10-23T17:26:40.7473254Z 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-23T17:26:40.7473257Z
2026-10-23T17:26:40.7473306Z 911       clear: (environmentId) =>
2026-10-23T17:26:40.7473345Z           ~~~~~
2026-10-23T17:26:40.7473348Z
2026-10-23T17:26:40.7473350Z
2026-10-23T17:26:40.7473400Z ~/apps/server$ tsc --noEmit
2026-10-23T17:26:40.7473650Z 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-23T17:26:40.7473653Z
2026-10-23T17:26:40.7473711Z 941         yield* Effect.sleep("1200 millis")
2026-10-23T17:26:40.7473762Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7473913Z 942           .pipe(
2026-10-23T17:26:40.7473954Z     ~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7473994Z ...
2026-10-23T17:26:40.7474033Z 954           )
2026-10-23T17:26:40.7474074Z     ~~~~~~~~~~~
2026-10-23T17:26:40.7474127Z 955           .pipe(Effect.forkDetach);
2026-10-23T17:26:40.7474174Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7474177Z
2026-10-23T17:26:40.7474482Z 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-23T17:26:40.7474486Z
2026-10-23T17:26:40.7474532Z 1175     logger: (event) => {
2026-10-23T17:26:40.7474572Z          ~~~~~~
2026-10-23T17:26:40.7474574Z
2026-10-23T17:26:40.7475001Z 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-23T17:26:40.7475004Z
2026-10-23T17:26:40.7475110Z 376 const DEFAULT_GROK_SETTINGS = Schema.decodeUnknownSync(GrokSettings)({});
2026-10-23T17:26:40.7475167Z                                          ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7475169Z
2026-10-23T17:26:40.7475458Z 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-23T17:26:40.7475460Z
2026-10-23T17:26:40.7475508Z 1346     getDescriptor: () =>
2026-10-23T17:26:40.7475550Z          ~~~~~~~~~~~~~
2026-10-23T17:26:40.7475552Z
2026-10-23T17:26:40.7475859Z 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-23T17:26:40.7475912Z
2026-10-23T17:26:40.7475959Z 55     getDescriptor: () =>
2026-10-23T17:26:40.7476000Z        ~~~~~~~~~~~~~
2026-10-23T17:26:40.7476002Z
2026-10-23T17:26:40.7476325Z 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-23T17:26:40.7476327Z
2026-10-23T17:26:40.7476378Z 540       authenticate: (request) =>
2026-10-23T17:26:40.7476420Z           ~~~~~~~~~~~~
2026-10-23T17:26:40.7476422Z
2026-10-23T17:26:40.7476666Z 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-23T17:26:40.7476670Z
2026-10-23T17:26:40.7476724Z 468         : Effect.succeed(undefined),
2026-10-23T17:26:40.7476770Z               ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7476773Z
2026-10-23T17:26:40.7477056Z 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-23T17:26:40.7477058Z
2026-10-23T17:26:40.7477109Z 328       HttpClientError: (cause) =>
2026-10-23T17:26:40.7477152Z           ~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7477155Z
2026-10-23T17:26:40.7477391Z src/cloud/CloudLink.lifecycle.test.ts:166:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7477394Z
2026-10-23T17:26:40.7477458Z 166             latest: Effect.succeed(Option.none()),
2026-10-23T17:26:40.7477505Z                         ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7477508Z
2026-10-23T17:26:40.7477724Z src/cloud/CloudLink.test.ts:99:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7477726Z
2026-10-23T17:26:40.7477833Z 99         latest: Effect.succeed(Option.none()),
2026-10-23T17:26:40.7477878Z                    ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7477881Z
2026-10-23T17:26:40.7478218Z 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-23T17:26:40.7478221Z
2026-10-23T17:26:40.7478349Z 791     requestRecovery: (config) => Queue.offer(recoveryRequests, config).pipe(Effect.asVoid),
2026-10-23T17:26:40.7478390Z         ~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7478392Z
2026-10-23T17:26:40.7478597Z src/cloud/http.test.ts:81:67 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7478601Z
2026-10-23T17:26:40.7478773Z 81     Layer.mock(ConnectReachability.ConnectReachability)({ latest: Effect.succeed(Option.none()) }),
2026-10-23T17:26:40.7478847Z                                                                      ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7478849Z
2026-10-23T17:26:40.7479187Z 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-23T17:26:40.7479189Z
2026-10-23T17:26:40.7479271Z 371     commitDesktopUpdate: (requestId, onHandoffAccepted) =>
2026-10-23T17:26:40.7479314Z         ~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7479316Z
2026-10-23T17:26:40.7479602Z 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-23T17:26:40.7479659Z
2026-10-23T17:26:40.7479707Z 808       updateTool: (tool) =>
2026-10-23T17:26:40.7479747Z           ~~~~~~~~~~
2026-10-23T17:26:40.7479751Z
2026-10-23T17:26:40.7480026Z 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-23T17:26:40.7480029Z
2026-10-23T17:26:40.7480075Z 823       easAccount: () =>
2026-10-23T17:26:40.7480116Z           ~~~~~~~~~~
2026-10-23T17:26:40.7480118Z
2026-10-23T17:26:40.7480430Z 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-23T17:26:40.7480432Z
2026-10-23T17:26:40.7480483Z 868     ensureAgentReady: (onPhase) =>
2026-10-23T17:26:40.7480525Z         ~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7480529Z
2026-10-23T17:26:40.7480751Z src/device/easProjectId.ts:201:7 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T17:26:40.7480755Z
2026-10-23T17:26:40.7480806Z 201       Effect.map(Option.some),
2026-10-23T17:26:40.7480846Z           ~~~~~~~~~~
2026-10-23T17:26:40.7480849Z
2026-10-23T17:26:40.7481137Z 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-23T17:26:40.7481139Z
2026-10-23T17:26:40.7481216Z 141   return DirectEndpoints.of({ resolve: () => resolve });
2026-10-23T17:26:40.7481264Z                                   ~~~~~~~
2026-10-23T17:26:40.7481266Z
2026-10-23T17:26:40.7481574Z 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-23T17:26:40.7481578Z
2026-10-23T17:26:40.7481679Z 83   return RemoteOpenTargets.of({ resolveTargets: () => resolveTargets });
2026-10-23T17:26:40.7481774Z                                    ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7481777Z
2026-10-23T17:26:40.7482074Z 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-23T17:26:40.7482077Z
2026-10-23T17:26:40.7482126Z 302     isRepository: (cwd) =>
2026-10-23T17:26:40.7482167Z         ~~~~~~~~~~~~
2026-10-23T17:26:40.7482169Z
2026-10-23T17:26:40.7482464Z 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-23T17:26:40.7482466Z
2026-10-23T17:26:40.7482515Z 315     hasCommit: (input) =>
2026-10-23T17:26:40.7482556Z         ~~~~~~~~~
2026-10-23T17:26:40.7482559Z
2026-10-23T17:26:40.7482857Z 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-23T17:26:40.7482859Z
2026-10-23T17:26:40.7482908Z 327     hasRefNamed: (input) =>
2026-10-23T17:26:40.7482948Z         ~~~~~~~~~~~
2026-10-23T17:26:40.7482950Z
2026-10-23T17:26:40.7483239Z 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-23T17:26:40.7483241Z
2026-10-23T17:26:40.7483288Z 346     status: (input) =>
2026-10-23T17:26:40.7483329Z         ~~~~~~
2026-10-23T17:26:40.7483331Z
2026-10-23T17:26:40.7483630Z 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-23T17:26:40.7483680Z
2026-10-23T17:26:40.7483728Z 352     localStatus: (input) =>
2026-10-23T17:26:40.7483770Z         ~~~~~~~~~~~
2026-10-23T17:26:40.7483772Z
2026-10-23T17:26:40.7484084Z 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-23T17:26:40.7484087Z
2026-10-23T17:26:40.7484141Z 360     remoteStatus: (input, options) =>
2026-10-23T17:26:40.7484183Z         ~~~~~~~~~~~~
2026-10-23T17:26:40.7484185Z
2026-10-23T17:26:40.7484491Z 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-23T17:26:40.7484495Z
2026-10-23T17:26:40.7484547Z 369     pullCurrentBranch: (cwd) =>
2026-10-23T17:26:40.7484590Z         ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7484592Z
2026-10-23T17:26:40.7484913Z 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-23T17:26:40.7484915Z
2026-10-23T17:26:40.7484974Z 373     runStackedAction: (input, options) =>
2026-10-23T17:26:40.7485016Z         ~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7485018Z
2026-10-23T17:26:40.7485340Z 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-23T17:26:40.7485342Z
2026-10-23T17:26:40.7485402Z 388     preparePullRequestThread: (input) =>
2026-10-23T17:26:40.7485447Z         ~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7485451Z
2026-10-23T17:26:40.7485781Z 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-23T17:26:40.7485786Z
2026-10-23T17:26:40.7485833Z 399     listRefs: (input) =>
2026-10-23T17:26:40.7485873Z         ~~~~~~~~
2026-10-23T17:26:40.7485875Z
2026-10-23T17:26:40.7486189Z 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-23T17:26:40.7486191Z
2026-10-23T17:26:40.7486245Z 405     createWorktree: (input, options) =>
2026-10-23T17:26:40.7486286Z         ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7486288Z
2026-10-23T17:26:40.7486601Z 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-23T17:26:40.7486605Z
2026-10-23T17:26:40.7486661Z 409     listLocalBranchNames: (cwd) =>
2026-10-23T17:26:40.7486706Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7486708Z
2026-10-23T17:26:40.7487011Z 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-23T17:26:40.7487013Z
2026-10-23T17:26:40.7487060Z 413     fetchRemote: (input) =>
2026-10-23T17:26:40.7487101Z         ~~~~~~~~~~~
2026-10-23T17:26:40.7487104Z
2026-10-23T17:26:40.7487406Z 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-23T17:26:40.7487408Z
2026-10-23T17:26:40.7487500Z 417     remoteExists: (input) =>
2026-10-23T17:26:40.7487541Z         ~~~~~~~~~~~~
2026-10-23T17:26:40.7487543Z
2026-10-23T17:26:40.7487855Z 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-23T17:26:40.7487857Z
2026-10-23T17:26:40.7487910Z 421     remoteBranchExists: (input) =>
2026-10-23T17:26:40.7487953Z         ~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7487956Z
2026-10-23T17:26:40.7488285Z 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-23T17:26:40.7488287Z
2026-10-23T17:26:40.7488351Z 425     resolveRemoteTrackingCommit: (input) =>
2026-10-23T17:26:40.7488395Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7488397Z
2026-10-23T17:26:40.7488747Z 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-23T17:26:40.7488749Z
2026-10-23T17:26:40.7488810Z 429     resolveWorktreeBaseRemote: (input) =>
2026-10-23T17:26:40.7488855Z         ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7488857Z
2026-10-23T17:26:40.7489176Z 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-23T17:26:40.7489180Z
2026-10-23T17:26:40.7489236Z 433     fetchWorktreeBaseCommit: (input) =>
2026-10-23T17:26:40.7489280Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7489282Z
2026-10-23T17:26:40.7489589Z 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-23T17:26:40.7489593Z
2026-10-23T17:26:40.7489686Z 437     removeWorktree: (input) =>
2026-10-23T17:26:40.7489727Z         ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7489730Z
2026-10-23T17:26:40.7490033Z 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-23T17:26:40.7490036Z
2026-10-23T17:26:40.7490085Z 441     pruneWorktrees: (input) =>
2026-10-23T17:26:40.7490126Z         ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7490128Z
2026-10-23T17:26:40.7490437Z 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-23T17:26:40.7490439Z
2026-10-23T17:26:40.7490492Z 445     deleteLocalBranch: (input) =>
2026-10-23T17:26:40.7490536Z         ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7490538Z
2026-10-23T17:26:40.7490832Z 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-23T17:26:40.7490834Z
2026-10-23T17:26:40.7490882Z 449     createRef: (input) =>
2026-10-23T17:26:40.7490922Z         ~~~~~~~~~
2026-10-23T17:26:40.7490924Z
2026-10-23T17:26:40.7491213Z 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-23T17:26:40.7491216Z
2026-10-23T17:26:40.7491262Z 457     switchRef: (input) =>
2026-10-23T17:26:40.7491302Z         ~~~~~~~~~
2026-10-23T17:26:40.7491304Z
2026-10-23T17:26:40.7491603Z 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-23T17:26:40.7491654Z
2026-10-23T17:26:40.7491705Z 463     renameBranch: (input) =>
2026-10-23T17:26:40.7491745Z         ~~~~~~~~~~~~
2026-10-23T17:26:40.7491747Z
2026-10-23T17:26:40.7492009Z 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-23T17:26:40.7492011Z
2026-10-23T17:26:40.7492065Z 281   const receive = (raw: string) => {
2026-10-23T17:26:40.7492106Z             ~~~~~~~
2026-10-23T17:26:40.7492108Z
2026-10-23T17:26:40.7492480Z 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-23T17:26:40.7492485Z
2026-10-23T17:26:40.7492525Z 284       try {
2026-10-23T17:26:40.7492565Z           ~~~~~
2026-10-23T17:26:40.7492617Z 285         parsed = JSON.parse(line);
2026-10-23T17:26:40.7492664Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7492704Z ...
2026-10-23T17:26:40.7492806Z 287         return yield* respondWithError(null, "Parse error", -32700);
2026-10-23T17:26:40.7492877Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7492918Z 288       }
2026-10-23T17:26:40.7492960Z     ~~~~~~~
2026-10-23T17:26:40.7492963Z
2026-10-23T17:26:40.7493236Z 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-23T17:26:40.7493239Z
2026-10-23T17:26:40.7493298Z 324       Effect.catchCause(() => Effect.void),
2026-10-23T17:26:40.7493341Z           ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7493345Z
2026-10-23T17:26:40.7493572Z src/mcp/McpDeviceToolkit.test.ts:105:18 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7493620Z
2026-10-23T17:26:40.7493688Z 105   getById: () => Effect.succeed(Option.none()),
2026-10-23T17:26:40.7493733Z                      ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7493735Z
2026-10-23T17:26:40.7494016Z 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-23T17:26:40.7494019Z
2026-10-23T17:26:40.7494112Z 421 const previewSnapshotFailure = <E>(cause: Cause.Cause<E>) => {
2026-10-23T17:26:40.7494158Z           ~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7494160Z
2026-10-23T17:26:40.7494447Z src/mcp/McpHttpServer.ts:933:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("McpServer.McpServer.addTool")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7494451Z
2026-10-23T17:26:40.7494499Z 933       addTool: (options) =>
2026-10-23T17:26:40.7494541Z           ~~~~~~~
2026-10-23T17:26:40.7494544Z
2026-10-23T17:26:40.7494824Z 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-23T17:26:40.7494827Z
2026-10-23T17:26:40.7494887Z 22     resolve: () => Effect.succeed(undefined),
2026-10-23T17:26:40.7494939Z                       ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7494941Z
2026-10-23T17:26:40.7495231Z 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-23T17:26:40.7495234Z
2026-10-23T17:26:40.7495293Z 112       Effect.flatMap(() => writingCaller),
2026-10-23T17:26:40.7495388Z           ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7495390Z
2026-10-23T17:26:40.7495895Z src/mcp/OrchestratorMcpService.ts:2460:39 - suggestion TS377088: This generator applies the same inline `Effect.mapError(...)` to every yielded effect. Keep that `Effect.mapError(...)` inline and hoist it once to the generator result: `Effect.gen(...).pipe(Effect.mapError(...))`, or `Effect.fn(function*(){ ... }, Effect.mapError(...))`. effect(redundantMapError)
2026-10-23T17:26:40.7495898Z
2026-10-23T17:26:40.7495974Z 2460       const cancelOrphan = Effect.gen(function* () {
2026-10-23T17:26:40.7496029Z                                            ~~~~~~~~~
2026-10-23T17:26:40.7496031Z
2026-10-23T17:26:40.7496266Z   src/mcp/OrchestratorMcpService.ts:2475:17 - This repeated `Effect.mapError(...)` site participates in the hoistable generator-wide mapping. effect(redundantMapError)
2026-10-23T17:26:40.7496347Z     2475           .pipe(Effect.mapError(threadManagementFailure));
2026-10-23T17:26:40.7496397Z                          ~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7496400Z
2026-10-23T17:26:40.7496631Z   src/mcp/OrchestratorMcpService.ts:2478:17 - This repeated `Effect.mapError(...)` site participates in the hoistable generator-wide mapping. effect(redundantMapError)
2026-10-23T17:26:40.7496710Z     2478           .pipe(Effect.mapError(threadManagementFailure));
2026-10-23T17:26:40.7496755Z                          ~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7496758Z
2026-10-23T17:26:40.7497033Z 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-23T17:26:40.7497035Z
2026-10-23T17:26:40.7497081Z 651         onNone: () =>
2026-10-23T17:26:40.7497124Z             ~~~~~~
2026-10-23T17:26:40.7497126Z
2026-10-23T17:26:40.7497327Z src/mcp/WorktreeMcpService.test.ts:355:3 - suggestion TS377017: This Effect.gen contains a single return statement. effect(unnecessaryEffectGen)
2026-10-23T17:26:40.7497331Z
2026-10-23T17:26:40.7497378Z 355   Effect.gen(function* () {
2026-10-23T17:26:40.7497422Z       ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7497550Z 356     return yield* WorktreeMcpService.WorktreeMcpService;
2026-10-23T17:26:40.7497613Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7497671Z 357   }).pipe(Effect.provide(harness.layer));
2026-10-23T17:26:40.7497713Z     ~~~~
2026-10-23T17:26:40.7497716Z
2026-10-23T17:26:40.7497984Z 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-23T17:26:40.7497986Z
2026-10-23T17:26:40.7498036Z 222     const thread = yield* engine
2026-10-23T17:26:40.7498081Z                               ~~~~~~
2026-10-23T17:26:40.7498131Z 223       .getThreadShell(threadId)
2026-10-23T17:26:40.7498175Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7498241Z 224       .pipe(Effect.map(Option.fromNullishOr))
2026-10-23T17:26:40.7498293Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7498379Z 225       .pipe(Effect.mapError((cause) => new Failure({ cause })));
2026-10-23T17:26:40.7498445Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7498448Z
2026-10-23T17:26:40.7498760Z 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-23T17:26:40.7498763Z
2026-10-23T17:26:40.7498882Z 96   McpAppModelContext.of({ set: () => Effect.void, forThread: () => Effect.succeed([]) }),
2026-10-23T17:26:40.7498928Z                              ~~~
2026-10-23T17:26:40.7498930Z
2026-10-23T17:26:40.7499226Z 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-23T17:26:40.7499282Z
2026-10-23T17:26:40.7499402Z 96   McpAppModelContext.of({ set: () => Effect.void, forThread: () => Effect.succeed([]) }),
2026-10-23T17:26:40.7499465Z                                                      ~~~~~~~~~
2026-10-23T17:26:40.7499467Z
2026-10-23T17:26:40.7499790Z 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-23T17:26:40.7499793Z
2026-10-23T17:26:40.7499839Z 16     record: (records) =>
2026-10-23T17:26:40.7499882Z        ~~~~~~
2026-10-23T17:26:40.7499885Z
2026-10-23T17:26:40.7500160Z 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-23T17:26:40.7500164Z
2026-10-23T17:26:40.7500267Z 41   defaultValue: () => ({ latestNoticeableStall: Effect.succeed(undefined) }),
2026-10-23T17:26:40.7500331Z                                                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7500336Z
2026-10-23T17:26:40.7500788Z 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-23T17:26:40.7500791Z
2026-10-23T17:26:40.7500895Z 30 const REPLAY_SETTINGS = Schema.decodeUnknownSync(AcpRegistrySettings)({
2026-10-23T17:26:40.7500949Z                                   ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7500952Z
2026-10-23T17:26:40.7501266Z 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-23T17:26:40.7501270Z
2026-10-23T17:26:40.7501329Z 48   defaultModel: Effect.succeed(undefined),
2026-10-23T17:26:40.7501419Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7501422Z
2026-10-23T17:26:40.7501734Z 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-23T17:26:40.7501736Z
2026-10-23T17:26:40.7501799Z 169         defaultModel: Effect.succeed(undefined),
2026-10-23T17:26:40.7501852Z                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7501854Z
2026-10-23T17:26:40.7502163Z 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-23T17:26:40.7502167Z
2026-10-23T17:26:40.7502230Z 306         defaultModel: Effect.succeed(undefined),
2026-10-23T17:26:40.7502280Z                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7502282Z
2026-10-23T17:26:40.7502589Z 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-23T17:26:40.7502591Z
2026-10-23T17:26:40.7502652Z 542         defaultModel: Effect.succeed(undefined),
2026-10-23T17:26:40.7502701Z                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7502704Z
2026-10-23T17:26:40.7503044Z 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-23T17:26:40.7503046Z
2026-10-23T17:26:40.7503107Z 974       const controller = new AbortController();
2026-10-23T17:26:40.7503206Z                              ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7503209Z
2026-10-23T17:26:40.7503502Z 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-23T17:26:40.7503504Z
2026-10-23T17:26:40.7503571Z 1326         const requestEvent = yield* runtime.events
2026-10-23T17:26:40.7503625Z                                          ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7503670Z 1327           .pipe(
2026-10-23T17:26:40.7503715Z      ~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7503756Z  ...
2026-10-23T17:26:40.7503797Z 1330           )
2026-10-23T17:26:40.7503838Z      ~~~~~~~~~~~
2026-10-23T17:26:40.7503893Z 1331           .pipe(Effect.forkScoped);
2026-10-23T17:26:40.7503939Z      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7503941Z
2026-10-23T17:26:40.7504282Z 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-23T17:26:40.7504288Z
2026-10-23T17:26:40.7504354Z 1332         const controller = new AbortController();
2026-10-23T17:26:40.7504407Z                                 ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7504409Z
2026-10-23T17:26:40.7504748Z 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-23T17:26:40.7504751Z
2026-10-23T17:26:40.7504829Z 1355         const cancelledController = new AbortController();
2026-10-23T17:26:40.7504889Z                                          ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7504891Z
2026-10-23T17:26:40.7505256Z 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-23T17:26:40.7505307Z
2026-10-23T17:26:40.7505413Z 4018     getCapabilities: () => Effect.succeed(ClaudeProviderCapabilitiesV2),
2026-10-23T17:26:40.7505459Z          ~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7505461Z
2026-10-23T17:26:40.7505839Z 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-23T17:26:40.7505842Z
2026-10-23T17:26:40.7505964Z 4019     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-23T17:26:40.7506009Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7506011Z
2026-10-23T17:26:40.7506375Z 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-23T17:26:40.7506380Z
2026-10-23T17:26:40.7506439Z 201         signal: new AbortController().signal,
2026-10-23T17:26:40.7506486Z                     ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7506488Z
2026-10-23T17:26:40.7506885Z 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-23T17:26:40.7506888Z
2026-10-23T17:26:40.7506941Z 74   const pause = Effect.raceFirst(
2026-10-23T17:26:40.7506988Z                    ~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7506990Z
2026-10-23T17:26:40.7507287Z 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-23T17:26:40.7507334Z
2026-10-23T17:26:40.7507441Z 1741     threadId === null ? Effect.succeed(undefined) : mcpSessions.read(threadId);
2026-10-23T17:26:40.7507496Z                              ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7507498Z
2026-10-23T17:26:40.7507859Z 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-23T17:26:40.7507861Z
2026-10-23T17:26:40.7507962Z 1748     getCapabilities: () => Effect.succeed(CodexProviderCapabilitiesV2),
2026-10-23T17:26:40.7508008Z          ~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7508010Z
2026-10-23T17:26:40.7508385Z 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-23T17:26:40.7508391Z
2026-10-23T17:26:40.7508510Z 1749     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-23T17:26:40.7508557Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7508560Z
2026-10-23T17:26:40.7508902Z 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-23T17:26:40.7508905Z
2026-10-23T17:26:40.7508979Z 3045                   Effect.catch(() => Effect.succeed(null)),
2026-10-23T17:26:40.7509023Z                        ~~~~~~~~~~~~
2026-10-23T17:26:40.7509026Z
2026-10-23T17:26:40.7509403Z 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-23T17:26:40.7509407Z
2026-10-23T17:26:40.7509468Z 3046                   Effect.flatMap((response) =>
2026-10-23T17:26:40.7509563Z                        ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7509566Z
2026-10-23T17:26:40.7509846Z 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-23T17:26:40.7509849Z
2026-10-23T17:26:40.7509911Z 3068                   Effect.catch(() => Effect.void),
2026-10-23T17:26:40.7509955Z                        ~~~~~~~~~~~~
2026-10-23T17:26:40.7509957Z
2026-10-23T17:26:40.7510319Z 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-23T17:26:40.7510323Z
2026-10-23T17:26:40.7510465Z 7268                   return yield* Effect.fail(failedTermination.error);
2026-10-23T17:26:40.7510512Z                               ~~~~~
2026-10-23T17:26:40.7510517Z
2026-10-23T17:26:40.7510954Z 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-23T17:26:40.7510958Z
2026-10-23T17:26:40.7511060Z 33 const DEFAULT_GROK_SETTINGS = Schema.decodeUnknownSync(GrokSettings)({});
2026-10-23T17:26:40.7511118Z                                         ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7511120Z
2026-10-23T17:26:40.7511550Z 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-23T17:26:40.7511622Z
2026-10-23T17:26:40.7511748Z 414 const DEFAULT_MUSE_SETTINGS = Schema.decodeUnknownSync(MuseSettings)({ enabled: true });
2026-10-23T17:26:40.7511803Z                                          ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7511807Z
2026-10-23T17:26:40.7512153Z 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-23T17:26:40.7512155Z
2026-10-23T17:26:40.7512204Z 242       execute: (input) =>
2026-10-23T17:26:40.7512245Z           ~~~~~~~
2026-10-23T17:26:40.7512247Z
2026-10-23T17:26:40.7512511Z src/orchestration-v2/CheckpointRestoreSafety.test.ts:104:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7512515Z
2026-10-23T17:26:40.7512622Z 104             get: () => Effect.succeed(Option.some({ workspaceRoot: parent } as never)),
2026-10-23T17:26:40.7512674Z                            ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7512676Z
2026-10-23T17:26:40.7513028Z 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-23T17:26:40.7513030Z
2026-10-23T17:26:40.7513081Z 41             Effect.catch((error) =>
2026-10-23T17:26:40.7513126Z                ~~~~~~~~~~~~
2026-10-23T17:26:40.7513128Z
2026-10-23T17:26:40.7513471Z 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-23T17:26:40.7513477Z
2026-10-23T17:26:40.7513528Z 83                 Effect.catch((error) =>
2026-10-23T17:26:40.7513574Z                    ~~~~~~~~~~~~
2026-10-23T17:26:40.7513576Z
2026-10-23T17:26:40.7513894Z src/orchestration-v2/CheckpointRollbackService.test.ts:233:22 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7513897Z
2026-10-23T17:26:40.7513995Z 233               return Effect.succeed(Option.some({ workspaceRoot } as never));
2026-10-23T17:26:40.7514042Z                          ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7514045Z
2026-10-23T17:26:40.7514405Z 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-23T17:26:40.7514407Z
2026-10-23T17:26:40.7514473Z 142         const batchAbort = new AbortController();
2026-10-23T17:26:40.7514527Z                                ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7514530Z
2026-10-23T17:26:40.7514898Z 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-23T17:26:40.7514901Z
2026-10-23T17:26:40.7514950Z 168     Effect.flatMap((frame) =>
2026-10-23T17:26:40.7514992Z         ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7514994Z
2026-10-23T17:26:40.7515238Z src/orchestration-v2/CommandReceiptStore.ts:164:29 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7515241Z
2026-10-23T17:26:40.7515311Z 164               onNone: () => Effect.succeed(Option.none()),
2026-10-23T17:26:40.7515361Z                                 ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7515364Z
2026-10-23T17:26:40.7515652Z src/orchestration-v2/CommandReceiptStore.ts:167:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7515655Z
2026-10-23T17:26:40.7515718Z 167                   ? Effect.succeed(Option.none())
2026-10-23T17:26:40.7515765Z                         ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7515767Z
2026-10-23T17:26:40.7516017Z src/orchestration-v2/CommandReceiptStore.ts:168:58 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T17:26:40.7516020Z
2026-10-23T17:26:40.7516123Z 168                   : fromApplicationReceipt(receipt).pipe(Effect.map(Option.some)),
2026-10-23T17:26:40.7516185Z                                                              ~~~~~~~~~~
2026-10-23T17:26:40.7516187Z
2026-10-23T17:26:40.7516429Z src/orchestration-v2/CommandReceiptStore.ts:183:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7516434Z
2026-10-23T17:26:40.7516492Z 183               ? Effect.succeed(Option.none())
2026-10-23T17:26:40.7516541Z                     ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7516543Z
2026-10-23T17:26:40.7516788Z src/orchestration-v2/CommandReceiptStore.ts:192:25 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T17:26:40.7516791Z
2026-10-23T17:26:40.7516851Z 192                 }).pipe(Effect.map(Option.some)),
2026-10-23T17:26:40.7516898Z                             ~~~~~~~~~~
2026-10-23T17:26:40.7516900Z
2026-10-23T17:26:40.7517128Z src/orchestration-v2/EffectOutbox.ts:429:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7517130Z
2026-10-23T17:26:40.7517188Z 429               ? Effect.succeed(Option.none())
2026-10-23T17:26:40.7517233Z                     ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7517237Z
2026-10-23T17:26:40.7517515Z src/orchestration-v2/EffectOutbox.ts:430:39 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T17:26:40.7517518Z
2026-10-23T17:26:40.7517596Z 430               : rowToEffect(row).pipe(Effect.map(Option.some));
2026-10-23T17:26:40.7517650Z                                           ~~~~~~~~~~
2026-10-23T17:26:40.7517652Z
2026-10-23T17:26:40.7517888Z src/orchestration-v2/EffectWorker.test.ts:107:20 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7517890Z
2026-10-23T17:26:40.7517952Z 107         get: () => Effect.succeed(Option.none()),
2026-10-23T17:26:40.7517999Z                        ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7518001Z
2026-10-23T17:26:40.7518236Z src/orchestration-v2/EffectWorker.test.ts:302:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7518240Z
2026-10-23T17:26:40.7518326Z 302       claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-23T17:26:40.7518376Z                            ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7518378Z
2026-10-23T17:26:40.7518612Z src/orchestration-v2/EffectWorker.test.ts:369:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7518615Z
2026-10-23T17:26:40.7518727Z 369       claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-23T17:26:40.7518775Z                            ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7518777Z
2026-10-23T17:26:40.7519013Z src/orchestration-v2/EffectWorker.test.ts:436:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7519015Z
2026-10-23T17:26:40.7519098Z 436       claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-23T17:26:40.7519193Z                            ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7519196Z
2026-10-23T17:26:40.7519433Z src/orchestration-v2/EffectWorker.test.ts:437:18 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7519435Z
2026-10-23T17:26:40.7519513Z 437       get: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-23T17:26:40.7519559Z                      ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7519561Z
2026-10-23T17:26:40.7519901Z 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-23T17:26:40.7519904Z
2026-10-23T17:26:40.7519956Z 98       execute: (effect, options) => {
2026-10-23T17:26:40.7519996Z          ~~~~~~~
2026-10-23T17:26:40.7519998Z
2026-10-23T17:26:40.7520331Z 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-23T17:26:40.7520333Z
2026-10-23T17:26:40.7520387Z 180                 Effect.catch((cause) =>
2026-10-23T17:26:40.7520433Z                     ~~~~~~~~~~~~
2026-10-23T17:26:40.7520435Z
2026-10-23T17:26:40.7520726Z 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-23T17:26:40.7520729Z
2026-10-23T17:26:40.7520778Z 110         append: (input) =>
2026-10-23T17:26:40.7520821Z             ~~~~~~
2026-10-23T17:26:40.7520823Z
2026-10-23T17:26:40.7521134Z 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-23T17:26:40.7521138Z
2026-10-23T17:26:40.7521192Z 120         appendProjectEvent: (event) =>
2026-10-23T17:26:40.7521278Z             ~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7521280Z
2026-10-23T17:26:40.7521578Z 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-23T17:26:40.7521581Z
2026-10-23T17:26:40.7521633Z 131         latestSequence: (input) =>
2026-10-23T17:26:40.7521677Z             ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7521680Z
2026-10-23T17:26:40.7521940Z src/orchestration-v2/FoundationPersistence.test.ts:1791:26 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7521942Z
2026-10-23T17:26:40.7522030Z 1791         claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-23T17:26:40.7522082Z                               ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7522084Z
2026-10-23T17:26:40.7522342Z src/orchestration-v2/FoundationPersistence.test.ts:1793:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7522345Z
2026-10-23T17:26:40.7522390Z 1793           Effect.succeed(
2026-10-23T17:26:40.7522435Z                ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7522437Z
2026-10-23T17:26:40.7522693Z src/orchestration-v2/FoundationPersistence.test.ts:2663:30 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7522695Z
2026-10-23T17:26:40.7522772Z 2663             nextClaimableAt: Effect.succeed(Option.none()),
2026-10-23T17:26:40.7522823Z                                   ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7522825Z
2026-10-23T17:26:40.7523078Z src/orchestration-v2/FoundationPersistence.test.ts:2880:30 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7523125Z
2026-10-23T17:26:40.7523202Z 2880             nextClaimableAt: Effect.succeed(Option.none()),
2026-10-23T17:26:40.7523252Z                                   ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7523254Z
2026-10-23T17:26:40.7523612Z src/orchestration-v2/Orchestrator.ts:11756:7 - suggestion TS377120: `Effect.filterOrFail` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-23T17:26:40.7523614Z
2026-10-23T17:26:40.7523667Z 11756       Effect.flatMap((planned) =>
2026-10-23T17:26:40.7523710Z             ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7523713Z
2026-10-23T17:26:40.7524049Z src/orchestration-v2/Orchestrator.ts:12179:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.restartContinuationPending")((run) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7524052Z
2026-10-23T17:26:40.7524115Z 12179     restartContinuationPending: (run) =>
2026-10-23T17:26:40.7524163Z           ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7524165Z
2026-10-23T17:26:40.7524494Z src/orchestration-v2/Orchestrator.ts:12181:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.awaitRestartContinuation")((run) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7524496Z
2026-10-23T17:26:40.7524554Z 12181     awaitRestartContinuation: (run) =>
2026-10-23T17:26:40.7524601Z           ~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7524604Z
2026-10-23T17:26:40.7524928Z src/orchestration-v2/Orchestrator.ts:12184:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.autoArmLimitRecovery")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7524931Z
2026-10-23T17:26:40.7524990Z 12184     autoArmLimitRecovery: (input) =>
2026-10-23T17:26:40.7525034Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7525037Z
2026-10-23T17:26:40.7525388Z src/orchestration-v2/Orchestrator.ts:12212:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.searchThread")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7525390Z
2026-10-23T17:26:40.7525440Z 12212     searchThread: (input) =>
2026-10-23T17:26:40.7525482Z           ~~~~~~~~~~~~
2026-10-23T17:26:40.7525484Z
2026-10-23T17:26:40.7525880Z src/orchestration-v2/Orchestrator.ts:12220:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadHistoryPage")((threadId, cursor, throughEntryId, conversationOnly) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7525882Z
2026-10-23T17:26:40.7526001Z 12220     getThreadHistoryPage: (threadId, cursor, throughEntryId, conversationOnly) =>
2026-10-23T17:26:40.7526044Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7526047Z
2026-10-23T17:26:40.7526375Z src/orchestration-v2/Orchestrator.ts:12224:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getTimelinePage")((threadId, options) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7526378Z
2026-10-23T17:26:40.7526441Z 12224     getTimelinePage: (threadId, options) =>
2026-10-23T17:26:40.7526484Z           ~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7526486Z
2026-10-23T17:26:40.7526798Z src/orchestration-v2/Orchestrator.ts:12228:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getMessageCount")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7526800Z
2026-10-23T17:26:40.7526852Z 12228     getMessageCount: (threadId) =>
2026-10-23T17:26:40.7526895Z           ~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7526897Z
2026-10-23T17:26:40.7527249Z src/orchestration-v2/Orchestrator.ts:12232:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getTurnItem")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7527252Z
2026-10-23T17:26:40.7527302Z 12232     getTurnItem: (input) =>
2026-10-23T17:26:40.7527343Z           ~~~~~~~~~~~
2026-10-23T17:26:40.7527346Z
2026-10-23T17:26:40.7527684Z src/orchestration-v2/Orchestrator.ts:12240:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadRecords")((threadId, fields, filter) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7527687Z
2026-10-23T17:26:40.7527761Z 12240     getThreadRecords: (threadId, fields, filter) =>
2026-10-23T17:26:40.7527805Z           ~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7527807Z
2026-10-23T17:26:40.7528127Z src/orchestration-v2/Orchestrator.ts:12244:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadProjection")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7528131Z
2026-10-23T17:26:40.7528191Z 12244     getThreadProjection: (threadId) =>
2026-10-23T17:26:40.7528234Z           ~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7528237Z
2026-10-23T17:26:40.7528558Z src/orchestration-v2/Orchestrator.ts:12248:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getCheckpointContext")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7528560Z
2026-10-23T17:26:40.7528621Z 12248     getCheckpointContext: (threadId) =>
2026-10-23T17:26:40.7528688Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7528691Z
2026-10-23T17:26:40.7529004Z src/orchestration-v2/Orchestrator.ts:12252:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadSnapshot")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7529009Z
2026-10-23T17:26:40.7529064Z 12252     getThreadSnapshot: (threadId) =>
2026-10-23T17:26:40.7529108Z           ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7529111Z
2026-10-23T17:26:40.7529499Z src/orchestration-v2/Orchestrator.ts:12256:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadSnapshotWindow")((threadId, options) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7529502Z
2026-10-23T17:26:40.7529578Z 12256     getThreadSnapshotWindow: (threadId, options) =>
2026-10-23T17:26:40.7529623Z           ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7529625Z
2026-10-23T17:26:40.7529939Z src/orchestration-v2/Orchestrator.ts:12260:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getShellSnapshot")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7529942Z
2026-10-23T17:26:40.7529995Z 12260     getShellSnapshot: (options) =>
2026-10-23T17:26:40.7530040Z           ~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7530042Z
2026-10-23T17:26:40.7530372Z src/orchestration-v2/Orchestrator.ts:12262:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.listActiveSubagentThreadIds")(() => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7530375Z
2026-10-23T17:26:40.7530434Z 12262     listActiveSubagentThreadIds: () =>
2026-10-23T17:26:40.7530481Z           ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7530483Z
2026-10-23T17:26:40.7530798Z src/orchestration-v2/Orchestrator.ts:12264:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.readShellSnapshot")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7530800Z
2026-10-23T17:26:40.7530853Z 12264     readShellSnapshot: (options) =>
2026-10-23T17:26:40.7530896Z           ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7530898Z
2026-10-23T17:26:40.7531257Z src/orchestration-v2/Orchestrator.ts:12271:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadShell")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7531259Z
2026-10-23T17:26:40.7531312Z 12271     getThreadShell: (threadId) =>
2026-10-23T17:26:40.7531355Z           ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7531357Z
2026-10-23T17:26:40.7531684Z src/orchestration-v2/Orchestrator.ts:12275:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadEventSequence")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7531686Z
2026-10-23T17:26:40.7531748Z 12275     getThreadEventSequence: (threadId) =>
2026-10-23T17:26:40.7531791Z           ~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7531793Z
2026-10-23T17:26:40.7532123Z 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-23T17:26:40.7532127Z
2026-10-23T17:26:40.7532197Z 160         getInstance: () => Effect.succeed(undefined),
2026-10-23T17:26:40.7532252Z                                ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7532255Z
2026-10-23T17:26:40.7532556Z 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-23T17:26:40.7532558Z
2026-10-23T17:26:40.7532669Z 269     getShell: (projectId) => get(projectId).pipe(Effect.map(Option.map(toShell))),
2026-10-23T17:26:40.7532711Z         ~~~~~~~~
2026-10-23T17:26:40.7532713Z
2026-10-23T17:26:40.7533017Z 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-23T17:26:40.7533021Z
2026-10-23T17:26:40.7533070Z 270     listShells: (options) =>
2026-10-23T17:26:40.7533111Z         ~~~~~~~~~~
2026-10-23T17:26:40.7533171Z
2026-10-23T17:26:40.7533432Z src/orchestration-v2/ProjectionControlReads.test.ts:279:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7533435Z
2026-10-23T17:26:40.7533482Z 279           Effect.succeed(
2026-10-23T17:26:40.7533525Z               ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7533527Z
2026-10-23T17:26:40.7533862Z 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-23T17:26:40.7533864Z
2026-10-23T17:26:40.7533910Z 78       get: (instanceId) =>
2026-10-23T17:26:40.7533951Z          ~~~
2026-10-23T17:26:40.7533954Z
2026-10-23T17:26:40.7534277Z 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-23T17:26:40.7534280Z
2026-10-23T17:26:40.7534323Z 135       list: () =>
2026-10-23T17:26:40.7534364Z           ~~~~
2026-10-23T17:26:40.7534367Z
2026-10-23T17:26:40.7534695Z 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-23T17:26:40.7534697Z
2026-10-23T17:26:40.7534783Z 93       record: (properties: Readonly<Record<string, unknown>>) =>
2026-10-23T17:26:40.7534823Z          ~~~~~~
2026-10-23T17:26:40.7534825Z
2026-10-23T17:26:40.7535198Z 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-23T17:26:40.7535247Z
2026-10-23T17:26:40.7535310Z 818               Effect.flatMap((storedEvents) =>
2026-10-23T17:26:40.7535353Z                   ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7535356Z
2026-10-23T17:26:40.7535615Z src/orchestration-v2/ProviderSessionManager.test.ts:1155:19 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7535618Z
2026-10-23T17:26:40.7535740Z 1155                 : Effect.succeed(Option.some(makeBrowserAccessProject(requestedProjectId))),
2026-10-23T17:26:40.7535787Z                        ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7535789Z
2026-10-23T17:26:40.7536051Z src/orchestration-v2/ProviderTurnStartService.test.ts:150:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7536055Z
2026-10-23T17:26:40.7536102Z 150             Effect.succeed(
2026-10-23T17:26:40.7536147Z                 ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7536149Z
2026-10-23T17:26:40.7536409Z src/orchestration-v2/ProviderTurnStartService.test.ts:703:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7536411Z
2026-10-23T17:26:40.7536545Z 703             Effect.succeed(Option.some({ workspaceRoot: "/tmp/native-account-project" } as never)),
2026-10-23T17:26:40.7536588Z                 ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7536592Z
2026-10-23T17:26:40.7536854Z src/orchestration-v2/ProviderTurnStartService.testkit.ts:14:20 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7536857Z
2026-10-23T17:26:40.7536924Z 14     getById: () => Effect.succeed(Option.none()),
2026-10-23T17:26:40.7536972Z                       ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7536975Z
2026-10-23T17:26:40.7537465Z src/orchestration-v2/ProviderTurnStartService.ts:499:15 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-23T17:26:40.7537468Z
2026-10-23T17:26:40.7537525Z 499               Effect.catchCause((cause) =>
2026-10-23T17:26:40.7537572Z                   ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7537574Z
2026-10-23T17:26:40.7537990Z src/orchestration-v2/ProviderTurnStartService.ts:1289:7 - suggestion TS377014: This generator returns an Effect-able value directly, which produces a nested `Effect<Effect<...>>`. If the intended result is the inner Effect value, `return yield*` represents that form. effect(returnEffectInGen)
2026-10-23T17:26:40.7537992Z
2026-10-23T17:26:40.7538054Z 1289       return runExecution.startRootRun({
2026-10-23T17:26:40.7538095Z            ~~~~~~
2026-10-23T17:26:40.7538099Z
2026-10-23T17:26:40.7538356Z src/orchestration-v2/PullRequestWatchReactor.ts:478:53 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T17:26:40.7538359Z
2026-10-23T17:26:40.7538458Z 478             ? pullRequests.activity(reference).pipe(Effect.map(Option.some))
2026-10-23T17:26:40.7538520Z                                                         ~~~~~~~~~~
2026-10-23T17:26:40.7538522Z
2026-10-23T17:26:40.7538899Z 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-23T17:26:40.7538902Z
2026-10-23T17:26:40.7538972Z 49       cleanupScheduledTasks: (threadId: ThreadId) =>
2026-10-23T17:26:40.7539015Z          ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7539017Z
2026-10-23T17:26:40.7539363Z 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-23T17:26:40.7539423Z
2026-10-23T17:26:40.7539484Z 58       cleanupTerminals: (threadId: string) =>
2026-10-23T17:26:40.7539528Z          ~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7539530Z
2026-10-23T17:26:40.7539875Z 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-23T17:26:40.7539878Z
2026-10-23T17:26:40.7539936Z 66       cleanupPreviews: (threadId: string) =>
2026-10-23T17:26:40.7539979Z          ~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7539981Z
2026-10-23T17:26:40.7540342Z 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-23T17:26:40.7540346Z
2026-10-23T17:26:40.7540439Z 74       cleanupAttachments: (attachmentIds: ReadonlyArray<string>) =>
2026-10-23T17:26:40.7540483Z          ~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7540486Z
2026-10-23T17:26:40.7540746Z 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-23T17:26:40.7540750Z
2026-10-23T17:26:40.7540807Z 1812         ).pipe(Effect.map(Option.some)),
2026-10-23T17:26:40.7540851Z                     ~~~~~~~~~~
2026-10-23T17:26:40.7540853Z
2026-10-23T17:26:40.7541222Z src/orchestration-v2/RunExecutionService.ts:919:15 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-23T17:26:40.7541226Z
2026-10-23T17:26:40.7541283Z 919               Effect.catchCause((cause) =>
2026-10-23T17:26:40.7541328Z                   ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7541376Z
2026-10-23T17:26:40.7541616Z src/orchestration-v2/RuntimePolicy.test.ts:90:9 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7541618Z
2026-10-23T17:26:40.7541665Z 90         Effect.succeed(
2026-10-23T17:26:40.7541709Z            ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7541711Z
2026-10-23T17:26:40.7542009Z 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-23T17:26:40.7542012Z
2026-10-23T17:26:40.7542057Z 54   resolve: (input) =>
2026-10-23T17:26:40.7542098Z      ~~~~~~~
2026-10-23T17:26:40.7542100Z
2026-10-23T17:26:40.7542358Z src/orchestration-v2/RuntimeRequestService.test.ts:29:7 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7542362Z
2026-10-23T17:26:40.7542406Z 29       Effect.succeed(
2026-10-23T17:26:40.7542448Z          ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7542450Z
2026-10-23T17:26:40.7542705Z src/orchestration-v2/ThreadLaunchService.test.ts:189:33 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7542707Z
2026-10-23T17:26:40.7542800Z 189       getByWorkspaceRoot: () => Effect.succeed(Option.some(project)),
2026-10-23T17:26:40.7542853Z                                     ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7542855Z
2026-10-23T17:26:40.7543104Z src/orchestration-v2/ThreadLaunchService.test.ts:220:32 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7543159Z
2026-10-23T17:26:40.7543240Z 220         folderForThread: () => Effect.succeed(Option.none()),
2026-10-23T17:26:40.7543292Z                                    ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7543296Z
2026-10-23T17:26:40.7543623Z 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-23T17:26:40.7543626Z
2026-10-23T17:26:40.7543673Z 91     archive: (input) =>
2026-10-23T17:26:40.7543713Z        ~~~~~~~
2026-10-23T17:26:40.7543716Z
2026-10-23T17:26:40.7544044Z 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-23T17:26:40.7544046Z
2026-10-23T17:26:40.7544095Z 97     unarchive: (input) =>
2026-10-23T17:26:40.7544137Z        ~~~~~~~~~
2026-10-23T17:26:40.7544139Z
2026-10-23T17:26:40.7544467Z 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-23T17:26:40.7544469Z
2026-10-23T17:26:40.7544515Z 103     delete: (input) =>
2026-10-23T17:26:40.7544555Z         ~~~~~~
2026-10-23T17:26:40.7544558Z
2026-10-23T17:26:40.7544895Z 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-23T17:26:40.7544898Z
2026-10-23T17:26:40.7544949Z 109     updateMetadata: (input) =>
2026-10-23T17:26:40.7544991Z         ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7544993Z
2026-10-23T17:26:40.7545331Z 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-23T17:26:40.7545336Z
2026-10-23T17:26:40.7545432Z 118     setRuntimeMode: (input) =>
2026-10-23T17:26:40.7545475Z         ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7545477Z
2026-10-23T17:26:40.7545825Z 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-23T17:26:40.7545827Z
2026-10-23T17:26:40.7545882Z 125     setInteractionMode: (input) =>
2026-10-23T17:26:40.7545924Z         ~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7545926Z
2026-10-23T17:26:40.7546280Z 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-23T17:26:40.7546284Z
2026-10-23T17:26:40.7546336Z 132     setModelSelection: (input) =>
2026-10-23T17:26:40.7546380Z         ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7546384Z
2026-10-23T17:26:40.7546760Z 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-23T17:26:40.7546763Z
2026-10-23T17:26:40.7546816Z 689       Effect.flatMap((projection) =>
2026-10-23T17:26:40.7546859Z           ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7546862Z
2026-10-23T17:26:40.7547143Z 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-23T17:26:40.7547145Z
2026-10-23T17:26:40.7547211Z 706     ensureProjectionTranscript(input.threadId)
2026-10-23T17:26:40.7547313Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7547445Z 707       .pipe(Effect.andThen(orchestrator.getThreadRecords(input.threadId, fields, filter)))
2026-10-23T17:26:40.7547531Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7547571Z ...
2026-10-23T17:26:40.7547612Z 726         ),
2026-10-23T17:26:40.7547651Z     ~~~~~~~~~~
2026-10-23T17:26:40.7547691Z 727       );
2026-10-23T17:26:40.7547731Z     ~~~~~~~
2026-10-23T17:26:40.7547734Z
2026-10-23T17:26:40.7548109Z 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-23T17:26:40.7548111Z
2026-10-23T17:26:40.7548166Z 717         Effect.flatMap((projection) =>
2026-10-23T17:26:40.7548209Z             ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7548213Z
2026-10-23T17:26:40.7548582Z 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-23T17:26:40.7548584Z
2026-10-23T17:26:40.7548704Z 1131     if (failures[0] !== undefined) return yield* Effect.fail(failures[0]);
2026-10-23T17:26:40.7548759Z                                                ~~~~~
2026-10-23T17:26:40.7548761Z
2026-10-23T17:26:40.7549108Z 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-23T17:26:40.7549110Z
2026-10-23T17:26:40.7549160Z 1142     searchThread: (input) =>
2026-10-23T17:26:40.7549202Z          ~~~~~~~~~~~~
2026-10-23T17:26:40.7549205Z
2026-10-23T17:26:40.7549692Z 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-23T17:26:40.7549695Z
2026-10-23T17:26:40.7549811Z 1147     getThreadHistoryPage: (threadId, cursor, throughEntryId, conversationOnly) =>
2026-10-23T17:26:40.7549855Z          ~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7549857Z
2026-10-23T17:26:40.7550220Z 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-23T17:26:40.7550223Z
2026-10-23T17:26:40.7550284Z 1153     getTimelinePage: (threadId, options) =>
2026-10-23T17:26:40.7550327Z          ~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7550331Z
2026-10-23T17:26:40.7550740Z 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-23T17:26:40.7550742Z
2026-10-23T17:26:40.7550795Z 1157     getMessageCount: (threadId) =>
2026-10-23T17:26:40.7550838Z          ~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7550840Z
2026-10-23T17:26:40.7551177Z 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-23T17:26:40.7551179Z
2026-10-23T17:26:40.7551228Z 1161     getTurnItem: (input) =>
2026-10-23T17:26:40.7551268Z          ~~~~~~~~~~~
2026-10-23T17:26:40.7551272Z
2026-10-23T17:26:40.7551648Z 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-23T17:26:40.7551719Z
2026-10-23T17:26:40.7551795Z 1166     getThreadRecords: (threadId, fields, filter) =>
2026-10-23T17:26:40.7551839Z          ~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7551841Z
2026-10-23T17:26:40.7552226Z 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-23T17:26:40.7552229Z
2026-10-23T17:26:40.7552365Z 1206     ensureTranscript: () => Effect.succeed({ importedThreadCount: 0, importedMessageCount: 0 }),
2026-10-23T17:26:40.7552406Z          ~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7552409Z
2026-10-23T17:26:40.7552673Z src/orchestration-v2/ThreadPullRequestService.test.ts:135:31 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7552677Z
2026-10-23T17:26:40.7552761Z 135               getShell: () => Effect.succeed(Option.some(project)),
2026-10-23T17:26:40.7552812Z                                   ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7552814Z
2026-10-23T17:26:40.7553191Z src/orchestration-v2/ThreadPullRequestService.ts:327:17 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-23T17:26:40.7553194Z
2026-10-23T17:26:40.7553250Z 327                 Effect.catchCause((cause) =>
2026-10-23T17:26:40.7553297Z                     ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7553300Z
2026-10-23T17:26:40.7553669Z 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-23T17:26:40.7553673Z
2026-10-23T17:26:40.7553727Z 353           Effect.catchCause((cause) =>
2026-10-23T17:26:40.7553828Z               ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7553832Z
2026-10-23T17:26:40.7554204Z 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-23T17:26:40.7554206Z
2026-10-23T17:26:40.7554260Z 516           Effect.catchCause((cause) =>
2026-10-23T17:26:40.7554304Z               ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7554307Z
2026-10-23T17:26:40.7554684Z 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-23T17:26:40.7554687Z
2026-10-23T17:26:40.7554739Z 534       Effect.catchCause((cause) =>
2026-10-23T17:26:40.7554783Z           ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7554787Z
2026-10-23T17:26:40.7555160Z 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-23T17:26:40.7555162Z
2026-10-23T17:26:40.7555215Z 576         Effect.catchCause((cause) =>
2026-10-23T17:26:40.7555262Z             ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7555264Z
2026-10-23T17:26:40.7555615Z 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-23T17:26:40.7555619Z
2026-10-23T17:26:40.7555728Z 106       normalize: (item, runOrdinal) =>
2026-10-23T17:26:40.7555769Z           ~~~~~~~~~
2026-10-23T17:26:40.7555772Z
2026-10-23T17:26:40.7556170Z 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-23T17:26:40.7556173Z
2026-10-23T17:26:40.7556273Z 54 const thread = Schema.decodeUnknownSync(OrchestrationV2AppThread)({
2026-10-23T17:26:40.7556318Z                          ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7556322Z
2026-10-23T17:26:40.7556687Z 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-23T17:26:40.7556689Z
2026-10-23T17:26:40.7556733Z 231           try {
2026-10-23T17:26:40.7556774Z               ~~~~~
2026-10-23T17:26:40.7556853Z 232             decodeThreadHistoryCursor(args.query.cursor);
2026-10-23T17:26:40.7556918Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7556958Z ...
2026-10-23T17:26:40.7557087Z 236             return yield* failEnvironmentInternal("orchestration_thread_history_failed", cause);
2026-10-23T17:26:40.7557173Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7557213Z 237           }
2026-10-23T17:26:40.7557254Z     ~~~~~~~~~~~
2026-10-23T17:26:40.7557256Z
2026-10-23T17:26:40.7557498Z src/orchestration-v2/runtimeLayer.test.ts:120:18 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7557500Z
2026-10-23T17:26:40.7557565Z 120   getById: () => Effect.succeed(Option.none()),
2026-10-23T17:26:40.7557609Z                      ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7557613Z
2026-10-23T17:26:40.7557889Z src/orchestration-v2/runtimeLayer.test.ts:996:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7557892Z
2026-10-23T17:26:40.7557939Z 996           Effect.succeed(
2026-10-23T17:26:40.7557983Z               ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7557985Z
2026-10-23T17:26:40.7558343Z 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-23T17:26:40.7558345Z
2026-10-23T17:26:40.7558391Z 40         append: (input) =>
2026-10-23T17:26:40.7558431Z            ~~~~~~
2026-10-23T17:26:40.7558433Z
2026-10-23T17:26:40.7558772Z 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-23T17:26:40.7558776Z
2026-10-23T17:26:40.7558836Z 283       const awaitDispatch = (key: string) =>
2026-10-23T17:26:40.7558880Z                 ~~~~~~~~~~~~~
2026-10-23T17:26:40.7558882Z
2026-10-23T17:26:40.7559292Z 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-23T17:26:40.7559294Z
2026-10-23T17:26:40.7559345Z 447       execute: () => Effect.void,
2026-10-23T17:26:40.7559385Z           ~~~~~~~
2026-10-23T17:26:40.7559388Z
2026-10-23T17:26:40.7559721Z 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-23T17:26:40.7559773Z
2026-10-23T17:26:40.7559819Z 92     list: (input) =>
2026-10-23T17:26:40.7559859Z        ~~~~
2026-10-23T17:26:40.7559861Z
2026-10-23T17:26:40.7560191Z 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-23T17:26:40.7560194Z
2026-10-23T17:26:40.7560239Z 102     set: (input) =>
2026-10-23T17:26:40.7560280Z         ~~~
2026-10-23T17:26:40.7560282Z
2026-10-23T17:26:40.7560610Z 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-23T17:26:40.7560614Z
2026-10-23T17:26:40.7560656Z 54     get: (key) =>
2026-10-23T17:26:40.7560696Z        ~~~
2026-10-23T17:26:40.7560698Z
2026-10-23T17:26:40.7561039Z 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-23T17:26:40.7561042Z
2026-10-23T17:26:40.7561088Z 64     put: (key, guide) =>
2026-10-23T17:26:40.7561128Z        ~~~
2026-10-23T17:26:40.7561130Z
2026-10-23T17:26:40.7561464Z 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-23T17:26:40.7561466Z
2026-10-23T17:26:40.7561515Z 45         Effect.catch((error) =>
2026-10-23T17:26:40.7561558Z            ~~~~~~~~~~~~
2026-10-23T17:26:40.7561560Z
2026-10-23T17:26:40.7561872Z 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-23T17:26:40.7561877Z
2026-10-23T17:26:40.7561940Z 75       awaitAttached: () => Effect.succeed(false),
2026-10-23T17:26:40.7562025Z          ~~~~~~~~~~~~~
2026-10-23T17:26:40.7562028Z
2026-10-23T17:26:40.7562335Z 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-23T17:26:40.7562338Z
2026-10-23T17:26:40.7562397Z 78       isAttached: () => Effect.succeed(false),
2026-10-23T17:26:40.7562437Z          ~~~~~~~~~~
2026-10-23T17:26:40.7562439Z
2026-10-23T17:26:40.7562736Z 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-23T17:26:40.7562738Z
2026-10-23T17:26:40.7562838Z 79       endpoint: () => Effect.die("No desktop app is attached to this server."),
2026-10-23T17:26:40.7562879Z          ~~~~~~~~
2026-10-23T17:26:40.7562882Z
2026-10-23T17:26:40.7563181Z 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-23T17:26:40.7563183Z
2026-10-23T17:26:40.7563234Z 80       pointer: () => Effect.void,
2026-10-23T17:26:40.7563274Z          ~~~~~~~
2026-10-23T17:26:40.7563276Z
2026-10-23T17:26:40.7563604Z 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-23T17:26:40.7563607Z
2026-10-23T17:26:40.7563661Z 194     awaitAttached: (key, timeout) =>
2026-10-23T17:26:40.7563702Z         ~~~~~~~~~~~~~
2026-10-23T17:26:40.7563704Z
2026-10-23T17:26:40.7564065Z 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-23T17:26:40.7564068Z
2026-10-23T17:26:40.7564166Z 216     isAttached: (key) => Effect.sync(() => attachedTabs.has(keyOf(key))),
2026-10-23T17:26:40.7564208Z         ~~~~~~~~~~
2026-10-23T17:26:40.7564211Z
2026-10-23T17:26:40.7564528Z 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-23T17:26:40.7564530Z
2026-10-23T17:26:40.7564633Z 218     pointer: (key, pointer) => command({ type: "pointer", ...key, ...pointer }),
2026-10-23T17:26:40.7564673Z         ~~~~~~~
2026-10-23T17:26:40.7564675Z
2026-10-23T17:26:40.7565125Z src/preview/ServerBrowser.ts:480:23 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-23T17:26:40.7565129Z
2026-10-23T17:26:40.7565224Z 480     executable: () => Effect.runPromise(previewBrowser.executable),
2026-10-23T17:26:40.7565273Z                           ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7565276Z
2026-10-23T17:26:40.7565716Z src/preview/ServerBrowser.ts:687:9 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-23T17:26:40.7565719Z
2026-10-23T17:26:40.7565769Z 687       ? Effect.runPromise(
2026-10-23T17:26:40.7565811Z             ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7565813Z
2026-10-23T17:26:40.7566291Z src/preview/ServerBrowser.ts:696:25 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-23T17:26:40.7566294Z
2026-10-23T17:26:40.7566372Z 696     const scope = await Effect.runPromise(Scope.make());
2026-10-23T17:26:40.7566423Z                             ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7566425Z
2026-10-23T17:26:40.7566859Z src/preview/ServerBrowser.ts:698:30 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-23T17:26:40.7566861Z
2026-10-23T17:26:40.7566924Z 698       const endpoint = await Effect.runPromise(
2026-10-23T17:26:40.7566978Z                                  ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7566980Z
2026-10-23T17:26:40.7567417Z src/preview/ServerBrowser.ts:708:17 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-23T17:26:40.7567419Z
2026-10-23T17:26:40.7567504Z 708           await Effect.runPromise(Scope.close(scope, Exit.void));
2026-10-23T17:26:40.7567550Z                     ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7567553Z
2026-10-23T17:26:40.7567984Z src/preview/ServerBrowser.ts:712:13 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-23T17:26:40.7568036Z
2026-10-23T17:26:40.7568118Z 712       await Effect.runPromise(Scope.close(scope, Exit.void));
2026-10-23T17:26:40.7568166Z                 ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7568168Z
2026-10-23T17:26:40.7568604Z src/preview/ServerBrowser.ts:1199:11 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-23T17:26:40.7568607Z
2026-10-23T17:26:40.7568678Z 1199     await Effect.runPromise(
2026-10-23T17:26:40.7568722Z                ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7568725Z
2026-10-23T17:26:40.7569158Z src/preview/ServerBrowser.ts:1688:17 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-23T17:26:40.7569162Z
2026-10-23T17:26:40.7569214Z 1688         : await Effect.runPromise(
2026-10-23T17:26:40.7569260Z                      ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7569264Z
2026-10-23T17:26:40.7569698Z src/preview/ServerBrowser.ts:1752:21 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-23T17:26:40.7569701Z
2026-10-23T17:26:40.7569756Z 1752             ? await Effect.runPromise(
2026-10-23T17:26:40.7569803Z                          ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7569805Z
2026-10-23T17:26:40.7570072Z src/preview/ServerBrowser.ts:1755:58 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-23T17:26:40.7570075Z
2026-10-23T17:26:40.7570181Z 1755                     ServerBrowserTabNotFoundError: () => Effect.succeed(undefined),
2026-10-23T17:26:40.7570303Z                                                               ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7570305Z
2026-10-23T17:26:40.7570747Z src/preview/ServerBrowser.ts:1761:38 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-23T17:26:40.7570749Z
2026-10-23T17:26:40.7570820Z 1761           const { sessions } = await Effect.runPromise(
2026-10-23T17:26:40.7570878Z                                           ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7570880Z
2026-10-23T17:26:40.7571319Z src/preview/ServerBrowser.ts:1789:19 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-23T17:26:40.7571324Z
2026-10-23T17:26:40.7571379Z 1789             await Effect.runPromise(
2026-10-23T17:26:40.7571425Z                        ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7571427Z
2026-10-23T17:26:40.7571865Z src/preview/ServerBrowser.ts:1820:21 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-23T17:26:40.7571870Z
2026-10-23T17:26:40.7571922Z 1820               await Effect.runPromise(
2026-10-23T17:26:40.7571969Z                          ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7571972Z
2026-10-23T17:26:40.7572412Z src/preview/ServerBrowser.ts:1884:13 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-23T17:26:40.7572465Z
2026-10-23T17:26:40.7572595Z 1884       await Effect.runPromise(manager.close({ threadId: tab.threadId, tabId: tab.tabId }));
2026-10-23T17:26:40.7572640Z                  ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7572644Z
2026-10-23T17:26:40.7573081Z src/preview/ServerBrowser.ts:1952:15 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-23T17:26:40.7573083Z
2026-10-23T17:26:40.7573135Z 1952         await Effect.runPromise(
2026-10-23T17:26:40.7573181Z                    ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7573185Z
2026-10-23T17:26:40.7573625Z src/preview/ServerBrowser.ts:1964:32 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-23T17:26:40.7573628Z
2026-10-23T17:26:40.7573695Z 1964         const snapshot = await Effect.runPromise(
2026-10-23T17:26:40.7573748Z                                     ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7573751Z
2026-10-23T17:26:40.7574191Z src/preview/ServerBrowser.ts:2210:15 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect)
2026-10-23T17:26:40.7574193Z
2026-10-23T17:26:40.7574244Z 2210         await Effect.runPromise(
2026-10-23T17:26:40.7574290Z                    ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7574293Z
2026-10-23T17:26:40.7574608Z 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-23T17:26:40.7574611Z
2026-10-23T17:26:40.7574683Z 179       const receive = (chunk: Uint8Array | string) => {
2026-10-23T17:26:40.7574726Z                 ~~~~~~~
2026-10-23T17:26:40.7574728Z
2026-10-23T17:26:40.7575024Z 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-23T17:26:40.7575026Z
2026-10-23T17:26:40.7575120Z 209     Effect.catch(() => Effect.succeed(HttpServerResponse.empty())),
2026-10-23T17:26:40.7575162Z         ~~~~~~~~~~~~
2026-10-23T17:26:40.7575164Z
2026-10-23T17:26:40.7575487Z 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-23T17:26:40.7575490Z
2026-10-23T17:26:40.7575572Z 860     resolveAvailableEditors: () => cachedAvailableEditors,
2026-10-23T17:26:40.7575618Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7575620Z
2026-10-23T17:26:40.7575942Z 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-23T17:26:40.7575944Z
2026-10-23T17:26:40.7576005Z 861     resolveFileManagerRevealKind: () =>
2026-10-23T17:26:40.7576049Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7576051Z
2026-10-23T17:26:40.7576354Z 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-23T17:26:40.7576403Z
2026-10-23T17:26:40.7576453Z 865     launchBrowser: (target) =>
2026-10-23T17:26:40.7576495Z         ~~~~~~~~~~~~~
2026-10-23T17:26:40.7576498Z
2026-10-23T17:26:40.7576794Z 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-23T17:26:40.7576798Z
2026-10-23T17:26:40.7576845Z 869     launchEditor: (input) =>
2026-10-23T17:26:40.7576887Z         ~~~~~~~~~~~~
2026-10-23T17:26:40.7576889Z
2026-10-23T17:26:40.7577134Z src/project/AgentSessionImporter.test.ts:212:15 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7577137Z
2026-10-23T17:26:40.7577184Z 212               Effect.succeed(
2026-10-23T17:26:40.7577228Z                   ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7577231Z
2026-10-23T17:26:40.7577465Z src/project/ManagedProjectFolders.ts:346:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7577468Z
2026-10-23T17:26:40.7577550Z 346           ? Effect.succeed(Option.some(folderFor(id.slice(-8))))
2026-10-23T17:26:40.7577597Z                 ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7577600Z
2026-10-23T17:26:40.7577831Z src/project/ManagedProjectFolders.ts:348:15 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7577833Z
2026-10-23T17:26:40.7577899Z 348             ? Effect.succeed(Option.some(fullFolder))
2026-10-23T17:26:40.7577944Z                   ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7577946Z
2026-10-23T17:26:40.7578256Z 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-23T17:26:40.7578259Z
2026-10-23T17:26:40.7578379Z 432     start: (input, hooks) => locked(start(input, hooks)),
2026-10-23T17:26:40.7578420Z         ~~~~~
2026-10-23T17:26:40.7578424Z
2026-10-23T17:26:40.7578754Z 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-23T17:26:40.7578757Z
2026-10-23T17:26:40.7578829Z 433     cancel: (projectId) => locked(cancel(projectId)),
2026-10-23T17:26:40.7578871Z         ~~~~~~
2026-10-23T17:26:40.7578873Z
2026-10-23T17:26:40.7579174Z 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-23T17:26:40.7579178Z
2026-10-23T17:26:40.7579246Z 434     retry: (projectId) => locked(retry(projectId)),
2026-10-23T17:26:40.7579286Z         ~~~~~
2026-10-23T17:26:40.7579289Z
2026-10-23T17:26:40.7579594Z 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-23T17:26:40.7579596Z
2026-10-23T17:26:40.7579668Z 435     discard: (projectId) => locked(discard(projectId)),
2026-10-23T17:26:40.7579710Z         ~~~~~~~
2026-10-23T17:26:40.7579712Z
2026-10-23T17:26:40.7580034Z 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-23T17:26:40.7580038Z
2026-10-23T17:26:40.7580136Z 21         get: (key) => Effect.sync(() => Option.fromUndefinedOr(bytes.get(key))),
2026-10-23T17:26:40.7580224Z            ~~~
2026-10-23T17:26:40.7580226Z
2026-10-23T17:26:40.7580559Z 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-23T17:26:40.7580561Z
2026-10-23T17:26:40.7580609Z 22         set: (key, value) =>
2026-10-23T17:26:40.7580648Z            ~~~
2026-10-23T17:26:40.7580650Z
2026-10-23T17:26:40.7580972Z 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-23T17:26:40.7580974Z
2026-10-23T17:26:40.7581021Z 26         remove: (key) =>
2026-10-23T17:26:40.7581061Z            ~~~~~~
2026-10-23T17:26:40.7581063Z
2026-10-23T17:26:40.7581382Z 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-23T17:26:40.7581386Z
2026-10-23T17:26:40.7581484Z 30         create: () => Effect.die("Handoff does not create persistent secrets."),
2026-10-23T17:26:40.7581524Z            ~~~~~~
2026-10-23T17:26:40.7581527Z
2026-10-23T17:26:40.7581872Z 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-23T17:26:40.7581875Z
2026-10-23T17:26:40.7582003Z 31         getOrCreateRandom: () => Effect.die("Handoff uses the destination environment identity."),
2026-10-23T17:26:40.7582048Z            ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7582050Z
2026-10-23T17:26:40.7582461Z 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-23T17:26:40.7582465Z
2026-10-23T17:26:40.7582612Z 205     return yield* Schema.decodeUnknownEffect(Schema.fromJsonString(schema))(
2026-10-23T17:26:40.7582666Z                              ~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7582668Z
2026-10-23T17:26:40.7582935Z 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-23T17:26:40.7582937Z
2026-10-23T17:26:40.7582989Z 569         ? Effect.succeed(undefined)
2026-10-23T17:26:40.7583034Z               ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7583037Z
2026-10-23T17:26:40.7583347Z 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-23T17:26:40.7583352Z
2026-10-23T17:26:40.7583401Z 284       current: (driverKind) =>
2026-10-23T17:26:40.7583444Z           ~~~~~~~
2026-10-23T17:26:40.7583446Z
2026-10-23T17:26:40.7583799Z 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-23T17:26:40.7583802Z
2026-10-23T17:26:40.7583857Z 284                 return yield* Effect.fail(
2026-10-23T17:26:40.7583903Z                            ~~~~~
2026-10-23T17:26:40.7583906Z
2026-10-23T17:26:40.7584221Z 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-23T17:26:40.7584224Z
2026-10-23T17:26:40.7584326Z 211     importProfile: (input) =>
2026-10-23T17:26:40.7584367Z         ~~~~~~~~~~~~~
2026-10-23T17:26:40.7584371Z
2026-10-23T17:26:40.7584711Z 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-23T17:26:40.7584713Z
2026-10-23T17:26:40.7584773Z 39       credentials: (namespace, bindingId) =>
2026-10-23T17:26:40.7584815Z          ~~~~~~~~~~~
2026-10-23T17:26:40.7584817Z
2026-10-23T17:26:40.7585182Z src/pullRequest/PullRequestService.ts:2773:7 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-23T17:26:40.7585185Z
2026-10-23T17:26:40.7585237Z 2773       Effect.catchCause((cause) =>
2026-10-23T17:26:40.7585280Z            ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7585284Z
2026-10-23T17:26:40.7585647Z src/pullRequest/PullRequestService.ts:3176:7 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-23T17:26:40.7585649Z
2026-10-23T17:26:40.7585700Z 3176       Effect.catchCause((cause) =>
2026-10-23T17:26:40.7585773Z            ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7585776Z
2026-10-23T17:26:40.7586108Z src/pullRequest/PullRequestService.ts:3395:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestService.listStats")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T17:26:40.7586129Z
2026-10-23T17:26:40.7586192Z 3395     listStats: (input) =>
2026-10-23T17:26:40.7586266Z          ~~~~~~~~~
2026-10-23T17:26:40.7586268Z
2026-10-23T17:26:40.7589871Z src/relay/AgentAwarenessRelay.test.ts:271:9 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T17:26:40.7589878Z
2026-10-23T17:26:40.7589932Z 271         Effect.succeed(
2026-10-23T17:26:40.7590046Z             ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7590049Z
2026-10-23T17:26:40.7590361Z 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-23T17:26:40.7590363Z
2026-10-23T17:26:40.7590622Z 822     requestCatchUp: () => Queue.offer(catchUpRequests, undefined).pipe(Effect.asVoid),
2026-10-23T17:26:40.7590667Z         ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7590669Z
2026-10-23T17:26:40.7591048Z 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-23T17:26:40.7591052Z
2026-10-23T17:26:40.7591112Z 641     requestDesktopUpdate: (requestId) =>
2026-10-23T17:26:40.7591159Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7591161Z
2026-10-23T17:26:40.7591533Z 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-23T17:26:40.7591535Z
2026-10-23T17:26:40.7591595Z 647     commitDesktopUpdate: (requestId) =>
2026-10-23T17:26:40.7591639Z         ~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7591642Z
2026-10-23T17:26:40.7592009Z 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-23T17:26:40.7592013Z
2026-10-23T17:26:40.7592069Z 649     cancelDesktopUpdate: (requestId) =>
2026-10-23T17:26:40.7592236Z         ~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7592239Z
2026-10-23T17:26:40.7592598Z 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-23T17:26:40.7592600Z
2026-10-23T17:26:40.7592664Z 698       setDiagnosticsDemand: () => Effect.void,
2026-10-23T17:26:40.7592708Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7592710Z
2026-10-23T17:26:40.7593067Z 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-23T17:26:40.7593070Z
2026-10-23T17:26:40.7593132Z 699       requestDesktopUpdate: () => Effect.void,
2026-10-23T17:26:40.7593175Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7593179Z
2026-10-23T17:26:40.7593534Z 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-23T17:26:40.7593536Z
2026-10-23T17:26:40.7593596Z 700       commitDesktopUpdate: () => Effect.void,
2026-10-23T17:26:40.7593640Z           ~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7593643Z
2026-10-23T17:26:40.7593996Z 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-23T17:26:40.7593998Z
2026-10-23T17:26:40.7594059Z 701       cancelDesktopUpdate: () => Effect.void,
2026-10-23T17:26:40.7594105Z           ~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7594107Z
2026-10-23T17:26:40.7594496Z 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-23T17:26:40.7594499Z
2026-10-23T17:26:40.7594546Z 1091       readHistory: () =>
2026-10-23T17:26:40.7594588Z            ~~~~~~~~~~~
2026-10-23T17:26:40.7594590Z
2026-10-23T17:26:40.7594937Z 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-23T17:26:40.7594939Z
2026-10-23T17:26:40.7595002Z 1097       setExternalProcesses: () => Effect.void,
2026-10-23T17:26:40.7595046Z            ~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7595048Z
2026-10-23T17:26:40.7595385Z 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-23T17:26:40.7595389Z
2026-10-23T17:26:40.7595451Z 1098       setHostPowerState: () => Effect.void,
2026-10-23T17:26:40.7595495Z            ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7595498Z
2026-10-23T17:26:40.7595789Z 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-23T17:26:40.7595791Z
2026-10-23T17:26:40.7595861Z 1136                             ? Effect.succeed(undefined)
2026-10-23T17:26:40.7595919Z                                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7595922Z
2026-10-23T17:26:40.7596198Z 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-23T17:26:40.7596250Z
2026-10-23T17:26:40.7596308Z 166       const results = yield* Effect.all(
2026-10-23T17:26:40.7596356Z                                  ~~~~~~~~~~
2026-10-23T17:26:40.7596360Z
2026-10-23T17:26:40.7596717Z src/server.ts:480:5 - suggestion TS377014: This generator returns an Effect-able value directly, which produces a nested `Effect<Effect<...>>`. If the intended result is the inner Effect value, `return yield*` represents that form. effect(returnEffectInGen)
2026-10-23T17:26:40.7596720Z
2026-10-23T17:26:40.7596774Z 480     return Effect.gen(function* () {
2026-10-23T17:26:40.7596816Z         ~~~~~~
2026-10-23T17:26:40.7596818Z
2026-10-23T17:26:40.7597089Z 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-23T17:26:40.7597091Z
2026-10-23T17:26:40.7597158Z 209           prepareTrial: Effect.succeed(undefined),
2026-10-23T17:26:40.7597212Z                             ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7597214Z
2026-10-23T17:26:40.7597478Z 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-23T17:26:40.7597480Z
2026-10-23T17:26:40.7597536Z 413       const results = yield* Effect.all(
2026-10-23T17:26:40.7597583Z                                  ~~~~~~~~~~
2026-10-23T17:26:40.7597585Z
2026-10-23T17:26:40.7597993Z 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-23T17:26:40.7597998Z
2026-10-23T17:26:40.7598050Z 204     listChangeRequests: (input) =>
2026-10-23T17:26:40.7598095Z         ~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7598097Z
2026-10-23T17:26:40.7598543Z 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-23T17:26:40.7598546Z
2026-10-23T17:26:40.7598598Z 209     getChangeRequest: (input) =>
2026-10-23T17:26:40.7598641Z         ~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7598643Z
2026-10-23T17:26:40.7599072Z 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-23T17:26:40.7599074Z
2026-10-23T17:26:40.7599130Z 214     createChangeRequest: (input) =>
2026-10-23T17:26:40.7599174Z         ~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7599177Z
2026-10-23T17:26:40.7599585Z 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-23T17:26:40.7599591Z
2026-10-23T17:26:40.7599648Z 219     getRepositoryCloneUrls: (input) =>
2026-10-23T17:26:40.7599692Z         ~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7599694Z
2026-10-23T17:26:40.7600091Z 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-23T17:26:40.7600093Z
2026-10-23T17:26:40.7600189Z 224     createRepository: (input) => provider.createRepository(input),
2026-10-23T17:26:40.7600233Z         ~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7600235Z
2026-10-23T17:26:40.7600626Z 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-23T17:26:40.7600681Z
2026-10-23T17:26:40.7600733Z 225     getDefaultBranch: (input) =>
2026-10-23T17:26:40.7600775Z         ~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7600777Z
2026-10-23T17:26:40.7601184Z 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-23T17:26:40.7601186Z
2026-10-23T17:26:40.7601242Z 230     checkoutChangeRequest: (input) =>
2026-10-23T17:26:40.7601285Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7601287Z
2026-10-23T17:26:40.7601638Z 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-23T17:26:40.7601642Z
2026-10-23T17:26:40.7601771Z 345       resolve: (input) => resolveHandle(input).pipe(Effect.map((handle) => handle.provider)),
2026-10-23T17:26:40.7601812Z           ~~~~~~~
2026-10-23T17:26:40.7601814Z
2026-10-23T17:26:40.7602175Z 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-23T17:26:40.7602178Z
2026-10-23T17:26:40.7602227Z 409       Effect.catch((sshError) =>
2026-10-23T17:26:40.7602270Z           ~~~~~~~~~~~~
2026-10-23T17:26:40.7602272Z
2026-10-23T17:26:40.7602647Z 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-23T17:26:40.7602651Z
2026-10-23T17:26:40.7602703Z 556     lookupRepository: (input) =>
2026-10-23T17:26:40.7602745Z         ~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7602790Z
2026-10-23T17:26:40.7603154Z 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-23T17:26:40.7603159Z
2026-10-23T17:26:40.7603207Z 558     prepareClone: (input) =>
2026-10-23T17:26:40.7603248Z         ~~~~~~~~~~~~
2026-10-23T17:26:40.7603250Z
2026-10-23T17:26:40.7603630Z 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-23T17:26:40.7603633Z
2026-10-23T17:26:40.7603693Z 565     cloneRepository: (input, options) =>
2026-10-23T17:26:40.7603735Z         ~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7603737Z
2026-10-23T17:26:40.7604114Z 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-23T17:26:40.7604117Z
2026-10-23T17:26:40.7604172Z 572     discardClone: (destinationPath) =>
2026-10-23T17:26:40.7604213Z         ~~~~~~~~~~~~
2026-10-23T17:26:40.7604216Z
2026-10-23T17:26:40.7604586Z 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-23T17:26:40.7604588Z
2026-10-23T17:26:40.7604641Z 576     publishRepository: (input) =>
2026-10-23T17:26:40.7604735Z         ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7604737Z
2026-10-23T17:26:40.7605058Z src/storageCleanup.ts:706: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-23T17:26:40.7605061Z
2026-10-23T17:26:40.7605112Z 706       return yield* Effect.fail(
2026-10-23T17:26:40.7605153Z                  ~~~~~
2026-10-23T17:26:40.7605155Z
2026-10-23T17:26:40.7605439Z 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-23T17:26:40.7605442Z
2026-10-23T17:26:40.7605489Z 113       record: () => Effect.void,
2026-10-23T17:26:40.7605530Z           ~~~~~~
2026-10-23T17:26:40.7605532Z
2026-10-23T17:26:40.7605826Z 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-23T17:26:40.7605830Z
2026-10-23T17:26:40.7605884Z 115       recordOwners: () => Effect.void,
2026-10-23T17:26:40.7605924Z           ~~~~~~~~~~~~
2026-10-23T17:26:40.7605926Z
2026-10-23T17:26:40.7606227Z 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-23T17:26:40.7606229Z
2026-10-23T17:26:40.7606372Z 329   yield* Effect.forever(Effect.sleep(FLUSH_INTERVAL_MS).pipe(Effect.flatMap(() => flushWhenDue)), {
2026-10-23T17:26:40.7606440Z                                                                  ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7606442Z
2026-10-23T17:26:40.7606715Z 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-23T17:26:40.7606723Z
2026-10-23T17:26:40.7606781Z 90       .pipe(Effect.catch(() => Effect.void));
2026-10-23T17:26:40.7606869Z                ~~~~~~~~~~~~
2026-10-23T17:26:40.7606871Z
2026-10-23T17:26:40.7607197Z 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-23T17:26:40.7607200Z
2026-10-23T17:26:40.7607255Z 60     generateCommitMessage: (input) =>
2026-10-23T17:26:40.7607298Z        ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7607300Z
2026-10-23T17:26:40.7607611Z 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-23T17:26:40.7607614Z
2026-10-23T17:26:40.7607664Z 64     generatePrContent: (input) =>
2026-10-23T17:26:40.7607708Z        ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7607710Z
2026-10-23T17:26:40.7608026Z 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-23T17:26:40.7608029Z
2026-10-23T17:26:40.7608080Z 68     generateBranchName: (input) =>
2026-10-23T17:26:40.7608125Z        ~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7608127Z
2026-10-23T17:26:40.7608442Z 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-23T17:26:40.7608444Z
2026-10-23T17:26:40.7608497Z 72     generateReviewGuide: (input) =>
2026-10-23T17:26:40.7608542Z        ~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7608544Z
2026-10-23T17:26:40.7608882Z 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-23T17:26:40.7608940Z
2026-10-23T17:26:40.7608995Z 76     generateThreadTitle: (input) =>
2026-10-23T17:26:40.7609038Z        ~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7609040Z
2026-10-23T17:26:40.7609320Z 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-23T17:26:40.7609322Z
2026-10-23T17:26:40.7609371Z 172     readSummary: (input) =>
2026-10-23T17:26:40.7609413Z         ~~~~~~~~~~~
2026-10-23T17:26:40.7609416Z
2026-10-23T17:26:40.7609666Z 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-23T17:26:40.7609670Z
2026-10-23T17:26:40.7609727Z 642         usageInstances(driver, settings)
2026-10-23T17:26:40.7609776Z             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7609820Z 643           .pipe(
2026-10-23T17:26:40.7609860Z     ~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7609901Z ...
2026-10-23T17:26:40.7609969Z 664             Effect.provideContext(readerContext),
2026-10-23T17:26:40.7610025Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7610066Z 665           ),
2026-10-23T17:26:40.7610108Z     ~~~~~~~~~~~
2026-10-23T17:26:40.7610110Z
2026-10-23T17:26:40.7610457Z 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-23T17:26:40.7610460Z
2026-10-23T17:26:40.7610510Z 4009         Effect.flatMap((result) =>
2026-10-23T17:26:40.7610554Z              ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7610558Z
2026-10-23T17:26:40.7610936Z 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-23T17:26:40.7610939Z
2026-10-23T17:26:40.7611000Z 4500     commit: (cwd, subject, body, options) =>
2026-10-23T17:26:40.7611041Z          ~~~~~~
2026-10-23T17:26:40.7611043Z
2026-10-23T17:26:40.7611400Z 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-23T17:26:40.7611402Z
2026-10-23T17:26:40.7611483Z 4502     pushCurrentBranch: (cwd, fallbackBranch, options) =>
2026-10-23T17:26:40.7611527Z          ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7611529Z
2026-10-23T17:26:40.7611849Z 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-23T17:26:40.7611854Z
2026-10-23T17:26:40.7611979Z 4504     pullCurrentBranch: (cwd) => withListRefsInvalidation(cwd, pullCurrentBranch(cwd)),
2026-10-23T17:26:40.7612021Z          ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7612023Z
2026-10-23T17:26:40.7612351Z 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-23T17:26:40.7612353Z
2026-10-23T17:26:40.7612411Z 4511     createWorktree: (input, options) =>
2026-10-23T17:26:40.7612453Z          ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7612455Z
2026-10-23T17:26:40.7612789Z 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-23T17:26:40.7612838Z
2026-10-23T17:26:40.7612898Z 4513     fetchPullRequestBranch: (input) =>
2026-10-23T17:26:40.7612944Z          ~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7612946Z
2026-10-23T17:26:40.7613280Z 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-23T17:26:40.7613282Z
2026-10-23T17:26:40.7613340Z 4517     refreshCheckedOutBranch: (input) =>
2026-10-23T17:26:40.7613384Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7613388Z
2026-10-23T17:26:40.7613700Z 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-23T17:26:40.7613704Z
2026-10-23T17:26:40.7613825Z 4519     ensureRemote: (input) => withListRefsInvalidation(input.cwd, ensureRemote(input)),
2026-10-23T17:26:40.7613867Z          ~~~~~~~~~~~~
2026-10-23T17:26:40.7613871Z
2026-10-23T17:26:40.7614180Z 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-23T17:26:40.7614182Z
2026-10-23T17:26:40.7614232Z 4522     fetchRemote: (input) =>
2026-10-23T17:26:40.7614273Z          ~~~~~~~~~~~
2026-10-23T17:26:40.7614275Z
2026-10-23T17:26:40.7614607Z 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-23T17:26:40.7614610Z
2026-10-23T17:26:40.7614667Z 4537     fetchWorktreeBaseCommit: (input) =>
2026-10-23T17:26:40.7614714Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7614716Z
2026-10-23T17:26:40.7615081Z 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-23T17:26:40.7615085Z
2026-10-23T17:26:40.7615223Z 4539     fetchRemoteBranch: (input) => withListRefsInvalidation(input.cwd, fetchRemoteBranch(input)),
2026-10-23T17:26:40.7615266Z          ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7615268Z
2026-10-23T17:26:40.7615609Z 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-23T17:26:40.7615611Z
2026-10-23T17:26:40.7615673Z 4540     fetchRemoteTrackingBranch: (input) =>
2026-10-23T17:26:40.7615719Z          ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7615723Z
2026-10-23T17:26:40.7616048Z 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-23T17:26:40.7616050Z
2026-10-23T17:26:40.7616186Z 4542     setBranchUpstream: (input) => withListRefsInvalidation(input.cwd, setBranchUpstream(input)),
2026-10-23T17:26:40.7616230Z          ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7616232Z
2026-10-23T17:26:40.7616547Z 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-23T17:26:40.7616550Z
2026-10-23T17:26:40.7616675Z 4543     removeWorktree: (input) => withListRefsInvalidation(input.cwd, removeWorktree(input)),
2026-10-23T17:26:40.7616717Z          ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7616773Z
2026-10-23T17:26:40.7617091Z 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-23T17:26:40.7617093Z
2026-10-23T17:26:40.7617220Z 4544     pruneWorktrees: (input) => withListRefsInvalidation(input.cwd, pruneWorktrees(input)),
2026-10-23T17:26:40.7617262Z          ~~~~~~~~~~~~~~
2026-10-23T17:26:40.7617265Z
2026-10-23T17:26:40.7617583Z 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-23T17:26:40.7617587Z
2026-10-23T17:26:40.7617720Z 4545     deleteLocalBranch: (input) => withListRefsInvalidation(input.cwd, deleteLocalBranch(input)),
2026-10-23T17:26:40.7617764Z          ~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7617766Z
2026-10-23T17:26:40.7618082Z 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-23T17:26:40.7618084Z
2026-10-23T17:26:40.7618202Z 4546     renameBranch: (input) => withListRefsInvalidation(input.cwd, renameBranch(input)),
2026-10-23T17:26:40.7618244Z          ~~~~~~~~~~~~
2026-10-23T17:26:40.7618246Z
2026-10-23T17:26:40.7618554Z 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-23T17:26:40.7618556Z
2026-10-23T17:26:40.7618683Z 4547     createRef: (input) => withListRefsInvalidation(input.cwd, createRef(input)),
2026-10-23T17:26:40.7618726Z          ~~~~~~~~~
2026-10-23T17:26:40.7618729Z
2026-10-23T17:26:40.7619034Z 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-23T17:26:40.7619039Z
2026-10-23T17:26:40.7619191Z 4548     switchRef: (input) => withListRefsInvalidation(input.cwd, switchRef(input)),
2026-10-23T17:26:40.7619233Z          ~~~~~~~~~
2026-10-23T17:26:40.7619236Z
2026-10-23T17:26:40.7619620Z 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-23T17:26:40.7619622Z
2026-10-23T17:26:40.7619691Z 153     return serverSettings.getSettings.pipe(
2026-10-23T17:26:40.7619732Z         ~~~~~~
2026-10-23T17:26:40.7619734Z
2026-10-23T17:26:40.7620039Z 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-23T17:26:40.7620044Z
2026-10-23T17:26:40.7620127Z 171       }).pipe(Effect.catch(() => Effect.succeed(undefined)));
2026-10-23T17:26:40.7620174Z                   ~~~~~~~~~~~~
2026-10-23T17:26:40.7620176Z
2026-10-23T17:26:40.7620453Z 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-23T17:26:40.7620456Z
2026-10-23T17:26:40.7620533Z 171       }).pipe(Effect.catch(() => Effect.succeed(undefined)));
2026-10-23T17:26:40.7620593Z                                      ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7620595Z
2026-10-23T17:26:40.7620831Z 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-23T17:26:40.7620881Z
2026-10-23T17:26:40.7620980Z 401           resolveFileManagerRevealKind: () => Effect.succeed(undefined),
2026-10-23T17:26:40.7621045Z                                                   ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T17:26:40.7621048Z
2026-10-23T17:26:40.7621330Z 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-23T17:26:40.7621332Z
2026-10-23T17:26:40.7621392Z 1384         return yield* Option.match(project, {
2026-10-23T17:26:40.7621441Z                            ~~~~~~~~~~~~
2026-10-23T17:26:40.7621443Z
2026-10-23T17:26:40.7621746Z 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-23T17:26:40.7621748Z
2026-10-23T17:26:40.7621805Z 2319                 return yield* Effect.fail(
2026-10-23T17:26:40.7621854Z                             ~~~~~
2026-10-23T17:26:40.7621856Z
2026-10-23T17:26:40.7622151Z 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-23T17:26:40.7622153Z
2026-10-23T17:26:40.7622208Z 2328                 return yield* Effect.fail(
2026-10-23T17:26:40.7622256Z                             ~~~~~
2026-10-23T17:26:40.7622258Z
2026-10-23T17:26:40.7622549Z 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-23T17:26:40.7622552Z
2026-10-23T17:26:40.7622606Z 2336                 return yield* Effect.fail(
2026-10-23T17:26:40.7622649Z                             ~~~~~
2026-10-23T17:26:40.7622652Z
2026-10-23T17:26:40.7622655Z
2026-10-23T17:26:40.7622697Z ---
2026-10-23T17:26:40.7623015Z 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-23T17:26:40.8097222Z Post job cleanup.
2026-10-23T17:26:40.8730168Z Cache hit occurred on the primary key electron-Linux-X64-854e11ddd491bd4f350eebb67a74265df119376a3984c8e153cfe5fc8ced6309, not saving cache.
2026-10-23T17:26:40.8804362Z Post job cleanup.
2026-10-23T17:26:40.8816451Z ##[start-action display=Cache full pnpm store;id=__6385c7e2-4fdd-4bb1-8715-a3eff67980c1.__actions_cache]
2026-10-23T17:26:40.9135242Z Post job cleanup.
2026-10-23T17:26:40.9784085Z Cache hit occurred on the primary key pnpm-full-v1-Linux-X64-2baa264059789b1dde4bbc8fdc5b8342f31f2fc8e6176e5c5e486efdd242b36c, not saving cache.
2026-10-23T17:26:40.9826332Z ##[end-action id=__6385c7e2-4fdd-4bb1-8715-a3eff67980c1.__actions_cache;outcome=success;conclusion=success;duration_ms=100]
2026-10-23T17:26:40.9828242Z ##[start-action display=Cache Vite+;id=__6385c7e2-4fdd-4bb1-8715-a3eff67980c1.vp_cache]
2026-10-23T17:26:40.9848166Z Post job cleanup.
2026-10-23T17:26:41.0494712Z 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-23T17:26:41.0531481Z ##[end-action id=__6385c7e2-4fdd-4bb1-8715-a3eff67980c1.vp_cache;outcome=success;conclusion=success;duration_ms=70]
2026-10-23T17:26:41.0574356Z Post job cleanup.
2026-10-23T17:26:41.1022064Z [command]/usr/local/bin/git version
2026-10-23T17:26:41.1052061Z git version 2.55.0
2026-10-23T17:26:41.1069590Z Temporarily overriding HOME='/home/runner/_work/_temp/8374baa6-be0a-4627-be0e-158bf47f5f41' before making global git config changes
2026-10-23T17:26:41.1069963Z Adding repository directory to the temporary git global config as a safe directory
2026-10-23T17:26:41.1072710Z [command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
2026-10-23T17:26:41.1095249Z Removing SSH command configuration
2026-10-23T17:26:41.1098170Z [command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-10-23T17:26:41.1121480Z [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-23T17:26:41.1263243Z fatal: No url found for submodule path '.repos/alchemy-effect/submodules/distilled' in .gitmodules
2026-10-23T17:26:41.1285512Z ##[warning]The process '/usr/local/bin/git' failed with exit code 128
2026-10-23T17:26:41.1335110Z A job completed hook has been configured by the self-hosted runner administrator
2026-10-23T17:26:41.1348343Z ##[group]Run '/job_completed.sh'
2026-10-23T17:26:41.1353967Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
2026-10-23T17:26:41.1354144Z env:
2026-10-23T17:26:41.1354257Z   BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 304
2026-10-23T17:26:41.1354410Z   BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 440
2026-10-23T17:26:41.1354566Z   BLACKSMITH_CHECK_RUN_ID: 120556090409
2026-10-23T17:26:41.1354723Z   BLACKSMITH_JOB_DISPLAY_NAME: Build and Typecheck
2026-10-23T17:26:41.1354880Z   GITHUB_ACTIONS_CACHE_MODE: write
2026-10-23T17:26:41.1355014Z ##[endgroup]
2026-10-23T17:26:41.1435085Z Docker container cache not activated, skipping hash computation.
2026-10-23T17:26:41.1658392Z No active SSH sessions detected. Proceeding with shutdown immediately.
2026-10-23T17:26:41.1696807Z Cleaning up orphan processes