GitHub check

256 KB of 523 KB loaded Download the full log (523 KB)
267 KB of earlier output not loaded
li.ts:389:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AzureDevOpsCli.listPullRequests")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4509825Z
2026-10-23T11:12:09.4509894Z 389     listPullRequests: (input) =>
2026-10-23T11:12:09.4510067Z         ~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4510155Z
2026-10-23T11:12:09.4510555Z src/server/AzureDevOpsCli.ts:429:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AzureDevOpsCli.getPullRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4511000Z
2026-10-23T11:12:09.4511069Z 429     getPullRequest: (input) =>
2026-10-23T11:12:09.4511288Z         ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4511378Z
2026-10-23T11:12:09.4511827Z src/server/AzureDevOpsCli.ts:463:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AzureDevOpsCli.getRepositoryCloneUrls")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4512309Z
2026-10-23T11:12:09.4512387Z 463     getRepositoryCloneUrls: (input) =>
2026-10-23T11:12:09.4512573Z         ~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4512670Z
2026-10-23T11:12:09.4513069Z src/server/AzureDevOpsCli.ts:479:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AzureDevOpsCli.createRepository")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4513519Z
2026-10-23T11:12:09.4513589Z 479     createRepository: (input) => {
2026-10-23T11:12:09.4513759Z         ~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4513848Z
2026-10-23T11:12:09.4514249Z src/server/AzureDevOpsCli.ts:504:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AzureDevOpsCli.createPullRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4514693Z
2026-10-23T11:12:09.4514766Z 504     createPullRequest: (input) =>
2026-10-23T11:12:09.4514940Z         ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4515031Z
2026-10-23T11:12:09.4515426Z src/server/AzureDevOpsCli.ts:524:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AzureDevOpsCli.getDefaultBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4515874Z
2026-10-23T11:12:09.4515943Z 524     getDefaultBranch: (input) =>
2026-10-23T11:12:09.4516110Z         ~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4516198Z
2026-10-23T11:12:09.4516606Z src/server/AzureDevOpsCli.ts:535:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AzureDevOpsCli.checkoutPullRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4517065Z
2026-10-23T11:12:09.4517134Z 535     checkoutPullRequest: (input) =>
2026-10-23T11:12:09.4517317Z         ~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4517411Z
2026-10-23T11:12:09.4517851Z src/server/AzureDevOpsPullRequestCli.ts:488:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AzureDevOpsPullRequestCli.getViewer")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4518341Z
2026-10-23T11:12:09.4518407Z 488     getViewer: (input) =>
2026-10-23T11:12:09.4518565Z         ~~~~~~~~~
2026-10-23T11:12:09.4518647Z
2026-10-23T11:12:09.4519101Z src/server/AzureDevOpsPullRequestCli.ts:542:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AzureDevOpsPullRequestCli.listPullRequests")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4519612Z
2026-10-23T11:12:09.4519680Z 542     listPullRequests: (input) =>
2026-10-23T11:12:09.4519857Z         ~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4519946Z
2026-10-23T11:12:09.4520395Z src/server/AzureDevOpsPullRequestCli.ts:555:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AzureDevOpsPullRequestCli.getPullRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4520984Z
2026-10-23T11:12:09.4521052Z 555     getPullRequest: (input) =>
2026-10-23T11:12:09.4521214Z         ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4521304Z
2026-10-23T11:12:09.4521777Z src/server/AzureDevOpsPullRequestCli.ts:586:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AzureDevOpsPullRequestCli.listThreads")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4522296Z
2026-10-23T11:12:09.4522360Z 586     listThreads: (input) =>
2026-10-23T11:12:09.4522523Z         ~~~~~~~~~~~
2026-10-23T11:12:09.4522605Z
2026-10-23T11:12:09.4523105Z src/server/AzureDevOpsPullRequestCli.ts:596:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AzureDevOpsPullRequestCli.listIterations")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4523599Z
2026-10-23T11:12:09.4523666Z 596     listIterations: (input) =>
2026-10-23T11:12:09.4523829Z         ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4523921Z
2026-10-23T11:12:09.4524377Z src/server/AzureDevOpsPullRequestCli.ts:606:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AzureDevOpsPullRequestCli.listIterationChanges")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4524886Z
2026-10-23T11:12:09.4524958Z 606     listIterationChanges: (input) => {
2026-10-23T11:12:09.4525143Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4525240Z
2026-10-23T11:12:09.4525686Z src/server/AzureDevOpsPullRequestCli.ts:633:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AzureDevOpsPullRequestCli.readItemContent")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4526188Z
2026-10-23T11:12:09.4526258Z 633     readItemContent: (input) =>
2026-10-23T11:12:09.4526428Z         ~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4526517Z
2026-10-23T11:12:09.4527141Z src/server/AzureDevOpsPullRequestCli.ts:656:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AzureDevOpsPullRequestCli.setPullRequestReviewers")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4527666Z
2026-10-23T11:12:09.4527744Z 656     setPullRequestReviewers: (input) =>
2026-10-23T11:12:09.4527929Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4528028Z
2026-10-23T11:12:09.4528488Z src/server/AzureDevOpsPullRequestCli.ts:681:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AzureDevOpsPullRequestCli.runPullRequestAction")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4529000Z
2026-10-23T11:12:09.4529077Z 681     runPullRequestAction: (input) =>
2026-10-23T11:12:09.4529259Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4529352Z
2026-10-23T11:12:09.4529799Z src/server/AzureDevOpsPullRequestCli.ts:700:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AzureDevOpsPullRequestCli.updatePullRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4530304Z
2026-10-23T11:12:09.4530376Z 700     updatePullRequest: (input) =>
2026-10-23T11:12:09.4530549Z         ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4530641Z
2026-10-23T11:12:09.4531172Z src/server/AzureDevOpsSourceControlProvider.ts:81:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.listChangeRequests")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4531782Z
2026-10-23T11:12:09.4531881Z 81     listChangeRequests: (input) => {
2026-10-23T11:12:09.4532059Z        ~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4532149Z
2026-10-23T11:12:09.4532665Z src/server/AzureDevOpsSourceControlProvider.ts:109:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4533332Z
2026-10-23T11:12:09.4533400Z 109     getChangeRequest: (input) =>
2026-10-23T11:12:09.4533571Z         ~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4533661Z
2026-10-23T11:12:09.4534183Z src/server/AzureDevOpsSourceControlProvider.ts:127:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.createChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4534760Z
2026-10-23T11:12:09.4534830Z 127     createChangeRequest: (input) => {
2026-10-23T11:12:09.4535012Z         ~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4535109Z
2026-10-23T11:12:09.4535706Z src/server/AzureDevOpsSourceControlProvider.ts:156:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getRepositoryCloneUrls")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4536295Z
2026-10-23T11:12:09.4536375Z 156     getRepositoryCloneUrls: (input) =>
2026-10-23T11:12:09.4536556Z         ~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4536659Z
2026-10-23T11:12:09.4537173Z src/server/AzureDevOpsSourceControlProvider.ts:173:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.createRepository")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4537738Z
2026-10-23T11:12:09.4537804Z 173     createRepository: (input) =>
2026-10-23T11:12:09.4537975Z         ~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4538065Z
2026-10-23T11:12:09.4538575Z src/server/AzureDevOpsSourceControlProvider.ts:190:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getDefaultBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4539146Z
2026-10-23T11:12:09.4539217Z 190     getDefaultBranch: (input) =>
2026-10-23T11:12:09.4539384Z         ~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4539473Z
2026-10-23T11:12:09.4539998Z src/server/AzureDevOpsSourceControlProvider.ts:204:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.checkoutChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4540582Z
2026-10-23T11:12:09.4540657Z 204     checkoutChangeRequest: (input) =>
2026-10-23T11:12:09.4540835Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4540933Z
2026-10-23T11:12:09.4540936Z
2026-10-23T11:12:09.4541010Z ~/packages/provider-pi$ tsc --noEmit
2026-10-23T11:12:09.4541628Z 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-23T11:12:09.4542270Z
2026-10-23T11:12:09.4542340Z 340     getChangeRequest: (input) =>
2026-10-23T11:12:09.4542510Z         ~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4542599Z
2026-10-23T11:12:09.4542602Z
2026-10-23T11:12:09.4542679Z ~/packages/provider-muse$ tsc --noEmit
2026-10-23T11:12:09.4543212Z 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-23T11:12:09.4543684Z
2026-10-23T11:12:09.4543810Z 440     getCapabilities: () => Effect.succeed(PiProviderCapabilitiesV2),
2026-10-23T11:12:09.4544047Z         ~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4544137Z
2026-10-23T11:12:09.4544576Z 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-23T11:12:09.4545067Z
2026-10-23T11:12:09.4545227Z 441     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-23T11:12:09.4545569Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4545666Z
2026-10-23T11:12:09.4545954Z src/server/adapter.ts:1694:31 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T11:12:09.4546292Z
2026-10-23T11:12:09.4546383Z 1694                               Effect.map(Option.some),
2026-10-23T11:12:09.4546593Z                                    ~~~~~~~~~~
2026-10-23T11:12:09.4546713Z
2026-10-23T11:12:09.4547054Z src/server/adapter.ts:1697:29 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4547384Z
2026-10-23T11:12:09.4547474Z 1697                           : Effect.succeed(Option.none()),
2026-10-23T11:12:09.4547685Z                                  ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4547803Z
2026-10-23T11:12:09.4548126Z 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-23T11:12:09.4548503Z
2026-10-23T11:12:09.4548568Z 334       onSuccess: () =>
2026-10-23T11:12:09.4548716Z           ~~~~~~~~~
2026-10-23T11:12:09.4548797Z
2026-10-23T11:12:09.4549068Z src/server/rpc.ts:342:17 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T11:12:09.4549392Z
2026-10-23T11:12:09.4549464Z 342                 Effect.map(Option.some),
2026-10-23T11:12:09.4549649Z                     ~~~~~~~~~~
2026-10-23T11:12:09.4549745Z
2026-10-23T11:12:09.4549747Z
2026-10-23T11:12:09.4549829Z ~/packages/provider-opencode$ tsc --noEmit
2026-10-23T11:12:09.4550388Z 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-23T11:12:09.4550868Z
2026-10-23T11:12:09.4550936Z 174       Effect.flatMap((snapshot) =>
2026-10-23T11:12:09.4551111Z           ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4551198Z
2026-10-23T11:12:09.4551513Z 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-23T11:12:09.4551984Z
2026-10-23T11:12:09.4552075Z 1507       }).pipe(Effect.catch(() => Effect.void));
2026-10-23T11:12:09.4552270Z                    ~~~~~~~~~~~~
2026-10-23T11:12:09.4552369Z
2026-10-23T11:12:09.4552704Z 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-23T11:12:09.4553093Z
2026-10-23T11:12:09.4553174Z 1507       }).pipe(Effect.catch(() => Effect.void));
2026-10-23T11:12:09.4553365Z                    ~~~~~~~~~~~~
2026-10-23T11:12:09.4553459Z
2026-10-23T11:12:09.4553915Z 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-23T11:12:09.4554423Z
2026-10-23T11:12:09.4554499Z 1588             Effect.catchCause((cause) =>
2026-10-23T11:12:09.4554682Z                  ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4554787Z
2026-10-23T11:12:09.4554790Z
2026-10-23T11:12:09.4554867Z ~/packages/provider-cursor$ tsc --noEmit
2026-10-23T11:12:09.4555406Z 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-23T11:12:09.4555870Z
2026-10-23T11:12:09.4555996Z 284     getCapabilities: () => Effect.succeed(MuseProviderCapabilitiesV2),
2026-10-23T11:12:09.4556233Z         ~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4556391Z
2026-10-23T11:12:09.4556828Z 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-23T11:12:09.4557314Z
2026-10-23T11:12:09.4557467Z 285     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-23T11:12:09.4557739Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4557835Z
2026-10-23T11:12:09.4558248Z 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-23T11:12:09.4558645Z
2026-10-23T11:12:09.4558715Z 388             TimeoutError: (cause) =>
2026-10-23T11:12:09.4558885Z                 ~~~~~~~~~~~~
2026-10-23T11:12:09.4558982Z
2026-10-23T11:12:09.4559264Z src/server/adapter.ts:1366:35 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T11:12:09.4559601Z
2026-10-23T11:12:09.4559763Z 1366                   wake === held ? Effect.map(dispatch, Option.some) : Effect.succeed(Option.none()),
2026-10-23T11:12:09.4560045Z                                        ~~~~~~~~~~
2026-10-23T11:12:09.4560166Z
2026-10-23T11:12:09.4560437Z src/server/adapter.ts:1366:71 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4560757Z
2026-10-23T11:12:09.4560914Z 1366                   wake === held ? Effect.map(dispatch, Option.some) : Effect.succeed(Option.none()),
2026-10-23T11:12:09.4561216Z                                                                            ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4561371Z
2026-10-23T11:12:09.4561374Z
2026-10-23T11:12:09.4561462Z ~/packages/provider-acp-registry$ tsc --noEmit
2026-10-23T11:12:09.4562113Z 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-23T11:12:09.4562608Z
2026-10-23T11:12:09.4562699Z 31       read: (credentialSource, sinceMs, untilMs) =>
2026-10-23T11:12:09.4562903Z          ~~~~
2026-10-23T11:12:09.4562977Z
2026-10-23T11:12:09.4563351Z 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-23T11:12:09.4563776Z
2026-10-23T11:12:09.4563840Z 82     read: (apiKey) =>
2026-10-23T11:12:09.4563986Z        ~~~~
2026-10-23T11:12:09.4564059Z
2026-10-23T11:12:09.4564424Z 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-23T11:12:09.4564839Z
2026-10-23T11:12:09.4564904Z 360     Effect.catch(() =>
2026-10-23T11:12:09.4565051Z         ~~~~~~~~~~~~
2026-10-23T11:12:09.4565133Z
2026-10-23T11:12:09.4565549Z 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-23T11:12:09.4566018Z
2026-10-23T11:12:09.4566156Z 904     getCapabilities: () => Effect.succeed(CursorProviderCapabilitiesV2),
2026-10-23T11:12:09.4566398Z         ~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4566488Z
2026-10-23T11:12:09.4567047Z 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-23T11:12:09.4567524Z
2026-10-23T11:12:09.4567678Z 905     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-23T11:12:09.4568041Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4568136Z
2026-10-23T11:12:09.4568712Z 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-23T11:12:09.4569332Z
2026-10-23T11:12:09.4569400Z 55       Effect.runPromise(
2026-10-23T11:12:09.4569553Z          ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4569644Z
2026-10-23T11:12:09.4570048Z 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-23T11:12:09.4570441Z
2026-10-23T11:12:09.4570523Z 59               onNone: () => Effect.succeed(undefined),
2026-10-23T11:12:09.4570737Z                                ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4570862Z
2026-10-23T11:12:09.4571428Z 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-23T11:12:09.4572128Z
2026-10-23T11:12:09.4572195Z 69       Effect.runPromise(
2026-10-23T11:12:09.4572350Z          ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4572440Z
2026-10-23T11:12:09.4573012Z 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-23T11:12:09.4573638Z
2026-10-23T11:12:09.4573732Z 82     clear: () => Effect.runPromise(credentials.remove),
2026-10-23T11:12:09.4573943Z                     ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4574054Z
2026-10-23T11:12:09.4574476Z 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-23T11:12:09.4574944Z
2026-10-23T11:12:09.4575020Z 228           Effect.flatMap((snapshot) =>
2026-10-23T11:12:09.4575198Z               ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4575291Z
2026-10-23T11:12:09.4575542Z src/server/usageLimits.test.ts:74:5 - suggestion TS377017: This Effect.gen contains a single return statement. effect(unnecessaryEffectGen)
2026-10-23T11:12:09.4575842Z
2026-10-23T11:12:09.4575909Z  74     Effect.gen(function* () {
2026-10-23T11:12:09.4576074Z         ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4576238Z  75       yield* withNodeServices(
2026-10-23T11:12:09.4576407Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4576561Z ...
2026-10-23T11:12:09.4576696Z 115       );
2026-10-23T11:12:09.4576825Z     ~~~~~~~~
2026-10-23T11:12:09.4576952Z 116     }),
2026-10-23T11:12:09.4577076Z     ~~~~~~
2026-10-23T11:12:09.4577148Z
2026-10-23T11:12:09.4577151Z
2026-10-23T11:12:09.4577225Z ~/packages/client-runtime$ tsc --noEmit
2026-10-23T11:12:09.4577694Z 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-23T11:12:09.4578102Z
2026-10-23T11:12:09.4578176Z 147     return Effect.succeed(undefined);
2026-10-23T11:12:09.4578356Z                ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4578467Z
2026-10-23T11:12:09.4578969Z 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-23T11:12:09.4579592Z
2026-10-23T11:12:09.4579670Z 188       if (!recordable) return Effect.void;
2026-10-23T11:12:09.4579861Z                            ~~~~~~
2026-10-23T11:12:09.4579960Z
2026-10-23T11:12:09.4580462Z 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-23T11:12:09.4581004Z
2026-10-23T11:12:09.4581069Z 208         return Effect.void;
2026-10-23T11:12:09.4581224Z             ~~~~~~
2026-10-23T11:12:09.4581307Z
2026-10-23T11:12:09.4581931Z 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-23T11:12:09.4582479Z
2026-10-23T11:12:09.4582536Z 228       return fs
2026-10-23T11:12:09.4582674Z           ~~~~~~
2026-10-23T11:12:09.4582749Z
2026-10-23T11:12:09.4583139Z 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-23T11:12:09.4583578Z
2026-10-23T11:12:09.4583718Z 311   OpenCodeServerLedger.of({ track: () => Effect.succeed(Effect.void) }),
2026-10-23T11:12:09.4583967Z                                 ~~~~~
2026-10-23T11:12:09.4584080Z
2026-10-23T11:12:09.4584478Z 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-23T11:12:09.4584929Z
2026-10-23T11:12:09.4584991Z 169     withServer: (use) =>
2026-10-23T11:12:09.4585145Z         ~~~~~~~~~~
2026-10-23T11:12:09.4585231Z
2026-10-23T11:12:09.4585730Z 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-23T11:12:09.4586280Z
2026-10-23T11:12:09.4586430Z 103 const OPENCODE_TEST_SETTINGS = Schema.decodeUnknownSync(OpenCodeSettings)({});
2026-10-23T11:12:09.4586707Z                                           ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4586841Z
2026-10-23T11:12:09.4587255Z 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-23T11:12:09.4587721Z
2026-10-23T11:12:09.4587861Z 938     getCapabilities: () => Effect.succeed(OpenCodeProviderCapabilitiesV2),
2026-10-23T11:12:09.4588108Z         ~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4588201Z
2026-10-23T11:12:09.4588635Z 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-23T11:12:09.4589121Z
2026-10-23T11:12:09.4589278Z 939     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-23T11:12:09.4589549Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4589645Z
2026-10-23T11:12:09.4590024Z 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-23T11:12:09.4590445Z
2026-10-23T11:12:09.4590542Z 1011         const abortController = new AbortController();
2026-10-23T11:12:09.4590760Z                                      ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4590890Z
2026-10-23T11:12:09.4591303Z 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-23T11:12:09.4591915Z
2026-10-23T11:12:09.4592013Z 1088           if (failure) return yield* Effect.fail(failure);
2026-10-23T11:12:09.4592231Z                                    ~~~~~
2026-10-23T11:12:09.4592338Z
2026-10-23T11:12:09.4592697Z 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-23T11:12:09.4593108Z
2026-10-23T11:12:09.4593271Z 1584               Effect.catch(() => Effect.succeed(undefined)),
2026-10-23T11:12:09.4593480Z                    ~~~~~~~~~~~~
2026-10-23T11:12:09.4593576Z
2026-10-23T11:12:09.4593905Z 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-23T11:12:09.4594288Z
2026-10-23T11:12:09.4594387Z 1584               Effect.catch(() => Effect.succeed(undefined)),
2026-10-23T11:12:09.4594611Z                                       ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4594743Z
2026-10-23T11:12:09.4595120Z 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-23T11:12:09.4595552Z
2026-10-23T11:12:09.4595661Z 3194                 admissionAbortController: new AbortController(),
2026-10-23T11:12:09.4595897Z                                                ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4596030Z
2026-10-23T11:12:09.4596400Z 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-23T11:12:09.4596830Z
2026-10-23T11:12:09.4596944Z 3354               turn.admissionAbortController = new AbortController();
2026-10-23T11:12:09.4597194Z                                                    ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4597330Z
2026-10-23T11:12:09.4597698Z 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-23T11:12:09.4598122Z
2026-10-23T11:12:09.4598202Z 158     connect: ({ baseUrl, password }) => {
2026-10-23T11:12:09.4598386Z         ~~~~~~~
2026-10-23T11:12:09.4598465Z
2026-10-23T11:12:09.4598854Z 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-23T11:12:09.4599296Z
2026-10-23T11:12:09.4599365Z 160       withConnection: (use) =>
2026-10-23T11:12:09.4599536Z           ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4599629Z
2026-10-23T11:12:09.4600018Z 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-23T11:12:09.4600458Z
2026-10-23T11:12:09.4600530Z 175     withConnection: (use) =>
2026-10-23T11:12:09.4600691Z         ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4600780Z
2026-10-23T11:12:09.4601067Z src/server/v2/adapter.ts:1544:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4601398Z
2026-10-23T11:12:09.4601560Z 1544           wake.dropped ? Effect.succeed(Option.none()) : Effect.map(dispatch, Option.some),
2026-10-23T11:12:09.4601905Z                               ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4602025Z
2026-10-23T11:12:09.4602313Z src/server/v2/adapter.ts:1544:58 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T11:12:09.4602718Z
2026-10-23T11:12:09.4602875Z 1544           wake.dropped ? Effect.succeed(Option.none()) : Effect.map(dispatch, Option.some),
2026-10-23T11:12:09.4603166Z                                                               ~~~~~~~~~~
2026-10-23T11:12:09.4603299Z
2026-10-23T11:12:09.4603724Z 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-23T11:12:09.4604200Z
2026-10-23T11:12:09.4604406Z 4137     getCapabilities: () => Effect.succeed(OpenCode2ProviderCapabilities),
2026-10-23T11:12:09.4604651Z          ~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4604740Z
2026-10-23T11:12:09.4605183Z 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-23T11:12:09.4605675Z
2026-10-23T11:12:09.4605831Z 4138     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-23T11:12:09.4606105Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4606203Z
2026-10-23T11:12:09.4606209Z
2026-10-23T11:12:09.4606539Z src/server/AcpRegistryRuntimeCoordinator.ts:154:52 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T11:12:09.4607008Z
2026-10-23T11:12:09.4607187Z 154         return yield* Effect.raceFirst(effect.pipe(Effect.map(Option.some)), foregroundStarted);
2026-10-23T11:12:09.4607488Z                                                        ~~~~~~~~~~
2026-10-23T11:12:09.4607621Z
2026-10-23T11:12:09.4608052Z 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-23T11:12:09.4608524Z
2026-10-23T11:12:09.4608591Z 1301         Effect.catch((error) =>
2026-10-23T11:12:09.4608762Z              ~~~~~~~~~~~~
2026-10-23T11:12:09.4608854Z
2026-10-23T11:12:09.4609228Z 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-23T11:12:09.4609656Z
2026-10-23T11:12:09.4609726Z 146             Option.isSome(result)
2026-10-23T11:12:09.4609899Z                 ~~~~~~~~~~~~~
2026-10-23T11:12:09.4610000Z
2026-10-23T11:12:09.4610329Z 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-23T11:12:09.4610705Z
2026-10-23T11:12:09.4610831Z 640       enrichSnapshot: ({ snapshot, getSnapshot, publishSnapshot }) => {
2026-10-23T11:12:09.4611076Z           ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4611165Z
2026-10-23T11:12:09.4611436Z src/server/driver.ts:650:51 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T11:12:09.4611854Z
2026-10-23T11:12:09.4611989Z 650             : enrichProviderCached(snapshot).pipe(Effect.map(Option.some))
2026-10-23T11:12:09.4612241Z                                                       ~~~~~~~~~~
2026-10-23T11:12:09.4612371Z
2026-10-23T11:12:09.4612373Z
2026-10-23T11:12:09.4612669Z src/authorization/remote.test.ts:232:25 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4613013Z
2026-10-23T11:12:09.4613151Z 232               identity: Effect.succeed(Option.some({ accountId: "user_connect" })),
2026-10-23T11:12:09.4613400Z                             ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4613607Z
2026-10-23T11:12:09.4613898Z src/authorization/remote.test.ts:237:17 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4614235Z
2026-10-23T11:12:09.4614328Z 237             id: Effect.succeed(Option.some("device-1")),
2026-10-23T11:12:09.4614535Z                     ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4614637Z
2026-10-23T11:12:09.4615063Z 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-23T11:12:09.4615601Z
2026-10-23T11:12:09.4615670Z 553     authorizeDpop: (input) =>
2026-10-23T11:12:09.4615832Z         ~~~~~~~~~~~~~
2026-10-23T11:12:09.4615918Z
2026-10-23T11:12:09.4616348Z 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-23T11:12:09.4616836Z
2026-10-23T11:12:09.4616906Z 555     authorizeDpopHttp: (input) =>
2026-10-23T11:12:09.4617078Z         ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4617165Z
2026-10-23T11:12:09.4617577Z 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-23T11:12:09.4618048Z
2026-10-23T11:12:09.4618107Z 138       get: (entry) =>
2026-10-23T11:12:09.4618245Z           ~~~
2026-10-23T11:12:09.4618324Z
2026-10-23T11:12:09.4618756Z 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-23T11:12:09.4619241Z
2026-10-23T11:12:09.4619310Z 143       set: (entry, permission) => {
2026-10-23T11:12:09.4619479Z           ~~~
2026-10-23T11:12:09.4619550Z
2026-10-23T11:12:09.4619982Z 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-23T11:12:09.4620469Z
2026-10-23T11:12:09.4620536Z 159       forget: (environmentId) =>
2026-10-23T11:12:09.4620700Z           ~~~~~~
2026-10-23T11:12:09.4620778Z
2026-10-23T11:12:09.4621182Z 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-23T11:12:09.4621634Z
2026-10-23T11:12:09.4621701Z 298     registerPairing: (input) =>
2026-10-23T11:12:09.4621938Z         ~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4622023Z
2026-10-23T11:12:09.4622418Z 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-23T11:12:09.4622862Z
2026-10-23T11:12:09.4622927Z 304     registerSsh: (input) =>
2026-10-23T11:12:09.4623090Z         ~~~~~~~~~~~
2026-10-23T11:12:09.4623173Z
2026-10-23T11:12:09.4623570Z 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-23T11:12:09.4624018Z
2026-10-23T11:12:09.4624087Z 309     updateBearer: (input) =>
2026-10-23T11:12:09.4624250Z         ~~~~~~~~~~~~
2026-10-23T11:12:09.4624336Z
2026-10-23T11:12:09.4624687Z 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-23T11:12:09.4625151Z
2026-10-23T11:12:09.4625226Z 1392             ? Effect.succeed(undefined)
2026-10-23T11:12:09.4625414Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4625528Z
2026-10-23T11:12:09.4625872Z 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-23T11:12:09.4626270Z
2026-10-23T11:12:09.4626340Z 1476             ? Effect.succeed(undefined)
2026-10-23T11:12:09.4626518Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4626627Z
2026-10-23T11:12:09.4627016Z 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-23T11:12:09.4627411Z
2026-10-23T11:12:09.4627497Z 1489                     : Effect.succeed(undefined),
2026-10-23T11:12:09.4627700Z                            ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4627827Z
2026-10-23T11:12:09.4628149Z src/platform/orchestrationCache.test.ts:104:15 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T11:12:09.4628515Z
2026-10-23T11:12:09.4628587Z 104       }).pipe(Effect.map(Option.some));
2026-10-23T11:12:09.4628769Z                   ~~~~~~~~~~
2026-10-23T11:12:09.4628864Z
2026-10-23T11:12:09.4629349Z 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-23T11:12:09.4629880Z
2026-10-23T11:12:09.4629999Z 72       load: (prepared: PreparedConnection, threadId: ThreadId) => {
2026-10-23T11:12:09.4630216Z          ~~~~
2026-10-23T11:12:09.4630293Z
2026-10-23T11:12:09.4630669Z 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-23T11:12:09.4631095Z
2026-10-23T11:12:09.4631226Z 56             Effect.catch(() => Effect.succeed(Option.none<AuthSessionState>())),
2026-10-23T11:12:09.4631463Z                ~~~~~~~~~~~~
2026-10-23T11:12:09.4631557Z
2026-10-23T11:12:09.4632062Z 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-23T11:12:09.4632549Z
2026-10-23T11:12:09.4632621Z 62             return yield* Effect.fail(
2026-10-23T11:12:09.4632796Z                       ~~~~~
2026-10-23T11:12:09.4632887Z
2026-10-23T11:12:09.4633267Z 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-23T11:12:09.4633699Z
2026-10-23T11:12:09.4633823Z 57     execute: (target: OutdatedServerUpdateTarget, atomRegistry) => {
2026-10-23T11:12:09.4634048Z        ~~~~~~~
2026-10-23T11:12:09.4634128Z
2026-10-23T11:12:09.4634539Z 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-23T11:12:09.4634996Z
2026-10-23T11:12:09.4635069Z 90       load: (prepared, input) =>
2026-10-23T11:12:09.4635234Z          ~~~~
2026-10-23T11:12:09.4635305Z
2026-10-23T11:12:09.4635832Z 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-23T11:12:09.4636460Z
2026-10-23T11:12:09.4636595Z 34       return yield* Schema.decodeUnknownEffect(codec)(stored.value).pipe(
2026-10-23T11:12:09.4636847Z                               ~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4636973Z
2026-10-23T11:12:09.4637267Z src/state/queryPersistence.ts:35:9 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T11:12:09.4637612Z
2026-10-23T11:12:09.4637676Z 35         Effect.map(Option.some),
2026-10-23T11:12:09.4637845Z            ~~~~~~~~~~
2026-10-23T11:12:09.4637928Z
2026-10-23T11:12:09.4638331Z 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-23T11:12:09.4638725Z
2026-10-23T11:12:09.4638803Z 680     execute: (target, atomRegistry) => {
2026-10-23T11:12:09.4638982Z         ~~~~~~~
2026-10-23T11:12:09.4639060Z
2026-10-23T11:12:09.4639497Z 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-23T11:12:09.4639974Z
2026-10-23T11:12:09.4640046Z 1125           Effect.flatMap((summary) =>
2026-10-23T11:12:09.4640230Z                ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4640326Z
2026-10-23T11:12:09.4640617Z src/state/shell-sync.test.ts:90:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4640950Z
2026-10-23T11:12:09.4641045Z 90         loadShell: () => Effect.succeed(Option.none()),
2026-10-23T11:12:09.4641251Z                             ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4641366Z
2026-10-23T11:12:09.4641654Z src/state/shell-sync.test.ts:96:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4642051Z
2026-10-23T11:12:09.4642142Z 96         loadThread: () => Effect.succeed(Option.none()),
2026-10-23T11:12:09.4642352Z                              ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4642464Z
2026-10-23T11:12:09.4642750Z src/state/shell-sync.test.ts:99:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4643088Z
2026-10-23T11:12:09.4643195Z 99         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-23T11:12:09.4643415Z                                    ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4643537Z
2026-10-23T11:12:09.4643822Z src/state/shell-sync.test.ts:101:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4644158Z
2026-10-23T11:12:09.4644252Z 101         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-23T11:12:09.4644467Z                                ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4644587Z
2026-10-23T11:12:09.4644867Z src/state/shell-sync.test.ts:108:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4645204Z
2026-10-23T11:12:09.4645292Z 108         load: () => Effect.succeed(Option.none()),
2026-10-23T11:12:09.4645488Z                         ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4645598Z
2026-10-23T11:12:09.4645882Z src/state/shell-sync.test.ts:229:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4646223Z
2026-10-23T11:12:09.4646316Z 229         loadShell: () => Effect.succeed(Option.none()),
2026-10-23T11:12:09.4646522Z                              ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4646711Z
2026-10-23T11:12:09.4646995Z src/state/shell-sync.test.ts:238:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4647436Z
2026-10-23T11:12:09.4647533Z 238         loadThread: () => Effect.succeed(Option.none()),
2026-10-23T11:12:09.4647741Z                               ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4647858Z
2026-10-23T11:12:09.4648142Z src/state/shell-sync.test.ts:241:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4648477Z
2026-10-23T11:12:09.4648585Z 241         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-23T11:12:09.4648815Z                                     ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4648940Z
2026-10-23T11:12:09.4649290Z src/state/shell-sync.test.ts:243:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4649627Z
2026-10-23T11:12:09.4649728Z 243         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-23T11:12:09.4649939Z                                ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4650061Z
2026-10-23T11:12:09.4650344Z src/state/shell-sync.test.ts:250:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4650681Z
2026-10-23T11:12:09.4650764Z 250         load: () => Effect.succeed(Option.none()),
2026-10-23T11:12:09.4650970Z                         ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4650973Z
2026-10-23T11:12:09.4651255Z src/state/shell-sync.test.ts:349:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4651258Z
2026-10-23T11:12:09.4651349Z 349         loadShell: () => Effect.succeed(Option.none()),
2026-10-23T11:12:09.4651415Z                              ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4651418Z
2026-10-23T11:12:09.4651699Z src/state/shell-sync.test.ts:355:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4651704Z
2026-10-23T11:12:09.4651868Z 355         loadThread: () => Effect.succeed(Option.none()),
2026-10-23T11:12:09.4651937Z                               ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4651940Z
2026-10-23T11:12:09.4652215Z src/state/shell-sync.test.ts:358:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4652218Z
2026-10-23T11:12:09.4652327Z 358         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-23T11:12:09.4652400Z                                     ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4652404Z
2026-10-23T11:12:09.4652690Z src/state/shell-sync.test.ts:360:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4652693Z
2026-10-23T11:12:09.4652790Z 360         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-23T11:12:09.4652855Z                                ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4652861Z
2026-10-23T11:12:09.4653140Z src/state/shell-sync.test.ts:367:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4653143Z
2026-10-23T11:12:09.4653228Z 367         load: () => Effect.succeed(Option.none()),
2026-10-23T11:12:09.4653289Z                         ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4653292Z
2026-10-23T11:12:09.4653566Z src/state/shell-sync.test.ts:446:26 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4653573Z
2026-10-23T11:12:09.4653689Z 446         loadShell: () => Effect.succeed(Option.some(cachedSnapshot)),
2026-10-23T11:12:09.4653754Z                              ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4653756Z
2026-10-23T11:12:09.4654034Z src/state/shell-sync.test.ts:448:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4654099Z
2026-10-23T11:12:09.4654193Z 448         loadThread: () => Effect.succeed(Option.none()),
2026-10-23T11:12:09.4654255Z                               ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4654258Z
2026-10-23T11:12:09.4654534Z src/state/shell-sync.test.ts:451:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4654537Z
2026-10-23T11:12:09.4654640Z 451         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-23T11:12:09.4654708Z                                     ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4654711Z
2026-10-23T11:12:09.4655051Z src/state/shell-sync.test.ts:453:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4655055Z
2026-10-23T11:12:09.4655146Z 453         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-23T11:12:09.4655213Z                                ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4655218Z
2026-10-23T11:12:09.4655494Z src/state/shell-sync.test.ts:460:21 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4655496Z
2026-10-23T11:12:09.4655596Z 460         load: () => Effect.succeed(Option.some(httpSnapshot)),
2026-10-23T11:12:09.4655654Z                         ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4655660Z
2026-10-23T11:12:09.4656051Z 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-23T11:12:09.4656055Z
2026-10-23T11:12:09.4656137Z 98       load: (prepared: PreparedConnection) =>
2026-10-23T11:12:09.4656191Z          ~~~~
2026-10-23T11:12:09.4656193Z
2026-10-23T11:12:09.4656656Z 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-23T11:12:09.4656661Z
2026-10-23T11:12:09.4656751Z 47       register: (environmentId, threadId, handler) =>
2026-10-23T11:12:09.4656803Z          ~~~~~~~~
2026-10-23T11:12:09.4656805Z
2026-10-23T11:12:09.4657228Z 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-23T11:12:09.4657231Z
2026-10-23T11:12:09.4657301Z 59       unregister: (registration) =>
2026-10-23T11:12:09.4657357Z          ~~~~~~~~~~
2026-10-23T11:12:09.4657359Z
2026-10-23T11:12:09.4657838Z 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-23T11:12:09.4657847Z
2026-10-23T11:12:09.4657952Z 74       loadEarlier: (environmentId, threadId, throughEntryId) =>
2026-10-23T11:12:09.4658010Z          ~~~~~~~~~~~
2026-10-23T11:12:09.4658013Z
2026-10-23T11:12:09.4658301Z src/state/threads-sync.test.ts:1006:29 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4658304Z
2026-10-23T11:12:09.4658414Z 1006             : { loadCached: Effect.succeed(Option.some(saved!)) },
2026-10-23T11:12:09.4658480Z                                  ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4658483Z
2026-10-23T11:12:09.4658823Z 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-23T11:12:09.4658826Z
2026-10-23T11:12:09.4658941Z 447       execute: (input: RunVcsStackedActionInput, registry) => {
2026-10-23T11:12:09.4659060Z           ~~~~~~~
2026-10-23T11:12:09.4659063Z
2026-10-23T11:12:09.4659065Z
2026-10-23T11:12:09.4659132Z ~/apps/mobile$ tsc --noEmit
2026-10-23T11:12:09.4659193Z ~/infra/relay$ tsc --noEmit
2026-10-23T11:12:09.4659259Z ~/apps/web$ tsc --noEmit
2026-10-23T11:12:09.4659317Z Result (22 files):
2026-10-23T11:12:09.4659369Z - 0 errors
2026-10-23T11:12:09.4659425Z - 0 warnings
2026-10-23T11:12:09.4659479Z - 0 hints
2026-10-23T11:12:09.4659482Z
2026-10-23T11:12:09.4659484Z
2026-10-23T11:12:09.4659549Z ~/apps/desktop$ tsc --noEmit
2026-10-23T11:12:09.4660006Z 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-23T11:12:09.4660010Z
2026-10-23T11:12:09.4660071Z 220           send: (body) =>
2026-10-23T11:12:09.4660127Z               ~~~~
2026-10-23T11:12:09.4660130Z
2026-10-23T11:12:09.4660519Z 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-23T11:12:09.4660522Z
2026-10-23T11:12:09.4660588Z 12       onFailure: (error) =>
2026-10-23T11:12:09.4660638Z          ~~~~~~~~~
2026-10-23T11:12:09.4660640Z
2026-10-23T11:12:09.4661052Z 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-23T11:12:09.4661055Z
2026-10-23T11:12:09.4661126Z 64     pauseUntil: (untilMillis) =>
2026-10-23T11:12:09.4661181Z        ~~~~~~~~~~
2026-10-23T11:12:09.4661184Z
2026-10-23T11:12:09.4661495Z 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-23T11:12:09.4661501Z
2026-10-23T11:12:09.4661558Z 198         onNone: () =>
2026-10-23T11:12:09.4661612Z             ~~~~~~
2026-10-23T11:12:09.4661615Z
2026-10-23T11:12:09.4662051Z 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-23T11:12:09.4662054Z
2026-10-23T11:12:09.4662198Z 92   fileResponse: () => Effect.die("Relay API does not serve filesystem responses"),
2026-10-23T11:12:09.4662252Z      ~~~~~~~~~~~~
2026-10-23T11:12:09.4662254Z
2026-10-23T11:12:09.4662621Z 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-23T11:12:09.4662624Z
2026-10-23T11:12:09.4662761Z 93   fileWebResponse: () => Effect.die("Relay API does not serve file responses"),
2026-10-23T11:12:09.4662819Z      ~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4662822Z
2026-10-23T11:12:09.4663147Z 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-23T11:12:09.4663150Z
2026-10-23T11:12:09.4663232Z 242       hold: ({ endpointKey, baseUrl, hook }) =>
2026-10-23T11:12:09.4663283Z           ~~~~
2026-10-23T11:12:09.4663286Z
2026-10-23T11:12:09.4663609Z 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-23T11:12:09.4663615Z
2026-10-23T11:12:09.4663689Z 244       wake: ({ endpointKey, baseUrl }) =>
2026-10-23T11:12:09.4663744Z           ~~~~
2026-10-23T11:12:09.4663747Z
2026-10-23T11:12:09.4664073Z 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-23T11:12:09.4664141Z
2026-10-23T11:12:09.4664207Z 246       clear: ({ endpointKey }) =>
2026-10-23T11:12:09.4664262Z           ~~~~~
2026-10-23T11:12:09.4664264Z
2026-10-23T11:12:09.4664665Z 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-23T11:12:09.4664668Z
2026-10-23T11:12:09.4664730Z 275               send: (body) =>
2026-10-23T11:12:09.4664785Z                   ~~~~
2026-10-23T11:12:09.4664788Z
2026-10-23T11:12:09.4664790Z
2026-10-23T11:12:09.4665238Z 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-23T11:12:09.4665241Z
2026-10-23T11:12:09.4665372Z 389     complete: (response) => Effect.sync(() => broker.complete(response)),
2026-10-23T11:12:09.4665430Z         ~~~~~~~~
2026-10-23T11:12:09.4665432Z
2026-10-23T11:12:09.4665716Z src/app/DesktopClerk.test.ts:300:27 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4665719Z
2026-10-23T11:12:09.4665826Z 300       currentMainOrFirst: Effect.succeed(Option.some(window)),
2026-10-23T11:12:09.4665892Z                               ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4665894Z
2026-10-23T11:12:09.4666250Z 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-23T11:12:09.4666253Z
2026-10-23T11:12:09.4666317Z 459     onSome: (logFile) =>
2026-10-23T11:12:09.4666369Z         ~~~~~~
2026-10-23T11:12:09.4666376Z
2026-10-23T11:12:09.4666790Z 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-23T11:12:09.4666794Z
2026-10-23T11:12:09.4666869Z 589       forInstance: (id) => makeForId(id),
2026-10-23T11:12:09.4666925Z           ~~~~~~~~~~~
2026-10-23T11:12:09.4666928Z
2026-10-23T11:12:09.4667218Z src/app/DesktopWebLinks.test.ts:29:31 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4667222Z
2026-10-23T11:12:09.4667329Z 29           currentMainOrFirst: Effect.succeed(Option.some(window)),
2026-10-23T11:12:09.4667398Z                                  ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4667400Z
2026-10-23T11:12:09.4667762Z 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-23T11:12:09.4667767Z
2026-10-23T11:12:09.4667828Z 72     receive: (url) =>
2026-10-23T11:12:09.4667881Z        ~~~~~~~
2026-10-23T11:12:09.4667885Z
2026-10-23T11:12:09.4668260Z 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-23T11:12:09.4668266Z
2026-10-23T11:12:09.4668332Z 77     setRendererReady: (ready) =>
2026-10-23T11:12:09.4668388Z        ~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4668391Z
2026-10-23T11:12:09.4668758Z 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-23T11:12:09.4668761Z
2026-10-23T11:12:09.4668823Z 1062       onSome: (run) =>
2026-10-23T11:12:09.4668873Z            ~~~~~~
2026-10-23T11:12:09.4668876Z
2026-10-23T11:12:09.4669245Z 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-23T11:12:09.4669314Z
2026-10-23T11:12:09.4669373Z 307       get: (id) =>
2026-10-23T11:12:09.4669426Z           ~~~
2026-10-23T11:12:09.4669429Z
2026-10-23T11:12:09.4669792Z 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-23T11:12:09.4669798Z
2026-10-23T11:12:09.4669962Z 342         get: (id) => Effect.succeed(Option.fromNullishOr(byId.get(id))),
2026-10-23T11:12:09.4670018Z             ~~~
2026-10-23T11:12:09.4670021Z
2026-10-23T11:12:09.4670395Z 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-23T11:12:09.4670400Z
2026-10-23T11:12:09.4670564Z 345         register: () => Effect.die("DesktopBackendPool.layerTest does not support register"),
2026-10-23T11:12:09.4670617Z             ~~~~~~~~
2026-10-23T11:12:09.4670620Z
2026-10-23T11:12:09.4671002Z 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-23T11:12:09.4671005Z
2026-10-23T11:12:09.4671173Z 346         unregister: () => Effect.die("DesktopBackendPool.layerTest does not support unregister"),
2026-10-23T11:12:09.4671228Z             ~~~~~~~~~~
2026-10-23T11:12:09.4671233Z
2026-10-23T11:12:09.4671579Z 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-23T11:12:09.4671582Z
2026-10-23T11:12:09.4671638Z 145   exit: (code) =>
2026-10-23T11:12:09.4671693Z       ~~~~
2026-10-23T11:12:09.4671696Z
2026-10-23T11:12:09.4672137Z 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-23T11:12:09.4672140Z
2026-10-23T11:12:09.4672205Z 149   relaunch: (options) =>
2026-10-23T11:12:09.4672259Z       ~~~~~~~~
2026-10-23T11:12:09.4672263Z
2026-10-23T11:12:09.4672626Z 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-23T11:12:09.4672629Z
2026-10-23T11:12:09.4672696Z 153   setPath: (name, path) =>
2026-10-23T11:12:09.4672751Z       ~~~~~~~
2026-10-23T11:12:09.4672753Z
2026-10-23T11:12:09.4673108Z 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-23T11:12:09.4673113Z
2026-10-23T11:12:09.4673175Z 157   setName: (name) =>
2026-10-23T11:12:09.4673226Z       ~~~~~~~
2026-10-23T11:12:09.4673229Z
2026-10-23T11:12:09.4673622Z 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-23T11:12:09.4673625Z
2026-10-23T11:12:09.4673701Z 161   setAboutPanelOptions: (options) =>
2026-10-23T11:12:09.4673760Z       ~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4673763Z
2026-10-23T11:12:09.4674148Z 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-23T11:12:09.4674153Z
2026-10-23T11:12:09.4674219Z 165   setAppUserModelId: (id) =>
2026-10-23T11:12:09.4674333Z       ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4674336Z
2026-10-23T11:12:09.4674768Z 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-23T11:12:09.4674771Z
2026-10-23T11:12:09.4674880Z 170   setAsDefaultProtocolClient: (protocol, path, args) =>
2026-10-23T11:12:09.4684175Z       ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4684184Z
2026-10-23T11:12:09.4684706Z 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-23T11:12:09.4684711Z
2026-10-23T11:12:09.4684790Z 177   setDesktopName: (desktopName) =>
2026-10-23T11:12:09.4684847Z       ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4684850Z
2026-10-23T11:12:09.4685225Z 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-23T11:12:09.4685231Z
2026-10-23T11:12:09.4685295Z 184   setDockIcon: (iconPath) =>
2026-10-23T11:12:09.4685352Z       ~~~~~~~~~~~
2026-10-23T11:12:09.4685355Z
2026-10-23T11:12:09.4685785Z 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-23T11:12:09.4685788Z
2026-10-23T11:12:09.4685886Z 188   appendCommandLineSwitch: (switchName, value) =>
2026-10-23T11:12:09.4685945Z       ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4685952Z
2026-10-23T11:12:09.4686348Z 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-23T11:12:09.4686354Z
2026-10-23T11:12:09.4686433Z 196   onBeforeQuitForUpdate: (listener) =>
2026-10-23T11:12:09.4686491Z       ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4686494Z
2026-10-23T11:12:09.4687017Z 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-23T11:12:09.4687020Z
2026-10-23T11:12:09.4687100Z 206   removeCommandLineSwitch: (switchName) =>
2026-10-23T11:12:09.4687160Z       ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4687163Z
2026-10-23T11:12:09.4687567Z 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-23T11:12:09.4687570Z
2026-10-23T11:12:09.4687643Z 169   showMessageBox: (options, owner) =>
2026-10-23T11:12:09.4687701Z       ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4687704Z
2026-10-23T11:12:09.4688100Z 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-23T11:12:09.4688107Z
2026-10-23T11:12:09.4688178Z 185   showErrorBox: (title, content) =>
2026-10-23T11:12:09.4688233Z       ~~~~~~~~~~~~
2026-10-23T11:12:09.4688236Z
2026-10-23T11:12:09.4688634Z 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-23T11:12:09.4688637Z
2026-10-23T11:12:09.4688714Z 193     setApplicationMenu: (template) =>
2026-10-23T11:12:09.4688770Z         ~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4688773Z
2026-10-23T11:12:09.4689156Z 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-23T11:12:09.4689260Z
2026-10-23T11:12:09.4689330Z 207     popupTemplate: (input) =>
2026-10-23T11:12:09.4689389Z         ~~~~~~~~~~~~~
2026-10-23T11:12:09.4689392Z
2026-10-23T11:12:09.4689768Z 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-23T11:12:09.4689771Z
2026-10-23T11:12:09.4689837Z 225     showContextMenu: (input) =>
2026-10-23T11:12:09.4689961Z         ~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4689965Z
2026-10-23T11:12:09.4690427Z 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-23T11:12:09.4690432Z
2026-10-23T11:12:09.4690523Z 82   getSystemIdleState: (idleThresholdSeconds) =>
2026-10-23T11:12:09.4690576Z      ~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4690582Z
2026-10-23T11:12:09.4690990Z 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-23T11:12:09.4690993Z
2026-10-23T11:12:09.4691060Z 77     encryptString: (value) =>
2026-10-23T11:12:09.4691115Z        ~~~~~~~~~~~~~
2026-10-23T11:12:09.4691118Z
2026-10-23T11:12:09.4691527Z 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-23T11:12:09.4691530Z
2026-10-23T11:12:09.4691592Z 82     decryptString: (value) =>
2026-10-23T11:12:09.4691649Z        ~~~~~~~~~~~~~
2026-10-23T11:12:09.4691652Z
2026-10-23T11:12:09.4692101Z 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-23T11:12:09.4692104Z
2026-10-23T11:12:09.4692172Z 68   openExternal: (rawUrl) =>
2026-10-23T11:12:09.4692226Z      ~~~~~~~~~~~~
2026-10-23T11:12:09.4692229Z
2026-10-23T11:12:09.4692616Z 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-23T11:12:09.4692619Z
2026-10-23T11:12:09.4692689Z 79   openSystemSettings: (pane) =>
2026-10-23T11:12:09.4692744Z      ~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4692747Z
2026-10-23T11:12:09.4693108Z 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-23T11:12:09.4693113Z
2026-10-23T11:12:09.4693175Z 86   copyText: (text) =>
2026-10-23T11:12:09.4693227Z      ~~~~~~~~
2026-10-23T11:12:09.4693229Z
2026-10-23T11:12:09.4693587Z 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-23T11:12:09.4693589Z
2026-10-23T11:12:09.4693649Z 34   setSource: (theme) =>
2026-10-23T11:12:09.4693701Z      ~~~~~~~~~
2026-10-23T11:12:09.4693704Z
2026-10-23T11:12:09.4694058Z 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-23T11:12:09.4694064Z
2026-10-23T11:12:09.4694124Z 41   onUpdated: (listener) =>
2026-10-23T11:12:09.4694176Z      ~~~~~~~~~
2026-10-23T11:12:09.4694240Z
2026-10-23T11:12:09.4694607Z 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-23T11:12:09.4694610Z
2026-10-23T11:12:09.4694673Z 85   setFeedURL: (options) =>
2026-10-23T11:12:09.4694722Z      ~~~~~~~~~~
2026-10-23T11:12:09.4694725Z
2026-10-23T11:12:09.4695098Z 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-23T11:12:09.4695165Z
2026-10-23T11:12:09.4695228Z 90   setAutoDownload: (value) =>
2026-10-23T11:12:09.4695283Z      ~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4695286Z
2026-10-23T11:12:09.4695683Z 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-23T11:12:09.4695688Z
2026-10-23T11:12:09.4695758Z 95   setAutoInstallOnAppQuit: (value) =>
2026-10-23T11:12:09.4695816Z      ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4695819Z
2026-10-23T11:12:09.4696190Z 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-23T11:12:09.4696193Z
2026-10-23T11:12:09.4696254Z 100   setChannel: (channel) =>
2026-10-23T11:12:09.4696303Z       ~~~~~~~~~~
2026-10-23T11:12:09.4696306Z
2026-10-23T11:12:09.4696692Z 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-23T11:12:09.4696695Z
2026-10-23T11:12:09.4696764Z 105   setAllowPrerelease: (value) =>
2026-10-23T11:12:09.4696823Z       ~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4696825Z
2026-10-23T11:12:09.4697208Z 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-23T11:12:09.4697211Z
2026-10-23T11:12:09.4697274Z 111   setAllowDowngrade: (value) =>
2026-10-23T11:12:09.4697329Z       ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4697331Z
2026-10-23T11:12:09.4697717Z 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-23T11:12:09.4697720Z
2026-10-23T11:12:09.4697784Z 116   setFullChangelog: (value) =>
2026-10-23T11:12:09.4697837Z       ~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4697840Z
2026-10-23T11:12:09.4698250Z 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-23T11:12:09.4698256Z
2026-10-23T11:12:09.4698342Z 121   setDisableDifferentialDownload: (value) =>
2026-10-23T11:12:09.4698400Z       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4698403Z
2026-10-23T11:12:09.4698773Z 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-23T11:12:09.4698776Z
2026-10-23T11:12:09.4698872Z 140   quitAndInstall: ({ isSilent, isForceRunAfter }) =>
2026-10-23T11:12:09.4698923Z       ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4698925Z
2026-10-23T11:12:09.4699304Z 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-23T11:12:09.4699368Z
2026-10-23T11:12:09.4699433Z 154   on: (eventName, listener) => {
2026-10-23T11:12:09.4699487Z       ~~
2026-10-23T11:12:09.4699489Z
2026-10-23T11:12:09.4699840Z 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-23T11:12:09.4699846Z
2026-10-23T11:12:09.4699905Z 211     create: (options) => {
2026-10-23T11:12:09.4699957Z         ~~~~~~
2026-10-23T11:12:09.4699960Z
2026-10-23T11:12:09.4700363Z 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-23T11:12:09.4700366Z
2026-10-23T11:12:09.4700490Z 243     setMain: (window) => Ref.set(mainWindowRef, Option.some(window)),
2026-10-23T11:12:09.4700542Z         ~~~~~~~
2026-10-23T11:12:09.4700544Z
2026-10-23T11:12:09.4700909Z 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-23T11:12:09.4700911Z
2026-10-23T11:12:09.4700972Z 244     clearMain: (window) =>
2026-10-23T11:12:09.4701024Z         ~~~~~~~~~
2026-10-23T11:12:09.4701027Z
2026-10-23T11:12:09.4701395Z 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-23T11:12:09.4701398Z
2026-10-23T11:12:09.4701459Z 254     prepareReveal: (window) =>
2026-10-23T11:12:09.4701517Z         ~~~~~~~~~~~~~
2026-10-23T11:12:09.4701520Z
2026-10-23T11:12:09.4701954Z 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-23T11:12:09.4701959Z
2026-10-23T11:12:09.4702020Z 264     reveal: (window) =>
2026-10-23T11:12:09.4702072Z         ~~~~~~
2026-10-23T11:12:09.4702075Z
2026-10-23T11:12:09.4702509Z 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-23T11:12:09.4702512Z
2026-10-23T11:12:09.4702602Z 526     setMainWindowBounds: (bounds, isMaximized) =>
2026-10-23T11:12:09.4702660Z         ~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4702663Z
2026-10-23T11:12:09.4703072Z 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-23T11:12:09.4703077Z
2026-10-23T11:12:09.4703149Z 538     setServerExposureMode: (mode) =>
2026-10-23T11:12:09.4703203Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4703207Z
2026-10-23T11:12:09.4703604Z 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-23T11:12:09.4703607Z
2026-10-23T11:12:09.4703673Z 542     setTailscaleServe: (input) =>
2026-10-23T11:12:09.4703728Z         ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4703731Z
2026-10-23T11:12:09.4704240Z 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-23T11:12:09.4704250Z
2026-10-23T11:12:09.4704348Z 546     setUpdateChannel: (channel) =>
2026-10-23T11:12:09.4704418Z         ~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4704489Z
2026-10-23T11:12:09.4704984Z 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-23T11:12:09.4705474Z
2026-10-23T11:12:09.4705542Z 550     setWslBackendEnabled: (enabled) =>
2026-10-23T11:12:09.4705725Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4705820Z
2026-10-23T11:12:09.4706272Z 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-23T11:12:09.4706712Z
2026-10-23T11:12:09.4706775Z 554     setWslDistro: (distro) =>
2026-10-23T11:12:09.4706931Z         ~~~~~~~~~~~~
2026-10-23T11:12:09.4707016Z
2026-10-23T11:12:09.4707401Z 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-23T11:12:09.4707843Z
2026-10-23T11:12:09.4707905Z 560     setWslOnly: (enabled) =>
2026-10-23T11:12:09.4708057Z         ~~~~~~~~~~
2026-10-23T11:12:09.4708135Z
2026-10-23T11:12:09.4708577Z 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-23T11:12:09.4709060Z
2026-10-23T11:12:09.4709140Z 564     setLocalEnvironmentEnabled: (enabled) =>
2026-10-23T11:12:09.4709362Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4709463Z
2026-10-23T11:12:09.4709888Z 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-23T11:12:09.4710369Z
2026-10-23T11:12:09.4710461Z 599         setMainWindowBounds: (bounds, isMaximized) =>
2026-10-23T11:12:09.4710660Z             ~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4710760Z
2026-10-23T11:12:09.4711168Z 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-23T11:12:09.4711629Z
2026-10-23T11:12:09.4711701Z 601         setServerExposureMode: (mode) =>
2026-10-23T11:12:09.4711965Z             ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4712065Z
2026-10-23T11:12:09.4712463Z 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-23T11:12:09.4712966Z
2026-10-23T11:12:09.4713127Z 603         setTailscaleServe: (input) => update((settings) => setTailscaleServe(settings, input)),
2026-10-23T11:12:09.4713401Z             ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4713498Z
2026-10-23T11:12:09.4713895Z 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-23T11:12:09.4714344Z
2026-10-23T11:12:09.4714504Z 604         setUpdateChannel: (channel) => update((settings) => setUpdateChannel(settings, channel)),
2026-10-23T11:12:09.4714767Z             ~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4714860Z
2026-10-23T11:12:09.4715274Z 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-23T11:12:09.4715732Z
2026-10-23T11:12:09.4715807Z 605         setWslBackendEnabled: (enabled) =>
2026-10-23T11:12:09.4716077Z             ~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4716172Z
2026-10-23T11:12:09.4716558Z 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-23T11:12:09.4716997Z
2026-10-23T11:12:09.4717141Z 607         setWslDistro: (distro) => update((settings) => setWslDistro(settings, distro)),
2026-10-23T11:12:09.4717386Z             ~~~~~~~~~~~~
2026-10-23T11:12:09.4717472Z
2026-10-23T11:12:09.4717910Z 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-23T11:12:09.4718344Z
2026-10-23T11:12:09.4718479Z 608         setWslOnly: (enabled) => update((settings) => setWslOnly(settings, enabled)),
2026-10-23T11:12:09.4718722Z             ~~~~~~~~~~
2026-10-23T11:12:09.4718803Z
2026-10-23T11:12:09.4719229Z 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-23T11:12:09.4719715Z
2026-10-23T11:12:09.4719799Z 609         setLocalEnvironmentEnabled: (enabled) =>
2026-10-23T11:12:09.4719991Z             ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4720098Z
2026-10-23T11:12:09.4720486Z 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-23T11:12:09.4720924Z
2026-10-23T11:12:09.4720981Z 197     set: (settings) =>
2026-10-23T11:12:09.4721123Z         ~~~
2026-10-23T11:12:09.4721191Z
2026-10-23T11:12:09.4721574Z 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-23T11:12:09.4722087Z
2026-10-23T11:12:09.4722204Z 231         set: (settings) => Ref.set(settingsRef, Option.some(settings)),
2026-10-23T11:12:09.4722423Z             ~~~
2026-10-23T11:12:09.4722500Z
2026-10-23T11:12:09.4722934Z 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-23T11:12:09.4723417Z
2026-10-23T11:12:09.4723511Z 1729     setAnimationDestination: (id, destination) =>
2026-10-23T11:12:09.4723715Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4723817Z
2026-10-23T11:12:09.4724206Z 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-23T11:12:09.4724656Z
2026-10-23T11:12:09.4724722Z 1740     dismissAnimation: (id) =>
2026-10-23T11:12:09.4724883Z          ~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4724975Z
2026-10-23T11:12:09.4725351Z 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-23T11:12:09.4725779Z
2026-10-23T11:12:09.4725839Z 1745     acknowledge: (id) =>
2026-10-23T11:12:09.4725992Z          ~~~~~~~~~~~
2026-10-23T11:12:09.4726074Z
2026-10-23T11:12:09.4726475Z 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-23T11:12:09.4727074Z
2026-10-23T11:12:09.4727142Z 136     discoverHosts: (input) =>
2026-10-23T11:12:09.4727391Z         ~~~~~~~~~~~~~
2026-10-23T11:12:09.4727477Z
2026-10-23T11:12:09.4727875Z 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-23T11:12:09.4728328Z
2026-10-23T11:12:09.4728399Z 141     resolveHost: (alias) =>
2026-10-23T11:12:09.4728549Z         ~~~~~~~~~~~
2026-10-23T11:12:09.4728629Z
2026-10-23T11:12:09.4729148Z 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-23T11:12:09.4729643Z
2026-10-23T11:12:09.4729733Z 146     ensureEnvironment: (target, ensureOptions) =>
2026-10-23T11:12:09.4729924Z         ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4730013Z
2026-10-23T11:12:09.4730441Z 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-23T11:12:09.4730925Z
2026-10-23T11:12:09.4730999Z 154     disconnectEnvironment: (target) =>
2026-10-23T11:12:09.4731175Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4731272Z
2026-10-23T11:12:09.4731682Z 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-23T11:12:09.4732213Z
2026-10-23T11:12:09.4732384Z 1171     installPrepared: (expectedVersion) => installWithExpectedVersion(expectedVersion),
2026-10-23T11:12:09.4732662Z          ~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4732748Z
2026-10-23T11:12:09.4733136Z 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-23T11:12:09.4733583Z
2026-10-23T11:12:09.4733650Z 1101       preWarm: () => Effect.void,
2026-10-23T11:12:09.4733815Z            ~~~~~~~
2026-10-23T11:12:09.4733896Z
2026-10-23T11:12:09.4734340Z 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-23T11:12:09.4734835Z
2026-10-23T11:12:09.4734922Z 1102       windowsToWslPath: (distro, windowsPath) =>
2026-10-23T11:12:09.4735125Z            ~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4735222Z
2026-10-23T11:12:09.4735632Z 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-23T11:12:09.4736096Z
2026-10-23T11:12:09.4736275Z 1104       getUserHome: (distro) => Effect.succeed(stub.getUserHome?.(distro) ?? Option.none<string>()),
2026-10-23T11:12:09.4736553Z            ~~~~~~~~~~~
2026-10-23T11:12:09.4736638Z
2026-10-23T11:12:09.4737045Z 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-23T11:12:09.4737514Z
2026-10-23T11:12:09.4737691Z 1105       getDistroIp: (distro) => Effect.succeed(stub.getDistroIp?.(distro) ?? Option.none<string>()),
2026-10-23T11:12:09.4737970Z            ~~~~~~~~~~~
2026-10-23T11:12:09.4738054Z
2026-10-23T11:12:09.4738491Z 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-23T11:12:09.4739044Z
2026-10-23T11:12:09.4739124Z 1106       prepareRuntime: (distro, archive) =>
2026-10-23T11:12:09.4739310Z            ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4739401Z
2026-10-23T11:12:09.4739842Z 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-23T11:12:09.4740335Z
2026-10-23T11:12:09.4740506Z 1113       pruneRuntimes: (distro, runtimeId) => stub.pruneRuntimes?.(distro, runtimeId) ?? Effect.void,
2026-10-23T11:12:09.4740789Z            ~~~~~~~~~~~~~
2026-10-23T11:12:09.4740875Z
2026-10-23T11:12:09.4741376Z 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-23T11:12:09.4741950Z
2026-10-23T11:12:09.4742040Z 1114       invalidateRuntime: (distro, runtimeId) =>
2026-10-23T11:12:09.4742234Z            ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4742333Z
2026-10-23T11:12:09.4742779Z 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-23T11:12:09.4743274Z
2026-10-23T11:12:09.4743354Z 1116       probeRuntime: (distro, linuxAppRoot) =>
2026-10-23T11:12:09.4743549Z            ~~~~~~~~~~~~
2026-10-23T11:12:09.4743639Z
2026-10-23T11:12:09.4744099Z 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-23T11:12:09.4744613Z
2026-10-23T11:12:09.4744714Z 1120       ensureNodePty: (distro, linuxAppRoot, options) =>
2026-10-23T11:12:09.4744923Z            ~~~~~~~~~~~~~
2026-10-23T11:12:09.4745016Z
2026-10-23T11:12:09.4745423Z 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-23T11:12:09.4745878Z
2026-10-23T11:12:09.4745940Z 1187       preWarm: (distro) =>
2026-10-23T11:12:09.4746100Z            ~~~~~~~
2026-10-23T11:12:09.4746181Z
2026-10-23T11:12:09.4746620Z 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-23T11:12:09.4747109Z
2026-10-23T11:12:09.4747189Z 1192       prepareRuntime: (distro, archive) =>
2026-10-23T11:12:09.4747376Z            ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4747469Z
2026-10-23T11:12:09.4747909Z 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-23T11:12:09.4748406Z
2026-10-23T11:12:09.4748487Z 1196       pruneRuntimes: (distro, runtimeId) =>
2026-10-23T11:12:09.4748672Z            ~~~~~~~~~~~~~
2026-10-23T11:12:09.4748762Z
2026-10-23T11:12:09.4749208Z 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-23T11:12:09.4749712Z
2026-10-23T11:12:09.4749802Z 1200       invalidateRuntime: (distro, runtimeId) =>
2026-10-23T11:12:09.4749999Z            ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4750091Z
2026-10-23T11:12:09.4750540Z 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-23T11:12:09.4751111Z
2026-10-23T11:12:09.4751192Z 1204       probeRuntime: (distro, linuxAppRoot) =>
2026-10-23T11:12:09.4751381Z            ~~~~~~~~~~~~
2026-10-23T11:12:09.4751471Z
2026-10-23T11:12:09.4752020Z 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-23T11:12:09.4752531Z
2026-10-23T11:12:09.4752629Z 1208       ensureNodePty: (distro, linuxAppRoot, options) =>
2026-10-23T11:12:09.4752897Z            ~~~~~~~~~~~~~
2026-10-23T11:12:09.4752986Z
2026-10-23T11:12:09.4752989Z
2026-10-23T11:12:09.4752991Z
2026-10-23T11:12:09.4753436Z 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-23T11:12:09.4753932Z
2026-10-23T11:12:09.4754001Z 805     clear: (environmentId) =>
2026-10-23T11:12:09.4754160Z         ~~~~~
2026-10-23T11:12:09.4754237Z
2026-10-23T11:12:09.4754635Z 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-23T11:12:09.4755081Z
2026-10-23T11:12:09.4755188Z 815     observe: ({ environmentId, environmentLabel, method }) =>
2026-10-23T11:12:09.4755405Z         ~~~~~~~
2026-10-23T11:12:09.4755482Z
2026-10-23T11:12:09.4755862Z 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-23T11:12:09.4756295Z
2026-10-23T11:12:09.4756353Z 549     get: (entry) =>
2026-10-23T11:12:09.4756493Z         ~~~
2026-10-23T11:12:09.4756569Z
2026-10-23T11:12:09.4756967Z 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-23T11:12:09.4757417Z
2026-10-23T11:12:09.4757484Z 576     set: (entry, permission) => {
2026-10-23T11:12:09.4757653Z         ~~~
2026-10-23T11:12:09.4757725Z
2026-10-23T11:12:09.4758122Z 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-23T11:12:09.4758577Z
2026-10-23T11:12:09.4758685Z 596     forget: (environmentId) => write(environmentId, null),
2026-10-23T11:12:09.4758891Z         ~~~~~~
2026-10-23T11:12:09.4758969Z
2026-10-23T11:12:09.4759437Z 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-23T11:12:09.4759954Z
2026-10-23T11:12:09.4760027Z 643       register: (registration, routes) =>
2026-10-23T11:12:09.4760210Z           ~~~~~~~~
2026-10-23T11:12:09.4760290Z
2026-10-23T11:12:09.4760754Z 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-23T11:12:09.4761272Z
2026-10-23T11:12:09.4761353Z 647       setRoutes: (environmentId, routes) =>
2026-10-23T11:12:09.4761534Z           ~~~~~~~~~
2026-10-23T11:12:09.4761617Z
2026-10-23T11:12:09.4762129Z 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-23T11:12:09.4762690Z
2026-10-23T11:12:09.4762759Z 651       remove: (environmentId) =>
2026-10-23T11:12:09.4762924Z           ~~~~~~
2026-10-23T11:12:09.4763004Z
2026-10-23T11:12:09.4763469Z 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-23T11:12:09.4763997Z
2026-10-23T11:12:09.4764079Z 655       setEnabled: (environmentId, enabled) =>
2026-10-23T11:12:09.4764267Z           ~~~~~~~~~~
2026-10-23T11:12:09.4764352Z
2026-10-23T11:12:09.4764842Z 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-23T11:12:09.4765322Z
2026-10-23T11:12:09.4765394Z 732       loadShell: (environmentId) =>
2026-10-23T11:12:09.4765568Z           ~~~~~~~~~
2026-10-23T11:12:09.4765649Z
2026-10-23T11:12:09.4766095Z 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-23T11:12:09.4766597Z
2026-10-23T11:12:09.4766770Z 768       loadServerConfig: (environmentId) =>
2026-10-23T11:12:09.4766984Z           ~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4767214Z
2026-10-23T11:12:09.4767723Z 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-23T11:12:09.4768237Z
2026-10-23T11:12:09.4768320Z 802       loadThread: (environmentId, threadId) =>
2026-10-23T11:12:09.4768506Z           ~~~~~~~~~~
2026-10-23T11:12:09.4768595Z
2026-10-23T11:12:09.4769044Z 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-23T11:12:09.4769546Z
2026-10-23T11:12:09.4769620Z 851       loadVcsRefs: (environmentId, cwd) =>
2026-10-23T11:12:09.4769806Z           ~~~~~~~~~~~
2026-10-23T11:12:09.4769890Z
2026-10-23T11:12:09.4770345Z 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-23T11:12:09.4770863Z
2026-10-23T11:12:09.4770943Z 893       removeVcsRefs: (environmentId, cwd) =>
2026-10-23T11:12:09.4771127Z           ~~~~~~~~~~~~~
2026-10-23T11:12:09.4771217Z
2026-10-23T11:12:09.4771655Z 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-23T11:12:09.4772227Z
2026-10-23T11:12:09.4772297Z 899       clearVcsRefs: (environmentId) =>
2026-10-23T11:12:09.4772476Z           ~~~~~~~~~~~~
2026-10-23T11:12:09.4772565Z
2026-10-23T11:12:09.4773025Z 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-23T11:12:09.4773539Z
2026-10-23T11:12:09.4773628Z 905       removeThread: (environmentId, threadId) =>
2026-10-23T11:12:09.4773818Z           ~~~~~~~~~~~~
2026-10-23T11:12:09.4773906Z
2026-10-23T11:12:09.4774325Z 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-23T11:12:09.4774911Z
2026-10-23T11:12:09.4774977Z 911       clear: (environmentId) =>
2026-10-23T11:12:09.4775142Z           ~~~~~
2026-10-23T11:12:09.4775222Z
2026-10-23T11:12:09.4775225Z
2026-10-23T11:12:09.4775288Z ~/apps/server$ tsc --noEmit
2026-10-23T11:12:09.4775721Z 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-23T11:12:09.4776099Z
2026-10-23T11:12:09.4776174Z 941         yield* Effect.sleep("1200 millis")
2026-10-23T11:12:09.4776368Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4776607Z 942           .pipe(
2026-10-23T11:12:09.4776747Z     ~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4776879Z ...
2026-10-23T11:12:09.4777002Z 954           )
2026-10-23T11:12:09.4777129Z     ~~~~~~~~~~~
2026-10-23T11:12:09.4777270Z 955           .pipe(Effect.forkDetach);
2026-10-23T11:12:09.4777455Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4777568Z
2026-10-23T11:12:09.4777967Z 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-23T11:12:09.4778419Z
2026-10-23T11:12:09.4778484Z 1175     logger: (event) => {
2026-10-23T11:12:09.4778640Z          ~~~~~~
2026-10-23T11:12:09.4778720Z
2026-10-23T11:12:09.4779286Z 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-23T11:12:09.4779893Z
2026-10-23T11:12:09.4780037Z 376 const DEFAULT_GROK_SETTINGS = Schema.decodeUnknownSync(GrokSettings)({});
2026-10-23T11:12:09.4780309Z                                          ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4780444Z
2026-10-23T11:12:09.4780826Z 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-23T11:12:09.4781254Z
2026-10-23T11:12:09.4781325Z 1346     getDescriptor: () =>
2026-10-23T11:12:09.4781481Z          ~~~~~~~~~~~~~
2026-10-23T11:12:09.4781564Z
2026-10-23T11:12:09.4782032Z 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-23T11:12:09.4782494Z
2026-10-23T11:12:09.4782559Z 55     getDescriptor: () =>
2026-10-23T11:12:09.4782708Z        ~~~~~~~~~~~~~
2026-10-23T11:12:09.4782792Z
2026-10-23T11:12:09.4783221Z 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-23T11:12:09.4783697Z
2026-10-23T11:12:09.4783766Z 540       authenticate: (request) =>
2026-10-23T11:12:09.4783933Z           ~~~~~~~~~~~~
2026-10-23T11:12:09.4784015Z
2026-10-23T11:12:09.4784337Z 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-23T11:12:09.4784710Z
2026-10-23T11:12:09.4784781Z 468         : Effect.succeed(undefined),
2026-10-23T11:12:09.4784957Z               ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4785066Z
2026-10-23T11:12:09.4785439Z 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-23T11:12:09.4785854Z
2026-10-23T11:12:09.4785924Z 328       HttpClientError: (cause) =>
2026-10-23T11:12:09.4786164Z           ~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4786253Z
2026-10-23T11:12:09.4786563Z src/cloud/CloudLink.lifecycle.test.ts:166:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4786919Z
2026-10-23T11:12:09.4787004Z 166             latest: Effect.succeed(Option.none()),
2026-10-23T11:12:09.4787199Z                         ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4787307Z
2026-10-23T11:12:09.4787590Z src/cloud/CloudLink.test.ts:99:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4787922Z
2026-10-23T11:12:09.4788060Z 99         latest: Effect.succeed(Option.none()),
2026-10-23T11:12:09.4788250Z                    ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4788353Z
2026-10-23T11:12:09.4788800Z 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-23T11:12:09.4789300Z
2026-10-23T11:12:09.4789471Z 791     requestRecovery: (config) => Queue.offer(recoveryRequests, config).pipe(Effect.asVoid),
2026-10-23T11:12:09.4789743Z         ~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4789833Z
2026-10-23T11:12:09.4790102Z src/cloud/http.test.ts:81:67 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4790423Z
2026-10-23T11:12:09.4790611Z 81     Layer.mock(ConnectReachability.ConnectReachability)({ latest: Effect.succeed(Option.none()) }),
2026-10-23T11:12:09.4790945Z                                                                      ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4791092Z
2026-10-23T11:12:09.4791535Z 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-23T11:12:09.4792121Z
2026-10-23T11:12:09.4792233Z 371     commitDesktopUpdate: (requestId, onHandoffAccepted) =>
2026-10-23T11:12:09.4792449Z         ~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4792545Z
2026-10-23T11:12:09.4792916Z 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-23T11:12:09.4793341Z
2026-10-23T11:12:09.4793402Z 808       updateTool: (tool) =>
2026-10-23T11:12:09.4793558Z           ~~~~~~~~~~
2026-10-23T11:12:09.4793642Z
2026-10-23T11:12:09.4794001Z 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-23T11:12:09.4794410Z
2026-10-23T11:12:09.4794470Z 823       easAccount: () =>
2026-10-23T11:12:09.4794618Z           ~~~~~~~~~~
2026-10-23T11:12:09.4794699Z
2026-10-23T11:12:09.4795103Z 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-23T11:12:09.4795565Z
2026-10-23T11:12:09.4795632Z 868     ensureAgentReady: (onPhase) =>
2026-10-23T11:12:09.4795813Z         ~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4795902Z
2026-10-23T11:12:09.4796188Z src/device/easProjectId.ts:201:7 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T11:12:09.4796530Z
2026-10-23T11:12:09.4796600Z 201       Effect.map(Option.some),
2026-10-23T11:12:09.4796760Z           ~~~~~~~~~~
2026-10-23T11:12:09.4796843Z
2026-10-23T11:12:09.4797219Z 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-23T11:12:09.4797710Z
2026-10-23T11:12:09.4797808Z 141   return DirectEndpoints.of({ resolve: () => resolve });
2026-10-23T11:12:09.4798023Z                                   ~~~~~~~
2026-10-23T11:12:09.4798136Z
2026-10-23T11:12:09.4798538Z 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-23T11:12:09.4798990Z
2026-10-23T11:12:09.4799124Z 83   return RemoteOpenTargets.of({ resolveTargets: () => resolveTargets });
2026-10-23T11:12:09.4799424Z                                    ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4799546Z
2026-10-23T11:12:09.4799939Z 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-23T11:12:09.4800381Z
2026-10-23T11:12:09.4800446Z 302     isRepository: (cwd) =>
2026-10-23T11:12:09.4800600Z         ~~~~~~~~~~~~
2026-10-23T11:12:09.4800684Z
2026-10-23T11:12:09.4801068Z 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-23T11:12:09.4801495Z
2026-10-23T11:12:09.4801561Z 315     hasCommit: (input) =>
2026-10-23T11:12:09.4801715Z         ~~~~~~~~~
2026-10-23T11:12:09.4801861Z
2026-10-23T11:12:09.4802250Z 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-23T11:12:09.4802691Z
2026-10-23T11:12:09.4802759Z 327     hasRefNamed: (input) =>
2026-10-23T11:12:09.4802912Z         ~~~~~~~~~~~
2026-10-23T11:12:09.4802992Z
2026-10-23T11:12:09.4803373Z 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-23T11:12:09.4803800Z
2026-10-23T11:12:09.4803864Z 346     status: (input) =>
2026-10-23T11:12:09.4804013Z         ~~~~~~
2026-10-23T11:12:09.4804086Z
2026-10-23T11:12:09.4804471Z 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-23T11:12:09.4804909Z
2026-10-23T11:12:09.4804974Z 352     localStatus: (input) =>
2026-10-23T11:12:09.4805127Z         ~~~~~~~~~~~
2026-10-23T11:12:09.4805208Z
2026-10-23T11:12:09.4805612Z 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-23T11:12:09.4806074Z
2026-10-23T11:12:09.4806146Z 360     remoteStatus: (input, options) =>
2026-10-23T11:12:09.4806321Z         ~~~~~~~~~~~~
2026-10-23T11:12:09.4806400Z
2026-10-23T11:12:09.4806916Z 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-23T11:12:09.4807371Z
2026-10-23T11:12:09.4807441Z 369     pullCurrentBranch: (cwd) =>
2026-10-23T11:12:09.4807607Z         ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4807698Z
2026-10-23T11:12:09.4808113Z 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-23T11:12:09.4808574Z
2026-10-23T11:12:09.4808654Z 373     runStackedAction: (input, options) =>
2026-10-23T11:12:09.4808922Z         ~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4809007Z
2026-10-23T11:12:09.4809425Z 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-23T11:12:09.4809894Z
2026-10-23T11:12:09.4809974Z 388     preparePullRequestThread: (input) =>
2026-10-23T11:12:09.4810162Z         ~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4810266Z
2026-10-23T11:12:09.4810720Z 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-23T11:12:09.4811152Z
2026-10-23T11:12:09.4811214Z 399     listRefs: (input) =>
2026-10-23T11:12:09.4811366Z         ~~~~~~~~
2026-10-23T11:12:09.4811440Z
2026-10-23T11:12:09.4811921Z 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-23T11:12:09.4812385Z
2026-10-23T11:12:09.4812460Z 405     createWorktree: (input, options) =>
2026-10-23T11:12:09.4812636Z         ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4812726Z
2026-10-23T11:12:09.4813137Z 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-23T11:12:09.4813608Z
2026-10-23T11:12:09.4813675Z 409     listLocalBranchNames: (cwd) =>
2026-10-23T11:12:09.4813853Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4813948Z
2026-10-23T11:12:09.4814336Z 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-23T11:12:09.4814794Z
2026-10-23T11:12:09.4814858Z 413     fetchRemote: (input) =>
2026-10-23T11:12:09.4815010Z         ~~~~~~~~~~~
2026-10-23T11:12:09.4815092Z
2026-10-23T11:12:09.4815487Z 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-23T11:12:09.4815938Z
2026-10-23T11:12:09.4816001Z 417     remoteExists: (input) =>
2026-10-23T11:12:09.4816162Z         ~~~~~~~~~~~~
2026-10-23T11:12:09.4816245Z
2026-10-23T11:12:09.4816656Z 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-23T11:12:09.4817117Z
2026-10-23T11:12:09.4817187Z 421     remoteBranchExists: (input) =>
2026-10-23T11:12:09.4817358Z         ~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4817452Z
2026-10-23T11:12:09.4817887Z 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-23T11:12:09.4818374Z
2026-10-23T11:12:09.4818459Z 425     resolveRemoteTrackingCommit: (input) =>
2026-10-23T11:12:09.4818658Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4818767Z
2026-10-23T11:12:09.4819192Z 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-23T11:12:09.4819677Z
2026-10-23T11:12:09.4819756Z 429     resolveWorktreeBaseRemote: (input) =>
2026-10-23T11:12:09.4819945Z         ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4820053Z
2026-10-23T11:12:09.4820476Z 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-23T11:12:09.4821053Z
2026-10-23T11:12:09.4821129Z 433     fetchWorktreeBaseCommit: (input) =>
2026-10-23T11:12:09.4821313Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4821412Z
2026-10-23T11:12:09.4821883Z 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-23T11:12:09.4822335Z
2026-10-23T11:12:09.4822407Z 437     removeWorktree: (input) =>
2026-10-23T11:12:09.4822637Z         ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4822724Z
2026-10-23T11:12:09.4823123Z 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-23T11:12:09.4823587Z
2026-10-23T11:12:09.4823653Z 441     pruneWorktrees: (input) =>
2026-10-23T11:12:09.4823818Z         ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4823906Z
2026-10-23T11:12:09.4824323Z 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-23T11:12:09.4824784Z
2026-10-23T11:12:09.4824857Z 445     deleteLocalBranch: (input) =>
2026-10-23T11:12:09.4825038Z         ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4825126Z
2026-10-23T11:12:09.4825520Z 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-23T11:12:09.4825961Z
2026-10-23T11:12:09.4826026Z 449     createRef: (input) =>
2026-10-23T11:12:09.4826178Z         ~~~~~~~~~
2026-10-23T11:12:09.4826263Z
2026-10-23T11:12:09.4826649Z 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-23T11:12:09.4827082Z
2026-10-23T11:12:09.4827147Z 457     switchRef: (input) =>
2026-10-23T11:12:09.4827301Z         ~~~~~~~~~
2026-10-23T11:12:09.4827377Z
2026-10-23T11:12:09.4827772Z 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-23T11:12:09.4828215Z
2026-10-23T11:12:09.4828286Z 463     renameBranch: (input) =>
2026-10-23T11:12:09.4828444Z         ~~~~~~~~~~~~
2026-10-23T11:12:09.4828529Z
2026-10-23T11:12:09.4828875Z 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-23T11:12:09.4829273Z
2026-10-23T11:12:09.4829344Z 281   const receive = (raw: string) => {
2026-10-23T11:12:09.4829518Z             ~~~~~~~
2026-10-23T11:12:09.4829596Z
2026-10-23T11:12:09.4830087Z 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-23T11:12:09.4830625Z
2026-10-23T11:12:09.4830680Z 284       try {
2026-10-23T11:12:09.4830807Z           ~~~~~
2026-10-23T11:12:09.4830950Z 285         parsed = JSON.parse(line);
2026-10-23T11:12:09.4831125Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4831281Z ...
2026-10-23T11:12:09.4831487Z 287         return yield* respondWithError(null, "Parse error", -32700);
2026-10-23T11:12:09.4831804Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4832078Z 288       }
2026-10-23T11:12:09.4832201Z     ~~~~~~~
2026-10-23T11:12:09.4832273Z
2026-10-23T11:12:09.4832630Z 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-23T11:12:09.4833032Z
2026-10-23T11:12:09.4833108Z 324       Effect.catchCause(() => Effect.void),
2026-10-23T11:12:09.4833296Z           ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4833388Z
2026-10-23T11:12:09.4833693Z src/mcp/McpDeviceToolkit.test.ts:105:18 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4834101Z
2026-10-23T11:12:09.4834189Z 105   getById: () => Effect.succeed(Option.none()),
2026-10-23T11:12:09.4834383Z                      ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4834490Z
2026-10-23T11:12:09.4834862Z 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-23T11:12:09.4835287Z
2026-10-23T11:12:09.4835407Z 421 const previewSnapshotFailure = <E>(cause: Cause.Cause<E>) => {
2026-10-23T11:12:09.4835635Z           ~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4835739Z
2026-10-23T11:12:09.4836111Z 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-23T11:12:09.4836541Z
2026-10-23T11:12:09.4836605Z 933       addTool: (options) =>
2026-10-23T11:12:09.4836760Z           ~~~~~~~
2026-10-23T11:12:09.4836843Z
2026-10-23T11:12:09.4837207Z 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-23T11:12:09.4837627Z
2026-10-23T11:12:09.4837706Z 22     resolve: () => Effect.succeed(undefined),
2026-10-23T11:12:09.4837905Z                       ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4838023Z
2026-10-23T11:12:09.4838392Z 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-23T11:12:09.4838816Z
2026-10-23T11:12:09.4838894Z 112       Effect.flatMap(() => writingCaller),
2026-10-23T11:12:09.4839075Z           ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4839167Z
2026-10-23T11:12:09.4839832Z src/mcp/OrchestratorMcpService.ts:2459: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-23T11:12:09.4840530Z
2026-10-23T11:12:09.4840630Z 2459       const cancelOrphan = Effect.gen(function* () {
2026-10-23T11:12:09.4840846Z                                            ~~~~~~~~~
2026-10-23T11:12:09.4840968Z
2026-10-23T11:12:09.4841278Z   src/mcp/OrchestratorMcpService.ts:2474:17 - This repeated `Effect.mapError(...)` site participates in the hoistable generator-wide mapping. effect(redundantMapError)
2026-10-23T11:12:09.4841783Z     2474           .pipe(Effect.mapError(threadManagementFailure));
2026-10-23T11:12:09.4842010Z                          ~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4842121Z
2026-10-23T11:12:09.4842427Z   src/mcp/OrchestratorMcpService.ts:2477:17 - This repeated `Effect.mapError(...)` site participates in the hoistable generator-wide mapping. effect(redundantMapError)
2026-10-23T11:12:09.4842881Z     2477           .pipe(Effect.mapError(threadManagementFailure));
2026-10-23T11:12:09.4843093Z                          ~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4843204Z
2026-10-23T11:12:09.4843560Z 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-23T11:12:09.4844031Z
2026-10-23T11:12:09.4844092Z 651         onNone: () =>
2026-10-23T11:12:09.4844234Z             ~~~~~~
2026-10-23T11:12:09.4844314Z
2026-10-23T11:12:09.4844583Z src/mcp/WorktreeMcpService.test.ts:355:3 - suggestion TS377017: This Effect.gen contains a single return statement. effect(unnecessaryEffectGen)
2026-10-23T11:12:09.4844896Z
2026-10-23T11:12:09.4844962Z 355   Effect.gen(function* () {
2026-10-23T11:12:09.4845118Z       ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4845381Z 356     return yield* WorktreeMcpService.WorktreeMcpService;
2026-10-23T11:12:09.4845625Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4845831Z 357   }).pipe(Effect.provide(harness.layer));
2026-10-23T11:12:09.4846019Z     ~~~~
2026-10-23T11:12:09.4846088Z
2026-10-23T11:12:09.4846445Z 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-23T11:12:09.4846971Z
2026-10-23T11:12:09.4847037Z 222     const thread = yield* engine
2026-10-23T11:12:09.4847207Z                               ~~~~~~
2026-10-23T11:12:09.4847376Z 223       .getThreadShell(threadId)
2026-10-23T11:12:09.4847541Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4847730Z 224       .pipe(Effect.map(Option.fromNullishOr))
2026-10-23T11:12:09.4847933Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4848160Z 225       .pipe(Effect.mapError((cause) => new Failure({ cause })));
2026-10-23T11:12:09.4848412Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4848551Z
2026-10-23T11:12:09.4848928Z 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-23T11:12:09.4849356Z
2026-10-23T11:12:09.4849511Z 96   McpAppModelContext.of({ set: () => Effect.void, forThread: () => Effect.succeed([]) }),
2026-10-23T11:12:09.4849776Z                              ~~~
2026-10-23T11:12:09.4849878Z
2026-10-23T11:12:09.4850267Z 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-23T11:12:09.4850711Z
2026-10-23T11:12:09.4850875Z 96   McpAppModelContext.of({ set: () => Effect.void, forThread: () => Effect.succeed([]) }),
2026-10-23T11:12:09.4851157Z                                                      ~~~~~~~~~
2026-10-23T11:12:09.4851287Z
2026-10-23T11:12:09.4851712Z 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-23T11:12:09.4852267Z
2026-10-23T11:12:09.4852331Z 16     record: (records) =>
2026-10-23T11:12:09.4852482Z        ~~~~~~
2026-10-23T11:12:09.4852555Z
2026-10-23T11:12:09.4852912Z 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-23T11:12:09.4853324Z
2026-10-23T11:12:09.4853457Z 41   defaultValue: () => ({ latestNoticeableStall: Effect.succeed(undefined) }),
2026-10-23T11:12:09.4853725Z                                                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4853864Z
2026-10-23T11:12:09.4854451Z 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-23T11:12:09.4855185Z
2026-10-23T11:12:09.4855319Z 30 const REPLAY_SETTINGS = Schema.decodeUnknownSync(AcpRegistrySettings)({
2026-10-23T11:12:09.4855578Z                                   ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4855702Z
2026-10-23T11:12:09.4856108Z 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-23T11:12:09.4856564Z
2026-10-23T11:12:09.4856644Z 48   defaultModel: Effect.succeed(undefined),
2026-10-23T11:12:09.4856901Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4857018Z
2026-10-23T11:12:09.4857422Z 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-23T11:12:09.4857875Z
2026-10-23T11:12:09.4857959Z 169         defaultModel: Effect.succeed(undefined),
2026-10-23T11:12:09.4858161Z                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4858279Z
2026-10-23T11:12:09.4858681Z 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-23T11:12:09.4859139Z
2026-10-23T11:12:09.4859224Z 306         defaultModel: Effect.succeed(undefined),
2026-10-23T11:12:09.4859419Z                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4859537Z
2026-10-23T11:12:09.4859939Z 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-23T11:12:09.4860391Z
2026-10-23T11:12:09.4860475Z 542         defaultModel: Effect.succeed(undefined),
2026-10-23T11:12:09.4860671Z                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4860786Z
2026-10-23T11:12:09.4861230Z 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-23T11:12:09.4861723Z
2026-10-23T11:12:09.4861882Z 974       const controller = new AbortController();
2026-10-23T11:12:09.4862081Z                              ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4862197Z
2026-10-23T11:12:09.4862581Z 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-23T11:12:09.4863012Z
2026-10-23T11:12:09.4863101Z 1326         const requestEvent = yield* runtime.events
2026-10-23T11:12:09.4863306Z                                          ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4863489Z 1327           .pipe(
2026-10-23T11:12:09.4863625Z      ~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4863757Z  ...
2026-10-23T11:12:09.4863882Z 1330           )
2026-10-23T11:12:09.4864007Z      ~~~~~~~~~~~
2026-10-23T11:12:09.4864155Z 1331           .pipe(Effect.forkScoped);
2026-10-23T11:12:09.4864329Z      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4864438Z
2026-10-23T11:12:09.4864880Z 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-23T11:12:09.4865377Z
2026-10-23T11:12:09.4865464Z 1332         const controller = new AbortController();
2026-10-23T11:12:09.4865671Z                                 ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4865791Z
2026-10-23T11:12:09.4866228Z 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-23T11:12:09.4866792Z
2026-10-23T11:12:09.4866893Z 1355         const cancelledController = new AbortController();
2026-10-23T11:12:09.4867122Z                                          ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4867252Z
2026-10-23T11:12:09.4867724Z 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-23T11:12:09.4868255Z
2026-10-23T11:12:09.4868445Z 4018     getCapabilities: () => Effect.succeed(ClaudeProviderCapabilitiesV2),
2026-10-23T11:12:09.4868693Z          ~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4868784Z
2026-10-23T11:12:09.4869277Z 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-23T11:12:09.4869830Z
2026-10-23T11:12:09.4869988Z 4019     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-23T11:12:09.4870261Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4870364Z
2026-10-23T11:12:09.4870828Z 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-23T11:12:09.4871335Z
2026-10-23T11:12:09.4871415Z 201         signal: new AbortController().signal,
2026-10-23T11:12:09.4871604Z                     ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4871716Z
2026-10-23T11:12:09.4872341Z 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-23T11:12:09.4872908Z
2026-10-23T11:12:09.4872981Z 74   const pause = Effect.raceFirst(
2026-10-23T11:12:09.4873154Z                    ~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4873258Z
2026-10-23T11:12:09.4873648Z 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-23T11:12:09.4874084Z
2026-10-23T11:12:09.4874225Z 1741     threadId === null ? Effect.succeed(undefined) : mcpSessions.read(threadId);
2026-10-23T11:12:09.4874482Z                              ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4874602Z
2026-10-23T11:12:09.4875077Z 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-23T11:12:09.4875603Z
2026-10-23T11:12:09.4875732Z 1748     getCapabilities: () => Effect.succeed(CodexProviderCapabilitiesV2),
2026-10-23T11:12:09.4875974Z          ~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4876062Z
2026-10-23T11:12:09.4876543Z 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-23T11:12:09.4877083Z
2026-10-23T11:12:09.4877238Z 1749     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-23T11:12:09.4877501Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4877604Z
2026-10-23T11:12:09.4878012Z 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-23T11:12:09.4878524Z
2026-10-23T11:12:09.4878614Z 3045                   Effect.catch(() => Effect.succeed(null)),
2026-10-23T11:12:09.4878819Z                        ~~~~~~~~~~~~
2026-10-23T11:12:09.4878924Z
2026-10-23T11:12:09.4879403Z 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-23T11:12:09.4879931Z
2026-10-23T11:12:09.4880010Z 3046                   Effect.flatMap((response) =>
2026-10-23T11:12:09.4880248Z                        ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4880354Z
2026-10-23T11:12:09.4880716Z 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-23T11:12:09.4881138Z
2026-10-23T11:12:09.4881219Z 3068                   Effect.catch(() => Effect.void),
2026-10-23T11:12:09.4881404Z                        ~~~~~~~~~~~~
2026-10-23T11:12:09.4881507Z
2026-10-23T11:12:09.4882018Z 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-23T11:12:09.4882531Z
2026-10-23T11:12:09.4882639Z 7268                   return yield* Effect.fail(failedTermination.error);
2026-10-23T11:12:09.4882861Z                               ~~~~~
2026-10-23T11:12:09.4882963Z
2026-10-23T11:12:09.4883522Z 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-23T11:12:09.4884135Z
2026-10-23T11:12:09.4884268Z 33 const DEFAULT_GROK_SETTINGS = Schema.decodeUnknownSync(GrokSettings)({});
2026-10-23T11:12:09.4884525Z                                         ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4884651Z
2026-10-23T11:12:09.4885210Z 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-23T11:12:09.4885817Z
2026-10-23T11:12:09.4885980Z 414 const DEFAULT_MUSE_SETTINGS = Schema.decodeUnknownSync(MuseSettings)({ enabled: true });
2026-10-23T11:12:09.4886271Z                                          ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4886399Z
2026-10-23T11:12:09.4886964Z 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-23T11:12:09.4887465Z
2026-10-23T11:12:09.4887532Z 242       execute: (input) =>
2026-10-23T11:12:09.4887684Z           ~~~~~~~
2026-10-23T11:12:09.4887765Z
2026-10-23T11:12:09.4888110Z src/orchestration-v2/CheckpointRestoreSafety.test.ts:104:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4888502Z
2026-10-23T11:12:09.4888644Z 104             get: () => Effect.succeed(Option.some({ workspaceRoot: parent } as never)),
2026-10-23T11:12:09.4888897Z                            ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4889008Z
2026-10-23T11:12:09.4889465Z 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-23T11:12:09.4890049Z
2026-10-23T11:12:09.4890117Z 41             Effect.catch((error) =>
2026-10-23T11:12:09.4890287Z                ~~~~~~~~~~~~
2026-10-23T11:12:09.4890379Z
2026-10-23T11:12:09.4890828Z 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-23T11:12:09.4891330Z
2026-10-23T11:12:09.4891398Z 83                 Effect.catch((error) =>
2026-10-23T11:12:09.4891570Z                    ~~~~~~~~~~~~
2026-10-23T11:12:09.4891671Z
2026-10-23T11:12:09.4892141Z src/orchestration-v2/CheckpointRollbackService.test.ts:233:22 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4892539Z
2026-10-23T11:12:09.4892673Z 233               return Effect.succeed(Option.some({ workspaceRoot } as never));
2026-10-23T11:12:09.4892914Z                          ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4893021Z
2026-10-23T11:12:09.4893487Z 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-23T11:12:09.4893999Z
2026-10-23T11:12:09.4894085Z 142         const batchAbort = new AbortController();
2026-10-23T11:12:09.4894284Z                                ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4894406Z
2026-10-23T11:12:09.4894888Z 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-23T11:12:09.4895416Z
2026-10-23T11:12:09.4895482Z 168     Effect.flatMap((frame) =>
2026-10-23T11:12:09.4895647Z         ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4895736Z
2026-10-23T11:12:09.4896054Z src/orchestration-v2/CommandReceiptStore.ts:164:29 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4896423Z
2026-10-23T11:12:09.4896515Z 164               onNone: () => Effect.succeed(Option.none()),
2026-10-23T11:12:09.4896722Z                                 ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4896841Z
2026-10-23T11:12:09.4897158Z src/orchestration-v2/CommandReceiptStore.ts:167:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4897524Z
2026-10-23T11:12:09.4897605Z 167                   ? Effect.succeed(Option.none())
2026-10-23T11:12:09.4897797Z                         ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4897904Z
2026-10-23T11:12:09.4898220Z src/orchestration-v2/CommandReceiptStore.ts:168:58 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T11:12:09.4898600Z
2026-10-23T11:12:09.4898736Z 168                   : fromApplicationReceipt(receipt).pipe(Effect.map(Option.some)),
2026-10-23T11:12:09.4899007Z                                                              ~~~~~~~~~~
2026-10-23T11:12:09.4899142Z
2026-10-23T11:12:09.4899457Z src/orchestration-v2/CommandReceiptStore.ts:183:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4899827Z
2026-10-23T11:12:09.4899908Z 183               ? Effect.succeed(Option.none())
2026-10-23T11:12:09.4900099Z                     ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4900207Z
2026-10-23T11:12:09.4900528Z src/orchestration-v2/CommandReceiptStore.ts:192:25 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T11:12:09.4900908Z
2026-10-23T11:12:09.4900989Z 192                 }).pipe(Effect.map(Option.some)),
2026-10-23T11:12:09.4901247Z                             ~~~~~~~~~~
2026-10-23T11:12:09.4901354Z
2026-10-23T11:12:09.4901650Z src/orchestration-v2/EffectOutbox.ts:429:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4902080Z
2026-10-23T11:12:09.4902154Z 429               ? Effect.succeed(Option.none())
2026-10-23T11:12:09.4902345Z                     ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4902449Z
2026-10-23T11:12:09.4902804Z src/orchestration-v2/EffectOutbox.ts:430:39 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T11:12:09.4903160Z
2026-10-23T11:12:09.4903261Z 430               : rowToEffect(row).pipe(Effect.map(Option.some));
2026-10-23T11:12:09.4903478Z                                           ~~~~~~~~~~
2026-10-23T11:12:09.4903599Z
2026-10-23T11:12:09.4903908Z src/orchestration-v2/EffectWorker.test.ts:107:20 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4904269Z
2026-10-23T11:12:09.4904352Z 107         get: () => Effect.succeed(Option.none()),
2026-10-23T11:12:09.4904543Z                        ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4904650Z
2026-10-23T11:12:09.4904952Z src/orchestration-v2/EffectWorker.test.ts:302:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4905313Z
2026-10-23T11:12:09.4905426Z 302       claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-23T11:12:09.4905648Z                            ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4905759Z
2026-10-23T11:12:09.4906067Z src/orchestration-v2/EffectWorker.test.ts:369:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4906424Z
2026-10-23T11:12:09.4906538Z 369       claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-23T11:12:09.4906756Z                            ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4906866Z
2026-10-23T11:12:09.4907170Z src/orchestration-v2/EffectWorker.test.ts:436:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4907523Z
2026-10-23T11:12:09.4907632Z 436       claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-23T11:12:09.4907854Z                            ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4907959Z
2026-10-23T11:12:09.4908269Z src/orchestration-v2/EffectWorker.test.ts:437:18 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4908629Z
2026-10-23T11:12:09.4908729Z 437       get: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-23T11:12:09.4908936Z                      ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4909044Z
2026-10-23T11:12:09.4909483Z 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-23T11:12:09.4909968Z
2026-10-23T11:12:09.4910039Z 98       execute: (effect, options) => {
2026-10-23T11:12:09.4910094Z          ~~~~~~~
2026-10-23T11:12:09.4910097Z
2026-10-23T11:12:09.4910538Z 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-23T11:12:09.4910541Z
2026-10-23T11:12:09.4910613Z 180                 Effect.catch((cause) =>
2026-10-23T11:12:09.4910671Z                     ~~~~~~~~~~~~
2026-10-23T11:12:09.4910673Z
2026-10-23T11:12:09.4911045Z 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-23T11:12:09.4911109Z
2026-10-23T11:12:09.4911177Z 110         append: (input) =>
2026-10-23T11:12:09.4911231Z             ~~~~~~
2026-10-23T11:12:09.4911234Z
2026-10-23T11:12:09.4911631Z 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-23T11:12:09.4911637Z
2026-10-23T11:12:09.4911707Z 120         appendProjectEvent: (event) =>
2026-10-23T11:12:09.4911856Z             ~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4911859Z
2026-10-23T11:12:09.4912250Z 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-23T11:12:09.4912256Z
2026-10-23T11:12:09.4912333Z 131         latestSequence: (input) =>
2026-10-23T11:12:09.4912389Z             ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4912392Z
2026-10-23T11:12:09.4919216Z src/orchestration-v2/FoundationPersistence.test.ts:1791:26 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4919226Z
2026-10-23T11:12:09.4919360Z 1791         claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-23T11:12:09.4919427Z                               ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4919430Z
2026-10-23T11:12:09.4919779Z src/orchestration-v2/FoundationPersistence.test.ts:1793:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4919783Z
2026-10-23T11:12:09.4919849Z 1793           Effect.succeed(
2026-10-23T11:12:09.4919911Z                ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4919914Z
2026-10-23T11:12:09.4920249Z src/orchestration-v2/FoundationPersistence.test.ts:2663:30 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4920255Z
2026-10-23T11:12:09.4920361Z 2663             nextClaimableAt: Effect.succeed(Option.none()),
2026-10-23T11:12:09.4920432Z                                   ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4920434Z
2026-10-23T11:12:09.4920765Z src/orchestration-v2/FoundationPersistence.test.ts:2880:30 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4920768Z
2026-10-23T11:12:09.4920868Z 2880             nextClaimableAt: Effect.succeed(Option.none()),
2026-10-23T11:12:09.4920933Z                                   ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4920936Z
2026-10-23T11:12:09.4921404Z src/orchestration-v2/Orchestrator.ts:11738:7 - suggestion TS377120: `Effect.filterOrFail` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-23T11:12:09.4921410Z
2026-10-23T11:12:09.4921480Z 11738       Effect.flatMap((planned) =>
2026-10-23T11:12:09.4921539Z             ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4921542Z
2026-10-23T11:12:09.4922037Z src/orchestration-v2/Orchestrator.ts:12161:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.restartContinuationPending")((run) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4922044Z
2026-10-23T11:12:09.4922125Z 12161     restartContinuationPending: (run) =>
2026-10-23T11:12:09.4922192Z           ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4922195Z
2026-10-23T11:12:09.4922618Z src/orchestration-v2/Orchestrator.ts:12163:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.awaitRestartContinuation")((run) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4922731Z
2026-10-23T11:12:09.4922808Z 12163     awaitRestartContinuation: (run) =>
2026-10-23T11:12:09.4922866Z           ~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4922869Z
2026-10-23T11:12:09.4923281Z src/orchestration-v2/Orchestrator.ts:12166:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.autoArmLimitRecovery")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4923283Z
2026-10-23T11:12:09.4923360Z 12166     autoArmLimitRecovery: (input) =>
2026-10-23T11:12:09.4923421Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4923423Z
2026-10-23T11:12:09.4923887Z src/orchestration-v2/Orchestrator.ts:12194:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.searchThread")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4923891Z
2026-10-23T11:12:09.4923952Z 12194     searchThread: (input) =>
2026-10-23T11:12:09.4924008Z           ~~~~~~~~~~~~
2026-10-23T11:12:09.4924014Z
2026-10-23T11:12:09.4924515Z src/orchestration-v2/Orchestrator.ts:12202: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-23T11:12:09.4924518Z
2026-10-23T11:12:09.4924674Z 12202     getThreadHistoryPage: (threadId, cursor, throughEntryId, conversationOnly) =>
2026-10-23T11:12:09.4924730Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4924733Z
2026-10-23T11:12:09.4925158Z src/orchestration-v2/Orchestrator.ts:12206:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getTimelinePage")((threadId, options) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4925163Z
2026-10-23T11:12:09.4925242Z 12206     getTimelinePage: (threadId, options) =>
2026-10-23T11:12:09.4925302Z           ~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4925307Z
2026-10-23T11:12:09.4925704Z src/orchestration-v2/Orchestrator.ts:12210:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getMessageCount")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4925707Z
2026-10-23T11:12:09.4925775Z 12210     getMessageCount: (threadId) =>
2026-10-23T11:12:09.4925828Z           ~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4925831Z
2026-10-23T11:12:09.4926221Z src/orchestration-v2/Orchestrator.ts:12214:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getTurnItem")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4926224Z
2026-10-23T11:12:09.4926289Z 12214     getTurnItem: (input) =>
2026-10-23T11:12:09.4926344Z           ~~~~~~~~~~~
2026-10-23T11:12:09.4926347Z
2026-10-23T11:12:09.4926920Z src/orchestration-v2/Orchestrator.ts:12222:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadRecords")((threadId, fields, filter) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4926926Z
2026-10-23T11:12:09.4927021Z 12222     getThreadRecords: (threadId, fields, filter) =>
2026-10-23T11:12:09.4927080Z           ~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4927083Z
2026-10-23T11:12:09.4927492Z src/orchestration-v2/Orchestrator.ts:12226:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadProjection")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4927495Z
2026-10-23T11:12:09.4927574Z 12226     getThreadProjection: (threadId) =>
2026-10-23T11:12:09.4927635Z           ~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4927638Z
2026-10-23T11:12:09.4928045Z src/orchestration-v2/Orchestrator.ts:12230:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getCheckpointContext")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4928140Z
2026-10-23T11:12:09.4928220Z 12230     getCheckpointContext: (threadId) =>
2026-10-23T11:12:09.4928277Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4928281Z
2026-10-23T11:12:09.4928686Z src/orchestration-v2/Orchestrator.ts:12234:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadSnapshot")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4928689Z
2026-10-23T11:12:09.4928761Z 12234     getThreadSnapshot: (threadId) =>
2026-10-23T11:12:09.4928816Z           ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4928819Z
2026-10-23T11:12:09.4929339Z src/orchestration-v2/Orchestrator.ts:12238:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadSnapshotWindow")((threadId, options) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4929343Z
2026-10-23T11:12:09.4929442Z 12238     getThreadSnapshotWindow: (threadId, options) =>
2026-10-23T11:12:09.4929503Z           ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4929506Z
2026-10-23T11:12:09.4929904Z src/orchestration-v2/Orchestrator.ts:12242:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getShellSnapshot")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4929907Z
2026-10-23T11:12:09.4929974Z 12242     getShellSnapshot: (options) =>
2026-10-23T11:12:09.4930031Z           ~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4930033Z
2026-10-23T11:12:09.4930450Z src/orchestration-v2/Orchestrator.ts:12244:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.listActiveSubagentThreadIds")(() => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4930453Z
2026-10-23T11:12:09.4930530Z 12244     listActiveSubagentThreadIds: () =>
2026-10-23T11:12:09.4930588Z           ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4930593Z
2026-10-23T11:12:09.4930998Z src/orchestration-v2/Orchestrator.ts:12246:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.readShellSnapshot")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4931000Z
2026-10-23T11:12:09.4931072Z 12246     readShellSnapshot: (options) =>
2026-10-23T11:12:09.4931130Z           ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4931133Z
2026-10-23T11:12:09.4931536Z src/orchestration-v2/Orchestrator.ts:12253:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadShell")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4931539Z
2026-10-23T11:12:09.4931605Z 12253     getThreadShell: (threadId) =>
2026-10-23T11:12:09.4931664Z           ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4931667Z
2026-10-23T11:12:09.4932154Z src/orchestration-v2/Orchestrator.ts:12257:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadEventSequence")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4932159Z
2026-10-23T11:12:09.4932241Z 12257     getThreadEventSequence: (threadId) =>
2026-10-23T11:12:09.4932302Z           ~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4932305Z
2026-10-23T11:12:09.4932719Z 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-23T11:12:09.4932726Z
2026-10-23T11:12:09.4932816Z 160         getInstance: () => Effect.succeed(undefined),
2026-10-23T11:12:09.4932892Z                                ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4932896Z
2026-10-23T11:12:09.4933281Z 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-23T11:12:09.4933343Z
2026-10-23T11:12:09.4933488Z 269     getShell: (projectId) => get(projectId).pipe(Effect.map(Option.map(toShell))),
2026-10-23T11:12:09.4933540Z         ~~~~~~~~
2026-10-23T11:12:09.4933543Z
2026-10-23T11:12:09.4933931Z 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-23T11:12:09.4933934Z
2026-10-23T11:12:09.4933999Z 270     listShells: (options) =>
2026-10-23T11:12:09.4934055Z         ~~~~~~~~~~
2026-10-23T11:12:09.4934058Z
2026-10-23T11:12:09.4934442Z src/orchestration-v2/ProjectionControlReads.test.ts:279:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4934446Z
2026-10-23T11:12:09.4934504Z 279           Effect.succeed(
2026-10-23T11:12:09.4934567Z               ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4934570Z
2026-10-23T11:12:09.4934990Z 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-23T11:12:09.4934993Z
2026-10-23T11:12:09.4935054Z 78       get: (instanceId) =>
2026-10-23T11:12:09.4935104Z          ~~~
2026-10-23T11:12:09.4935111Z
2026-10-23T11:12:09.4935510Z 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-23T11:12:09.4935513Z
2026-10-23T11:12:09.4935569Z 135       list: () =>
2026-10-23T11:12:09.4935621Z           ~~~~
2026-10-23T11:12:09.4935623Z
2026-10-23T11:12:09.4936036Z 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-23T11:12:09.4936040Z
2026-10-23T11:12:09.4936147Z 93       record: (properties: Readonly<Record<string, unknown>>) =>
2026-10-23T11:12:09.4936202Z          ~~~~~~
2026-10-23T11:12:09.4936204Z
2026-10-23T11:12:09.4936664Z 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-23T11:12:09.4936666Z
2026-10-23T11:12:09.4936746Z 818               Effect.flatMap((storedEvents) =>
2026-10-23T11:12:09.4936803Z                   ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4936806Z
2026-10-23T11:12:09.4937128Z src/orchestration-v2/ProviderSessionManager.test.ts:1155:19 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4937136Z
2026-10-23T11:12:09.4937287Z 1155                 : Effect.succeed(Option.some(makeBrowserAccessProject(requestedProjectId))),
2026-10-23T11:12:09.4937349Z                        ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4937353Z
2026-10-23T11:12:09.4937683Z src/orchestration-v2/ProviderTurnStartService.test.ts:150:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4937685Z
2026-10-23T11:12:09.4937747Z 150             Effect.succeed(
2026-10-23T11:12:09.4937801Z                 ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4937804Z
2026-10-23T11:12:09.4938135Z src/orchestration-v2/ProviderTurnStartService.test.ts:703:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4938137Z
2026-10-23T11:12:09.4938306Z 703             Effect.succeed(Option.some({ workspaceRoot: "/tmp/native-account-project" } as never)),
2026-10-23T11:12:09.4938424Z                 ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4938427Z
2026-10-23T11:12:09.4938757Z src/orchestration-v2/ProviderTurnStartService.testkit.ts:14:20 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4938760Z
2026-10-23T11:12:09.4938844Z 14     getById: () => Effect.succeed(Option.none()),
2026-10-23T11:12:09.4938905Z                       ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4938908Z
2026-10-23T11:12:09.4939472Z 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-23T11:12:09.4939475Z
2026-10-23T11:12:09.4939549Z 499               Effect.catchCause((cause) =>
2026-10-23T11:12:09.4939608Z                   ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4939613Z
2026-10-23T11:12:09.4940124Z 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-23T11:12:09.4940127Z
2026-10-23T11:12:09.4940205Z 1289       return runExecution.startRootRun({
2026-10-23T11:12:09.4940256Z            ~~~~~~
2026-10-23T11:12:09.4940259Z
2026-10-23T11:12:09.4940585Z src/orchestration-v2/PullRequestWatchReactor.ts:478:53 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T11:12:09.4940588Z
2026-10-23T11:12:09.4940715Z 478             ? pullRequests.activity(reference).pipe(Effect.map(Option.some))
2026-10-23T11:12:09.4940794Z                                                         ~~~~~~~~~~
2026-10-23T11:12:09.4940797Z
2026-10-23T11:12:09.4941256Z 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-23T11:12:09.4941262Z
2026-10-23T11:12:09.4941351Z 49       cleanupScheduledTasks: (threadId: ThreadId) =>
2026-10-23T11:12:09.4941408Z          ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4941411Z
2026-10-23T11:12:09.4941922Z 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-23T11:12:09.4941926Z
2026-10-23T11:12:09.4942003Z 58       cleanupTerminals: (threadId: string) =>
2026-10-23T11:12:09.4942061Z          ~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4942064Z
2026-10-23T11:12:09.4942500Z 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-23T11:12:09.4942505Z
2026-10-23T11:12:09.4942584Z 66       cleanupPreviews: (threadId: string) =>
2026-10-23T11:12:09.4942639Z          ~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4942647Z
2026-10-23T11:12:09.4943096Z 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-23T11:12:09.4943099Z
2026-10-23T11:12:09.4943219Z 74       cleanupAttachments: (attachmentIds: ReadonlyArray<string>) =>
2026-10-23T11:12:09.4943276Z          ~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4943279Z
2026-10-23T11:12:09.4943606Z 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-23T11:12:09.4943670Z
2026-10-23T11:12:09.4943745Z 1812         ).pipe(Effect.map(Option.some)),
2026-10-23T11:12:09.4943800Z                     ~~~~~~~~~~
2026-10-23T11:12:09.4943802Z
2026-10-23T11:12:09.4944266Z 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-23T11:12:09.4944269Z
2026-10-23T11:12:09.4944341Z 919               Effect.catchCause((cause) =>
2026-10-23T11:12:09.4944401Z                   ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4944458Z
2026-10-23T11:12:09.4944753Z src/orchestration-v2/RuntimePolicy.test.ts:90:9 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4944760Z
2026-10-23T11:12:09.4944816Z 90         Effect.succeed(
2026-10-23T11:12:09.4944875Z            ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4944878Z
2026-10-23T11:12:09.4945252Z 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-23T11:12:09.4945255Z
2026-10-23T11:12:09.4945316Z 54   resolve: (input) =>
2026-10-23T11:12:09.4945365Z      ~~~~~~~
2026-10-23T11:12:09.4945367Z
2026-10-23T11:12:09.4945684Z src/orchestration-v2/RuntimeRequestService.test.ts:29:7 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4945687Z
2026-10-23T11:12:09.4945748Z 29       Effect.succeed(
2026-10-23T11:12:09.4945803Z          ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4945806Z
2026-10-23T11:12:09.4946117Z src/orchestration-v2/ThreadLaunchService.test.ts:189:33 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4946126Z
2026-10-23T11:12:09.4946241Z 189       getByWorkspaceRoot: () => Effect.succeed(Option.some(project)),
2026-10-23T11:12:09.4946311Z                                     ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4946316Z
2026-10-23T11:12:09.4946627Z src/orchestration-v2/ThreadLaunchService.test.ts:220:32 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4946629Z
2026-10-23T11:12:09.4946736Z 220         folderForThread: () => Effect.succeed(Option.none()),
2026-10-23T11:12:09.4946799Z                                    ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4946808Z
2026-10-23T11:12:09.4947214Z 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-23T11:12:09.4947217Z
2026-10-23T11:12:09.4947282Z 91     archive: (input) =>
2026-10-23T11:12:09.4947336Z        ~~~~~~~
2026-10-23T11:12:09.4947339Z
2026-10-23T11:12:09.4947749Z 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-23T11:12:09.4947752Z
2026-10-23T11:12:09.4947812Z 97     unarchive: (input) =>
2026-10-23T11:12:09.4947865Z        ~~~~~~~~~
2026-10-23T11:12:09.4947867Z
2026-10-23T11:12:09.4948271Z 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-23T11:12:09.4948274Z
2026-10-23T11:12:09.4948335Z 103     delete: (input) =>
2026-10-23T11:12:09.4948386Z         ~~~~~~
2026-10-23T11:12:09.4948389Z
2026-10-23T11:12:09.4948812Z 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-23T11:12:09.4948873Z
2026-10-23T11:12:09.4948941Z 109     updateMetadata: (input) =>
2026-10-23T11:12:09.4949001Z         ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4949003Z
2026-10-23T11:12:09.4949425Z 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-23T11:12:09.4949428Z
2026-10-23T11:12:09.4949560Z 118     setRuntimeMode: (input) =>
2026-10-23T11:12:09.4949616Z         ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4949619Z
2026-10-23T11:12:09.4950055Z 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-23T11:12:09.4950060Z
2026-10-23T11:12:09.4950129Z 125     setInteractionMode: (input) =>
2026-10-23T11:12:09.4950186Z         ~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4950188Z
2026-10-23T11:12:09.4950618Z 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-23T11:12:09.4950621Z
2026-10-23T11:12:09.4950686Z 132     setModelSelection: (input) =>
2026-10-23T11:12:09.4950742Z         ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4950747Z
2026-10-23T11:12:09.4951216Z 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-23T11:12:09.4951221Z
2026-10-23T11:12:09.4951293Z 689       Effect.flatMap((projection) =>
2026-10-23T11:12:09.4951344Z           ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4951353Z
2026-10-23T11:12:09.4951697Z 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-23T11:12:09.4951699Z
2026-10-23T11:12:09.4951857Z 706     ensureProjectionTranscript(input.threadId)
2026-10-23T11:12:09.4951964Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4952154Z 707       .pipe(Effect.andThen(orchestrator.getThreadRecords(input.threadId, fields, filter)))
2026-10-23T11:12:09.4952261Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4952314Z ...
2026-10-23T11:12:09.4952371Z 726         ),
2026-10-23T11:12:09.4952423Z     ~~~~~~~~~~
2026-10-23T11:12:09.4952472Z 727       );
2026-10-23T11:12:09.4952526Z     ~~~~~~~
2026-10-23T11:12:09.4952531Z
2026-10-23T11:12:09.4953002Z 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-23T11:12:09.4953005Z
2026-10-23T11:12:09.4953078Z 717         Effect.flatMap((projection) =>
2026-10-23T11:12:09.4953131Z             ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4953134Z
2026-10-23T11:12:09.4953605Z src/orchestration-v2/ThreadManagementService.ts:1130: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-23T11:12:09.4953609Z
2026-10-23T11:12:09.4953738Z 1130     if (failures[0] !== undefined) return yield* Effect.fail(failures[0]);
2026-10-23T11:12:09.4953810Z                                                ~~~~~
2026-10-23T11:12:09.4953879Z
2026-10-23T11:12:09.4954318Z src/orchestration-v2/ThreadManagementService.ts:1141:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.searchThread")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4954321Z
2026-10-23T11:12:09.4954383Z 1141     searchThread: (input) =>
2026-10-23T11:12:09.4954444Z          ~~~~~~~~~~~~
2026-10-23T11:12:09.4954448Z
2026-10-23T11:12:09.4955049Z src/orchestration-v2/ThreadManagementService.ts:1146: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-23T11:12:09.4955052Z
2026-10-23T11:12:09.4955201Z 1146     getThreadHistoryPage: (threadId, cursor, throughEntryId, conversationOnly) =>
2026-10-23T11:12:09.4955259Z          ~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4955264Z
2026-10-23T11:12:09.4955721Z src/orchestration-v2/ThreadManagementService.ts:1152:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.getTimelinePage")((threadId, options) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4955726Z
2026-10-23T11:12:09.4955803Z 1152     getTimelinePage: (threadId, options) =>
2026-10-23T11:12:09.4955858Z          ~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4955861Z
2026-10-23T11:12:09.4956307Z src/orchestration-v2/ThreadManagementService.ts:1156:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.getMessageCount")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4956310Z
2026-10-23T11:12:09.4956378Z 1156     getMessageCount: (threadId) =>
2026-10-23T11:12:09.4956432Z          ~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4956435Z
2026-10-23T11:12:09.4956864Z src/orchestration-v2/ThreadManagementService.ts:1160:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.getTurnItem")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4956869Z
2026-10-23T11:12:09.4956933Z 1160     getTurnItem: (input) =>
2026-10-23T11:12:09.4956991Z          ~~~~~~~~~~~
2026-10-23T11:12:09.4956994Z
2026-10-23T11:12:09.4957471Z src/orchestration-v2/ThreadManagementService.ts:1165:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.getThreadRecords")((threadId, fields, filter) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4957474Z
2026-10-23T11:12:09.4957566Z 1165     getThreadRecords: (threadId, fields, filter) =>
2026-10-23T11:12:09.4957623Z          ~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4957626Z
2026-10-23T11:12:09.4958121Z src/orchestration-v2/ThreadManagementService.ts:1205:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("LegacyV1ThreadImporter.LegacyV1ThreadImporter.ensureTranscript")(() => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.4958127Z
2026-10-23T11:12:09.4958298Z 1205     ensureTranscript: () => Effect.succeed({ importedThreadCount: 0, importedMessageCount: 0 }),
2026-10-23T11:12:09.4958355Z          ~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4958357Z
2026-10-23T11:12:09.4958690Z src/orchestration-v2/ThreadPullRequestService.test.ts:135:31 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4958694Z
2026-10-23T11:12:09.4958801Z 135               getShell: () => Effect.succeed(Option.some(project)),
2026-10-23T11:12:09.4958868Z                                   ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4958870Z
2026-10-23T11:12:09.4959352Z 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-23T11:12:09.4959412Z
2026-10-23T11:12:09.4959487Z 327                 Effect.catchCause((cause) =>
2026-10-23T11:12:09.4959544Z                     ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4959547Z
2026-10-23T11:12:09.4960018Z 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-23T11:12:09.4960021Z
2026-10-23T11:12:09.4960092Z 353           Effect.catchCause((cause) =>
2026-10-23T11:12:09.4960205Z               ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4960208Z
2026-10-23T11:12:09.4960684Z 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-23T11:12:09.4960689Z
2026-10-23T11:12:09.4960758Z 516           Effect.catchCause((cause) =>
2026-10-23T11:12:09.4960817Z               ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4960820Z
2026-10-23T11:12:09.4961290Z 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-23T11:12:09.4961293Z
2026-10-23T11:12:09.4961359Z 534       Effect.catchCause((cause) =>
2026-10-23T11:12:09.4961417Z           ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4961420Z
2026-10-23T11:12:09.4961955Z 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-23T11:12:09.4961958Z
2026-10-23T11:12:09.4962030Z 576         Effect.catchCause((cause) =>
2026-10-23T11:12:09.4962090Z             ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4962093Z
2026-10-23T11:12:09.4962544Z 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-23T11:12:09.4962547Z
2026-10-23T11:12:09.4962615Z 106       normalize: (item, runOrdinal) =>
2026-10-23T11:12:09.4962667Z           ~~~~~~~~~
2026-10-23T11:12:09.4962670Z
2026-10-23T11:12:09.4963188Z 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-23T11:12:09.4963191Z
2026-10-23T11:12:09.4963320Z 54 const thread = Schema.decodeUnknownSync(OrchestrationV2AppThread)({
2026-10-23T11:12:09.4963386Z                          ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4963389Z
2026-10-23T11:12:09.4963868Z 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-23T11:12:09.4963871Z
2026-10-23T11:12:09.4963924Z 231           try {
2026-10-23T11:12:09.4963978Z               ~~~~~
2026-10-23T11:12:09.4964080Z 232             decodeThreadHistoryCursor(args.query.cursor);
2026-10-23T11:12:09.4964165Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4964214Z ...
2026-10-23T11:12:09.4964382Z 236             return yield* failEnvironmentInternal("orchestration_thread_history_failed", cause);
2026-10-23T11:12:09.4964495Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4964629Z 237           }
2026-10-23T11:12:09.4964680Z     ~~~~~~~~~~~
2026-10-23T11:12:09.4964683Z
2026-10-23T11:12:09.4964996Z src/orchestration-v2/runtimeLayer.test.ts:120:18 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4964999Z
2026-10-23T11:12:09.4965083Z 120   getById: () => Effect.succeed(Option.none()),
2026-10-23T11:12:09.4965143Z                      ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4965146Z
2026-10-23T11:12:09.4965510Z src/orchestration-v2/runtimeLayer.test.ts:996:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4965514Z
2026-10-23T11:12:09.4965573Z 996           Effect.succeed(
2026-10-23T11:12:09.4965635Z               ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4965638Z
2026-10-23T11:12:09.4966109Z 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-23T11:12:09.4966114Z
2026-10-23T11:12:09.4966179Z 40         append: (input) =>
2026-10-23T11:12:09.4966230Z            ~~~~~~
2026-10-23T11:12:09.4966233Z
2026-10-23T11:12:09.4966707Z 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-23T11:12:09.4966710Z
2026-10-23T11:12:09.4966791Z 283       const awaitDispatch = (key: string) =>
2026-10-23T11:12:09.4966851Z                 ~~~~~~~~~~~~~
2026-10-23T11:12:09.4966853Z
2026-10-23T11:12:09.4967385Z 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-23T11:12:09.4967392Z
2026-10-23T11:12:09.4967456Z 447       execute: () => Effect.void,
2026-10-23T11:12:09.4967514Z           ~~~~~~~
2026-10-23T11:12:09.4967517Z
2026-10-23T11:12:09.4967948Z 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-23T11:12:09.4967951Z
2026-10-23T11:12:09.4968012Z 92     list: (input) =>
2026-10-23T11:12:09.4968066Z        ~~~~
2026-10-23T11:12:09.4968069Z
2026-10-23T11:12:09.4968494Z 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-23T11:12:09.4968498Z
2026-10-23T11:12:09.4968557Z 102     set: (input) =>
2026-10-23T11:12:09.4968613Z         ~~~
2026-10-23T11:12:09.4968616Z
2026-10-23T11:12:09.4969036Z 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-23T11:12:09.4969039Z
2026-10-23T11:12:09.4969096Z 54     get: (key) =>
2026-10-23T11:12:09.4969146Z        ~~~
2026-10-23T11:12:09.4969148Z
2026-10-23T11:12:09.4969582Z 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-23T11:12:09.4969585Z
2026-10-23T11:12:09.4969650Z 64     put: (key, guide) =>
2026-10-23T11:12:09.4969703Z        ~~~
2026-10-23T11:12:09.4969706Z
2026-10-23T11:12:09.4970130Z 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-23T11:12:09.4970224Z
2026-10-23T11:12:09.4970286Z 45         Effect.catch((error) =>
2026-10-23T11:12:09.4970343Z            ~~~~~~~~~~~~
2026-10-23T11:12:09.4970346Z
2026-10-23T11:12:09.4970751Z 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-23T11:12:09.4970753Z
2026-10-23T11:12:09.4970837Z 75       awaitAttached: () => Effect.succeed(false),
2026-10-23T11:12:09.4970951Z          ~~~~~~~~~~~~~
2026-10-23T11:12:09.4970954Z
2026-10-23T11:12:09.4971350Z 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-23T11:12:09.4971355Z
2026-10-23T11:12:09.4971433Z 78       isAttached: () => Effect.succeed(false),
2026-10-23T11:12:09.4971489Z          ~~~~~~~~~~
2026-10-23T11:12:09.4971492Z
2026-10-23T11:12:09.4971935Z 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-23T11:12:09.4971939Z
2026-10-23T11:12:09.4972084Z 79       endpoint: () => Effect.die("No desktop app is attached to this server."),
2026-10-23T11:12:09.4972139Z          ~~~~~~~~
2026-10-23T11:12:09.4972142Z
2026-10-23T11:12:09.4972528Z 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-23T11:12:09.4972532Z
2026-10-23T11:12:09.4972597Z 80       pointer: () => Effect.void,
2026-10-23T11:12:09.4972652Z          ~~~~~~~
2026-10-23T11:12:09.4972658Z
2026-10-23T11:12:09.4973083Z 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-23T11:12:09.4973086Z
2026-10-23T11:12:09.4973155Z 194     awaitAttached: (key, timeout) =>
2026-10-23T11:12:09.4973206Z         ~~~~~~~~~~~~~
2026-10-23T11:12:09.4973212Z
2026-10-23T11:12:09.4973613Z 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-23T11:12:09.4973616Z
2026-10-23T11:12:09.4973748Z 216     isAttached: (key) => Effect.sync(() => attachedTabs.has(keyOf(key))),
2026-10-23T11:12:09.4973805Z         ~~~~~~~~~~
2026-10-23T11:12:09.4973808Z
2026-10-23T11:12:09.4974217Z 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-23T11:12:09.4974222Z
2026-10-23T11:12:09.4974355Z 218     pointer: (key, pointer) => command({ type: "pointer", ...key, ...pointer }),
2026-10-23T11:12:09.4974406Z         ~~~~~~~
2026-10-23T11:12:09.4974409Z
2026-10-23T11:12:09.4974996Z 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-23T11:12:09.4975000Z
2026-10-23T11:12:09.4975122Z 480     executable: () => Effect.runPromise(previewBrowser.executable),
2026-10-23T11:12:09.4975187Z                           ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4975190Z
2026-10-23T11:12:09.4975775Z 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-23T11:12:09.4975839Z
2026-10-23T11:12:09.4975903Z 687       ? Effect.runPromise(
2026-10-23T11:12:09.4975964Z             ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4975967Z
2026-10-23T11:12:09.4976579Z 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-23T11:12:09.4976582Z
2026-10-23T11:12:09.4976683Z 696     const scope = await Effect.runPromise(Scope.make());
2026-10-23T11:12:09.4976749Z                             ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4976755Z
2026-10-23T11:12:09.4977310Z 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-23T11:12:09.4977318Z
2026-10-23T11:12:09.4977398Z 698       const endpoint = await Effect.runPromise(
2026-10-23T11:12:09.4977465Z                                  ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4977468Z
2026-10-23T11:12:09.4978030Z 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-23T11:12:09.4978033Z
2026-10-23T11:12:09.4978146Z 708           await Effect.runPromise(Scope.close(scope, Exit.void));
2026-10-23T11:12:09.4978207Z                     ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4978213Z
2026-10-23T11:12:09.4978775Z 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-23T11:12:09.4978778Z
2026-10-23T11:12:09.4978887Z 712       await Effect.runPromise(Scope.close(scope, Exit.void));
2026-10-23T11:12:09.4978953Z                 ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4978956Z
2026-10-23T11:12:09.4979523Z 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-23T11:12:09.4979528Z
2026-10-23T11:12:09.4979596Z 1199     await Effect.runPromise(
2026-10-23T11:12:09.4979657Z                ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4979660Z
2026-10-23T11:12:09.4980223Z 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-23T11:12:09.4980226Z
2026-10-23T11:12:09.4980295Z 1688         : await Effect.runPromise(
2026-10-23T11:12:09.4980358Z                      ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4980363Z
2026-10-23T11:12:09.4980928Z 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-23T11:12:09.4980992Z
2026-10-23T11:12:09.4981063Z 1752             ? await Effect.runPromise(
2026-10-23T11:12:09.4981128Z                          ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4981131Z
2026-10-23T11:12:09.4981475Z 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-23T11:12:09.4981478Z
2026-10-23T11:12:09.4981615Z 1755                     ServerBrowserTabNotFoundError: () => Effect.succeed(undefined),
2026-10-23T11:12:09.4981783Z                                                               ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4981787Z
2026-10-23T11:12:09.4982391Z 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-23T11:12:09.4982399Z
2026-10-23T11:12:09.4982491Z 1761           const { sessions } = await Effect.runPromise(
2026-10-23T11:12:09.4982568Z                                           ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4982571Z
2026-10-23T11:12:09.4983137Z 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-23T11:12:09.4983140Z
2026-10-23T11:12:09.4983217Z 1789             await Effect.runPromise(
2026-10-23T11:12:09.4983274Z                        ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4983282Z
2026-10-23T11:12:09.4983846Z 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-23T11:12:09.4983851Z
2026-10-23T11:12:09.4983924Z 1820               await Effect.runPromise(
2026-10-23T11:12:09.4983987Z                          ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4983991Z
2026-10-23T11:12:09.4984564Z 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-23T11:12:09.4984567Z
2026-10-23T11:12:09.4984735Z 1884       await Effect.runPromise(manager.close({ threadId: tab.threadId, tabId: tab.tabId }));
2026-10-23T11:12:09.4984793Z                  ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4984796Z
2026-10-23T11:12:09.4986161Z 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-23T11:12:09.4986164Z
2026-10-23T11:12:09.4986235Z 1952         await Effect.runPromise(
2026-10-23T11:12:09.4986295Z                    ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4986298Z
2026-10-23T11:12:09.4986862Z 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-23T11:12:09.4986865Z
2026-10-23T11:12:09.4986952Z 1964         const snapshot = await Effect.runPromise(
2026-10-23T11:12:09.4987029Z                                     ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4987124Z
2026-10-23T11:12:09.4987693Z 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-23T11:12:09.4987696Z
2026-10-23T11:12:09.4987766Z 2210         await Effect.runPromise(
2026-10-23T11:12:09.4987830Z                    ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4987832Z
2026-10-23T11:12:09.4988304Z 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-23T11:12:09.4988315Z
2026-10-23T11:12:09.4988417Z 179       const receive = (chunk: Uint8Array | string) => {
2026-10-23T11:12:09.4988484Z                 ~~~~~~~
2026-10-23T11:12:09.4988490Z
2026-10-23T11:12:09.4988983Z 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-23T11:12:09.4988989Z
2026-10-23T11:12:09.4989116Z 209     Effect.catch(() => Effect.succeed(HttpServerResponse.empty())),
2026-10-23T11:12:09.4989168Z         ~~~~~~~~~~~~
2026-10-23T11:12:09.4989170Z
2026-10-23T11:12:09.4989666Z 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-23T11:12:09.4989673Z
2026-10-23T11:12:09.4989841Z 860     resolveAvailableEditors: () => cachedAvailableEditors,
2026-10-23T11:12:09.4989907Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4989910Z
2026-10-23T11:12:09.4990449Z 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-23T11:12:09.4990461Z
2026-10-23T11:12:09.4990589Z 861     resolveFileManagerRevealKind: () =>
2026-10-23T11:12:09.4990654Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4990658Z
2026-10-23T11:12:09.4991221Z 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-23T11:12:09.4991224Z
2026-10-23T11:12:09.4991291Z 865     launchBrowser: (target) =>
2026-10-23T11:12:09.4991349Z         ~~~~~~~~~~~~~
2026-10-23T11:12:09.4991352Z
2026-10-23T11:12:09.4991765Z 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-23T11:12:09.4991771Z
2026-10-23T11:12:09.4991849Z 869     launchEditor: (input) =>
2026-10-23T11:12:09.4991938Z         ~~~~~~~~~~~~
2026-10-23T11:12:09.4991942Z
2026-10-23T11:12:09.4992274Z src/project/AgentSessionImporter.test.ts:212:15 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4992277Z
2026-10-23T11:12:09.4992337Z 212               Effect.succeed(
2026-10-23T11:12:09.4992395Z                   ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4992398Z
2026-10-23T11:12:09.4992704Z src/project/ManagedProjectFolders.ts:346:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4992707Z
2026-10-23T11:12:09.4992814Z 346           ? Effect.succeed(Option.some(folderFor(id.slice(-8))))
2026-10-23T11:12:09.4992877Z                 ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4992879Z
2026-10-23T11:12:09.4993173Z src/project/ManagedProjectFolders.ts:348:15 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.4993254Z
2026-10-23T11:12:09.4993344Z 348             ? Effect.succeed(Option.some(fullFolder))
2026-10-23T11:12:09.4993407Z                   ~~~~~~~~~~~~~~
2026-10-23T11:12:09.4993409Z
2026-10-23T11:12:09.4993817Z 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-23T11:12:09.4993820Z
2026-10-23T11:12:09.4993973Z 432     start: (input, hooks) => locked(start(input, hooks)),
2026-10-23T11:12:09.4994029Z         ~~~~~
2026-10-23T11:12:09.4994032Z
2026-10-23T11:12:09.4994427Z 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-23T11:12:09.4994435Z
2026-10-23T11:12:09.4994528Z 433     cancel: (projectId) => locked(cancel(projectId)),
2026-10-23T11:12:09.4994584Z         ~~~~~~
2026-10-23T11:12:09.4994587Z
2026-10-23T11:12:09.4994974Z 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-23T11:12:09.4994978Z
2026-10-23T11:12:09.4995065Z 434     retry: (projectId) => locked(retry(projectId)),
2026-10-23T11:12:09.4995127Z         ~~~~~
2026-10-23T11:12:09.4995131Z
2026-10-23T11:12:09.4995525Z 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-23T11:12:09.4995528Z
2026-10-23T11:12:09.4995622Z 435     discard: (projectId) => locked(discard(projectId)),
2026-10-23T11:12:09.4995676Z         ~~~~~~~
2026-10-23T11:12:09.4995683Z
2026-10-23T11:12:09.4996094Z 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-23T11:12:09.4996098Z
2026-10-23T11:12:09.4996223Z 21         get: (key) => Effect.sync(() => Option.fromUndefinedOr(bytes.get(key))),
2026-10-23T11:12:09.4996277Z            ~~~
2026-10-23T11:12:09.4996280Z
2026-10-23T11:12:09.4996710Z 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-23T11:12:09.4996713Z
2026-10-23T11:12:09.4996772Z 22         set: (key, value) =>
2026-10-23T11:12:09.4996829Z            ~~~
2026-10-23T11:12:09.4996831Z
2026-10-23T11:12:09.4997262Z 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-23T11:12:09.4997268Z
2026-10-23T11:12:09.4997328Z 26         remove: (key) =>
2026-10-23T11:12:09.4997382Z            ~~~~~~
2026-10-23T11:12:09.4997385Z
2026-10-23T11:12:09.4997793Z 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-23T11:12:09.4997800Z
2026-10-23T11:12:09.4997925Z 30         create: () => Effect.die("Handoff does not create persistent secrets."),
2026-10-23T11:12:09.4997981Z            ~~~~~~
2026-10-23T11:12:09.4997984Z
2026-10-23T11:12:09.4998428Z 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-23T11:12:09.4998492Z
2026-10-23T11:12:09.4998656Z 31         getOrCreateRandom: () => Effect.die("Handoff uses the destination environment identity."),
2026-10-23T11:12:09.4998712Z            ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4998715Z
2026-10-23T11:12:09.4999243Z 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-23T11:12:09.4999247Z
2026-10-23T11:12:09.4999446Z 205     return yield* Schema.decodeUnknownEffect(Schema.fromJsonString(schema))(
2026-10-23T11:12:09.4999518Z                              ~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.4999521Z
2026-10-23T11:12:09.4999864Z 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-23T11:12:09.4999869Z
2026-10-23T11:12:09.4999934Z 569         ? Effect.succeed(undefined)
2026-10-23T11:12:09.4999996Z               ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5000000Z
2026-10-23T11:12:09.5000403Z 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-23T11:12:09.5000406Z
2026-10-23T11:12:09.5000480Z 284       current: (driverKind) =>
2026-10-23T11:12:09.5000533Z           ~~~~~~~
2026-10-23T11:12:09.5000538Z
2026-10-23T11:12:09.5000991Z 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-23T11:12:09.5000997Z
2026-10-23T11:12:09.5001072Z 284                 return yield* Effect.fail(
2026-10-23T11:12:09.5001132Z                            ~~~~~
2026-10-23T11:12:09.5001135Z
2026-10-23T11:12:09.5001544Z 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-23T11:12:09.5001546Z
2026-10-23T11:12:09.5001613Z 211     importProfile: (input) =>
2026-10-23T11:12:09.5001664Z         ~~~~~~~~~~~~~
2026-10-23T11:12:09.5001667Z
2026-10-23T11:12:09.5002175Z 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-23T11:12:09.5002178Z
2026-10-23T11:12:09.5002259Z 39       credentials: (namespace, bindingId) =>
2026-10-23T11:12:09.5002320Z          ~~~~~~~~~~~
2026-10-23T11:12:09.5002323Z
2026-10-23T11:12:09.5002788Z 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-23T11:12:09.5002791Z
2026-10-23T11:12:09.5002885Z 2773       Effect.catchCause((cause) =>
2026-10-23T11:12:09.5002945Z            ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5002948Z
2026-10-23T11:12:09.5003442Z 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-23T11:12:09.5003447Z
2026-10-23T11:12:09.5003557Z 3176       Effect.catchCause((cause) =>
2026-10-23T11:12:09.5003611Z            ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5003618Z
2026-10-23T11:12:09.5004018Z 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-23T11:12:09.5004083Z
2026-10-23T11:12:09.5004149Z 3395     listStats: (input) =>
2026-10-23T11:12:09.5004203Z          ~~~~~~~~~
2026-10-23T11:12:09.5004205Z
2026-10-23T11:12:09.5004506Z src/relay/AgentAwarenessRelay.test.ts:271:9 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T11:12:09.5004509Z
2026-10-23T11:12:09.5004570Z 271         Effect.succeed(
2026-10-23T11:12:09.5004702Z             ~~~~~~~~~~~~~~
2026-10-23T11:12:09.5004707Z
2026-10-23T11:12:09.5005289Z 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-23T11:12:09.5005293Z
2026-10-23T11:12:09.5005471Z 822     requestCatchUp: () => Queue.offer(catchUpRequests, undefined).pipe(Effect.asVoid),
2026-10-23T11:12:09.5005543Z         ~~~~~~~~~~~~~~
2026-10-23T11:12:09.5005547Z
2026-10-23T11:12:09.5006254Z 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-23T11:12:09.5006265Z
2026-10-23T11:12:09.5006392Z 641     requestDesktopUpdate: (requestId) =>
2026-10-23T11:12:09.5006493Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5006497Z
2026-10-23T11:12:09.5007128Z 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-23T11:12:09.5007131Z
2026-10-23T11:12:09.5007210Z 647     commitDesktopUpdate: (requestId) =>
2026-10-23T11:12:09.5007269Z         ~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5007273Z
2026-10-23T11:12:09.5008007Z 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-23T11:12:09.5008011Z
2026-10-23T11:12:09.5008130Z 649     cancelDesktopUpdate: (requestId) =>
2026-10-23T11:12:09.5008234Z         ~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5008238Z
2026-10-23T11:12:09.5008932Z 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-23T11:12:09.5008935Z
2026-10-23T11:12:09.5009015Z 698       setDiagnosticsDemand: () => Effect.void,
2026-10-23T11:12:09.5009081Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5009087Z
2026-10-23T11:12:09.5009592Z 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-23T11:12:09.5009595Z
2026-10-23T11:12:09.5009679Z 699       requestDesktopUpdate: () => Effect.void,
2026-10-23T11:12:09.5009780Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5009784Z
2026-10-23T11:12:09.5010566Z 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-23T11:12:09.5010571Z
2026-10-23T11:12:09.5010701Z 700       commitDesktopUpdate: () => Effect.void,
2026-10-23T11:12:09.5010798Z           ~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5010802Z
2026-10-23T11:12:09.5011695Z 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-23T11:12:09.5011700Z
2026-10-23T11:12:09.5011858Z 701       cancelDesktopUpdate: () => Effect.void,
2026-10-23T11:12:09.5011944Z           ~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5011948Z
2026-10-23T11:12:09.5012380Z 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-23T11:12:09.5012480Z
2026-10-23T11:12:09.5012593Z 1091       readHistory: () =>
2026-10-23T11:12:09.5012679Z            ~~~~~~~~~~~
2026-10-23T11:12:09.5012684Z
2026-10-23T11:12:09.5013335Z 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-23T11:12:09.5013340Z
2026-10-23T11:12:09.5013420Z 1097       setExternalProcesses: () => Effect.void,
2026-10-23T11:12:09.5013480Z            ~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5013483Z
2026-10-23T11:12:09.5013925Z 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-23T11:12:09.5013927Z
2026-10-23T11:12:09.5014008Z 1098       setHostPowerState: () => Effect.void,
2026-10-23T11:12:09.5014071Z            ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5014077Z
2026-10-23T11:12:09.5014448Z 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-23T11:12:09.5014455Z
2026-10-23T11:12:09.5014555Z 1136                             ? Effect.succeed(undefined)
2026-10-23T11:12:09.5014632Z                                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5014635Z
2026-10-23T11:12:09.5015145Z 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-23T11:12:09.5015148Z
2026-10-23T11:12:09.5015224Z 166       const results = yield* Effect.all(
2026-10-23T11:12:09.5015289Z                                  ~~~~~~~~~~
2026-10-23T11:12:09.5015293Z
2026-10-23T11:12:09.5015815Z 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-23T11:12:09.5015818Z
2026-10-23T11:12:09.5015905Z 480     return Effect.gen(function* () {
2026-10-23T11:12:09.5015998Z         ~~~~~~
2026-10-23T11:12:09.5016002Z
2026-10-23T11:12:09.5016461Z 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-23T11:12:09.5016468Z
2026-10-23T11:12:09.5016553Z 209           prepareTrial: Effect.succeed(undefined),
2026-10-23T11:12:09.5016628Z                             ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5016631Z
2026-10-23T11:12:09.5016983Z 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-23T11:12:09.5016987Z
2026-10-23T11:12:09.5017111Z 413       const results = yield* Effect.all(
2026-10-23T11:12:09.5017196Z                                  ~~~~~~~~~~
2026-10-23T11:12:09.5017202Z
2026-10-23T11:12:09.5018156Z 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-23T11:12:09.5018161Z
2026-10-23T11:12:09.5018290Z 204     listChangeRequests: (input) =>
2026-10-23T11:12:09.5018377Z         ~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5018381Z
2026-10-23T11:12:09.5019384Z 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-23T11:12:09.5019390Z
2026-10-23T11:12:09.5019499Z 209     getChangeRequest: (input) =>
2026-10-23T11:12:09.5019595Z         ~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5019599Z
2026-10-23T11:12:09.5020281Z 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-23T11:12:09.5020289Z
2026-10-23T11:12:09.5020360Z 214     createChangeRequest: (input) =>
2026-10-23T11:12:09.5020424Z         ~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5020426Z
2026-10-23T11:12:09.5021120Z 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-23T11:12:09.5021144Z
2026-10-23T11:12:09.5021264Z 219     getRepositoryCloneUrls: (input) =>
2026-10-23T11:12:09.5021361Z         ~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5021365Z
2026-10-23T11:12:09.5021986Z 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-23T11:12:09.5021992Z
2026-10-23T11:12:09.5022134Z 224     createRepository: (input) => provider.createRepository(input),
2026-10-23T11:12:09.5022195Z         ~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5022198Z
2026-10-23T11:12:09.5023021Z 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-23T11:12:09.5023024Z
2026-10-23T11:12:09.5023094Z 225     getDefaultBranch: (input) =>
2026-10-23T11:12:09.5023157Z         ~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5023159Z
2026-10-23T11:12:09.5023951Z 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-23T11:12:09.5023959Z
2026-10-23T11:12:09.5024073Z 230     checkoutChangeRequest: (input) =>
2026-10-23T11:12:09.5024168Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5024172Z
2026-10-23T11:12:09.5024940Z 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-23T11:12:09.5024945Z
2026-10-23T11:12:09.5025150Z 345       resolve: (input) => resolveHandle(input).pipe(Effect.map((handle) => handle.provider)),
2026-10-23T11:12:09.5025214Z           ~~~~~~~
2026-10-23T11:12:09.5025221Z
2026-10-23T11:12:09.5025908Z src/sourceControl/SourceControlRepositoryService.ts:405:7 - suggestion TS377116: `Effect.catchIf` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-23T11:12:09.5026003Z
2026-10-23T11:12:09.5026073Z 405       Effect.catch((sshError) =>
2026-10-23T11:12:09.5026162Z           ~~~~~~~~~~~~
2026-10-23T11:12:09.5026166Z
2026-10-23T11:12:09.5026757Z src/sourceControl/SourceControlRepositoryService.ts:552:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.lookupRepository")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.5026760Z
2026-10-23T11:12:09.5026829Z 552     lookupRepository: (input) =>
2026-10-23T11:12:09.5026885Z         ~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5026948Z
2026-10-23T11:12:09.5027558Z src/sourceControl/SourceControlRepositoryService.ts:554:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.prepareClone")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.5027566Z
2026-10-23T11:12:09.5027683Z 554     prepareClone: (input) =>
2026-10-23T11:12:09.5027751Z         ~~~~~~~~~~~~
2026-10-23T11:12:09.5027754Z
2026-10-23T11:12:09.5028322Z src/sourceControl/SourceControlRepositoryService.ts:561:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.cloneRepository")((input, options) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.5028325Z
2026-10-23T11:12:09.5028399Z 561     cloneRepository: (input, options) =>
2026-10-23T11:12:09.5028458Z         ~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5028460Z
2026-10-23T11:12:09.5028998Z src/sourceControl/SourceControlRepositoryService.ts:568:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.discardClone")((destinationPath) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.5029002Z
2026-10-23T11:12:09.5029117Z 568     discardClone: (destinationPath) =>
2026-10-23T11:12:09.5029211Z         ~~~~~~~~~~~~
2026-10-23T11:12:09.5029215Z
2026-10-23T11:12:09.5029771Z src/sourceControl/SourceControlRepositoryService.ts:572:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.publishRepository")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T11:12:09.5029774Z
2026-10-23T11:12:09.5029845Z 572     publishRepository: (input) =>
2026-10-23T11:12:09.5029918Z         ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5029922Z
2026-10-23T11:12:09.5030613Z 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-23T11:12:09.5030618Z
2026-10-23T11:12:09.5030688Z 706       return yield* Effect.fail(
2026-10-23T11:12:09.5030739Z                  ~~~~~
2026-10-23T11:12:09.5030742Z
2026-10-23T11:12:09.5031178Z 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-23T11:12:09.5031183Z
2026-10-23T11:12:09.5031246Z 113       record: () => Effect.void,
2026-10-23T11:12:09.5031304Z           ~~~~~~
2026-10-23T11:12:09.5031307Z
2026-10-23T11:12:09.5031794Z 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-23T11:12:09.5031802Z
2026-10-23T11:12:09.5031908Z 115       recordOwners: () => Effect.void,
2026-10-23T11:12:09.5032000Z           ~~~~~~~~~~~~
2026-10-23T11:12:09.5032005Z
2026-10-23T11:12:09.5032562Z 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-23T11:12:09.5032623Z
2026-10-23T11:12:09.5032877Z 329   yield* Effect.forever(Effect.sleep(FLUSH_INTERVAL_MS).pipe(Effect.flatMap(() => flushWhenDue)), {
2026-10-23T11:12:09.5032965Z                                                                  ~~~~~~~~~~~~~~
2026-10-23T11:12:09.5032972Z
2026-10-23T11:12:09.5033465Z 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-23T11:12:09.5033469Z
2026-10-23T11:12:09.5033562Z 90       .pipe(Effect.catch(() => Effect.void));
2026-10-23T11:12:09.5033620Z                ~~~~~~~~~~~~
2026-10-23T11:12:09.5033683Z
2026-10-23T11:12:09.5034116Z 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-23T11:12:09.5034124Z
2026-10-23T11:12:09.5034241Z 60     generateCommitMessage: (input) =>
2026-10-23T11:12:09.5034339Z        ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5034344Z
2026-10-23T11:12:09.5034967Z 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-23T11:12:09.5034971Z
2026-10-23T11:12:09.5035077Z 64     generatePrContent: (input) =>
2026-10-23T11:12:09.5035145Z        ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5035148Z
2026-10-23T11:12:09.5035616Z 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-23T11:12:09.5035619Z
2026-10-23T11:12:09.5035706Z 68     generateBranchName: (input) =>
2026-10-23T11:12:09.5035807Z        ~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5035813Z
2026-10-23T11:12:09.5036364Z 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-23T11:12:09.5036372Z
2026-10-23T11:12:09.5036458Z 72     generateReviewGuide: (input) =>
2026-10-23T11:12:09.5036512Z        ~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5036514Z
2026-10-23T11:12:09.5036947Z 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-23T11:12:09.5036951Z
2026-10-23T11:12:09.5037044Z 76     generateThreadTitle: (input) =>
2026-10-23T11:12:09.5037139Z        ~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5037144Z
2026-10-23T11:12:09.5037712Z 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-23T11:12:09.5037717Z
2026-10-23T11:12:09.5037778Z 172     readSummary: (input) =>
2026-10-23T11:12:09.5037835Z         ~~~~~~~~~~~
2026-10-23T11:12:09.5037837Z
2026-10-23T11:12:09.5038143Z 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-23T11:12:09.5038146Z
2026-10-23T11:12:09.5038220Z 642         usageInstances(driver, settings)
2026-10-23T11:12:09.5038278Z             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5038337Z 643           .pipe(
2026-10-23T11:12:09.5038392Z     ~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5038445Z ...
2026-10-23T11:12:09.5038532Z 664             Effect.provideContext(readerContext),
2026-10-23T11:12:09.5038608Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5038672Z 665           ),
2026-10-23T11:12:09.5038790Z     ~~~~~~~~~~~
2026-10-23T11:12:09.5038793Z
2026-10-23T11:12:09.5039225Z 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-23T11:12:09.5039228Z
2026-10-23T11:12:09.5039318Z 4009         Effect.flatMap((result) =>
2026-10-23T11:12:09.5039441Z              ~~~~~~~~~~~~~~
2026-10-23T11:12:09.5039445Z
2026-10-23T11:12:09.5040039Z 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-23T11:12:09.5040045Z
2026-10-23T11:12:09.5040189Z 4500     commit: (cwd, subject, body, options) =>
2026-10-23T11:12:09.5040246Z          ~~~~~~
2026-10-23T11:12:09.5040249Z
2026-10-23T11:12:09.5040784Z 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-23T11:12:09.5040790Z
2026-10-23T11:12:09.5040926Z 4502     pushCurrentBranch: (cwd, fallbackBranch, options) =>
2026-10-23T11:12:09.5040985Z          ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5040989Z
2026-10-23T11:12:09.5041469Z 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-23T11:12:09.5041472Z
2026-10-23T11:12:09.5041634Z 4504     pullCurrentBranch: (cwd) => withListRefsInvalidation(cwd, pullCurrentBranch(cwd)),
2026-10-23T11:12:09.5041694Z          ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5041697Z
2026-10-23T11:12:09.5042199Z 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-23T11:12:09.5042205Z
2026-10-23T11:12:09.5042280Z 4511     createWorktree: (input, options) =>
2026-10-23T11:12:09.5042333Z          ~~~~~~~~~~~~~~
2026-10-23T11:12:09.5042340Z
2026-10-23T11:12:09.5042757Z 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-23T11:12:09.5042760Z
2026-10-23T11:12:09.5042839Z 4513     fetchPullRequestBranch: (input) =>
2026-10-23T11:12:09.5042903Z          ~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5042906Z
2026-10-23T11:12:09.5043335Z 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-23T11:12:09.5043340Z
2026-10-23T11:12:09.5043415Z 4517     refreshCheckedOutBranch: (input) =>
2026-10-23T11:12:09.5043474Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5043477Z
2026-10-23T11:12:09.5043873Z 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-23T11:12:09.5043876Z
2026-10-23T11:12:09.5044116Z 4519     ensureRemote: (input) => withListRefsInvalidation(input.cwd, ensureRemote(input)),
2026-10-23T11:12:09.5044175Z          ~~~~~~~~~~~~
2026-10-23T11:12:09.5044180Z
2026-10-23T11:12:09.5044733Z 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-23T11:12:09.5044750Z
2026-10-23T11:12:09.5044911Z 4522     fetchRemote: (input) =>
2026-10-23T11:12:09.5044968Z          ~~~~~~~~~~~
2026-10-23T11:12:09.5044971Z
2026-10-23T11:12:09.5045560Z 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-23T11:12:09.5045565Z
2026-10-23T11:12:09.5045649Z 4537     fetchWorktreeBaseCommit: (input) =>
2026-10-23T11:12:09.5045704Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5045706Z
2026-10-23T11:12:09.5046172Z 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-23T11:12:09.5046175Z
2026-10-23T11:12:09.5046356Z 4539     fetchRemoteBranch: (input) => withListRefsInvalidation(input.cwd, fetchRemoteBranch(input)),
2026-10-23T11:12:09.5046417Z          ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5046420Z
2026-10-23T11:12:09.5046946Z 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-23T11:12:09.5046950Z
2026-10-23T11:12:09.5047027Z 4540     fetchRemoteTrackingBranch: (input) =>
2026-10-23T11:12:09.5047095Z          ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5047098Z
2026-10-23T11:12:09.5047505Z 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-23T11:12:09.5047508Z
2026-10-23T11:12:09.5047688Z 4542     setBranchUpstream: (input) => withListRefsInvalidation(input.cwd, setBranchUpstream(input)),
2026-10-23T11:12:09.5047748Z          ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5047753Z
2026-10-23T11:12:09.5048149Z 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-23T11:12:09.5048158Z
2026-10-23T11:12:09.5048344Z 4543     removeWorktree: (input) => withListRefsInvalidation(input.cwd, removeWorktree(input)),
2026-10-23T11:12:09.5048436Z          ~~~~~~~~~~~~~~
2026-10-23T11:12:09.5048440Z
2026-10-23T11:12:09.5048975Z 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-23T11:12:09.5048979Z
2026-10-23T11:12:09.5049149Z 4544     pruneWorktrees: (input) => withListRefsInvalidation(input.cwd, pruneWorktrees(input)),
2026-10-23T11:12:09.5049219Z          ~~~~~~~~~~~~~~
2026-10-23T11:12:09.5049223Z
2026-10-23T11:12:09.5049774Z 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-23T11:12:09.5049780Z
2026-10-23T11:12:09.5049995Z 4545     deleteLocalBranch: (input) => withListRefsInvalidation(input.cwd, deleteLocalBranch(input)),
2026-10-23T11:12:09.5050082Z          ~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5050084Z
2026-10-23T11:12:09.5050670Z 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-23T11:12:09.5050675Z
2026-10-23T11:12:09.5050834Z 4546     renameBranch: (input) => withListRefsInvalidation(input.cwd, renameBranch(input)),
2026-10-23T11:12:09.5050890Z          ~~~~~~~~~~~~
2026-10-23T11:12:09.5050892Z
2026-10-23T11:12:09.5051287Z 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-23T11:12:09.5051466Z
2026-10-23T11:12:09.5051607Z 4547     createRef: (input) => withListRefsInvalidation(input.cwd, createRef(input)),
2026-10-23T11:12:09.5051663Z          ~~~~~~~~~
2026-10-23T11:12:09.5051665Z
2026-10-23T11:12:09.5052115Z 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-23T11:12:09.5052126Z
2026-10-23T11:12:09.5052343Z 4548     switchRef: (input) => withListRefsInvalidation(input.cwd, switchRef(input)),
2026-10-23T11:12:09.5052399Z          ~~~~~~~~~
2026-10-23T11:12:09.5052404Z
2026-10-23T11:12:09.5052893Z 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-23T11:12:09.5052898Z
2026-10-23T11:12:09.5052987Z 153     return serverSettings.getSettings.pipe(
2026-10-23T11:12:09.5053036Z         ~~~~~~
2026-10-23T11:12:09.5053039Z
2026-10-23T11:12:09.5053420Z 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-23T11:12:09.5053423Z
2026-10-23T11:12:09.5053529Z 171       }).pipe(Effect.catch(() => Effect.succeed(undefined)));
2026-10-23T11:12:09.5053591Z                   ~~~~~~~~~~~~
2026-10-23T11:12:09.5053593Z
2026-10-23T11:12:09.5053946Z 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-23T11:12:09.5053951Z
2026-10-23T11:12:09.5054048Z 171       }).pipe(Effect.catch(() => Effect.succeed(undefined)));
2026-10-23T11:12:09.5054127Z                                      ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5054130Z
2026-10-23T11:12:09.5054435Z 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-23T11:12:09.5054438Z
2026-10-23T11:12:09.5054565Z 401           resolveFileManagerRevealKind: () => Effect.succeed(undefined),
2026-10-23T11:12:09.5054648Z                                                   ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T11:12:09.5054653Z
2026-10-23T11:12:09.5055001Z 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-23T11:12:09.5055004Z
2026-10-23T11:12:09.5055086Z 1384         return yield* Option.match(project, {
2026-10-23T11:12:09.5055151Z                            ~~~~~~~~~~~~
2026-10-23T11:12:09.5055154Z
2026-10-23T11:12:09.5055541Z 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-23T11:12:09.5055544Z
2026-10-23T11:12:09.5055616Z 2319                 return yield* Effect.fail(
2026-10-23T11:12:09.5055676Z                             ~~~~~
2026-10-23T11:12:09.5055679Z
2026-10-23T11:12:09.5056057Z 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-23T11:12:09.5056061Z
2026-10-23T11:12:09.5056131Z 2328                 return yield* Effect.fail(
2026-10-23T11:12:09.5056194Z                             ~~~~~
2026-10-23T11:12:09.5056255Z
2026-10-23T11:12:09.5056626Z 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-23T11:12:09.5056628Z
2026-10-23T11:12:09.5056696Z 2336                 return yield* Effect.fail(
2026-10-23T11:12:09.5056755Z                             ~~~~~
2026-10-23T11:12:09.5056760Z
2026-10-23T11:12:09.5056762Z
2026-10-23T11:12:09.5056820Z ---
2026-10-23T11:12:09.5057254Z 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-23T11:12:09.5696157Z Post job cleanup.
2026-10-23T11:12:09.6470366Z Cache hit occurred on the primary key electron-Linux-X64-854e11ddd491bd4f350eebb67a74265df119376a3984c8e153cfe5fc8ced6309, not saving cache.
2026-10-23T11:12:09.6560583Z Post job cleanup.
2026-10-23T11:12:09.6576275Z ##[start-action display=Cache full pnpm store;id=__395bc78a-bbcd-432c-8bdd-0ad96f22dcff.__actions_cache]
2026-10-23T11:12:09.6973088Z Post job cleanup.
2026-10-23T11:12:09.7756602Z Cache hit occurred on the primary key pnpm-full-v1-Linux-X64-2baa264059789b1dde4bbc8fdc5b8342f31f2fc8e6176e5c5e486efdd242b36c, not saving cache.
2026-10-23T11:12:09.7800211Z ##[end-action id=__395bc78a-bbcd-432c-8bdd-0ad96f22dcff.__actions_cache;outcome=success;conclusion=success;duration_ms=122]
2026-10-23T11:12:09.7802778Z ##[start-action display=Cache Vite+;id=__395bc78a-bbcd-432c-8bdd-0ad96f22dcff.vp_cache]
2026-10-23T11:12:09.7828215Z Post job cleanup.
2026-10-23T11:12:09.8538715Z 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-23T11:12:09.8575963Z ##[end-action id=__395bc78a-bbcd-432c-8bdd-0ad96f22dcff.vp_cache;outcome=success;conclusion=success;duration_ms=77]
2026-10-23T11:12:09.8619932Z Post job cleanup.
2026-10-23T11:12:09.9132848Z [command]/usr/local/bin/git version
2026-10-23T11:12:09.9167477Z git version 2.55.0
2026-10-23T11:12:09.9220208Z Temporarily overriding HOME='/home/runner/_work/_temp/6b3a5d30-8e88-4e10-9df4-98588ba577cc' before making global git config changes
2026-10-23T11:12:09.9220616Z Adding repository directory to the temporary git global config as a safe directory
2026-10-23T11:12:09.9223736Z [command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
2026-10-23T11:12:09.9257681Z Removing SSH command configuration
2026-10-23T11:12:09.9262797Z [command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-10-23T11:12:09.9295567Z [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-23T11:12:09.9456326Z fatal: No url found for submodule path '.repos/alchemy-effect/submodules/distilled' in .gitmodules
2026-10-23T11:12:09.9484367Z ##[warning]The process '/usr/local/bin/git' failed with exit code 128
2026-10-23T11:12:09.9538030Z A job completed hook has been configured by the self-hosted runner administrator
2026-10-23T11:12:09.9552647Z ##[group]Run '/job_completed.sh'
2026-10-23T11:12:09.9559070Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
2026-10-23T11:12:09.9559268Z env:
2026-10-23T11:12:09.9559399Z   BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 188
2026-10-23T11:12:09.9559574Z   BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 409
2026-10-23T11:12:09.9559739Z   BLACKSMITH_CHECK_RUN_ID: 120383136001
2026-10-23T11:12:09.9559923Z   BLACKSMITH_JOB_DISPLAY_NAME: Build and Typecheck
2026-10-23T11:12:09.9560107Z   GITHUB_ACTIONS_CACHE_MODE: write
2026-10-23T11:12:09.9560261Z ##[endgroup]
2026-10-23T11:12:09.9660376Z Docker container cache not activated, skipping hash computation.
2026-10-23T11:12:09.9959872Z No active SSH sessions detected. Proceeding with shutdown immediately.
2026-10-23T11:12:10.0016970Z Cleaning up orphan processes