GitHub check

256 KB of 524 KB loaded Download the full log (524 KB)
268 KB of earlier output not loaded
n TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AzureDevOpsCli.getPullRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T23:13:44.1575769Z
2026-10-23T23:13:44.1575900Z 429     getPullRequest: (input) =>
2026-10-23T23:13:44.1576052Z         ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1576128Z
2026-10-23T23:13:44.1576475Z 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-23T23:13:44.1576875Z
2026-10-23T23:13:44.1576944Z 463     getRepositoryCloneUrls: (input) =>
2026-10-23T23:13:44.1577102Z         ~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1577188Z
2026-10-23T23:13:44.1577533Z 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-23T23:13:44.1577923Z
2026-10-23T23:13:44.1577986Z 479     createRepository: (input) => {
2026-10-23T23:13:44.1578133Z         ~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1578210Z
2026-10-23T23:13:44.1578551Z 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-23T23:13:44.1578932Z
2026-10-23T23:13:44.1578992Z 504     createPullRequest: (input) =>
2026-10-23T23:13:44.1579144Z         ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1579222Z
2026-10-23T23:13:44.1579558Z 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-23T23:13:44.1579939Z
2026-10-23T23:13:44.1579994Z 524     getDefaultBranch: (input) =>
2026-10-23T23:13:44.1580146Z         ~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1580228Z
2026-10-23T23:13:44.1580575Z 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-23T23:13:44.1580962Z
2026-10-23T23:13:44.1581025Z 535     checkoutPullRequest: (input) =>
2026-10-23T23:13:44.1581174Z         ~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1581259Z
2026-10-23T23:13:44.1581632Z 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-23T23:13:44.1582050Z
2026-10-23T23:13:44.1582108Z 488     getViewer: (input) =>
2026-10-23T23:13:44.1582244Z         ~~~~~~~~~
2026-10-23T23:13:44.1582318Z
2026-10-23T23:13:44.1582758Z 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-23T23:13:44.1583194Z
2026-10-23T23:13:44.1583253Z 542     listPullRequests: (input) =>
2026-10-23T23:13:44.1583402Z         ~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1583474Z
2026-10-23T23:13:44.1583856Z 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-23T23:13:44.1584288Z
2026-10-23T23:13:44.1584353Z 555     getPullRequest: (input) =>
2026-10-23T23:13:44.1584492Z         ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1584565Z
2026-10-23T23:13:44.1584941Z 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-23T23:13:44.1585476Z
2026-10-23T23:13:44.1585538Z 586     listThreads: (input) =>
2026-10-23T23:13:44.1585686Z         ~~~~~~~~~~~
2026-10-23T23:13:44.1585753Z
2026-10-23T23:13:44.1586204Z 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-23T23:13:44.1586633Z
2026-10-23T23:13:44.1586692Z 596     listIterations: (input) =>
2026-10-23T23:13:44.1586836Z         ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1586911Z
2026-10-23T23:13:44.1587306Z 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-23T23:13:44.1587746Z
2026-10-23T23:13:44.1587809Z 606     listIterationChanges: (input) => {
2026-10-23T23:13:44.1587967Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1588051Z
2026-10-23T23:13:44.1588438Z 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-23T23:13:44.1588867Z
2026-10-23T23:13:44.1588928Z 633     readItemContent: (input) =>
2026-10-23T23:13:44.1589074Z         ~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1589151Z
2026-10-23T23:13:44.1589551Z 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-23T23:13:44.1590003Z
2026-10-23T23:13:44.1590068Z 656     setPullRequestReviewers: (input) =>
2026-10-23T23:13:44.1590230Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1590318Z
2026-10-23T23:13:44.1590707Z 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-23T23:13:44.1591161Z
2026-10-23T23:13:44.1591230Z 681     runPullRequestAction: (input) =>
2026-10-23T23:13:44.1591492Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1591581Z
2026-10-23T23:13:44.1591971Z 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-23T23:13:44.1592402Z
2026-10-23T23:13:44.1592463Z 700     updatePullRequest: (input) =>
2026-10-23T23:13:44.1592669Z         ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1592748Z
2026-10-23T23:13:44.1593190Z 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-23T23:13:44.1593682Z
2026-10-23T23:13:44.1593747Z 81     listChangeRequests: (input) => {
2026-10-23T23:13:44.1593895Z        ~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1593973Z
2026-10-23T23:13:44.1594414Z 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-23T23:13:44.1594902Z
2026-10-23T23:13:44.1594965Z 109     getChangeRequest: (input) =>
2026-10-23T23:13:44.1595111Z         ~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1595188Z
2026-10-23T23:13:44.1595637Z 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-23T23:13:44.1596203Z
2026-10-23T23:13:44.1596267Z 127     createChangeRequest: (input) => {
2026-10-23T23:13:44.1596426Z         ~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1596509Z
2026-10-23T23:13:44.1597033Z 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-23T23:13:44.1597533Z
2026-10-23T23:13:44.1597598Z 156     getRepositoryCloneUrls: (input) =>
2026-10-23T23:13:44.1597754Z         ~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1597840Z
2026-10-23T23:13:44.1598285Z 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-23T23:13:44.1598771Z
2026-10-23T23:13:44.1598826Z 173     createRepository: (input) =>
2026-10-23T23:13:44.1598974Z         ~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1599049Z
2026-10-23T23:13:44.1599493Z 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-23T23:13:44.1599977Z
2026-10-23T23:13:44.1600040Z 190     getDefaultBranch: (input) =>
2026-10-23T23:13:44.1600197Z         ~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1600275Z
2026-10-23T23:13:44.1600736Z 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-23T23:13:44.1601237Z
2026-10-23T23:13:44.1601297Z 204     checkoutChangeRequest: (input) =>
2026-10-23T23:13:44.1601464Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1601730Z
2026-10-23T23:13:44.1601733Z
2026-10-23T23:13:44.1601820Z ~/packages/provider-muse$ tsc --noEmit
2026-10-23T23:13:44.1602671Z 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-23T23:13:44.1603167Z
2026-10-23T23:13:44.1603225Z 340     getChangeRequest: (input) =>
2026-10-23T23:13:44.1603380Z         ~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1603460Z
2026-10-23T23:13:44.1603464Z
2026-10-23T23:13:44.1603527Z ~/packages/provider-opencode$ tsc --noEmit
2026-10-23T23:13:44.1603997Z 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-23T23:13:44.1604412Z
2026-10-23T23:13:44.1604516Z 440     getCapabilities: () => Effect.succeed(PiProviderCapabilitiesV2),
2026-10-23T23:13:44.1604726Z         ~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1604804Z
2026-10-23T23:13:44.1605178Z 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-23T23:13:44.1605601Z
2026-10-23T23:13:44.1605739Z 441     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-23T23:13:44.1605971Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1606058Z
2026-10-23T23:13:44.1606310Z src/server/adapter.ts:1694:31 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T23:13:44.1606600Z
2026-10-23T23:13:44.1606680Z 1694                               Effect.map(Option.some),
2026-10-23T23:13:44.1607063Z                                    ~~~~~~~~~~
2026-10-23T23:13:44.1607170Z
2026-10-23T23:13:44.1607489Z src/server/adapter.ts:1697:29 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1607776Z
2026-10-23T23:13:44.1607855Z 1697                           : Effect.succeed(Option.none()),
2026-10-23T23:13:44.1608038Z                                  ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1608143Z
2026-10-23T23:13:44.1608424Z 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-23T23:13:44.1608750Z
2026-10-23T23:13:44.1608810Z 334       onSuccess: () =>
2026-10-23T23:13:44.1608940Z           ~~~~~~~~~
2026-10-23T23:13:44.1609012Z
2026-10-23T23:13:44.1609241Z src/server/rpc.ts:342:17 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T23:13:44.1609526Z
2026-10-23T23:13:44.1609592Z 342                 Effect.map(Option.some),
2026-10-23T23:13:44.1609746Z                     ~~~~~~~~~~
2026-10-23T23:13:44.1609830Z
2026-10-23T23:13:44.1609841Z
2026-10-23T23:13:44.1609905Z ~/packages/provider-cursor$ tsc --noEmit
2026-10-23T23:13:44.1610365Z 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-23T23:13:44.1610768Z
2026-10-23T23:13:44.1610876Z 284     getCapabilities: () => Effect.succeed(MuseProviderCapabilitiesV2),
2026-10-23T23:13:44.1611084Z         ~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1611157Z
2026-10-23T23:13:44.1611535Z 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-23T23:13:44.1611967Z
2026-10-23T23:13:44.1612097Z 285     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-23T23:13:44.1612323Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1612412Z
2026-10-23T23:13:44.1612783Z 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-23T23:13:44.1613130Z
2026-10-23T23:13:44.1613190Z 388             TimeoutError: (cause) =>
2026-10-23T23:13:44.1613346Z                 ~~~~~~~~~~~~
2026-10-23T23:13:44.1613428Z
2026-10-23T23:13:44.1613670Z src/server/adapter.ts:1366:35 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T23:13:44.1613958Z
2026-10-23T23:13:44.1614100Z 1366                   wake === held ? Effect.map(dispatch, Option.some) : Effect.succeed(Option.none()),
2026-10-23T23:13:44.1614350Z                                        ~~~~~~~~~~
2026-10-23T23:13:44.1614457Z
2026-10-23T23:13:44.1614702Z src/server/adapter.ts:1366:71 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1614983Z
2026-10-23T23:13:44.1615118Z 1366                   wake === held ? Effect.map(dispatch, Option.some) : Effect.succeed(Option.none()),
2026-10-23T23:13:44.1615382Z                                                                            ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1615510Z
2026-10-23T23:13:44.1615515Z
2026-10-23T23:13:44.1615576Z ~/packages/provider-grok$ tsc --noEmit
2026-10-23T23:13:44.1616068Z 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-23T23:13:44.1616611Z
2026-10-23T23:13:44.1616689Z 31       read: (credentialSource, sinceMs, untilMs) =>
2026-10-23T23:13:44.1616870Z          ~~~~
2026-10-23T23:13:44.1616938Z
2026-10-23T23:13:44.1617332Z 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-23T23:13:44.1617702Z
2026-10-23T23:13:44.1617760Z 82     read: (apiKey) =>
2026-10-23T23:13:44.1617887Z        ~~~~
2026-10-23T23:13:44.1617954Z
2026-10-23T23:13:44.1618271Z 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-23T23:13:44.1618642Z
2026-10-23T23:13:44.1618693Z 360     Effect.catch(() =>
2026-10-23T23:13:44.1618827Z         ~~~~~~~~~~~~
2026-10-23T23:13:44.1618899Z
2026-10-23T23:13:44.1619258Z 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-23T23:13:44.1619665Z
2026-10-23T23:13:44.1619791Z 904     getCapabilities: () => Effect.succeed(CursorProviderCapabilitiesV2),
2026-10-23T23:13:44.1619998Z         ~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1620078Z
2026-10-23T23:13:44.1620451Z 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-23T23:13:44.1620871Z
2026-10-23T23:13:44.1620997Z 905     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-23T23:13:44.1621228Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1621312Z
2026-10-23T23:13:44.1621819Z 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-23T23:13:44.1622366Z
2026-10-23T23:13:44.1622424Z 55       Effect.runPromise(
2026-10-23T23:13:44.1622625Z          ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1622704Z
2026-10-23T23:13:44.1623005Z 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-23T23:13:44.1623349Z
2026-10-23T23:13:44.1623421Z 59               onNone: () => Effect.succeed(undefined),
2026-10-23T23:13:44.1623604Z                                ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1623709Z
2026-10-23T23:13:44.1624210Z 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-23T23:13:44.1624754Z
2026-10-23T23:13:44.1624808Z 69       Effect.runPromise(
2026-10-23T23:13:44.1624940Z          ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1625015Z
2026-10-23T23:13:44.1625517Z 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-23T23:13:44.1626058Z
2026-10-23T23:13:44.1626137Z 82     clear: () => Effect.runPromise(credentials.remove),
2026-10-23T23:13:44.1626313Z                     ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1626407Z
2026-10-23T23:13:44.1626781Z 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-23T23:13:44.1627309Z
2026-10-23T23:13:44.1627369Z 228           Effect.flatMap((snapshot) =>
2026-10-23T23:13:44.1627577Z               ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1627662Z
2026-10-23T23:13:44.1627880Z src/server/usageLimits.test.ts:74:5 - suggestion TS377017: This Effect.gen contains a single return statement. effect(unnecessaryEffectGen)
2026-10-23T23:13:44.1628143Z
2026-10-23T23:13:44.1628200Z  74     Effect.gen(function* () {
2026-10-23T23:13:44.1628342Z         ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1628486Z  75       yield* withNodeServices(
2026-10-23T23:13:44.1628628Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1628763Z ...
2026-10-23T23:13:44.1628862Z 115       );
2026-10-23T23:13:44.1628966Z     ~~~~~~~~
2026-10-23T23:13:44.1629075Z 116     }),
2026-10-23T23:13:44.1629176Z     ~~~~~~
2026-10-23T23:13:44.1629236Z
2026-10-23T23:13:44.1629241Z
2026-10-23T23:13:44.1629315Z ~/packages/provider-acp-registry$ tsc --noEmit
2026-10-23T23:13:44.1629743Z 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-23T23:13:44.1630097Z
2026-10-23T23:13:44.1630160Z 147     return Effect.succeed(undefined);
2026-10-23T23:13:44.1630317Z                ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1630411Z
2026-10-23T23:13:44.1630853Z 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-23T23:13:44.1631336Z
2026-10-23T23:13:44.1631398Z 188       if (!recordable) return Effect.void;
2026-10-23T23:13:44.1631556Z                            ~~~~~~
2026-10-23T23:13:44.1631645Z
2026-10-23T23:13:44.1632078Z 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-23T23:13:44.1632604Z
2026-10-23T23:13:44.1632661Z 208         return Effect.void;
2026-10-23T23:13:44.1632796Z             ~~~~~~
2026-10-23T23:13:44.1632869Z
2026-10-23T23:13:44.1633297Z 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-23T23:13:44.1633772Z
2026-10-23T23:13:44.1633819Z 228       return fs
2026-10-23T23:13:44.1633932Z           ~~~~~~
2026-10-23T23:13:44.1634000Z
2026-10-23T23:13:44.1634331Z 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-23T23:13:44.1634712Z
2026-10-23T23:13:44.1634832Z 311   OpenCodeServerLedger.of({ track: () => Effect.succeed(Effect.void) }),
2026-10-23T23:13:44.1635045Z                                 ~~~~~
2026-10-23T23:13:44.1635139Z
2026-10-23T23:13:44.1635483Z 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-23T23:13:44.1635872Z
2026-10-23T23:13:44.1635926Z 169     withServer: (use) =>
2026-10-23T23:13:44.1636053Z         ~~~~~~~~~~
2026-10-23T23:13:44.1636120Z
2026-10-23T23:13:44.1636559Z 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-23T23:13:44.1637110Z
2026-10-23T23:13:44.1637238Z 103 const OPENCODE_TEST_SETTINGS = Schema.decodeUnknownSync(OpenCodeSettings)({});
2026-10-23T23:13:44.1637525Z                                           ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1637634Z
2026-10-23T23:13:44.1637995Z 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-23T23:13:44.1638396Z
2026-10-23T23:13:44.1638516Z 938     getCapabilities: () => Effect.succeed(OpenCodeProviderCapabilitiesV2),
2026-10-23T23:13:44.1638727Z         ~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1638803Z
2026-10-23T23:13:44.1639178Z 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-23T23:13:44.1639605Z
2026-10-23T23:13:44.1639734Z 939     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-23T23:13:44.1639969Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1640057Z
2026-10-23T23:13:44.1640380Z 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-23T23:13:44.1640747Z
2026-10-23T23:13:44.1640829Z 1011         const abortController = new AbortController();
2026-10-23T23:13:44.1641013Z                                      ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1641120Z
2026-10-23T23:13:44.1641480Z 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-23T23:13:44.1642097Z
2026-10-23T23:13:44.1642177Z 1088           if (failure) return yield* Effect.fail(failure);
2026-10-23T23:13:44.1642355Z                                    ~~~~~
2026-10-23T23:13:44.1642453Z
2026-10-23T23:13:44.1642819Z 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-23T23:13:44.1643175Z
2026-10-23T23:13:44.1643261Z 1584               Effect.catch(() => Effect.succeed(undefined)),
2026-10-23T23:13:44.1643436Z                    ~~~~~~~~~~~~
2026-10-23T23:13:44.1643523Z
2026-10-23T23:13:44.1643808Z 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-23T23:13:44.1644138Z
2026-10-23T23:13:44.1644220Z 1584               Effect.catch(() => Effect.succeed(undefined)),
2026-10-23T23:13:44.1644412Z                                       ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1644525Z
2026-10-23T23:13:44.1644851Z 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-23T23:13:44.1645218Z
2026-10-23T23:13:44.1645310Z 3194                 admissionAbortController: new AbortController(),
2026-10-23T23:13:44.1645517Z                                                ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1645629Z
2026-10-23T23:13:44.1645949Z 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-23T23:13:44.1646316Z
2026-10-23T23:13:44.1646415Z 3354               turn.admissionAbortController = new AbortController();
2026-10-23T23:13:44.1646625Z                                                    ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1646898Z
2026-10-23T23:13:44.1647296Z 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-23T23:13:44.1647666Z
2026-10-23T23:13:44.1647733Z 158     connect: ({ baseUrl, password }) => {
2026-10-23T23:13:44.1647893Z         ~~~~~~~
2026-10-23T23:13:44.1647956Z
2026-10-23T23:13:44.1648293Z 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-23T23:13:44.1648677Z
2026-10-23T23:13:44.1648735Z 160       withConnection: (use) =>
2026-10-23T23:13:44.1648875Z           ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1648954Z
2026-10-23T23:13:44.1649288Z 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-23T23:13:44.1649671Z
2026-10-23T23:13:44.1649725Z 175     withConnection: (use) =>
2026-10-23T23:13:44.1649868Z         ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1649938Z
2026-10-23T23:13:44.1650187Z src/server/v2/adapter.ts:1544:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1650475Z
2026-10-23T23:13:44.1650619Z 1544           wake.dropped ? Effect.succeed(Option.none()) : Effect.map(dispatch, Option.some),
2026-10-23T23:13:44.1650854Z                               ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1650952Z
2026-10-23T23:13:44.1651202Z src/server/v2/adapter.ts:1544:58 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T23:13:44.1651496Z
2026-10-23T23:13:44.1651626Z 1544           wake.dropped ? Effect.succeed(Option.none()) : Effect.map(dispatch, Option.some),
2026-10-23T23:13:44.1651876Z                                                               ~~~~~~~~~~
2026-10-23T23:13:44.1652006Z
2026-10-23T23:13:44.1652372Z 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-23T23:13:44.1652858Z
2026-10-23T23:13:44.1652978Z 4137     getCapabilities: () => Effect.succeed(OpenCode2ProviderCapabilities),
2026-10-23T23:13:44.1653189Z          ~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1653268Z
2026-10-23T23:13:44.1653651Z 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-23T23:13:44.1654082Z
2026-10-23T23:13:44.1654214Z 4138     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-23T23:13:44.1654451Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1654542Z
2026-10-23T23:13:44.1654544Z
2026-10-23T23:13:44.1654606Z ~/packages/client-runtime$ tsc --noEmit
2026-10-23T23:13:44.1655080Z 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-23T23:13:44.1655494Z
2026-10-23T23:13:44.1655550Z 174       Effect.flatMap((snapshot) =>
2026-10-23T23:13:44.1655701Z           ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1655778Z
2026-10-23T23:13:44.1656043Z 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-23T23:13:44.1656356Z
2026-10-23T23:13:44.1656429Z 1507       }).pipe(Effect.catch(() => Effect.void));
2026-10-23T23:13:44.1656670Z                    ~~~~~~~~~~~~
2026-10-23T23:13:44.1656757Z
2026-10-23T23:13:44.1657120Z 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-23T23:13:44.1657459Z
2026-10-23T23:13:44.1657528Z 1507       }).pipe(Effect.catch(() => Effect.void));
2026-10-23T23:13:44.1657687Z                    ~~~~~~~~~~~~
2026-10-23T23:13:44.1657771Z
2026-10-23T23:13:44.1658166Z 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-23T23:13:44.1658603Z
2026-10-23T23:13:44.1658667Z 1588             Effect.catchCause((cause) =>
2026-10-23T23:13:44.1658828Z                  ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1658916Z
2026-10-23T23:13:44.1658918Z
2026-10-23T23:13:44.1659209Z src/server/AcpRegistryRuntimeCoordinator.ts:154:52 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T23:13:44.1659544Z
2026-10-23T23:13:44.1659698Z 154         return yield* Effect.raceFirst(effect.pipe(Effect.map(Option.some)), foregroundStarted);
2026-10-23T23:13:44.1659957Z                                                        ~~~~~~~~~~
2026-10-23T23:13:44.1660072Z
2026-10-23T23:13:44.1660445Z 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-23T23:13:44.1660861Z
2026-10-23T23:13:44.1660918Z 1301         Effect.catch((error) =>
2026-10-23T23:13:44.1661060Z              ~~~~~~~~~~~~
2026-10-23T23:13:44.1661135Z
2026-10-23T23:13:44.1661466Z 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-23T23:13:44.1661839Z
2026-10-23T23:13:44.1661898Z 146             Option.isSome(result)
2026-10-23T23:13:44.1662044Z                 ~~~~~~~~~~~~~
2026-10-23T23:13:44.1662129Z
2026-10-23T23:13:44.1662416Z 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-23T23:13:44.1662802Z
2026-10-23T23:13:44.1662909Z 640       enrichSnapshot: ({ snapshot, getSnapshot, publishSnapshot }) => {
2026-10-23T23:13:44.1663112Z           ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1663186Z
2026-10-23T23:13:44.1663428Z src/server/driver.ts:650:51 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T23:13:44.1663711Z
2026-10-23T23:13:44.1663818Z 650             : enrichProviderCached(snapshot).pipe(Effect.map(Option.some))
2026-10-23T23:13:44.1664035Z                                                       ~~~~~~~~~~
2026-10-23T23:13:44.1664146Z
2026-10-23T23:13:44.1664148Z
2026-10-23T23:13:44.1664409Z src/authorization/remote.test.ts:232:25 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1664713Z
2026-10-23T23:13:44.1664829Z 232               identity: Effect.succeed(Option.some({ accountId: "user_connect" })),
2026-10-23T23:13:44.1665051Z                             ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1665153Z
2026-10-23T23:13:44.1665402Z src/authorization/remote.test.ts:237:17 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1665702Z
2026-10-23T23:13:44.1665782Z 237             id: Effect.succeed(Option.some("device-1")),
2026-10-23T23:13:44.1665954Z                     ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1666117Z
2026-10-23T23:13:44.1666548Z 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-23T23:13:44.1666966Z
2026-10-23T23:13:44.1667022Z 553     authorizeDpop: (input) =>
2026-10-23T23:13:44.1667163Z         ~~~~~~~~~~~~~
2026-10-23T23:13:44.1667240Z
2026-10-23T23:13:44.1667613Z 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-23T23:13:44.1668034Z
2026-10-23T23:13:44.1668094Z 555     authorizeDpopHttp: (input) =>
2026-10-23T23:13:44.1668240Z         ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1668318Z
2026-10-23T23:13:44.1668678Z 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-23T23:13:44.1669093Z
2026-10-23T23:13:44.1669141Z 138       get: (entry) =>
2026-10-23T23:13:44.1669266Z           ~~~
2026-10-23T23:13:44.1669334Z
2026-10-23T23:13:44.1669706Z 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-23T23:13:44.1670129Z
2026-10-23T23:13:44.1670190Z 143       set: (entry, permission) => {
2026-10-23T23:13:44.1670334Z           ~~~
2026-10-23T23:13:44.1670399Z
2026-10-23T23:13:44.1670779Z 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-23T23:13:44.1671200Z
2026-10-23T23:13:44.1671258Z 159       forget: (environmentId) =>
2026-10-23T23:13:44.1671396Z           ~~~~~~
2026-10-23T23:13:44.1671463Z
2026-10-23T23:13:44.1671814Z 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-23T23:13:44.1672202Z
2026-10-23T23:13:44.1672262Z 298     registerPairing: (input) =>
2026-10-23T23:13:44.1672404Z         ~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1672476Z
2026-10-23T23:13:44.1672883Z 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-23T23:13:44.1673264Z
2026-10-23T23:13:44.1673320Z 304     registerSsh: (input) =>
2026-10-23T23:13:44.1673449Z         ~~~~~~~~~~~
2026-10-23T23:13:44.1673521Z
2026-10-23T23:13:44.1673862Z 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-23T23:13:44.1674245Z
2026-10-23T23:13:44.1674303Z 309     updateBearer: (input) =>
2026-10-23T23:13:44.1674446Z         ~~~~~~~~~~~~
2026-10-23T23:13:44.1674516Z
2026-10-23T23:13:44.1674818Z 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-23T23:13:44.1675169Z
2026-10-23T23:13:44.1675231Z 1392             ? Effect.succeed(undefined)
2026-10-23T23:13:44.1675387Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1675485Z
2026-10-23T23:13:44.1675784Z 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-23T23:13:44.1676229Z
2026-10-23T23:13:44.1676291Z 1476             ? Effect.succeed(undefined)
2026-10-23T23:13:44.1676443Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1676535Z
2026-10-23T23:13:44.1676882Z 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-23T23:13:44.1677224Z
2026-10-23T23:13:44.1677294Z 1489                     : Effect.succeed(undefined),
2026-10-23T23:13:44.1677462Z                            ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1677567Z
2026-10-23T23:13:44.1677842Z src/platform/orchestrationCache.test.ts:104:15 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T23:13:44.1678159Z
2026-10-23T23:13:44.1678221Z 104       }).pipe(Effect.map(Option.some));
2026-10-23T23:13:44.1678375Z                   ~~~~~~~~~~
2026-10-23T23:13:44.1678455Z
2026-10-23T23:13:44.1678870Z 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-23T23:13:44.1679329Z
2026-10-23T23:13:44.1679428Z 72       load: (prepared: PreparedConnection, threadId: ThreadId) => {
2026-10-23T23:13:44.1679613Z          ~~~~
2026-10-23T23:13:44.1679676Z
2026-10-23T23:13:44.1680005Z 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-23T23:13:44.1680373Z
2026-10-23T23:13:44.1680480Z 56             Effect.catch(() => Effect.succeed(Option.none<AuthSessionState>())),
2026-10-23T23:13:44.1680684Z                ~~~~~~~~~~~~
2026-10-23T23:13:44.1680767Z
2026-10-23T23:13:44.1681138Z 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-23T23:13:44.1681688Z
2026-10-23T23:13:44.1681773Z 62             return yield* Effect.fail(
2026-10-23T23:13:44.1681922Z                       ~~~~~
2026-10-23T23:13:44.1682001Z
2026-10-23T23:13:44.1682322Z 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-23T23:13:44.1682728Z
2026-10-23T23:13:44.1682829Z 57     execute: (target: OutdatedServerUpdateTarget, atomRegistry) => {
2026-10-23T23:13:44.1683023Z        ~~~~~~~
2026-10-23T23:13:44.1683089Z
2026-10-23T23:13:44.1683434Z 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-23T23:13:44.1683826Z
2026-10-23T23:13:44.1683884Z 90       load: (prepared, input) =>
2026-10-23T23:13:44.1684017Z          ~~~~
2026-10-23T23:13:44.1684084Z
2026-10-23T23:13:44.1684529Z 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-23T23:13:44.1685017Z
2026-10-23T23:13:44.1685127Z 34       return yield* Schema.decodeUnknownEffect(codec)(stored.value).pipe(
2026-10-23T23:13:44.1685338Z                               ~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1685442Z
2026-10-23T23:13:44.1685691Z src/state/queryPersistence.ts:35:9 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T23:13:44.1686149Z
2026-10-23T23:13:44.1686206Z 35         Effect.map(Option.some),
2026-10-23T23:13:44.1686345Z            ~~~~~~~~~~
2026-10-23T23:13:44.1686416Z
2026-10-23T23:13:44.1686790Z 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-23T23:13:44.1687132Z
2026-10-23T23:13:44.1687195Z 680     execute: (target, atomRegistry) => {
2026-10-23T23:13:44.1687342Z         ~~~~~~~
2026-10-23T23:13:44.1687407Z
2026-10-23T23:13:44.1687775Z 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-23T23:13:44.1688186Z
2026-10-23T23:13:44.1688245Z 1125           Effect.flatMap((summary) =>
2026-10-23T23:13:44.1688397Z                ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1688479Z
2026-10-23T23:13:44.1688728Z src/state/shell-sync.test.ts:90:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1689017Z
2026-10-23T23:13:44.1689098Z 90         loadShell: () => Effect.succeed(Option.none()),
2026-10-23T23:13:44.1689268Z                             ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1689362Z
2026-10-23T23:13:44.1689602Z src/state/shell-sync.test.ts:96:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1689887Z
2026-10-23T23:13:44.1689965Z 96         loadThread: () => Effect.succeed(Option.none()),
2026-10-23T23:13:44.1690138Z                              ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1690233Z
2026-10-23T23:13:44.1690472Z src/state/shell-sync.test.ts:99:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1690760Z
2026-10-23T23:13:44.1690851Z 99         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-23T23:13:44.1691038Z                                    ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1691140Z
2026-10-23T23:13:44.1691390Z src/state/shell-sync.test.ts:101:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1691679Z
2026-10-23T23:13:44.1691760Z 101         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-23T23:13:44.1691942Z                                ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1692038Z
2026-10-23T23:13:44.1692283Z src/state/shell-sync.test.ts:108:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1692637Z
2026-10-23T23:13:44.1692710Z 108         load: () => Effect.succeed(Option.none()),
2026-10-23T23:13:44.1692876Z                         ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1692968Z
2026-10-23T23:13:44.1693214Z src/state/shell-sync.test.ts:229:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1693501Z
2026-10-23T23:13:44.1693583Z 229         loadShell: () => Effect.succeed(Option.none()),
2026-10-23T23:13:44.1693757Z                              ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1693851Z
2026-10-23T23:13:44.1694092Z src/state/shell-sync.test.ts:238:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1694382Z
2026-10-23T23:13:44.1694462Z 238         loadThread: () => Effect.succeed(Option.none()),
2026-10-23T23:13:44.1694638Z                               ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1694735Z
2026-10-23T23:13:44.1694976Z src/state/shell-sync.test.ts:241:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1695345Z
2026-10-23T23:13:44.1695435Z 241         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-23T23:13:44.1695625Z                                     ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1695725Z
2026-10-23T23:13:44.1696042Z src/state/shell-sync.test.ts:243:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1696334Z
2026-10-23T23:13:44.1696415Z 243         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-23T23:13:44.1696592Z                                ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1696692Z
2026-10-23T23:13:44.1696936Z src/state/shell-sync.test.ts:250:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1697223Z
2026-10-23T23:13:44.1697294Z 250         load: () => Effect.succeed(Option.none()),
2026-10-23T23:13:44.1697461Z                         ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1697553Z
2026-10-23T23:13:44.1697799Z src/state/shell-sync.test.ts:349:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1698091Z
2026-10-23T23:13:44.1698171Z 349         loadShell: () => Effect.succeed(Option.none()),
2026-10-23T23:13:44.1698344Z                              ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1698442Z
2026-10-23T23:13:44.1698684Z src/state/shell-sync.test.ts:355:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1698969Z
2026-10-23T23:13:44.1699048Z 355         loadThread: () => Effect.succeed(Option.none()),
2026-10-23T23:13:44.1699222Z                               ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1699315Z
2026-10-23T23:13:44.1699558Z src/state/shell-sync.test.ts:358:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1699848Z
2026-10-23T23:13:44.1699935Z 358         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-23T23:13:44.1700120Z                                     ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1700220Z
2026-10-23T23:13:44.1700466Z src/state/shell-sync.test.ts:360:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1700755Z
2026-10-23T23:13:44.1700832Z 360         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-23T23:13:44.1701008Z                                ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1701102Z
2026-10-23T23:13:44.1711690Z src/state/shell-sync.test.ts:367:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1712041Z
2026-10-23T23:13:44.1712119Z 367         load: () => Effect.succeed(Option.none()),
2026-10-23T23:13:44.1712287Z                         ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1712384Z
2026-10-23T23:13:44.1712688Z src/state/shell-sync.test.ts:446:26 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1712972Z
2026-10-23T23:13:44.1713073Z 446         loadShell: () => Effect.succeed(Option.some(cachedSnapshot)),
2026-10-23T23:13:44.1713272Z                              ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1713366Z
2026-10-23T23:13:44.1713606Z src/state/shell-sync.test.ts:448:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1713893Z
2026-10-23T23:13:44.1713974Z 448         loadThread: () => Effect.succeed(Option.none()),
2026-10-23T23:13:44.1714149Z                               ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1714249Z
2026-10-23T23:13:44.1714492Z src/state/shell-sync.test.ts:451:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1714923Z
2026-10-23T23:13:44.1715010Z 451         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-23T23:13:44.1715200Z                                     ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1715300Z
2026-10-23T23:13:44.1715598Z src/state/shell-sync.test.ts:453:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1715889Z
2026-10-23T23:13:44.1715970Z 453         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-23T23:13:44.1716144Z                                ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1716242Z
2026-10-23T23:13:44.1716484Z src/state/shell-sync.test.ts:460:21 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1716771Z
2026-10-23T23:13:44.1716853Z 460         load: () => Effect.succeed(Option.some(httpSnapshot)),
2026-10-23T23:13:44.1717035Z                         ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1717127Z
2026-10-23T23:13:44.1717468Z 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-23T23:13:44.1717842Z
2026-10-23T23:13:44.1717912Z 98       load: (prepared: PreparedConnection) =>
2026-10-23T23:13:44.1718066Z          ~~~~
2026-10-23T23:13:44.1718129Z
2026-10-23T23:13:44.1718526Z 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-23T23:13:44.1718968Z
2026-10-23T23:13:44.1719040Z 47       register: (environmentId, threadId, handler) =>
2026-10-23T23:13:44.1719205Z          ~~~~~~~~
2026-10-23T23:13:44.1719272Z
2026-10-23T23:13:44.1719632Z 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-23T23:13:44.1720045Z
2026-10-23T23:13:44.1720109Z 59       unregister: (registration) =>
2026-10-23T23:13:44.1720248Z          ~~~~~~~~~~
2026-10-23T23:13:44.1720316Z
2026-10-23T23:13:44.1720728Z 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-23T23:13:44.1721185Z
2026-10-23T23:13:44.1721272Z 74       loadEarlier: (environmentId, threadId, throughEntryId) =>
2026-10-23T23:13:44.1721453Z          ~~~~~~~~~~~
2026-10-23T23:13:44.1721690Z
2026-10-23T23:13:44.1721993Z src/state/threads-sync.test.ts:1006:29 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1722297Z
2026-10-23T23:13:44.1722385Z 1006             : { loadCached: Effect.succeed(Option.some(saved!)) },
2026-10-23T23:13:44.1722629Z                                  ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1722732Z
2026-10-23T23:13:44.1723020Z 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-23T23:13:44.1723351Z
2026-10-23T23:13:44.1723444Z 447       execute: (input: RunVcsStackedActionInput, registry) => {
2026-10-23T23:13:44.1723621Z           ~~~~~~~
2026-10-23T23:13:44.1723688Z
2026-10-23T23:13:44.1723690Z
2026-10-23T23:13:44.1723744Z ~/apps/mobile$ tsc --noEmit
2026-10-23T23:13:44.1723878Z ~/infra/relay$ tsc --noEmit
2026-10-23T23:13:44.1724006Z ~/apps/web$ tsc --noEmit
2026-10-23T23:13:44.1724130Z Result (22 files):
2026-10-23T23:13:44.1724238Z - 0 errors
2026-10-23T23:13:44.1724341Z - 0 warnings
2026-10-23T23:13:44.1724600Z - 0 hints
2026-10-23T23:13:44.1724659Z
2026-10-23T23:13:44.1724661Z
2026-10-23T23:13:44.1724716Z ~/apps/desktop$ tsc --noEmit
2026-10-23T23:13:44.1725203Z 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-23T23:13:44.1725589Z
2026-10-23T23:13:44.1725640Z 220           send: (body) =>
2026-10-23T23:13:44.1725763Z               ~~~~
2026-10-23T23:13:44.1725832Z
2026-10-23T23:13:44.1726156Z 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-23T23:13:44.1726522Z
2026-10-23T23:13:44.1726576Z 12       onFailure: (error) =>
2026-10-23T23:13:44.1726706Z          ~~~~~~~~~
2026-10-23T23:13:44.1726767Z
2026-10-23T23:13:44.1727117Z 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-23T23:13:44.1727518Z
2026-10-23T23:13:44.1727580Z 64     pauseUntil: (untilMillis) =>
2026-10-23T23:13:44.1727712Z        ~~~~~~~~~~
2026-10-23T23:13:44.1727777Z
2026-10-23T23:13:44.1728032Z 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-23T23:13:44.1728334Z
2026-10-23T23:13:44.1728384Z 198         onNone: () =>
2026-10-23T23:13:44.1728502Z             ~~~~~~
2026-10-23T23:13:44.1728562Z
2026-10-23T23:13:44.1728869Z 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-23T23:13:44.1729218Z
2026-10-23T23:13:44.1729339Z 92   fileResponse: () => Effect.die("Relay API does not serve filesystem responses"),
2026-10-23T23:13:44.1729542Z      ~~~~~~~~~~~~
2026-10-23T23:13:44.1729608Z
2026-10-23T23:13:44.1729923Z 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-23T23:13:44.1730273Z
2026-10-23T23:13:44.1730386Z 93   fileWebResponse: () => Effect.die("Relay API does not serve file responses"),
2026-10-23T23:13:44.1730588Z      ~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1730652Z
2026-10-23T23:13:44.1730931Z 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-23T23:13:44.1731256Z
2026-10-23T23:13:44.1731323Z 242       hold: ({ endpointKey, baseUrl, hook }) =>
2026-10-23T23:13:44.1731476Z           ~~~~
2026-10-23T23:13:44.1731544Z
2026-10-23T23:13:44.1731822Z 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-23T23:13:44.1732147Z
2026-10-23T23:13:44.1732207Z 244       wake: ({ endpointKey, baseUrl }) =>
2026-10-23T23:13:44.1732359Z           ~~~~
2026-10-23T23:13:44.1732418Z
2026-10-23T23:13:44.1732750Z 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-23T23:13:44.1733073Z
2026-10-23T23:13:44.1733131Z 246       clear: ({ endpointKey }) =>
2026-10-23T23:13:44.1733265Z           ~~~~~
2026-10-23T23:13:44.1733333Z
2026-10-23T23:13:44.1733671Z 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-23T23:13:44.1734132Z
2026-10-23T23:13:44.1734181Z 275               send: (body) =>
2026-10-23T23:13:44.1734316Z                   ~~~~
2026-10-23T23:13:44.1734384Z
2026-10-23T23:13:44.1734386Z
2026-10-23T23:13:44.1734777Z 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-23T23:13:44.1735157Z
2026-10-23T23:13:44.1735264Z 389     complete: (response) => Effect.sync(() => broker.complete(response)),
2026-10-23T23:13:44.1735458Z         ~~~~~~~~
2026-10-23T23:13:44.1735524Z
2026-10-23T23:13:44.1735769Z src/app/DesktopClerk.test.ts:300:27 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1736055Z
2026-10-23T23:13:44.1736145Z 300       currentMainOrFirst: Effect.succeed(Option.some(window)),
2026-10-23T23:13:44.1736335Z                               ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1736432Z
2026-10-23T23:13:44.1736732Z 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-23T23:13:44.1737073Z
2026-10-23T23:13:44.1737125Z 459     onSome: (logFile) =>
2026-10-23T23:13:44.1737245Z         ~~~~~~
2026-10-23T23:13:44.1737307Z
2026-10-23T23:13:44.1737657Z 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-23T23:13:44.1738053Z
2026-10-23T23:13:44.1738112Z 589       forInstance: (id) => makeForId(id),
2026-10-23T23:13:44.1738261Z           ~~~~~~~~~~~
2026-10-23T23:13:44.1738330Z
2026-10-23T23:13:44.1738571Z src/app/DesktopWebLinks.test.ts:29:31 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1738860Z
2026-10-23T23:13:44.1738952Z 29           currentMainOrFirst: Effect.succeed(Option.some(window)),
2026-10-23T23:13:44.1739138Z                                  ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1739238Z
2026-10-23T23:13:44.1739538Z 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-23T23:13:44.1739883Z
2026-10-23T23:13:44.1739930Z 72     receive: (url) =>
2026-10-23T23:13:44.1740050Z        ~~~~~~~
2026-10-23T23:13:44.1740112Z
2026-10-23T23:13:44.1740431Z 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-23T23:13:44.1740796Z
2026-10-23T23:13:44.1740856Z 77     setRendererReady: (ready) =>
2026-10-23T23:13:44.1740997Z        ~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1741069Z
2026-10-23T23:13:44.1741378Z 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-23T23:13:44.1741724Z
2026-10-23T23:13:44.1741770Z 1062       onSome: (run) =>
2026-10-23T23:13:44.1741893Z            ~~~~~~
2026-10-23T23:13:44.1741958Z
2026-10-23T23:13:44.1742267Z 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-23T23:13:44.1742673Z
2026-10-23T23:13:44.1742720Z 307       get: (id) =>
2026-10-23T23:13:44.1742832Z           ~~~
2026-10-23T23:13:44.1742893Z
2026-10-23T23:13:44.1743202Z 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-23T23:13:44.1743679Z
2026-10-23T23:13:44.1743826Z 342         get: (id) => Effect.succeed(Option.fromNullishOr(byId.get(id))),
2026-10-23T23:13:44.1744014Z             ~~~
2026-10-23T23:13:44.1744076Z
2026-10-23T23:13:44.1744390Z 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-23T23:13:44.1744753Z
2026-10-23T23:13:44.1744890Z 345         register: () => Effect.die("DesktopBackendPool.layerTest does not support register"),
2026-10-23T23:13:44.1745112Z             ~~~~~~~~
2026-10-23T23:13:44.1745185Z
2026-10-23T23:13:44.1745507Z 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-23T23:13:44.1745881Z
2026-10-23T23:13:44.1746021Z 346         unregister: () => Effect.die("DesktopBackendPool.layerTest does not support unregister"),
2026-10-23T23:13:44.1746255Z             ~~~~~~~~~~
2026-10-23T23:13:44.1746326Z
2026-10-23T23:13:44.1746621Z 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-23T23:13:44.1746957Z
2026-10-23T23:13:44.1747005Z 145   exit: (code) =>
2026-10-23T23:13:44.1747122Z       ~~~~
2026-10-23T23:13:44.1747180Z
2026-10-23T23:13:44.1747485Z 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-23T23:13:44.1747835Z
2026-10-23T23:13:44.1747887Z 149   relaunch: (options) =>
2026-10-23T23:13:44.1748013Z       ~~~~~~~~
2026-10-23T23:13:44.1748076Z
2026-10-23T23:13:44.1748385Z 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-23T23:13:44.1748736Z
2026-10-23T23:13:44.1748789Z 153   setPath: (name, path) =>
2026-10-23T23:13:44.1748920Z       ~~~~~~~
2026-10-23T23:13:44.1748979Z
2026-10-23T23:13:44.1749273Z 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-23T23:13:44.1749612Z
2026-10-23T23:13:44.1749661Z 157   setName: (name) =>
2026-10-23T23:13:44.1749774Z       ~~~~~~~
2026-10-23T23:13:44.1749835Z
2026-10-23T23:13:44.1750162Z 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-23T23:13:44.1750532Z
2026-10-23T23:13:44.1750596Z 161   setAboutPanelOptions: (options) =>
2026-10-23T23:13:44.1750745Z       ~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1750820Z
2026-10-23T23:13:44.1751137Z 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-23T23:13:44.1751498Z
2026-10-23T23:13:44.1751555Z 165   setAppUserModelId: (id) =>
2026-10-23T23:13:44.1751689Z       ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1751762Z
2026-10-23T23:13:44.1752131Z 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-23T23:13:44.1752587Z
2026-10-23T23:13:44.1752678Z 170   setAsDefaultProtocolClient: (protocol, path, args) =>
2026-10-23T23:13:44.1752936Z       ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1753019Z
2026-10-23T23:13:44.1753410Z 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-23T23:13:44.1753779Z
2026-10-23T23:13:44.1753839Z 177   setDesktopName: (desktopName) =>
2026-10-23T23:13:44.1753977Z       ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1754047Z
2026-10-23T23:13:44.1754359Z 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-23T23:13:44.1754716Z
2026-10-23T23:13:44.1754767Z 184   setDockIcon: (iconPath) =>
2026-10-23T23:13:44.1754901Z       ~~~~~~~~~~~
2026-10-23T23:13:44.1754964Z
2026-10-23T23:13:44.1755316Z 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-23T23:13:44.1755719Z
2026-10-23T23:13:44.1755802Z 188   appendCommandLineSwitch: (switchName, value) =>
2026-10-23T23:13:44.1755970Z       ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1756052Z
2026-10-23T23:13:44.1756385Z 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-23T23:13:44.1756761Z
2026-10-23T23:13:44.1756822Z 196   onBeforeQuitForUpdate: (listener) =>
2026-10-23T23:13:44.1756974Z       ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1757053Z
2026-10-23T23:13:44.1757390Z 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-23T23:13:44.1757780Z
2026-10-23T23:13:44.1757855Z 206   removeCommandLineSwitch: (switchName) =>
2026-10-23T23:13:44.1758013Z       ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1758093Z
2026-10-23T23:13:44.1758437Z 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-23T23:13:44.1758828Z
2026-10-23T23:13:44.1758888Z 169   showMessageBox: (options, owner) =>
2026-10-23T23:13:44.1759029Z       ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1759098Z
2026-10-23T23:13:44.1759430Z 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-23T23:13:44.1759811Z
2026-10-23T23:13:44.1759868Z 185   showErrorBox: (title, content) =>
2026-10-23T23:13:44.1760009Z       ~~~~~~~~~~~~
2026-10-23T23:13:44.1760075Z
2026-10-23T23:13:44.1760411Z 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-23T23:13:44.1760789Z
2026-10-23T23:13:44.1760850Z 193     setApplicationMenu: (template) =>
2026-10-23T23:13:44.1760995Z         ~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1761071Z
2026-10-23T23:13:44.1761388Z 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-23T23:13:44.1761986Z
2026-10-23T23:13:44.1762046Z 207     popupTemplate: (input) =>
2026-10-23T23:13:44.1762185Z         ~~~~~~~~~~~~~
2026-10-23T23:13:44.1762252Z
2026-10-23T23:13:44.1762601Z 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-23T23:13:44.1763103Z
2026-10-23T23:13:44.1763229Z 225     showContextMenu: (input) =>
2026-10-23T23:13:44.1763366Z         ~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1763440Z
2026-10-23T23:13:44.1763831Z 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-23T23:13:44.1764260Z
2026-10-23T23:13:44.1764334Z 82   getSystemIdleState: (idleThresholdSeconds) =>
2026-10-23T23:13:44.1764498Z      ~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1764567Z
2026-10-23T23:13:44.1764911Z 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-23T23:13:44.1765307Z
2026-10-23T23:13:44.1765361Z 77     encryptString: (value) =>
2026-10-23T23:13:44.1765491Z        ~~~~~~~~~~~~~
2026-10-23T23:13:44.1765561Z
2026-10-23T23:13:44.1765902Z 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-23T23:13:44.1766287Z
2026-10-23T23:13:44.1766338Z 82     decryptString: (value) =>
2026-10-23T23:13:44.1766467Z        ~~~~~~~~~~~~~
2026-10-23T23:13:44.1766531Z
2026-10-23T23:13:44.1766847Z 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-23T23:13:44.1767208Z
2026-10-23T23:13:44.1767263Z 68   openExternal: (rawUrl) =>
2026-10-23T23:13:44.1767389Z      ~~~~~~~~~~~~
2026-10-23T23:13:44.1767458Z
2026-10-23T23:13:44.1767788Z 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-23T23:13:44.1768161Z
2026-10-23T23:13:44.1768216Z 79   openSystemSettings: (pane) =>
2026-10-23T23:13:44.1768353Z      ~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1768425Z
2026-10-23T23:13:44.1768730Z 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-23T23:13:44.1769079Z
2026-10-23T23:13:44.1769129Z 86   copyText: (text) =>
2026-10-23T23:13:44.1769245Z      ~~~~~~~~
2026-10-23T23:13:44.1769306Z
2026-10-23T23:13:44.1769614Z 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-23T23:13:44.1769970Z
2026-10-23T23:13:44.1770019Z 34   setSource: (theme) =>
2026-10-23T23:13:44.1770138Z      ~~~~~~~~~
2026-10-23T23:13:44.1770198Z
2026-10-23T23:13:44.1770516Z 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-23T23:13:44.1770878Z
2026-10-23T23:13:44.1770930Z 41   onUpdated: (listener) =>
2026-10-23T23:13:44.1771056Z      ~~~~~~~~~
2026-10-23T23:13:44.1771117Z
2026-10-23T23:13:44.1771442Z 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-23T23:13:44.1771811Z
2026-10-23T23:13:44.1771861Z 85   setFeedURL: (options) =>
2026-10-23T23:13:44.1771988Z      ~~~~~~~~~~
2026-10-23T23:13:44.1772133Z
2026-10-23T23:13:44.1772462Z 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-23T23:13:44.1772965Z
2026-10-23T23:13:44.1773020Z 90   setAutoDownload: (value) =>
2026-10-23T23:13:44.1773153Z      ~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1773221Z
2026-10-23T23:13:44.1773569Z 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-23T23:13:44.1773962Z
2026-10-23T23:13:44.1774021Z 95   setAutoInstallOnAppQuit: (value) =>
2026-10-23T23:13:44.1774172Z      ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1774251Z
2026-10-23T23:13:44.1774574Z 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-23T23:13:44.1774948Z
2026-10-23T23:13:44.1775001Z 100   setChannel: (channel) =>
2026-10-23T23:13:44.1775127Z       ~~~~~~~~~~
2026-10-23T23:13:44.1775195Z
2026-10-23T23:13:44.1775535Z 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-23T23:13:44.1775919Z
2026-10-23T23:13:44.1775975Z 105   setAllowPrerelease: (value) =>
2026-10-23T23:13:44.1776116Z       ~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1776190Z
2026-10-23T23:13:44.1776524Z 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-23T23:13:44.1776528Z
2026-10-23T23:13:44.1776583Z 111   setAllowDowngrade: (value) =>
2026-10-23T23:13:44.1776631Z       ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1776634Z
2026-10-23T23:13:44.1776968Z 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-23T23:13:44.1776971Z
2026-10-23T23:13:44.1777025Z 116   setFullChangelog: (value) =>
2026-10-23T23:13:44.1777068Z       ~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1777070Z
2026-10-23T23:13:44.1777435Z 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-23T23:13:44.1777438Z
2026-10-23T23:13:44.1777508Z 121   setDisableDifferentialDownload: (value) =>
2026-10-23T23:13:44.1777557Z       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1777559Z
2026-10-23T23:13:44.1777879Z 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-23T23:13:44.1777886Z
2026-10-23T23:13:44.1777961Z 140   quitAndInstall: ({ isSilent, isForceRunAfter }) =>
2026-10-23T23:13:44.1778006Z       ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1778008Z
2026-10-23T23:13:44.1778329Z 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-23T23:13:44.1778332Z
2026-10-23T23:13:44.1778388Z 154   on: (eventName, listener) => {
2026-10-23T23:13:44.1778433Z       ~~
2026-10-23T23:13:44.1778435Z
2026-10-23T23:13:44.1778745Z 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-23T23:13:44.1778828Z
2026-10-23T23:13:44.1778880Z 211     create: (options) => {
2026-10-23T23:13:44.1778924Z         ~~~~~~
2026-10-23T23:13:44.1778926Z
2026-10-23T23:13:44.1779288Z 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-23T23:13:44.1779291Z
2026-10-23T23:13:44.1779388Z 243     setMain: (window) => Ref.set(mainWindowRef, Option.some(window)),
2026-10-23T23:13:44.1779433Z         ~~~~~~~
2026-10-23T23:13:44.1779435Z
2026-10-23T23:13:44.1779752Z 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-23T23:13:44.1779755Z
2026-10-23T23:13:44.1779807Z 244     clearMain: (window) =>
2026-10-23T23:13:44.1779848Z         ~~~~~~~~~
2026-10-23T23:13:44.1779856Z
2026-10-23T23:13:44.1780177Z 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-23T23:13:44.1780179Z
2026-10-23T23:13:44.1780234Z 254     prepareReveal: (window) =>
2026-10-23T23:13:44.1780281Z         ~~~~~~~~~~~~~
2026-10-23T23:13:44.1780283Z
2026-10-23T23:13:44.1780593Z 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-23T23:13:44.1780595Z
2026-10-23T23:13:44.1780645Z 264     reveal: (window) =>
2026-10-23T23:13:44.1780691Z         ~~~~~~
2026-10-23T23:13:44.1780693Z
2026-10-23T23:13:44.1781073Z 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-23T23:13:44.1781078Z
2026-10-23T23:13:44.1781155Z 526     setMainWindowBounds: (bounds, isMaximized) =>
2026-10-23T23:13:44.1781206Z         ~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1781209Z
2026-10-23T23:13:44.1781562Z 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-23T23:13:44.1781564Z
2026-10-23T23:13:44.1781625Z 538     setServerExposureMode: (mode) =>
2026-10-23T23:13:44.1781673Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1781676Z
2026-10-23T23:13:44.1782024Z 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-23T23:13:44.1782028Z
2026-10-23T23:13:44.1782091Z 542     setTailscaleServe: (input) =>
2026-10-23T23:13:44.1782137Z         ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1782140Z
2026-10-23T23:13:44.1782529Z 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-23T23:13:44.1782532Z
2026-10-23T23:13:44.1782590Z 546     setUpdateChannel: (channel) =>
2026-10-23T23:13:44.1782638Z         ~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1782640Z
2026-10-23T23:13:44.1782996Z 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-23T23:13:44.1782999Z
2026-10-23T23:13:44.1783058Z 550     setWslBackendEnabled: (enabled) =>
2026-10-23T23:13:44.1783106Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1783172Z
2026-10-23T23:13:44.1783564Z 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-23T23:13:44.1783567Z
2026-10-23T23:13:44.1783622Z 554     setWslDistro: (distro) =>
2026-10-23T23:13:44.1783664Z         ~~~~~~~~~~~~
2026-10-23T23:13:44.1783672Z
2026-10-23T23:13:44.1784004Z 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-23T23:13:44.1784007Z
2026-10-23T23:13:44.1784058Z 560     setWslOnly: (enabled) =>
2026-10-23T23:13:44.1784105Z         ~~~~~~~~~~
2026-10-23T23:13:44.1784108Z
2026-10-23T23:13:44.1784475Z 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-23T23:13:44.1784479Z
2026-10-23T23:13:44.1784546Z 564     setLocalEnvironmentEnabled: (enabled) =>
2026-10-23T23:13:44.1784598Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1784600Z
2026-10-23T23:13:44.1784973Z 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-23T23:13:44.1784976Z
2026-10-23T23:13:44.1785056Z 599         setMainWindowBounds: (bounds, isMaximized) =>
2026-10-23T23:13:44.1785105Z             ~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1785108Z
2026-10-23T23:13:44.1785460Z 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-23T23:13:44.1785466Z
2026-10-23T23:13:44.1785527Z 601         setServerExposureMode: (mode) =>
2026-10-23T23:13:44.1785576Z             ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1785579Z
2026-10-23T23:13:44.1785927Z 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-23T23:13:44.1785929Z
2026-10-23T23:13:44.1786066Z 603         setTailscaleServe: (input) => update((settings) => setTailscaleServe(settings, input)),
2026-10-23T23:13:44.1786113Z             ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1786115Z
2026-10-23T23:13:44.1786464Z 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-23T23:13:44.1786468Z
2026-10-23T23:13:44.1786606Z 604         setUpdateChannel: (channel) => update((settings) => setUpdateChannel(settings, channel)),
2026-10-23T23:13:44.1786656Z             ~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1786659Z
2026-10-23T23:13:44.1787017Z 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-23T23:13:44.1787020Z
2026-10-23T23:13:44.1787080Z 605         setWslBackendEnabled: (enabled) =>
2026-10-23T23:13:44.1787129Z             ~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1787132Z
2026-10-23T23:13:44.1787469Z 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-23T23:13:44.1787472Z
2026-10-23T23:13:44.1787594Z 607         setWslDistro: (distro) => update((settings) => setWslDistro(settings, distro)),
2026-10-23T23:13:44.1787700Z             ~~~~~~~~~~~~
2026-10-23T23:13:44.1787704Z
2026-10-23T23:13:44.1788085Z 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-23T23:13:44.1788091Z
2026-10-23T23:13:44.1788204Z 608         setWslOnly: (enabled) => update((settings) => setWslOnly(settings, enabled)),
2026-10-23T23:13:44.1788251Z             ~~~~~~~~~~
2026-10-23T23:13:44.1788254Z
2026-10-23T23:13:44.1788625Z 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-23T23:13:44.1788627Z
2026-10-23T23:13:44.1788701Z 609         setLocalEnvironmentEnabled: (enabled) =>
2026-10-23T23:13:44.1788751Z             ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1788754Z
2026-10-23T23:13:44.1789094Z 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-23T23:13:44.1789096Z
2026-10-23T23:13:44.1789148Z 197     set: (settings) =>
2026-10-23T23:13:44.1789193Z         ~~~
2026-10-23T23:13:44.1789195Z
2026-10-23T23:13:44.1789531Z 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-23T23:13:44.1789533Z
2026-10-23T23:13:44.1789628Z 231         set: (settings) => Ref.set(settingsRef, Option.some(settings)),
2026-10-23T23:13:44.1789674Z             ~~~
2026-10-23T23:13:44.1789677Z
2026-10-23T23:13:44.1790042Z 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-23T23:13:44.1790046Z
2026-10-23T23:13:44.1790126Z 1729     setAnimationDestination: (id, destination) =>
2026-10-23T23:13:44.1790175Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1790178Z
2026-10-23T23:13:44.1790507Z 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-23T23:13:44.1790509Z
2026-10-23T23:13:44.1790563Z 1740     dismissAnimation: (id) =>
2026-10-23T23:13:44.1790609Z          ~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1790611Z
2026-10-23T23:13:44.1790931Z 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-23T23:13:44.1790936Z
2026-10-23T23:13:44.1790989Z 1745     acknowledge: (id) =>
2026-10-23T23:13:44.1791032Z          ~~~~~~~~~~~
2026-10-23T23:13:44.1791034Z
2026-10-23T23:13:44.1791380Z 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-23T23:13:44.1791383Z
2026-10-23T23:13:44.1791436Z 136     discoverHosts: (input) =>
2026-10-23T23:13:44.1791481Z         ~~~~~~~~~~~~~
2026-10-23T23:13:44.1791483Z
2026-10-23T23:13:44.1791818Z 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-23T23:13:44.1791823Z
2026-10-23T23:13:44.1791874Z 141     resolveHost: (alias) =>
2026-10-23T23:13:44.1791919Z         ~~~~~~~~~~~
2026-10-23T23:13:44.1791976Z
2026-10-23T23:13:44.1792410Z 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-23T23:13:44.1792413Z
2026-10-23T23:13:44.1792530Z 146     ensureEnvironment: (target, ensureOptions) =>
2026-10-23T23:13:44.1792578Z         ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1792580Z
2026-10-23T23:13:44.1792942Z 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-23T23:13:44.1792945Z
2026-10-23T23:13:44.1793007Z 154     disconnectEnvironment: (target) =>
2026-10-23T23:13:44.1793055Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1793058Z
2026-10-23T23:13:44.1793405Z 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-23T23:13:44.1793409Z
2026-10-23T23:13:44.1793547Z 1171     installPrepared: (expectedVersion) => installWithExpectedVersion(expectedVersion),
2026-10-23T23:13:44.1793595Z          ~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1793597Z
2026-10-23T23:13:44.1793922Z 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-23T23:13:44.1793924Z
2026-10-23T23:13:44.1793980Z 1101       preWarm: () => Effect.void,
2026-10-23T23:13:44.1794026Z            ~~~~~~~
2026-10-23T23:13:44.1794028Z
2026-10-23T23:13:44.1794397Z 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-23T23:13:44.1794401Z
2026-10-23T23:13:44.1794478Z 1102       windowsToWslPath: (distro, windowsPath) =>
2026-10-23T23:13:44.1794528Z            ~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1794530Z
2026-10-23T23:13:44.1794875Z 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-23T23:13:44.1794878Z
2026-10-23T23:13:44.1795028Z 1104       getUserHome: (distro) => Effect.succeed(stub.getUserHome?.(distro) ?? Option.none<string>()),
2026-10-23T23:13:44.1795071Z            ~~~~~~~~~~~
2026-10-23T23:13:44.1795073Z
2026-10-23T23:13:44.1795413Z 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-23T23:13:44.1795417Z
2026-10-23T23:13:44.1795560Z 1105       getDistroIp: (distro) => Effect.succeed(stub.getDistroIp?.(distro) ?? Option.none<string>()),
2026-10-23T23:13:44.1795607Z            ~~~~~~~~~~~
2026-10-23T23:13:44.1795611Z
2026-10-23T23:13:44.1795972Z 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-23T23:13:44.1795975Z
2026-10-23T23:13:44.1796037Z 1106       prepareRuntime: (distro, archive) =>
2026-10-23T23:13:44.1796084Z            ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1796087Z
2026-10-23T23:13:44.1796449Z 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-23T23:13:44.1796509Z
2026-10-23T23:13:44.1796658Z 1113       pruneRuntimes: (distro, runtimeId) => stub.pruneRuntimes?.(distro, runtimeId) ?? Effect.void,
2026-10-23T23:13:44.1796705Z            ~~~~~~~~~~~~~
2026-10-23T23:13:44.1796707Z
2026-10-23T23:13:44.1797122Z 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-23T23:13:44.1797124Z
2026-10-23T23:13:44.1797195Z 1114       invalidateRuntime: (distro, runtimeId) =>
2026-10-23T23:13:44.1797243Z            ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1797246Z
2026-10-23T23:13:44.1797613Z 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-23T23:13:44.1797615Z
2026-10-23T23:13:44.1797683Z 1116       probeRuntime: (distro, linuxAppRoot) =>
2026-10-23T23:13:44.1797727Z            ~~~~~~~~~~~~
2026-10-23T23:13:44.1797729Z
2026-10-23T23:13:44.1798114Z 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-23T23:13:44.1798117Z
2026-10-23T23:13:44.1798198Z 1120       ensureNodePty: (distro, linuxAppRoot, options) =>
2026-10-23T23:13:44.1798245Z            ~~~~~~~~~~~~~
2026-10-23T23:13:44.1798248Z
2026-10-23T23:13:44.1798583Z 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-23T23:13:44.1798585Z
2026-10-23T23:13:44.1798635Z 1187       preWarm: (distro) =>
2026-10-23T23:13:44.1798680Z            ~~~~~~~
2026-10-23T23:13:44.1798684Z
2026-10-23T23:13:44.1799044Z 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-23T23:13:44.1799047Z
2026-10-23T23:13:44.1799110Z 1192       prepareRuntime: (distro, archive) =>
2026-10-23T23:13:44.1799154Z            ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1799159Z
2026-10-23T23:13:44.1799517Z 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-23T23:13:44.1799519Z
2026-10-23T23:13:44.1799583Z 1196       pruneRuntimes: (distro, runtimeId) =>
2026-10-23T23:13:44.1799629Z            ~~~~~~~~~~~~~
2026-10-23T23:13:44.1799632Z
2026-10-23T23:13:44.1800003Z 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-23T23:13:44.1800007Z
2026-10-23T23:13:44.1800077Z 1200       invalidateRuntime: (distro, runtimeId) =>
2026-10-23T23:13:44.1800126Z            ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1800128Z
2026-10-23T23:13:44.1800494Z 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-23T23:13:44.1800496Z
2026-10-23T23:13:44.1800563Z 1204       probeRuntime: (distro, linuxAppRoot) =>
2026-10-23T23:13:44.1800610Z            ~~~~~~~~~~~~
2026-10-23T23:13:44.1800612Z
2026-10-23T23:13:44.1800991Z 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-23T23:13:44.1801053Z
2026-10-23T23:13:44.1801136Z 1208       ensureNodePty: (distro, linuxAppRoot, options) =>
2026-10-23T23:13:44.1801231Z            ~~~~~~~~~~~~~
2026-10-23T23:13:44.1801233Z
2026-10-23T23:13:44.1801235Z
2026-10-23T23:13:44.1801237Z
2026-10-23T23:13:44.1801686Z 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-23T23:13:44.1801689Z
2026-10-23T23:13:44.1801743Z 805     clear: (environmentId) =>
2026-10-23T23:13:44.1801785Z         ~~~~~
2026-10-23T23:13:44.1801791Z
2026-10-23T23:13:44.1802114Z 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-23T23:13:44.1802119Z
2026-10-23T23:13:44.1802209Z 815     observe: ({ environmentId, environmentLabel, method }) =>
2026-10-23T23:13:44.1802256Z         ~~~~~~~
2026-10-23T23:13:44.1802258Z
2026-10-23T23:13:44.1802619Z 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-23T23:13:44.1802622Z
2026-10-23T23:13:44.1802668Z 549     get: (entry) =>
2026-10-23T23:13:44.1802714Z         ~~~
2026-10-23T23:13:44.1802717Z
2026-10-23T23:13:44.1803050Z 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-23T23:13:44.1803053Z
2026-10-23T23:13:44.1803114Z 576     set: (entry, permission) => {
2026-10-23T23:13:44.1803157Z         ~~~
2026-10-23T23:13:44.1803161Z
2026-10-23T23:13:44.1803494Z 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-23T23:13:44.1803497Z
2026-10-23T23:13:44.1803585Z 596     forget: (environmentId) => write(environmentId, null),
2026-10-23T23:13:44.1803629Z         ~~~~~~
2026-10-23T23:13:44.1803631Z
2026-10-23T23:13:44.1804017Z 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-23T23:13:44.1804020Z
2026-10-23T23:13:44.1804083Z 643       register: (registration, routes) =>
2026-10-23T23:13:44.1804126Z           ~~~~~~~~
2026-10-23T23:13:44.1804129Z
2026-10-23T23:13:44.1804517Z 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-23T23:13:44.1804521Z
2026-10-23T23:13:44.1804586Z 647       setRoutes: (environmentId, routes) =>
2026-10-23T23:13:44.1804631Z           ~~~~~~~~~
2026-10-23T23:13:44.1804633Z
2026-10-23T23:13:44.1805004Z 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-23T23:13:44.1805006Z
2026-10-23T23:13:44.1805059Z 651       remove: (environmentId) =>
2026-10-23T23:13:44.1805103Z           ~~~~~~
2026-10-23T23:13:44.1805106Z
2026-10-23T23:13:44.1805497Z 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-23T23:13:44.1805611Z
2026-10-23T23:13:44.1805677Z 655       setEnabled: (environmentId, enabled) =>
2026-10-23T23:13:44.1805725Z           ~~~~~~~~~~
2026-10-23T23:13:44.1805728Z
2026-10-23T23:13:44.1806144Z 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-23T23:13:44.1806148Z
2026-10-23T23:13:44.1806207Z 732       loadShell: (environmentId) =>
2026-10-23T23:13:44.1806253Z           ~~~~~~~~~
2026-10-23T23:13:44.1806255Z
2026-10-23T23:13:44.1806632Z 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-23T23:13:44.1806634Z
2026-10-23T23:13:44.1806698Z 768       loadServerConfig: (environmentId) =>
2026-10-23T23:13:44.1806749Z           ~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1806751Z
2026-10-23T23:13:44.1807133Z 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-23T23:13:44.1807136Z
2026-10-23T23:13:44.1807203Z 802       loadThread: (environmentId, threadId) =>
2026-10-23T23:13:44.1807248Z           ~~~~~~~~~~
2026-10-23T23:13:44.1807250Z
2026-10-23T23:13:44.1807619Z 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-23T23:13:44.1807624Z
2026-10-23T23:13:44.1807684Z 851       loadVcsRefs: (environmentId, cwd) =>
2026-10-23T23:13:44.1807730Z           ~~~~~~~~~~~
2026-10-23T23:13:44.1807735Z
2026-10-23T23:13:44.1808112Z 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-23T23:13:44.1808115Z
2026-10-23T23:13:44.1808181Z 893       removeVcsRefs: (environmentId, cwd) =>
2026-10-23T23:13:44.1808226Z           ~~~~~~~~~~~~~
2026-10-23T23:13:44.1808228Z
2026-10-23T23:13:44.1808596Z 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-23T23:13:44.1808598Z
2026-10-23T23:13:44.1808658Z 899       clearVcsRefs: (environmentId) =>
2026-10-23T23:13:44.1808705Z           ~~~~~~~~~~~~
2026-10-23T23:13:44.1808708Z
2026-10-23T23:13:44.1809088Z 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-23T23:13:44.1809092Z
2026-10-23T23:13:44.1809162Z 905       removeThread: (environmentId, threadId) =>
2026-10-23T23:13:44.1809209Z           ~~~~~~~~~~~~
2026-10-23T23:13:44.1809212Z
2026-10-23T23:13:44.1809564Z 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-23T23:13:44.1809566Z
2026-10-23T23:13:44.1809621Z 911       clear: (environmentId) =>
2026-10-23T23:13:44.1809667Z           ~~~~~
2026-10-23T23:13:44.1809669Z
2026-10-23T23:13:44.1809671Z
2026-10-23T23:13:44.1809721Z ~/apps/server$ tsc --noEmit
2026-10-23T23:13:44.1809996Z 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-23T23:13:44.1810051Z
2026-10-23T23:13:44.1810112Z 941         yield* Effect.sleep("1200 millis")
2026-10-23T23:13:44.1810167Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1810266Z 942           .pipe(
2026-10-23T23:13:44.1810313Z     ~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1810356Z ...
2026-10-23T23:13:44.1810402Z 954           )
2026-10-23T23:13:44.1810443Z     ~~~~~~~~~~~
2026-10-23T23:13:44.1810501Z 955           .pipe(Effect.forkDetach);
2026-10-23T23:13:44.1810552Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1810554Z
2026-10-23T23:13:44.1810891Z 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-23T23:13:44.1810894Z
2026-10-23T23:13:44.1810943Z 1175     logger: (event) => {
2026-10-23T23:13:44.1810988Z          ~~~~~~
2026-10-23T23:13:44.1810993Z
2026-10-23T23:13:44.1811465Z 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-23T23:13:44.1811469Z
2026-10-23T23:13:44.1811585Z 376 const DEFAULT_GROK_SETTINGS = Schema.decodeUnknownSync(GrokSettings)({});
2026-10-23T23:13:44.1811647Z                                          ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1811649Z
2026-10-23T23:13:44.1811966Z 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-23T23:13:44.1811974Z
2026-10-23T23:13:44.1812024Z 1346     getDescriptor: () =>
2026-10-23T23:13:44.1812071Z          ~~~~~~~~~~~~~
2026-10-23T23:13:44.1812073Z
2026-10-23T23:13:44.1812670Z 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-23T23:13:44.1812675Z
2026-10-23T23:13:44.1812728Z 55     getDescriptor: () =>
2026-10-23T23:13:44.1812771Z        ~~~~~~~~~~~~~
2026-10-23T23:13:44.1812773Z
2026-10-23T23:13:44.1813132Z 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-23T23:13:44.1813135Z
2026-10-23T23:13:44.1813192Z 540       authenticate: (request) =>
2026-10-23T23:13:44.1813237Z           ~~~~~~~~~~~~
2026-10-23T23:13:44.1813239Z
2026-10-23T23:13:44.1813513Z 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-23T23:13:44.1813518Z
2026-10-23T23:13:44.1813575Z 468         : Effect.succeed(undefined),
2026-10-23T23:13:44.1813625Z               ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1813627Z
2026-10-23T23:13:44.1813942Z 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-23T23:13:44.1813945Z
2026-10-23T23:13:44.1814001Z 328       HttpClientError: (cause) =>
2026-10-23T23:13:44.1814046Z           ~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1814052Z
2026-10-23T23:13:44.1814314Z src/cloud/CloudLink.lifecycle.test.ts:166:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1814317Z
2026-10-23T23:13:44.1814389Z 166             latest: Effect.succeed(Option.none()),
2026-10-23T23:13:44.1814440Z                         ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1814514Z
2026-10-23T23:13:44.1814758Z src/cloud/CloudLink.test.ts:99:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1814761Z
2026-10-23T23:13:44.1814875Z 99         latest: Effect.succeed(Option.none()),
2026-10-23T23:13:44.1814925Z                    ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1814928Z
2026-10-23T23:13:44.1815305Z 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-23T23:13:44.1815308Z
2026-10-23T23:13:44.1815448Z 791     requestRecovery: (config) => Queue.offer(recoveryRequests, config).pipe(Effect.asVoid),
2026-10-23T23:13:44.1815498Z         ~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1815501Z
2026-10-23T23:13:44.1815730Z src/cloud/http.test.ts:81:67 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1815734Z
2026-10-23T23:13:44.1815897Z 81     Layer.mock(ConnectReachability.ConnectReachability)({ latest: Effect.succeed(Option.none()) }),
2026-10-23T23:13:44.1815974Z                                                                      ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1815977Z
2026-10-23T23:13:44.1816350Z 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-23T23:13:44.1816352Z
2026-10-23T23:13:44.1816444Z 371     commitDesktopUpdate: (requestId, onHandoffAccepted) =>
2026-10-23T23:13:44.1816491Z         ~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1816493Z
2026-10-23T23:13:44.1816807Z 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-23T23:13:44.1816811Z
2026-10-23T23:13:44.1816865Z 808       updateTool: (tool) =>
2026-10-23T23:13:44.1816911Z           ~~~~~~~~~~
2026-10-23T23:13:44.1816914Z
2026-10-23T23:13:44.1817220Z 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-23T23:13:44.1817222Z
2026-10-23T23:13:44.1817271Z 823       easAccount: () =>
2026-10-23T23:13:44.1817315Z           ~~~~~~~~~~
2026-10-23T23:13:44.1817317Z
2026-10-23T23:13:44.1817663Z 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-23T23:13:44.1817666Z
2026-10-23T23:13:44.1817724Z 868     ensureAgentReady: (onPhase) =>
2026-10-23T23:13:44.1817768Z         ~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1817775Z
2026-10-23T23:13:44.1818018Z src/device/easProjectId.ts:201:7 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T23:13:44.1818023Z
2026-10-23T23:13:44.1818080Z 201       Effect.map(Option.some),
2026-10-23T23:13:44.1818125Z           ~~~~~~~~~~
2026-10-23T23:13:44.1818127Z
2026-10-23T23:13:44.1818447Z 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-23T23:13:44.1818450Z
2026-10-23T23:13:44.1818534Z 141   return DirectEndpoints.of({ resolve: () => resolve });
2026-10-23T23:13:44.1818587Z                                   ~~~~~~~
2026-10-23T23:13:44.1818590Z
2026-10-23T23:13:44.1818930Z 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-23T23:13:44.1818990Z
2026-10-23T23:13:44.1819102Z 83   return RemoteOpenTargets.of({ resolveTargets: () => resolveTargets });
2026-10-23T23:13:44.1819219Z                                    ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1819222Z
2026-10-23T23:13:44.1819549Z 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-23T23:13:44.1819555Z
2026-10-23T23:13:44.1819606Z 302     isRepository: (cwd) =>
2026-10-23T23:13:44.1819651Z         ~~~~~~~~~~~~
2026-10-23T23:13:44.1819654Z
2026-10-23T23:13:44.1819979Z 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-23T23:13:44.1819984Z
2026-10-23T23:13:44.1820039Z 315     hasCommit: (input) =>
2026-10-23T23:13:44.1820081Z         ~~~~~~~~~
2026-10-23T23:13:44.1820083Z
2026-10-23T23:13:44.1820413Z 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-23T23:13:44.1820415Z
2026-10-23T23:13:44.1820471Z 327     hasRefNamed: (input) =>
2026-10-23T23:13:44.1820516Z         ~~~~~~~~~~~
2026-10-23T23:13:44.1820519Z
2026-10-23T23:13:44.1820835Z 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-23T23:13:44.1820840Z
2026-10-23T23:13:44.1820892Z 346     status: (input) =>
2026-10-23T23:13:44.1820937Z         ~~~~~~
2026-10-23T23:13:44.1820939Z
2026-10-23T23:13:44.1821272Z 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-23T23:13:44.1821277Z
2026-10-23T23:13:44.1821331Z 352     localStatus: (input) =>
2026-10-23T23:13:44.1821374Z         ~~~~~~~~~~~
2026-10-23T23:13:44.1821376Z
2026-10-23T23:13:44.1821724Z 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-23T23:13:44.1821727Z
2026-10-23T23:13:44.1821787Z 360     remoteStatus: (input, options) =>
2026-10-23T23:13:44.1821835Z         ~~~~~~~~~~~~
2026-10-23T23:13:44.1821837Z
2026-10-23T23:13:44.1822178Z 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-23T23:13:44.1822182Z
2026-10-23T23:13:44.1822239Z 369     pullCurrentBranch: (cwd) =>
2026-10-23T23:13:44.1822286Z         ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1822289Z
2026-10-23T23:13:44.1822688Z 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-23T23:13:44.1822691Z
2026-10-23T23:13:44.1822756Z 373     runStackedAction: (input, options) =>
2026-10-23T23:13:44.1822803Z         ~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1822806Z
2026-10-23T23:13:44.1823158Z 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-23T23:13:44.1823160Z
2026-10-23T23:13:44.1823228Z 388     preparePullRequestThread: (input) =>
2026-10-23T23:13:44.1823337Z         ~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1823339Z
2026-10-23T23:13:44.1823705Z 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-23T23:13:44.1823708Z
2026-10-23T23:13:44.1823760Z 399     listRefs: (input) =>
2026-10-23T23:13:44.1823803Z         ~~~~~~~~
2026-10-23T23:13:44.1823806Z
2026-10-23T23:13:44.1824153Z 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-23T23:13:44.1824155Z
2026-10-23T23:13:44.1824215Z 405     createWorktree: (input, options) =>
2026-10-23T23:13:44.1824263Z         ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1824265Z
2026-10-23T23:13:44.1824604Z 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-23T23:13:44.1824611Z
2026-10-23T23:13:44.1824668Z 409     listLocalBranchNames: (cwd) =>
2026-10-23T23:13:44.1824719Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1824721Z
2026-10-23T23:13:44.1825047Z 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-23T23:13:44.1825049Z
2026-10-23T23:13:44.1825102Z 413     fetchRemote: (input) =>
2026-10-23T23:13:44.1825143Z         ~~~~~~~~~~~
2026-10-23T23:13:44.1825146Z
2026-10-23T23:13:44.1825473Z 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-23T23:13:44.1825477Z
2026-10-23T23:13:44.1825530Z 417     remoteExists: (input) =>
2026-10-23T23:13:44.1825577Z         ~~~~~~~~~~~~
2026-10-23T23:13:44.1825580Z
2026-10-23T23:13:44.1825922Z 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-23T23:13:44.1825924Z
2026-10-23T23:13:44.1825978Z 421     remoteBranchExists: (input) =>
2026-10-23T23:13:44.1826147Z         ~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1826150Z
2026-10-23T23:13:44.1826508Z 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-23T23:13:44.1826510Z
2026-10-23T23:13:44.1826581Z 425     resolveRemoteTrackingCommit: (input) =>
2026-10-23T23:13:44.1826631Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1826635Z
2026-10-23T23:13:44.1826994Z 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-23T23:13:44.1826996Z
2026-10-23T23:13:44.1827061Z 429     resolveWorktreeBaseRemote: (input) =>
2026-10-23T23:13:44.1827112Z         ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1827115Z
2026-10-23T23:13:44.1827465Z 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-23T23:13:44.1827467Z
2026-10-23T23:13:44.1827530Z 433     fetchWorktreeBaseCommit: (input) =>
2026-10-23T23:13:44.1827575Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1827578Z
2026-10-23T23:13:44.1827909Z 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-23T23:13:44.1827984Z
2026-10-23T23:13:44.1828089Z 437     removeWorktree: (input) =>
2026-10-23T23:13:44.1828135Z         ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1828137Z
2026-10-23T23:13:44.1828468Z 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-23T23:13:44.1828473Z
2026-10-23T23:13:44.1828524Z 441     pruneWorktrees: (input) =>
2026-10-23T23:13:44.1828569Z         ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1828572Z
2026-10-23T23:13:44.1828909Z 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-23T23:13:44.1828913Z
2026-10-23T23:13:44.1828972Z 445     deleteLocalBranch: (input) =>
2026-10-23T23:13:44.1829016Z         ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1829018Z
2026-10-23T23:13:44.1829341Z 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-23T23:13:44.1829343Z
2026-10-23T23:13:44.1829397Z 449     createRef: (input) =>
2026-10-23T23:13:44.1829441Z         ~~~~~~~~~
2026-10-23T23:13:44.1829444Z
2026-10-23T23:13:44.1829764Z 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-23T23:13:44.1829767Z
2026-10-23T23:13:44.1829815Z 457     switchRef: (input) =>
2026-10-23T23:13:44.1829858Z         ~~~~~~~~~
2026-10-23T23:13:44.1829861Z
2026-10-23T23:13:44.1830191Z 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-23T23:13:44.1830194Z
2026-10-23T23:13:44.1830248Z 463     renameBranch: (input) =>
2026-10-23T23:13:44.1830291Z         ~~~~~~~~~~~~
2026-10-23T23:13:44.1830297Z
2026-10-23T23:13:44.1830579Z 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-23T23:13:44.1830581Z
2026-10-23T23:13:44.1830641Z 281   const receive = (raw: string) => {
2026-10-23T23:13:44.1830686Z             ~~~~~~~
2026-10-23T23:13:44.1830688Z
2026-10-23T23:13:44.1831100Z 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-23T23:13:44.1831105Z
2026-10-23T23:13:44.1831147Z 284       try {
2026-10-23T23:13:44.1831192Z           ~~~~~
2026-10-23T23:13:44.1831250Z 285         parsed = JSON.parse(line);
2026-10-23T23:13:44.1831301Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1831342Z ...
2026-10-23T23:13:44.1831465Z 287         return yield* respondWithError(null, "Parse error", -32700);
2026-10-23T23:13:44.1831541Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1831586Z 288       }
2026-10-23T23:13:44.1831630Z     ~~~~~~~
2026-10-23T23:13:44.1831633Z
2026-10-23T23:13:44.1831935Z 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-23T23:13:44.1831937Z
2026-10-23T23:13:44.1832003Z 324       Effect.catchCause(() => Effect.void),
2026-10-23T23:13:44.1832111Z           ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1832113Z
2026-10-23T23:13:44.1832370Z src/mcp/McpDeviceToolkit.test.ts:105:18 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1832423Z
2026-10-23T23:13:44.1832530Z 105   getById: () => Effect.succeed(Option.none()),
2026-10-23T23:13:44.1832583Z                      ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1832585Z
2026-10-23T23:13:44.1832901Z 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-23T23:13:44.1832903Z
2026-10-23T23:13:44.1833006Z 421 const previewSnapshotFailure = <E>(cause: Cause.Cause<E>) => {
2026-10-23T23:13:44.1833055Z           ~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1833057Z
2026-10-23T23:13:44.1833374Z 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-23T23:13:44.1833379Z
2026-10-23T23:13:44.1833435Z 933       addTool: (options) =>
2026-10-23T23:13:44.1833481Z           ~~~~~~~
2026-10-23T23:13:44.1833483Z
2026-10-23T23:13:44.1833792Z 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-23T23:13:44.1833795Z
2026-10-23T23:13:44.1833856Z 22     resolve: () => Effect.succeed(undefined),
2026-10-23T23:13:44.1833912Z                       ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1833915Z
2026-10-23T23:13:44.1834238Z 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-23T23:13:44.1834241Z
2026-10-23T23:13:44.1834305Z 112       Effect.flatMap(() => writingCaller),
2026-10-23T23:13:44.1834354Z           ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1834357Z
2026-10-23T23:13:44.1834915Z src/mcp/OrchestratorMcpService.ts:2460:39 - suggestion TS377088: This generator applies the same inline `Effect.mapError(...)` to every yielded effect. Keep that `Effect.mapError(...)` inline and hoist it once to the generator result: `Effect.gen(...).pipe(Effect.mapError(...))`, or `Effect.fn(function*(){ ... }, Effect.mapError(...))`. effect(redundantMapError)
2026-10-23T23:13:44.1834921Z
2026-10-23T23:13:44.1835000Z 2460       const cancelOrphan = Effect.gen(function* () {
2026-10-23T23:13:44.1835058Z                                            ~~~~~~~~~
2026-10-23T23:13:44.1835061Z
2026-10-23T23:13:44.1835319Z   src/mcp/OrchestratorMcpService.ts:2475:17 - This repeated `Effect.mapError(...)` site participates in the hoistable generator-wide mapping. effect(redundantMapError)
2026-10-23T23:13:44.1835408Z     2475           .pipe(Effect.mapError(threadManagementFailure));
2026-10-23T23:13:44.1835459Z                          ~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1835462Z
2026-10-23T23:13:44.1835715Z   src/mcp/OrchestratorMcpService.ts:2478:17 - This repeated `Effect.mapError(...)` site participates in the hoistable generator-wide mapping. effect(redundantMapError)
2026-10-23T23:13:44.1835800Z     2478           .pipe(Effect.mapError(threadManagementFailure));
2026-10-23T23:13:44.1835850Z                          ~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1835852Z
2026-10-23T23:13:44.1836151Z 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-23T23:13:44.1836156Z
2026-10-23T23:13:44.1836203Z 651         onNone: () =>
2026-10-23T23:13:44.1836249Z             ~~~~~~
2026-10-23T23:13:44.1836251Z
2026-10-23T23:13:44.1836474Z src/mcp/WorktreeMcpService.test.ts:355:3 - suggestion TS377017: This Effect.gen contains a single return statement. effect(unnecessaryEffectGen)
2026-10-23T23:13:44.1836537Z
2026-10-23T23:13:44.1836590Z 355   Effect.gen(function* () {
2026-10-23T23:13:44.1836634Z       ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1836777Z 356     return yield* WorktreeMcpService.WorktreeMcpService;
2026-10-23T23:13:44.1836845Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1836910Z 357   }).pipe(Effect.provide(harness.layer));
2026-10-23T23:13:44.1836953Z     ~~~~
2026-10-23T23:13:44.1836956Z
2026-10-23T23:13:44.1837254Z 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-23T23:13:44.1837257Z
2026-10-23T23:13:44.1837310Z 222     const thread = yield* engine
2026-10-23T23:13:44.1837361Z                               ~~~~~~
2026-10-23T23:13:44.1837412Z 223       .getThreadShell(threadId)
2026-10-23T23:13:44.1837461Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1837533Z 224       .pipe(Effect.map(Option.fromNullishOr))
2026-10-23T23:13:44.1837590Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1837681Z 225       .pipe(Effect.mapError((cause) => new Failure({ cause })));
2026-10-23T23:13:44.1837753Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1837756Z
2026-10-23T23:13:44.1838074Z 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-23T23:13:44.1838077Z
2026-10-23T23:13:44.1838209Z 96   McpAppModelContext.of({ set: () => Effect.void, forThread: () => Effect.succeed([]) }),
2026-10-23T23:13:44.1838261Z                              ~~~
2026-10-23T23:13:44.1838264Z
2026-10-23T23:13:44.1838587Z 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-23T23:13:44.1838592Z
2026-10-23T23:13:44.1838721Z 96   McpAppModelContext.of({ set: () => Effect.void, forThread: () => Effect.succeed([]) }),
2026-10-23T23:13:44.1838787Z                                                      ~~~~~~~~~
2026-10-23T23:13:44.1838790Z
2026-10-23T23:13:44.1839144Z 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-23T23:13:44.1839146Z
2026-10-23T23:13:44.1839199Z 16     record: (records) =>
2026-10-23T23:13:44.1839241Z        ~~~~~~
2026-10-23T23:13:44.1839243Z
2026-10-23T23:13:44.1839546Z 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-23T23:13:44.1839551Z
2026-10-23T23:13:44.1839660Z 41   defaultValue: () => ({ latestNoticeableStall: Effect.succeed(undefined) }),
2026-10-23T23:13:44.1839732Z                                                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1839735Z
2026-10-23T23:13:44.1840234Z 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-23T23:13:44.1840237Z
2026-10-23T23:13:44.1840347Z 30 const REPLAY_SETTINGS = Schema.decodeUnknownSync(AcpRegistrySettings)({
2026-10-23T23:13:44.1840406Z                                   ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1840409Z
2026-10-23T23:13:44.1840756Z 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-23T23:13:44.1840813Z
2026-10-23T23:13:44.1840879Z 48   defaultModel: Effect.succeed(undefined),
2026-10-23T23:13:44.1840978Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1840981Z
2026-10-23T23:13:44.1841328Z 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-23T23:13:44.1841330Z
2026-10-23T23:13:44.1841401Z 169         defaultModel: Effect.succeed(undefined),
2026-10-23T23:13:44.1841459Z                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1841462Z
2026-10-23T23:13:44.1842003Z 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-23T23:13:44.1842008Z
2026-10-23T23:13:44.1842081Z 306         defaultModel: Effect.succeed(undefined),
2026-10-23T23:13:44.1842132Z                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1842135Z
2026-10-23T23:13:44.1842511Z 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-23T23:13:44.1842514Z
2026-10-23T23:13:44.1842583Z 542         defaultModel: Effect.succeed(undefined),
2026-10-23T23:13:44.1842639Z                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1842642Z
2026-10-23T23:13:44.1843020Z 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-23T23:13:44.1843023Z
2026-10-23T23:13:44.1843088Z 974       const controller = new AbortController();
2026-10-23T23:13:44.1843150Z                              ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1843153Z
2026-10-23T23:13:44.1843479Z 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-23T23:13:44.1843483Z
2026-10-23T23:13:44.1843558Z 1326         const requestEvent = yield* runtime.events
2026-10-23T23:13:44.1843615Z                                          ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1843667Z 1327           .pipe(
2026-10-23T23:13:44.1843712Z      ~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1843757Z  ...
2026-10-23T23:13:44.1843800Z 1330           )
2026-10-23T23:13:44.1843846Z      ~~~~~~~~~~~
2026-10-23T23:13:44.1843907Z 1331           .pipe(Effect.forkScoped);
2026-10-23T23:13:44.1843957Z      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1843959Z
2026-10-23T23:13:44.1844336Z 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-23T23:13:44.1844342Z
2026-10-23T23:13:44.1844415Z 1332         const controller = new AbortController();
2026-10-23T23:13:44.1844472Z                                 ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1844475Z
2026-10-23T23:13:44.1844851Z 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-23T23:13:44.1844853Z
2026-10-23T23:13:44.1844939Z 1355         const cancelledController = new AbortController();
2026-10-23T23:13:44.1845002Z                                          ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1845004Z
2026-10-23T23:13:44.1845409Z 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-23T23:13:44.1845588Z
2026-10-23T23:13:44.1845703Z 4018     getCapabilities: () => Effect.succeed(ClaudeProviderCapabilitiesV2),
2026-10-23T23:13:44.1845750Z          ~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1845753Z
2026-10-23T23:13:44.1846175Z 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-23T23:13:44.1846178Z
2026-10-23T23:13:44.1846306Z 4019     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-23T23:13:44.1846356Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1846358Z
2026-10-23T23:13:44.1846754Z 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-23T23:13:44.1846759Z
2026-10-23T23:13:44.1846825Z 201         signal: new AbortController().signal,
2026-10-23T23:13:44.1846877Z                     ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1846880Z
2026-10-23T23:13:44.1847315Z 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-23T23:13:44.1847320Z
2026-10-23T23:13:44.1847374Z 74   const pause = Effect.raceFirst(
2026-10-23T23:13:44.1847423Z                    ~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1847426Z
2026-10-23T23:13:44.1847757Z 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-23T23:13:44.1847761Z
2026-10-23T23:13:44.1847880Z 1741     threadId === null ? Effect.succeed(undefined) : mcpSessions.read(threadId);
2026-10-23T23:13:44.1847937Z                              ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1847940Z
2026-10-23T23:13:44.1848344Z 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-23T23:13:44.1848347Z
2026-10-23T23:13:44.1848456Z 1748     getCapabilities: () => Effect.succeed(CodexProviderCapabilitiesV2),
2026-10-23T23:13:44.1848505Z          ~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1848508Z
2026-10-23T23:13:44.1848925Z 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-23T23:13:44.1848930Z
2026-10-23T23:13:44.1849056Z 1749     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-23T23:13:44.1849107Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1849109Z
2026-10-23T23:13:44.1849462Z 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-23T23:13:44.1849465Z
2026-10-23T23:13:44.1849544Z 3045                   Effect.catch(() => Effect.succeed(null)),
2026-10-23T23:13:44.1849594Z                        ~~~~~~~~~~~~
2026-10-23T23:13:44.1849596Z
2026-10-23T23:13:44.1850010Z 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-23T23:13:44.1850073Z
2026-10-23T23:13:44.1850135Z 3046                   Effect.flatMap((response) =>
2026-10-23T23:13:44.1850224Z                        ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1850227Z
2026-10-23T23:13:44.1850541Z 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-23T23:13:44.1850544Z
2026-10-23T23:13:44.1850611Z 3068                   Effect.catch(() => Effect.void),
2026-10-23T23:13:44.1850657Z                        ~~~~~~~~~~~~
2026-10-23T23:13:44.1850660Z
2026-10-23T23:13:44.1851063Z 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-23T23:13:44.1851067Z
2026-10-23T23:13:44.1851157Z 7268                   return yield* Effect.fail(failedTermination.error);
2026-10-23T23:13:44.1851205Z                               ~~~~~
2026-10-23T23:13:44.1851209Z
2026-10-23T23:13:44.1851693Z 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-23T23:13:44.1851696Z
2026-10-23T23:13:44.1851806Z 33 const DEFAULT_GROK_SETTINGS = Schema.decodeUnknownSync(GrokSettings)({});
2026-10-23T23:13:44.1851865Z                                         ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1851868Z
2026-10-23T23:13:44.1852344Z 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-23T23:13:44.1852348Z
2026-10-23T23:13:44.1852539Z 414 const DEFAULT_MUSE_SETTINGS = Schema.decodeUnknownSync(MuseSettings)({ enabled: true });
2026-10-23T23:13:44.1852602Z                                          ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1852605Z
2026-10-23T23:13:44.1852989Z 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-23T23:13:44.1852992Z
2026-10-23T23:13:44.1853043Z 242       execute: (input) =>
2026-10-23T23:13:44.1853089Z           ~~~~~~~
2026-10-23T23:13:44.1853091Z
2026-10-23T23:13:44.1853385Z src/orchestration-v2/CheckpointRestoreSafety.test.ts:104:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1853389Z
2026-10-23T23:13:44.1853508Z 104             get: () => Effect.succeed(Option.some({ workspaceRoot: parent } as never)),
2026-10-23T23:13:44.1853559Z                            ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1853565Z
2026-10-23T23:13:44.1853953Z 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-23T23:13:44.1853956Z
2026-10-23T23:13:44.1854012Z 41             Effect.catch((error) =>
2026-10-23T23:13:44.1854061Z                ~~~~~~~~~~~~
2026-10-23T23:13:44.1854063Z
2026-10-23T23:13:44.1854451Z 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-23T23:13:44.1854510Z
2026-10-23T23:13:44.1854568Z 83                 Effect.catch((error) =>
2026-10-23T23:13:44.1854616Z                    ~~~~~~~~~~~~
2026-10-23T23:13:44.1854618Z
2026-10-23T23:13:44.1854963Z src/orchestration-v2/CheckpointRollbackService.test.ts:233:22 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1854966Z
2026-10-23T23:13:44.1855073Z 233               return Effect.succeed(Option.some({ workspaceRoot } as never));
2026-10-23T23:13:44.1855126Z                          ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1855128Z
2026-10-23T23:13:44.1855525Z 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-23T23:13:44.1855531Z
2026-10-23T23:13:44.1855598Z 142         const batchAbort = new AbortController();
2026-10-23T23:13:44.1855658Z                                ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1855660Z
2026-10-23T23:13:44.1856075Z 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-23T23:13:44.1856077Z
2026-10-23T23:13:44.1856133Z 168     Effect.flatMap((frame) =>
2026-10-23T23:13:44.1856177Z         ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1856180Z
2026-10-23T23:13:44.1856453Z src/orchestration-v2/CommandReceiptStore.ts:164:29 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1856456Z
2026-10-23T23:13:44.1856535Z 164               onNone: () => Effect.succeed(Option.none()),
2026-10-23T23:13:44.1856589Z                                 ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1856594Z
2026-10-23T23:13:44.1856864Z src/orchestration-v2/CommandReceiptStore.ts:167:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1856866Z
2026-10-23T23:13:44.1856932Z 167                   ? Effect.succeed(Option.none())
2026-10-23T23:13:44.1856983Z                         ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1856985Z
2026-10-23T23:13:44.1857260Z src/orchestration-v2/CommandReceiptStore.ts:168:58 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T23:13:44.1857262Z
2026-10-23T23:13:44.1857373Z 168                   : fromApplicationReceipt(receipt).pipe(Effect.map(Option.some)),
2026-10-23T23:13:44.1857441Z                                                              ~~~~~~~~~~
2026-10-23T23:13:44.1857444Z
2026-10-23T23:13:44.1857712Z src/orchestration-v2/CommandReceiptStore.ts:183:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1857716Z
2026-10-23T23:13:44.1857781Z 183               ? Effect.succeed(Option.none())
2026-10-23T23:13:44.1857833Z                     ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1857836Z
2026-10-23T23:13:44.1858108Z src/orchestration-v2/CommandReceiptStore.ts:192:25 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T23:13:44.1858111Z
2026-10-23T23:13:44.1858179Z 192                 }).pipe(Effect.map(Option.some)),
2026-10-23T23:13:44.1858227Z                             ~~~~~~~~~~
2026-10-23T23:13:44.1858229Z
2026-10-23T23:13:44.1858485Z src/orchestration-v2/EffectOutbox.ts:429:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1858487Z
2026-10-23T23:13:44.1858550Z 429               ? Effect.succeed(Option.none())
2026-10-23T23:13:44.1858655Z                     ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1858657Z
2026-10-23T23:13:44.1858966Z src/orchestration-v2/EffectOutbox.ts:430:39 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T23:13:44.1858972Z
2026-10-23T23:13:44.1859053Z 430               : rowToEffect(row).pipe(Effect.map(Option.some));
2026-10-23T23:13:44.1859111Z                                           ~~~~~~~~~~
2026-10-23T23:13:44.1859114Z
2026-10-23T23:13:44.1859378Z src/orchestration-v2/EffectWorker.test.ts:107:20 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1859381Z
2026-10-23T23:13:44.1859451Z 107         get: () => Effect.succeed(Option.none()),
2026-10-23T23:13:44.1859500Z                        ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1859503Z
2026-10-23T23:13:44.1859770Z src/orchestration-v2/EffectWorker.test.ts:302:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1859774Z
2026-10-23T23:13:44.1859866Z 302       claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-23T23:13:44.1859920Z                            ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1859922Z
2026-10-23T23:13:44.1860187Z src/orchestration-v2/EffectWorker.test.ts:369:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1860189Z
2026-10-23T23:13:44.1860276Z 369       claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-23T23:13:44.1860331Z                            ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1860333Z
2026-10-23T23:13:44.1860597Z src/orchestration-v2/EffectWorker.test.ts:436:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1860599Z
2026-10-23T23:13:44.1860689Z 436       claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-23T23:13:44.1860739Z                            ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1860742Z
2026-10-23T23:13:44.1861002Z src/orchestration-v2/EffectWorker.test.ts:437:18 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1861005Z
2026-10-23T23:13:44.1861088Z 437       get: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-23T23:13:44.1861138Z                      ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1861140Z
2026-10-23T23:13:44.1861518Z 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-23T23:13:44.1861521Z
2026-10-23T23:13:44.1861578Z 98       execute: (effect, options) => {
2026-10-23T23:13:44.1861623Z          ~~~~~~~
2026-10-23T23:13:44.1861627Z
2026-10-23T23:13:44.1861998Z 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-23T23:13:44.1862000Z
2026-10-23T23:13:44.1862058Z 180                 Effect.catch((cause) =>
2026-10-23T23:13:44.1862108Z                     ~~~~~~~~~~~~
2026-10-23T23:13:44.1862110Z
2026-10-23T23:13:44.1862424Z 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-23T23:13:44.1862430Z
2026-10-23T23:13:44.1862520Z 110         append: (input) =>
2026-10-23T23:13:44.1862566Z             ~~~~~~
2026-10-23T23:13:44.1862569Z
2026-10-23T23:13:44.1862907Z 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-23T23:13:44.1862982Z
2026-10-23T23:13:44.1863044Z 120         appendProjectEvent: (event) =>
2026-10-23T23:13:44.1863135Z             ~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1863137Z
2026-10-23T23:13:44.1863466Z 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-23T23:13:44.1863468Z
2026-10-23T23:13:44.1863525Z 131         latestSequence: (input) =>
2026-10-23T23:13:44.1863573Z             ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1863576Z
2026-10-23T23:13:44.1863863Z src/orchestration-v2/FoundationPersistence.test.ts:1791:26 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1863866Z
2026-10-23T23:13:44.1863959Z 1791         claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-23T23:13:44.1864014Z                               ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1864017Z
2026-10-23T23:13:44.1864304Z src/orchestration-v2/FoundationPersistence.test.ts:1793:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1864306Z
2026-10-23T23:13:44.1864356Z 1793           Effect.succeed(
2026-10-23T23:13:44.1864401Z                ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1864407Z
2026-10-23T23:13:44.1864685Z src/orchestration-v2/FoundationPersistence.test.ts:2663:30 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1864688Z
2026-10-23T23:13:44.1864772Z 2663             nextClaimableAt: Effect.succeed(Option.none()),
2026-10-23T23:13:44.1864827Z                                   ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1864829Z
2026-10-23T23:13:44.1865109Z src/orchestration-v2/FoundationPersistence.test.ts:2880:30 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1865114Z
2026-10-23T23:13:44.1865194Z 2880             nextClaimableAt: Effect.succeed(Option.none()),
2026-10-23T23:13:44.1865248Z                                   ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1865250Z
2026-10-23T23:13:44.1865645Z src/orchestration-v2/Orchestrator.ts:11756:7 - suggestion TS377120: `Effect.filterOrFail` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-23T23:13:44.1865647Z
2026-10-23T23:13:44.1865706Z 11756       Effect.flatMap((planned) =>
2026-10-23T23:13:44.1865753Z             ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1865756Z
2026-10-23T23:13:44.1866119Z src/orchestration-v2/Orchestrator.ts:12179:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.restartContinuationPending")((run) => { ... })`. effect(effectFnOpportunity)
2026-10-23T23:13:44.1866127Z
2026-10-23T23:13:44.1866191Z 12179     restartContinuationPending: (run) =>
2026-10-23T23:13:44.1866243Z           ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1866246Z
2026-10-23T23:13:44.1866603Z src/orchestration-v2/Orchestrator.ts:12181:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.awaitRestartContinuation")((run) => { ... })`. effect(effectFnOpportunity)
2026-10-23T23:13:44.1866606Z
2026-10-23T23:13:44.1866668Z 12181     awaitRestartContinuation: (run) =>
2026-10-23T23:13:44.1866715Z           ~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1866718Z
2026-10-23T23:13:44.1867071Z src/orchestration-v2/Orchestrator.ts:12184:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.autoArmLimitRecovery")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T23:13:44.1867133Z
2026-10-23T23:13:44.1867196Z 12184     autoArmLimitRecovery: (input) =>
2026-10-23T23:13:44.1867244Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1867247Z
2026-10-23T23:13:44.1867626Z src/orchestration-v2/Orchestrator.ts:12212:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.searchThread")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T23:13:44.1867629Z
2026-10-23T23:13:44.1867681Z 12212     searchThread: (input) =>
2026-10-23T23:13:44.1867728Z           ~~~~~~~~~~~~
2026-10-23T23:13:44.1867730Z
2026-10-23T23:13:44.1868162Z src/orchestration-v2/Orchestrator.ts:12220:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadHistoryPage")((threadId, cursor, throughEntryId, conversationOnly) => { ... })`. effect(effectFnOpportunity)
2026-10-23T23:13:44.1868165Z
2026-10-23T23:13:44.1868294Z 12220     getThreadHistoryPage: (threadId, cursor, throughEntryId, conversationOnly) =>
2026-10-23T23:13:44.1868342Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1868344Z
2026-10-23T23:13:44.1868704Z src/orchestration-v2/Orchestrator.ts:12224:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getTimelinePage")((threadId, options) => { ... })`. effect(effectFnOpportunity)
2026-10-23T23:13:44.1868707Z
2026-10-23T23:13:44.1868775Z 12224     getTimelinePage: (threadId, options) =>
2026-10-23T23:13:44.1868823Z           ~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1868825Z
2026-10-23T23:13:44.1869167Z src/orchestration-v2/Orchestrator.ts:12228:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getMessageCount")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-23T23:13:44.1869169Z
2026-10-23T23:13:44.1869227Z 12228     getMessageCount: (threadId) =>
2026-10-23T23:13:44.1869271Z           ~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1869274Z
2026-10-23T23:13:44.1869607Z src/orchestration-v2/Orchestrator.ts:12232:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getTurnItem")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T23:13:44.1869610Z
2026-10-23T23:13:44.1869662Z 12232     getTurnItem: (input) =>
2026-10-23T23:13:44.1869707Z           ~~~~~~~~~~~
2026-10-23T23:13:44.1869709Z
2026-10-23T23:13:44.1870084Z src/orchestration-v2/Orchestrator.ts:12240:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadRecords")((threadId, fields, filter) => { ... })`. effect(effectFnOpportunity)
2026-10-23T23:13:44.1870088Z
2026-10-23T23:13:44.1870164Z 12240     getThreadRecords: (threadId, fields, filter) =>
2026-10-23T23:13:44.1870211Z           ~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1870214Z
2026-10-23T23:13:44.1870567Z src/orchestration-v2/Orchestrator.ts:12244:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadProjection")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-23T23:13:44.1870571Z
2026-10-23T23:13:44.1870638Z 12244     getThreadProjection: (threadId) =>
2026-10-23T23:13:44.1870684Z           ~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1870689Z
2026-10-23T23:13:44.1871039Z src/orchestration-v2/Orchestrator.ts:12248:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getCheckpointContext")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-23T23:13:44.1871042Z
2026-10-23T23:13:44.1871106Z 12248     getCheckpointContext: (threadId) =>
2026-10-23T23:13:44.1871156Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1871159Z
2026-10-23T23:13:44.1871507Z src/orchestration-v2/Orchestrator.ts:12252:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadSnapshot")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-23T23:13:44.1871561Z
2026-10-23T23:13:44.1871624Z 12252     getThreadSnapshot: (threadId) =>
2026-10-23T23:13:44.1871670Z           ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1871672Z
2026-10-23T23:13:44.1872095Z src/orchestration-v2/Orchestrator.ts:12256:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadSnapshotWindow")((threadId, options) => { ... })`. effect(effectFnOpportunity)
2026-10-23T23:13:44.1872098Z
2026-10-23T23:13:44.1872179Z 12256     getThreadSnapshotWindow: (threadId, options) =>
2026-10-23T23:13:44.1872231Z           ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1872233Z
2026-10-23T23:13:44.1872617Z src/orchestration-v2/Orchestrator.ts:12260:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getShellSnapshot")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-23T23:13:44.1872623Z
2026-10-23T23:13:44.1872680Z 12260     getShellSnapshot: (options) =>
2026-10-23T23:13:44.1872729Z           ~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1872731Z
2026-10-23T23:13:44.1873092Z src/orchestration-v2/Orchestrator.ts:12262:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.listActiveSubagentThreadIds")(() => { ... })`. effect(effectFnOpportunity)
2026-10-23T23:13:44.1873094Z
2026-10-23T23:13:44.1873160Z 12262     listActiveSubagentThreadIds: () =>
2026-10-23T23:13:44.1873207Z           ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1873209Z
2026-10-23T23:13:44.1873556Z src/orchestration-v2/Orchestrator.ts:12264:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.readShellSnapshot")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-23T23:13:44.1873558Z
2026-10-23T23:13:44.1873617Z 12264     readShellSnapshot: (options) =>
2026-10-23T23:13:44.1873664Z           ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1873668Z
2026-10-23T23:13:44.1874010Z src/orchestration-v2/Orchestrator.ts:12271:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadShell")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-23T23:13:44.1874014Z
2026-10-23T23:13:44.1874067Z 12271     getThreadShell: (threadId) =>
2026-10-23T23:13:44.1874115Z           ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1874117Z
2026-10-23T23:13:44.1874475Z src/orchestration-v2/Orchestrator.ts:12275:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadEventSequence")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-23T23:13:44.1874478Z
2026-10-23T23:13:44.1874545Z 12275     getThreadEventSequence: (threadId) =>
2026-10-23T23:13:44.1874593Z           ~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1874596Z
2026-10-23T23:13:44.1874951Z 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-23T23:13:44.1874955Z
2026-10-23T23:13:44.1875030Z 160         getInstance: () => Effect.succeed(undefined),
2026-10-23T23:13:44.1875089Z                                ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1875091Z
2026-10-23T23:13:44.1875424Z 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-23T23:13:44.1875427Z
2026-10-23T23:13:44.1875548Z 269     getShell: (projectId) => get(projectId).pipe(Effect.map(Option.map(toShell))),
2026-10-23T23:13:44.1875589Z         ~~~~~~~~
2026-10-23T23:13:44.1875591Z
2026-10-23T23:13:44.1875924Z 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-23T23:13:44.1875977Z
2026-10-23T23:13:44.1876031Z 270     listShells: (options) =>
2026-10-23T23:13:44.1876076Z         ~~~~~~~~~~
2026-10-23T23:13:44.1876130Z
2026-10-23T23:13:44.1876418Z src/orchestration-v2/ProjectionControlReads.test.ts:279:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1876421Z
2026-10-23T23:13:44.1876468Z 279           Effect.succeed(
2026-10-23T23:13:44.1876516Z               ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1876519Z
2026-10-23T23:13:44.1876885Z 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-23T23:13:44.1876887Z
2026-10-23T23:13:44.1876937Z 78       get: (instanceId) =>
2026-10-23T23:13:44.1876980Z          ~~~
2026-10-23T23:13:44.1876982Z
2026-10-23T23:13:44.1877333Z 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-23T23:13:44.1877336Z
2026-10-23T23:13:44.1877383Z 135       list: () =>
2026-10-23T23:13:44.1877428Z           ~~~~
2026-10-23T23:13:44.1877431Z
2026-10-23T23:13:44.1877787Z 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-23T23:13:44.1877790Z
2026-10-23T23:13:44.1877879Z 93       record: (properties: Readonly<Record<string, unknown>>) =>
2026-10-23T23:13:44.1877924Z          ~~~~~~
2026-10-23T23:13:44.1877926Z
2026-10-23T23:13:44.1878335Z 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-23T23:13:44.1878339Z
2026-10-23T23:13:44.1878405Z 818               Effect.flatMap((storedEvents) =>
2026-10-23T23:13:44.1878454Z                   ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1878457Z
2026-10-23T23:13:44.1878742Z src/orchestration-v2/ProviderSessionManager.test.ts:1155:19 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1878744Z
2026-10-23T23:13:44.1878876Z 1155                 : Effect.succeed(Option.some(makeBrowserAccessProject(requestedProjectId))),
2026-10-23T23:13:44.1878926Z                        ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1878929Z
2026-10-23T23:13:44.1879220Z src/orchestration-v2/ProviderTurnStartService.test.ts:150:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1879224Z
2026-10-23T23:13:44.1879277Z 150             Effect.succeed(
2026-10-23T23:13:44.1879321Z                 ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1879323Z
2026-10-23T23:13:44.1879607Z src/orchestration-v2/ProviderTurnStartService.test.ts:703:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1879610Z
2026-10-23T23:13:44.1879756Z 703             Effect.succeed(Option.some({ workspaceRoot: "/tmp/native-account-project" } as never)),
2026-10-23T23:13:44.1879803Z                 ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1879805Z
2026-10-23T23:13:44.1880094Z src/orchestration-v2/ProviderTurnStartService.testkit.ts:14:20 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1880096Z
2026-10-23T23:13:44.1880165Z 14     getById: () => Effect.succeed(Option.none()),
2026-10-23T23:13:44.1880266Z                       ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1880268Z
2026-10-23T23:13:44.1880778Z 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-23T23:13:44.1880781Z
2026-10-23T23:13:44.1880846Z 499               Effect.catchCause((cause) =>
2026-10-23T23:13:44.1880895Z                   ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1880899Z
2026-10-23T23:13:44.1881355Z 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-23T23:13:44.1881358Z
2026-10-23T23:13:44.1881423Z 1289       return runExecution.startRootRun({
2026-10-23T23:13:44.1881469Z            ~~~~~~
2026-10-23T23:13:44.1881472Z
2026-10-23T23:13:44.1881962Z src/orchestration-v2/PullRequestWatchReactor.ts:478:53 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T23:13:44.1881966Z
2026-10-23T23:13:44.1882075Z 478             ? pullRequests.activity(reference).pipe(Effect.map(Option.some))
2026-10-23T23:13:44.1882141Z                                                         ~~~~~~~~~~
2026-10-23T23:13:44.1882143Z
2026-10-23T23:13:44.1882563Z 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-23T23:13:44.1882566Z
2026-10-23T23:13:44.1882643Z 49       cleanupScheduledTasks: (threadId: ThreadId) =>
2026-10-23T23:13:44.1882692Z          ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1882696Z
2026-10-23T23:13:44.1883077Z 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-23T23:13:44.1883083Z
2026-10-23T23:13:44.1883146Z 58       cleanupTerminals: (threadId: string) =>
2026-10-23T23:13:44.1883193Z          ~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1883195Z
2026-10-23T23:13:44.1883572Z 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-23T23:13:44.1883575Z
2026-10-23T23:13:44.1883640Z 66       cleanupPreviews: (threadId: string) =>
2026-10-23T23:13:44.1883685Z          ~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1883687Z
2026-10-23T23:13:44.1884082Z 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-23T23:13:44.1884086Z
2026-10-23T23:13:44.1884184Z 74       cleanupAttachments: (attachmentIds: ReadonlyArray<string>) =>
2026-10-23T23:13:44.1884231Z          ~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1884234Z
2026-10-23T23:13:44.1884520Z 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-23T23:13:44.1884523Z
2026-10-23T23:13:44.1884582Z 1812         ).pipe(Effect.map(Option.some)),
2026-10-23T23:13:44.1884629Z                     ~~~~~~~~~~
2026-10-23T23:13:44.1884632Z
2026-10-23T23:13:44.1885038Z 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-23T23:13:44.1885142Z
2026-10-23T23:13:44.1885207Z 919               Effect.catchCause((cause) =>
2026-10-23T23:13:44.1885260Z                   ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1885320Z
2026-10-23T23:13:44.1885582Z src/orchestration-v2/RuntimePolicy.test.ts:90:9 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1885587Z
2026-10-23T23:13:44.1885634Z 90         Effect.succeed(
2026-10-23T23:13:44.1885681Z            ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1885683Z
2026-10-23T23:13:44.1886007Z 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-23T23:13:44.1886010Z
2026-10-23T23:13:44.1886060Z 54   resolve: (input) =>
2026-10-23T23:13:44.1886103Z      ~~~~~~~
2026-10-23T23:13:44.1886107Z
2026-10-23T23:13:44.1886385Z src/orchestration-v2/RuntimeRequestService.test.ts:29:7 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1886389Z
2026-10-23T23:13:44.1886438Z 29       Effect.succeed(
2026-10-23T23:13:44.1886483Z          ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1886486Z
2026-10-23T23:13:44.1886758Z src/orchestration-v2/ThreadLaunchService.test.ts:189:33 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1886764Z
2026-10-23T23:13:44.1886861Z 189       getByWorkspaceRoot: () => Effect.succeed(Option.some(project)),
2026-10-23T23:13:44.1886918Z                                     ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1886921Z
2026-10-23T23:13:44.1887195Z src/orchestration-v2/ThreadLaunchService.test.ts:220:32 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1887199Z
2026-10-23T23:13:44.1887287Z 220         folderForThread: () => Effect.succeed(Option.none()),
2026-10-23T23:13:44.1887340Z                                    ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1887344Z
2026-10-23T23:13:44.1887702Z 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-23T23:13:44.1887705Z
2026-10-23T23:13:44.1887756Z 91     archive: (input) =>
2026-10-23T23:13:44.1887799Z        ~~~~~~~
2026-10-23T23:13:44.1887802Z
2026-10-23T23:13:44.1888162Z 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-23T23:13:44.1888164Z
2026-10-23T23:13:44.1888214Z 97     unarchive: (input) =>
2026-10-23T23:13:44.1888261Z        ~~~~~~~~~
2026-10-23T23:13:44.1888263Z
2026-10-23T23:13:44.1888618Z 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-23T23:13:44.1888620Z
2026-10-23T23:13:44.1888670Z 103     delete: (input) =>
2026-10-23T23:13:44.1888713Z         ~~~~~~
2026-10-23T23:13:44.1888716Z
2026-10-23T23:13:44.1889087Z 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-23T23:13:44.1889089Z
2026-10-23T23:13:44.1889145Z 109     updateMetadata: (input) =>
2026-10-23T23:13:44.1889190Z         ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1889192Z
2026-10-23T23:13:44.1889563Z 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-23T23:13:44.1889619Z
2026-10-23T23:13:44.1889709Z 118     setRuntimeMode: (input) =>
2026-10-23T23:13:44.1889753Z         ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1889755Z
2026-10-23T23:13:44.1890136Z 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-23T23:13:44.1890138Z
2026-10-23T23:13:44.1890199Z 125     setInteractionMode: (input) =>
2026-10-23T23:13:44.1890246Z         ~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1890249Z
2026-10-23T23:13:44.1890628Z 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-23T23:13:44.1890635Z
2026-10-23T23:13:44.1890689Z 132     setModelSelection: (input) =>
2026-10-23T23:13:44.1890736Z         ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1890740Z
2026-10-23T23:13:44.1891154Z 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-23T23:13:44.1891157Z
2026-10-23T23:13:44.1891216Z 689       Effect.flatMap((projection) =>
2026-10-23T23:13:44.1891261Z           ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1891263Z
2026-10-23T23:13:44.1891570Z 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-23T23:13:44.1891572Z
2026-10-23T23:13:44.1891646Z 706     ensureProjectionTranscript(input.threadId)
2026-10-23T23:13:44.1891704Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1891848Z 707       .pipe(Effect.andThen(orchestrator.getThreadRecords(input.threadId, fields, filter)))
2026-10-23T23:13:44.1891937Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1891982Z ...
2026-10-23T23:13:44.1892026Z 726         ),
2026-10-23T23:13:44.1892070Z     ~~~~~~~~~~
2026-10-23T23:13:44.1892111Z 727       );
2026-10-23T23:13:44.1892156Z     ~~~~~~~
2026-10-23T23:13:44.1892159Z
2026-10-23T23:13:44.1892611Z 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-23T23:13:44.1892615Z
2026-10-23T23:13:44.1892676Z 717         Effect.flatMap((projection) =>
2026-10-23T23:13:44.1892722Z             ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1892725Z
2026-10-23T23:13:44.1893130Z src/orchestration-v2/ThreadManagementService.ts:1131:43 - suggestion TS377019: This `yield* Effect.fail(...)` passes a yieldable error value. `yield*` represents that value directly without wrapping it in `Effect.fail`. effect(unnecessaryFailYieldableError)
2026-10-23T23:13:44.1893133Z
2026-10-23T23:13:44.1893250Z 1131     if (failures[0] !== undefined) return yield* Effect.fail(failures[0]);
2026-10-23T23:13:44.1893313Z                                                ~~~~~
2026-10-23T23:13:44.1893316Z
2026-10-23T23:13:44.1893696Z src/orchestration-v2/ThreadManagementService.ts:1142:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.searchThread")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T23:13:44.1893699Z
2026-10-23T23:13:44.1893750Z 1142     searchThread: (input) =>
2026-10-23T23:13:44.1946166Z          ~~~~~~~~~~~~
2026-10-23T23:13:44.1946607Z
2026-10-23T23:13:44.1947335Z src/orchestration-v2/ThreadManagementService.ts:1147:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.getThreadHistoryPage")((threadId, cursor, throughEntryId, conversationOnly) => { ... })`. effect(effectFnOpportunity)
2026-10-23T23:13:44.1947340Z
2026-10-23T23:13:44.1947476Z 1147     getThreadHistoryPage: (threadId, cursor, throughEntryId, conversationOnly) =>
2026-10-23T23:13:44.1947527Z          ~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1947538Z
2026-10-23T23:13:44.1947951Z src/orchestration-v2/ThreadManagementService.ts:1153:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.getTimelinePage")((threadId, options) => { ... })`. effect(effectFnOpportunity)
2026-10-23T23:13:44.1947954Z
2026-10-23T23:13:44.1948028Z 1153     getTimelinePage: (threadId, options) =>
2026-10-23T23:13:44.1948077Z          ~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1948086Z
2026-10-23T23:13:44.1948493Z src/orchestration-v2/ThreadManagementService.ts:1157:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.getMessageCount")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-23T23:13:44.1948497Z
2026-10-23T23:13:44.1948556Z 1157     getMessageCount: (threadId) =>
2026-10-23T23:13:44.1948601Z          ~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1948603Z
2026-10-23T23:13:44.1948979Z src/orchestration-v2/ThreadManagementService.ts:1161:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.getTurnItem")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T23:13:44.1948982Z
2026-10-23T23:13:44.1949037Z 1161     getTurnItem: (input) =>
2026-10-23T23:13:44.1949083Z          ~~~~~~~~~~~
2026-10-23T23:13:44.1949086Z
2026-10-23T23:13:44.1949500Z src/orchestration-v2/ThreadManagementService.ts:1166:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.getThreadRecords")((threadId, fields, filter) => { ... })`. effect(effectFnOpportunity)
2026-10-23T23:13:44.1949506Z
2026-10-23T23:13:44.1949585Z 1166     getThreadRecords: (threadId, fields, filter) =>
2026-10-23T23:13:44.1949634Z          ~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1949636Z
2026-10-23T23:13:44.1950061Z src/orchestration-v2/ThreadManagementService.ts:1206:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("LegacyV1ThreadImporter.LegacyV1ThreadImporter.ensureTranscript")(() => { ... })`. effect(effectFnOpportunity)
2026-10-23T23:13:44.1950064Z
2026-10-23T23:13:44.1950213Z 1206     ensureTranscript: () => Effect.succeed({ importedThreadCount: 0, importedMessageCount: 0 }),
2026-10-23T23:13:44.1950257Z          ~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1950259Z
2026-10-23T23:13:44.1950555Z src/orchestration-v2/ThreadPullRequestService.test.ts:119:29 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1950561Z
2026-10-23T23:13:44.1950652Z 119             getShell: () => Effect.succeed(Option.some(project)),
2026-10-23T23:13:44.1950709Z                                 ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1950712Z
2026-10-23T23:13:44.1950999Z src/orchestration-v2/ThreadPullRequestService.test.ts:238:31 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1951002Z
2026-10-23T23:13:44.1951086Z 238               getShell: () => Effect.succeed(Option.some(project)),
2026-10-23T23:13:44.1951142Z                                   ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1951145Z
2026-10-23T23:13:44.1951567Z src/orchestration-v2/ThreadPullRequestService.ts:329:17 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-23T23:13:44.1951665Z
2026-10-23T23:13:44.1951728Z 329                 Effect.catchCause((cause) =>
2026-10-23T23:13:44.1951813Z                     ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1951816Z
2026-10-23T23:13:44.1952225Z 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-23T23:13:44.1952230Z
2026-10-23T23:13:44.1952287Z 353           Effect.catchCause((cause) =>
2026-10-23T23:13:44.1952338Z               ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1952341Z
2026-10-23T23:13:44.1952838Z 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-23T23:13:44.1952843Z
2026-10-23T23:13:44.1952902Z 516           Effect.catchCause((cause) =>
2026-10-23T23:13:44.1952946Z               ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1952949Z
2026-10-23T23:13:44.1953361Z 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-23T23:13:44.1953364Z
2026-10-23T23:13:44.1953423Z 534       Effect.catchCause((cause) =>
2026-10-23T23:13:44.1953473Z           ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1953475Z
2026-10-23T23:13:44.1953881Z 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-23T23:13:44.1953884Z
2026-10-23T23:13:44.1953941Z 576         Effect.catchCause((cause) =>
2026-10-23T23:13:44.1953990Z             ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1953992Z
2026-10-23T23:13:44.1954378Z 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-23T23:13:44.1954381Z
2026-10-23T23:13:44.1954439Z 106       normalize: (item, runOrdinal) =>
2026-10-23T23:13:44.1954483Z           ~~~~~~~~~
2026-10-23T23:13:44.1954486Z
2026-10-23T23:13:44.1954916Z 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-23T23:13:44.1954920Z
2026-10-23T23:13:44.1955023Z 54 const thread = Schema.decodeUnknownSync(OrchestrationV2AppThread)({
2026-10-23T23:13:44.1955076Z                          ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1955078Z
2026-10-23T23:13:44.1955482Z 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-23T23:13:44.1955485Z
2026-10-23T23:13:44.1955530Z 231           try {
2026-10-23T23:13:44.1955571Z               ~~~~~
2026-10-23T23:13:44.1955656Z 232             decodeThreadHistoryCursor(args.query.cursor);
2026-10-23T23:13:44.1955723Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1955766Z ...
2026-10-23T23:13:44.1955903Z 236             return yield* failEnvironmentInternal("orchestration_thread_history_failed", cause);
2026-10-23T23:13:44.1955995Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1956119Z 237           }
2026-10-23T23:13:44.1956162Z     ~~~~~~~~~~~
2026-10-23T23:13:44.1956164Z
2026-10-23T23:13:44.1956469Z src/orchestration-v2/runtimeLayer.test.ts:120:18 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1956472Z
2026-10-23T23:13:44.1956546Z 120   getById: () => Effect.succeed(Option.none()),
2026-10-23T23:13:44.1956597Z                      ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1956600Z
2026-10-23T23:13:44.1956861Z src/orchestration-v2/runtimeLayer.test.ts:996:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1956864Z
2026-10-23T23:13:44.1956914Z 996           Effect.succeed(
2026-10-23T23:13:44.1956961Z               ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1956963Z
2026-10-23T23:13:44.1957360Z 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-23T23:13:44.1957365Z
2026-10-23T23:13:44.1957417Z 40         append: (input) =>
2026-10-23T23:13:44.1957463Z            ~~~~~~
2026-10-23T23:13:44.1957466Z
2026-10-23T23:13:44.1957809Z 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-23T23:13:44.1957814Z
2026-10-23T23:13:44.1957877Z 283       const awaitDispatch = (key: string) =>
2026-10-23T23:13:44.1957922Z                 ~~~~~~~~~~~~~
2026-10-23T23:13:44.1957924Z
2026-10-23T23:13:44.1958397Z 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-23T23:13:44.1958402Z
2026-10-23T23:13:44.1958456Z 447       execute: () => Effect.void,
2026-10-23T23:13:44.1958498Z           ~~~~~~~
2026-10-23T23:13:44.1958500Z
2026-10-23T23:13:44.1958868Z 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-23T23:13:44.1958871Z
2026-10-23T23:13:44.1958920Z 92     list: (input) =>
2026-10-23T23:13:44.1958965Z        ~~~~
2026-10-23T23:13:44.1958968Z
2026-10-23T23:13:44.1959329Z 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-23T23:13:44.1959332Z
2026-10-23T23:13:44.1959377Z 102     set: (input) =>
2026-10-23T23:13:44.1959423Z         ~~~
2026-10-23T23:13:44.1959426Z
2026-10-23T23:13:44.1959784Z 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-23T23:13:44.1959787Z
2026-10-23T23:13:44.1959832Z 54     get: (key) =>
2026-10-23T23:13:44.1959876Z        ~~~
2026-10-23T23:13:44.1959878Z
2026-10-23T23:13:44.1960246Z 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-23T23:13:44.1960249Z
2026-10-23T23:13:44.1960301Z 64     put: (key, guide) =>
2026-10-23T23:13:44.1960344Z        ~~~
2026-10-23T23:13:44.1960346Z
2026-10-23T23:13:44.1960712Z 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-23T23:13:44.1960816Z
2026-10-23T23:13:44.1960875Z 45         Effect.catch((error) =>
2026-10-23T23:13:44.1960966Z            ~~~~~~~~~~~~
2026-10-23T23:13:44.1960969Z
2026-10-23T23:13:44.1961314Z 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-23T23:13:44.1961317Z
2026-10-23T23:13:44.1961391Z 75       awaitAttached: () => Effect.succeed(false),
2026-10-23T23:13:44.1961437Z          ~~~~~~~~~~~~~
2026-10-23T23:13:44.1961440Z
2026-10-23T23:13:44.1962011Z 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-23T23:13:44.1962022Z
2026-10-23T23:13:44.1962085Z 78       isAttached: () => Effect.succeed(false),
2026-10-23T23:13:44.1962132Z          ~~~~~~~~~~
2026-10-23T23:13:44.1962134Z
2026-10-23T23:13:44.1962465Z 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-23T23:13:44.1962468Z
2026-10-23T23:13:44.1962626Z 79       endpoint: () => Effect.die("No desktop app is attached to this server."),
2026-10-23T23:13:44.1962669Z          ~~~~~~~~
2026-10-23T23:13:44.1962672Z
2026-10-23T23:13:44.1962998Z 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-23T23:13:44.1963001Z
2026-10-23T23:13:44.1963058Z 80       pointer: () => Effect.void,
2026-10-23T23:13:44.1963101Z          ~~~~~~~
2026-10-23T23:13:44.1963107Z
2026-10-23T23:13:44.1963471Z 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-23T23:13:44.1963474Z
2026-10-23T23:13:44.1963530Z 194     awaitAttached: (key, timeout) =>
2026-10-23T23:13:44.1963577Z         ~~~~~~~~~~~~~
2026-10-23T23:13:44.1963580Z
2026-10-23T23:13:44.1963919Z 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-23T23:13:44.1963921Z
2026-10-23T23:13:44.1964026Z 216     isAttached: (key) => Effect.sync(() => attachedTabs.has(keyOf(key))),
2026-10-23T23:13:44.1964072Z         ~~~~~~~~~~
2026-10-23T23:13:44.1964074Z
2026-10-23T23:13:44.1964417Z 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-23T23:13:44.1964424Z
2026-10-23T23:13:44.1964540Z 218     pointer: (key, pointer) => command({ type: "pointer", ...key, ...pointer }),
2026-10-23T23:13:44.1964587Z         ~~~~~~~
2026-10-23T23:13:44.1964591Z
2026-10-23T23:13:44.1965119Z 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-23T23:13:44.1965122Z
2026-10-23T23:13:44.1965245Z 480     executable: () => Effect.runPromise(previewBrowser.executable),
2026-10-23T23:13:44.1965314Z                           ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1965316Z
2026-10-23T23:13:44.1965939Z 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-23T23:13:44.1965998Z
2026-10-23T23:13:44.1966054Z 687       ? Effect.runPromise(
2026-10-23T23:13:44.1966101Z             ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1966103Z
2026-10-23T23:13:44.1966601Z 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-23T23:13:44.1966604Z
2026-10-23T23:13:44.1966721Z 696     const scope = await Effect.runPromise(Scope.make());
2026-10-23T23:13:44.1966790Z                             ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1966795Z
2026-10-23T23:13:44.1967274Z 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-23T23:13:44.1967277Z
2026-10-23T23:13:44.1967347Z 698       const endpoint = await Effect.runPromise(
2026-10-23T23:13:44.1967402Z                                  ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1967405Z
2026-10-23T23:13:44.1967884Z 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-23T23:13:44.1967887Z
2026-10-23T23:13:44.1967976Z 708           await Effect.runPromise(Scope.close(scope, Exit.void));
2026-10-23T23:13:44.1968032Z                     ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1968034Z
2026-10-23T23:13:44.1968513Z 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-23T23:13:44.1968516Z
2026-10-23T23:13:44.1968606Z 712       await Effect.runPromise(Scope.close(scope, Exit.void));
2026-10-23T23:13:44.1968656Z                 ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1968658Z
2026-10-23T23:13:44.1969137Z 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-23T23:13:44.1969143Z
2026-10-23T23:13:44.1969195Z 1199     await Effect.runPromise(
2026-10-23T23:13:44.1969244Z                ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1969247Z
2026-10-23T23:13:44.1969730Z 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-23T23:13:44.1969732Z
2026-10-23T23:13:44.1969791Z 1688         : await Effect.runPromise(
2026-10-23T23:13:44.1969838Z                      ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1969842Z
2026-10-23T23:13:44.1970320Z 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-23T23:13:44.1970419Z
2026-10-23T23:13:44.1970478Z 1752             ? await Effect.runPromise(
2026-10-23T23:13:44.1970530Z                          ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1970561Z
2026-10-23T23:13:44.1970854Z 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-23T23:13:44.1970857Z
2026-10-23T23:13:44.1970969Z 1755                     ServerBrowserTabNotFoundError: () => Effect.succeed(undefined),
2026-10-23T23:13:44.1971041Z                                                               ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1971044Z
2026-10-23T23:13:44.1971525Z 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-23T23:13:44.1971529Z
2026-10-23T23:13:44.1971608Z 1761           const { sessions } = await Effect.runPromise(
2026-10-23T23:13:44.1971673Z                                           ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1971676Z
2026-10-23T23:13:44.1972157Z 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-23T23:13:44.1972160Z
2026-10-23T23:13:44.1972218Z 1789             await Effect.runPromise(
2026-10-23T23:13:44.1972269Z                        ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1972272Z
2026-10-23T23:13:44.1972814Z 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-23T23:13:44.1972819Z
2026-10-23T23:13:44.1972880Z 1820               await Effect.runPromise(
2026-10-23T23:13:44.1972931Z                          ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1972934Z
2026-10-23T23:13:44.1973411Z 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-23T23:13:44.1973413Z
2026-10-23T23:13:44.1973555Z 1884       await Effect.runPromise(manager.close({ threadId: tab.threadId, tabId: tab.tabId }));
2026-10-23T23:13:44.1973608Z                  ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1973610Z
2026-10-23T23:13:44.1974098Z 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-23T23:13:44.1974100Z
2026-10-23T23:13:44.1974156Z 1952         await Effect.runPromise(
2026-10-23T23:13:44.1974203Z                    ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1974206Z
2026-10-23T23:13:44.1974689Z 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-23T23:13:44.1974691Z
2026-10-23T23:13:44.1974767Z 1964         const snapshot = await Effect.runPromise(
2026-10-23T23:13:44.1974827Z                                     ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1974892Z
2026-10-23T23:13:44.1975429Z 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-23T23:13:44.1975432Z
2026-10-23T23:13:44.1975489Z 2210         await Effect.runPromise(
2026-10-23T23:13:44.1975536Z                    ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1975539Z
2026-10-23T23:13:44.1975839Z 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-23T23:13:44.1975842Z
2026-10-23T23:13:44.1975922Z 179       const receive = (chunk: Uint8Array | string) => {
2026-10-23T23:13:44.1975970Z                 ~~~~~~~
2026-10-23T23:13:44.1975974Z
2026-10-23T23:13:44.1976295Z 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-23T23:13:44.1976303Z
2026-10-23T23:13:44.1976403Z 209     Effect.catch(() => Effect.succeed(HttpServerResponse.empty())),
2026-10-23T23:13:44.1976449Z         ~~~~~~~~~~~~
2026-10-23T23:13:44.1976452Z
2026-10-23T23:13:44.1976801Z 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-23T23:13:44.1976803Z
2026-10-23T23:13:44.1976899Z 860     resolveAvailableEditors: () => cachedAvailableEditors,
2026-10-23T23:13:44.1976945Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1976947Z
2026-10-23T23:13:44.1977308Z 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-23T23:13:44.1977313Z
2026-10-23T23:13:44.1977378Z 861     resolveFileManagerRevealKind: () =>
2026-10-23T23:13:44.1977427Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1977430Z
2026-10-23T23:13:44.1977762Z 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-23T23:13:44.1977765Z
2026-10-23T23:13:44.1977816Z 865     launchBrowser: (target) =>
2026-10-23T23:13:44.1977863Z         ~~~~~~~~~~~~~
2026-10-23T23:13:44.1977865Z
2026-10-23T23:13:44.1978195Z 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-23T23:13:44.1978201Z
2026-10-23T23:13:44.1978255Z 869     launchEditor: (input) =>
2026-10-23T23:13:44.1978300Z         ~~~~~~~~~~~~
2026-10-23T23:13:44.1978303Z
2026-10-23T23:13:44.1978572Z src/project/AgentSessionImporter.test.ts:212:15 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1978575Z
2026-10-23T23:13:44.1978630Z 212               Effect.succeed(
2026-10-23T23:13:44.1978679Z                   ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1978681Z
2026-10-23T23:13:44.1978936Z src/project/ManagedProjectFolders.ts:346:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1978939Z
2026-10-23T23:13:44.1979027Z 346           ? Effect.succeed(Option.some(folderFor(id.slice(-8))))
2026-10-23T23:13:44.1979076Z                 ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1979079Z
2026-10-23T23:13:44.1979331Z src/project/ManagedProjectFolders.ts:348:15 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1979410Z
2026-10-23T23:13:44.1979515Z 348             ? Effect.succeed(Option.some(fullFolder))
2026-10-23T23:13:44.1979566Z                   ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1979569Z
2026-10-23T23:13:44.1979906Z 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-23T23:13:44.1979911Z
2026-10-23T23:13:44.1979993Z 432     start: (input, hooks) => locked(start(input, hooks)),
2026-10-23T23:13:44.1980038Z         ~~~~~
2026-10-23T23:13:44.1980040Z
2026-10-23T23:13:44.1980375Z 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-23T23:13:44.1980380Z
2026-10-23T23:13:44.1980457Z 433     cancel: (projectId) => locked(cancel(projectId)),
2026-10-23T23:13:44.1980499Z         ~~~~~~
2026-10-23T23:13:44.1980501Z
2026-10-23T23:13:44.1980836Z 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-23T23:13:44.1980839Z
2026-10-23T23:13:44.1980913Z 434     retry: (projectId) => locked(retry(projectId)),
2026-10-23T23:13:44.1980958Z         ~~~~~
2026-10-23T23:13:44.1980960Z
2026-10-23T23:13:44.1981297Z 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-23T23:13:44.1981300Z
2026-10-23T23:13:44.1981376Z 435     discard: (projectId) => locked(discard(projectId)),
2026-10-23T23:13:44.1981423Z         ~~~~~~~
2026-10-23T23:13:44.1981425Z
2026-10-23T23:13:44.1981780Z 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-23T23:13:44.1981783Z
2026-10-23T23:13:44.1981890Z 21         get: (key) => Effect.sync(() => Option.fromUndefinedOr(bytes.get(key))),
2026-10-23T23:13:44.1981934Z            ~~~
2026-10-23T23:13:44.1981936Z
2026-10-23T23:13:44.1982295Z 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-23T23:13:44.1982297Z
2026-10-23T23:13:44.1982349Z 22         set: (key, value) =>
2026-10-23T23:13:44.1982393Z            ~~~
2026-10-23T23:13:44.1982395Z
2026-10-23T23:13:44.1982823Z 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-23T23:13:44.1982828Z
2026-10-23T23:13:44.1982882Z 26         remove: (key) =>
2026-10-23T23:13:44.1982926Z            ~~~~~~
2026-10-23T23:13:44.1982928Z
2026-10-23T23:13:44.1983281Z 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-23T23:13:44.1983284Z
2026-10-23T23:13:44.1983390Z 30         create: () => Effect.die("Handoff does not create persistent secrets."),
2026-10-23T23:13:44.1983435Z            ~~~~~~
2026-10-23T23:13:44.1983437Z
2026-10-23T23:13:44.1983813Z 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-23T23:13:44.1983889Z
2026-10-23T23:13:44.1984085Z 31         getOrCreateRandom: () => Effect.die("Handoff uses the destination environment identity."),
2026-10-23T23:13:44.1984135Z            ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1984138Z
2026-10-23T23:13:44.1984591Z 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-23T23:13:44.1984594Z
2026-10-23T23:13:44.1984713Z 205     return yield* Schema.decodeUnknownEffect(Schema.fromJsonString(schema))(
2026-10-23T23:13:44.1984768Z                              ~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1984773Z
2026-10-23T23:13:44.1985062Z 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-23T23:13:44.1985067Z
2026-10-23T23:13:44.1985124Z 569         ? Effect.succeed(undefined)
2026-10-23T23:13:44.1985177Z               ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1985179Z
2026-10-23T23:13:44.1985524Z 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-23T23:13:44.1985526Z
2026-10-23T23:13:44.1985579Z 284       current: (driverKind) =>
2026-10-23T23:13:44.1985622Z           ~~~~~~~
2026-10-23T23:13:44.1985624Z
2026-10-23T23:13:44.1986016Z 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-23T23:13:44.1986021Z
2026-10-23T23:13:44.1986081Z 284                 return yield* Effect.fail(
2026-10-23T23:13:44.1986131Z                            ~~~~~
2026-10-23T23:13:44.1986133Z
2026-10-23T23:13:44.1986481Z 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-23T23:13:44.1986486Z
2026-10-23T23:13:44.1986539Z 211     importProfile: (input) =>
2026-10-23T23:13:44.1986584Z         ~~~~~~~~~~~~~
2026-10-23T23:13:44.1986586Z
2026-10-23T23:13:44.1986961Z 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-23T23:13:44.1986963Z
2026-10-23T23:13:44.1987028Z 39       credentials: (namespace, bindingId) =>
2026-10-23T23:13:44.1987070Z          ~~~~~~~~~~~
2026-10-23T23:13:44.1987074Z
2026-10-23T23:13:44.1987484Z 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-23T23:13:44.1987487Z
2026-10-23T23:13:44.1987544Z 2773       Effect.catchCause((cause) =>
2026-10-23T23:13:44.1987593Z            ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1987596Z
2026-10-23T23:13:44.1987989Z 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-23T23:13:44.1987992Z
2026-10-23T23:13:44.1988045Z 3176       Effect.catchCause((cause) =>
2026-10-23T23:13:44.1988093Z            ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1988095Z
2026-10-23T23:13:44.1988438Z 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-23T23:13:44.1988509Z
2026-10-23T23:13:44.1988596Z 3395     listStats: (input) =>
2026-10-23T23:13:44.1988642Z          ~~~~~~~~~
2026-10-23T23:13:44.1988645Z
2026-10-23T23:13:44.1988901Z src/relay/AgentAwarenessRelay.test.ts:271:9 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T23:13:44.1988903Z
2026-10-23T23:13:44.1988954Z 271         Effect.succeed(
2026-10-23T23:13:44.1989003Z             ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1989005Z
2026-10-23T23:13:44.1989339Z 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-23T23:13:44.1989341Z
2026-10-23T23:13:44.1989469Z 822     requestCatchUp: () => Queue.offer(catchUpRequests, undefined).pipe(Effect.asVoid),
2026-10-23T23:13:44.1989516Z         ~~~~~~~~~~~~~~
2026-10-23T23:13:44.1989519Z
2026-10-23T23:13:44.1989931Z 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-23T23:13:44.1989934Z
2026-10-23T23:13:44.1990000Z 641     requestDesktopUpdate: (requestId) =>
2026-10-23T23:13:44.1990049Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1990051Z
2026-10-23T23:13:44.1990453Z 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-23T23:13:44.1990460Z
2026-10-23T23:13:44.1990519Z 647     commitDesktopUpdate: (requestId) =>
2026-10-23T23:13:44.1990571Z         ~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1990573Z
2026-10-23T23:13:44.1990975Z 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-23T23:13:44.1990978Z
2026-10-23T23:13:44.1991040Z 649     cancelDesktopUpdate: (requestId) =>
2026-10-23T23:13:44.1991085Z         ~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1991088Z
2026-10-23T23:13:44.1991478Z 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-23T23:13:44.1991481Z
2026-10-23T23:13:44.1991549Z 698       setDiagnosticsDemand: () => Effect.void,
2026-10-23T23:13:44.1991598Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1991602Z
2026-10-23T23:13:44.1991993Z 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-23T23:13:44.1991996Z
2026-10-23T23:13:44.1992062Z 699       requestDesktopUpdate: () => Effect.void,
2026-10-23T23:13:44.1992110Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1992113Z
2026-10-23T23:13:44.1992545Z 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-23T23:13:44.1992548Z
2026-10-23T23:13:44.1992617Z 700       commitDesktopUpdate: () => Effect.void,
2026-10-23T23:13:44.1992667Z           ~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1992669Z
2026-10-23T23:13:44.1993131Z 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-23T23:13:44.1993184Z
2026-10-23T23:13:44.1993249Z 701       cancelDesktopUpdate: () => Effect.void,
2026-10-23T23:13:44.1993300Z           ~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1993302Z
2026-10-23T23:13:44.1993662Z 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-23T23:13:44.1993664Z
2026-10-23T23:13:44.1993714Z 1091       readHistory: () =>
2026-10-23T23:13:44.1993758Z            ~~~~~~~~~~~
2026-10-23T23:13:44.1993760Z
2026-10-23T23:13:44.1994141Z 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-23T23:13:44.1994145Z
2026-10-23T23:13:44.1994215Z 1097       setExternalProcesses: () => Effect.void,
2026-10-23T23:13:44.1994266Z            ~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1994269Z
2026-10-23T23:13:44.1994640Z 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-23T23:13:44.1994642Z
2026-10-23T23:13:44.1994705Z 1098       setHostPowerState: () => Effect.void,
2026-10-23T23:13:44.1994756Z            ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1994759Z
2026-10-23T23:13:44.1995079Z 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-23T23:13:44.1995083Z
2026-10-23T23:13:44.1995157Z 1136                             ? Effect.succeed(undefined)
2026-10-23T23:13:44.1995220Z                                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1995222Z
2026-10-23T23:13:44.1995526Z 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-23T23:13:44.1995529Z
2026-10-23T23:13:44.1995593Z 166       const results = yield* Effect.all(
2026-10-23T23:13:44.1995646Z                                  ~~~~~~~~~~
2026-10-23T23:13:44.1995649Z
2026-10-23T23:13:44.1996037Z 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-23T23:13:44.1996040Z
2026-10-23T23:13:44.1996101Z 480     return Effect.gen(function* () {
2026-10-23T23:13:44.1996160Z         ~~~~~~
2026-10-23T23:13:44.1996162Z
2026-10-23T23:13:44.1996464Z 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-23T23:13:44.1996467Z
2026-10-23T23:13:44.1996541Z 209           prepareTrial: Effect.succeed(undefined),
2026-10-23T23:13:44.1996600Z                             ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1996603Z
2026-10-23T23:13:44.1996890Z 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-23T23:13:44.1996895Z
2026-10-23T23:13:44.1996953Z 413       const results = yield* Effect.all(
2026-10-23T23:13:44.1997005Z                                  ~~~~~~~~~~
2026-10-23T23:13:44.1997008Z
2026-10-23T23:13:44.1997526Z 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-23T23:13:44.1997564Z
2026-10-23T23:13:44.1997625Z 204     listChangeRequests: (input) =>
2026-10-23T23:13:44.1997672Z         ~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1997674Z
2026-10-23T23:13:44.1998114Z 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-23T23:13:44.1998117Z
2026-10-23T23:13:44.1998174Z 209     getChangeRequest: (input) =>
2026-10-23T23:13:44.1998223Z         ~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1998225Z
2026-10-23T23:13:44.1998669Z 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-23T23:13:44.1998674Z
2026-10-23T23:13:44.1998734Z 214     createChangeRequest: (input) =>
2026-10-23T23:13:44.1998780Z         ~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1998783Z
2026-10-23T23:13:44.1999237Z 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-23T23:13:44.1999239Z
2026-10-23T23:13:44.1999306Z 219     getRepositoryCloneUrls: (input) =>
2026-10-23T23:13:44.1999355Z         ~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1999357Z
2026-10-23T23:13:44.1999789Z 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-23T23:13:44.1999796Z
2026-10-23T23:13:44.1999901Z 224     createRepository: (input) => provider.createRepository(input),
2026-10-23T23:13:44.1999950Z         ~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.1999952Z
2026-10-23T23:13:44.2000388Z 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-23T23:13:44.2000391Z
2026-10-23T23:13:44.2000447Z 225     getDefaultBranch: (input) =>
2026-10-23T23:13:44.2000492Z         ~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.2000494Z
2026-10-23T23:13:44.2000940Z 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-23T23:13:44.2000944Z
2026-10-23T23:13:44.2001006Z 230     checkoutChangeRequest: (input) =>
2026-10-23T23:13:44.2001057Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.2001060Z
2026-10-23T23:13:44.2001444Z 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-23T23:13:44.2001446Z
2026-10-23T23:13:44.2001666Z 345       resolve: (input) => resolveHandle(input).pipe(Effect.map((handle) => handle.provider)),
2026-10-23T23:13:44.2001709Z           ~~~~~~~
2026-10-23T23:13:44.2001711Z
2026-10-23T23:13:44.2002111Z src/sourceControl/SourceControlRepositoryService.ts:409:7 - suggestion TS377116: `Effect.catchIf` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-23T23:13:44.2002242Z
2026-10-23T23:13:44.2002297Z 409       Effect.catch((sshError) =>
2026-10-23T23:13:44.2002344Z           ~~~~~~~~~~~~
2026-10-23T23:13:44.2002414Z
2026-10-23T23:13:44.2002866Z src/sourceControl/SourceControlRepositoryService.ts:556:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.lookupRepository")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T23:13:44.2002871Z
2026-10-23T23:13:44.2002926Z 556     lookupRepository: (input) =>
2026-10-23T23:13:44.2002973Z         ~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.2002975Z
2026-10-23T23:13:44.2003374Z src/sourceControl/SourceControlRepositoryService.ts:558:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.prepareClone")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T23:13:44.2003379Z
2026-10-23T23:13:44.2003433Z 558     prepareClone: (input) =>
2026-10-23T23:13:44.2003475Z         ~~~~~~~~~~~~
2026-10-23T23:13:44.2003477Z
2026-10-23T23:13:44.2003896Z src/sourceControl/SourceControlRepositoryService.ts:565:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.cloneRepository")((input, options) => { ... })`. effect(effectFnOpportunity)
2026-10-23T23:13:44.2003899Z
2026-10-23T23:13:44.2003962Z 565     cloneRepository: (input, options) =>
2026-10-23T23:13:44.2004009Z         ~~~~~~~~~~~~~~~
2026-10-23T23:13:44.2004011Z
2026-10-23T23:13:44.2004423Z src/sourceControl/SourceControlRepositoryService.ts:572:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.discardClone")((destinationPath) => { ... })`. effect(effectFnOpportunity)
2026-10-23T23:13:44.2004426Z
2026-10-23T23:13:44.2004485Z 572     discardClone: (destinationPath) =>
2026-10-23T23:13:44.2004531Z         ~~~~~~~~~~~~
2026-10-23T23:13:44.2004534Z
2026-10-23T23:13:44.2004942Z src/sourceControl/SourceControlRepositoryService.ts:576:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.publishRepository")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T23:13:44.2004944Z
2026-10-23T23:13:44.2005002Z 576     publishRepository: (input) =>
2026-10-23T23:13:44.2005052Z         ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.2005054Z
2026-10-23T23:13:44.2005401Z src/storageCleanup.ts:708:14 - suggestion TS377019: This `yield* Effect.fail(...)` passes a yieldable error value. `yield*` represents that value directly without wrapping it in `Effect.fail`. effect(unnecessaryFailYieldableError)
2026-10-23T23:13:44.2005407Z
2026-10-23T23:13:44.2005458Z 708       return yield* Effect.fail(
2026-10-23T23:13:44.2005504Z                  ~~~~~
2026-10-23T23:13:44.2005506Z
2026-10-23T23:13:44.2005819Z 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-23T23:13:44.2005824Z
2026-10-23T23:13:44.2005878Z 113       record: () => Effect.void,
2026-10-23T23:13:44.2005922Z           ~~~~~~
2026-10-23T23:13:44.2005924Z
2026-10-23T23:13:44.2006249Z 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-23T23:13:44.2006252Z
2026-10-23T23:13:44.2006310Z 115       recordOwners: () => Effect.void,
2026-10-23T23:13:44.2006357Z           ~~~~~~~~~~~~
2026-10-23T23:13:44.2006360Z
2026-10-23T23:13:44.2006698Z 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-23T23:13:44.2006766Z
2026-10-23T23:13:44.2006921Z 329   yield* Effect.forever(Effect.sleep(FLUSH_INTERVAL_MS).pipe(Effect.flatMap(() => flushWhenDue)), {
2026-10-23T23:13:44.2007058Z                                                                  ~~~~~~~~~~~~~~
2026-10-23T23:13:44.2007061Z
2026-10-23T23:13:44.2007363Z 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-23T23:13:44.2007365Z
2026-10-23T23:13:44.2007430Z 90       .pipe(Effect.catch(() => Effect.void));
2026-10-23T23:13:44.2007475Z                ~~~~~~~~~~~~
2026-10-23T23:13:44.2007480Z
2026-10-23T23:13:44.2007832Z 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-23T23:13:44.2007836Z
2026-10-23T23:13:44.2007897Z 60     generateCommitMessage: (input) =>
2026-10-23T23:13:44.2007947Z        ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.2007949Z
2026-10-23T23:13:44.2008294Z 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-23T23:13:44.2008297Z
2026-10-23T23:13:44.2008351Z 64     generatePrContent: (input) =>
2026-10-23T23:13:44.2008398Z        ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.2008401Z
2026-10-23T23:13:44.2008743Z 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-23T23:13:44.2008746Z
2026-10-23T23:13:44.2008803Z 68     generateBranchName: (input) =>
2026-10-23T23:13:44.2008851Z        ~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.2008855Z
2026-10-23T23:13:44.2009200Z 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-23T23:13:44.2009205Z
2026-10-23T23:13:44.2009261Z 72     generateReviewGuide: (input) =>
2026-10-23T23:13:44.2009311Z        ~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.2009313Z
2026-10-23T23:13:44.2009657Z 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-23T23:13:44.2009659Z
2026-10-23T23:13:44.2009716Z 76     generateThreadTitle: (input) =>
2026-10-23T23:13:44.2009762Z        ~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.2009765Z
2026-10-23T23:13:44.2010074Z 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-23T23:13:44.2010078Z
2026-10-23T23:13:44.2010133Z 172     readSummary: (input) =>
2026-10-23T23:13:44.2010179Z         ~~~~~~~~~~~
2026-10-23T23:13:44.2010183Z
2026-10-23T23:13:44.2010450Z 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-23T23:13:44.2010453Z
2026-10-23T23:13:44.2010514Z 642         usageInstances(driver, settings)
2026-10-23T23:13:44.2010570Z             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.2010619Z 643           .pipe(
2026-10-23T23:13:44.2010664Z     ~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.2010706Z ...
2026-10-23T23:13:44.2010780Z 664             Effect.provideContext(readerContext),
2026-10-23T23:13:44.2010842Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.2010884Z 665           ),
2026-10-23T23:13:44.2010993Z     ~~~~~~~~~~~
2026-10-23T23:13:44.2010995Z
2026-10-23T23:13:44.2011433Z 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-23T23:13:44.2011436Z
2026-10-23T23:13:44.2011495Z 4009         Effect.flatMap((result) =>
2026-10-23T23:13:44.2011544Z              ~~~~~~~~~~~~~~
2026-10-23T23:13:44.2011547Z
2026-10-23T23:13:44.2011908Z 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-23T23:13:44.2011911Z
2026-10-23T23:13:44.2011977Z 4500     commit: (cwd, subject, body, options) =>
2026-10-23T23:13:44.2012023Z          ~~~~~~
2026-10-23T23:13:44.2012025Z
2026-10-23T23:13:44.2012418Z 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-23T23:13:44.2012423Z
2026-10-23T23:13:44.2012554Z 4502     pushCurrentBranch: (cwd, fallbackBranch, options) =>
2026-10-23T23:13:44.2012601Z          ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.2012603Z
2026-10-23T23:13:44.2012954Z 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-23T23:13:44.2012956Z
2026-10-23T23:13:44.2013095Z 4504     pullCurrentBranch: (cwd) => withListRefsInvalidation(cwd, pullCurrentBranch(cwd)),
2026-10-23T23:13:44.2013145Z          ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.2013148Z
2026-10-23T23:13:44.2013506Z 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-23T23:13:44.2013511Z
2026-10-23T23:13:44.2013574Z 4511     createWorktree: (input, options) =>
2026-10-23T23:13:44.2013622Z          ~~~~~~~~~~~~~~
2026-10-23T23:13:44.2013624Z
2026-10-23T23:13:44.2013989Z 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-23T23:13:44.2013992Z
2026-10-23T23:13:44.2014058Z 4513     fetchPullRequestBranch: (input) =>
2026-10-23T23:13:44.2014108Z          ~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.2014110Z
2026-10-23T23:13:44.2014476Z 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-23T23:13:44.2014480Z
2026-10-23T23:13:44.2014544Z 4517     refreshCheckedOutBranch: (input) =>
2026-10-23T23:13:44.2014592Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.2014595Z
2026-10-23T23:13:44.2014938Z 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-23T23:13:44.2014941Z
2026-10-23T23:13:44.2015076Z 4519     ensureRemote: (input) => withListRefsInvalidation(input.cwd, ensureRemote(input)),
2026-10-23T23:13:44.2015120Z          ~~~~~~~~~~~~
2026-10-23T23:13:44.2015123Z
2026-10-23T23:13:44.2015463Z 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-23T23:13:44.2015465Z
2026-10-23T23:13:44.2015585Z 4522     fetchRemote: (input) =>
2026-10-23T23:13:44.2015631Z          ~~~~~~~~~~~
2026-10-23T23:13:44.2015633Z
2026-10-23T23:13:44.2016044Z 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-23T23:13:44.2016050Z
2026-10-23T23:13:44.2016111Z 4537     fetchWorktreeBaseCommit: (input) =>
2026-10-23T23:13:44.2016159Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.2016162Z
2026-10-23T23:13:44.2016513Z 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-23T23:13:44.2016516Z
2026-10-23T23:13:44.2016665Z 4539     fetchRemoteBranch: (input) => withListRefsInvalidation(input.cwd, fetchRemoteBranch(input)),
2026-10-23T23:13:44.2016714Z          ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.2016716Z
2026-10-23T23:13:44.2017091Z 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-23T23:13:44.2017094Z
2026-10-23T23:13:44.2017161Z 4540     fetchRemoteTrackingBranch: (input) =>
2026-10-23T23:13:44.2017212Z          ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.2017215Z
2026-10-23T23:13:44.2017567Z 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-23T23:13:44.2017570Z
2026-10-23T23:13:44.2017715Z 4542     setBranchUpstream: (input) => withListRefsInvalidation(input.cwd, setBranchUpstream(input)),
2026-10-23T23:13:44.2017763Z          ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.2017767Z
2026-10-23T23:13:44.2018115Z 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-23T23:13:44.2018117Z
2026-10-23T23:13:44.2018256Z 4543     removeWorktree: (input) => withListRefsInvalidation(input.cwd, removeWorktree(input)),
2026-10-23T23:13:44.2018302Z          ~~~~~~~~~~~~~~
2026-10-23T23:13:44.2018305Z
2026-10-23T23:13:44.2018646Z 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-23T23:13:44.2018651Z
2026-10-23T23:13:44.2018786Z 4544     pruneWorktrees: (input) => withListRefsInvalidation(input.cwd, pruneWorktrees(input)),
2026-10-23T23:13:44.2018832Z          ~~~~~~~~~~~~~~
2026-10-23T23:13:44.2018835Z
2026-10-23T23:13:44.2019186Z 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-23T23:13:44.2019192Z
2026-10-23T23:13:44.2019339Z 4545     deleteLocalBranch: (input) => withListRefsInvalidation(input.cwd, deleteLocalBranch(input)),
2026-10-23T23:13:44.2019384Z          ~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.2019389Z
2026-10-23T23:13:44.2019736Z 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-23T23:13:44.2019738Z
2026-10-23T23:13:44.2019868Z 4546     renameBranch: (input) => withListRefsInvalidation(input.cwd, renameBranch(input)),
2026-10-23T23:13:44.2019916Z          ~~~~~~~~~~~~
2026-10-23T23:13:44.2019919Z
2026-10-23T23:13:44.2020256Z 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-23T23:13:44.2020346Z
2026-10-23T23:13:44.2020522Z 4547     createRef: (input) => withListRefsInvalidation(input.cwd, createRef(input)),
2026-10-23T23:13:44.2020566Z          ~~~~~~~~~
2026-10-23T23:13:44.2020568Z
2026-10-23T23:13:44.2020908Z 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-23T23:13:44.2020910Z
2026-10-23T23:13:44.2021027Z 4548     switchRef: (input) => withListRefsInvalidation(input.cwd, switchRef(input)),
2026-10-23T23:13:44.2021074Z          ~~~~~~~~~
2026-10-23T23:13:44.2021077Z
2026-10-23T23:13:44.2021502Z 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-23T23:13:44.2021510Z
2026-10-23T23:13:44.2021582Z 153     return serverSettings.getSettings.pipe(
2026-10-23T23:13:44.2021629Z         ~~~~~~
2026-10-23T23:13:44.2021632Z
2026-10-23T23:13:44.2021963Z 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-23T23:13:44.2021965Z
2026-10-23T23:13:44.2022056Z 171       }).pipe(Effect.catch(() => Effect.succeed(undefined)));
2026-10-23T23:13:44.2022103Z                   ~~~~~~~~~~~~
2026-10-23T23:13:44.2022106Z
2026-10-23T23:13:44.2022410Z 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-23T23:13:44.2022414Z
2026-10-23T23:13:44.2022559Z 171       }).pipe(Effect.catch(() => Effect.succeed(undefined)));
2026-10-23T23:13:44.2022628Z                                      ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.2022633Z
2026-10-23T23:13:44.2022900Z 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-23T23:13:44.2022903Z
2026-10-23T23:13:44.2023009Z 401           resolveFileManagerRevealKind: () => Effect.succeed(undefined),
2026-10-23T23:13:44.2023081Z                                                   ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T23:13:44.2023083Z
2026-10-23T23:13:44.2023393Z 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-23T23:13:44.2023395Z
2026-10-23T23:13:44.2023463Z 1384         return yield* Option.match(project, {
2026-10-23T23:13:44.2023517Z                            ~~~~~~~~~~~~
2026-10-23T23:13:44.2023519Z
2026-10-23T23:13:44.2023851Z 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-23T23:13:44.2023853Z
2026-10-23T23:13:44.2023915Z 2319                 return yield* Effect.fail(
2026-10-23T23:13:44.2023968Z                             ~~~~~
2026-10-23T23:13:44.2023971Z
2026-10-23T23:13:44.2024297Z 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-23T23:13:44.2024299Z
2026-10-23T23:13:44.2024361Z 2328                 return yield* Effect.fail(
2026-10-23T23:13:44.2024410Z                             ~~~~~
2026-10-23T23:13:44.2024480Z
2026-10-23T23:13:44.2024860Z 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-23T23:13:44.2024862Z
2026-10-23T23:13:44.2024925Z 2336                 return yield* Effect.fail(
2026-10-23T23:13:44.2024977Z                             ~~~~~
2026-10-23T23:13:44.2024979Z
2026-10-23T23:13:44.2024982Z
2026-10-23T23:13:44.2025029Z ---
2026-10-23T23:13:44.2025335Z 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-23T23:13:44.2574712Z Post job cleanup.
2026-10-23T23:13:44.3272710Z Cache hit occurred on the primary key electron-Linux-X64-854e11ddd491bd4f350eebb67a74265df119376a3984c8e153cfe5fc8ced6309, not saving cache.
2026-10-23T23:13:44.3373193Z Post job cleanup.
2026-10-23T23:13:44.3393489Z ##[start-action display=Cache full pnpm store;id=__5be6c430-ccbd-4431-b109-dc40b24cba6c.__actions_cache]
2026-10-23T23:13:44.4359586Z Post job cleanup.
2026-10-23T23:13:44.5028559Z Cache hit occurred on the primary key pnpm-full-v1-Linux-X64-3cb0b4d7cff93dc8fe33f2ea73cac71ca25a36270fcb648b9b4a9320151012ef, not saving cache.
2026-10-23T23:13:44.5087779Z ##[end-action id=__5be6c430-ccbd-4431-b109-dc40b24cba6c.__actions_cache;outcome=success;conclusion=success;duration_ms=169]
2026-10-23T23:13:44.5090131Z ##[start-action display=Cache Vite+;id=__5be6c430-ccbd-4431-b109-dc40b24cba6c.vp_cache]
2026-10-23T23:13:44.5133188Z Post job cleanup.
2026-10-23T23:13:44.5976019Z 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-23T23:13:44.6018884Z ##[end-action id=__5be6c430-ccbd-4431-b109-dc40b24cba6c.vp_cache;outcome=success;conclusion=success;duration_ms=92]
2026-10-23T23:13:44.6060001Z Post job cleanup.
2026-10-23T23:13:44.6506167Z [command]/usr/local/bin/git version
2026-10-23T23:13:44.6538096Z git version 2.55.0
2026-10-23T23:13:44.6557348Z Temporarily overriding HOME='/home/runner/_work/_temp/7af5e9e6-d9f4-4814-b8f8-1ba627af5afa' before making global git config changes
2026-10-23T23:13:44.6557969Z Adding repository directory to the temporary git global config as a safe directory
2026-10-23T23:13:44.6560382Z [command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
2026-10-23T23:13:44.6585347Z Removing SSH command configuration
2026-10-23T23:13:44.6588909Z [command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-10-23T23:13:44.6614012Z [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-23T23:13:44.6749897Z fatal: No url found for submodule path '.repos/alchemy-effect/submodules/distilled' in .gitmodules
2026-10-23T23:13:44.6782374Z ##[warning]The process '/usr/local/bin/git' failed with exit code 128
2026-10-23T23:13:44.6827443Z A job completed hook has been configured by the self-hosted runner administrator
2026-10-23T23:13:44.6842797Z ##[group]Run '/job_completed.sh'
2026-10-23T23:13:44.6849206Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
2026-10-23T23:13:44.6849379Z env:
2026-10-23T23:13:44.6849494Z   BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 157
2026-10-23T23:13:44.6849650Z   BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 426
2026-10-23T23:13:44.6849800Z   BLACKSMITH_CHECK_RUN_ID: 120702829245
2026-10-23T23:13:44.6849960Z   BLACKSMITH_JOB_DISPLAY_NAME: Build and Typecheck
2026-10-23T23:13:44.6850122Z   GITHUB_ACTIONS_CACHE_MODE: write
2026-10-23T23:13:44.6850260Z ##[endgroup]
2026-10-23T23:13:44.6929439Z Docker container cache not activated, skipping hash computation.
2026-10-23T23:13:44.7297348Z No active SSH sessions detected. Proceeding with shutdown immediately.
2026-10-23T23:13:44.7346942Z Cleaning up orphan processes