GitHub check

256 KB of 524 KB loaded Download the full log (524 KB)
268 KB of earlier output not loaded
suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubPullRequestApi.runPullRequestAction")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T20:46:35.1778415Z
2026-10-23T20:46:35.1778522Z 2364     runPullRequestAction: (input) => {
2026-10-23T20:46:35.1778669Z          ~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1778848Z
2026-10-23T20:46:35.1779209Z src/server/GitHubPullRequestApi.ts:2623:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubPullRequestApi.commentOnPullRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T20:46:35.1779604Z
2026-10-23T20:46:35.1779664Z 2623     commentOnPullRequest: (input) =>
2026-10-23T20:46:35.1779804Z          ~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1779882Z
2026-10-23T20:46:35.1780207Z src/server/GitHubPullRequestApi.ts:2633:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubPullRequestApi.submitReview")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T20:46:35.1780615Z
2026-10-23T20:46:35.1780668Z 2633     submitReview: (input) => {
2026-10-23T20:46:35.1780800Z          ~~~~~~~~~~~~
2026-10-23T20:46:35.1780865Z
2026-10-23T20:46:35.1781204Z src/server/GitHubPullRequestApi.ts:2650:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubPullRequestApi.replyToReviewThread")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T20:46:35.1781582Z
2026-10-23T20:46:35.1781640Z 2650     replyToReviewThread: (input) =>
2026-10-23T20:46:35.1781778Z          ~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1781853Z
2026-10-23T20:46:35.1782205Z src/server/GitHubPullRequestApi.ts:2655:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubPullRequestApi.getPullRequestFilesViewed")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T20:46:35.1782594Z
2026-10-23T20:46:35.1782660Z 2655     getPullRequestFilesViewed: (input) => {
2026-10-23T20:46:35.1782817Z          ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1782899Z
2026-10-23T20:46:35.1783245Z src/server/GitHubPullRequestApi.ts:2683:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubPullRequestApi.getPullRequestFileStats")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T20:46:35.1783631Z
2026-10-23T20:46:35.1783696Z 2683     getPullRequestFileStats: (input) => {
2026-10-23T20:46:35.1783841Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1783920Z
2026-10-23T20:46:35.1784271Z src/server/GitHubPullRequestApi.ts:2711:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubPullRequestApi.setPullRequestFilesViewed")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T20:46:35.1784664Z
2026-10-23T20:46:35.1784730Z 2711     setPullRequestFilesViewed: (input) => {
2026-10-23T20:46:35.1784880Z          ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1784964Z
2026-10-23T20:46:35.1785313Z src/server/GitHubPullRequestApi.ts:2732:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubPullRequestApi.setReviewThreadResolution")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T20:46:35.1785704Z
2026-10-23T20:46:35.1785769Z 2732     setReviewThreadResolution: (input) =>
2026-10-23T20:46:35.1785915Z          ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1785998Z
2026-10-23T20:46:35.1786319Z src/server/GitHubPullRequestApi.ts:2738:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubPullRequestApi.setReaction")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T20:46:35.1786770Z
2026-10-23T20:46:35.1786875Z 2738     setReaction: (input) => {
2026-10-23T20:46:35.1787001Z          ~~~~~~~~~~~
2026-10-23T20:46:35.1787069Z
2026-10-23T20:46:35.1787402Z src/server/GitHubPullRequestApi.ts:2771:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubPullRequestApi.updatePullRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T20:46:35.1787775Z
2026-10-23T20:46:35.1787891Z 2771     updatePullRequest: (input) =>
2026-10-23T20:46:35.1788032Z          ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1788103Z
2026-10-23T20:46:35.1788430Z src/server/GitHubPullRequestApi.ts:2787:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubPullRequestApi.updateComment")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T20:46:35.1788801Z
2026-10-23T20:46:35.1788853Z 2787     updateComment: (input) =>
2026-10-23T20:46:35.1788982Z          ~~~~~~~~~~~~~
2026-10-23T20:46:35.1789051Z
2026-10-23T20:46:35.1789464Z src/server/GitHubSourceControlProvider.ts:894:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.readChangeRequestTemplate")((_) => { ... })`. effect(effectFnOpportunity)
2026-10-23T20:46:35.1789913Z
2026-10-23T20:46:35.1789990Z 894     readChangeRequestTemplate: ({ cwd, treeish }) =>
2026-10-23T20:46:35.1790154Z         ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1790234Z
2026-10-23T20:46:35.1790659Z src/server/GitHubSourceControlProvider.ts:905:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.listChangeRequests")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T20:46:35.1791184Z
2026-10-23T20:46:35.1791245Z 905     listChangeRequests: (input) =>
2026-10-23T20:46:35.1791380Z         ~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1791453Z
2026-10-23T20:46:35.1791843Z src/server/GitHubSourceControlProvider.ts:923:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T20:46:35.1792273Z
2026-10-23T20:46:35.1792326Z 923     getChangeRequest: (input) =>
2026-10-23T20:46:35.1792460Z         ~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1792530Z
2026-10-23T20:46:35.1792934Z src/server/GitHubSourceControlProvider.ts:1036:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.checkoutChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-23T20:46:35.1793380Z
2026-10-23T20:46:35.1793440Z 1036     checkoutChangeRequest: (input) =>
2026-10-23T20:46:35.1793581Z          ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1793662Z
2026-10-23T20:46:35.1794018Z src/server/gitHubGraphQlClient.ts:118:12 - suggestion TS377019: This `yield* Effect.fail(...)` passes a yieldable error value. `yield*` represents that value directly without wrapping it in `Effect.fail`. effect(unnecessaryFailYieldableError)
2026-10-23T20:46:35.1794407Z
2026-10-23T20:46:35.1794463Z 118     return yield* Effect.fail(error);
2026-10-23T20:46:35.1794602Z                ~~~~~
2026-10-23T20:46:35.1794674Z
2026-10-23T20:46:35.1794676Z
2026-10-23T20:46:35.1794734Z ~/packages/provider-pi$ tsc --noEmit
2026-10-23T20:46:35.1795133Z src/server/GitCafeCredentials.ts:170:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitCafeCredentials.get")((host) => { ... })`. effect(effectFnOpportunity)
2026-10-23T20:46:35.1795472Z
2026-10-23T20:46:35.1795516Z 170     get: (host) =>
2026-10-23T20:46:35.1795633Z         ~~~
2026-10-23T20:46:35.1795691Z
2026-10-23T20:46:35.1796069Z src/server/GitCafeCredentials.ts:183:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitCafeCredentials.invalidate")((host) => { ... })`. effect(effectFnOpportunity)
2026-10-23T20:46:35.1796418Z
2026-10-23T20:46:35.1796519Z 183     invalidate: (host) => Cache.invalidate(cache, normalizeHost(host)),
2026-10-23T20:46:35.1796703Z         ~~~~~~~~~~
2026-10-23T20:46:35.1796769Z
2026-10-23T20:46:35.1797126Z src/server/GitCafeCredentials.ts:184:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitCafeCredentials.cliEnv")((host) => { ... })`. effect(effectFnOpportunity)
2026-10-23T20:46:35.1797472Z
2026-10-23T20:46:35.1797521Z 184     cliEnv: (host) =>
2026-10-23T20:46:35.1797637Z         ~~~~~~
2026-10-23T20:46:35.1797699Z
2026-10-23T20:46:35.1797953Z src/server/GitCafePullRequestProvider.ts:559:13 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T20:46:35.1798250Z
2026-10-23T20:46:35.1798309Z 559             Effect.map(Option.some),
2026-10-23T20:46:35.1798448Z                 ~~~~~~~~~~
2026-10-23T20:46:35.1798520Z
2026-10-23T20:46:35.1798771Z src/server/GitCafePullRequestProvider.ts:564:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1799062Z
2026-10-23T20:46:35.1799125Z 564                   : Effect.succeed(Option.none()),
2026-10-23T20:46:35.1799279Z                         ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1799365Z
2026-10-23T20:46:35.1799743Z src/server/GitCafePullRequestProvider.ts:656:13 - suggestion TS377116: `Effect.catchIf` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-23T20:46:35.1800135Z
2026-10-23T20:46:35.1800188Z 656             Effect.catch((error) =>
2026-10-23T20:46:35.1800321Z                 ~~~~~~~~~~~~
2026-10-23T20:46:35.1800401Z
2026-10-23T20:46:35.1800790Z src/server/GitCafePullRequestProvider.ts:734:19 - suggestion TS377116: `Effect.catchIf` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-23T20:46:35.1801180Z
2026-10-23T20:46:35.1801239Z 734                   Effect.catch((error) =>
2026-10-23T20:46:35.1801383Z                       ~~~~~~~~~~~~
2026-10-23T20:46:35.1801465Z
2026-10-23T20:46:35.1801468Z
2026-10-23T20:46:35.1801526Z ~/packages/provider-muse$ tsc --noEmit
2026-10-23T20:46:35.1802021Z 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-23T20:46:35.1802463Z
2026-10-23T20:46:35.1802518Z 340     getChangeRequest: (input) =>
2026-10-23T20:46:35.1802652Z         ~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1802726Z
2026-10-23T20:46:35.1803055Z 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-23T20:46:35.1803423Z
2026-10-23T20:46:35.1803523Z 440     getCapabilities: () => Effect.succeed(PiProviderCapabilitiesV2),
2026-10-23T20:46:35.1803712Z         ~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1803780Z
2026-10-23T20:46:35.1804122Z 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-23T20:46:35.1804503Z
2026-10-23T20:46:35.1804627Z 441     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-23T20:46:35.1804840Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1804922Z
2026-10-23T20:46:35.1805221Z src/server/adapter.ts:1694:31 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T20:46:35.1805485Z
2026-10-23T20:46:35.1805556Z 1694                               Effect.map(Option.some),
2026-10-23T20:46:35.1805721Z                                    ~~~~~~~~~~
2026-10-23T20:46:35.1805810Z
2026-10-23T20:46:35.1806030Z src/server/adapter.ts:1697:29 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1806289Z
2026-10-23T20:46:35.1806406Z 1697                           : Effect.succeed(Option.none()),
2026-10-23T20:46:35.1806572Z                                  ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1806668Z
2026-10-23T20:46:35.1806921Z 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-23T20:46:35.1807217Z
2026-10-23T20:46:35.1807264Z 334       onSuccess: () =>
2026-10-23T20:46:35.1807385Z           ~~~~~~~~~
2026-10-23T20:46:35.1807446Z
2026-10-23T20:46:35.1807658Z src/server/rpc.ts:342:17 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T20:46:35.1807913Z
2026-10-23T20:46:35.1807973Z 342                 Effect.map(Option.some),
2026-10-23T20:46:35.1808113Z                     ~~~~~~~~~~
2026-10-23T20:46:35.1808190Z
2026-10-23T20:46:35.1808192Z
2026-10-23T20:46:35.1808255Z ~/packages/provider-opencode$ tsc --noEmit
2026-10-23T20:46:35.1808356Z
2026-10-23T20:46:35.1808415Z ~/packages/provider-cursor$ tsc --noEmit
2026-10-23T20:46:35.1808837Z 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-23T20:46:35.1809208Z
2026-10-23T20:46:35.1809305Z 284     getCapabilities: () => Effect.succeed(MuseProviderCapabilitiesV2),
2026-10-23T20:46:35.1809495Z         ~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1809563Z
2026-10-23T20:46:35.1809905Z 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-23T20:46:35.1810290Z
2026-10-23T20:46:35.1810413Z 285     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-23T20:46:35.1810779Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1810860Z
2026-10-23T20:46:35.1811133Z 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-23T20:46:35.1811448Z
2026-10-23T20:46:35.1811500Z 388             TimeoutError: (cause) =>
2026-10-23T20:46:35.1811642Z                 ~~~~~~~~~~~~
2026-10-23T20:46:35.1811718Z
2026-10-23T20:46:35.1811940Z src/server/adapter.ts:1366:35 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T20:46:35.1812201Z
2026-10-23T20:46:35.1812331Z 1366                   wake === held ? Effect.map(dispatch, Option.some) : Effect.succeed(Option.none()),
2026-10-23T20:46:35.1812553Z                                        ~~~~~~~~~~
2026-10-23T20:46:35.1812652Z
2026-10-23T20:46:35.1812875Z src/server/adapter.ts:1366:71 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1813133Z
2026-10-23T20:46:35.1813297Z 1366                   wake === held ? Effect.map(dispatch, Option.some) : Effect.succeed(Option.none()),
2026-10-23T20:46:35.1813538Z                                                                            ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1813723Z
2026-10-23T20:46:35.1813725Z
2026-10-23T20:46:35.1813781Z ~/packages/provider-grok$ tsc --noEmit
2026-10-23T20:46:35.1814229Z 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-23T20:46:35.1814624Z
2026-10-23T20:46:35.1814696Z 31       read: (credentialSource, sinceMs, untilMs) =>
2026-10-23T20:46:35.1814846Z          ~~~~
2026-10-23T20:46:35.1814909Z
2026-10-23T20:46:35.1815247Z 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-23T20:46:35.1815587Z
2026-10-23T20:46:35.1815639Z 82     read: (apiKey) =>
2026-10-23T20:46:35.1815755Z        ~~~~
2026-10-23T20:46:35.1815814Z
2026-10-23T20:46:35.1816103Z 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-23T20:46:35.1816437Z
2026-10-23T20:46:35.1816488Z 360     Effect.catch(() =>
2026-10-23T20:46:35.1816608Z         ~~~~~~~~~~~~
2026-10-23T20:46:35.1816676Z
2026-10-23T20:46:35.1817007Z 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-23T20:46:35.1817378Z
2026-10-23T20:46:35.1817485Z 904     getCapabilities: () => Effect.succeed(CursorProviderCapabilitiesV2),
2026-10-23T20:46:35.1817680Z         ~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1817748Z
2026-10-23T20:46:35.1818092Z 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-23T20:46:35.1818479Z
2026-10-23T20:46:35.1818604Z 905     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-23T20:46:35.1818917Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1818997Z
2026-10-23T20:46:35.1819459Z 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-23T20:46:35.1819956Z
2026-10-23T20:46:35.1820007Z 55       Effect.runPromise(
2026-10-23T20:46:35.1820135Z          ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1820205Z
2026-10-23T20:46:35.1820515Z 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-23T20:46:35.1820830Z
2026-10-23T20:46:35.1820901Z 59               onNone: () => Effect.succeed(undefined),
2026-10-23T20:46:35.1821065Z                                ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1821164Z
2026-10-23T20:46:35.1821624Z 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-23T20:46:35.1822124Z
2026-10-23T20:46:35.1822173Z 69       Effect.runPromise(
2026-10-23T20:46:35.1822300Z          ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1822372Z
2026-10-23T20:46:35.1822828Z 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-23T20:46:35.1823407Z
2026-10-23T20:46:35.1823480Z 82     clear: () => Effect.runPromise(credentials.remove),
2026-10-23T20:46:35.1823644Z                     ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1823733Z
2026-10-23T20:46:35.1824070Z 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-23T20:46:35.1824448Z
2026-10-23T20:46:35.1824509Z 228           Effect.flatMap((snapshot) =>
2026-10-23T20:46:35.1824759Z               ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1824840Z
2026-10-23T20:46:35.1825037Z src/server/usageLimits.test.ts:74:5 - suggestion TS377017: This Effect.gen contains a single return statement. effect(unnecessaryEffectGen)
2026-10-23T20:46:35.1825279Z
2026-10-23T20:46:35.1825333Z  74     Effect.gen(function* () {
2026-10-23T20:46:35.1825466Z         ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1825605Z  75       yield* withNodeServices(
2026-10-23T20:46:35.1825739Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1825865Z ...
2026-10-23T20:46:35.1825961Z 115       );
2026-10-23T20:46:35.1826062Z     ~~~~~~~~
2026-10-23T20:46:35.1826159Z 116     }),
2026-10-23T20:46:35.1826256Z     ~~~~~~
2026-10-23T20:46:35.1826316Z
2026-10-23T20:46:35.1826318Z
2026-10-23T20:46:35.1826387Z ~/packages/provider-acp-registry$ tsc --noEmit
2026-10-23T20:46:35.1826782Z 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-23T20:46:35.1827106Z
2026-10-23T20:46:35.1827166Z 147     return Effect.succeed(undefined);
2026-10-23T20:46:35.1827309Z                ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1827397Z
2026-10-23T20:46:35.1827797Z 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-23T20:46:35.1828242Z
2026-10-23T20:46:35.1828303Z 188       if (!recordable) return Effect.void;
2026-10-23T20:46:35.1828448Z                            ~~~~~~
2026-10-23T20:46:35.1828533Z
2026-10-23T20:46:35.1828934Z 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-23T20:46:35.1829366Z
2026-10-23T20:46:35.1829417Z 208         return Effect.void;
2026-10-23T20:46:35.1829542Z             ~~~~~~
2026-10-23T20:46:35.1829605Z
2026-10-23T20:46:35.1829999Z 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-23T20:46:35.1830476Z
2026-10-23T20:46:35.1830522Z 228       return fs
2026-10-23T20:46:35.1830631Z           ~~~~~~
2026-10-23T20:46:35.1830697Z
2026-10-23T20:46:35.1831005Z 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-23T20:46:35.1831352Z
2026-10-23T20:46:35.1831463Z 311   OpenCodeServerLedger.of({ track: () => Effect.succeed(Effect.void) }),
2026-10-23T20:46:35.1831663Z                                 ~~~~~
2026-10-23T20:46:35.1831748Z
2026-10-23T20:46:35.1832067Z 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-23T20:46:35.1832487Z
2026-10-23T20:46:35.1832539Z 169     withServer: (use) =>
2026-10-23T20:46:35.1832659Z         ~~~~~~~~~~
2026-10-23T20:46:35.1832723Z
2026-10-23T20:46:35.1833120Z 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-23T20:46:35.1833556Z
2026-10-23T20:46:35.1833672Z 103 const OPENCODE_TEST_SETTINGS = Schema.decodeUnknownSync(OpenCodeSettings)({});
2026-10-23T20:46:35.1833953Z                                           ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1834060Z
2026-10-23T20:46:35.1834387Z 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-23T20:46:35.1834759Z
2026-10-23T20:46:35.1834869Z 938     getCapabilities: () => Effect.succeed(OpenCodeProviderCapabilitiesV2),
2026-10-23T20:46:35.1835065Z         ~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1835136Z
2026-10-23T20:46:35.1835484Z 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-23T20:46:35.1835869Z
2026-10-23T20:46:35.1835992Z 939     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-23T20:46:35.1836207Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1836286Z
2026-10-23T20:46:35.1836581Z 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-23T20:46:35.1836916Z
2026-10-23T20:46:35.1836994Z 1011         const abortController = new AbortController();
2026-10-23T20:46:35.1837172Z                                      ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1837270Z
2026-10-23T20:46:35.1837599Z 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-23T20:46:35.1837966Z
2026-10-23T20:46:35.1838045Z 1088           if (failure) return yield* Effect.fail(failure);
2026-10-23T20:46:35.1838212Z                                    ~~~~~
2026-10-23T20:46:35.1838302Z
2026-10-23T20:46:35.1838593Z 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-23T20:46:35.1838919Z
2026-10-23T20:46:35.1839002Z 1584               Effect.catch(() => Effect.succeed(undefined)),
2026-10-23T20:46:35.1839168Z                    ~~~~~~~~~~~~
2026-10-23T20:46:35.1839246Z
2026-10-23T20:46:35.1839508Z 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-23T20:46:35.1839809Z
2026-10-23T20:46:35.1839887Z 1584               Effect.catch(() => Effect.succeed(undefined)),
2026-10-23T20:46:35.1840063Z                                       ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1840168Z
2026-10-23T20:46:35.1840511Z 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-23T20:46:35.1840848Z
2026-10-23T20:46:35.1840931Z 3194                 admissionAbortController: new AbortController(),
2026-10-23T20:46:35.1841120Z                                                ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1841224Z
2026-10-23T20:46:35.1853068Z 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-23T20:46:35.1853569Z
2026-10-23T20:46:35.1853667Z 3354               turn.admissionAbortController = new AbortController();
2026-10-23T20:46:35.1853864Z                                                    ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1853973Z
2026-10-23T20:46:35.1854332Z 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-23T20:46:35.1854672Z
2026-10-23T20:46:35.1854736Z 158     connect: ({ baseUrl, password }) => {
2026-10-23T20:46:35.1854885Z         ~~~~~~~
2026-10-23T20:46:35.1854953Z
2026-10-23T20:46:35.1855265Z 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-23T20:46:35.1855626Z
2026-10-23T20:46:35.1855683Z 160       withConnection: (use) =>
2026-10-23T20:46:35.1855817Z           ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1855890Z
2026-10-23T20:46:35.1856200Z 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-23T20:46:35.1856552Z
2026-10-23T20:46:35.1856605Z 175     withConnection: (use) =>
2026-10-23T20:46:35.1856742Z         ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1856816Z
2026-10-23T20:46:35.1857040Z src/server/v2/adapter.ts:1544:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1857305Z
2026-10-23T20:46:35.1857435Z 1544           wake.dropped ? Effect.succeed(Option.none()) : Effect.map(dispatch, Option.some),
2026-10-23T20:46:35.1857657Z                               ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1857753Z
2026-10-23T20:46:35.1857981Z src/server/v2/adapter.ts:1544:58 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T20:46:35.1858250Z
2026-10-23T20:46:35.1858372Z 1544           wake.dropped ? Effect.succeed(Option.none()) : Effect.map(dispatch, Option.some),
2026-10-23T20:46:35.1858600Z                                                               ~~~~~~~~~~
2026-10-23T20:46:35.1858714Z
2026-10-23T20:46:35.1859190Z 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-23T20:46:35.1859576Z
2026-10-23T20:46:35.1859687Z 4137     getCapabilities: () => Effect.succeed(OpenCode2ProviderCapabilities),
2026-10-23T20:46:35.1859887Z          ~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1859959Z
2026-10-23T20:46:35.1860308Z 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-23T20:46:35.1860730Z
2026-10-23T20:46:35.1860853Z 4138     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-23T20:46:35.1861063Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1861143Z
2026-10-23T20:46:35.1861145Z
2026-10-23T20:46:35.1861207Z ~/packages/client-runtime$ tsc --noEmit
2026-10-23T20:46:35.1861631Z 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-23T20:46:35.1862002Z
2026-10-23T20:46:35.1862058Z 174       Effect.flatMap((snapshot) =>
2026-10-23T20:46:35.1862309Z           ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1862379Z
2026-10-23T20:46:35.1862622Z 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-23T20:46:35.1862902Z
2026-10-23T20:46:35.1862971Z 1507       }).pipe(Effect.catch(() => Effect.void));
2026-10-23T20:46:35.1863127Z                    ~~~~~~~~~~~~
2026-10-23T20:46:35.1863203Z
2026-10-23T20:46:35.1863524Z 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-23T20:46:35.1863829Z
2026-10-23T20:46:35.1863895Z 1507       }).pipe(Effect.catch(() => Effect.void));
2026-10-23T20:46:35.1864042Z                    ~~~~~~~~~~~~
2026-10-23T20:46:35.1864121Z
2026-10-23T20:46:35.1864479Z 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-23T20:46:35.1864874Z
2026-10-23T20:46:35.1864936Z 1588             Effect.catchCause((cause) =>
2026-10-23T20:46:35.1865084Z                  ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1865164Z
2026-10-23T20:46:35.1865166Z
2026-10-23T20:46:35.1865428Z src/server/AcpRegistryRuntimeCoordinator.ts:154:52 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T20:46:35.1865725Z
2026-10-23T20:46:35.1865867Z 154         return yield* Effect.raceFirst(effect.pipe(Effect.map(Option.some)), foregroundStarted);
2026-10-23T20:46:35.1866102Z                                                        ~~~~~~~~~~
2026-10-23T20:46:35.1866205Z
2026-10-23T20:46:35.1866538Z 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-23T20:46:35.1866912Z
2026-10-23T20:46:35.1866962Z 1301         Effect.catch((error) =>
2026-10-23T20:46:35.1867096Z              ~~~~~~~~~~~~
2026-10-23T20:46:35.1867168Z
2026-10-23T20:46:35.1867461Z 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-23T20:46:35.1867794Z
2026-10-23T20:46:35.1867848Z 146             Option.isSome(result)
2026-10-23T20:46:35.1867984Z                 ~~~~~~~~~~~~~
2026-10-23T20:46:35.1868061Z
2026-10-23T20:46:35.1868319Z 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-23T20:46:35.1868617Z
2026-10-23T20:46:35.1868716Z 640       enrichSnapshot: ({ snapshot, getSnapshot, publishSnapshot }) => {
2026-10-23T20:46:35.1868906Z           ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1868976Z
2026-10-23T20:46:35.1869188Z src/server/driver.ts:650:51 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T20:46:35.1869443Z
2026-10-23T20:46:35.1869544Z 650             : enrichProviderCached(snapshot).pipe(Effect.map(Option.some))
2026-10-23T20:46:35.1869743Z                                                       ~~~~~~~~~~
2026-10-23T20:46:35.1869846Z
2026-10-23T20:46:35.1869848Z
2026-10-23T20:46:35.1870082Z src/authorization/remote.test.ts:232:25 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1870353Z
2026-10-23T20:46:35.1870499Z 232               identity: Effect.succeed(Option.some({ accountId: "user_connect" })),
2026-10-23T20:46:35.1870697Z                             ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1870848Z
2026-10-23T20:46:35.1871075Z src/authorization/remote.test.ts:237:17 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1871343Z
2026-10-23T20:46:35.1871418Z 237             id: Effect.succeed(Option.some("device-1")),
2026-10-23T20:46:35.1871577Z                     ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1871658Z
2026-10-23T20:46:35.1872038Z 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-23T20:46:35.1872418Z
2026-10-23T20:46:35.1872473Z 553     authorizeDpop: (input) =>
2026-10-23T20:46:35.1872603Z         ~~~~~~~~~~~~~
2026-10-23T20:46:35.1872672Z
2026-10-23T20:46:35.1873014Z 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-23T20:46:35.1873394Z
2026-10-23T20:46:35.1873452Z 555     authorizeDpopHttp: (input) =>
2026-10-23T20:46:35.1873589Z         ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1873658Z
2026-10-23T20:46:35.1873986Z 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-23T20:46:35.1874351Z
2026-10-23T20:46:35.1874400Z 138       get: (entry) =>
2026-10-23T20:46:35.1874510Z           ~~~
2026-10-23T20:46:35.1874576Z
2026-10-23T20:46:35.1874920Z 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-23T20:46:35.1875297Z
2026-10-23T20:46:35.1875352Z 143       set: (entry, permission) => {
2026-10-23T20:46:35.1875486Z           ~~~
2026-10-23T20:46:35.1875543Z
2026-10-23T20:46:35.1875885Z 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-23T20:46:35.1876269Z
2026-10-23T20:46:35.1876323Z 159       forget: (environmentId) =>
2026-10-23T20:46:35.1876453Z           ~~~~~~
2026-10-23T20:46:35.1876515Z
2026-10-23T20:46:35.1876835Z 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-23T20:46:35.1877195Z
2026-10-23T20:46:35.1877248Z 298     registerPairing: (input) =>
2026-10-23T20:46:35.1877381Z         ~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1877449Z
2026-10-23T20:46:35.1877755Z 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-23T20:46:35.1878103Z
2026-10-23T20:46:35.1878154Z 304     registerSsh: (input) =>
2026-10-23T20:46:35.1878275Z         ~~~~~~~~~~~
2026-10-23T20:46:35.1878339Z
2026-10-23T20:46:35.1878651Z 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-23T20:46:35.1879004Z
2026-10-23T20:46:35.1879057Z 309     updateBearer: (input) =>
2026-10-23T20:46:35.1879186Z         ~~~~~~~~~~~~
2026-10-23T20:46:35.1879250Z
2026-10-23T20:46:35.1879525Z 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-23T20:46:35.1879911Z
2026-10-23T20:46:35.1879973Z 1392             ? Effect.succeed(undefined)
2026-10-23T20:46:35.1880117Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1880208Z
2026-10-23T20:46:35.1880520Z 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-23T20:46:35.1880831Z
2026-10-23T20:46:35.1880888Z 1476             ? Effect.succeed(undefined)
2026-10-23T20:46:35.1881030Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1881116Z
2026-10-23T20:46:35.1881439Z 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-23T20:46:35.1881753Z
2026-10-23T20:46:35.1881819Z 1489                     : Effect.succeed(undefined),
2026-10-23T20:46:35.1881976Z                            ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1882074Z
2026-10-23T20:46:35.1882328Z src/platform/orchestrationCache.test.ts:104:15 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T20:46:35.1882620Z
2026-10-23T20:46:35.1882676Z 104       }).pipe(Effect.map(Option.some));
2026-10-23T20:46:35.1882818Z                   ~~~~~~~~~~
2026-10-23T20:46:35.1882895Z
2026-10-23T20:46:35.1883278Z 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-23T20:46:35.1883699Z
2026-10-23T20:46:35.1883791Z 72       load: (prepared: PreparedConnection, threadId: ThreadId) => {
2026-10-23T20:46:35.1883964Z          ~~~~
2026-10-23T20:46:35.1884026Z
2026-10-23T20:46:35.1884323Z 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-23T20:46:35.1884659Z
2026-10-23T20:46:35.1884760Z 56             Effect.catch(() => Effect.succeed(Option.none<AuthSessionState>())),
2026-10-23T20:46:35.1884951Z                ~~~~~~~~~~~~
2026-10-23T20:46:35.1885028Z
2026-10-23T20:46:35.1885367Z 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-23T20:46:35.1885755Z
2026-10-23T20:46:35.1885810Z 62             return yield* Effect.fail(
2026-10-23T20:46:35.1885947Z                       ~~~~~
2026-10-23T20:46:35.1886022Z
2026-10-23T20:46:35.1886323Z 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-23T20:46:35.1886661Z
2026-10-23T20:46:35.1886757Z 57     execute: (target: OutdatedServerUpdateTarget, atomRegistry) => {
2026-10-23T20:46:35.1886935Z        ~~~~~~~
2026-10-23T20:46:35.1886996Z
2026-10-23T20:46:35.1887317Z 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-23T20:46:35.1887677Z
2026-10-23T20:46:35.1887732Z 90       load: (prepared, input) =>
2026-10-23T20:46:35.1887861Z          ~~~~
2026-10-23T20:46:35.1887919Z
2026-10-23T20:46:35.1888330Z 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-23T20:46:35.1888775Z
2026-10-23T20:46:35.1888945Z 34       return yield* Schema.decodeUnknownEffect(codec)(stored.value).pipe(
2026-10-23T20:46:35.1889142Z                               ~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1889240Z
2026-10-23T20:46:35.1889472Z src/state/queryPersistence.ts:35:9 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T20:46:35.1889742Z
2026-10-23T20:46:35.1889796Z 35         Effect.map(Option.some),
2026-10-23T20:46:35.1889927Z            ~~~~~~~~~~
2026-10-23T20:46:35.1889993Z
2026-10-23T20:46:35.1890309Z 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-23T20:46:35.1890655Z
2026-10-23T20:46:35.1890716Z 680     execute: (target, atomRegistry) => {
2026-10-23T20:46:35.1890853Z         ~~~~~~~
2026-10-23T20:46:35.1890915Z
2026-10-23T20:46:35.1891252Z 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-23T20:46:35.1891630Z
2026-10-23T20:46:35.1891689Z 1125           Effect.flatMap((summary) =>
2026-10-23T20:46:35.1891831Z                ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1891906Z
2026-10-23T20:46:35.1892131Z src/state/shell-sync.test.ts:90:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1892396Z
2026-10-23T20:46:35.1892471Z 90         loadShell: () => Effect.succeed(Option.none()),
2026-10-23T20:46:35.1892635Z                             ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1892722Z
2026-10-23T20:46:35.1892944Z src/state/shell-sync.test.ts:96:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1893204Z
2026-10-23T20:46:35.1893283Z 96         loadThread: () => Effect.succeed(Option.none()),
2026-10-23T20:46:35.1893450Z                              ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1893536Z
2026-10-23T20:46:35.1893757Z src/state/shell-sync.test.ts:99:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1894020Z
2026-10-23T20:46:35.1894103Z 99         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-23T20:46:35.1894279Z                                    ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1894373Z
2026-10-23T20:46:35.1894599Z src/state/shell-sync.test.ts:101:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1894863Z
2026-10-23T20:46:35.1894939Z 101         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-23T20:46:35.1895109Z                                ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1895199Z
2026-10-23T20:46:35.1895424Z src/state/shell-sync.test.ts:108:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1895687Z
2026-10-23T20:46:35.1895755Z 108         load: () => Effect.succeed(Option.none()),
2026-10-23T20:46:35.1895910Z                         ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1895995Z
2026-10-23T20:46:35.1896218Z src/state/shell-sync.test.ts:229:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1896479Z
2026-10-23T20:46:35.1896554Z 229         loadShell: () => Effect.succeed(Option.none()),
2026-10-23T20:46:35.1896719Z                              ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1896806Z
2026-10-23T20:46:35.1897030Z src/state/shell-sync.test.ts:238:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1897291Z
2026-10-23T20:46:35.1897429Z 238         loadThread: () => Effect.succeed(Option.none()),
2026-10-23T20:46:35.1897592Z                               ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1897682Z
2026-10-23T20:46:35.1897905Z src/state/shell-sync.test.ts:241:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1898166Z
2026-10-23T20:46:35.1898249Z 241         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-23T20:46:35.1898430Z                                     ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1898526Z
2026-10-23T20:46:35.1898917Z src/state/shell-sync.test.ts:243:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1899184Z
2026-10-23T20:46:35.1899261Z 243         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-23T20:46:35.1899427Z                                ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1899523Z
2026-10-23T20:46:35.1899746Z src/state/shell-sync.test.ts:250:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1900011Z
2026-10-23T20:46:35.1900076Z 250         load: () => Effect.succeed(Option.none()),
2026-10-23T20:46:35.1900231Z                         ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1900234Z
2026-10-23T20:46:35.1900482Z src/state/shell-sync.test.ts:349:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1900485Z
2026-10-23T20:46:35.1900561Z 349         loadShell: () => Effect.succeed(Option.none()),
2026-10-23T20:46:35.1900613Z                              ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1900615Z
2026-10-23T20:46:35.1900833Z src/state/shell-sync.test.ts:355:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1900838Z
2026-10-23T20:46:35.1900913Z 355         loadThread: () => Effect.succeed(Option.none()),
2026-10-23T20:46:35.1900964Z                               ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1900967Z
2026-10-23T20:46:35.1901185Z src/state/shell-sync.test.ts:358:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1901188Z
2026-10-23T20:46:35.1901271Z 358         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-23T20:46:35.1901325Z                                     ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1901328Z
2026-10-23T20:46:35.1901548Z src/state/shell-sync.test.ts:360:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1901550Z
2026-10-23T20:46:35.1901625Z 360         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-23T20:46:35.1901674Z                                ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1901679Z
2026-10-23T20:46:35.1901897Z src/state/shell-sync.test.ts:367:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1901899Z
2026-10-23T20:46:35.1901966Z 367         load: () => Effect.succeed(Option.none()),
2026-10-23T20:46:35.1902015Z                         ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1902018Z
2026-10-23T20:46:35.1902236Z src/state/shell-sync.test.ts:446:26 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1902239Z
2026-10-23T20:46:35.1902330Z 446         loadShell: () => Effect.succeed(Option.some(cachedSnapshot)),
2026-10-23T20:46:35.1902382Z                              ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1902384Z
2026-10-23T20:46:35.1902602Z src/state/shell-sync.test.ts:448:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1902674Z
2026-10-23T20:46:35.1902748Z 448         loadThread: () => Effect.succeed(Option.none()),
2026-10-23T20:46:35.1902797Z                               ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1902800Z
2026-10-23T20:46:35.1903020Z src/state/shell-sync.test.ts:451:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1903023Z
2026-10-23T20:46:35.1903104Z 451         loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-23T20:46:35.1903157Z                                     ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1903160Z
2026-10-23T20:46:35.1903424Z src/state/shell-sync.test.ts:453:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1903426Z
2026-10-23T20:46:35.1903500Z 453         loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-23T20:46:35.1903552Z                                ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1903556Z
2026-10-23T20:46:35.1903775Z src/state/shell-sync.test.ts:460:21 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1903778Z
2026-10-23T20:46:35.1903859Z 460         load: () => Effect.succeed(Option.some(httpSnapshot)),
2026-10-23T20:46:35.1903908Z                         ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1903910Z
2026-10-23T20:46:35.1904217Z 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-23T20:46:35.1904220Z
2026-10-23T20:46:35.1904287Z 98       load: (prepared: PreparedConnection) =>
2026-10-23T20:46:35.1904332Z          ~~~~
2026-10-23T20:46:35.1904334Z
2026-10-23T20:46:35.1904708Z 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-23T20:46:35.1904712Z
2026-10-23T20:46:35.1904783Z 47       register: (environmentId, threadId, handler) =>
2026-10-23T20:46:35.1904825Z          ~~~~~~~~
2026-10-23T20:46:35.1904827Z
2026-10-23T20:46:35.1905165Z 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-23T20:46:35.1905167Z
2026-10-23T20:46:35.1905223Z 59       unregister: (registration) =>
2026-10-23T20:46:35.1905270Z          ~~~~~~~~~~
2026-10-23T20:46:35.1905272Z
2026-10-23T20:46:35.1905648Z 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-23T20:46:35.1905655Z
2026-10-23T20:46:35.1905737Z 74       loadEarlier: (environmentId, threadId, throughEntryId) =>
2026-10-23T20:46:35.1905783Z          ~~~~~~~~~~~
2026-10-23T20:46:35.1905785Z
2026-10-23T20:46:35.1906015Z src/state/threads-sync.test.ts:1006:29 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1906017Z
2026-10-23T20:46:35.1906103Z 1006             : { loadCached: Effect.succeed(Option.some(saved!)) },
2026-10-23T20:46:35.1906155Z                                  ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1906157Z
2026-10-23T20:46:35.1906424Z 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-23T20:46:35.1906427Z
2026-10-23T20:46:35.1906515Z 447       execute: (input: RunVcsStackedActionInput, registry) => {
2026-10-23T20:46:35.1906614Z           ~~~~~~~
2026-10-23T20:46:35.1906616Z
2026-10-23T20:46:35.1906618Z
2026-10-23T20:46:35.1906674Z ~/apps/mobile$ tsc --noEmit
2026-10-23T20:46:35.1906723Z ~/infra/relay$ tsc --noEmit
2026-10-23T20:46:35.1906772Z ~/apps/web$ tsc --noEmit
2026-10-23T20:46:35.1906820Z Result (22 files):
2026-10-23T20:46:35.1906865Z - 0 errors
2026-10-23T20:46:35.1906907Z - 0 warnings
2026-10-23T20:46:35.1906950Z - 0 hints
2026-10-23T20:46:35.1906952Z
2026-10-23T20:46:35.1906955Z
2026-10-23T20:46:35.1907007Z ~/apps/desktop$ tsc --noEmit
2026-10-23T20:46:35.1907374Z 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-23T20:46:35.1907377Z
2026-10-23T20:46:35.1907424Z 220           send: (body) =>
2026-10-23T20:46:35.1907470Z               ~~~~
2026-10-23T20:46:35.1907472Z
2026-10-23T20:46:35.1907780Z 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-23T20:46:35.1907783Z
2026-10-23T20:46:35.1907836Z 12       onFailure: (error) =>
2026-10-23T20:46:35.1907877Z          ~~~~~~~~~
2026-10-23T20:46:35.1907882Z
2026-10-23T20:46:35.1908208Z 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-23T20:46:35.1908211Z
2026-10-23T20:46:35.1908269Z 64     pauseUntil: (untilMillis) =>
2026-10-23T20:46:35.1908314Z        ~~~~~~~~~~
2026-10-23T20:46:35.1908316Z
2026-10-23T20:46:35.1908559Z 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-23T20:46:35.1908563Z
2026-10-23T20:46:35.1908609Z 198         onNone: () =>
2026-10-23T20:46:35.1908654Z             ~~~~~~
2026-10-23T20:46:35.1908656Z
2026-10-23T20:46:35.1908944Z 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-23T20:46:35.1908946Z
2026-10-23T20:46:35.1909057Z 92   fileResponse: () => Effect.die("Relay API does not serve filesystem responses"),
2026-10-23T20:46:35.1909101Z      ~~~~~~~~~~~~
2026-10-23T20:46:35.1909103Z
2026-10-23T20:46:35.1909396Z 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-23T20:46:35.1909399Z
2026-10-23T20:46:35.1909508Z 93   fileWebResponse: () => Effect.die("Relay API does not serve file responses"),
2026-10-23T20:46:35.1909554Z      ~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1909558Z
2026-10-23T20:46:35.1909820Z 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-23T20:46:35.1909823Z
2026-10-23T20:46:35.1909888Z 242       hold: ({ endpointKey, baseUrl, hook }) =>
2026-10-23T20:46:35.1909930Z           ~~~~
2026-10-23T20:46:35.1909932Z
2026-10-23T20:46:35.1910191Z 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-23T20:46:35.1910195Z
2026-10-23T20:46:35.1910257Z 244       wake: ({ endpointKey, baseUrl }) =>
2026-10-23T20:46:35.1910301Z           ~~~~
2026-10-23T20:46:35.1910303Z
2026-10-23T20:46:35.1910597Z 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-23T20:46:35.1910653Z
2026-10-23T20:46:35.1910706Z 246       clear: ({ endpointKey }) =>
2026-10-23T20:46:35.1910750Z           ~~~~~
2026-10-23T20:46:35.1910752Z
2026-10-23T20:46:35.1911072Z 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-23T20:46:35.1911074Z
2026-10-23T20:46:35.1911125Z 275               send: (body) =>
2026-10-23T20:46:35.1911168Z                   ~~~~
2026-10-23T20:46:35.1911170Z
2026-10-23T20:46:35.1911173Z
2026-10-23T20:46:35.1911220Z
2026-10-23T20:46:35.1911535Z 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-23T20:46:35.1911537Z
2026-10-23T20:46:35.1911640Z 389     complete: (response) => Effect.sync(() => broker.complete(response)),
2026-10-23T20:46:35.1911687Z         ~~~~~~~~
2026-10-23T20:46:35.1911689Z
2026-10-23T20:46:35.1911917Z src/app/DesktopClerk.test.ts:300:27 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1911919Z
2026-10-23T20:46:35.1912007Z 300       currentMainOrFirst: Effect.succeed(Option.some(window)),
2026-10-23T20:46:35.1912058Z                               ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1912061Z
2026-10-23T20:46:35.1912344Z 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-23T20:46:35.1912346Z
2026-10-23T20:46:35.1912397Z 459     onSome: (logFile) =>
2026-10-23T20:46:35.1912441Z         ~~~~~~
2026-10-23T20:46:35.1912443Z
2026-10-23T20:46:35.1912773Z 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-23T20:46:35.1912781Z
2026-10-23T20:46:35.1912838Z 589       forInstance: (id) => makeForId(id),
2026-10-23T20:46:35.1912883Z           ~~~~~~~~~~~
2026-10-23T20:46:35.1912885Z
2026-10-23T20:46:35.1913116Z src/app/DesktopWebLinks.test.ts:29:31 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1913119Z
2026-10-23T20:46:35.1913208Z 29           currentMainOrFirst: Effect.succeed(Option.some(window)),
2026-10-23T20:46:35.1913260Z                                  ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1913263Z
2026-10-23T20:46:35.1913545Z 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-23T20:46:35.1913549Z
2026-10-23T20:46:35.1913597Z 72     receive: (url) =>
2026-10-23T20:46:35.1913641Z        ~~~~~~~
2026-10-23T20:46:35.1913644Z
2026-10-23T20:46:35.1913948Z 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-23T20:46:35.1913951Z
2026-10-23T20:46:35.1914003Z 77     setRendererReady: (ready) =>
2026-10-23T20:46:35.1914049Z        ~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1914051Z
2026-10-23T20:46:35.1914337Z 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-23T20:46:35.1914340Z
2026-10-23T20:46:35.1914389Z 1062       onSome: (run) =>
2026-10-23T20:46:35.1914430Z            ~~~~~~
2026-10-23T20:46:35.1914432Z
2026-10-23T20:46:35.1914725Z 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-23T20:46:35.1914781Z
2026-10-23T20:46:35.1914828Z 307       get: (id) =>
2026-10-23T20:46:35.1914872Z           ~~~
2026-10-23T20:46:35.1914874Z
2026-10-23T20:46:35.1915169Z 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-23T20:46:35.1915171Z
2026-10-23T20:46:35.1915301Z 342         get: (id) => Effect.succeed(Option.fromNullishOr(byId.get(id))),
2026-10-23T20:46:35.1915346Z             ~~~
2026-10-23T20:46:35.1915348Z
2026-10-23T20:46:35.1915647Z 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-23T20:46:35.1915652Z
2026-10-23T20:46:35.1915780Z 345         register: () => Effect.die("DesktopBackendPool.layerTest does not support register"),
2026-10-23T20:46:35.1915824Z             ~~~~~~~~
2026-10-23T20:46:35.1915827Z
2026-10-23T20:46:35.1916126Z 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-23T20:46:35.1916128Z
2026-10-23T20:46:35.1916262Z 346         unregister: () => Effect.die("DesktopBackendPool.layerTest does not support unregister"),
2026-10-23T20:46:35.1916308Z             ~~~~~~~~~~
2026-10-23T20:46:35.1916311Z
2026-10-23T20:46:35.1916584Z 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-23T20:46:35.1916586Z
2026-10-23T20:46:35.1916632Z 145   exit: (code) =>
2026-10-23T20:46:35.1916675Z       ~~~~
2026-10-23T20:46:35.1916677Z
2026-10-23T20:46:35.1916962Z 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-23T20:46:35.1916964Z
2026-10-23T20:46:35.1917016Z 149   relaunch: (options) =>
2026-10-23T20:46:35.1917060Z       ~~~~~~~~
2026-10-23T20:46:35.1917062Z
2026-10-23T20:46:35.1917348Z 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-23T20:46:35.1917353Z
2026-10-23T20:46:35.1917404Z 153   setPath: (name, path) =>
2026-10-23T20:46:35.1917448Z       ~~~~~~~
2026-10-23T20:46:35.1917450Z
2026-10-23T20:46:35.1917730Z 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-23T20:46:35.1917734Z
2026-10-23T20:46:35.1917782Z 157   setName: (name) =>
2026-10-23T20:46:35.1917822Z       ~~~~~~~
2026-10-23T20:46:35.1917824Z
2026-10-23T20:46:35.1918134Z 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-23T20:46:35.1918137Z
2026-10-23T20:46:35.1918199Z 161   setAboutPanelOptions: (options) =>
2026-10-23T20:46:35.1918247Z       ~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1918251Z
2026-10-23T20:46:35.1918544Z 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-23T20:46:35.1918546Z
2026-10-23T20:46:35.1918600Z 165   setAppUserModelId: (id) =>
2026-10-23T20:46:35.1918700Z       ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1918702Z
2026-10-23T20:46:35.1919044Z 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-23T20:46:35.1919047Z
2026-10-23T20:46:35.1919133Z 170   setAsDefaultProtocolClient: (protocol, path, args) =>
2026-10-23T20:46:35.1919179Z       ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1919185Z
2026-10-23T20:46:35.1919533Z 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-23T20:46:35.1919535Z
2026-10-23T20:46:35.1919595Z 177   setDesktopName: (desktopName) =>
2026-10-23T20:46:35.1919641Z       ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1919643Z
2026-10-23T20:46:35.1919933Z 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-23T20:46:35.1919936Z
2026-10-23T20:46:35.1919986Z 184   setDockIcon: (iconPath) =>
2026-10-23T20:46:35.1920029Z       ~~~~~~~~~~~
2026-10-23T20:46:35.1920031Z
2026-10-23T20:46:35.1920360Z 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-23T20:46:35.1920363Z
2026-10-23T20:46:35.1920479Z 188   appendCommandLineSwitch: (switchName, value) =>
2026-10-23T20:46:35.1920528Z       ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1920530Z
2026-10-23T20:46:35.1920839Z 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-23T20:46:35.1920846Z
2026-10-23T20:46:35.1920906Z 196   onBeforeQuitForUpdate: (listener) =>
2026-10-23T20:46:35.1920953Z       ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1920955Z
2026-10-23T20:46:35.1921272Z 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-23T20:46:35.1921276Z
2026-10-23T20:46:35.1921342Z 206   removeCommandLineSwitch: (switchName) =>
2026-10-23T20:46:35.1921386Z       ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1921390Z
2026-10-23T20:46:35.1921711Z 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-23T20:46:35.1921713Z
2026-10-23T20:46:35.1921771Z 169   showMessageBox: (options, owner) =>
2026-10-23T20:46:35.1921817Z       ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1921820Z
2026-10-23T20:46:35.1922137Z 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-23T20:46:35.1922139Z
2026-10-23T20:46:35.1922193Z 185   showErrorBox: (title, content) =>
2026-10-23T20:46:35.1922238Z       ~~~~~~~~~~~~
2026-10-23T20:46:35.1922241Z
2026-10-23T20:46:35.1922556Z 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-23T20:46:35.1922559Z
2026-10-23T20:46:35.1922617Z 193     setApplicationMenu: (template) =>
2026-10-23T20:46:35.1922661Z         ~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1922666Z
2026-10-23T20:46:35.1922960Z 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-23T20:46:35.1923010Z
2026-10-23T20:46:35.1923066Z 207     popupTemplate: (input) =>
2026-10-23T20:46:35.1923111Z         ~~~~~~~~~~~~~
2026-10-23T20:46:35.1923113Z
2026-10-23T20:46:35.1923411Z 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-23T20:46:35.1923414Z
2026-10-23T20:46:35.1923504Z 225     showContextMenu: (input) =>
2026-10-23T20:46:35.1923551Z         ~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1923553Z
2026-10-23T20:46:35.1924079Z 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-23T20:46:35.1924084Z
2026-10-23T20:46:35.1924157Z 82   getSystemIdleState: (idleThresholdSeconds) =>
2026-10-23T20:46:35.1924202Z      ~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1924205Z
2026-10-23T20:46:35.1924522Z 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-23T20:46:35.1924528Z
2026-10-23T20:46:35.1924578Z 77     encryptString: (value) =>
2026-10-23T20:46:35.1924622Z        ~~~~~~~~~~~~~
2026-10-23T20:46:35.1924625Z
2026-10-23T20:46:35.1924944Z 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-23T20:46:35.1924947Z
2026-10-23T20:46:35.1924998Z 82     decryptString: (value) =>
2026-10-23T20:46:35.1925039Z        ~~~~~~~~~~~~~
2026-10-23T20:46:35.1925043Z
2026-10-23T20:46:35.1925338Z 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-23T20:46:35.1925340Z
2026-10-23T20:46:35.1925393Z 68   openExternal: (rawUrl) =>
2026-10-23T20:46:35.1925437Z      ~~~~~~~~~~~~
2026-10-23T20:46:35.1925440Z
2026-10-23T20:46:35.1925749Z 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-23T20:46:35.1925752Z
2026-10-23T20:46:35.1925806Z 79   openSystemSettings: (pane) =>
2026-10-23T20:46:35.1925853Z      ~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1925856Z
2026-10-23T20:46:35.1926141Z 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-23T20:46:35.1926145Z
2026-10-23T20:46:35.1926196Z 86   copyText: (text) =>
2026-10-23T20:46:35.1926237Z      ~~~~~~~~
2026-10-23T20:46:35.1926239Z
2026-10-23T20:46:35.1926525Z 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-23T20:46:35.1926528Z
2026-10-23T20:46:35.1926577Z 34   setSource: (theme) =>
2026-10-23T20:46:35.1926623Z      ~~~~~~~~~
2026-10-23T20:46:35.1926625Z
2026-10-23T20:46:35.1926920Z 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-23T20:46:35.1926922Z
2026-10-23T20:46:35.1926972Z 41   onUpdated: (listener) =>
2026-10-23T20:46:35.1927015Z      ~~~~~~~~~
2026-10-23T20:46:35.1927073Z
2026-10-23T20:46:35.1927378Z 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-23T20:46:35.1927380Z
2026-10-23T20:46:35.1927432Z 85   setFeedURL: (options) =>
2026-10-23T20:46:35.1927474Z      ~~~~~~~~~~
2026-10-23T20:46:35.1927479Z
2026-10-23T20:46:35.1927826Z 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-23T20:46:35.1927829Z
2026-10-23T20:46:35.1927883Z 90   setAutoDownload: (value) =>
2026-10-23T20:46:35.1927928Z      ~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1927930Z
2026-10-23T20:46:35.1928258Z 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-23T20:46:35.1928262Z
2026-10-23T20:46:35.1928319Z 95   setAutoInstallOnAppQuit: (value) =>
2026-10-23T20:46:35.1928369Z      ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1928371Z
2026-10-23T20:46:35.1928675Z 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-23T20:46:35.1928678Z
2026-10-23T20:46:35.1928731Z 100   setChannel: (channel) =>
2026-10-23T20:46:35.1928776Z       ~~~~~~~~~~
2026-10-23T20:46:35.1928779Z
2026-10-23T20:46:35.1929094Z 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-23T20:46:35.1929100Z
2026-10-23T20:46:35.1929155Z 105   setAllowPrerelease: (value) =>
2026-10-23T20:46:35.1929203Z       ~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1929205Z
2026-10-23T20:46:35.1929519Z 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-23T20:46:35.1929521Z
2026-10-23T20:46:35.1929575Z 111   setAllowDowngrade: (value) =>
2026-10-23T20:46:35.1929618Z       ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1929620Z
2026-10-23T20:46:35.1929935Z 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-23T20:46:35.1929937Z
2026-10-23T20:46:35.1929990Z 116   setFullChangelog: (value) =>
2026-10-23T20:46:35.1930034Z       ~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1930036Z
2026-10-23T20:46:35.1930376Z 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-23T20:46:35.1930380Z
2026-10-23T20:46:35.1930578Z 121   setDisableDifferentialDownload: (value) =>
2026-10-23T20:46:35.1930632Z       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1930634Z
2026-10-23T20:46:35.1930937Z 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-23T20:46:35.1930941Z
2026-10-23T20:46:35.1931018Z 140   quitAndInstall: ({ isSilent, isForceRunAfter }) =>
2026-10-23T20:46:35.1931059Z       ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1931064Z
2026-10-23T20:46:35.1931368Z 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-23T20:46:35.1931419Z
2026-10-23T20:46:35.1931473Z 154   on: (eventName, listener) => {
2026-10-23T20:46:35.1931516Z       ~~
2026-10-23T20:46:35.1931518Z
2026-10-23T20:46:35.1931809Z 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-23T20:46:35.1931812Z
2026-10-23T20:46:35.1931860Z 211     create: (options) => {
2026-10-23T20:46:35.1931903Z         ~~~~~~
2026-10-23T20:46:35.1931905Z
2026-10-23T20:46:35.1932236Z 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-23T20:46:35.1932239Z
2026-10-23T20:46:35.1932335Z 243     setMain: (window) => Ref.set(mainWindowRef, Option.some(window)),
2026-10-23T20:46:35.1932381Z         ~~~~~~~
2026-10-23T20:46:35.1932383Z
2026-10-23T20:46:35.1932677Z 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-23T20:46:35.1932679Z
2026-10-23T20:46:35.1932729Z 244     clearMain: (window) =>
2026-10-23T20:46:35.1932774Z         ~~~~~~~~~
2026-10-23T20:46:35.1932776Z
2026-10-23T20:46:35.1933083Z 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-23T20:46:35.1933086Z
2026-10-23T20:46:35.1933139Z 254     prepareReveal: (window) =>
2026-10-23T20:46:35.1933182Z         ~~~~~~~~~~~~~
2026-10-23T20:46:35.1933184Z
2026-10-23T20:46:35.1933476Z 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-23T20:46:35.1933480Z
2026-10-23T20:46:35.1933530Z 264     reveal: (window) =>
2026-10-23T20:46:35.1933572Z         ~~~~~~
2026-10-23T20:46:35.1933574Z
2026-10-23T20:46:35.1933926Z 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-23T20:46:35.1933932Z
2026-10-23T20:46:35.1934004Z 526     setMainWindowBounds: (bounds, isMaximized) =>
2026-10-23T20:46:35.1934052Z         ~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1934054Z
2026-10-23T20:46:35.1934389Z 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-23T20:46:35.1934392Z
2026-10-23T20:46:35.1934453Z 538     setServerExposureMode: (mode) =>
2026-10-23T20:46:35.1934498Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1934500Z
2026-10-23T20:46:35.1934827Z 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-23T20:46:35.1934830Z
2026-10-23T20:46:35.1934886Z 542     setTailscaleServe: (input) =>
2026-10-23T20:46:35.1934932Z         ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1934934Z
2026-10-23T20:46:35.1935262Z 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-23T20:46:35.1935265Z
2026-10-23T20:46:35.1935318Z 546     setUpdateChannel: (channel) =>
2026-10-23T20:46:35.1935366Z         ~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1935420Z
2026-10-23T20:46:35.1935757Z 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-23T20:46:35.1935760Z
2026-10-23T20:46:35.1935820Z 550     setWslBackendEnabled: (enabled) =>
2026-10-23T20:46:35.1935868Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1935873Z
2026-10-23T20:46:35.1936240Z 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-23T20:46:35.1936243Z
2026-10-23T20:46:35.1936298Z 554     setWslDistro: (distro) =>
2026-10-23T20:46:35.1936343Z         ~~~~~~~~~~~~
2026-10-23T20:46:35.1936345Z
2026-10-23T20:46:35.1936660Z 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-23T20:46:35.1936664Z
2026-10-23T20:46:35.1936716Z 560     setWslOnly: (enabled) =>
2026-10-23T20:46:35.1936757Z         ~~~~~~~~~~
2026-10-23T20:46:35.1936760Z
2026-10-23T20:46:35.1937108Z 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-23T20:46:35.1937110Z
2026-10-23T20:46:35.1937178Z 564     setLocalEnvironmentEnabled: (enabled) =>
2026-10-23T20:46:35.1937226Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1937228Z
2026-10-23T20:46:35.1937575Z 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-23T20:46:35.1937583Z
2026-10-23T20:46:35.1937655Z 599         setMainWindowBounds: (bounds, isMaximized) =>
2026-10-23T20:46:35.1937704Z             ~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1937706Z
2026-10-23T20:46:35.1938039Z 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-23T20:46:35.1938041Z
2026-10-23T20:46:35.1938103Z 601         setServerExposureMode: (mode) =>
2026-10-23T20:46:35.1938149Z             ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1938159Z
2026-10-23T20:46:35.1938481Z 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-23T20:46:35.1938484Z
2026-10-23T20:46:35.1938616Z 603         setTailscaleServe: (input) => update((settings) => setTailscaleServe(settings, input)),
2026-10-23T20:46:35.1938665Z             ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1938667Z
2026-10-23T20:46:35.1939116Z 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-23T20:46:35.1939119Z
2026-10-23T20:46:35.1939251Z 604         setUpdateChannel: (channel) => update((settings) => setUpdateChannel(settings, channel)),
2026-10-23T20:46:35.1939294Z             ~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1939299Z
2026-10-23T20:46:35.1939637Z 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-23T20:46:35.1939639Z
2026-10-23T20:46:35.1939702Z 605         setWslBackendEnabled: (enabled) =>
2026-10-23T20:46:35.1939832Z             ~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1939834Z
2026-10-23T20:46:35.1940154Z 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-23T20:46:35.1940159Z
2026-10-23T20:46:35.1940274Z 607         setWslDistro: (distro) => update((settings) => setWslDistro(settings, distro)),
2026-10-23T20:46:35.1940322Z             ~~~~~~~~~~~~
2026-10-23T20:46:35.1940324Z
2026-10-23T20:46:35.1940715Z 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-23T20:46:35.1940718Z
2026-10-23T20:46:35.1940831Z 608         setWslOnly: (enabled) => update((settings) => setWslOnly(settings, enabled)),
2026-10-23T20:46:35.1940874Z             ~~~~~~~~~~
2026-10-23T20:46:35.1940881Z
2026-10-23T20:46:35.1941229Z 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-23T20:46:35.1941231Z
2026-10-23T20:46:35.1941303Z 609         setLocalEnvironmentEnabled: (enabled) =>
2026-10-23T20:46:35.1941353Z             ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1941356Z
2026-10-23T20:46:35.1941677Z 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-23T20:46:35.1941680Z
2026-10-23T20:46:35.1941728Z 197     set: (settings) =>
2026-10-23T20:46:35.1941772Z         ~~~
2026-10-23T20:46:35.1941774Z
2026-10-23T20:46:35.1942090Z 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-23T20:46:35.1942094Z
2026-10-23T20:46:35.1942190Z 231         set: (settings) => Ref.set(settingsRef, Option.some(settings)),
2026-10-23T20:46:35.1942234Z             ~~~
2026-10-23T20:46:35.1942237Z
2026-10-23T20:46:35.1942580Z 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-23T20:46:35.1942588Z
2026-10-23T20:46:35.1942661Z 1729     setAnimationDestination: (id, destination) =>
2026-10-23T20:46:35.1942711Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1942713Z
2026-10-23T20:46:35.1943024Z 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-23T20:46:35.1943028Z
2026-10-23T20:46:35.1943082Z 1740     dismissAnimation: (id) =>
2026-10-23T20:46:35.1943126Z          ~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1943129Z
2026-10-23T20:46:35.1943430Z 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-23T20:46:35.1943432Z
2026-10-23T20:46:35.1943483Z 1745     acknowledge: (id) =>
2026-10-23T20:46:35.1943528Z          ~~~~~~~~~~~
2026-10-23T20:46:35.1943531Z
2026-10-23T20:46:35.1943855Z 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-23T20:46:35.1943857Z
2026-10-23T20:46:35.1943907Z 136     discoverHosts: (input) =>
2026-10-23T20:46:35.1944000Z         ~~~~~~~~~~~~~
2026-10-23T20:46:35.1944002Z
2026-10-23T20:46:35.1944322Z 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-23T20:46:35.1944324Z
2026-10-23T20:46:35.1944377Z 141     resolveHost: (alias) =>
2026-10-23T20:46:35.1944419Z         ~~~~~~~~~~~
2026-10-23T20:46:35.1944423Z
2026-10-23T20:46:35.1944820Z 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-23T20:46:35.1944823Z
2026-10-23T20:46:35.1944897Z 146     ensureEnvironment: (target, ensureOptions) =>
2026-10-23T20:46:35.1944943Z         ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1944946Z
2026-10-23T20:46:35.1945286Z 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-23T20:46:35.1945291Z
2026-10-23T20:46:35.1945352Z 154     disconnectEnvironment: (target) =>
2026-10-23T20:46:35.1945396Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1945399Z
2026-10-23T20:46:35.1945733Z 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-23T20:46:35.1945737Z
2026-10-23T20:46:35.1945870Z 1171     installPrepared: (expectedVersion) => installWithExpectedVersion(expectedVersion),
2026-10-23T20:46:35.1945918Z          ~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1945920Z
2026-10-23T20:46:35.1946225Z 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-23T20:46:35.1946231Z
2026-10-23T20:46:35.1946283Z 1101       preWarm: () => Effect.void,
2026-10-23T20:46:35.1946328Z            ~~~~~~~
2026-10-23T20:46:35.1946331Z
2026-10-23T20:46:35.1946684Z 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-23T20:46:35.1946686Z
2026-10-23T20:46:35.1946759Z 1102       windowsToWslPath: (distro, windowsPath) =>
2026-10-23T20:46:35.1946805Z            ~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1946808Z
2026-10-23T20:46:35.1947131Z 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-23T20:46:35.1947136Z
2026-10-23T20:46:35.1947278Z 1104       getUserHome: (distro) => Effect.succeed(stub.getUserHome?.(distro) ?? Option.none<string>()),
2026-10-23T20:46:35.1947322Z            ~~~~~~~~~~~
2026-10-23T20:46:35.1947326Z
2026-10-23T20:46:35.1947646Z 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-23T20:46:35.1947649Z
2026-10-23T20:46:35.1947784Z 1105       getDistroIp: (distro) => Effect.succeed(stub.getDistroIp?.(distro) ?? Option.none<string>()),
2026-10-23T20:46:35.1947830Z            ~~~~~~~~~~~
2026-10-23T20:46:35.1947833Z
2026-10-23T20:46:35.1948172Z 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-23T20:46:35.1948175Z
2026-10-23T20:46:35.1948291Z 1106       prepareRuntime: (distro, archive) =>
2026-10-23T20:46:35.1948337Z            ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1948340Z
2026-10-23T20:46:35.1948680Z 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-23T20:46:35.1948685Z
2026-10-23T20:46:35.1948819Z 1113       pruneRuntimes: (distro, runtimeId) => stub.pruneRuntimes?.(distro, runtimeId) ?? Effect.void,
2026-10-23T20:46:35.1948865Z            ~~~~~~~~~~~~~
2026-10-23T20:46:35.1948909Z
2026-10-23T20:46:35.1949388Z 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-23T20:46:35.1949391Z
2026-10-23T20:46:35.1949459Z 1114       invalidateRuntime: (distro, runtimeId) =>
2026-10-23T20:46:35.1949506Z            ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1949508Z
2026-10-23T20:46:35.1949854Z 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-23T20:46:35.1949857Z
2026-10-23T20:46:35.1949922Z 1116       probeRuntime: (distro, linuxAppRoot) =>
2026-10-23T20:46:35.1949968Z            ~~~~~~~~~~~~
2026-10-23T20:46:35.1949970Z
2026-10-23T20:46:35.1950332Z 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-23T20:46:35.1950334Z
2026-10-23T20:46:35.1950411Z 1120       ensureNodePty: (distro, linuxAppRoot, options) =>
2026-10-23T20:46:35.1950480Z            ~~~~~~~~~~~~~
2026-10-23T20:46:35.1950484Z
2026-10-23T20:46:35.1950797Z 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-23T20:46:35.1950801Z
2026-10-23T20:46:35.1950852Z 1187       preWarm: (distro) =>
2026-10-23T20:46:35.1950896Z            ~~~~~~~
2026-10-23T20:46:35.1950898Z
2026-10-23T20:46:35.1951236Z 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-23T20:46:35.1951238Z
2026-10-23T20:46:35.1951302Z 1192       prepareRuntime: (distro, archive) =>
2026-10-23T20:46:35.1951348Z            ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1951351Z
2026-10-23T20:46:35.1951691Z 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-23T20:46:35.1951695Z
2026-10-23T20:46:35.1951760Z 1196       pruneRuntimes: (distro, runtimeId) =>
2026-10-23T20:46:35.1951802Z            ~~~~~~~~~~~~~
2026-10-23T20:46:35.1951805Z
2026-10-23T20:46:35.1952153Z 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-23T20:46:35.1952155Z
2026-10-23T20:46:35.1952227Z 1200       invalidateRuntime: (distro, runtimeId) =>
2026-10-23T20:46:35.1952275Z            ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1952277Z
2026-10-23T20:46:35.1952626Z 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-23T20:46:35.1952694Z
2026-10-23T20:46:35.1952757Z 1204       probeRuntime: (distro, linuxAppRoot) =>
2026-10-23T20:46:35.1952804Z            ~~~~~~~~~~~~
2026-10-23T20:46:35.1952806Z
2026-10-23T20:46:35.1953163Z 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-23T20:46:35.1953166Z
2026-10-23T20:46:35.1953243Z 1208       ensureNodePty: (distro, linuxAppRoot, options) =>
2026-10-23T20:46:35.1953325Z            ~~~~~~~~~~~~~
2026-10-23T20:46:35.1953331Z
2026-10-23T20:46:35.1953334Z
2026-10-23T20:46:35.1953675Z 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-23T20:46:35.1953680Z
2026-10-23T20:46:35.1953734Z 805     clear: (environmentId) =>
2026-10-23T20:46:35.1953778Z         ~~~~~
2026-10-23T20:46:35.1953780Z
2026-10-23T20:46:35.1954086Z 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-23T20:46:35.1954088Z
2026-10-23T20:46:35.1954176Z 815     observe: ({ environmentId, environmentLabel, method }) =>
2026-10-23T20:46:35.1954217Z         ~~~~~~~
2026-10-23T20:46:35.1954219Z
2026-10-23T20:46:35.1954512Z 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-23T20:46:35.1954514Z
2026-10-23T20:46:35.1954564Z 549     get: (entry) =>
2026-10-23T20:46:35.1954606Z         ~~~
2026-10-23T20:46:35.1954609Z
2026-10-23T20:46:35.1954917Z 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-23T20:46:35.1954922Z
2026-10-23T20:46:35.1954974Z 576     set: (entry, permission) => {
2026-10-23T20:46:35.1955017Z         ~~~
2026-10-23T20:46:35.1955019Z
2026-10-23T20:46:35.1955333Z 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-23T20:46:35.1955335Z
2026-10-23T20:46:35.1955417Z 596     forget: (environmentId) => write(environmentId, null),
2026-10-23T20:46:35.1955458Z         ~~~~~~
2026-10-23T20:46:35.1955460Z
2026-10-23T20:46:35.1955812Z 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-23T20:46:35.1955817Z
2026-10-23T20:46:35.1955877Z 643       register: (registration, routes) =>
2026-10-23T20:46:35.1955920Z           ~~~~~~~~
2026-10-23T20:46:35.1955922Z
2026-10-23T20:46:35.1956280Z 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-23T20:46:35.1956282Z
2026-10-23T20:46:35.1956342Z 647       setRoutes: (environmentId, routes) =>
2026-10-23T20:46:35.1956386Z           ~~~~~~~~~
2026-10-23T20:46:35.1956388Z
2026-10-23T20:46:35.1956726Z 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-23T20:46:35.1956777Z
2026-10-23T20:46:35.1956832Z 651       remove: (environmentId) =>
2026-10-23T20:46:35.1956875Z           ~~~~~~
2026-10-23T20:46:35.1956878Z
2026-10-23T20:46:35.1957238Z 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-23T20:46:35.1957240Z
2026-10-23T20:46:35.1957305Z 655       setEnabled: (environmentId, enabled) =>
2026-10-23T20:46:35.1957349Z           ~~~~~~~~~~
2026-10-23T20:46:35.1957352Z
2026-10-23T20:46:35.1957723Z 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-23T20:46:35.1957726Z
2026-10-23T20:46:35.1957782Z 732       loadShell: (environmentId) =>
2026-10-23T20:46:35.1957826Z           ~~~~~~~~~
2026-10-23T20:46:35.1957829Z
2026-10-23T20:46:35.1958179Z 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-23T20:46:35.1958181Z
2026-10-23T20:46:35.1958243Z 768       loadServerConfig: (environmentId) =>
2026-10-23T20:46:35.1958290Z           ~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1958292Z
2026-10-23T20:46:35.1958641Z 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-23T20:46:35.1958645Z
2026-10-23T20:46:35.1958707Z 802       loadThread: (environmentId, threadId) =>
2026-10-23T20:46:35.1958751Z           ~~~~~~~~~~
2026-10-23T20:46:35.1958753Z
2026-10-23T20:46:35.1959097Z 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-23T20:46:35.1959101Z
2026-10-23T20:46:35.1959162Z 851       loadVcsRefs: (environmentId, cwd) =>
2026-10-23T20:46:35.1959204Z           ~~~~~~~~~~~
2026-10-23T20:46:35.1959206Z
2026-10-23T20:46:35.1959556Z 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-23T20:46:35.1959558Z
2026-10-23T20:46:35.1959621Z 893       removeVcsRefs: (environmentId, cwd) =>
2026-10-23T20:46:35.1959666Z           ~~~~~~~~~~~~~
2026-10-23T20:46:35.1959669Z
2026-10-23T20:46:35.1960010Z 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-23T20:46:35.1960014Z
2026-10-23T20:46:35.1960070Z 899       clearVcsRefs: (environmentId) =>
2026-10-23T20:46:35.1960115Z           ~~~~~~~~~~~~
2026-10-23T20:46:35.1960117Z
2026-10-23T20:46:35.1960501Z 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-23T20:46:35.1960503Z
2026-10-23T20:46:35.1960573Z 905       removeThread: (environmentId, threadId) =>
2026-10-23T20:46:35.1960619Z           ~~~~~~~~~~~~
2026-10-23T20:46:35.1960621Z
2026-10-23T20:46:35.1960949Z 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-23T20:46:35.1961001Z
2026-10-23T20:46:35.1961053Z 911       clear: (environmentId) =>
2026-10-23T20:46:35.1961099Z           ~~~~~
2026-10-23T20:46:35.1961101Z
2026-10-23T20:46:35.1961103Z
2026-10-23T20:46:35.1961156Z ~/apps/server$ tsc --noEmit
2026-10-23T20:46:35.1961413Z 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-23T20:46:35.1961416Z
2026-10-23T20:46:35.1961473Z 941         yield* Effect.sleep("1200 millis")
2026-10-23T20:46:35.1961526Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1961613Z 942           .pipe(
2026-10-23T20:46:35.1961658Z     ~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1961698Z ...
2026-10-23T20:46:35.1961742Z 954           )
2026-10-23T20:46:35.1961786Z     ~~~~~~~~~~~
2026-10-23T20:46:35.1961841Z 955           .pipe(Effect.forkDetach);
2026-10-23T20:46:35.1961892Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1961897Z
2026-10-23T20:46:35.1962211Z 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-23T20:46:35.1962214Z
2026-10-23T20:46:35.1962266Z 1175     logger: (event) => {
2026-10-23T20:46:35.1962310Z          ~~~~~~
2026-10-23T20:46:35.1962312Z
2026-10-23T20:46:35.1962743Z 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-23T20:46:35.1962750Z
2026-10-23T20:46:35.1962858Z 376 const DEFAULT_GROK_SETTINGS = Schema.decodeUnknownSync(GrokSettings)({});
2026-10-23T20:46:35.1962919Z                                          ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1962922Z
2026-10-23T20:46:35.1963222Z 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-23T20:46:35.1963224Z
2026-10-23T20:46:35.1963276Z 1346     getDescriptor: () =>
2026-10-23T20:46:35.1963319Z          ~~~~~~~~~~~~~
2026-10-23T20:46:35.1963321Z
2026-10-23T20:46:35.1963642Z 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-23T20:46:35.1963646Z
2026-10-23T20:46:35.1963697Z 55     getDescriptor: () =>
2026-10-23T20:46:35.1963741Z        ~~~~~~~~~~~~~
2026-10-23T20:46:35.1963743Z
2026-10-23T20:46:35.1964075Z 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-23T20:46:35.1964079Z
2026-10-23T20:46:35.1964132Z 540       authenticate: (request) =>
2026-10-23T20:46:35.1964177Z           ~~~~~~~~~~~~
2026-10-23T20:46:35.1964180Z
2026-10-23T20:46:35.1964431Z 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-23T20:46:35.1964434Z
2026-10-23T20:46:35.1964492Z 468         : Effect.succeed(undefined),
2026-10-23T20:46:35.1964539Z               ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1964544Z
2026-10-23T20:46:35.1964835Z 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-23T20:46:35.1964838Z
2026-10-23T20:46:35.1964893Z 328       HttpClientError: (cause) =>
2026-10-23T20:46:35.1964941Z           ~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1964995Z
2026-10-23T20:46:35.1965239Z src/cloud/CloudLink.lifecycle.test.ts:166:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1965242Z
2026-10-23T20:46:35.1965309Z 166             latest: Effect.succeed(Option.none()),
2026-10-23T20:46:35.1965358Z                         ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1965361Z
2026-10-23T20:46:35.1965585Z src/cloud/CloudLink.test.ts:99:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1965587Z
2026-10-23T20:46:35.1965691Z 99         latest: Effect.succeed(Option.none()),
2026-10-23T20:46:35.1965741Z                    ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1965744Z
2026-10-23T20:46:35.1966091Z 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-23T20:46:35.1966095Z
2026-10-23T20:46:35.1966228Z 791     requestRecovery: (config) => Queue.offer(recoveryRequests, config).pipe(Effect.asVoid),
2026-10-23T20:46:35.1966275Z         ~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1966277Z
2026-10-23T20:46:35.1966490Z src/cloud/http.test.ts:81:67 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1966493Z
2026-10-23T20:46:35.1966646Z 81     Layer.mock(ConnectReachability.ConnectReachability)({ latest: Effect.succeed(Option.none()) }),
2026-10-23T20:46:35.1966715Z                                                                      ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1966718Z
2026-10-23T20:46:35.1967064Z 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-23T20:46:35.1967069Z
2026-10-23T20:46:35.1967156Z 371     commitDesktopUpdate: (requestId, onHandoffAccepted) =>
2026-10-23T20:46:35.1967205Z         ~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1967207Z
2026-10-23T20:46:35.1967498Z 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-23T20:46:35.1967500Z
2026-10-23T20:46:35.1967549Z 808       updateTool: (tool) =>
2026-10-23T20:46:35.1967593Z           ~~~~~~~~~~
2026-10-23T20:46:35.1967595Z
2026-10-23T20:46:35.1967880Z 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-23T20:46:35.1967882Z
2026-10-23T20:46:35.1967931Z 823       easAccount: () =>
2026-10-23T20:46:35.1967972Z           ~~~~~~~~~~
2026-10-23T20:46:35.1967976Z
2026-10-23T20:46:35.1968294Z 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-23T20:46:35.1968296Z
2026-10-23T20:46:35.1968353Z 868     ensureAgentReady: (onPhase) =>
2026-10-23T20:46:35.1968399Z         ~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1968402Z
2026-10-23T20:46:35.1968629Z src/device/easProjectId.ts:201:7 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T20:46:35.1968632Z
2026-10-23T20:46:35.1968684Z 201       Effect.map(Option.some),
2026-10-23T20:46:35.1968727Z           ~~~~~~~~~~
2026-10-23T20:46:35.1968730Z
2026-10-23T20:46:35.1969026Z 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-23T20:46:35.1969084Z
2026-10-23T20:46:35.1969169Z 141   return DirectEndpoints.of({ resolve: () => resolve });
2026-10-23T20:46:35.1969221Z                                   ~~~~~~~
2026-10-23T20:46:35.1969223Z
2026-10-23T20:46:35.1969537Z 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-23T20:46:35.1969540Z
2026-10-23T20:46:35.1969644Z 83   return RemoteOpenTargets.of({ resolveTargets: () => resolveTargets });
2026-10-23T20:46:35.1969740Z                                    ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1969742Z
2026-10-23T20:46:35.1970052Z 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-23T20:46:35.1970058Z
2026-10-23T20:46:35.1970111Z 302     isRepository: (cwd) =>
2026-10-23T20:46:35.1970152Z         ~~~~~~~~~~~~
2026-10-23T20:46:35.1970155Z
2026-10-23T20:46:35.1970492Z 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-23T20:46:35.1970495Z
2026-10-23T20:46:35.1970547Z 315     hasCommit: (input) =>
2026-10-23T20:46:35.1970591Z         ~~~~~~~~~
2026-10-23T20:46:35.1970593Z
2026-10-23T20:46:35.1970896Z 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-23T20:46:35.1970901Z
2026-10-23T20:46:35.1970951Z 327     hasRefNamed: (input) =>
2026-10-23T20:46:35.1970995Z         ~~~~~~~~~~~
2026-10-23T20:46:35.1970997Z
2026-10-23T20:46:35.1971291Z 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-23T20:46:35.1971295Z
2026-10-23T20:46:35.1971345Z 346     status: (input) =>
2026-10-23T20:46:35.1971386Z         ~~~~~~
2026-10-23T20:46:35.1971388Z
2026-10-23T20:46:35.1971692Z 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-23T20:46:35.1971694Z
2026-10-23T20:46:35.1971745Z 352     localStatus: (input) =>
2026-10-23T20:46:35.1971789Z         ~~~~~~~~~~~
2026-10-23T20:46:35.1971791Z
2026-10-23T20:46:35.1972109Z 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-23T20:46:35.1972113Z
2026-10-23T20:46:35.1972170Z 360     remoteStatus: (input, options) =>
2026-10-23T20:46:35.1972216Z         ~~~~~~~~~~~~
2026-10-23T20:46:35.1972218Z
2026-10-23T20:46:35.1972539Z 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-23T20:46:35.1972542Z
2026-10-23T20:46:35.1972596Z 369     pullCurrentBranch: (cwd) =>
2026-10-23T20:46:35.1972643Z         ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1972645Z
2026-10-23T20:46:35.1972970Z 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-23T20:46:35.1972972Z
2026-10-23T20:46:35.1973035Z 373     runStackedAction: (input, options) =>
2026-10-23T20:46:35.1973082Z         ~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1973138Z
2026-10-23T20:46:35.1973469Z 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-23T20:46:35.1973472Z
2026-10-23T20:46:35.1973536Z 388     preparePullRequestThread: (input) =>
2026-10-23T20:46:35.1973583Z         ~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1973586Z
2026-10-23T20:46:35.1973922Z 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-23T20:46:35.1973924Z
2026-10-23T20:46:35.1973976Z 399     listRefs: (input) =>
2026-10-23T20:46:35.1974019Z         ~~~~~~~~
2026-10-23T20:46:35.1974022Z
2026-10-23T20:46:35.1974339Z 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-23T20:46:35.1974347Z
2026-10-23T20:46:35.1974405Z 405     createWorktree: (input, options) =>
2026-10-23T20:46:35.1974451Z         ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1974454Z
2026-10-23T20:46:35.1974780Z 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-23T20:46:35.1974782Z
2026-10-23T20:46:35.1974842Z 409     listLocalBranchNames: (cwd) =>
2026-10-23T20:46:35.1974887Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1974889Z
2026-10-23T20:46:35.1975195Z 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-23T20:46:35.1975199Z
2026-10-23T20:46:35.1975251Z 413     fetchRemote: (input) =>
2026-10-23T20:46:35.1975294Z         ~~~~~~~~~~~
2026-10-23T20:46:35.1975296Z
2026-10-23T20:46:35.1975601Z 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-23T20:46:35.1975604Z
2026-10-23T20:46:35.1975653Z 417     remoteExists: (input) =>
2026-10-23T20:46:35.1975697Z         ~~~~~~~~~~~~
2026-10-23T20:46:35.1975699Z
2026-10-23T20:46:35.1976020Z 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-23T20:46:35.1976023Z
2026-10-23T20:46:35.1976079Z 421     remoteBranchExists: (input) =>
2026-10-23T20:46:35.1976123Z         ~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1976128Z
2026-10-23T20:46:35.1976463Z 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-23T20:46:35.1976466Z
2026-10-23T20:46:35.1976532Z 425     resolveRemoteTrackingCommit: (input) =>
2026-10-23T20:46:35.1976580Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1976583Z
2026-10-23T20:46:35.1976916Z 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-23T20:46:35.1976918Z
2026-10-23T20:46:35.1976982Z 429     resolveWorktreeBaseRemote: (input) =>
2026-10-23T20:46:35.1977028Z         ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1977030Z
2026-10-23T20:46:35.1977360Z 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-23T20:46:35.1977410Z
2026-10-23T20:46:35.1977471Z 433     fetchWorktreeBaseCommit: (input) =>
2026-10-23T20:46:35.1977518Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1977521Z
2026-10-23T20:46:35.1977831Z 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-23T20:46:35.1977837Z
2026-10-23T20:46:35.1977926Z 437     removeWorktree: (input) =>
2026-10-23T20:46:35.1977972Z         ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1977974Z
2026-10-23T20:46:35.1978286Z 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-23T20:46:35.1978290Z
2026-10-23T20:46:35.1978343Z 441     pruneWorktrees: (input) =>
2026-10-23T20:46:35.1978385Z         ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1978387Z
2026-10-23T20:46:35.1978701Z 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-23T20:46:35.1978704Z
2026-10-23T20:46:35.1978842Z 445     deleteLocalBranch: (input) =>
2026-10-23T20:46:35.1978911Z         ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1978914Z
2026-10-23T20:46:35.1979275Z 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-23T20:46:35.1979277Z
2026-10-23T20:46:35.1979327Z 449     createRef: (input) =>
2026-10-23T20:46:35.1979370Z         ~~~~~~~~~
2026-10-23T20:46:35.1979372Z
2026-10-23T20:46:35.1979671Z 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-23T20:46:35.1979676Z
2026-10-23T20:46:35.1979725Z 457     switchRef: (input) =>
2026-10-23T20:46:35.1979768Z         ~~~~~~~~~
2026-10-23T20:46:35.1979772Z
2026-10-23T20:46:35.1980075Z 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-23T20:46:35.1980077Z
2026-10-23T20:46:35.1980131Z 463     renameBranch: (input) =>
2026-10-23T20:46:35.1980177Z         ~~~~~~~~~~~~
2026-10-23T20:46:35.1980179Z
2026-10-23T20:46:35.1980495Z 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-23T20:46:35.1980500Z
2026-10-23T20:46:35.1980554Z 281   const receive = (raw: string) => {
2026-10-23T20:46:35.1980598Z             ~~~~~~~
2026-10-23T20:46:35.1980600Z
2026-10-23T20:46:35.1980987Z 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-23T20:46:35.1980989Z
2026-10-23T20:46:35.1981034Z 284       try {
2026-10-23T20:46:35.1981078Z           ~~~~~
2026-10-23T20:46:35.1981131Z 285         parsed = JSON.parse(line);
2026-10-23T20:46:35.1981181Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1981223Z ...
2026-10-23T20:46:35.1981339Z 287         return yield* respondWithError(null, "Parse error", -32700);
2026-10-23T20:46:35.1981407Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1981451Z 288       }
2026-10-23T20:46:35.1981604Z     ~~~~~~~
2026-10-23T20:46:35.1981607Z
2026-10-23T20:46:35.1981892Z 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-23T20:46:35.1981895Z
2026-10-23T20:46:35.1981956Z 324       Effect.catchCause(() => Effect.void),
2026-10-23T20:46:35.1982003Z           ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1982005Z
2026-10-23T20:46:35.1982243Z src/mcp/McpDeviceToolkit.test.ts:105:18 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.1982303Z
2026-10-23T20:46:35.1982375Z 105   getById: () => Effect.succeed(Option.none()),
2026-10-23T20:46:35.1982421Z                      ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1982424Z
2026-10-23T20:46:35.1982718Z 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-23T20:46:35.1982723Z
2026-10-23T20:46:35.1982822Z 421 const previewSnapshotFailure = <E>(cause: Cause.Cause<E>) => {
2026-10-23T20:46:35.1982870Z           ~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1982873Z
2026-10-23T20:46:35.1983169Z 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-23T20:46:35.1983172Z
2026-10-23T20:46:35.1983221Z 933       addTool: (options) =>
2026-10-23T20:46:35.1983268Z           ~~~~~~~
2026-10-23T20:46:35.1983270Z
2026-10-23T20:46:35.1983556Z 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-23T20:46:35.1983558Z
2026-10-23T20:46:35.1983621Z 22     resolve: () => Effect.succeed(undefined),
2026-10-23T20:46:35.1983676Z                       ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1983679Z
2026-10-23T20:46:35.1983968Z 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-23T20:46:35.1983970Z
2026-10-23T20:46:35.1984032Z 112       Effect.flatMap(() => writingCaller),
2026-10-23T20:46:35.1984078Z           ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1984080Z
2026-10-23T20:46:35.1984592Z 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-23T20:46:35.1984596Z
2026-10-23T20:46:35.1984671Z 2460       const cancelOrphan = Effect.gen(function* () {
2026-10-23T20:46:35.1984729Z                                            ~~~~~~~~~
2026-10-23T20:46:35.1984731Z
2026-10-23T20:46:35.1984971Z   src/mcp/OrchestratorMcpService.ts:2475:17 - This repeated `Effect.mapError(...)` site participates in the hoistable generator-wide mapping. effect(redundantMapError)
2026-10-23T20:46:35.1985059Z     2475           .pipe(Effect.mapError(threadManagementFailure));
2026-10-23T20:46:35.1985109Z                          ~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1985112Z
2026-10-23T20:46:35.1985349Z   src/mcp/OrchestratorMcpService.ts:2478:17 - This repeated `Effect.mapError(...)` site participates in the hoistable generator-wide mapping. effect(redundantMapError)
2026-10-23T20:46:35.1985430Z     2478           .pipe(Effect.mapError(threadManagementFailure));
2026-10-23T20:46:35.1985478Z                          ~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1985481Z
2026-10-23T20:46:35.1985763Z 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-23T20:46:35.1985818Z
2026-10-23T20:46:35.1985867Z 651         onNone: () =>
2026-10-23T20:46:35.1985910Z             ~~~~~~
2026-10-23T20:46:35.1985912Z
2026-10-23T20:46:35.1986118Z src/mcp/WorktreeMcpService.test.ts:355:3 - suggestion TS377017: This Effect.gen contains a single return statement. effect(unnecessaryEffectGen)
2026-10-23T20:46:35.1986121Z
2026-10-23T20:46:35.1986172Z 355   Effect.gen(function* () {
2026-10-23T20:46:35.1986220Z       ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1986344Z 356     return yield* WorktreeMcpService.WorktreeMcpService;
2026-10-23T20:46:35.1986410Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1986474Z 357   }).pipe(Effect.provide(harness.layer));
2026-10-23T20:46:35.1986520Z     ~~~~
2026-10-23T20:46:35.1986522Z
2026-10-23T20:46:35.1986796Z 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-23T20:46:35.1986803Z
2026-10-23T20:46:35.1986854Z 222     const thread = yield* engine
2026-10-23T20:46:35.1986905Z                               ~~~~~~
2026-10-23T20:46:35.1986962Z 223       .getThreadShell(threadId)
2026-10-23T20:46:35.1987007Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1987075Z 224       .pipe(Effect.map(Option.fromNullishOr))
2026-10-23T20:46:35.1987131Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1987221Z 225       .pipe(Effect.mapError((cause) => new Failure({ cause })));
2026-10-23T20:46:35.1987286Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1987291Z
2026-10-23T20:46:35.1987584Z 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-23T20:46:35.1987588Z
2026-10-23T20:46:35.1987712Z 96   McpAppModelContext.of({ set: () => Effect.void, forThread: () => Effect.succeed([]) }),
2026-10-23T20:46:35.1987761Z                              ~~~
2026-10-23T20:46:35.1987763Z
2026-10-23T20:46:35.1988068Z 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-23T20:46:35.1988071Z
2026-10-23T20:46:35.1988192Z 96   McpAppModelContext.of({ set: () => Effect.void, forThread: () => Effect.succeed([]) }),
2026-10-23T20:46:35.1988254Z                                                      ~~~~~~~~~
2026-10-23T20:46:35.1988256Z
2026-10-23T20:46:35.1988585Z 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-23T20:46:35.1988589Z
2026-10-23T20:46:35.1988640Z 16     record: (records) =>
2026-10-23T20:46:35.1988684Z        ~~~~~~
2026-10-23T20:46:35.1988687Z
2026-10-23T20:46:35.1988968Z 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-23T20:46:35.1988973Z
2026-10-23T20:46:35.1989076Z 41   defaultValue: () => ({ latestNoticeableStall: Effect.succeed(undefined) }),
2026-10-23T20:46:35.1989145Z                                                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1989147Z
2026-10-23T20:46:35.1989605Z 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-23T20:46:35.1989665Z
2026-10-23T20:46:35.1989773Z 30 const REPLAY_SETTINGS = Schema.decodeUnknownSync(AcpRegistrySettings)({
2026-10-23T20:46:35.1989826Z                                   ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1989831Z
2026-10-23T20:46:35.1990147Z 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-23T20:46:35.1990150Z
2026-10-23T20:46:35.1990212Z 48   defaultModel: Effect.succeed(undefined),
2026-10-23T20:46:35.1990303Z                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1990306Z
2026-10-23T20:46:35.1990654Z 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-23T20:46:35.1990657Z
2026-10-23T20:46:35.1990724Z 169         defaultModel: Effect.succeed(undefined),
2026-10-23T20:46:35.1990778Z                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1990780Z
2026-10-23T20:46:35.1991097Z 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-23T20:46:35.1991099Z
2026-10-23T20:46:35.1991165Z 306         defaultModel: Effect.succeed(undefined),
2026-10-23T20:46:35.1991219Z                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1991221Z
2026-10-23T20:46:35.1991533Z 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-23T20:46:35.1991539Z
2026-10-23T20:46:35.1991601Z 542         defaultModel: Effect.succeed(undefined),
2026-10-23T20:46:35.1991653Z                           ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1991657Z
2026-10-23T20:46:35.1992006Z 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-23T20:46:35.1992009Z
2026-10-23T20:46:35.1992073Z 974       const controller = new AbortController();
2026-10-23T20:46:35.1992126Z                              ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1992131Z
2026-10-23T20:46:35.1992429Z 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-23T20:46:35.1992432Z
2026-10-23T20:46:35.1992505Z 1326         const requestEvent = yield* runtime.events
2026-10-23T20:46:35.1992562Z                                          ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1992612Z 1327           .pipe(
2026-10-23T20:46:35.1992654Z      ~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1992697Z  ...
2026-10-23T20:46:35.1992741Z 1330           )
2026-10-23T20:46:35.1992784Z      ~~~~~~~~~~~
2026-10-23T20:46:35.1992842Z 1331           .pipe(Effect.forkScoped);
2026-10-23T20:46:35.1992891Z      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1992893Z
2026-10-23T20:46:35.1993241Z 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-23T20:46:35.1993245Z
2026-10-23T20:46:35.1993315Z 1332         const controller = new AbortController();
2026-10-23T20:46:35.1993369Z                                 ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1993372Z
2026-10-23T20:46:35.1993714Z 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-23T20:46:35.1993772Z
2026-10-23T20:46:35.1993856Z 1355         const cancelledController = new AbortController();
2026-10-23T20:46:35.1993919Z                                          ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1993921Z
2026-10-23T20:46:35.1994298Z 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-23T20:46:35.1994337Z
2026-10-23T20:46:35.1994445Z 4018     getCapabilities: () => Effect.succeed(ClaudeProviderCapabilitiesV2),
2026-10-23T20:46:35.1994492Z          ~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1994495Z
2026-10-23T20:46:35.1994886Z 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-23T20:46:35.1994891Z
2026-10-23T20:46:35.1995016Z 4019     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-23T20:46:35.1995064Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1995066Z
2026-10-23T20:46:35.1995428Z 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-23T20:46:35.1995437Z
2026-10-23T20:46:35.1995498Z 201         signal: new AbortController().signal,
2026-10-23T20:46:35.1995549Z                     ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1995551Z
2026-10-23T20:46:35.1995959Z 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-23T20:46:35.1995963Z
2026-10-23T20:46:35.1996020Z 74   const pause = Effect.raceFirst(
2026-10-23T20:46:35.1996066Z                    ~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1996069Z
2026-10-23T20:46:35.1996370Z 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-23T20:46:35.1996373Z
2026-10-23T20:46:35.1996484Z 1741     threadId === null ? Effect.succeed(undefined) : mcpSessions.read(threadId);
2026-10-23T20:46:35.1996543Z                              ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1996545Z
2026-10-23T20:46:35.1996919Z 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-23T20:46:35.1996923Z
2026-10-23T20:46:35.1997025Z 1748     getCapabilities: () => Effect.succeed(CodexProviderCapabilitiesV2),
2026-10-23T20:46:35.1997071Z          ~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1997073Z
2026-10-23T20:46:35.1997458Z 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-23T20:46:35.1997461Z
2026-10-23T20:46:35.1997587Z 1749     planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-23T20:46:35.1997635Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.1997637Z
2026-10-23T20:46:35.1997959Z 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-23T20:46:35.1998018Z
2026-10-23T20:46:35.1998092Z 3045                   Effect.catch(() => Effect.succeed(null)),
2026-10-23T20:46:35.1998141Z                        ~~~~~~~~~~~~
2026-10-23T20:46:35.1998143Z
2026-10-23T20:46:35.1998527Z 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-23T20:46:35.1998530Z
2026-10-23T20:46:35.1998592Z 3046                   Effect.flatMap((response) =>
2026-10-23T20:46:35.1998687Z                        ~~~~~~~~~~~~~~
2026-10-23T20:46:35.1998690Z
2026-10-23T20:46:35.1998979Z 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-23T20:46:35.1998981Z
2026-10-23T20:46:35.1999053Z 3068                   Effect.catch(() => Effect.void),
2026-10-23T20:46:35.1999104Z                        ~~~~~~~~~~~~
2026-10-23T20:46:35.1999106Z
2026-10-23T20:46:35.1999474Z 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-23T20:46:35.1999477Z
2026-10-23T20:46:35.1999561Z 7268                   return yield* Effect.fail(failedTermination.error);
2026-10-23T20:46:35.1999612Z                               ~~~~~
2026-10-23T20:46:35.1999616Z
2026-10-23T20:46:35.2000062Z 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-23T20:46:35.2000066Z
2026-10-23T20:46:35.2000173Z 33 const DEFAULT_GROK_SETTINGS = Schema.decodeUnknownSync(GrokSettings)({});
2026-10-23T20:46:35.2000235Z                                         ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2000237Z
2026-10-23T20:46:35.2000703Z 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-23T20:46:35.2000709Z
2026-10-23T20:46:35.2000838Z 414 const DEFAULT_MUSE_SETTINGS = Schema.decodeUnknownSync(MuseSettings)({ enabled: true });
2026-10-23T20:46:35.2000898Z                                          ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2000900Z
2026-10-23T20:46:35.2001256Z 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-23T20:46:35.2001260Z
2026-10-23T20:46:35.2001311Z 242       execute: (input) =>
2026-10-23T20:46:35.2001354Z           ~~~~~~~
2026-10-23T20:46:35.2001359Z
2026-10-23T20:46:35.2001627Z src/orchestration-v2/CheckpointRestoreSafety.test.ts:104:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.2001629Z
2026-10-23T20:46:35.2001742Z 104             get: () => Effect.succeed(Option.some({ workspaceRoot: parent } as never)),
2026-10-23T20:46:35.2001795Z                            ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2001797Z
2026-10-23T20:46:35.2002158Z 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-23T20:46:35.2002215Z
2026-10-23T20:46:35.2002267Z 41             Effect.catch((error) =>
2026-10-23T20:46:35.2002315Z                ~~~~~~~~~~~~
2026-10-23T20:46:35.2002317Z
2026-10-23T20:46:35.2002672Z 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-23T20:46:35.2002675Z
2026-10-23T20:46:35.2002734Z 83                 Effect.catch((error) =>
2026-10-23T20:46:35.2002781Z                    ~~~~~~~~~~~~
2026-10-23T20:46:35.2002783Z
2026-10-23T20:46:35.2003096Z src/orchestration-v2/CheckpointRollbackService.test.ts:233:22 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.2003102Z
2026-10-23T20:46:35.2003204Z 233               return Effect.succeed(Option.some({ workspaceRoot } as never));
2026-10-23T20:46:35.2003254Z                          ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2003258Z
2026-10-23T20:46:35.2003630Z 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-23T20:46:35.2003632Z
2026-10-23T20:46:35.2003700Z 142         const batchAbort = new AbortController();
2026-10-23T20:46:35.2003754Z                                ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2003757Z
2026-10-23T20:46:35.2004138Z 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-23T20:46:35.2004141Z
2026-10-23T20:46:35.2004196Z 168     Effect.flatMap((frame) =>
2026-10-23T20:46:35.2004241Z         ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2004244Z
2026-10-23T20:46:35.2004497Z src/orchestration-v2/CommandReceiptStore.ts:164:29 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.2004499Z
2026-10-23T20:46:35.2004570Z 164               onNone: () => Effect.succeed(Option.none()),
2026-10-23T20:46:35.2004624Z                                 ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2004627Z
2026-10-23T20:46:35.2004875Z src/orchestration-v2/CommandReceiptStore.ts:167:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.2004877Z
2026-10-23T20:46:35.2004944Z 167                   ? Effect.succeed(Option.none())
2026-10-23T20:46:35.2004995Z                         ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2004997Z
2026-10-23T20:46:35.2005249Z src/orchestration-v2/CommandReceiptStore.ts:168:58 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T20:46:35.2005253Z
2026-10-23T20:46:35.2005363Z 168                   : fromApplicationReceipt(receipt).pipe(Effect.map(Option.some)),
2026-10-23T20:46:35.2005429Z                                                              ~~~~~~~~~~
2026-10-23T20:46:35.2005431Z
2026-10-23T20:46:35.2005680Z src/orchestration-v2/CommandReceiptStore.ts:183:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.2005682Z
2026-10-23T20:46:35.2005743Z 183               ? Effect.succeed(Option.none())
2026-10-23T20:46:35.2005793Z                     ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2005795Z
2026-10-23T20:46:35.2006047Z src/orchestration-v2/CommandReceiptStore.ts:192:25 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T20:46:35.2006050Z
2026-10-23T20:46:35.2006114Z 192                 }).pipe(Effect.map(Option.some)),
2026-10-23T20:46:35.2006219Z                             ~~~~~~~~~~
2026-10-23T20:46:35.2006221Z
2026-10-23T20:46:35.2006456Z src/orchestration-v2/EffectOutbox.ts:429:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.2006461Z
2026-10-23T20:46:35.2006520Z 429               ? Effect.succeed(Option.none())
2026-10-23T20:46:35.2006568Z                     ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2006571Z
2026-10-23T20:46:35.2006856Z src/orchestration-v2/EffectOutbox.ts:430:39 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T20:46:35.2006859Z
2026-10-23T20:46:35.2006943Z 430               : rowToEffect(row).pipe(Effect.map(Option.some));
2026-10-23T20:46:35.2006998Z                                           ~~~~~~~~~~
2026-10-23T20:46:35.2007000Z
2026-10-23T20:46:35.2007245Z src/orchestration-v2/EffectWorker.test.ts:107:20 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.2007249Z
2026-10-23T20:46:35.2007316Z 107         get: () => Effect.succeed(Option.none()),
2026-10-23T20:46:35.2007366Z                        ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2007368Z
2026-10-23T20:46:35.2007608Z src/orchestration-v2/EffectWorker.test.ts:302:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.2007611Z
2026-10-23T20:46:35.2007696Z 302       claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-23T20:46:35.2007749Z                            ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2007751Z
2026-10-23T20:46:35.2007994Z src/orchestration-v2/EffectWorker.test.ts:369:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.2007996Z
2026-10-23T20:46:35.2008084Z 369       claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-23T20:46:35.2008135Z                            ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2008141Z
2026-10-23T20:46:35.2008380Z src/orchestration-v2/EffectWorker.test.ts:436:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.2008382Z
2026-10-23T20:46:35.2008469Z 436       claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-23T20:46:35.2008518Z                            ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2008521Z
2026-10-23T20:46:35.2008766Z src/orchestration-v2/EffectWorker.test.ts:437:18 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.2008769Z
2026-10-23T20:46:35.2008846Z 437       get: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-23T20:46:35.2008896Z                      ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2008899Z
2026-10-23T20:46:35.2009253Z 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-23T20:46:35.2009255Z
2026-10-23T20:46:35.2009312Z 98       execute: (effect, options) => {
2026-10-23T20:46:35.2009358Z          ~~~~~~~
2026-10-23T20:46:35.2009361Z
2026-10-23T20:46:35.2009699Z 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-23T20:46:35.2009705Z
2026-10-23T20:46:35.2009759Z 180                 Effect.catch((cause) =>
2026-10-23T20:46:35.2009808Z                     ~~~~~~~~~~~~
2026-10-23T20:46:35.2009810Z
2026-10-23T20:46:35.2010107Z 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-23T20:46:35.2010158Z
2026-10-23T20:46:35.2010213Z 110         append: (input) =>
2026-10-23T20:46:35.2010255Z             ~~~~~~
2026-10-23T20:46:35.2010258Z
2026-10-23T20:46:35.2010617Z 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-23T20:46:35.2010621Z
2026-10-23T20:46:35.2010680Z 120         appendProjectEvent: (event) =>
2026-10-23T20:46:35.2010769Z             ~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2010771Z
2026-10-23T20:46:35.2011079Z 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-23T20:46:35.2011082Z
2026-10-23T20:46:35.2011135Z 131         latestSequence: (input) =>
2026-10-23T20:46:35.2011186Z             ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2011188Z
2026-10-23T20:46:35.2011459Z src/orchestration-v2/FoundationPersistence.test.ts:1791:26 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.2011461Z
2026-10-23T20:46:35.2011556Z 1791         claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-23T20:46:35.2011607Z                               ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2011612Z
2026-10-23T20:46:35.2011880Z src/orchestration-v2/FoundationPersistence.test.ts:1793:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.2011882Z
2026-10-23T20:46:35.2011932Z 1793           Effect.succeed(
2026-10-23T20:46:35.2011980Z                ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2011982Z
2026-10-23T20:46:35.2012247Z src/orchestration-v2/FoundationPersistence.test.ts:2663:30 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.2012251Z
2026-10-23T20:46:35.2012331Z 2663             nextClaimableAt: Effect.succeed(Option.none()),
2026-10-23T20:46:35.2012387Z                                   ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2012389Z
2026-10-23T20:46:35.2012653Z src/orchestration-v2/FoundationPersistence.test.ts:2880:30 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.2012656Z
2026-10-23T20:46:35.2012738Z 2880             nextClaimableAt: Effect.succeed(Option.none()),
2026-10-23T20:46:35.2012793Z                                   ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2012796Z
2026-10-23T20:46:35.2013159Z 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-23T20:46:35.2013166Z
2026-10-23T20:46:35.2013220Z 11756       Effect.flatMap((planned) =>
2026-10-23T20:46:35.2013269Z             ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2013271Z
2026-10-23T20:46:35.2013615Z 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-23T20:46:35.2013618Z
2026-10-23T20:46:35.2013684Z 12179     restartContinuationPending: (run) =>
2026-10-23T20:46:35.2013732Z           ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2013734Z
2026-10-23T20:46:35.2014072Z 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-23T20:46:35.2014075Z
2026-10-23T20:46:35.2014198Z 12181     awaitRestartContinuation: (run) =>
2026-10-23T20:46:35.2014249Z           ~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2014251Z
2026-10-23T20:46:35.2014583Z 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-23T20:46:35.2014585Z
2026-10-23T20:46:35.2014643Z 12184     autoArmLimitRecovery: (input) =>
2026-10-23T20:46:35.2014691Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2014693Z
2026-10-23T20:46:35.2015046Z 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-23T20:46:35.2015049Z
2026-10-23T20:46:35.2015102Z 12212     searchThread: (input) =>
2026-10-23T20:46:35.2015146Z           ~~~~~~~~~~~~
2026-10-23T20:46:35.2015152Z
2026-10-23T20:46:35.2015555Z 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-23T20:46:35.2015557Z
2026-10-23T20:46:35.2015681Z 12220     getThreadHistoryPage: (threadId, cursor, throughEntryId, conversationOnly) =>
2026-10-23T20:46:35.2015727Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2015730Z
2026-10-23T20:46:35.2016071Z 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-23T20:46:35.2016074Z
2026-10-23T20:46:35.2016141Z 12224     getTimelinePage: (threadId, options) =>
2026-10-23T20:46:35.2016185Z           ~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2016188Z
2026-10-23T20:46:35.2016513Z 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-23T20:46:35.2016515Z
2026-10-23T20:46:35.2016575Z 12228     getMessageCount: (threadId) =>
2026-10-23T20:46:35.2016622Z           ~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2016624Z
2026-10-23T20:46:35.2016941Z 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-23T20:46:35.2016943Z
2026-10-23T20:46:35.2016995Z 12232     getTurnItem: (input) =>
2026-10-23T20:46:35.2017041Z           ~~~~~~~~~~~
2026-10-23T20:46:35.2017043Z
2026-10-23T20:46:35.2017401Z 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-23T20:46:35.2017405Z
2026-10-23T20:46:35.2017485Z 12240     getThreadRecords: (threadId, fields, filter) =>
2026-10-23T20:46:35.2017529Z           ~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2017532Z
2026-10-23T20:46:35.2017864Z 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-23T20:46:35.2017866Z
2026-10-23T20:46:35.2017931Z 12244     getThreadProjection: (threadId) =>
2026-10-23T20:46:35.2017980Z           ~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2017982Z
2026-10-23T20:46:35.2018316Z 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-23T20:46:35.2018365Z
2026-10-23T20:46:35.2018427Z 12248     getCheckpointContext: (threadId) =>
2026-10-23T20:46:35.2018475Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2018477Z
2026-10-23T20:46:35.2018994Z 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-23T20:46:35.2018997Z
2026-10-23T20:46:35.2019060Z 12252     getThreadSnapshot: (threadId) =>
2026-10-23T20:46:35.2019112Z           ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2019114Z
2026-10-23T20:46:35.2019538Z 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-23T20:46:35.2019544Z
2026-10-23T20:46:35.2019623Z 12256     getThreadSnapshotWindow: (threadId, options) =>
2026-10-23T20:46:35.2019674Z           ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2019677Z
2026-10-23T20:46:35.2020005Z 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-23T20:46:35.2020008Z
2026-10-23T20:46:35.2020066Z 12260     getShellSnapshot: (options) =>
2026-10-23T20:46:35.2020111Z           ~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2020113Z
2026-10-23T20:46:35.2020478Z 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-23T20:46:35.2020481Z
2026-10-23T20:46:35.2020546Z 12262     listActiveSubagentThreadIds: () =>
2026-10-23T20:46:35.2020596Z           ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2020599Z
2026-10-23T20:46:35.2020927Z 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-23T20:46:35.2020929Z
2026-10-23T20:46:35.2020985Z 12264     readShellSnapshot: (options) =>
2026-10-23T20:46:35.2021032Z           ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2021035Z
2026-10-23T20:46:35.2021361Z 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-23T20:46:35.2021364Z
2026-10-23T20:46:35.2021419Z 12271     getThreadShell: (threadId) =>
2026-10-23T20:46:35.2021466Z           ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2021468Z
2026-10-23T20:46:35.2021805Z 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-23T20:46:35.2021809Z
2026-10-23T20:46:35.2021875Z 12275     getThreadEventSequence: (threadId) =>
2026-10-23T20:46:35.2021925Z           ~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2021927Z
2026-10-23T20:46:35.2022266Z 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-23T20:46:35.2022268Z
2026-10-23T20:46:35.2022342Z 160         getInstance: () => Effect.succeed(undefined),
2026-10-23T20:46:35.2022398Z                                ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2022401Z
2026-10-23T20:46:35.2022721Z 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-23T20:46:35.2022797Z
2026-10-23T20:46:35.2022914Z 269     getShell: (projectId) => get(projectId).pipe(Effect.map(Option.map(toShell))),
2026-10-23T20:46:35.2022959Z         ~~~~~~~~
2026-10-23T20:46:35.2022962Z
2026-10-23T20:46:35.2023274Z 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-23T20:46:35.2023276Z
2026-10-23T20:46:35.2068528Z 270     listShells: (options) =>
2026-10-23T20:46:35.2068603Z         ~~~~~~~~~~
2026-10-23T20:46:35.2068819Z
2026-10-23T20:46:35.2069189Z src/orchestration-v2/ProjectionControlReads.test.ts:279:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.2069192Z
2026-10-23T20:46:35.2069247Z 279           Effect.succeed(
2026-10-23T20:46:35.2069292Z               ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2069298Z
2026-10-23T20:46:35.2069668Z 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-23T20:46:35.2069671Z
2026-10-23T20:46:35.2069722Z 78       get: (instanceId) =>
2026-10-23T20:46:35.2069766Z          ~~~
2026-10-23T20:46:35.2069769Z
2026-10-23T20:46:35.2070113Z 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-23T20:46:35.2070119Z
2026-10-23T20:46:35.2070164Z 135       list: () =>
2026-10-23T20:46:35.2070209Z           ~~~~
2026-10-23T20:46:35.2070211Z
2026-10-23T20:46:35.2070646Z 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-23T20:46:35.2070650Z
2026-10-23T20:46:35.2070745Z 93       record: (properties: Readonly<Record<string, unknown>>) =>
2026-10-23T20:46:35.2070786Z          ~~~~~~
2026-10-23T20:46:35.2070789Z
2026-10-23T20:46:35.2071186Z 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-23T20:46:35.2071189Z
2026-10-23T20:46:35.2071258Z 818               Effect.flatMap((storedEvents) =>
2026-10-23T20:46:35.2071309Z                   ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2071311Z
2026-10-23T20:46:35.2071591Z src/orchestration-v2/ProviderSessionManager.test.ts:1155:19 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.2071596Z
2026-10-23T20:46:35.2071725Z 1155                 : Effect.succeed(Option.some(makeBrowserAccessProject(requestedProjectId))),
2026-10-23T20:46:35.2071777Z                        ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2071780Z
2026-10-23T20:46:35.2072058Z src/orchestration-v2/ProviderTurnStartService.test.ts:150:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.2072061Z
2026-10-23T20:46:35.2072113Z 150             Effect.succeed(
2026-10-23T20:46:35.2072161Z                 ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2072164Z
2026-10-23T20:46:35.2072438Z src/orchestration-v2/ProviderTurnStartService.test.ts:703:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.2072440Z
2026-10-23T20:46:35.2072581Z 703             Effect.succeed(Option.some({ workspaceRoot: "/tmp/native-account-project" } as never)),
2026-10-23T20:46:35.2072852Z                 ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2072855Z
2026-10-23T20:46:35.2073134Z src/orchestration-v2/ProviderTurnStartService.testkit.ts:14:20 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.2073136Z
2026-10-23T20:46:35.2073210Z 14     getById: () => Effect.succeed(Option.none()),
2026-10-23T20:46:35.2073257Z                       ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2073260Z
2026-10-23T20:46:35.2073756Z 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-23T20:46:35.2073759Z
2026-10-23T20:46:35.2073822Z 499               Effect.catchCause((cause) =>
2026-10-23T20:46:35.2073872Z                   ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2073875Z
2026-10-23T20:46:35.2074306Z 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-23T20:46:35.2074311Z
2026-10-23T20:46:35.2074374Z 1289       return runExecution.startRootRun({
2026-10-23T20:46:35.2074420Z            ~~~~~~
2026-10-23T20:46:35.2074422Z
2026-10-23T20:46:35.2074691Z src/orchestration-v2/PullRequestWatchReactor.ts:478:53 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-23T20:46:35.2074694Z
2026-10-23T20:46:35.2074799Z 478             ? pullRequests.activity(reference).pipe(Effect.map(Option.some))
2026-10-23T20:46:35.2074865Z                                                         ~~~~~~~~~~
2026-10-23T20:46:35.2074871Z
2026-10-23T20:46:35.2075249Z 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-23T20:46:35.2075254Z
2026-10-23T20:46:35.2075329Z 49       cleanupScheduledTasks: (threadId: ThreadId) =>
2026-10-23T20:46:35.2075376Z          ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2075379Z
2026-10-23T20:46:35.2075745Z 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-23T20:46:35.2075748Z
2026-10-23T20:46:35.2075812Z 58       cleanupTerminals: (threadId: string) =>
2026-10-23T20:46:35.2075856Z          ~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2075859Z
2026-10-23T20:46:35.2076218Z 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-23T20:46:35.2076222Z
2026-10-23T20:46:35.2076284Z 66       cleanupPreviews: (threadId: string) =>
2026-10-23T20:46:35.2076330Z          ~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2076332Z
2026-10-23T20:46:35.2076706Z 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-23T20:46:35.2076709Z
2026-10-23T20:46:35.2076805Z 74       cleanupAttachments: (attachmentIds: ReadonlyArray<string>) =>
2026-10-23T20:46:35.2076854Z          ~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2076856Z
2026-10-23T20:46:35.2077130Z 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-23T20:46:35.2077183Z
2026-10-23T20:46:35.2077248Z 1812         ).pipe(Effect.map(Option.some)),
2026-10-23T20:46:35.2077294Z                     ~~~~~~~~~~
2026-10-23T20:46:35.2077296Z
2026-10-23T20:46:35.2077683Z 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-23T20:46:35.2077686Z
2026-10-23T20:46:35.2077745Z 919               Effect.catchCause((cause) =>
2026-10-23T20:46:35.2077793Z                   ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2077836Z
2026-10-23T20:46:35.2078087Z src/orchestration-v2/RuntimePolicy.test.ts:90:9 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.2078090Z
2026-10-23T20:46:35.2078137Z 90         Effect.succeed(
2026-10-23T20:46:35.2078184Z            ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2078188Z
2026-10-23T20:46:35.2078500Z 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-23T20:46:35.2078503Z
2026-10-23T20:46:35.2078554Z 54   resolve: (input) =>
2026-10-23T20:46:35.2078598Z      ~~~~~~~
2026-10-23T20:46:35.2078600Z
2026-10-23T20:46:35.2078864Z src/orchestration-v2/RuntimeRequestService.test.ts:29:7 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.2078868Z
2026-10-23T20:46:35.2078917Z 29       Effect.succeed(
2026-10-23T20:46:35.2078963Z          ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2078965Z
2026-10-23T20:46:35.2079230Z src/orchestration-v2/ThreadLaunchService.test.ts:189:33 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.2079234Z
2026-10-23T20:46:35.2079332Z 189       getByWorkspaceRoot: () => Effect.succeed(Option.some(project)),
2026-10-23T20:46:35.2079385Z                                     ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2079388Z
2026-10-23T20:46:35.2079647Z src/orchestration-v2/ThreadLaunchService.test.ts:220:32 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.2079650Z
2026-10-23T20:46:35.2079735Z 220         folderForThread: () => Effect.succeed(Option.none()),
2026-10-23T20:46:35.2079789Z                                    ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2079793Z
2026-10-23T20:46:35.2080130Z 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-23T20:46:35.2080135Z
2026-10-23T20:46:35.2080184Z 91     archive: (input) =>
2026-10-23T20:46:35.2080229Z        ~~~~~~~
2026-10-23T20:46:35.2080232Z
2026-10-23T20:46:35.2080614Z 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-23T20:46:35.2080617Z
2026-10-23T20:46:35.2080671Z 97     unarchive: (input) =>
2026-10-23T20:46:35.2080713Z        ~~~~~~~~~
2026-10-23T20:46:35.2080715Z
2026-10-23T20:46:35.2081056Z 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-23T20:46:35.2081058Z
2026-10-23T20:46:35.2081108Z 103     delete: (input) =>
2026-10-23T20:46:35.2081152Z         ~~~~~~
2026-10-23T20:46:35.2081154Z
2026-10-23T20:46:35.2081508Z 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-23T20:46:35.2081565Z
2026-10-23T20:46:35.2081618Z 109     updateMetadata: (input) =>
2026-10-23T20:46:35.2081664Z         ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2081666Z
2026-10-23T20:46:35.2082018Z 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-23T20:46:35.2082020Z
2026-10-23T20:46:35.2082112Z 118     setRuntimeMode: (input) =>
2026-10-23T20:46:35.2082157Z         ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2082160Z
2026-10-23T20:46:35.2082522Z 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-23T20:46:35.2082526Z
2026-10-23T20:46:35.2082584Z 125     setInteractionMode: (input) =>
2026-10-23T20:46:35.2082632Z         ~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2082634Z
2026-10-23T20:46:35.2082994Z 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-23T20:46:35.2082997Z
2026-10-23T20:46:35.2083054Z 132     setModelSelection: (input) =>
2026-10-23T20:46:35.2083098Z         ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2083102Z
2026-10-23T20:46:35.2083492Z 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-23T20:46:35.2083494Z
2026-10-23T20:46:35.2083552Z 689       Effect.flatMap((projection) =>
2026-10-23T20:46:35.2083601Z           ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2083603Z
2026-10-23T20:46:35.2083892Z 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-23T20:46:35.2083896Z
2026-10-23T20:46:35.2083964Z 706     ensureProjectionTranscript(input.threadId)
2026-10-23T20:46:35.2084019Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2084156Z 707       .pipe(Effect.andThen(orchestrator.getThreadRecords(input.threadId, fields, filter)))
2026-10-23T20:46:35.2084244Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2084284Z ...
2026-10-23T20:46:35.2084328Z 726         ),
2026-10-23T20:46:35.2084371Z     ~~~~~~~~~~
2026-10-23T20:46:35.2084412Z 727       );
2026-10-23T20:46:35.2084456Z     ~~~~~~~
2026-10-23T20:46:35.2084458Z
2026-10-23T20:46:35.2084846Z 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-23T20:46:35.2084849Z
2026-10-23T20:46:35.2084909Z 717         Effect.flatMap((projection) =>
2026-10-23T20:46:35.2084957Z             ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2084959Z
2026-10-23T20:46:35.2085338Z 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-23T20:46:35.2085344Z
2026-10-23T20:46:35.2085444Z 1131     if (failures[0] !== undefined) return yield* Effect.fail(failures[0]);
2026-10-23T20:46:35.2085502Z                                                ~~~~~
2026-10-23T20:46:35.2085504Z
2026-10-23T20:46:35.2085919Z 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-23T20:46:35.2085922Z
2026-10-23T20:46:35.2085978Z 1142     searchThread: (input) =>
2026-10-23T20:46:35.2086021Z          ~~~~~~~~~~~~
2026-10-23T20:46:35.2086023Z
2026-10-23T20:46:35.2086512Z 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-23T20:46:35.2086515Z
2026-10-23T20:46:35.2086639Z 1147     getThreadHistoryPage: (threadId, cursor, throughEntryId, conversationOnly) =>
2026-10-23T20:46:35.2086687Z          ~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2086690Z
2026-10-23T20:46:35.2087074Z 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-23T20:46:35.2087078Z
2026-10-23T20:46:35.2087142Z 1153     getTimelinePage: (threadId, options) =>
2026-10-23T20:46:35.2087187Z          ~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2087190Z
2026-10-23T20:46:35.2087561Z 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-23T20:46:35.2087563Z
2026-10-23T20:46:35.2087623Z 1157     getMessageCount: (threadId) =>
2026-10-23T20:46:35.2087668Z          ~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2087670Z
2026-10-23T20:46:35.2088024Z 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-23T20:46:35.2088031Z
2026-10-23T20:46:35.2088081Z 1161     getTurnItem: (input) =>
2026-10-23T20:46:35.2088127Z          ~~~~~~~~~~~
2026-10-23T20:46:35.2088129Z
2026-10-23T20:46:35.2088520Z 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-23T20:46:35.2088522Z
2026-10-23T20:46:35.2088599Z 1166     getThreadRecords: (threadId, fields, filter) =>
2026-10-23T20:46:35.2088644Z          ~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2088646Z
2026-10-23T20:46:35.2089049Z 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-23T20:46:35.2089054Z
2026-10-23T20:46:35.2089196Z 1206     ensureTranscript: () => Effect.succeed({ importedThreadCount: 0, importedMessageCount: 0 }),
2026-10-23T20:46:35.2089242Z          ~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2089245Z
2026-10-23T20:46:35.2089520Z src/orchestration-v2/ThreadPullRequestService.test.ts:119:29 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.2089522Z
2026-10-23T20:46:35.2089604Z 119             getShell: () => Effect.succeed(Option.some(project)),
2026-10-23T20:46:35.2089659Z                                 ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2089661Z
2026-10-23T20:46:35.2089933Z src/orchestration-v2/ThreadPullRequestService.test.ts:238:31 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.2089936Z
2026-10-23T20:46:35.2090074Z 238               getShell: () => Effect.succeed(Option.some(project)),
2026-10-23T20:46:35.2090130Z                                   ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2090132Z
2026-10-23T20:46:35.2090555Z 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-23T20:46:35.2090558Z
2026-10-23T20:46:35.2090619Z 329                 Effect.catchCause((cause) =>
2026-10-23T20:46:35.2090718Z                     ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2090721Z
2026-10-23T20:46:35.2091113Z 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-23T20:46:35.2091116Z
2026-10-23T20:46:35.2091177Z 353           Effect.catchCause((cause) =>
2026-10-23T20:46:35.2091223Z               ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2091225Z
2026-10-23T20:46:35.2091612Z 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-23T20:46:35.2091614Z
2026-10-23T20:46:35.2091670Z 516           Effect.catchCause((cause) =>
2026-10-23T20:46:35.2091718Z               ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2091721Z
2026-10-23T20:46:35.2092108Z 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-23T20:46:35.2092110Z
2026-10-23T20:46:35.2092162Z 534       Effect.catchCause((cause) =>
2026-10-23T20:46:35.2092213Z           ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2092215Z
2026-10-23T20:46:35.2092601Z 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-23T20:46:35.2092603Z
2026-10-23T20:46:35.2092659Z 576         Effect.catchCause((cause) =>
2026-10-23T20:46:35.2092707Z             ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2092709Z
2026-10-23T20:46:35.2093070Z 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-23T20:46:35.2093073Z
2026-10-23T20:46:35.2093129Z 106       normalize: (item, runOrdinal) =>
2026-10-23T20:46:35.2093174Z           ~~~~~~~~~
2026-10-23T20:46:35.2093177Z
2026-10-23T20:46:35.2093591Z 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-23T20:46:35.2093594Z
2026-10-23T20:46:35.2093696Z 54 const thread = Schema.decodeUnknownSync(OrchestrationV2AppThread)({
2026-10-23T20:46:35.2093744Z                          ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2093746Z
2026-10-23T20:46:35.2094129Z 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-23T20:46:35.2094131Z
2026-10-23T20:46:35.2094176Z 231           try {
2026-10-23T20:46:35.2094220Z               ~~~~~
2026-10-23T20:46:35.2094300Z 232             decodeThreadHistoryCursor(args.query.cursor);
2026-10-23T20:46:35.2094424Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2094466Z ...
2026-10-23T20:46:35.2094599Z 236             return yield* failEnvironmentInternal("orchestration_thread_history_failed", cause);
2026-10-23T20:46:35.2094687Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2094732Z 237           }
2026-10-23T20:46:35.2094775Z     ~~~~~~~~~~~
2026-10-23T20:46:35.2094778Z
2026-10-23T20:46:35.2095069Z src/orchestration-v2/runtimeLayer.test.ts:120:18 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.2095072Z
2026-10-23T20:46:35.2095142Z 120   getById: () => Effect.succeed(Option.none()),
2026-10-23T20:46:35.2095190Z                      ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2095193Z
2026-10-23T20:46:35.2095464Z src/orchestration-v2/runtimeLayer.test.ts:996:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.2095470Z
2026-10-23T20:46:35.2095552Z 996           Effect.succeed(
2026-10-23T20:46:35.2095629Z               ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2095633Z
2026-10-23T20:46:35.2096179Z 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-23T20:46:35.2096187Z
2026-10-23T20:46:35.2096260Z 40         append: (input) =>
2026-10-23T20:46:35.2096336Z            ~~~~~~
2026-10-23T20:46:35.2096339Z
2026-10-23T20:46:35.2096671Z 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-23T20:46:35.2096673Z
2026-10-23T20:46:35.2096741Z 283       const awaitDispatch = (key: string) =>
2026-10-23T20:46:35.2096786Z                 ~~~~~~~~~~~~~
2026-10-23T20:46:35.2096788Z
2026-10-23T20:46:35.2097222Z 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-23T20:46:35.2097224Z
2026-10-23T20:46:35.2097279Z 447       execute: () => Effect.void,
2026-10-23T20:46:35.2097325Z           ~~~~~~~
2026-10-23T20:46:35.2097328Z
2026-10-23T20:46:35.2097682Z 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-23T20:46:35.2097684Z
2026-10-23T20:46:35.2097731Z 92     list: (input) =>
2026-10-23T20:46:35.2097776Z        ~~~~
2026-10-23T20:46:35.2097780Z
2026-10-23T20:46:35.2098124Z 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-23T20:46:35.2098126Z
2026-10-23T20:46:35.2098174Z 102     set: (input) =>
2026-10-23T20:46:35.2098216Z         ~~~
2026-10-23T20:46:35.2098218Z
2026-10-23T20:46:35.2098559Z 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-23T20:46:35.2098561Z
2026-10-23T20:46:35.2098607Z 54     get: (key) =>
2026-10-23T20:46:35.2098651Z        ~~~
2026-10-23T20:46:35.2098653Z
2026-10-23T20:46:35.2099173Z 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-23T20:46:35.2099267Z
2026-10-23T20:46:35.2099323Z 64     put: (key, guide) =>
2026-10-23T20:46:35.2099364Z        ~~~
2026-10-23T20:46:35.2099366Z
2026-10-23T20:46:35.2099721Z 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-23T20:46:35.2099723Z
2026-10-23T20:46:35.2099776Z 45         Effect.catch((error) =>
2026-10-23T20:46:35.2099883Z            ~~~~~~~~~~~~
2026-10-23T20:46:35.2099886Z
2026-10-23T20:46:35.2100211Z 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-23T20:46:35.2100216Z
2026-10-23T20:46:35.2100283Z 75       awaitAttached: () => Effect.succeed(false),
2026-10-23T20:46:35.2100332Z          ~~~~~~~~~~~~~
2026-10-23T20:46:35.2100334Z
2026-10-23T20:46:35.2100703Z 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-23T20:46:35.2100706Z
2026-10-23T20:46:35.2100768Z 78       isAttached: () => Effect.succeed(false),
2026-10-23T20:46:35.2100809Z          ~~~~~~~~~~
2026-10-23T20:46:35.2100811Z
2026-10-23T20:46:35.2101129Z 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-23T20:46:35.2101131Z
2026-10-23T20:46:35.2101237Z 79       endpoint: () => Effect.die("No desktop app is attached to this server."),
2026-10-23T20:46:35.2101280Z          ~~~~~~~~
2026-10-23T20:46:35.2101286Z
2026-10-23T20:46:35.2101595Z 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-23T20:46:35.2101598Z
2026-10-23T20:46:35.2101650Z 80       pointer: () => Effect.void,
2026-10-23T20:46:35.2101695Z          ~~~~~~~
2026-10-23T20:46:35.2101697Z
2026-10-23T20:46:35.2102038Z 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-23T20:46:35.2102040Z
2026-10-23T20:46:35.2102099Z 194     awaitAttached: (key, timeout) =>
2026-10-23T20:46:35.2102142Z         ~~~~~~~~~~~~~
2026-10-23T20:46:35.2102147Z
2026-10-23T20:46:35.2102467Z 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-23T20:46:35.2102472Z
2026-10-23T20:46:35.2102575Z 216     isAttached: (key) => Effect.sync(() => attachedTabs.has(keyOf(key))),
2026-10-23T20:46:35.2102619Z         ~~~~~~~~~~
2026-10-23T20:46:35.2102622Z
2026-10-23T20:46:35.2102947Z 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-23T20:46:35.2102950Z
2026-10-23T20:46:35.2103060Z 218     pointer: (key, pointer) => command({ type: "pointer", ...key, ...pointer }),
2026-10-23T20:46:35.2103101Z         ~~~~~~~
2026-10-23T20:46:35.2103104Z
2026-10-23T20:46:35.2103686Z 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-23T20:46:35.2103756Z
2026-10-23T20:46:35.2103865Z 480     executable: () => Effect.runPromise(previewBrowser.executable),
2026-10-23T20:46:35.2103917Z                           ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2103919Z
2026-10-23T20:46:35.2104420Z 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-23T20:46:35.2104423Z
2026-10-23T20:46:35.2104482Z 687       ? Effect.runPromise(
2026-10-23T20:46:35.2104559Z             ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2104562Z
2026-10-23T20:46:35.2105207Z 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-23T20:46:35.2105214Z
2026-10-23T20:46:35.2105297Z 696     const scope = await Effect.runPromise(Scope.make());
2026-10-23T20:46:35.2105353Z                             ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2105355Z
2026-10-23T20:46:35.2105810Z 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-23T20:46:35.2105816Z
2026-10-23T20:46:35.2105883Z 698       const endpoint = await Effect.runPromise(
2026-10-23T20:46:35.2105937Z                                  ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2105940Z
2026-10-23T20:46:35.2106387Z 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-23T20:46:35.2106393Z
2026-10-23T20:46:35.2106480Z 708           await Effect.runPromise(Scope.close(scope, Exit.void));
2026-10-23T20:46:35.2106530Z                     ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2106535Z
2026-10-23T20:46:35.2107227Z 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-23T20:46:35.2107231Z
2026-10-23T20:46:35.2107364Z 712       await Effect.runPromise(Scope.close(scope, Exit.void));
2026-10-23T20:46:35.2107430Z                 ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2107436Z
2026-10-23T20:46:35.2107888Z 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-23T20:46:35.2107891Z
2026-10-23T20:46:35.2107945Z 1199     await Effect.runPromise(
2026-10-23T20:46:35.2107992Z                ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2107995Z
2026-10-23T20:46:35.2108451Z 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-23T20:46:35.2108454Z
2026-10-23T20:46:35.2108508Z 1688         : await Effect.runPromise(
2026-10-23T20:46:35.2108618Z                      ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2108621Z
2026-10-23T20:46:35.2109076Z 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-23T20:46:35.2109079Z
2026-10-23T20:46:35.2109133Z 1752             ? await Effect.runPromise(
2026-10-23T20:46:35.2109183Z                          ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2109229Z
2026-10-23T20:46:35.2109504Z 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-23T20:46:35.2109507Z
2026-10-23T20:46:35.2109617Z 1755                     ServerBrowserTabNotFoundError: () => Effect.succeed(undefined),
2026-10-23T20:46:35.2109694Z                                                               ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2109697Z
2026-10-23T20:46:35.2110148Z 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-23T20:46:35.2110153Z
2026-10-23T20:46:35.2110224Z 1761           const { sessions } = await Effect.runPromise(
2026-10-23T20:46:35.2110285Z                                           ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2110288Z
2026-10-23T20:46:35.2110790Z 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-23T20:46:35.2110795Z
2026-10-23T20:46:35.2110852Z 1789             await Effect.runPromise(
2026-10-23T20:46:35.2110910Z                        ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2110913Z
2026-10-23T20:46:35.2111425Z 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-23T20:46:35.2111428Z
2026-10-23T20:46:35.2111488Z 1820               await Effect.runPromise(
2026-10-23T20:46:35.2111539Z                          ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2111541Z
2026-10-23T20:46:35.2111993Z 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-23T20:46:35.2111998Z
2026-10-23T20:46:35.2112131Z 1884       await Effect.runPromise(manager.close({ threadId: tab.threadId, tabId: tab.tabId }));
2026-10-23T20:46:35.2112179Z                  ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2112181Z
2026-10-23T20:46:35.2112635Z 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-23T20:46:35.2112637Z
2026-10-23T20:46:35.2112690Z 1952         await Effect.runPromise(
2026-10-23T20:46:35.2112738Z                    ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2112740Z
2026-10-23T20:46:35.2113189Z 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-23T20:46:35.2113251Z
2026-10-23T20:46:35.2113318Z 1964         const snapshot = await Effect.runPromise(
2026-10-23T20:46:35.2113376Z                                     ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2113379Z
2026-10-23T20:46:35.2113870Z 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-23T20:46:35.2113873Z
2026-10-23T20:46:35.2113927Z 2210         await Effect.runPromise(
2026-10-23T20:46:35.2113975Z                    ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2113978Z
2026-10-23T20:46:35.2114262Z 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-23T20:46:35.2114267Z
2026-10-23T20:46:35.2114340Z 179       const receive = (chunk: Uint8Array | string) => {
2026-10-23T20:46:35.2114386Z                 ~~~~~~~
2026-10-23T20:46:35.2114389Z
2026-10-23T20:46:35.2114693Z 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-23T20:46:35.2114698Z
2026-10-23T20:46:35.2114793Z 209     Effect.catch(() => Effect.succeed(HttpServerResponse.empty())),
2026-10-23T20:46:35.2114838Z         ~~~~~~~~~~~~
2026-10-23T20:46:35.2114840Z
2026-10-23T20:46:35.2115171Z 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-23T20:46:35.2115175Z
2026-10-23T20:46:35.2115261Z 860     resolveAvailableEditors: () => cachedAvailableEditors,
2026-10-23T20:46:35.2115311Z         ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2115313Z
2026-10-23T20:46:35.2115648Z 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-23T20:46:35.2115651Z
2026-10-23T20:46:35.2115714Z 861     resolveFileManagerRevealKind: () =>
2026-10-23T20:46:35.2115764Z         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2115766Z
2026-10-23T20:46:35.2116088Z 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-23T20:46:35.2116093Z
2026-10-23T20:46:35.2116146Z 865     launchBrowser: (target) =>
2026-10-23T20:46:35.2116190Z         ~~~~~~~~~~~~~
2026-10-23T20:46:35.2116192Z
2026-10-23T20:46:35.2116500Z 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-23T20:46:35.2116503Z
2026-10-23T20:46:35.2116558Z 869     launchEditor: (input) =>
2026-10-23T20:46:35.2116601Z         ~~~~~~~~~~~~
2026-10-23T20:46:35.2116603Z
2026-10-23T20:46:35.2116857Z src/project/AgentSessionImporter.test.ts:212:15 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.2116859Z
2026-10-23T20:46:35.2116908Z 212               Effect.succeed(
2026-10-23T20:46:35.2116954Z                   ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2116956Z
2026-10-23T20:46:35.2117202Z src/project/ManagedProjectFolders.ts:346:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.2117252Z
2026-10-23T20:46:35.2117339Z 346           ? Effect.succeed(Option.some(folderFor(id.slice(-8))))
2026-10-23T20:46:35.2117387Z                 ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2117389Z
2026-10-23T20:46:35.2117624Z src/project/ManagedProjectFolders.ts:348:15 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.2117627Z
2026-10-23T20:46:35.2117742Z 348             ? Effect.succeed(Option.some(fullFolder))
2026-10-23T20:46:35.2117787Z                   ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2117790Z
2026-10-23T20:46:35.2118112Z 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-23T20:46:35.2118117Z
2026-10-23T20:46:35.2118198Z 432     start: (input, hooks) => locked(start(input, hooks)),
2026-10-23T20:46:35.2118239Z         ~~~~~
2026-10-23T20:46:35.2118242Z
2026-10-23T20:46:35.2118560Z 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-23T20:46:35.2118562Z
2026-10-23T20:46:35.2118635Z 433     cancel: (projectId) => locked(cancel(projectId)),
2026-10-23T20:46:35.2118680Z         ~~~~~~
2026-10-23T20:46:35.2118683Z
2026-10-23T20:46:35.2118996Z 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-23T20:46:35.2118998Z
2026-10-23T20:46:35.2119068Z 434     retry: (projectId) => locked(retry(projectId)),
2026-10-23T20:46:35.2119111Z         ~~~~~
2026-10-23T20:46:35.2119116Z
2026-10-23T20:46:35.2119432Z 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-23T20:46:35.2119434Z
2026-10-23T20:46:35.2119510Z 435     discard: (projectId) => locked(discard(projectId)),
2026-10-23T20:46:35.2119550Z         ~~~~~~~
2026-10-23T20:46:35.2119555Z
2026-10-23T20:46:35.2119887Z 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-23T20:46:35.2119890Z
2026-10-23T20:46:35.2119990Z 21         get: (key) => Effect.sync(() => Option.fromUndefinedOr(bytes.get(key))),
2026-10-23T20:46:35.2120033Z            ~~~
2026-10-23T20:46:35.2120035Z
2026-10-23T20:46:35.2120374Z 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-23T20:46:35.2120378Z
2026-10-23T20:46:35.2120425Z 22         set: (key, value) =>
2026-10-23T20:46:35.2120503Z            ~~~
2026-10-23T20:46:35.2120505Z
2026-10-23T20:46:35.2120842Z 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-23T20:46:35.2120845Z
2026-10-23T20:46:35.2120895Z 26         remove: (key) =>
2026-10-23T20:46:35.2120938Z            ~~~~~~
2026-10-23T20:46:35.2120941Z
2026-10-23T20:46:35.2121269Z 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-23T20:46:35.2121322Z
2026-10-23T20:46:35.2121420Z 30         create: () => Effect.die("Handoff does not create persistent secrets."),
2026-10-23T20:46:35.2121462Z            ~~~~~~
2026-10-23T20:46:35.2121465Z
2026-10-23T20:46:35.2121820Z 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-23T20:46:35.2121823Z
2026-10-23T20:46:35.2122003Z 31         getOrCreateRandom: () => Effect.die("Handoff uses the destination environment identity."),
2026-10-23T20:46:35.2122050Z            ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2122053Z
2026-10-23T20:46:35.2122476Z 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-23T20:46:35.2122480Z
2026-10-23T20:46:35.2122593Z 205     return yield* Schema.decodeUnknownEffect(Schema.fromJsonString(schema))(
2026-10-23T20:46:35.2122648Z                              ~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2122651Z
2026-10-23T20:46:35.2122925Z 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-23T20:46:35.2122927Z
2026-10-23T20:46:35.2122979Z 569         ? Effect.succeed(undefined)
2026-10-23T20:46:35.2123030Z               ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2123032Z
2026-10-23T20:46:35.2123352Z 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-23T20:46:35.2123354Z
2026-10-23T20:46:35.2123407Z 284       current: (driverKind) =>
2026-10-23T20:46:35.2123450Z           ~~~~~~~
2026-10-23T20:46:35.2123452Z
2026-10-23T20:46:35.2123812Z 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-23T20:46:35.2123814Z
2026-10-23T20:46:35.2123874Z 284                 return yield* Effect.fail(
2026-10-23T20:46:35.2123921Z                            ~~~~~
2026-10-23T20:46:35.2123923Z
2026-10-23T20:46:35.2124248Z 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-23T20:46:35.2124250Z
2026-10-23T20:46:35.2124304Z 211     importProfile: (input) =>
2026-10-23T20:46:35.2124346Z         ~~~~~~~~~~~~~
2026-10-23T20:46:35.2124348Z
2026-10-23T20:46:35.2124697Z 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-23T20:46:35.2124700Z
2026-10-23T20:46:35.2124761Z 39       credentials: (namespace, bindingId) =>
2026-10-23T20:46:35.2124804Z          ~~~~~~~~~~~
2026-10-23T20:46:35.2124806Z
2026-10-23T20:46:35.2125184Z 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-23T20:46:35.2125186Z
2026-10-23T20:46:35.2125238Z 2773       Effect.catchCause((cause) =>
2026-10-23T20:46:35.2125285Z            ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2125287Z
2026-10-23T20:46:35.2125660Z 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-23T20:46:35.2125711Z
2026-10-23T20:46:35.2125766Z 3176       Effect.catchCause((cause) =>
2026-10-23T20:46:35.2125808Z            ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2125814Z
2026-10-23T20:46:35.2126135Z 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-23T20:46:35.2126138Z
2026-10-23T20:46:35.2126227Z 3395     listStats: (input) =>
2026-10-23T20:46:35.2126271Z          ~~~~~~~~~
2026-10-23T20:46:35.2126274Z
2026-10-23T20:46:35.2126516Z src/relay/AgentAwarenessRelay.test.ts:271:9 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-23T20:46:35.2126519Z
2026-10-23T20:46:35.2126567Z 271         Effect.succeed(
2026-10-23T20:46:35.2126615Z             ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2126617Z
2026-10-23T20:46:35.2126932Z 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-23T20:46:35.2126935Z
2026-10-23T20:46:35.2127056Z 822     requestCatchUp: () => Queue.offer(catchUpRequests, undefined).pipe(Effect.asVoid),
2026-10-23T20:46:35.2127104Z         ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2127107Z
2026-10-23T20:46:35.2127494Z 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-23T20:46:35.2127500Z
2026-10-23T20:46:35.2127560Z 641     requestDesktopUpdate: (requestId) =>
2026-10-23T20:46:35.2127608Z         ~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2127610Z
2026-10-23T20:46:35.2127988Z 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-23T20:46:35.2127991Z
2026-10-23T20:46:35.2128050Z 647     commitDesktopUpdate: (requestId) =>
2026-10-23T20:46:35.2128094Z         ~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2128097Z
2026-10-23T20:46:35.2128478Z 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-23T20:46:35.2128481Z
2026-10-23T20:46:35.2128540Z 649     cancelDesktopUpdate: (requestId) =>
2026-10-23T20:46:35.2128585Z         ~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2128587Z
2026-10-23T20:46:35.2128957Z 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-23T20:46:35.2128960Z
2026-10-23T20:46:35.2129024Z 698       setDiagnosticsDemand: () => Effect.void,
2026-10-23T20:46:35.2129072Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2129074Z
2026-10-23T20:46:35.2129443Z 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-23T20:46:35.2129445Z
2026-10-23T20:46:35.2129509Z 699       requestDesktopUpdate: () => Effect.void,
2026-10-23T20:46:35.2129556Z           ~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2129558Z
2026-10-23T20:46:35.2129920Z 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-23T20:46:35.2129974Z
2026-10-23T20:46:35.2130037Z 700       commitDesktopUpdate: () => Effect.void,
2026-10-23T20:46:35.2130086Z           ~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2130089Z
2026-10-23T20:46:35.2130498Z 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-23T20:46:35.2130556Z
2026-10-23T20:46:35.2130622Z 701       cancelDesktopUpdate: () => Effect.void,
2026-10-23T20:46:35.2130665Z           ~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2130668Z
2026-10-23T20:46:35.2131007Z 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-23T20:46:35.2131011Z
2026-10-23T20:46:35.2131059Z 1091       readHistory: () =>
2026-10-23T20:46:35.2131105Z            ~~~~~~~~~~~
2026-10-23T20:46:35.2131108Z
2026-10-23T20:46:35.2131468Z 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-23T20:46:35.2131471Z
2026-10-23T20:46:35.2131534Z 1097       setExternalProcesses: () => Effect.void,
2026-10-23T20:46:35.2131584Z            ~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2131586Z
2026-10-23T20:46:35.2131935Z 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-23T20:46:35.2131939Z
2026-10-23T20:46:35.2132001Z 1098       setHostPowerState: () => Effect.void,
2026-10-23T20:46:35.2132048Z            ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2132050Z
2026-10-23T20:46:35.2132346Z 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-23T20:46:35.2132348Z
2026-10-23T20:46:35.2132418Z 1136                             ? Effect.succeed(undefined)
2026-10-23T20:46:35.2132477Z                                    ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2132479Z
2026-10-23T20:46:35.2132763Z 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-23T20:46:35.2132766Z
2026-10-23T20:46:35.2132824Z 166       const results = yield* Effect.all(
2026-10-23T20:46:35.2132872Z                                  ~~~~~~~~~~
2026-10-23T20:46:35.2132876Z
2026-10-23T20:46:35.2133233Z 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-23T20:46:35.2133235Z
2026-10-23T20:46:35.2133292Z 480     return Effect.gen(function* () {
2026-10-23T20:46:35.2133335Z         ~~~~~~
2026-10-23T20:46:35.2133337Z
2026-10-23T20:46:35.2133612Z 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-23T20:46:35.2133617Z
2026-10-23T20:46:35.2133683Z 209           prepareTrial: Effect.succeed(undefined),
2026-10-23T20:46:35.2133739Z                             ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2133741Z
2026-10-23T20:46:35.2134009Z 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-23T20:46:35.2134073Z
2026-10-23T20:46:35.2134133Z 413       const results = yield* Effect.all(
2026-10-23T20:46:35.2134181Z                                  ~~~~~~~~~~
2026-10-23T20:46:35.2134183Z
2026-10-23T20:46:35.2134643Z 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-23T20:46:35.2134646Z
2026-10-23T20:46:35.2134702Z 204     listChangeRequests: (input) =>
2026-10-23T20:46:35.2134748Z         ~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2134751Z
2026-10-23T20:46:35.2135160Z 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-23T20:46:35.2135165Z
2026-10-23T20:46:35.2135216Z 209     getChangeRequest: (input) =>
2026-10-23T20:46:35.2135262Z         ~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2135264Z
2026-10-23T20:46:35.2135679Z 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-23T20:46:35.2135682Z
2026-10-23T20:46:35.2135739Z 214     createChangeRequest: (input) =>
2026-10-23T20:46:35.2135784Z         ~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2135786Z
2026-10-23T20:46:35.2136204Z 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-23T20:46:35.2136211Z
2026-10-23T20:46:35.2136269Z 219     getRepositoryCloneUrls: (input) =>
2026-10-23T20:46:35.2136316Z         ~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2136319Z
2026-10-23T20:46:35.2136728Z 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-23T20:46:35.2136730Z
2026-10-23T20:46:35.2136830Z 224     createRepository: (input) => provider.createRepository(input),
2026-10-23T20:46:35.2137294Z         ~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2137297Z
2026-10-23T20:46:35.2137706Z 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-23T20:46:35.2137711Z
2026-10-23T20:46:35.2137766Z 225     getDefaultBranch: (input) =>
2026-10-23T20:46:35.2137812Z         ~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2137815Z
2026-10-23T20:46:35.2138235Z 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-23T20:46:35.2138237Z
2026-10-23T20:46:35.2138293Z 230     checkoutChangeRequest: (input) =>
2026-10-23T20:46:35.2138343Z         ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2138345Z
2026-10-23T20:46:35.2138706Z 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-23T20:46:35.2138892Z
2026-10-23T20:46:35.2139062Z 345       resolve: (input) => resolveHandle(input).pipe(Effect.map((handle) => handle.provider)),
2026-10-23T20:46:35.2139108Z           ~~~~~~~
2026-10-23T20:46:35.2139110Z
2026-10-23T20:46:35.2139484Z 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-23T20:46:35.2139490Z
2026-10-23T20:46:35.2139541Z 409       Effect.catch((sshError) =>
2026-10-23T20:46:35.2139587Z           ~~~~~~~~~~~~
2026-10-23T20:46:35.2139658Z
2026-10-23T20:46:35.2140050Z 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-23T20:46:35.2140052Z
2026-10-23T20:46:35.2140107Z 556     lookupRepository: (input) =>
2026-10-23T20:46:35.2140155Z         ~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2140158Z
2026-10-23T20:46:35.2140572Z 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-23T20:46:35.2140575Z
2026-10-23T20:46:35.2140630Z 558     prepareClone: (input) =>
2026-10-23T20:46:35.2140675Z         ~~~~~~~~~~~~
2026-10-23T20:46:35.2140677Z
2026-10-23T20:46:35.2141072Z 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-23T20:46:35.2141075Z
2026-10-23T20:46:35.2141133Z 565     cloneRepository: (input, options) =>
2026-10-23T20:46:35.2141179Z         ~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2141184Z
2026-10-23T20:46:35.2141574Z 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-23T20:46:35.2141576Z
2026-10-23T20:46:35.2141634Z 572     discardClone: (destinationPath) =>
2026-10-23T20:46:35.2141679Z         ~~~~~~~~~~~~
2026-10-23T20:46:35.2141681Z
2026-10-23T20:46:35.2142063Z 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-23T20:46:35.2142065Z
2026-10-23T20:46:35.2142122Z 576     publishRepository: (input) =>
2026-10-23T20:46:35.2142168Z         ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2142171Z
2026-10-23T20:46:35.2142499Z 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-23T20:46:35.2142502Z
2026-10-23T20:46:35.2142553Z 708       return yield* Effect.fail(
2026-10-23T20:46:35.2142595Z                  ~~~~~
2026-10-23T20:46:35.2142597Z
2026-10-23T20:46:35.2142889Z 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-23T20:46:35.2142892Z
2026-10-23T20:46:35.2142945Z 113       record: () => Effect.void,
2026-10-23T20:46:35.2142989Z           ~~~~~~
2026-10-23T20:46:35.2142992Z
2026-10-23T20:46:35.2143293Z 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-23T20:46:35.2143359Z
2026-10-23T20:46:35.2143415Z 115       recordOwners: () => Effect.void,
2026-10-23T20:46:35.2143458Z           ~~~~~~~~~~~~
2026-10-23T20:46:35.2143461Z
2026-10-23T20:46:35.2143771Z 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-23T20:46:35.2143774Z
2026-10-23T20:46:35.2143919Z 329   yield* Effect.forever(Effect.sleep(FLUSH_INTERVAL_MS).pipe(Effect.flatMap(() => flushWhenDue)), {
2026-10-23T20:46:35.2144034Z                                                                  ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2144040Z
2026-10-23T20:46:35.2144321Z 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-23T20:46:35.2144323Z
2026-10-23T20:46:35.2144389Z 90       .pipe(Effect.catch(() => Effect.void));
2026-10-23T20:46:35.2144442Z                ~~~~~~~~~~~~
2026-10-23T20:46:35.2144445Z
2026-10-23T20:46:35.2144777Z 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-23T20:46:35.2144779Z
2026-10-23T20:46:35.2144834Z 60     generateCommitMessage: (input) =>
2026-10-23T20:46:35.2144880Z        ~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2144883Z
2026-10-23T20:46:35.2145205Z 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-23T20:46:35.2145208Z
2026-10-23T20:46:35.2145260Z 64     generatePrContent: (input) =>
2026-10-23T20:46:35.2145308Z        ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2145310Z
2026-10-23T20:46:35.2145631Z 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-23T20:46:35.2145634Z
2026-10-23T20:46:35.2145689Z 68     generateBranchName: (input) =>
2026-10-23T20:46:35.2145735Z        ~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2145738Z
2026-10-23T20:46:35.2146066Z 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-23T20:46:35.2146068Z
2026-10-23T20:46:35.2146124Z 72     generateReviewGuide: (input) =>
2026-10-23T20:46:35.2146168Z        ~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2146170Z
2026-10-23T20:46:35.2146493Z 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-23T20:46:35.2146497Z
2026-10-23T20:46:35.2146552Z 76     generateThreadTitle: (input) =>
2026-10-23T20:46:35.2146599Z        ~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2146602Z
2026-10-23T20:46:35.2146890Z 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-23T20:46:35.2146892Z
2026-10-23T20:46:35.2146941Z 172     readSummary: (input) =>
2026-10-23T20:46:35.2146986Z         ~~~~~~~~~~~
2026-10-23T20:46:35.2146989Z
2026-10-23T20:46:35.2147237Z 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-23T20:46:35.2147240Z
2026-10-23T20:46:35.2147299Z 642         usageInstances(driver, settings)
2026-10-23T20:46:35.2147347Z             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2147445Z 643           .pipe(
2026-10-23T20:46:35.2147491Z     ~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2147534Z ...
2026-10-23T20:46:35.2147603Z 664             Effect.provideContext(readerContext),
2026-10-23T20:46:35.2147663Z     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2147705Z 665           ),
2026-10-23T20:46:35.2147750Z     ~~~~~~~~~~~
2026-10-23T20:46:35.2147753Z
2026-10-23T20:46:35.2148146Z 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-23T20:46:35.2148150Z
2026-10-23T20:46:35.2148205Z 4009         Effect.flatMap((result) =>
2026-10-23T20:46:35.2148252Z              ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2148255Z
2026-10-23T20:46:35.2148599Z 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-23T20:46:35.2148603Z
2026-10-23T20:46:35.2148668Z 4500     commit: (cwd, subject, body, options) =>
2026-10-23T20:46:35.2148708Z          ~~~~~~
2026-10-23T20:46:35.2148711Z
2026-10-23T20:46:35.2149081Z 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-23T20:46:35.2149083Z
2026-10-23T20:46:35.2149170Z 4502     pushCurrentBranch: (cwd, fallbackBranch, options) =>
2026-10-23T20:46:35.2149216Z          ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2149220Z
2026-10-23T20:46:35.2149549Z 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-23T20:46:35.2149553Z
2026-10-23T20:46:35.2149680Z 4504     pullCurrentBranch: (cwd) => withListRefsInvalidation(cwd, pullCurrentBranch(cwd)),
2026-10-23T20:46:35.2149726Z          ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2149729Z
2026-10-23T20:46:35.2150067Z 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-23T20:46:35.2150069Z
2026-10-23T20:46:35.2150131Z 4511     createWorktree: (input, options) =>
2026-10-23T20:46:35.2150174Z          ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2150178Z
2026-10-23T20:46:35.2150580Z 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-23T20:46:35.2150584Z
2026-10-23T20:46:35.2150645Z 4513     fetchPullRequestBranch: (input) =>
2026-10-23T20:46:35.2150694Z          ~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2150697Z
2026-10-23T20:46:35.2151039Z 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-23T20:46:35.2151041Z
2026-10-23T20:46:35.2151103Z 4517     refreshCheckedOutBranch: (input) =>
2026-10-23T20:46:35.2151149Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2151151Z
2026-10-23T20:46:35.2151479Z 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-23T20:46:35.2151482Z
2026-10-23T20:46:35.2151610Z 4519     ensureRemote: (input) => withListRefsInvalidation(input.cwd, ensureRemote(input)),
2026-10-23T20:46:35.2151711Z          ~~~~~~~~~~~~
2026-10-23T20:46:35.2151713Z
2026-10-23T20:46:35.2152031Z 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-23T20:46:35.2152036Z
2026-10-23T20:46:35.2152085Z 4522     fetchRemote: (input) =>
2026-10-23T20:46:35.2152129Z          ~~~~~~~~~~~
2026-10-23T20:46:35.2152131Z
2026-10-23T20:46:35.2152512Z 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-23T20:46:35.2152515Z
2026-10-23T20:46:35.2152577Z 4537     fetchWorktreeBaseCommit: (input) =>
2026-10-23T20:46:35.2152621Z          ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2152623Z
2026-10-23T20:46:35.2152952Z 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-23T20:46:35.2152957Z
2026-10-23T20:46:35.2153099Z 4539     fetchRemoteBranch: (input) => withListRefsInvalidation(input.cwd, fetchRemoteBranch(input)),
2026-10-23T20:46:35.2153146Z          ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2153150Z
2026-10-23T20:46:35.2153500Z 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-23T20:46:35.2153503Z
2026-10-23T20:46:35.2153564Z 4540     fetchRemoteTrackingBranch: (input) =>
2026-10-23T20:46:35.2153616Z          ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2153618Z
2026-10-23T20:46:35.2153947Z 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-23T20:46:35.2153951Z
2026-10-23T20:46:35.2154093Z 4542     setBranchUpstream: (input) => withListRefsInvalidation(input.cwd, setBranchUpstream(input)),
2026-10-23T20:46:35.2154140Z          ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2154142Z
2026-10-23T20:46:35.2154467Z 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-23T20:46:35.2154473Z
2026-10-23T20:46:35.2154603Z 4543     removeWorktree: (input) => withListRefsInvalidation(input.cwd, removeWorktree(input)),
2026-10-23T20:46:35.2154650Z          ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2154652Z
2026-10-23T20:46:35.2154982Z 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-23T20:46:35.2154986Z
2026-10-23T20:46:35.2155117Z 4544     pruneWorktrees: (input) => withListRefsInvalidation(input.cwd, pruneWorktrees(input)),
2026-10-23T20:46:35.2155159Z          ~~~~~~~~~~~~~~
2026-10-23T20:46:35.2155161Z
2026-10-23T20:46:35.2155493Z 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-23T20:46:35.2155498Z
2026-10-23T20:46:35.2155637Z 4545     deleteLocalBranch: (input) => withListRefsInvalidation(input.cwd, deleteLocalBranch(input)),
2026-10-23T20:46:35.2155684Z          ~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2155686Z
2026-10-23T20:46:35.2156010Z 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-23T20:46:35.2156082Z
2026-10-23T20:46:35.2156203Z 4546     renameBranch: (input) => withListRefsInvalidation(input.cwd, renameBranch(input)),
2026-10-23T20:46:35.2156248Z          ~~~~~~~~~~~~
2026-10-23T20:46:35.2156251Z
2026-10-23T20:46:35.2156568Z 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-23T20:46:35.2156570Z
2026-10-23T20:46:35.2156732Z 4547     createRef: (input) => withListRefsInvalidation(input.cwd, createRef(input)),
2026-10-23T20:46:35.2156778Z          ~~~~~~~~~
2026-10-23T20:46:35.2156780Z
2026-10-23T20:46:35.2157097Z 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-23T20:46:35.2157104Z
2026-10-23T20:46:35.2157210Z 4548     switchRef: (input) => withListRefsInvalidation(input.cwd, switchRef(input)),
2026-10-23T20:46:35.2157255Z          ~~~~~~~~~
2026-10-23T20:46:35.2157257Z
2026-10-23T20:46:35.2157651Z 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-23T20:46:35.2157654Z
2026-10-23T20:46:35.2157726Z 153     return serverSettings.getSettings.pipe(
2026-10-23T20:46:35.2157767Z         ~~~~~~
2026-10-23T20:46:35.2157769Z
2026-10-23T20:46:35.2158078Z 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-23T20:46:35.2158081Z
2026-10-23T20:46:35.2158167Z 171       }).pipe(Effect.catch(() => Effect.succeed(undefined)));
2026-10-23T20:46:35.2158214Z                   ~~~~~~~~~~~~
2026-10-23T20:46:35.2158217Z
2026-10-23T20:46:35.2158500Z 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-23T20:46:35.2158503Z
2026-10-23T20:46:35.2158581Z 171       }).pipe(Effect.catch(() => Effect.succeed(undefined)));
2026-10-23T20:46:35.2158644Z                                      ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2158647Z
2026-10-23T20:46:35.2158890Z 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-23T20:46:35.2158892Z
2026-10-23T20:46:35.2158995Z 401           resolveFileManagerRevealKind: () => Effect.succeed(undefined),
2026-10-23T20:46:35.2159064Z                                                   ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-23T20:46:35.2159066Z
2026-10-23T20:46:35.2159349Z 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-23T20:46:35.2159352Z
2026-10-23T20:46:35.2159416Z 1384         return yield* Option.match(project, {
2026-10-23T20:46:35.2159467Z                            ~~~~~~~~~~~~
2026-10-23T20:46:35.2159469Z
2026-10-23T20:46:35.2159783Z 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-23T20:46:35.2159785Z
2026-10-23T20:46:35.2159845Z 2319                 return yield* Effect.fail(
2026-10-23T20:46:35.2159892Z                             ~~~~~
2026-10-23T20:46:35.2159894Z
2026-10-23T20:46:35.2160198Z 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-23T20:46:35.2160250Z
2026-10-23T20:46:35.2160309Z 2328                 return yield* Effect.fail(
2026-10-23T20:46:35.2160358Z                             ~~~~~
2026-10-23T20:46:35.2160361Z
2026-10-23T20:46:35.2160740Z 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-23T20:46:35.2160743Z
2026-10-23T20:46:35.2160797Z 2336                 return yield* Effect.fail(
2026-10-23T20:46:35.2160846Z                             ~~~~~
2026-10-23T20:46:35.2160849Z
2026-10-23T20:46:35.2160851Z
2026-10-23T20:46:35.2160894Z ---
2026-10-23T20:46:35.2161181Z 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-23T20:46:35.2671376Z Post job cleanup.
2026-10-23T20:46:35.3376791Z Cache hit occurred on the primary key electron-Linux-X64-854e11ddd491bd4f350eebb67a74265df119376a3984c8e153cfe5fc8ced6309, not saving cache.
2026-10-23T20:46:35.3461840Z Post job cleanup.
2026-10-23T20:46:35.3481627Z ##[start-action display=Cache full pnpm store;id=__97321d4e-8b82-422e-8dbf-31160c75c7ea.__actions_cache]
2026-10-23T20:46:35.4211017Z Post job cleanup.
2026-10-23T20:46:35.5143585Z Cache hit occurred on the primary key pnpm-full-v1-Linux-X64-2baa264059789b1dde4bbc8fdc5b8342f31f2fc8e6176e5c5e486efdd242b36c, not saving cache.
2026-10-23T20:46:35.5194977Z ##[end-action id=__97321d4e-8b82-422e-8dbf-31160c75c7ea.__actions_cache;outcome=success;conclusion=success;duration_ms=171]
2026-10-23T20:46:35.5197933Z ##[start-action display=Cache Vite+;id=__97321d4e-8b82-422e-8dbf-31160c75c7ea.vp_cache]
2026-10-23T20:46:35.5233219Z Post job cleanup.
2026-10-23T20:46:35.6197508Z 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-23T20:46:35.6244703Z ##[end-action id=__97321d4e-8b82-422e-8dbf-31160c75c7ea.vp_cache;outcome=success;conclusion=success;duration_ms=104]
2026-10-23T20:46:35.6294942Z Post job cleanup.
2026-10-23T20:46:35.6907421Z [command]/usr/local/bin/git version
2026-10-23T20:46:35.6944634Z git version 2.55.0
2026-10-23T20:46:35.6966846Z Temporarily overriding HOME='/home/runner/_work/_temp/3496209c-c182-4b00-93e3-830fe0a8926b' before making global git config changes
2026-10-23T20:46:35.6967459Z Adding repository directory to the temporary git global config as a safe directory
2026-10-23T20:46:35.6970515Z [command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
2026-10-23T20:46:35.7009344Z Removing SSH command configuration
2026-10-23T20:46:35.7014394Z [command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-10-23T20:46:35.7050123Z [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-23T20:46:35.7230163Z fatal: No url found for submodule path '.repos/alchemy-effect/submodules/distilled' in .gitmodules
2026-10-23T20:46:35.7264494Z ##[warning]The process '/usr/local/bin/git' failed with exit code 128
2026-10-23T20:46:35.7330667Z A job completed hook has been configured by the self-hosted runner administrator
2026-10-23T20:46:35.7352875Z ##[group]Run '/job_completed.sh'
2026-10-23T20:46:35.7364792Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
2026-10-23T20:46:35.7365061Z env:
2026-10-23T20:46:35.7365244Z   BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 190
2026-10-23T20:46:35.7365493Z   BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 500
2026-10-23T20:46:35.7365732Z   BLACKSMITH_CHECK_RUN_ID: 120647557627
2026-10-23T20:46:35.7365987Z   BLACKSMITH_JOB_DISPLAY_NAME: Build and Typecheck
2026-10-23T20:46:35.7366482Z   GITHUB_ACTIONS_CACHE_MODE: write
2026-10-23T20:46:35.7366698Z ##[endgroup]
2026-10-23T20:46:35.7481765Z Docker container cache not activated, skipping hash computation.
2026-10-23T20:46:35.7783562Z No active SSH sessions detected. Proceeding with shutdown immediately.
2026-10-23T20:46:35.7840424Z Cleaning up orphan processes