GitHub check
256 KB of 547 KB loaded Download the full log (547 KB)
291 KB of earlier output not loaded
the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.checkoutChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1844770Z
2026-10-25T02:20:15.1844827Z 171 checkoutChangeRequest: (input) =>
2026-10-25T02:20:15.1844970Z ~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1845048Z
2026-10-25T02:20:15.1845051Z
2026-10-25T02:20:15.1845120Z ~/packages/source-control-forgejo$ tsc --noEmit
2026-10-25T02:20:15.1845234Z
2026-10-25T02:20:15.1845291Z ~/packages/provider-grok$ tsc --noEmit
2026-10-25T02:20:15.1845683Z src/server/GitCafeCredentials.ts:163:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitCafeCredentials.get")((host) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1846022Z
2026-10-25T02:20:15.1846067Z 163 get: (host) =>
2026-10-25T02:20:15.1846177Z ~~~
2026-10-25T02:20:15.1846235Z
2026-10-25T02:20:15.1846542Z src/server/GitCafeCredentials.ts:176:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitCafeCredentials.invalidate")((host) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1846891Z
2026-10-25T02:20:15.1846989Z 176 invalidate: (host) => Cache.invalidate(cache, normalizeHost(host)),
2026-10-25T02:20:15.1847174Z ~~~~~~~~~~
2026-10-25T02:20:15.1847240Z
2026-10-25T02:20:15.1847541Z src/server/GitCafeCredentials.ts:177:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitCafeCredentials.cliEnv")((host) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1847882Z
2026-10-25T02:20:15.1847931Z 177 cliEnv: (host) =>
2026-10-25T02:20:15.1848043Z ~~~~~~
2026-10-25T02:20:15.1848104Z
2026-10-25T02:20:15.1848363Z src/server/GitCafePullRequestProvider.ts:414:9 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-25T02:20:15.1848656Z
2026-10-25T02:20:15.1848708Z 414 Effect.map(Option.some),
2026-10-25T02:20:15.1848840Z ~~~~~~~~~~
2026-10-25T02:20:15.1848908Z
2026-10-25T02:20:15.1849159Z src/server/GitCafePullRequestProvider.ts:419:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1849481Z
2026-10-25T02:20:15.1849545Z 419 : Effect.succeed(Option.none()),
2026-10-25T02:20:15.1849698Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1849782Z
2026-10-25T02:20:15.1850040Z src/server/GitCafePullRequestProvider.ts:727:13 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-25T02:20:15.1850338Z
2026-10-25T02:20:15.1850394Z 727 Effect.map(Option.some),
2026-10-25T02:20:15.1850533Z ~~~~~~~~~~
2026-10-25T02:20:15.1850606Z
2026-10-25T02:20:15.1850854Z src/server/GitCafePullRequestProvider.ts:732:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1851143Z
2026-10-25T02:20:15.1851210Z 732 : Effect.succeed(Option.none()),
2026-10-25T02:20:15.1851361Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1851448Z
2026-10-25T02:20:15.1851798Z src/server/GitCafePullRequestProvider.ts:745:15 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("readPage")((rows, after) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1852136Z
2026-10-25T02:20:15.1852221Z 745 const readPage = (rows: number, after: string | null) => {
2026-10-25T02:20:15.1852392Z ~~~~~~~~
2026-10-25T02:20:15.1852466Z
2026-10-25T02:20:15.1852866Z src/server/GitCafePullRequestProvider.ts:862:13 - suggestion TS377116: `Effect.catchIf` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-25T02:20:15.1853254Z
2026-10-25T02:20:15.1853307Z 862 Effect.catch((error) =>
2026-10-25T02:20:15.1853444Z ~~~~~~~~~~~~
2026-10-25T02:20:15.1853519Z
2026-10-25T02:20:15.1853868Z src/server/GitCafePullRequestProvider.ts:944:19 - suggestion TS377116: `Effect.catchIf` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-25T02:20:15.1854255Z
2026-10-25T02:20:15.1854313Z 944 Effect.catch((error) =>
2026-10-25T02:20:15.1854458Z ~~~~~~~~~~~~
2026-10-25T02:20:15.1854541Z
2026-10-25T02:20:15.1854543Z
2026-10-25T02:20:15.1854599Z ~/packages/provider-pi$ tsc --noEmit
2026-10-25T02:20:15.1855093Z src/server/ForgejoSourceControlProvider.ts:359:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1855535Z
2026-10-25T02:20:15.1855589Z 359 getChangeRequest: (input) =>
2026-10-25T02:20:15.1855719Z ~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1855790Z
2026-10-25T02:20:15.1855792Z
2026-10-25T02:20:15.1855850Z ~/packages/provider-muse$ tsc --noEmit
2026-10-25T02:20:15.1856277Z src/server/driver.ts:171:7 - suggestion TS377120: `Effect.filterOrElse` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-25T02:20:15.1856653Z
2026-10-25T02:20:15.1856707Z 171 Effect.flatMap((snapshot) =>
2026-10-25T02:20:15.1856839Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1856910Z
2026-10-25T02:20:15.1857157Z src/server/xaiAcpExtension.ts:1446:15 - suggestion TS377009: The previous Effect does not fail, so this error-handling branch will never run. effect(catchUnfailableEffect)
2026-10-25T02:20:15.1857442Z
2026-10-25T02:20:15.1857511Z 1446 }).pipe(Effect.catch(() => Effect.void));
2026-10-25T02:20:15.1857667Z ~~~~~~~~~~~~
2026-10-25T02:20:15.1857745Z
2026-10-25T02:20:15.1858015Z src/server/xaiAcpExtension.ts:1446:15 - suggestion TS377099: `Effect.ignore` expresses ignored failure more directly than `Effect.catch` returning `Effect.void`. effect(catchToIgnore)
2026-10-25T02:20:15.1858319Z
2026-10-25T02:20:15.1858386Z 1446 }).pipe(Effect.catch(() => Effect.void));
2026-10-25T02:20:15.1858535Z ~~~~~~~~~~~~
2026-10-25T02:20:15.1858613Z
2026-10-25T02:20:15.1858971Z src/server/xaiAcpExtension.ts:1527:13 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-25T02:20:15.1859554Z
2026-10-25T02:20:15.1859663Z 1527 Effect.catchCause((cause) =>
2026-10-25T02:20:15.1859834Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1859920Z
2026-10-25T02:20:15.1859922Z
2026-10-25T02:20:15.1859993Z ~/packages/provider-opencode$ tsc --noEmit
2026-10-25T02:20:15.1860440Z src/server/adapter.ts:434:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.getCapabilities")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1860944Z
2026-10-25T02:20:15.1861078Z 434 getCapabilities: () => Effect.succeed(PiProviderCapabilitiesV2),
2026-10-25T02:20:15.1861266Z ~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1861334Z
2026-10-25T02:20:15.1861690Z src/server/adapter.ts:435:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.planSelectionTransition")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1862219Z
2026-10-25T02:20:15.1862347Z 435 planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-25T02:20:15.1862558Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1862636Z
2026-10-25T02:20:15.1862861Z src/server/adapter.ts:1662:31 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-25T02:20:15.1863121Z
2026-10-25T02:20:15.1863189Z 1662 Effect.map(Option.some),
2026-10-25T02:20:15.1863354Z ~~~~~~~~~~
2026-10-25T02:20:15.1863448Z
2026-10-25T02:20:15.1863661Z src/server/adapter.ts:1665:29 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1863920Z
2026-10-25T02:20:15.1863989Z 1665 : Effect.succeed(Option.none()),
2026-10-25T02:20:15.1864153Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1864252Z
2026-10-25T02:20:15.1864504Z src/server/rpc.ts:318:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("onSuccess")(function*() { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1864795Z
2026-10-25T02:20:15.1864842Z 318 onSuccess: () =>
2026-10-25T02:20:15.1864960Z ~~~~~~~~~
2026-10-25T02:20:15.1865022Z
2026-10-25T02:20:15.1865233Z src/server/rpc.ts:325:17 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-25T02:20:15.1865482Z
2026-10-25T02:20:15.1865539Z 325 Effect.map(Option.some),
2026-10-25T02:20:15.1865682Z ~~~~~~~~~~
2026-10-25T02:20:15.1865759Z
2026-10-25T02:20:15.1865761Z
2026-10-25T02:20:15.1865821Z ~/packages/provider-cursor$ tsc --noEmit
2026-10-25T02:20:15.1866247Z src/server/adapter.ts:280:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.getCapabilities")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1866624Z
2026-10-25T02:20:15.1866725Z 280 getCapabilities: () => Effect.succeed(MuseProviderCapabilitiesV2),
2026-10-25T02:20:15.1866911Z ~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1866980Z
2026-10-25T02:20:15.1867326Z src/server/adapter.ts:281:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.planSelectionTransition")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1867714Z
2026-10-25T02:20:15.1867835Z 281 planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-25T02:20:15.1868045Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1868122Z
2026-10-25T02:20:15.1868397Z src/server/adapter.ts:382:13 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("TimeoutError")(function*(cause) { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1868712Z
2026-10-25T02:20:15.1868764Z 382 TimeoutError: (cause) =>
2026-10-25T02:20:15.1868899Z ~~~~~~~~~~~~
2026-10-25T02:20:15.1868974Z
2026-10-25T02:20:15.1869194Z src/server/adapter.ts:1359:35 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-25T02:20:15.1869487Z
2026-10-25T02:20:15.1869659Z 1359 wake === held ? Effect.map(dispatch, Option.some) : Effect.succeed(Option.none()),
2026-10-25T02:20:15.1869919Z ~~~~~~~~~~
2026-10-25T02:20:15.1870013Z
2026-10-25T02:20:15.1870226Z src/server/adapter.ts:1359:71 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1870485Z
2026-10-25T02:20:15.1870607Z 1359 wake === held ? Effect.map(dispatch, Option.some) : Effect.succeed(Option.none()),
2026-10-25T02:20:15.1870963Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1871075Z
2026-10-25T02:20:15.1871077Z
2026-10-25T02:20:15.1871145Z ~/packages/provider-acp-registry$ tsc --noEmit
2026-10-25T02:20:15.1871533Z 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-25T02:20:15.1871854Z
2026-10-25T02:20:15.1871913Z 147 return Effect.succeed(undefined);
2026-10-25T02:20:15.1872050Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1872134Z
2026-10-25T02:20:15.1872543Z 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-25T02:20:15.1872981Z
2026-10-25T02:20:15.1873041Z 188 if (!recordable) return Effect.void;
2026-10-25T02:20:15.1873185Z ~~~~~~
2026-10-25T02:20:15.1873267Z
2026-10-25T02:20:15.1873661Z src/server/OpenCodeServerLedger.ts:206: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-25T02:20:15.1874095Z
2026-10-25T02:20:15.1874144Z 206 return Effect.void;
2026-10-25T02:20:15.1874266Z ~~~~~~
2026-10-25T02:20:15.1874327Z
2026-10-25T02:20:15.1874717Z src/server/OpenCodeServerLedger.ts:226: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-25T02:20:15.1875151Z
2026-10-25T02:20:15.1875198Z 226 return fs
2026-10-25T02:20:15.1875302Z ~~~~~~
2026-10-25T02:20:15.1875365Z
2026-10-25T02:20:15.1875674Z src/server/OpenCodeServerLedger.ts:309:29 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OpenCodeServerLedger.track")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1876024Z
2026-10-25T02:20:15.1876130Z 309 OpenCodeServerLedger.of({ track: () => Effect.succeed(Effect.void) }),
2026-10-25T02:20:15.1876327Z ~~~~~
2026-10-25T02:20:15.1876412Z
2026-10-25T02:20:15.1876728Z 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-25T02:20:15.1877082Z
2026-10-25T02:20:15.1877135Z 169 withServer: (use) =>
2026-10-25T02:20:15.1877255Z ~~~~~~~~~~
2026-10-25T02:20:15.1877321Z
2026-10-25T02:20:15.1877722Z 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-25T02:20:15.1878259Z
2026-10-25T02:20:15.1878384Z 103 const OPENCODE_TEST_SETTINGS = Schema.decodeUnknownSync(OpenCodeSettings)({});
2026-10-25T02:20:15.1878604Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1878707Z
2026-10-25T02:20:15.1879125Z src/server/adapter.ts:918:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.getCapabilities")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1879539Z
2026-10-25T02:20:15.1879650Z 918 getCapabilities: () => Effect.succeed(OpenCodeProviderCapabilitiesV2),
2026-10-25T02:20:15.1879844Z ~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1879910Z
2026-10-25T02:20:15.1880307Z src/server/adapter.ts:919:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.planSelectionTransition")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1880689Z
2026-10-25T02:20:15.1880811Z 919 planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-25T02:20:15.1881020Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1881100Z
2026-10-25T02:20:15.1881394Z src/server/adapter.ts:987:33 - suggestion TS377111: `AbortController` is manually constructed inside Effect code. Use `Effect.abortSignal` for Effect-managed cancellation. effect(abortControllerInEffect)
2026-10-25T02:20:15.1881725Z
2026-10-25T02:20:15.1881800Z 987 const abortController = new AbortController();
2026-10-25T02:20:15.1881972Z ~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1882069Z
2026-10-25T02:20:15.1882398Z src/server/adapter.ts:1064: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-25T02:20:15.1882765Z
2026-10-25T02:20:15.1882842Z 1064 if (failure) return yield* Effect.fail(failure);
2026-10-25T02:20:15.1883007Z ~~~~~
2026-10-25T02:20:15.1883094Z
2026-10-25T02:20:15.1883376Z src/server/adapter.ts:1560:15 - suggestion TS377095: `Effect.orElseSucceed` expresses the same recovery more directly than `Effect.catch` followed by `Effect.succeed`. effect(catchToOrElseSucceed)
2026-10-25T02:20:15.1883693Z
2026-10-25T02:20:15.1883771Z 1560 Effect.catch(() => Effect.succeed(undefined)),
2026-10-25T02:20:15.1883933Z ~~~~~~~~~~~~
2026-10-25T02:20:15.1884010Z
2026-10-25T02:20:15.1884264Z src/server/adapter.ts:1560:34 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-25T02:20:15.1884564Z
2026-10-25T02:20:15.1884641Z 1560 Effect.catch(() => Effect.succeed(undefined)),
2026-10-25T02:20:15.1884813Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1884916Z
2026-10-25T02:20:15.1885214Z src/server/adapter.ts:3160:43 - suggestion TS377111: `AbortController` is manually constructed inside Effect code. Use `Effect.abortSignal` for Effect-managed cancellation. effect(abortControllerInEffect)
2026-10-25T02:20:15.1885547Z
2026-10-25T02:20:15.1885631Z 3160 admissionAbortController: new AbortController(),
2026-10-25T02:20:15.1885817Z ~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1885921Z
2026-10-25T02:20:15.1886208Z src/server/adapter.ts:3320:47 - suggestion TS377111: `AbortController` is manually constructed inside Effect code. Use `Effect.abortSignal` for Effect-managed cancellation. effect(abortControllerInEffect)
2026-10-25T02:20:15.1886542Z
2026-10-25T02:20:15.1886634Z 3320 turn.admissionAbortController = new AbortController();
2026-10-25T02:20:15.1886826Z ~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1886931Z
2026-10-25T02:20:15.1887236Z src/server/v2/OpenCode2Client.ts:149:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OpenCode2Client.connect")((_) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1887567Z
2026-10-25T02:20:15.1887672Z 149 connect: ({ baseUrl, password }) => {
2026-10-25T02:20:15.1887813Z ~~~~~~~
2026-10-25T02:20:15.1887875Z
2026-10-25T02:20:15.1888183Z src/server/v2/OpenCode2Server.ts:142:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OpenCode2Server.withConnection")((use) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1888527Z
2026-10-25T02:20:15.1888582Z 142 withConnection: (use) =>
2026-10-25T02:20:15.1888755Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1888825Z
2026-10-25T02:20:15.1889130Z src/server/v2/OpenCode2Server.ts:157:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OpenCode2Server.withConnection")((use) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1889519Z
2026-10-25T02:20:15.1889570Z 157 withConnection: (use) =>
2026-10-25T02:20:15.1889692Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1889760Z
2026-10-25T02:20:15.1889980Z src/server/v2/adapter.ts:1507:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1890237Z
2026-10-25T02:20:15.1890363Z 1507 wake.dropped ? Effect.succeed(Option.none()) : Effect.map(dispatch, Option.some),
2026-10-25T02:20:15.1890573Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1890660Z
2026-10-25T02:20:15.1890883Z src/server/v2/adapter.ts:1507:58 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-25T02:20:15.1891146Z
2026-10-25T02:20:15.1891269Z 1507 wake.dropped ? Effect.succeed(Option.none()) : Effect.map(dispatch, Option.some),
2026-10-25T02:20:15.1891491Z ~~~~~~~~~~
2026-10-25T02:20:15.1891597Z
2026-10-25T02:20:15.1891928Z src/server/v2/adapter.ts:4018:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.getCapabilities")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1892298Z
2026-10-25T02:20:15.1892405Z 4018 getCapabilities: () => Effect.succeed(OpenCode2ProviderCapabilities),
2026-10-25T02:20:15.1892597Z ~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1892666Z
2026-10-25T02:20:15.1893011Z src/server/v2/adapter.ts:4019:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.planSelectionTransition")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1893401Z
2026-10-25T02:20:15.1893521Z 4019 planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-25T02:20:15.1893727Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1893806Z
2026-10-25T02:20:15.1893808Z
2026-10-25T02:20:15.1893882Z ~/packages/source-control-definitions$ tsc --noEmit
2026-10-25T02:20:15.1894256Z src/server/AcpRegistryRuntimeCoordinator.ts:153:52 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-25T02:20:15.1894554Z
2026-10-25T02:20:15.1894690Z 153 return yield* Effect.raceFirst(effect.pipe(Effect.map(Option.some)), foregroundStarted);
2026-10-25T02:20:15.1894921Z ~~~~~~~~~~
2026-10-25T02:20:15.1895024Z
2026-10-25T02:20:15.1895363Z src/server/AcpRegistrySupport.ts:1297:9 - suggestion TS377116: `Effect.catchIf` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-25T02:20:15.1895736Z
2026-10-25T02:20:15.1895785Z 1297 Effect.catch((error) =>
2026-10-25T02:20:15.1895914Z ~~~~~~~~~~~~
2026-10-25T02:20:15.1895986Z
2026-10-25T02:20:15.1896319Z src/server/auth.ts:145: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-25T02:20:15.1896653Z
2026-10-25T02:20:15.1896704Z 145 Option.isSome(result)
2026-10-25T02:20:15.1896836Z ~~~~~~~~~~~~~
2026-10-25T02:20:15.1896915Z
2026-10-25T02:20:15.1897172Z src/server/driver.ts:632:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("enrichSnapshot")((_) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1897517Z
2026-10-25T02:20:15.1897615Z 632 enrichSnapshot: ({ snapshot, getSnapshot, publishSnapshot }) => {
2026-10-25T02:20:15.1897801Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1897871Z
2026-10-25T02:20:15.1898083Z src/server/driver.ts:642:51 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-25T02:20:15.1898340Z
2026-10-25T02:20:15.1898438Z 642 : enrichProviderCached(snapshot).pipe(Effect.map(Option.some))
2026-10-25T02:20:15.1898637Z ~~~~~~~~~~
2026-10-25T02:20:15.1898738Z
2026-10-25T02:20:15.1898741Z
2026-10-25T02:20:15.1899089Z 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-25T02:20:15.1899520Z
2026-10-25T02:20:15.1899589Z 31 read: (credentialSource, sinceMs, untilMs) =>
2026-10-25T02:20:15.1899737Z ~~~~
2026-10-25T02:20:15.1899795Z
2026-10-25T02:20:15.1900084Z 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-25T02:20:15.1900408Z
2026-10-25T02:20:15.1900457Z 82 read: (apiKey) =>
2026-10-25T02:20:15.1900568Z ~~~~
2026-10-25T02:20:15.1900623Z
2026-10-25T02:20:15.1900906Z src/server/accountUsage.ts:358:5 - suggestion TS377095: `Effect.orElseSucceed` expresses the same recovery more directly than `Effect.catch` followed by `Effect.succeed`. effect(catchToOrElseSucceed)
2026-10-25T02:20:15.1901225Z
2026-10-25T02:20:15.1901273Z 358 Effect.catch(() =>
2026-10-25T02:20:15.1901387Z ~~~~~~~~~~~~
2026-10-25T02:20:15.1901453Z
2026-10-25T02:20:15.1901774Z src/server/adapter.ts:897:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.getCapabilities")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1902134Z
2026-10-25T02:20:15.1902239Z 897 getCapabilities: () => Effect.succeed(CursorProviderCapabilitiesV2),
2026-10-25T02:20:15.1902426Z ~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1902492Z
2026-10-25T02:20:15.1902837Z src/server/adapter.ts:898:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.planSelectionTransition")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1903217Z
2026-10-25T02:20:15.1903335Z 898 planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-25T02:20:15.1903541Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1903618Z
2026-10-25T02:20:15.1904073Z 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-25T02:20:15.1904562Z
2026-10-25T02:20:15.1904610Z 55 Effect.runPromise(
2026-10-25T02:20:15.1904733Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1904803Z
2026-10-25T02:20:15.1905065Z 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-25T02:20:15.1905414Z
2026-10-25T02:20:15.1905478Z 59 onNone: () => Effect.succeed(undefined),
2026-10-25T02:20:15.1905636Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1905733Z
2026-10-25T02:20:15.1906177Z 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-25T02:20:15.1906708Z
2026-10-25T02:20:15.1906755Z 69 Effect.runPromise(
2026-10-25T02:20:15.1906877Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1906949Z
2026-10-25T02:20:15.1907393Z 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-25T02:20:15.1907879Z
2026-10-25T02:20:15.1907952Z 82 clear: () => Effect.runPromise(credentials.remove),
2026-10-25T02:20:15.1908114Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1908196Z
2026-10-25T02:20:15.1908527Z 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-25T02:20:15.1908897Z
2026-10-25T02:20:15.1908954Z 228 Effect.flatMap((snapshot) =>
2026-10-25T02:20:15.1909091Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1909165Z
2026-10-25T02:20:15.1909368Z src/server/usageLimits.test.ts:74:5 - suggestion TS377017: This Effect.gen contains a single return statement. effect(unnecessaryEffectGen)
2026-10-25T02:20:15.1909621Z
2026-10-25T02:20:15.1909672Z 74 Effect.gen(function* () {
2026-10-25T02:20:15.1909801Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1909928Z 75 yield* withNodeServices(
2026-10-25T02:20:15.1910056Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1910174Z ...
2026-10-25T02:20:15.1910262Z 115 );
2026-10-25T02:20:15.1910357Z ~~~~~~~~
2026-10-25T02:20:15.1910449Z 116 }),
2026-10-25T02:20:15.1910541Z ~~~~~~
2026-10-25T02:20:15.1910593Z
2026-10-25T02:20:15.1910595Z
2026-10-25T02:20:15.1910597Z
2026-10-25T02:20:15.1910655Z ~/packages/client-runtime$ tsc --noEmit
2026-10-25T02:20:15.1910790Z Result (22 files):
2026-10-25T02:20:15.1910900Z - 0 errors
2026-10-25T02:20:15.1910992Z - 0 warnings
2026-10-25T02:20:15.1911088Z - 0 hints
2026-10-25T02:20:15.1911142Z
2026-10-25T02:20:15.1911144Z
2026-10-25T02:20:15.1911376Z src/authorization/remote.test.ts:334:25 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1911649Z
2026-10-25T02:20:15.1911758Z 334 identity: Effect.succeed(Option.some({ accountId: "user_connect" })),
2026-10-25T02:20:15.1911953Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1912040Z
2026-10-25T02:20:15.1912265Z src/authorization/remote.test.ts:339:17 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1912530Z
2026-10-25T02:20:15.1912604Z 339 id: Effect.succeed(Option.some("device-1")),
2026-10-25T02:20:15.1912764Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1912845Z
2026-10-25T02:20:15.1913176Z src/authorization/service.ts:547:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("RemoteEnvironmentAuthorization.authorizeDpop")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1913549Z
2026-10-25T02:20:15.1913601Z 547 authorizeDpop: (input) =>
2026-10-25T02:20:15.1913725Z ~~~~~~~~~~~~~
2026-10-25T02:20:15.1913795Z
2026-10-25T02:20:15.1914180Z src/authorization/service.ts:549:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("RemoteEnvironmentAuthorization.authorizeDpopHttp")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1914558Z
2026-10-25T02:20:15.1914612Z 549 authorizeDpopHttp: (input) =>
2026-10-25T02:20:15.1914746Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1914816Z
2026-10-25T02:20:15.1915126Z 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-25T02:20:15.1915517Z
2026-10-25T02:20:15.1915570Z 298 registerPairing: (input) =>
2026-10-25T02:20:15.1915697Z ~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1915766Z
2026-10-25T02:20:15.1916076Z 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-25T02:20:15.1916423Z
2026-10-25T02:20:15.1916472Z 304 registerSsh: (input) =>
2026-10-25T02:20:15.1916591Z ~~~~~~~~~~~
2026-10-25T02:20:15.1916655Z
2026-10-25T02:20:15.1916960Z 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-25T02:20:15.1917313Z
2026-10-25T02:20:15.1917366Z 309 updateBearer: (input) =>
2026-10-25T02:20:15.1917490Z ~~~~~~~~~~~~
2026-10-25T02:20:15.1917558Z
2026-10-25T02:20:15.1917904Z src/connection/pullRequestRoutingPermissions.ts:138:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestRoutingPermissions.get")((entry) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1923429Z
2026-10-25T02:20:15.1923487Z 138 get: (entry) =>
2026-10-25T02:20:15.1923616Z ~~~
2026-10-25T02:20:15.1923674Z
2026-10-25T02:20:15.1924040Z src/connection/pullRequestRoutingPermissions.ts:143:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestRoutingPermissions.set")((entry, permission) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1924443Z
2026-10-25T02:20:15.1924497Z 143 set: (entry, permission) => {
2026-10-25T02:20:15.1924631Z ~~~
2026-10-25T02:20:15.1924689Z
2026-10-25T02:20:15.1925054Z src/connection/pullRequestRoutingPermissions.ts:159:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestRoutingPermissions.forget")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1925459Z
2026-10-25T02:20:15.1925510Z 159 forget: (environmentId) =>
2026-10-25T02:20:15.1925636Z ~~~~~~
2026-10-25T02:20:15.1925697Z
2026-10-25T02:20:15.1925970Z 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-25T02:20:15.1926279Z
2026-10-25T02:20:15.1926337Z 1392 ? Effect.succeed(undefined)
2026-10-25T02:20:15.1926480Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1926568Z
2026-10-25T02:20:15.1926831Z 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-25T02:20:15.1927141Z
2026-10-25T02:20:15.1927196Z 1476 ? Effect.succeed(undefined)
2026-10-25T02:20:15.1927332Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1927417Z
2026-10-25T02:20:15.1927680Z 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-25T02:20:15.1928093Z
2026-10-25T02:20:15.1928160Z 1489 : Effect.succeed(undefined),
2026-10-25T02:20:15.1928314Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1928408Z
2026-10-25T02:20:15.1928659Z src/platform/orchestrationCache.test.ts:110:15 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-25T02:20:15.1929007Z
2026-10-25T02:20:15.1929065Z 110 }).pipe(Effect.map(Option.some));
2026-10-25T02:20:15.1929204Z ~~~~~~~~~~
2026-10-25T02:20:15.1929280Z
2026-10-25T02:20:15.1929700Z 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-25T02:20:15.1930109Z
2026-10-25T02:20:15.1930202Z 72 load: (prepared: PreparedConnection, threadId: ThreadId) => {
2026-10-25T02:20:15.1930377Z ~~~~
2026-10-25T02:20:15.1930433Z
2026-10-25T02:20:15.1930732Z 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-25T02:20:15.1931074Z
2026-10-25T02:20:15.1931175Z 56 Effect.catch(() => Effect.succeed(Option.none<AuthSessionState>())),
2026-10-25T02:20:15.1931360Z ~~~~~~~~~~~~
2026-10-25T02:20:15.1931434Z
2026-10-25T02:20:15.1931773Z 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-25T02:20:15.1932146Z
2026-10-25T02:20:15.1932198Z 62 return yield* Effect.fail(
2026-10-25T02:20:15.1932334Z ~~~~~
2026-10-25T02:20:15.1932405Z
2026-10-25T02:20:15.1932703Z 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-25T02:20:15.1933034Z
2026-10-25T02:20:15.1933130Z 57 execute: (target: OutdatedServerUpdateTarget, atomRegistry) => {
2026-10-25T02:20:15.1933306Z ~~~~~~~
2026-10-25T02:20:15.1933366Z
2026-10-25T02:20:15.1933688Z 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-25T02:20:15.1934043Z
2026-10-25T02:20:15.1934094Z 90 load: (prepared, input) =>
2026-10-25T02:20:15.1934219Z ~~~~
2026-10-25T02:20:15.1934276Z
2026-10-25T02:20:15.1934675Z 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-25T02:20:15.1935112Z
2026-10-25T02:20:15.1935215Z 34 return yield* Schema.decodeUnknownEffect(codec)(stored.value).pipe(
2026-10-25T02:20:15.1935408Z ~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1935503Z
2026-10-25T02:20:15.1935730Z src/state/queryPersistence.ts:35:9 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-25T02:20:15.1936000Z
2026-10-25T02:20:15.1936051Z 35 Effect.map(Option.some),
2026-10-25T02:20:15.1936179Z ~~~~~~~~~~
2026-10-25T02:20:15.1936246Z
2026-10-25T02:20:15.1936511Z 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-25T02:20:15.1936816Z
2026-10-25T02:20:15.1936931Z 680 execute: (target, atomRegistry) => {
2026-10-25T02:20:15.1937064Z ~~~~~~~
2026-10-25T02:20:15.1937125Z
2026-10-25T02:20:15.1937453Z 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-25T02:20:15.1937820Z
2026-10-25T02:20:15.1937873Z 1125 Effect.flatMap((summary) =>
2026-10-25T02:20:15.1938059Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1938136Z
2026-10-25T02:20:15.1938356Z src/state/shell-sync.test.ts:90:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1938615Z
2026-10-25T02:20:15.1938686Z 90 loadShell: () => Effect.succeed(Option.none()),
2026-10-25T02:20:15.1938844Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1938931Z
2026-10-25T02:20:15.1939154Z src/state/shell-sync.test.ts:96:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1939446Z
2026-10-25T02:20:15.1939517Z 96 loadThread: () => Effect.succeed(Option.none()),
2026-10-25T02:20:15.1939677Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1939765Z
2026-10-25T02:20:15.1939980Z src/state/shell-sync.test.ts:99:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1940238Z
2026-10-25T02:20:15.1940319Z 99 loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-25T02:20:15.1940489Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1940582Z
2026-10-25T02:20:15.1940803Z src/state/shell-sync.test.ts:101:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1941062Z
2026-10-25T02:20:15.1941140Z 101 loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-25T02:20:15.1941302Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1941395Z
2026-10-25T02:20:15.1941616Z src/state/shell-sync.test.ts:108:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1941877Z
2026-10-25T02:20:15.1941943Z 108 load: () => Effect.succeed(Option.none()),
2026-10-25T02:20:15.1942098Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1942183Z
2026-10-25T02:20:15.1942403Z src/state/shell-sync.test.ts:229:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1942663Z
2026-10-25T02:20:15.1942735Z 229 loadShell: () => Effect.succeed(Option.none()),
2026-10-25T02:20:15.1942893Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1942980Z
2026-10-25T02:20:15.1943200Z src/state/shell-sync.test.ts:238:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1943458Z
2026-10-25T02:20:15.1943531Z 238 loadThread: () => Effect.succeed(Option.none()),
2026-10-25T02:20:15.1943688Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1943776Z
2026-10-25T02:20:15.1943995Z src/state/shell-sync.test.ts:241:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1944258Z
2026-10-25T02:20:15.1944342Z 241 loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-25T02:20:15.1944513Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1944608Z
2026-10-25T02:20:15.1944828Z src/state/shell-sync.test.ts:243:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1945087Z
2026-10-25T02:20:15.1945209Z 243 loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-25T02:20:15.1945373Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1945462Z
2026-10-25T02:20:15.1945679Z src/state/shell-sync.test.ts:250:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1945937Z
2026-10-25T02:20:15.1946002Z 250 load: () => Effect.succeed(Option.none()),
2026-10-25T02:20:15.1946093Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1946095Z
2026-10-25T02:20:15.1946311Z src/state/shell-sync.test.ts:349:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1946313Z
2026-10-25T02:20:15.1946383Z 349 loadShell: () => Effect.succeed(Option.none()),
2026-10-25T02:20:15.1946431Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1946433Z
2026-10-25T02:20:15.1946649Z src/state/shell-sync.test.ts:355:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1946653Z
2026-10-25T02:20:15.1946724Z 355 loadThread: () => Effect.succeed(Option.none()),
2026-10-25T02:20:15.1946773Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1946775Z
2026-10-25T02:20:15.1946990Z src/state/shell-sync.test.ts:358:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1946994Z
2026-10-25T02:20:15.1947076Z 358 loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-25T02:20:15.1947126Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1947128Z
2026-10-25T02:20:15.1947343Z src/state/shell-sync.test.ts:360:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1947346Z
2026-10-25T02:20:15.1947420Z 360 loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-25T02:20:15.1947469Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1947472Z
2026-10-25T02:20:15.1947686Z src/state/shell-sync.test.ts:367:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1947688Z
2026-10-25T02:20:15.1947750Z 367 load: () => Effect.succeed(Option.none()),
2026-10-25T02:20:15.1947798Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1947800Z
2026-10-25T02:20:15.1948017Z src/state/shell-sync.test.ts:446:26 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1948019Z
2026-10-25T02:20:15.1948106Z 446 loadShell: () => Effect.succeed(Option.some(cachedSnapshot)),
2026-10-25T02:20:15.1948156Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1948158Z
2026-10-25T02:20:15.1948373Z src/state/shell-sync.test.ts:448:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1948375Z
2026-10-25T02:20:15.1948447Z 448 loadThread: () => Effect.succeed(Option.none()),
2026-10-25T02:20:15.1948494Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1948497Z
2026-10-25T02:20:15.1948713Z src/state/shell-sync.test.ts:451:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1948718Z
2026-10-25T02:20:15.1948798Z 451 loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-25T02:20:15.1948848Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1948850Z
2026-10-25T02:20:15.1949064Z src/state/shell-sync.test.ts:453:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1949107Z
2026-10-25T02:20:15.1949181Z 453 loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-25T02:20:15.1949230Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1949232Z
2026-10-25T02:20:15.1949474Z src/state/shell-sync.test.ts:460:21 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1949476Z
2026-10-25T02:20:15.1949595Z 460 load: () => Effect.succeed(Option.some(httpSnapshot)),
2026-10-25T02:20:15.1949640Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1949642Z
2026-10-25T02:20:15.1949856Z src/state/shell-sync.test.ts:509:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1949858Z
2026-10-25T02:20:15.1949929Z 509 loadShell: () => Effect.succeed(Option.none()),
2026-10-25T02:20:15.1949974Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1949976Z
2026-10-25T02:20:15.1950195Z src/state/shell-sync.test.ts:511:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1950197Z
2026-10-25T02:20:15.1950268Z 511 loadThread: () => Effect.succeed(Option.none()),
2026-10-25T02:20:15.1950316Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1950319Z
2026-10-25T02:20:15.1950533Z src/state/shell-sync.test.ts:514:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1950538Z
2026-10-25T02:20:15.1950616Z 514 loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-25T02:20:15.1950668Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1950670Z
2026-10-25T02:20:15.1950889Z src/state/shell-sync.test.ts:516:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1950893Z
2026-10-25T02:20:15.1950965Z 516 loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-25T02:20:15.1951012Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1951015Z
2026-10-25T02:20:15.1951333Z src/state/shellSnapshotHttp.ts:104:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ShellSnapshotLoader.load")((prepared, options) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1951337Z
2026-10-25T02:20:15.1951387Z 104 load: (prepared, options) =>
2026-10-25T02:20:15.1951429Z ~~~~
2026-10-25T02:20:15.1951432Z
2026-10-25T02:20:15.1951795Z src/state/threadHistoryController.ts:52:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadHistoryController.register")((environmentId, threadId, handler) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1951797Z
2026-10-25T02:20:15.1951867Z 52 register: (environmentId, threadId, handler) =>
2026-10-25T02:20:15.1951909Z ~~~~~~~~
2026-10-25T02:20:15.1951912Z
2026-10-25T02:20:15.1952244Z src/state/threadHistoryController.ts:64:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadHistoryController.unregister")((registration) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1952246Z
2026-10-25T02:20:15.1952297Z 64 unregister: (registration) =>
2026-10-25T02:20:15.1952339Z ~~~~~~~~~~
2026-10-25T02:20:15.1952341Z
2026-10-25T02:20:15.1952712Z src/state/threadHistoryController.ts:79:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadHistoryController.loadEarlier")((environmentId, threadId, throughEntryId) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1952714Z
2026-10-25T02:20:15.1952800Z 79 loadEarlier: (environmentId, threadId, throughEntryId) =>
2026-10-25T02:20:15.1952842Z ~~~~~~~~~~~
2026-10-25T02:20:15.1952884Z
2026-10-25T02:20:15.1953255Z src/state/threadHistoryController.ts:89:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadHistoryController.reconcilePendingWork")((environmentId, threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1953258Z
2026-10-25T02:20:15.1953334Z 89 reconcilePendingWork: (environmentId, threadId) =>
2026-10-25T02:20:15.1953377Z ~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1953428Z
2026-10-25T02:20:15.1953832Z src/state/threads-sync.test.ts:374:18 - 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-25T02:20:15.1953834Z
2026-10-25T02:20:15.1953911Z 374 Schema.decodeUnknownEffect(schema)(stale).pipe(
2026-10-25T02:20:15.1953959Z ~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1953963Z
2026-10-25T02:20:15.1954190Z src/state/threads-sync.test.ts:1520:29 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1954193Z
2026-10-25T02:20:15.1954274Z 1520 : { loadCached: Effect.succeed(Option.some(saved!)) },
2026-10-25T02:20:15.1954326Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1954329Z
2026-10-25T02:20:15.1954590Z 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-25T02:20:15.1954592Z
2026-10-25T02:20:15.1954681Z 447 execute: (input: RunVcsStackedActionInput, registry) => {
2026-10-25T02:20:15.1954721Z ~~~~~~~
2026-10-25T02:20:15.1954723Z
2026-10-25T02:20:15.1954725Z
2026-10-25T02:20:15.1954775Z ~/apps/mobile$ tsc --noEmit
2026-10-25T02:20:15.1954824Z ~/infra/relay$ tsc --noEmit
2026-10-25T02:20:15.1954873Z ~/apps/web$ tsc --noEmit
2026-10-25T02:20:15.1954924Z ~/apps/desktop$ tsc --noEmit
2026-10-25T02:20:15.1955236Z src/app/DesktopAppActivation.ts:385:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppActivation.complete")((response) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1955238Z
2026-10-25T02:20:15.1955340Z 385 complete: (response) => Effect.sync(() => broker.complete(response)),
2026-10-25T02:20:15.1955384Z ~~~~~~~~
2026-10-25T02:20:15.1955386Z
2026-10-25T02:20:15.1955612Z src/app/DesktopClerk.test.ts:300:27 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1955615Z
2026-10-25T02:20:15.1955698Z 300 currentMainOrFirst: Effect.succeed(Option.some(window)),
2026-10-25T02:20:15.1955748Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1955750Z
2026-10-25T02:20:15.1956028Z 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-25T02:20:15.1956031Z
2026-10-25T02:20:15.1956078Z 459 onSome: (logFile) =>
2026-10-25T02:20:15.1956121Z ~~~~~~
2026-10-25T02:20:15.1956123Z
2026-10-25T02:20:15.1956450Z 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-25T02:20:15.1956456Z
2026-10-25T02:20:15.1956511Z 589 forInstance: (id) => makeForId(id),
2026-10-25T02:20:15.1956554Z ~~~~~~~~~~~
2026-10-25T02:20:15.1956556Z
2026-10-25T02:20:15.1956783Z src/app/DesktopWebLinks.test.ts:29:31 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.1956785Z
2026-10-25T02:20:15.1956911Z 29 currentMainOrFirst: Effect.succeed(Option.some(window)),
2026-10-25T02:20:15.1956961Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1956964Z
2026-10-25T02:20:15.1957241Z 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-25T02:20:15.1957286Z
2026-10-25T02:20:15.1957341Z 72 receive: (url) =>
2026-10-25T02:20:15.1957382Z ~~~~~~~
2026-10-25T02:20:15.1957384Z
2026-10-25T02:20:15.1957681Z 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-25T02:20:15.1957684Z
2026-10-25T02:20:15.1957735Z 77 setRendererReady: (ready) =>
2026-10-25T02:20:15.1957779Z ~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1957781Z
2026-10-25T02:20:15.1958198Z src/backend/DesktopBackendManager.ts:1046:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("onSome")(function*(run) { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1958201Z
2026-10-25T02:20:15.1958248Z 1046 onSome: (run) =>
2026-10-25T02:20:15.1958287Z ~~~~~~
2026-10-25T02:20:15.1958289Z
2026-10-25T02:20:15.1958580Z src/backend/DesktopBackendPool.ts:294:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBackendPool.get")((id) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1958584Z
2026-10-25T02:20:15.1958627Z 294 get: (id) =>
2026-10-25T02:20:15.1958669Z ~~~
2026-10-25T02:20:15.1958671Z
2026-10-25T02:20:15.1958957Z src/backend/DesktopBackendPool.ts:329:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBackendPool.get")((id) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1958961Z
2026-10-25T02:20:15.1959052Z 329 get: (id) => Effect.succeed(Option.fromNullishOr(byId.get(id))),
2026-10-25T02:20:15.1959094Z ~~~
2026-10-25T02:20:15.1959096Z
2026-10-25T02:20:15.1959421Z src/backend/DesktopBackendPool.ts:332:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBackendPool.register")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1959425Z
2026-10-25T02:20:15.1959555Z 332 register: () => Effect.die("DesktopBackendPool.layerTest does not support register"),
2026-10-25T02:20:15.1959596Z ~~~~~~~~
2026-10-25T02:20:15.1959598Z
2026-10-25T02:20:15.1959893Z src/backend/DesktopBackendPool.ts:333:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBackendPool.unregister")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1959896Z
2026-10-25T02:20:15.1960029Z 333 unregister: () => Effect.die("DesktopBackendPool.layerTest does not support unregister"),
2026-10-25T02:20:15.1960070Z ~~~~~~~~~~
2026-10-25T02:20:15.1960072Z
2026-10-25T02:20:15.1960340Z src/electron/ElectronApp.ts:138:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.exit")((code) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1960343Z
2026-10-25T02:20:15.1960385Z 138 exit: (code) =>
2026-10-25T02:20:15.1960425Z ~~~~
2026-10-25T02:20:15.1960427Z
2026-10-25T02:20:15.1960707Z src/electron/ElectronApp.ts:142:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.relaunch")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1960709Z
2026-10-25T02:20:15.1960759Z 142 relaunch: (options) =>
2026-10-25T02:20:15.1960802Z ~~~~~~~~
2026-10-25T02:20:15.1960804Z
2026-10-25T02:20:15.1961141Z src/electron/ElectronApp.ts:146:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.setPath")((name, path) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1961146Z
2026-10-25T02:20:15.1961195Z 146 setPath: (name, path) =>
2026-10-25T02:20:15.1961234Z ~~~~~~~
2026-10-25T02:20:15.1961236Z
2026-10-25T02:20:15.1961508Z src/electron/ElectronApp.ts:150:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.setName")((name) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1961561Z
2026-10-25T02:20:15.1961608Z 150 setName: (name) =>
2026-10-25T02:20:15.1961646Z ~~~~~~~
2026-10-25T02:20:15.1961648Z
2026-10-25T02:20:15.1961950Z src/electron/ElectronApp.ts:154:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.setAboutPanelOptions")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1961953Z
2026-10-25T02:20:15.1962013Z 154 setAboutPanelOptions: (options) =>
2026-10-25T02:20:15.1962057Z ~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1962059Z
2026-10-25T02:20:15.1962349Z src/electron/ElectronApp.ts:158:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.setAppUserModelId")((id) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1962351Z
2026-10-25T02:20:15.1962401Z 158 setAppUserModelId: (id) =>
2026-10-25T02:20:15.1962445Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1962447Z
2026-10-25T02:20:15.1962780Z src/electron/ElectronApp.ts:163:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.setAsDefaultProtocolClient")((protocol, path, args) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1962782Z
2026-10-25T02:20:15.1962865Z 163 setAsDefaultProtocolClient: (protocol, path, args) =>
2026-10-25T02:20:15.1962909Z ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1962912Z
2026-10-25T02:20:15.1963207Z src/electron/ElectronApp.ts:170:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.setDesktopName")((desktopName) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1963209Z
2026-10-25T02:20:15.1963264Z 170 setDesktopName: (desktopName) =>
2026-10-25T02:20:15.1963308Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1963310Z
2026-10-25T02:20:15.1963594Z src/electron/ElectronApp.ts:177:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.setDockIcon")((iconPath) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1963598Z
2026-10-25T02:20:15.1963647Z 177 setDockIcon: (iconPath) =>
2026-10-25T02:20:15.1963687Z ~~~~~~~~~~~
2026-10-25T02:20:15.1963689Z
2026-10-25T02:20:15.1964012Z src/electron/ElectronApp.ts:181:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.appendCommandLineSwitch")((switchName, value) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1964015Z
2026-10-25T02:20:15.1964087Z 181 appendCommandLineSwitch: (switchName, value) =>
2026-10-25T02:20:15.1964130Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1964132Z
2026-10-25T02:20:15.1964437Z src/electron/ElectronApp.ts:189:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.onBeforeQuitForUpdate")((listener) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1964441Z
2026-10-25T02:20:15.1964499Z 189 onBeforeQuitForUpdate: (listener) =>
2026-10-25T02:20:15.1964543Z ~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1964545Z
2026-10-25T02:20:15.1964855Z src/electron/ElectronApp.ts:199:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.removeCommandLineSwitch")((switchName) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1964859Z
2026-10-25T02:20:15.1964965Z 199 removeCommandLineSwitch: (switchName) =>
2026-10-25T02:20:15.1965011Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1965013Z
2026-10-25T02:20:15.1965330Z 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-25T02:20:15.1965333Z
2026-10-25T02:20:15.1965388Z 169 showMessageBox: (options, owner) =>
2026-10-25T02:20:15.1965472Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1965474Z
2026-10-25T02:20:15.1965784Z 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-25T02:20:15.1965786Z
2026-10-25T02:20:15.1965841Z 185 showErrorBox: (title, content) =>
2026-10-25T02:20:15.1965881Z ~~~~~~~~~~~~
2026-10-25T02:20:15.1965883Z
2026-10-25T02:20:15.1966188Z src/electron/ElectronMenu.ts:190:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronMenu.setApplicationMenu")((template) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1966190Z
2026-10-25T02:20:15.1966244Z 190 setApplicationMenu: (template) =>
2026-10-25T02:20:15.1966289Z ~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1966291Z
2026-10-25T02:20:15.1966579Z src/electron/ElectronMenu.ts:204:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronMenu.popupTemplate")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1966582Z
2026-10-25T02:20:15.1966634Z 204 popupTemplate: (input) =>
2026-10-25T02:20:15.1966675Z ~~~~~~~~~~~~~
2026-10-25T02:20:15.1966677Z
2026-10-25T02:20:15.1966967Z src/electron/ElectronMenu.ts:222:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronMenu.showContextMenu")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1966969Z
2026-10-25T02:20:15.1967021Z 222 showContextMenu: (input) =>
2026-10-25T02:20:15.1967066Z ~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1967068Z
2026-10-25T02:20:15.1967423Z 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-25T02:20:15.1967428Z
2026-10-25T02:20:15.1967496Z 82 getSystemIdleState: (idleThresholdSeconds) =>
2026-10-25T02:20:15.1967536Z ~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1967538Z
2026-10-25T02:20:15.1967857Z 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-25T02:20:15.1967860Z
2026-10-25T02:20:15.1967909Z 77 encryptString: (value) =>
2026-10-25T02:20:15.1967951Z ~~~~~~~~~~~~~
2026-10-25T02:20:15.1967953Z
2026-10-25T02:20:15.1968264Z 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-25T02:20:15.1968269Z
2026-10-25T02:20:15.1968315Z 82 decryptString: (value) =>
2026-10-25T02:20:15.1968355Z ~~~~~~~~~~~~~
2026-10-25T02:20:15.1968359Z
2026-10-25T02:20:15.1968651Z src/electron/ElectronShell.ts:66:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronShell.openExternal")((rawUrl) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1968653Z
2026-10-25T02:20:15.1968702Z 66 openExternal: (rawUrl) =>
2026-10-25T02:20:15.1968741Z ~~~~~~~~~~~~
2026-10-25T02:20:15.1968743Z
2026-10-25T02:20:15.1969090Z src/electron/ElectronShell.ts:77:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronShell.openSystemSettings")((pane) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1969092Z
2026-10-25T02:20:15.1969144Z 77 openSystemSettings: (pane) =>
2026-10-25T02:20:15.1969186Z ~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1969189Z
2026-10-25T02:20:15.1969501Z src/electron/ElectronShell.ts:84:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronShell.copyText")((text) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1969547Z
2026-10-25T02:20:15.1969593Z 84 copyText: (text) =>
2026-10-25T02:20:15.1969633Z ~~~~~~~~
2026-10-25T02:20:15.1969636Z
2026-10-25T02:20:15.1969918Z 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-25T02:20:15.1969921Z
2026-10-25T02:20:15.1969968Z 34 setSource: (theme) =>
2026-10-25T02:20:15.1970008Z ~~~~~~~~~
2026-10-25T02:20:15.1970011Z
2026-10-25T02:20:15.1970299Z 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-25T02:20:15.1970302Z
2026-10-25T02:20:15.1970350Z 41 onUpdated: (listener) =>
2026-10-25T02:20:15.1970390Z ~~~~~~~~~
2026-10-25T02:20:15.1970393Z
2026-10-25T02:20:15.1970690Z 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-25T02:20:15.1970692Z
2026-10-25T02:20:15.1970739Z 85 setFeedURL: (options) =>
2026-10-25T02:20:15.1970780Z ~~~~~~~~~~
2026-10-25T02:20:15.1970782Z
2026-10-25T02:20:15.1971087Z 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-25T02:20:15.1971090Z
2026-10-25T02:20:15.1971139Z 90 setAutoDownload: (value) =>
2026-10-25T02:20:15.1971178Z ~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1971181Z
2026-10-25T02:20:15.1971498Z 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-25T02:20:15.1971501Z
2026-10-25T02:20:15.1971559Z 95 setAutoInstallOnAppQuit: (value) =>
2026-10-25T02:20:15.1971603Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1971605Z
2026-10-25T02:20:15.1971901Z 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-25T02:20:15.1971903Z
2026-10-25T02:20:15.1971952Z 100 setChannel: (channel) =>
2026-10-25T02:20:15.1971991Z ~~~~~~~~~~
2026-10-25T02:20:15.1971993Z
2026-10-25T02:20:15.1972301Z 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-25T02:20:15.1972304Z
2026-10-25T02:20:15.1972355Z 105 setAllowPrerelease: (value) =>
2026-10-25T02:20:15.1972401Z ~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1972403Z
2026-10-25T02:20:15.1972711Z 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-25T02:20:15.1972714Z
2026-10-25T02:20:15.1972763Z 111 setAllowDowngrade: (value) =>
2026-10-25T02:20:15.1972805Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1972808Z
2026-10-25T02:20:15.1973161Z 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-25T02:20:15.1973163Z
2026-10-25T02:20:15.1973216Z 116 setFullChangelog: (value) =>
2026-10-25T02:20:15.1973256Z ~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1973258Z
2026-10-25T02:20:15.1973589Z 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-25T02:20:15.1973635Z
2026-10-25T02:20:15.1973703Z 121 setDisableDifferentialDownload: (value) =>
2026-10-25T02:20:15.1973748Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1973750Z
2026-10-25T02:20:15.1974047Z 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-25T02:20:15.1974049Z
2026-10-25T02:20:15.1974122Z 140 quitAndInstall: ({ isSilent, isForceRunAfter }) =>
2026-10-25T02:20:15.1974163Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1974165Z
2026-10-25T02:20:15.1974462Z 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-25T02:20:15.1974466Z
2026-10-25T02:20:15.1974516Z 154 on: (eventName, listener) => {
2026-10-25T02:20:15.1974555Z ~~
2026-10-25T02:20:15.1974558Z
2026-10-25T02:20:15.1974841Z src/electron/ElectronWindow.ts:210:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronWindow.create")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1974843Z
2026-10-25T02:20:15.1974891Z 210 create: (options) => {
2026-10-25T02:20:15.1974931Z ~~~~~~
2026-10-25T02:20:15.1974933Z
2026-10-25T02:20:15.1975216Z src/electron/ElectronWindow.ts:242:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronWindow.setMain")((window) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1975219Z
2026-10-25T02:20:15.1975311Z 242 setMain: (window) => Ref.set(mainWindowRef, Option.some(window)),
2026-10-25T02:20:15.1975352Z ~~~~~~~
2026-10-25T02:20:15.1975354Z
2026-10-25T02:20:15.1975646Z src/electron/ElectronWindow.ts:243:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronWindow.clearMain")((window) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1975648Z
2026-10-25T02:20:15.1975694Z 243 clearMain: (window) =>
2026-10-25T02:20:15.1975734Z ~~~~~~~~~
2026-10-25T02:20:15.1975737Z
2026-10-25T02:20:15.1976034Z src/electron/ElectronWindow.ts:253:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronWindow.prepareReveal")((window) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1976038Z
2026-10-25T02:20:15.1976086Z 253 prepareReveal: (window) =>
2026-10-25T02:20:15.1976127Z ~~~~~~~~~~~~~
2026-10-25T02:20:15.1976129Z
2026-10-25T02:20:15.1976412Z src/electron/ElectronWindow.ts:263:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronWindow.reveal")((window) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1976415Z
2026-10-25T02:20:15.1976462Z 263 reveal: (window) =>
2026-10-25T02:20:15.1976501Z ~~~~~~
2026-10-25T02:20:15.1976503Z
2026-10-25T02:20:15.1976860Z src/settings/DesktopAppSettings.ts:524:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setMainWindowBounds")((bounds, isMaximized) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1976862Z
2026-10-25T02:20:15.1976975Z 524 setMainWindowBounds: (bounds, isMaximized) =>
2026-10-25T02:20:15.1977019Z ~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1977021Z
2026-10-25T02:20:15.1977349Z src/settings/DesktopAppSettings.ts:536:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setServerExposureMode")((mode) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1977352Z
2026-10-25T02:20:15.1977451Z 536 setServerExposureMode: (mode) =>
2026-10-25T02:20:15.1977495Z ~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1977497Z
2026-10-25T02:20:15.1977823Z src/settings/DesktopAppSettings.ts:540:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setTailscaleServe")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1977826Z
2026-10-25T02:20:15.1977878Z 540 setTailscaleServe: (input) =>
2026-10-25T02:20:15.1977920Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1977926Z
2026-10-25T02:20:15.1978252Z src/settings/DesktopAppSettings.ts:544:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setUpdateChannel")((channel) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1978255Z
2026-10-25T02:20:15.1978308Z 544 setUpdateChannel: (channel) =>
2026-10-25T02:20:15.1978351Z ~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1978355Z
2026-10-25T02:20:15.1978687Z src/settings/DesktopAppSettings.ts:548:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setWslBackendEnabled")((enabled) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1978689Z
2026-10-25T02:20:15.1978745Z 548 setWslBackendEnabled: (enabled) =>
2026-10-25T02:20:15.1978791Z ~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1978793Z
2026-10-25T02:20:15.1979111Z src/settings/DesktopAppSettings.ts:552:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setWslDistro")((distro) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1979114Z
2026-10-25T02:20:15.1979163Z 552 setWslDistro: (distro) =>
2026-10-25T02:20:15.1979204Z ~~~~~~~~~~~~
2026-10-25T02:20:15.1979206Z
2026-10-25T02:20:15.1979543Z src/settings/DesktopAppSettings.ts:558:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setWslOnly")((enabled) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1979548Z
2026-10-25T02:20:15.1979595Z 558 setWslOnly: (enabled) =>
2026-10-25T02:20:15.1979637Z ~~~~~~~~~~
2026-10-25T02:20:15.1979639Z
2026-10-25T02:20:15.1979981Z src/settings/DesktopAppSettings.ts:562:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setLocalEnvironmentEnabled")((enabled) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1979985Z
2026-10-25T02:20:15.1980051Z 562 setLocalEnvironmentEnabled: (enabled) =>
2026-10-25T02:20:15.1980093Z ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1980096Z
2026-10-25T02:20:15.1980440Z src/settings/DesktopAppSettings.ts:597:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setMainWindowBounds")((bounds, isMaximized) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1980444Z
2026-10-25T02:20:15.1980517Z 597 setMainWindowBounds: (bounds, isMaximized) =>
2026-10-25T02:20:15.1980561Z ~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1980563Z
2026-10-25T02:20:15.1980890Z src/settings/DesktopAppSettings.ts:599:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setServerExposureMode")((mode) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1980892Z
2026-10-25T02:20:15.1980948Z 599 setServerExposureMode: (mode) =>
2026-10-25T02:20:15.1981031Z ~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1981034Z
2026-10-25T02:20:15.1981356Z src/settings/DesktopAppSettings.ts:601:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setTailscaleServe")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1981358Z
2026-10-25T02:20:15.1981486Z 601 setTailscaleServe: (input) => update((settings) => setTailscaleServe(settings, input)),
2026-10-25T02:20:15.1981578Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1981580Z
2026-10-25T02:20:15.1981903Z src/settings/DesktopAppSettings.ts:602:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setUpdateChannel")((channel) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1981905Z
2026-10-25T02:20:15.1982033Z 602 setUpdateChannel: (channel) => update((settings) => setUpdateChannel(settings, channel)),
2026-10-25T02:20:15.1982079Z ~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1982081Z
2026-10-25T02:20:15.1982412Z src/settings/DesktopAppSettings.ts:603:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setWslBackendEnabled")((enabled) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1982414Z
2026-10-25T02:20:15.1982472Z 603 setWslBackendEnabled: (enabled) =>
2026-10-25T02:20:15.1982516Z ~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1982518Z
2026-10-25T02:20:15.1982832Z src/settings/DesktopAppSettings.ts:605:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setWslDistro")((distro) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1982834Z
2026-10-25T02:20:15.1982948Z 605 setWslDistro: (distro) => update((settings) => setWslDistro(settings, distro)),
2026-10-25T02:20:15.1982991Z ~~~~~~~~~~~~
2026-10-25T02:20:15.1982993Z
2026-10-25T02:20:15.1983306Z src/settings/DesktopAppSettings.ts:606:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setWslOnly")((enabled) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1983308Z
2026-10-25T02:20:15.1983416Z 606 setWslOnly: (enabled) => update((settings) => setWslOnly(settings, enabled)),
2026-10-25T02:20:15.1983457Z ~~~~~~~~~~
2026-10-25T02:20:15.1983461Z
2026-10-25T02:20:15.1983804Z src/settings/DesktopAppSettings.ts:607:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setLocalEnvironmentEnabled")((enabled) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1983806Z
2026-10-25T02:20:15.1983879Z 607 setLocalEnvironmentEnabled: (enabled) =>
2026-10-25T02:20:15.1983929Z ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1983931Z
2026-10-25T02:20:15.1984242Z 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-25T02:20:15.1984245Z
2026-10-25T02:20:15.1984292Z 197 set: (settings) =>
2026-10-25T02:20:15.1984333Z ~~~
2026-10-25T02:20:15.1984335Z
2026-10-25T02:20:15.1984645Z 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-25T02:20:15.1984649Z
2026-10-25T02:20:15.1984739Z 231 set: (settings) => Ref.set(settingsRef, Option.some(settings)),
2026-10-25T02:20:15.1984776Z ~~~
2026-10-25T02:20:15.1984778Z
2026-10-25T02:20:15.1985163Z src/snapShot/DesktopSnapShot.ts:1720:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopSnapShot.setAnimationDestination")((id, destination) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1985165Z
2026-10-25T02:20:15.1985238Z 1720 setAnimationDestination: (id, destination) =>
2026-10-25T02:20:15.1985281Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1985284Z
2026-10-25T02:20:15.1985585Z src/snapShot/DesktopSnapShot.ts:1731:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopSnapShot.dismissAnimation")((id) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1985630Z
2026-10-25T02:20:15.1985679Z 1731 dismissAnimation: (id) =>
2026-10-25T02:20:15.1985722Z ~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1985724Z
2026-10-25T02:20:15.1986017Z src/snapShot/DesktopSnapShot.ts:1736:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopSnapShot.acknowledge")((id) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1986020Z
2026-10-25T02:20:15.1986066Z 1736 acknowledge: (id) =>
2026-10-25T02:20:15.1986106Z ~~~~~~~~~~~
2026-10-25T02:20:15.1986108Z
2026-10-25T02:20:15.1986427Z 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-25T02:20:15.1986429Z
2026-10-25T02:20:15.1986479Z 136 discoverHosts: (input) =>
2026-10-25T02:20:15.1986522Z ~~~~~~~~~~~~~
2026-10-25T02:20:15.1986524Z
2026-10-25T02:20:15.1986835Z 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-25T02:20:15.1986837Z
2026-10-25T02:20:15.1986884Z 141 resolveHost: (alias) =>
2026-10-25T02:20:15.1986925Z ~~~~~~~~~~~
2026-10-25T02:20:15.1986927Z
2026-10-25T02:20:15.1987275Z 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-25T02:20:15.1987277Z
2026-10-25T02:20:15.1987347Z 146 ensureEnvironment: (target, ensureOptions) =>
2026-10-25T02:20:15.1987389Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1987391Z
2026-10-25T02:20:15.1987721Z 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-25T02:20:15.1987725Z
2026-10-25T02:20:15.1987782Z 154 disconnectEnvironment: (target) =>
2026-10-25T02:20:15.1987827Z ~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1987829Z
2026-10-25T02:20:15.1988147Z src/updates/DesktopUpdates.ts:1162:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopUpdates.installPrepared")((expectedVersion) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1988150Z
2026-10-25T02:20:15.1988279Z 1162 installPrepared: (expectedVersion) => installWithExpectedVersion(expectedVersion),
2026-10-25T02:20:15.1988319Z ~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1988321Z
2026-10-25T02:20:15.1988624Z src/wsl/DesktopWslEnvironment.ts:1073:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.preWarm")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1988628Z
2026-10-25T02:20:15.1988679Z 1073 preWarm: () => Effect.void,
2026-10-25T02:20:15.1988719Z ~~~~~~~
2026-10-25T02:20:15.1988721Z
2026-10-25T02:20:15.1989067Z src/wsl/DesktopWslEnvironment.ts:1074:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.windowsToWslPath")((distro, windowsPath) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1989071Z
2026-10-25T02:20:15.1989177Z 1074 windowsToWslPath: (distro, windowsPath) =>
2026-10-25T02:20:15.1989220Z ~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1989222Z
2026-10-25T02:20:15.1989562Z src/wsl/DesktopWslEnvironment.ts:1076:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.getUserHome")((distro) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1989606Z
2026-10-25T02:20:15.1989745Z 1076 getUserHome: (distro) => Effect.succeed(stub.getUserHome?.(distro) ?? Option.none<string>()),
2026-10-25T02:20:15.1989785Z ~~~~~~~~~~~
2026-10-25T02:20:15.1989789Z
2026-10-25T02:20:15.1990102Z src/wsl/DesktopWslEnvironment.ts:1077:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.getDistroIp")((distro) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1990104Z
2026-10-25T02:20:15.1990240Z 1077 getDistroIp: (distro) => Effect.succeed(stub.getDistroIp?.(distro) ?? Option.none<string>()),
2026-10-25T02:20:15.1990281Z ~~~~~~~~~~~
2026-10-25T02:20:15.1990283Z
2026-10-25T02:20:15.1990619Z src/wsl/DesktopWslEnvironment.ts:1078:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.prepareRuntime")((distro, archive) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1990621Z
2026-10-25T02:20:15.1990682Z 1078 prepareRuntime: (distro, archive) =>
2026-10-25T02:20:15.1990724Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1990726Z
2026-10-25T02:20:15.1991061Z src/wsl/DesktopWslEnvironment.ts:1085:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.pruneRuntimes")((distro, runtimeId) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1991063Z
2026-10-25T02:20:15.1991197Z 1085 pruneRuntimes: (distro, runtimeId) => stub.pruneRuntimes?.(distro, runtimeId) ?? Effect.void,
2026-10-25T02:20:15.1991239Z ~~~~~~~~~~~~~
2026-10-25T02:20:15.1991241Z
2026-10-25T02:20:15.1991584Z src/wsl/DesktopWslEnvironment.ts:1086:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.invalidateRuntime")((distro, runtimeId) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1991587Z
2026-10-25T02:20:15.1991651Z 1086 invalidateRuntime: (distro, runtimeId) =>
2026-10-25T02:20:15.1991697Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1991699Z
2026-10-25T02:20:15.1992035Z src/wsl/DesktopWslEnvironment.ts:1088:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.probeRuntime")((distro, linuxAppRoot) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1992038Z
2026-10-25T02:20:15.1992101Z 1088 probeRuntime: (distro, linuxAppRoot) =>
2026-10-25T02:20:15.1992141Z ~~~~~~~~~~~~
2026-10-25T02:20:15.1992144Z
2026-10-25T02:20:15.1992500Z src/wsl/DesktopWslEnvironment.ts:1092:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.ensureNodePty")((distro, linuxAppRoot, options) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1992502Z
2026-10-25T02:20:15.1992579Z 1092 ensureNodePty: (distro, linuxAppRoot, options) =>
2026-10-25T02:20:15.1992622Z ~~~~~~~~~~~~~
2026-10-25T02:20:15.1992625Z
2026-10-25T02:20:15.1992933Z src/wsl/DesktopWslEnvironment.ts:1154:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.preWarm")((distro) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1992935Z
2026-10-25T02:20:15.1992982Z 1154 preWarm: (distro) =>
2026-10-25T02:20:15.1993022Z ~~~~~~~
2026-10-25T02:20:15.1993024Z
2026-10-25T02:20:15.1993397Z src/wsl/DesktopWslEnvironment.ts:1159:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.prepareRuntime")((distro, archive) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1993399Z
2026-10-25T02:20:15.1993459Z 1159 prepareRuntime: (distro, archive) =>
2026-10-25T02:20:15.1993512Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1993514Z
2026-10-25T02:20:15.1993847Z src/wsl/DesktopWslEnvironment.ts:1163:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.pruneRuntimes")((distro, runtimeId) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1993897Z
2026-10-25T02:20:15.1993956Z 1163 pruneRuntimes: (distro, runtimeId) =>
2026-10-25T02:20:15.1993998Z ~~~~~~~~~~~~~
2026-10-25T02:20:15.1994000Z
2026-10-25T02:20:15.1994343Z src/wsl/DesktopWslEnvironment.ts:1167:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.invalidateRuntime")((distro, runtimeId) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1994345Z
2026-10-25T02:20:15.1994410Z 1167 invalidateRuntime: (distro, runtimeId) =>
2026-10-25T02:20:15.1994451Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1994453Z
2026-10-25T02:20:15.1994793Z src/wsl/DesktopWslEnvironment.ts:1171:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.probeRuntime")((distro, linuxAppRoot) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1994797Z
2026-10-25T02:20:15.1994860Z 1171 probeRuntime: (distro, linuxAppRoot) =>
2026-10-25T02:20:15.1994901Z ~~~~~~~~~~~~
2026-10-25T02:20:15.1994903Z
2026-10-25T02:20:15.1995258Z src/wsl/DesktopWslEnvironment.ts:1175:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.ensureNodePty")((distro, linuxAppRoot, options) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1995261Z
2026-10-25T02:20:15.1995335Z 1175 ensureNodePty: (distro, linuxAppRoot, options) =>
2026-10-25T02:20:15.1995379Z ~~~~~~~~~~~~~
2026-10-25T02:20:15.1995381Z
2026-10-25T02:20:15.1995383Z
2026-10-25T02:20:15.1995701Z 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-25T02:20:15.1995705Z
2026-10-25T02:20:15.1995751Z 220 send: (body) =>
2026-10-25T02:20:15.1995792Z ~~~~
2026-10-25T02:20:15.1995794Z
2026-10-25T02:20:15.1996094Z 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-25T02:20:15.1996096Z
2026-10-25T02:20:15.1996145Z 12 onFailure: (error) =>
2026-10-25T02:20:15.1996185Z ~~~~~~~~~
2026-10-25T02:20:15.1996187Z
2026-10-25T02:20:15.1996514Z src/environments/CloudflareApiPause.ts:59:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("CloudflareApiPause.pauseUntil")((untilMillis) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1996516Z
2026-10-25T02:20:15.1996570Z 59 pauseUntil: (untilMillis) =>
2026-10-25T02:20:15.1996608Z ~~~~~~~~~~
2026-10-25T02:20:15.1996610Z
2026-10-25T02:20:15.1996852Z src/http/Api.ts:190:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("onNone")(function*() { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1996854Z
2026-10-25T02:20:15.1996899Z 190 onNone: () =>
2026-10-25T02:20:15.1996938Z ~~~~~~
2026-10-25T02:20:15.1996940Z
2026-10-25T02:20:15.1997208Z src/previewTunnelSweep.test.ts:53:11 - suggestion TS377124: `Effect.provideService` provides this inline single-service layer directly. effect(provideLayerSucceedToProvideService)
2026-10-25T02:20:15.1997252Z
2026-10-25T02:20:15.1997371Z 53 }).pipe(Effect.provide(Layer.succeed(HttpClient.HttpClient, cloudflare.client)));
2026-10-25T02:20:15.1997414Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.1997417Z
2026-10-25T02:20:15.1997702Z 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-25T02:20:15.1997747Z
2026-10-25T02:20:15.1997857Z 92 fileResponse: () => Effect.die("Relay API does not serve filesystem responses"),
2026-10-25T02:20:15.1997895Z ~~~~~~~~~~~~
2026-10-25T02:20:15.1997897Z
2026-10-25T02:20:15.1998310Z 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-25T02:20:15.1998312Z
2026-10-25T02:20:15.1998424Z 93 fileWebResponse: () => Effect.die("Relay API does not serve file responses"),
2026-10-25T02:20:15.1998464Z ~~~~~~~~~~~~~~~
2026-10-25T02:20:15.1998466Z
2026-10-25T02:20:15.1998721Z src/worker.ts:238:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("HookInbox.HookInbox.hold")((_) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1998724Z
2026-10-25T02:20:15.1998785Z 238 hold: ({ endpointKey, baseUrl, hook }) =>
2026-10-25T02:20:15.1998826Z ~~~~
2026-10-25T02:20:15.1998828Z
2026-10-25T02:20:15.1999080Z src/worker.ts:240:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("HookInbox.HookInbox.wake")((_) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1999082Z
2026-10-25T02:20:15.1999139Z 240 wake: ({ endpointKey, baseUrl }) =>
2026-10-25T02:20:15.1999179Z ~~~~
2026-10-25T02:20:15.1999181Z
2026-10-25T02:20:15.1999468Z src/worker.ts:242:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("HookInbox.HookInbox.clear")((_) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1999471Z
2026-10-25T02:20:15.1999523Z 242 clear: ({ endpointKey }) =>
2026-10-25T02:20:15.1999562Z ~~~~~
2026-10-25T02:20:15.1999564Z
2026-10-25T02:20:15.1999881Z src/worker.ts:271:15 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("FcmDeliveryQueueSender.FcmDeliveryQueueSender.send")((body) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.1999885Z
2026-10-25T02:20:15.1999931Z 271 send: (body) =>
2026-10-25T02:20:15.1999972Z ~~~~
2026-10-25T02:20:15.1999974Z
2026-10-25T02:20:15.1999976Z
2026-10-25T02:20:15.1999978Z
2026-10-25T02:20:15.2000315Z src/connection/platform.ts:794:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentOwnedDataCleanup.clear")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2000317Z
2026-10-25T02:20:15.2000366Z 794 clear: (environmentId) =>
2026-10-25T02:20:15.2000408Z ~~~~~
2026-10-25T02:20:15.2000410Z
2026-10-25T02:20:15.2000708Z src/connection/platform.ts:804:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("EnvironmentRpcRequestObserver.observe")((_) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2000713Z
2026-10-25T02:20:15.2000798Z 804 observe: ({ environmentId, environmentLabel, method }) =>
2026-10-25T02:20:15.2000839Z ~~~~~~~
2026-10-25T02:20:15.2000841Z
2026-10-25T02:20:15.2001138Z src/connection/storage.ts:546:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestRoutingPermissions.get")((entry) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2001140Z
2026-10-25T02:20:15.2001183Z 546 get: (entry) =>
2026-10-25T02:20:15.2001221Z ~~~
2026-10-25T02:20:15.2001223Z
2026-10-25T02:20:15.2001596Z src/connection/storage.ts:573:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestRoutingPermissions.set")((entry, permission) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2001599Z
2026-10-25T02:20:15.2001649Z 573 set: (entry, permission) => {
2026-10-25T02:20:15.2001689Z ~~~
2026-10-25T02:20:15.2001691Z
2026-10-25T02:20:15.2002060Z src/connection/storage.ts:593:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestRoutingPermissions.forget")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2002063Z
2026-10-25T02:20:15.2002143Z 593 forget: (environmentId) => write(environmentId, null),
2026-10-25T02:20:15.2002183Z ~~~~~~
2026-10-25T02:20:15.2002185Z
2026-10-25T02:20:15.2002540Z src/connection/storage.ts:638:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.ConnectionRegistrationStore.register")((registration, routes) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2002542Z
2026-10-25T02:20:15.2002600Z 638 register: (registration, routes) =>
2026-10-25T02:20:15.2002640Z ~~~~~~~~
2026-10-25T02:20:15.2002642Z
2026-10-25T02:20:15.2002999Z src/connection/storage.ts:642:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.ConnectionRegistrationStore.setRoutes")((environmentId, routes) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2003002Z
2026-10-25T02:20:15.2003063Z 642 setRoutes: (environmentId, routes) =>
2026-10-25T02:20:15.2003104Z ~~~~~~~~~
2026-10-25T02:20:15.2003106Z
2026-10-25T02:20:15.2003447Z src/connection/storage.ts:646:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.ConnectionRegistrationStore.remove")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2003449Z
2026-10-25T02:20:15.2003499Z 646 remove: (environmentId) =>
2026-10-25T02:20:15.2003537Z ~~~~~~
2026-10-25T02:20:15.2003539Z
2026-10-25T02:20:15.2003906Z src/connection/storage.ts:650:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.ConnectionRegistrationStore.setEnabled")((environmentId, enabled) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2003910Z
2026-10-25T02:20:15.2003971Z 650 setEnabled: (environmentId, enabled) =>
2026-10-25T02:20:15.2004013Z ~~~~~~~~~~
2026-10-25T02:20:15.2004015Z
2026-10-25T02:20:15.2004344Z src/connection/storage.ts:727:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.loadShell")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2004346Z
2026-10-25T02:20:15.2004397Z 727 loadShell: (environmentId) =>
2026-10-25T02:20:15.2004440Z ~~~~~~~~~
2026-10-25T02:20:15.2004442Z
2026-10-25T02:20:15.2004785Z src/connection/storage.ts:763:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.loadServerConfig")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2004787Z
2026-10-25T02:20:15.2004846Z 763 loadServerConfig: (environmentId) =>
2026-10-25T02:20:15.2004892Z ~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2004896Z
2026-10-25T02:20:15.2005239Z src/connection/storage.ts:797:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.loadThread")((environmentId, threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2005241Z
2026-10-25T02:20:15.2005303Z 797 loadThread: (environmentId, threadId) =>
2026-10-25T02:20:15.2005345Z ~~~~~~~~~~
2026-10-25T02:20:15.2005347Z
2026-10-25T02:20:15.2005725Z src/connection/storage.ts:846:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.loadVcsRefs")((environmentId, cwd) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2005727Z
2026-10-25T02:20:15.2005785Z 846 loadVcsRefs: (environmentId, cwd) =>
2026-10-25T02:20:15.2005825Z ~~~~~~~~~~~
2026-10-25T02:20:15.2005827Z
2026-10-25T02:20:15.2006212Z src/connection/storage.ts:888:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.removeVcsRefs")((environmentId, cwd) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2006214Z
2026-10-25T02:20:15.2006276Z 888 removeVcsRefs: (environmentId, cwd) =>
2026-10-25T02:20:15.2006317Z ~~~~~~~~~~~~~
2026-10-25T02:20:15.2006319Z
2026-10-25T02:20:15.2006654Z src/connection/storage.ts:894:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.clearVcsRefs")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2006658Z
2026-10-25T02:20:15.2006713Z 894 clearVcsRefs: (environmentId) =>
2026-10-25T02:20:15.2006756Z ~~~~~~~~~~~~
2026-10-25T02:20:15.2006758Z
2026-10-25T02:20:15.2007107Z src/connection/storage.ts:900:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.removeThread")((environmentId, threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2007111Z
2026-10-25T02:20:15.2007179Z 900 removeThread: (environmentId, threadId) =>
2026-10-25T02:20:15.2007218Z ~~~~~~~~~~~~
2026-10-25T02:20:15.2007220Z
2026-10-25T02:20:15.2007542Z src/connection/storage.ts:906:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.clear")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2007544Z
2026-10-25T02:20:15.2007595Z 906 clear: (environmentId) =>
2026-10-25T02:20:15.2007635Z ~~~~~
2026-10-25T02:20:15.2007637Z
2026-10-25T02:20:15.2007639Z
2026-10-25T02:20:15.2007687Z ~/apps/server$ tsc --noEmit
2026-10-25T02:20:15.2007938Z scripts/acp-mock-agent.ts:939:16 - suggestion TS377015: This expression contains chained `pipe` calls that can be simplified to a single `pipe` call. effect(unnecessaryPipeChain)
2026-10-25T02:20:15.2007942Z
2026-10-25T02:20:15.2008001Z 939 yield* Effect.sleep("1200 millis")
2026-10-25T02:20:15.2008050Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2008092Z 940 .pipe(
2026-10-25T02:20:15.2008136Z ~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2008175Z ...
2026-10-25T02:20:15.2008216Z 952 )
2026-10-25T02:20:15.2008256Z ~~~~~~~~~~~
2026-10-25T02:20:15.2008308Z 953 .pipe(Effect.forkDetach);
2026-10-25T02:20:15.2008356Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2008359Z
2026-10-25T02:20:15.2008667Z scripts/record-codex-app-server-replay-fixture.ts:1167:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("logger")((event) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2008669Z
2026-10-25T02:20:15.2008717Z 1167 logger: (event) => {
2026-10-25T02:20:15.2008756Z ~~~~~~
2026-10-25T02:20:15.2008758Z
2026-10-25T02:20:15.2009186Z scripts/record-grok-acp-replay-fixture.ts:370: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-25T02:20:15.2009188Z
2026-10-25T02:20:15.2009296Z 370 const DEFAULT_GROK_SETTINGS = Schema.decodeUnknownSync(GrokSettings)({});
2026-10-25T02:20:15.2009367Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2009369Z
2026-10-25T02:20:15.2009834Z src/assets/AssetAccess.test.ts:975:42 - 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-25T02:20:15.2009837Z
2026-10-25T02:20:15.2009952Z 975 const { resource } = yield* Schema.decodeUnknownEffect(AssetCreateUrlInput)({
2026-10-25T02:20:15.2010059Z ~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2010062Z
2026-10-25T02:20:15.2010359Z src/auth/EnvironmentAuth.ts:1377:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("EnvironmentAuth.getDescriptor")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2010361Z
2026-10-25T02:20:15.2010410Z 1377 getDescriptor: () =>
2026-10-25T02:20:15.2010451Z ~~~~~~~~~~~~~
2026-10-25T02:20:15.2010453Z
2026-10-25T02:20:15.2010765Z 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-25T02:20:15.2010770Z
2026-10-25T02:20:15.2010816Z 55 getDescriptor: () =>
2026-10-25T02:20:15.2010856Z ~~~~~~~~~~~~~
2026-10-25T02:20:15.2010859Z
2026-10-25T02:20:15.2011187Z src/auth/McpOAuth.ts:530:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("McpHttpServer.McpClientAuthenticator.authenticate")((request) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2011191Z
2026-10-25T02:20:15.2011241Z 530 authenticate: (request) =>
2026-10-25T02:20:15.2011281Z ~~~~~~~~~~~~
2026-10-25T02:20:15.2011283Z
2026-10-25T02:20:15.2011531Z 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-25T02:20:15.2011535Z
2026-10-25T02:20:15.2011589Z 468 : Effect.succeed(undefined),
2026-10-25T02:20:15.2011636Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2011639Z
2026-10-25T02:20:15.2011923Z src/cloud/CliTokenManager.ts:326:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("HttpClientError")(function*(cause) { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2011927Z
2026-10-25T02:20:15.2011979Z 326 HttpClientError: (cause) =>
2026-10-25T02:20:15.2012022Z ~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2012024Z
2026-10-25T02:20:15.2012264Z src/cloud/CloudLink.lifecycle.test.ts:166:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2012266Z
2026-10-25T02:20:15.2012332Z 166 latest: Effect.succeed(Option.none()),
2026-10-25T02:20:15.2012377Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2012379Z
2026-10-25T02:20:15.2012602Z src/cloud/CloudLink.test.ts:99:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2012605Z
2026-10-25T02:20:15.2012666Z 99 latest: Effect.succeed(Option.none()),
2026-10-25T02:20:15.2012710Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2012712Z
2026-10-25T02:20:15.2013056Z src/cloud/ManagedEndpointRuntime.ts:762:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("CloudManagedEndpointRuntime.requestRecovery")((config) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2013060Z
2026-10-25T02:20:15.2013189Z 762 requestRecovery: (config) => Queue.offer(recoveryRequests, config).pipe(Effect.asVoid),
2026-10-25T02:20:15.2013232Z ~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2013234Z
2026-10-25T02:20:15.2013482Z src/cloud/http.test.ts:81:67 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2013485Z
2026-10-25T02:20:15.2013634Z 81 Layer.mock(ConnectReachability.ConnectReachability)({ latest: Effect.succeed(Option.none()) }),
2026-10-25T02:20:15.2013704Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2013706Z
2026-10-25T02:20:15.2014046Z 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-25T02:20:15.2014095Z
2026-10-25T02:20:15.2014179Z 371 commitDesktopUpdate: (requestId, onHandoffAccepted) =>
2026-10-25T02:20:15.2014225Z ~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2014227Z
2026-10-25T02:20:15.2014514Z src/device/DeviceService.ts:807:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DeviceService.updateTool")((tool) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2014516Z
2026-10-25T02:20:15.2014567Z 807 updateTool: (tool) =>
2026-10-25T02:20:15.2014607Z ~~~~~~~~~~
2026-10-25T02:20:15.2014609Z
2026-10-25T02:20:15.2014885Z src/device/DeviceService.ts:822:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DeviceService.easAccount")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2014889Z
2026-10-25T02:20:15.2014936Z 822 easAccount: () =>
2026-10-25T02:20:15.2014977Z ~~~~~~~~~~
2026-10-25T02:20:15.2014979Z
2026-10-25T02:20:15.2015297Z src/device/EasDeviceHost.ts:865:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DeviceHost.DeviceHost.ensureAgentReady")((onPhase) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2015300Z
2026-10-25T02:20:15.2015352Z 865 ensureAgentReady: (onPhase) =>
2026-10-25T02:20:15.2015395Z ~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2015398Z
2026-10-25T02:20:15.2015623Z src/device/easProjectId.ts:181:7 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-25T02:20:15.2015626Z
2026-10-25T02:20:15.2015677Z 181 Effect.map(Option.some),
2026-10-25T02:20:15.2015716Z ~~~~~~~~~~
2026-10-25T02:20:15.2015718Z
2026-10-25T02:20:15.2016009Z src/environment/DirectEndpoints.ts:158:31 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DirectEndpoints.resolve")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2016013Z
2026-10-25T02:20:15.2016094Z 158 return DirectEndpoints.of({ resolve: () => resolve });
2026-10-25T02:20:15.2016142Z ~~~~~~~
2026-10-25T02:20:15.2016144Z
2026-10-25T02:20:15.2016459Z src/environment/RemoteOpenTargets.ts:81:33 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("RemoteOpenTargets.resolveTargets")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2016461Z
2026-10-25T02:20:15.2016563Z 81 return RemoteOpenTargets.of({ resolveTargets: () => resolveTargets });
2026-10-25T02:20:15.2016616Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2016619Z
2026-10-25T02:20:15.2016925Z 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-25T02:20:15.2016929Z
2026-10-25T02:20:15.2016980Z 302 isRepository: (cwd) =>
2026-10-25T02:20:15.2017020Z ~~~~~~~~~~~~
2026-10-25T02:20:15.2017022Z
2026-10-25T02:20:15.2017319Z 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-25T02:20:15.2017321Z
2026-10-25T02:20:15.2017411Z 315 hasCommit: (input) =>
2026-10-25T02:20:15.2017452Z ~~~~~~~~~
2026-10-25T02:20:15.2017454Z
2026-10-25T02:20:15.2017755Z 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-25T02:20:15.2017757Z
2026-10-25T02:20:15.2017806Z 327 hasRefNamed: (input) =>
2026-10-25T02:20:15.2017890Z ~~~~~~~~~~~
2026-10-25T02:20:15.2017892Z
2026-10-25T02:20:15.2018187Z 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-25T02:20:15.2018189Z
2026-10-25T02:20:15.2018237Z 346 status: (input) =>
2026-10-25T02:20:15.2018279Z ~~~~~~
2026-10-25T02:20:15.2018281Z
2026-10-25T02:20:15.2018583Z 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-25T02:20:15.2018586Z
2026-10-25T02:20:15.2018634Z 352 localStatus: (input) =>
2026-10-25T02:20:15.2018675Z ~~~~~~~~~~~
2026-10-25T02:20:15.2018677Z
2026-10-25T02:20:15.2018999Z 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-25T02:20:15.2019004Z
2026-10-25T02:20:15.2019059Z 360 remoteStatus: (input, options) =>
2026-10-25T02:20:15.2019098Z ~~~~~~~~~~~~
2026-10-25T02:20:15.2019101Z
2026-10-25T02:20:15.2019435Z 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-25T02:20:15.2019439Z
2026-10-25T02:20:15.2019491Z 369 pullCurrentBranch: (cwd) =>
2026-10-25T02:20:15.2019535Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2019537Z
2026-10-25T02:20:15.2019860Z 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-25T02:20:15.2019865Z
2026-10-25T02:20:15.2019921Z 373 runStackedAction: (input, options) =>
2026-10-25T02:20:15.2019965Z ~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2019967Z
2026-10-25T02:20:15.2020294Z 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-25T02:20:15.2020296Z
2026-10-25T02:20:15.2020357Z 388 preparePullRequestThread: (input) =>
2026-10-25T02:20:15.2020405Z ~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2020407Z
2026-10-25T02:20:15.2020699Z 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-25T02:20:15.2020701Z
2026-10-25T02:20:15.2020749Z 399 listRefs: (input) =>
2026-10-25T02:20:15.2020789Z ~~~~~~~~
2026-10-25T02:20:15.2020793Z
2026-10-25T02:20:15.2021110Z 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-25T02:20:15.2021112Z
2026-10-25T02:20:15.2021168Z 405 createWorktree: (input, options) =>
2026-10-25T02:20:15.2021208Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2021210Z
2026-10-25T02:20:15.2021581Z 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-25T02:20:15.2021583Z
2026-10-25T02:20:15.2021638Z 409 listLocalBranchNames: (cwd) =>
2026-10-25T02:20:15.2021683Z ~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2021685Z
2026-10-25T02:20:15.2021987Z 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-25T02:20:15.2022032Z
2026-10-25T02:20:15.2022080Z 413 fetchRemote: (input) =>
2026-10-25T02:20:15.2022121Z ~~~~~~~~~~~
2026-10-25T02:20:15.2022123Z
2026-10-25T02:20:15.2022424Z 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-25T02:20:15.2022426Z
2026-10-25T02:20:15.2022480Z 417 remoteExists: (input) =>
2026-10-25T02:20:15.2022520Z ~~~~~~~~~~~~
2026-10-25T02:20:15.2022523Z
2026-10-25T02:20:15.2022837Z 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-25T02:20:15.2022840Z
2026-10-25T02:20:15.2022892Z 421 remoteBranchExists: (input) =>
2026-10-25T02:20:15.2022939Z ~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2022941Z
2026-10-25T02:20:15.2023273Z 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-25T02:20:15.2023276Z
2026-10-25T02:20:15.2023339Z 425 resolveRemoteTrackingCommit: (input) =>
2026-10-25T02:20:15.2023385Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2023389Z
2026-10-25T02:20:15.2023715Z 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-25T02:20:15.2023717Z
2026-10-25T02:20:15.2023777Z 429 resolveWorktreeBaseRemote: (input) =>
2026-10-25T02:20:15.2023820Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2023826Z
2026-10-25T02:20:15.2024152Z 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-25T02:20:15.2024154Z
2026-10-25T02:20:15.2024212Z 433 fetchWorktreeBaseCommit: (input) =>
2026-10-25T02:20:15.2024255Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2024257Z
2026-10-25T02:20:15.2024569Z 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-25T02:20:15.2024572Z
2026-10-25T02:20:15.2024622Z 437 removeWorktree: (input) =>
2026-10-25T02:20:15.2024662Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2024664Z
2026-10-25T02:20:15.2024970Z 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-25T02:20:15.2024974Z
2026-10-25T02:20:15.2025025Z 441 pruneWorktrees: (input) =>
2026-10-25T02:20:15.2025067Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2025069Z
2026-10-25T02:20:15.2025381Z 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-25T02:20:15.2025385Z
2026-10-25T02:20:15.2025475Z 445 deleteLocalBranch: (input) =>
2026-10-25T02:20:15.2025519Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2025521Z
2026-10-25T02:20:15.2025820Z 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-25T02:20:15.2025823Z
2026-10-25T02:20:15.2025916Z 449 createRef: (input) =>
2026-10-25T02:20:15.2025955Z ~~~~~~~~~
2026-10-25T02:20:15.2025957Z
2026-10-25T02:20:15.2026255Z 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-25T02:20:15.2026257Z
2026-10-25T02:20:15.2026304Z 457 switchRef: (input) =>
2026-10-25T02:20:15.2026343Z ~~~~~~~~~
2026-10-25T02:20:15.2026345Z
2026-10-25T02:20:15.2026649Z 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-25T02:20:15.2026651Z
2026-10-25T02:20:15.2026699Z 463 renameBranch: (input) =>
2026-10-25T02:20:15.2026742Z ~~~~~~~~~~~~
2026-10-25T02:20:15.2026744Z
2026-10-25T02:20:15.2027142Z src/guest/GuestShareService.test.ts:598: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-25T02:20:15.2027146Z
2026-10-25T02:20:15.2027199Z 598 return guestShares.submit(
2026-10-25T02:20:15.2027238Z ~~~~~~
2026-10-25T02:20:15.2027242Z
2026-10-25T02:20:15.2027505Z src/htmlRender/headlessChrome.ts:268:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("receive")((raw) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2027507Z
2026-10-25T02:20:15.2027561Z 268 const receive = (raw: string) => {
2026-10-25T02:20:15.2027601Z ~~~~~~~
2026-10-25T02:20:15.2027603Z
2026-10-25T02:20:15.2027976Z src/mcp/AcpMcpStdioBridge.ts:277: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-25T02:20:15.2027980Z
2026-10-25T02:20:15.2028019Z 277 try {
2026-10-25T02:20:15.2028059Z ~~~~~
2026-10-25T02:20:15.2028111Z 278 parsed = JSON.parse(line);
2026-10-25T02:20:15.2028156Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2028194Z ...
2026-10-25T02:20:15.2028299Z 280 return yield* respondWithError(null, "Parse error", -32700);
2026-10-25T02:20:15.2028368Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2028410Z 281 }
2026-10-25T02:20:15.2028450Z ~~~~~~~
2026-10-25T02:20:15.2028453Z
2026-10-25T02:20:15.2028728Z src/mcp/AcpMcpStdioBridge.ts:317:7 - suggestion TS377099: `Effect.ignoreCause` expresses ignored failure more directly than `Effect.catchCause` returning `Effect.void`. effect(catchToIgnore)
2026-10-25T02:20:15.2028731Z
2026-10-25T02:20:15.2028790Z 317 Effect.catchCause(() => Effect.void),
2026-10-25T02:20:15.2028836Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2028839Z
2026-10-25T02:20:15.2029072Z src/mcp/McpDeviceToolkit.test.ts:105:18 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2029075Z
2026-10-25T02:20:15.2029141Z 105 getById: () => Effect.succeed(Option.none()),
2026-10-25T02:20:15.2029186Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2029189Z
2026-10-25T02:20:15.2029554Z src/mcp/McpHttpServer.ts:403:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("previewSnapshotFailure")(<E>(cause) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2029557Z
2026-10-25T02:20:15.2029653Z 403 const previewSnapshotFailure = <E>(cause: Cause.Cause<E>) => {
2026-10-25T02:20:15.2029698Z ~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2029700Z
2026-10-25T02:20:15.2029992Z src/mcp/McpHttpServer.ts:906:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("McpServer.McpServer.addTool")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2030040Z
2026-10-25T02:20:15.2030088Z 906 addTool: (options) =>
2026-10-25T02:20:15.2030127Z ~~~~~~~
2026-10-25T02:20:15.2030130Z
2026-10-25T02:20:15.2030412Z 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-25T02:20:15.2030414Z
2026-10-25T02:20:15.2030475Z 22 resolve: () => Effect.succeed(undefined),
2026-10-25T02:20:15.2030527Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2030529Z
2026-10-25T02:20:15.2030820Z src/mcp/McpToolAccess.ts:105:7 - suggestion TS377132: `Effect.andThen` expresses this sequencing more directly than `Effect.flatMap` with a zero-parameter callback. effect(flatMapIgnoredParamToAndThen)
2026-10-25T02:20:15.2030823Z
2026-10-25T02:20:15.2030883Z 105 Effect.flatMap(() => writingCaller),
2026-10-25T02:20:15.2030926Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2030928Z
2026-10-25T02:20:15.2031433Z src/mcp/OrchestratorMcpService.ts:2435: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-25T02:20:15.2031437Z
2026-10-25T02:20:15.2031511Z 2435 const cancelOrphan = Effect.gen(function* () {
2026-10-25T02:20:15.2031565Z ~~~~~~~~~
2026-10-25T02:20:15.2031567Z
2026-10-25T02:20:15.2031808Z src/mcp/OrchestratorMcpService.ts:2450:17 - This repeated `Effect.mapError(...)` site participates in the hoistable generator-wide mapping. effect(redundantMapError)
2026-10-25T02:20:15.2031894Z 2450 .pipe(Effect.mapError(threadManagementFailure));
2026-10-25T02:20:15.2031941Z ~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2031944Z
2026-10-25T02:20:15.2032180Z src/mcp/OrchestratorMcpService.ts:2453:17 - This repeated `Effect.mapError(...)` site participates in the hoistable generator-wide mapping. effect(redundantMapError)
2026-10-25T02:20:15.2032261Z 2453 .pipe(Effect.mapError(threadManagementFailure));
2026-10-25T02:20:15.2032306Z ~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2032308Z
2026-10-25T02:20:15.2032597Z src/mcp/PreviewAutomationBroker.ts:650:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("onNone")(function*() { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2032601Z
2026-10-25T02:20:15.2032645Z 650 onNone: () =>
2026-10-25T02:20:15.2032685Z ~~~~~~
2026-10-25T02:20:15.2032688Z
2026-10-25T02:20:15.2032937Z src/mcp/WorktreeMcpService.test.ts:353:3 - suggestion TS377017: This Effect.gen contains a single return statement. effect(unnecessaryEffectGen)
2026-10-25T02:20:15.2032942Z
2026-10-25T02:20:15.2033014Z 353 Effect.gen(function* () {
2026-10-25T02:20:15.2033080Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2033188Z 354 return yield* WorktreeMcpService.WorktreeMcpService;
2026-10-25T02:20:15.2033285Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2033380Z 355 }).pipe(Effect.provide(harness.layer));
2026-10-25T02:20:15.2033442Z ~~~~
2026-10-25T02:20:15.2033445Z
2026-10-25T02:20:15.2033911Z src/mcp/toolkits/pullRequests/handlers.ts:223:27 - suggestion TS377015: This expression contains chained `pipe` calls that can be simplified to a single `pipe` call. effect(unnecessaryPipeChain)
2026-10-25T02:20:15.2033914Z
2026-10-25T02:20:15.2033966Z 223 const thread = yield* engine
2026-10-25T02:20:15.2034011Z ~~~~~~
2026-10-25T02:20:15.2034060Z 224 .getThreadShell(threadId)
2026-10-25T02:20:15.2034149Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2034214Z 225 .pipe(Effect.map(Option.fromNullishOr))
2026-10-25T02:20:15.2034268Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2034356Z 226 .pipe(Effect.mapError((cause) => new Failure({ cause })));
2026-10-25T02:20:15.2034436Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2034438Z
2026-10-25T02:20:15.2034737Z src/mcpApps/McpAppModelContext.ts:94:27 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("McpAppModelContext.set")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2034740Z
2026-10-25T02:20:15.2034865Z 94 McpAppModelContext.of({ set: () => Effect.void, forThread: () => Effect.succeed([]) }),
2026-10-25T02:20:15.2034914Z ~~~
2026-10-25T02:20:15.2034916Z
2026-10-25T02:20:15.2035216Z src/mcpApps/McpAppModelContext.ts:94:51 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("McpAppModelContext.forThread")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2035220Z
2026-10-25T02:20:15.2035340Z 94 McpAppModelContext.of({ set: () => Effect.void, forThread: () => Effect.succeed([]) }),
2026-10-25T02:20:15.2035401Z ~~~~~~~~~
2026-10-25T02:20:15.2035404Z
2026-10-25T02:20:15.2035730Z 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-25T02:20:15.2035733Z
2026-10-25T02:20:15.2035780Z 16 record: (records) =>
2026-10-25T02:20:15.2035821Z ~~~~~~
2026-10-25T02:20:15.2035823Z
2026-10-25T02:20:15.2036101Z src/observability/EventLoopMonitor.ts:38:49 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-25T02:20:15.2036105Z
2026-10-25T02:20:15.2036213Z 38 defaultValue: () => ({ latestNoticeableStall: Effect.succeed(undefined) }),
2026-10-25T02:20:15.2036276Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2036279Z
2026-10-25T02:20:15.2036731Z 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-25T02:20:15.2036733Z
2026-10-25T02:20:15.2036836Z 30 const REPLAY_SETTINGS = Schema.decodeUnknownSync(AcpRegistrySettings)({
2026-10-25T02:20:15.2036890Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2036893Z
2026-10-25T02:20:15.2037209Z 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-25T02:20:15.2037214Z
2026-10-25T02:20:15.2037273Z 48 defaultModel: Effect.succeed(undefined),
2026-10-25T02:20:15.2037323Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2037325Z
2026-10-25T02:20:15.2037638Z 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-25T02:20:15.2037681Z
2026-10-25T02:20:15.2037750Z 169 defaultModel: Effect.succeed(undefined),
2026-10-25T02:20:15.2037802Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2037804Z
2026-10-25T02:20:15.2038222Z 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-25T02:20:15.2038283Z
2026-10-25T02:20:15.2038348Z 306 defaultModel: Effect.succeed(undefined),
2026-10-25T02:20:15.2038398Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2038401Z
2026-10-25T02:20:15.2038708Z 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-25T02:20:15.2038711Z
2026-10-25T02:20:15.2038775Z 542 defaultModel: Effect.succeed(undefined),
2026-10-25T02:20:15.2038824Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2038826Z
2026-10-25T02:20:15.2039168Z src/orchestration-v2/Adapters/ClaudeAdapterV2.test.ts:976:26 - suggestion TS377111: `AbortController` is manually constructed inside Effect code. Use `Effect.abortSignal` for Effect-managed cancellation. effect(abortControllerInEffect)
2026-10-25T02:20:15.2039171Z
2026-10-25T02:20:15.2039234Z 976 const controller = new AbortController();
2026-10-25T02:20:15.2039287Z ~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2039289Z
2026-10-25T02:20:15.2039607Z src/orchestration-v2/Adapters/ClaudeAdapterV2.test.ts:1327:37 - suggestion TS377015: This expression contains chained `pipe` calls that can be simplified to a single `pipe` call. effect(unnecessaryPipeChain)
2026-10-25T02:20:15.2039610Z
2026-10-25T02:20:15.2039677Z 1327 const requestEvent = yield* runtime.events
2026-10-25T02:20:15.2039733Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2039777Z 1328 .pipe(
2026-10-25T02:20:15.2039819Z ~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2039858Z ...
2026-10-25T02:20:15.2039899Z 1331 )
2026-10-25T02:20:15.2039939Z ~~~~~~~~~~~
2026-10-25T02:20:15.2039991Z 1332 .pipe(Effect.forkScoped);
2026-10-25T02:20:15.2040038Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2040040Z
2026-10-25T02:20:15.2040381Z src/orchestration-v2/Adapters/ClaudeAdapterV2.test.ts:1333:28 - suggestion TS377111: `AbortController` is manually constructed inside Effect code. Use `Effect.abortSignal` for Effect-managed cancellation. effect(abortControllerInEffect)
2026-10-25T02:20:15.2040383Z
2026-10-25T02:20:15.2040450Z 1333 const controller = new AbortController();
2026-10-25T02:20:15.2040504Z ~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2040506Z
2026-10-25T02:20:15.2040843Z src/orchestration-v2/Adapters/ClaudeAdapterV2.test.ts:1356:37 - suggestion TS377111: `AbortController` is manually constructed inside Effect code. Use `Effect.abortSignal` for Effect-managed cancellation. effect(abortControllerInEffect)
2026-10-25T02:20:15.2040848Z
2026-10-25T02:20:15.2040927Z 1356 const cancelledController = new AbortController();
2026-10-25T02:20:15.2040986Z ~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2040988Z
2026-10-25T02:20:15.2041360Z src/orchestration-v2/Adapters/ClaudeAdapterV2.ts:3970:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.getCapabilities")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2041363Z
2026-10-25T02:20:15.2041469Z 3970 getCapabilities: () => Effect.succeed(ClaudeProviderCapabilitiesV2),
2026-10-25T02:20:15.2041513Z ~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2041515Z
2026-10-25T02:20:15.2041951Z src/orchestration-v2/Adapters/ClaudeAdapterV2.ts:3971:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.planSelectionTransition")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2041954Z
2026-10-25T02:20:15.2042079Z 3971 planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-25T02:20:15.2042126Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2042128Z
2026-10-25T02:20:15.2042489Z src/orchestration-v2/Adapters/ClaudeAgentSdkQueryRunner.test.ts:199:17 - suggestion TS377111: `AbortController` is manually constructed inside Effect code. Use `Effect.abortSignal` for Effect-managed cancellation. effect(abortControllerInEffect)
2026-10-25T02:20:15.2042532Z
2026-10-25T02:20:15.2042593Z 199 signal: new AbortController().signal,
2026-10-25T02:20:15.2042640Z ~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2042642Z
2026-10-25T02:20:15.2043038Z src/orchestration-v2/Adapters/ClaudeTaskOutputTail.ts:59: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-25T02:20:15.2043041Z
2026-10-25T02:20:15.2043098Z 59 const pause = Effect.raceFirst(
2026-10-25T02:20:15.2043144Z ~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2043146Z
2026-10-25T02:20:15.2043439Z src/orchestration-v2/Adapters/CodexAdapterV2.ts:1718:25 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-25T02:20:15.2043444Z
2026-10-25T02:20:15.2043551Z 1718 threadId === null ? Effect.succeed(undefined) : mcpSessions.read(threadId);
2026-10-25T02:20:15.2043605Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2043607Z
2026-10-25T02:20:15.2043971Z src/orchestration-v2/Adapters/CodexAdapterV2.ts:1725:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.getCapabilities")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2043973Z
2026-10-25T02:20:15.2044080Z 1725 getCapabilities: () => Effect.succeed(CodexProviderCapabilitiesV2),
2026-10-25T02:20:15.2044123Z ~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2044126Z
2026-10-25T02:20:15.2044506Z src/orchestration-v2/Adapters/CodexAdapterV2.ts:1726:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.planSelectionTransition")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2044510Z
2026-10-25T02:20:15.2044632Z 1726 planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-25T02:20:15.2044677Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2044679Z
2026-10-25T02:20:15.2045000Z src/orchestration-v2/Adapters/CodexAdapterV2.ts:3002:19 - suggestion TS377095: `Effect.orElseSucceed` expresses the same recovery more directly than `Effect.catch` followed by `Effect.succeed`. effect(catchToOrElseSucceed)
2026-10-25T02:20:15.2045003Z
2026-10-25T02:20:15.2045076Z 3002 Effect.catch(() => Effect.succeed(null)),
2026-10-25T02:20:15.2045120Z ~~~~~~~~~~~~
2026-10-25T02:20:15.2045123Z
2026-10-25T02:20:15.2045501Z src/orchestration-v2/Adapters/CodexAdapterV2.ts:3003:19 - suggestion TS377120: `Effect.filterOrElse` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-25T02:20:15.2045504Z
2026-10-25T02:20:15.2045566Z 3003 Effect.flatMap((response) =>
2026-10-25T02:20:15.2045613Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2045615Z
2026-10-25T02:20:15.2045941Z src/orchestration-v2/Adapters/CodexAdapterV2.ts:3025:19 - suggestion TS377099: `Effect.ignore` expresses ignored failure more directly than `Effect.catch` returning `Effect.void`. effect(catchToIgnore)
2026-10-25T02:20:15.2045945Z
2026-10-25T02:20:15.2046007Z 3025 Effect.catch(() => Effect.void),
2026-10-25T02:20:15.2046052Z ~~~~~~~~~~~~
2026-10-25T02:20:15.2046054Z
2026-10-25T02:20:15.2046422Z src/orchestration-v2/Adapters/CodexAdapterV2.ts:7192: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-25T02:20:15.2046467Z
2026-10-25T02:20:15.2046552Z 7192 return yield* Effect.fail(failedTermination.error);
2026-10-25T02:20:15.2046595Z ~~~~~
2026-10-25T02:20:15.2046601Z
2026-10-25T02:20:15.2047037Z 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-25T02:20:15.2047039Z
2026-10-25T02:20:15.2047145Z 33 const DEFAULT_GROK_SETTINGS = Schema.decodeUnknownSync(GrokSettings)({});
2026-10-25T02:20:15.2047204Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2047206Z
2026-10-25T02:20:15.2047636Z src/orchestration-v2/Adapters/MuseAdapterV2.testkit.ts:409: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-25T02:20:15.2047640Z
2026-10-25T02:20:15.2047767Z 409 const DEFAULT_MUSE_SETTINGS = Schema.decodeUnknownSync(MuseSettings)({ enabled: true });
2026-10-25T02:20:15.2047823Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2047825Z
2026-10-25T02:20:15.2048176Z src/orchestration-v2/CheckpointCaptureService.ts:235:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("CheckpointCaptureServiceV2.execute")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2048179Z
2026-10-25T02:20:15.2048228Z 235 execute: (input) =>
2026-10-25T02:20:15.2048268Z ~~~~~~~
2026-10-25T02:20:15.2048271Z
2026-10-25T02:20:15.2048535Z src/orchestration-v2/CheckpointRestoreSafety.test.ts:104:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2048539Z
2026-10-25T02:20:15.2048645Z 104 get: () => Effect.succeed(Option.some({ workspaceRoot: parent } as never)),
2026-10-25T02:20:15.2048694Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2048697Z
2026-10-25T02:20:15.2049067Z src/orchestration-v2/CheckpointRestoreSafety.ts:40:13 - suggestion TS377116: `Effect.catchIf` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-25T02:20:15.2049070Z
2026-10-25T02:20:15.2049122Z 40 Effect.catch((error) =>
2026-10-25T02:20:15.2049166Z ~~~~~~~~~~~~
2026-10-25T02:20:15.2049168Z
2026-10-25T02:20:15.2049548Z src/orchestration-v2/CheckpointRestoreSafety.ts:80:17 - suggestion TS377116: `Effect.catchIf` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-25T02:20:15.2049552Z
2026-10-25T02:20:15.2049606Z 80 Effect.catch((error) =>
2026-10-25T02:20:15.2049653Z ~~~~~~~~~~~~
2026-10-25T02:20:15.2049655Z
2026-10-25T02:20:15.2049925Z src/orchestration-v2/CheckpointRollbackService.test.ts:232:22 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2049927Z
2026-10-25T02:20:15.2050025Z 232 return Effect.succeed(Option.some({ workspaceRoot } as never));
2026-10-25T02:20:15.2050105Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2050108Z
2026-10-25T02:20:15.2050472Z 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-25T02:20:15.2050474Z
2026-10-25T02:20:15.2050541Z 142 const batchAbort = new AbortController();
2026-10-25T02:20:15.2050635Z ~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2050637Z
2026-10-25T02:20:15.2051008Z src/orchestration-v2/CommandOutputHub.test.ts:166:5 - suggestion TS377120: `Effect.filterOrElse` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-25T02:20:15.2051010Z
2026-10-25T02:20:15.2051060Z 166 Effect.flatMap((frame) =>
2026-10-25T02:20:15.2051105Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2051107Z
2026-10-25T02:20:15.2051354Z src/orchestration-v2/CommandReceiptStore.ts:164:29 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2051357Z
2026-10-25T02:20:15.2051428Z 164 onNone: () => Effect.succeed(Option.none()),
2026-10-25T02:20:15.2051477Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2051481Z
2026-10-25T02:20:15.2051729Z src/orchestration-v2/CommandReceiptStore.ts:167:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2051731Z
2026-10-25T02:20:15.2051794Z 167 ? Effect.succeed(Option.none())
2026-10-25T02:20:15.2051840Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2051842Z
2026-10-25T02:20:15.2052094Z src/orchestration-v2/CommandReceiptStore.ts:168:58 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-25T02:20:15.2052096Z
2026-10-25T02:20:15.2052197Z 168 : fromApplicationReceipt(receipt).pipe(Effect.map(Option.some)),
2026-10-25T02:20:15.2052262Z ~~~~~~~~~~
2026-10-25T02:20:15.2052265Z
2026-10-25T02:20:15.2052512Z src/orchestration-v2/CommandReceiptStore.ts:183:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2052516Z
2026-10-25T02:20:15.2052575Z 183 ? Effect.succeed(Option.none())
2026-10-25T02:20:15.2052622Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2052624Z
2026-10-25T02:20:15.2052871Z src/orchestration-v2/CommandReceiptStore.ts:192:25 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-25T02:20:15.2052873Z
2026-10-25T02:20:15.2052936Z 192 }).pipe(Effect.map(Option.some)),
2026-10-25T02:20:15.2052982Z ~~~~~~~~~~
2026-10-25T02:20:15.2052984Z
2026-10-25T02:20:15.2053218Z src/orchestration-v2/EffectOutbox.ts:423:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2053220Z
2026-10-25T02:20:15.2053278Z 423 ? Effect.succeed(Option.none())
2026-10-25T02:20:15.2053324Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2053326Z
2026-10-25T02:20:15.2053563Z src/orchestration-v2/EffectOutbox.ts:424:39 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-25T02:20:15.2053565Z
2026-10-25T02:20:15.2053643Z 424 : rowToEffect(row).pipe(Effect.map(Option.some));
2026-10-25T02:20:15.2053697Z ~~~~~~~~~~
2026-10-25T02:20:15.2053699Z
2026-10-25T02:20:15.2053979Z src/orchestration-v2/EffectWorker.test.ts:109:20 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2053983Z
2026-10-25T02:20:15.2054046Z 109 get: () => Effect.succeed(Option.none()),
2026-10-25T02:20:15.2054093Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2054095Z
2026-10-25T02:20:15.2054333Z src/orchestration-v2/EffectWorker.test.ts:342:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2054373Z
2026-10-25T02:20:15.2054460Z 342 claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-25T02:20:15.2054507Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2054509Z
2026-10-25T02:20:15.2054750Z src/orchestration-v2/EffectWorker.test.ts:409:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2054752Z
2026-10-25T02:20:15.2054843Z 409 claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-25T02:20:15.2054891Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2054893Z
2026-10-25T02:20:15.2055131Z src/orchestration-v2/EffectWorker.test.ts:476:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2055134Z
2026-10-25T02:20:15.2055216Z 476 claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-25T02:20:15.2055262Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2055264Z
2026-10-25T02:20:15.2055503Z src/orchestration-v2/EffectWorker.test.ts:477:18 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2055505Z
2026-10-25T02:20:15.2055593Z 477 get: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-25T02:20:15.2055641Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2055645Z
2026-10-25T02:20:15.2055988Z 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-25T02:20:15.2055990Z
2026-10-25T02:20:15.2056044Z 98 execute: (effect, options) => {
2026-10-25T02:20:15.2056086Z ~~~~~~~
2026-10-25T02:20:15.2056089Z
2026-10-25T02:20:15.2056420Z 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-25T02:20:15.2056423Z
2026-10-25T02:20:15.2056476Z 180 Effect.catch((cause) =>
2026-10-25T02:20:15.2056520Z ~~~~~~~~~~~~
2026-10-25T02:20:15.2056522Z
2026-10-25T02:20:15.2056814Z 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-25T02:20:15.2056817Z
2026-10-25T02:20:15.2056867Z 110 append: (input) =>
2026-10-25T02:20:15.2056909Z ~~~~~~
2026-10-25T02:20:15.2056911Z
2026-10-25T02:20:15.2057221Z 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-25T02:20:15.2057226Z
2026-10-25T02:20:15.2057282Z 120 appendProjectEvent: (event) =>
2026-10-25T02:20:15.2057325Z ~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2057328Z
2026-10-25T02:20:15.2057630Z 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-25T02:20:15.2057672Z
2026-10-25T02:20:15.2057725Z 131 latestSequence: (input) =>
2026-10-25T02:20:15.2057769Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2057771Z
2026-10-25T02:20:15.2058034Z src/orchestration-v2/FoundationPersistence.test.ts:1788:26 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2058036Z
2026-10-25T02:20:15.2058125Z 1788 claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-25T02:20:15.2058220Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2058223Z
2026-10-25T02:20:15.2058483Z src/orchestration-v2/FoundationPersistence.test.ts:1790:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2058485Z
2026-10-25T02:20:15.2058533Z 1790 Effect.succeed(
2026-10-25T02:20:15.2058579Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2058581Z
2026-10-25T02:20:15.2058842Z src/orchestration-v2/FoundationPersistence.test.ts:2660:30 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2058844Z
2026-10-25T02:20:15.2058923Z 2660 nextClaimableAt: Effect.succeed(Option.none()),
2026-10-25T02:20:15.2058975Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2058978Z
2026-10-25T02:20:15.2059235Z src/orchestration-v2/FoundationPersistence.test.ts:2877:30 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2059237Z
2026-10-25T02:20:15.2059314Z 2877 nextClaimableAt: Effect.succeed(Option.none()),
2026-10-25T02:20:15.2059395Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2059398Z
2026-10-25T02:20:15.2059758Z src/orchestration-v2/Orchestrator.ts:11970:7 - suggestion TS377120: `Effect.filterOrFail` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-25T02:20:15.2059761Z
2026-10-25T02:20:15.2059815Z 11970 Effect.flatMap((planned) =>
2026-10-25T02:20:15.2059857Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2059860Z
2026-10-25T02:20:15.2060195Z src/orchestration-v2/Orchestrator.ts:12391:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.restartContinuationPending")((run) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2060199Z
2026-10-25T02:20:15.2060261Z 12391 restartContinuationPending: (run) =>
2026-10-25T02:20:15.2060308Z ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2060310Z
2026-10-25T02:20:15.2060638Z src/orchestration-v2/Orchestrator.ts:12393:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.awaitRestartContinuation")((run) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2060644Z
2026-10-25T02:20:15.2060703Z 12393 awaitRestartContinuation: (run) =>
2026-10-25T02:20:15.2060749Z ~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2060752Z
2026-10-25T02:20:15.2061072Z src/orchestration-v2/Orchestrator.ts:12396:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.autoArmLimitRecovery")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2061076Z
2026-10-25T02:20:15.2061133Z 12396 autoArmLimitRecovery: (input) =>
2026-10-25T02:20:15.2061175Z ~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2061177Z
2026-10-25T02:20:15.2061483Z src/orchestration-v2/Orchestrator.ts:12424:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.searchThread")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2061485Z
2026-10-25T02:20:15.2061534Z 12424 searchThread: (input) =>
2026-10-25T02:20:15.2061625Z ~~~~~~~~~~~~
2026-10-25T02:20:15.2061628Z
2026-10-25T02:20:15.2062027Z src/orchestration-v2/Orchestrator.ts:12432: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-25T02:20:15.2062029Z
2026-10-25T02:20:15.2062151Z 12432 getThreadHistoryPage: (threadId, cursor, throughEntryId, conversationOnly) =>
2026-10-25T02:20:15.2062238Z ~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2062241Z
2026-10-25T02:20:15.2062570Z src/orchestration-v2/Orchestrator.ts:12436:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getTimelinePage")((threadId, options) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2062573Z
2026-10-25T02:20:15.2062637Z 12436 getTimelinePage: (threadId, options) =>
2026-10-25T02:20:15.2062683Z ~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2062685Z
2026-10-25T02:20:15.2062997Z src/orchestration-v2/Orchestrator.ts:12440:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getMessageCount")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2063001Z
2026-10-25T02:20:15.2063054Z 12440 getMessageCount: (threadId) =>
2026-10-25T02:20:15.2063097Z ~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2063101Z
2026-10-25T02:20:15.2063407Z src/orchestration-v2/Orchestrator.ts:12444:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getTurnItem")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2063409Z
2026-10-25T02:20:15.2063458Z 12444 getTurnItem: (input) =>
2026-10-25T02:20:15.2063499Z ~~~~~~~~~~~
2026-10-25T02:20:15.2063501Z
2026-10-25T02:20:15.2063848Z src/orchestration-v2/Orchestrator.ts:12452:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadRecords")((threadId, fields, filter) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2063850Z
2026-10-25T02:20:15.2063924Z 12452 getThreadRecords: (threadId, fields, filter) =>
2026-10-25T02:20:15.2063968Z ~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2063970Z
2026-10-25T02:20:15.2064297Z src/orchestration-v2/Orchestrator.ts:12456:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadProjection")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2064301Z
2026-10-25T02:20:15.2064359Z 12456 getThreadProjection: (threadId) =>
2026-10-25T02:20:15.2064404Z ~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2064406Z
2026-10-25T02:20:15.2064739Z src/orchestration-v2/Orchestrator.ts:12460:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getCheckpointContext")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2064741Z
2026-10-25T02:20:15.2064800Z 12460 getCheckpointContext: (threadId) =>
2026-10-25T02:20:15.2064844Z ~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2064847Z
2026-10-25T02:20:15.2065167Z src/orchestration-v2/Orchestrator.ts:12464:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadSnapshot")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2065170Z
2026-10-25T02:20:15.2065228Z 12464 getThreadSnapshot: (threadId) =>
2026-10-25T02:20:15.2065273Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2065275Z
2026-10-25T02:20:15.2065625Z src/orchestration-v2/Orchestrator.ts:12468:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadSnapshotWindow")((threadId, options) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2065627Z
2026-10-25T02:20:15.2065755Z 12468 getThreadSnapshotWindow: (threadId, options) =>
2026-10-25T02:20:15.2065801Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2065803Z
2026-10-25T02:20:15.2066120Z src/orchestration-v2/Orchestrator.ts:12472:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getShellSnapshot")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2066122Z
2026-10-25T02:20:15.2066220Z 12472 getShellSnapshot: (options) =>
2026-10-25T02:20:15.2066265Z ~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2066267Z
2026-10-25T02:20:15.2066594Z src/orchestration-v2/Orchestrator.ts:12474:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.listActiveSubagentThreadIds")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2066599Z
2026-10-25T02:20:15.2066658Z 12474 listActiveSubagentThreadIds: () =>
2026-10-25T02:20:15.2066708Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2066710Z
2026-10-25T02:20:15.2067030Z src/orchestration-v2/Orchestrator.ts:12476:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.readShellSnapshot")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2067032Z
2026-10-25T02:20:15.2067086Z 12476 readShellSnapshot: (options) =>
2026-10-25T02:20:15.2067129Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2067132Z
2026-10-25T02:20:15.2067447Z src/orchestration-v2/Orchestrator.ts:12483:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadShell")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2067449Z
2026-10-25T02:20:15.2067503Z 12483 getThreadShell: (threadId) =>
2026-10-25T02:20:15.2067547Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2067549Z
2026-10-25T02:20:15.2067881Z src/orchestration-v2/Orchestrator.ts:12487:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.findGuestShareThreadId")((shareId) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2067883Z
2026-10-25T02:20:15.2067943Z 12487 findGuestShareThreadId: (shareId) =>
2026-10-25T02:20:15.2067989Z ~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2067991Z
2026-10-25T02:20:15.2068320Z src/orchestration-v2/Orchestrator.ts:12489:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadEventSequence")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2068324Z
2026-10-25T02:20:15.2068387Z 12489 getThreadEventSequence: (threadId) =>
2026-10-25T02:20:15.2068431Z ~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2068433Z
2026-10-25T02:20:15.2068762Z 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-25T02:20:15.2068764Z
2026-10-25T02:20:15.2068835Z 160 getInstance: () => Effect.succeed(undefined),
2026-10-25T02:20:15.2068890Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2068892Z
2026-10-25T02:20:15.2069199Z 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-25T02:20:15.2069203Z
2026-10-25T02:20:15.2069325Z 269 getShell: (projectId) => get(projectId).pipe(Effect.map(Option.map(toShell))),
2026-10-25T02:20:15.2069364Z ~~~~~~~~
2026-10-25T02:20:15.2069367Z
2026-10-25T02:20:15.2069702Z 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-25T02:20:15.2069743Z
2026-10-25T02:20:15.2069792Z 270 listShells: (options) =>
2026-10-25T02:20:15.2069834Z ~~~~~~~~~~
2026-10-25T02:20:15.2069836Z
2026-10-25T02:20:15.2070100Z src/orchestration-v2/ProjectionControlReads.test.ts:279:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2070103Z
2026-10-25T02:20:15.2070149Z 279 Effect.succeed(
2026-10-25T02:20:15.2070242Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2070244Z
2026-10-25T02:20:15.2070583Z 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-25T02:20:15.2070585Z
2026-10-25T02:20:15.2070632Z 78 get: (instanceId) =>
2026-10-25T02:20:15.2070671Z ~~~
2026-10-25T02:20:15.2070673Z
2026-10-25T02:20:15.2070997Z 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-25T02:20:15.2071000Z
2026-10-25T02:20:15.2071042Z 135 list: () =>
2026-10-25T02:20:15.2071083Z ~~~~
2026-10-25T02:20:15.2071085Z
2026-10-25T02:20:15.2071423Z src/orchestration-v2/ProviderEventIngestor.ts:117:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderTurnAnalytics.record")((properties) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2071427Z
2026-10-25T02:20:15.2071513Z 117 record: (properties: Readonly<Record<string, unknown>>) =>
2026-10-25T02:20:15.2071553Z ~~~~~~
2026-10-25T02:20:15.2071555Z
2026-10-25T02:20:15.2071931Z src/orchestration-v2/ProviderEventIngestor.ts:833:15 - suggestion TS377120: `Effect.filterOrElse` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-25T02:20:15.2071933Z
2026-10-25T02:20:15.2071995Z 833 Effect.flatMap((storedEvents) =>
2026-10-25T02:20:15.2072038Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2072040Z
2026-10-25T02:20:15.2072301Z src/orchestration-v2/ProviderSessionManager.test.ts:1153:19 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2072305Z
2026-10-25T02:20:15.2072429Z 1153 : Effect.succeed(Option.some(makeBrowserAccessProject(requestedProjectId))),
2026-10-25T02:20:15.2072476Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2072479Z
2026-10-25T02:20:15.2072744Z src/orchestration-v2/ProviderTurnStartService.test.ts:148:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2072746Z
2026-10-25T02:20:15.2072795Z 148 Effect.succeed(
2026-10-25T02:20:15.2072838Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2072840Z
2026-10-25T02:20:15.2073103Z src/orchestration-v2/ProviderTurnStartService.test.ts:701:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2073105Z
2026-10-25T02:20:15.2073239Z 701 Effect.succeed(Option.some({ workspaceRoot: "/tmp/native-account-project" } as never)),
2026-10-25T02:20:15.2073284Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2073286Z
2026-10-25T02:20:15.2073552Z src/orchestration-v2/ProviderTurnStartService.testkit.ts:14:20 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2073554Z
2026-10-25T02:20:15.2073621Z 14 getById: () => Effect.succeed(Option.none()),
2026-10-25T02:20:15.2073668Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2073670Z
2026-10-25T02:20:15.2074012Z src/orchestration-v2/ProviderTurnStartService.ts:204:39 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-25T02:20:15.2074014Z
2026-10-25T02:20:15.2074097Z 204 Effect.catchCause(() => Effect.succeed(undefined)),
2026-10-25T02:20:15.2074158Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2074208Z
2026-10-25T02:20:15.2074591Z src/orchestration-v2/ProviderTurnStartService.ts:510:15 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-25T02:20:15.2074593Z
2026-10-25T02:20:15.2074651Z 510 Effect.catchCause((cause) =>
2026-10-25T02:20:15.2074698Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2074700Z
2026-10-25T02:20:15.2075116Z src/orchestration-v2/ProviderTurnStartService.ts:1291: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-25T02:20:15.2075119Z
2026-10-25T02:20:15.2075184Z 1291 return runExecution.startRootRun({
2026-10-25T02:20:15.2075222Z ~~~~~~
2026-10-25T02:20:15.2075226Z
2026-10-25T02:20:15.2075484Z src/orchestration-v2/PullRequestWatchReactor.ts:467:53 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-25T02:20:15.2075486Z
2026-10-25T02:20:15.2075589Z 467 ? pullRequests.activity(reference).pipe(Effect.map(Option.some))
2026-10-25T02:20:15.2075649Z ~~~~~~~~~~
2026-10-25T02:20:15.2075652Z
2026-10-25T02:20:15.2076019Z 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-25T02:20:15.2076022Z
2026-10-25T02:20:15.2076092Z 49 cleanupScheduledTasks: (threadId: ThreadId) =>
2026-10-25T02:20:15.2076136Z ~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2076138Z
2026-10-25T02:20:15.2076491Z 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-25T02:20:15.2076494Z
2026-10-25T02:20:15.2076556Z 58 cleanupTerminals: (threadId: string) =>
2026-10-25T02:20:15.2076598Z ~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2076604Z
2026-10-25T02:20:15.2076952Z 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-25T02:20:15.2076954Z
2026-10-25T02:20:15.2077017Z 66 cleanupPreviews: (threadId: string) =>
2026-10-25T02:20:15.2077060Z ~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2077062Z
2026-10-25T02:20:15.2077426Z 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-25T02:20:15.2077430Z
2026-10-25T02:20:15.2077522Z 74 cleanupAttachments: (attachmentIds: ReadonlyArray<string>) =>
2026-10-25T02:20:15.2077565Z ~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2077567Z
2026-10-25T02:20:15.2077831Z src/orchestration-v2/RunExecutionService.test.ts:1836:16 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-25T02:20:15.2077873Z
2026-10-25T02:20:15.2077950Z 1836 ).pipe(Effect.map(Option.some)),
2026-10-25T02:20:15.2077994Z ~~~~~~~~~~
2026-10-25T02:20:15.2077997Z
2026-10-25T02:20:15.2078429Z src/orchestration-v2/RunExecutionService.ts:929:15 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-25T02:20:15.2078492Z
2026-10-25T02:20:15.2078548Z 929 Effect.catchCause((cause) =>
2026-10-25T02:20:15.2078594Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2078596Z
2026-10-25T02:20:15.2078836Z src/orchestration-v2/RuntimePolicy.test.ts:90:9 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2078838Z
2026-10-25T02:20:15.2078885Z 90 Effect.succeed(
2026-10-25T02:20:15.2078926Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2078930Z
2026-10-25T02:20:15.2079229Z 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-25T02:20:15.2079232Z
2026-10-25T02:20:15.2079278Z 54 resolve: (input) =>
2026-10-25T02:20:15.2079351Z ~~~~~~~
2026-10-25T02:20:15.2079353Z
2026-10-25T02:20:15.2079626Z src/orchestration-v2/RuntimeRequestService.test.ts:29:7 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2079629Z
2026-10-25T02:20:15.2079673Z 29 Effect.succeed(
2026-10-25T02:20:15.2079715Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2079718Z
2026-10-25T02:20:15.2079973Z src/orchestration-v2/ThreadLaunchService.test.ts:189:33 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2079977Z
2026-10-25T02:20:15.2080072Z 189 getByWorkspaceRoot: () => Effect.succeed(Option.some(project)),
2026-10-25T02:20:15.2080123Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2080127Z
2026-10-25T02:20:15.2080377Z src/orchestration-v2/ThreadLaunchService.test.ts:220:32 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2080381Z
2026-10-25T02:20:15.2080466Z 220 folderForThread: () => Effect.succeed(Option.none()),
2026-10-25T02:20:15.2080518Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2080521Z
2026-10-25T02:20:15.2080852Z 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-25T02:20:15.2080854Z
2026-10-25T02:20:15.2080901Z 91 archive: (input) =>
2026-10-25T02:20:15.2080943Z ~~~~~~~
2026-10-25T02:20:15.2080945Z
2026-10-25T02:20:15.2081279Z 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-25T02:20:15.2081281Z
2026-10-25T02:20:15.2081330Z 97 unarchive: (input) =>
2026-10-25T02:20:15.2081372Z ~~~~~~~~~
2026-10-25T02:20:15.2081376Z
2026-10-25T02:20:15.2081703Z 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-25T02:20:15.2081705Z
2026-10-25T02:20:15.2081752Z 103 delete: (input) =>
2026-10-25T02:20:15.2081793Z ~~~~~~
2026-10-25T02:20:15.2081795Z
2026-10-25T02:20:15.2082188Z 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-25T02:20:15.2082191Z
2026-10-25T02:20:15.2082244Z 109 updateMetadata: (input) =>
2026-10-25T02:20:15.2082284Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2082286Z
2026-10-25T02:20:15.2082633Z 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-25T02:20:15.2082678Z
2026-10-25T02:20:15.2082728Z 118 setRuntimeMode: (input) =>
2026-10-25T02:20:15.2082769Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2082771Z
2026-10-25T02:20:15.2083123Z 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-25T02:20:15.2083125Z
2026-10-25T02:20:15.2083179Z 125 setInteractionMode: (input) =>
2026-10-25T02:20:15.2083224Z ~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2083226Z
2026-10-25T02:20:15.2083573Z 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-25T02:20:15.2083577Z
2026-10-25T02:20:15.2083630Z 132 setModelSelection: (input) =>
2026-10-25T02:20:15.2083671Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2083675Z
2026-10-25T02:20:15.2084051Z src/orchestration-v2/ThreadManagementService.ts:709:7 - suggestion TS377120: `Effect.filterOrFail` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-25T02:20:15.2084053Z
2026-10-25T02:20:15.2084111Z 709 Effect.flatMap((projection) =>
2026-10-25T02:20:15.2084156Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2084158Z
2026-10-25T02:20:15.2084440Z src/orchestration-v2/ThreadManagementService.ts:726:5 - suggestion TS377015: This expression contains chained `pipe` calls that can be simplified to a single `pipe` call. effect(unnecessaryPipeChain)
2026-10-25T02:20:15.2084442Z
2026-10-25T02:20:15.2084511Z 726 ensureProjectionTranscript(input.threadId)
2026-10-25T02:20:15.2084565Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2084697Z 727 .pipe(Effect.andThen(orchestrator.getThreadRecords(input.threadId, fields, filter)))
2026-10-25T02:20:15.2084782Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2084820Z ...
2026-10-25T02:20:15.2084861Z 746 ),
2026-10-25T02:20:15.2084900Z ~~~~~~~~~~
2026-10-25T02:20:15.2084941Z 747 );
2026-10-25T02:20:15.2084980Z ~~~~~~~
2026-10-25T02:20:15.2084982Z
2026-10-25T02:20:15.2085369Z src/orchestration-v2/ThreadManagementService.ts:737:9 - suggestion TS377120: `Effect.filterOrFail` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-25T02:20:15.2085372Z
2026-10-25T02:20:15.2085429Z 737 Effect.flatMap((projection) =>
2026-10-25T02:20:15.2085474Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2085478Z
2026-10-25T02:20:15.2085848Z src/orchestration-v2/ThreadManagementService.ts:1198: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-25T02:20:15.2085850Z
2026-10-25T02:20:15.2085949Z 1198 if (failures[0] !== undefined) return yield* Effect.fail(failures[0]);
2026-10-25T02:20:15.2086006Z ~~~~~
2026-10-25T02:20:15.2086009Z
2026-10-25T02:20:15.2086405Z src/orchestration-v2/ThreadManagementService.ts:1209:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.searchThread")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2086408Z
2026-10-25T02:20:15.2086461Z 1209 searchThread: (input) =>
2026-10-25T02:20:15.2088671Z ~~~~~~~~~~~~
2026-10-25T02:20:15.2088674Z
2026-10-25T02:20:15.2089209Z src/orchestration-v2/ThreadManagementService.ts:1214: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-25T02:20:15.2089211Z
2026-10-25T02:20:15.2089371Z 1214 getThreadHistoryPage: (threadId, cursor, throughEntryId, conversationOnly) =>
2026-10-25T02:20:15.2089417Z ~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2089419Z
2026-10-25T02:20:15.2089797Z src/orchestration-v2/ThreadManagementService.ts:1220:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.getTimelinePage")((threadId, options) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2089799Z
2026-10-25T02:20:15.2089863Z 1220 getTimelinePage: (threadId, options) =>
2026-10-25T02:20:15.2089906Z ~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2089908Z
2026-10-25T02:20:15.2090274Z src/orchestration-v2/ThreadManagementService.ts:1224:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.getMessageCount")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2090276Z
2026-10-25T02:20:15.2090329Z 1224 getMessageCount: (threadId) =>
2026-10-25T02:20:15.2090374Z ~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2090376Z
2026-10-25T02:20:15.2090727Z src/orchestration-v2/ThreadManagementService.ts:1228:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.getTurnItem")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2090729Z
2026-10-25T02:20:15.2090779Z 1228 getTurnItem: (input) =>
2026-10-25T02:20:15.2090824Z ~~~~~~~~~~~
2026-10-25T02:20:15.2090828Z
2026-10-25T02:20:15.2091211Z src/orchestration-v2/ThreadManagementService.ts:1233:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.getThreadRecords")((threadId, fields, filter) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2091214Z
2026-10-25T02:20:15.2091287Z 1233 getThreadRecords: (threadId, fields, filter) =>
2026-10-25T02:20:15.2091332Z ~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2091334Z
2026-10-25T02:20:15.2091735Z src/orchestration-v2/ThreadManagementService.ts:1274:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("LegacyV1ThreadImporter.LegacyV1ThreadImporter.ensureTranscript")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2091737Z
2026-10-25T02:20:15.2091876Z 1274 ensureTranscript: () => Effect.succeed({ importedThreadCount: 0, importedMessageCount: 0 }),
2026-10-25T02:20:15.2091918Z ~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2091921Z
2026-10-25T02:20:15.2092195Z src/orchestration-v2/ThreadPullRequestService.test.ts:118:29 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2092199Z
2026-10-25T02:20:15.2092282Z 118 getShell: () => Effect.succeed(Option.some(project)),
2026-10-25T02:20:15.2092334Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2092336Z
2026-10-25T02:20:15.2092605Z src/orchestration-v2/ThreadPullRequestService.test.ts:237:31 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2092608Z
2026-10-25T02:20:15.2092736Z 237 getShell: () => Effect.succeed(Option.some(project)),
2026-10-25T02:20:15.2092789Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2092791Z
2026-10-25T02:20:15.2093181Z src/orchestration-v2/ThreadPullRequestService.ts:322:17 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-25T02:20:15.2093233Z
2026-10-25T02:20:15.2093292Z 322 Effect.catchCause((cause) =>
2026-10-25T02:20:15.2093339Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2093341Z
2026-10-25T02:20:15.2093721Z src/orchestration-v2/ThreadSettlementService.ts:344:11 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-25T02:20:15.2093724Z
2026-10-25T02:20:15.2093781Z 344 Effect.catchCause((cause) =>
2026-10-25T02:20:15.2093826Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2093828Z
2026-10-25T02:20:15.2094205Z src/orchestration-v2/ThreadSettlementService.ts:500:11 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-25T02:20:15.2094209Z
2026-10-25T02:20:15.2094262Z 500 Effect.catchCause((cause) =>
2026-10-25T02:20:15.2094306Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2094308Z
2026-10-25T02:20:15.2094685Z src/orchestration-v2/ThreadSettlementService.ts:518:7 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-25T02:20:15.2094687Z
2026-10-25T02:20:15.2094741Z 518 Effect.catchCause((cause) =>
2026-10-25T02:20:15.2094787Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2094789Z
2026-10-25T02:20:15.2095166Z src/orchestration-v2/ThreadSettlementService.ts:557:9 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-25T02:20:15.2095169Z
2026-10-25T02:20:15.2095221Z 557 Effect.catchCause((cause) =>
2026-10-25T02:20:15.2095269Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2095272Z
2026-10-25T02:20:15.2095630Z 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-25T02:20:15.2095632Z
2026-10-25T02:20:15.2095687Z 106 normalize: (item, runOrdinal) =>
2026-10-25T02:20:15.2095727Z ~~~~~~~~~
2026-10-25T02:20:15.2095729Z
2026-10-25T02:20:15.2096135Z 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-25T02:20:15.2096137Z
2026-10-25T02:20:15.2096240Z 54 const thread = Schema.decodeUnknownSync(OrchestrationV2AppThread)({
2026-10-25T02:20:15.2096289Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2096291Z
2026-10-25T02:20:15.2096663Z src/orchestration-v2/http.ts:240: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-25T02:20:15.2096665Z
2026-10-25T02:20:15.2096704Z 240 try {
2026-10-25T02:20:15.2096745Z ~~~~~
2026-10-25T02:20:15.2096866Z 241 decodeThreadHistoryCursor(args.query.cursor);
2026-10-25T02:20:15.2096932Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2096971Z ...
2026-10-25T02:20:15.2097103Z 245 return yield* failEnvironmentInternal("orchestration_thread_history_failed", cause);
2026-10-25T02:20:15.2097191Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2097232Z 246 }
2026-10-25T02:20:15.2097314Z ~~~~~~~~~~~
2026-10-25T02:20:15.2097317Z
2026-10-25T02:20:15.2097564Z src/orchestration-v2/runtimeLayer.test.ts:120:18 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2097566Z
2026-10-25T02:20:15.2097635Z 120 getById: () => Effect.succeed(Option.none()),
2026-10-25T02:20:15.2097682Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2097684Z
2026-10-25T02:20:15.2097933Z src/orchestration-v2/runtimeLayer.test.ts:997:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2097935Z
2026-10-25T02:20:15.2097982Z 997 Effect.succeed(
2026-10-25T02:20:15.2098027Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2098029Z
2026-10-25T02:20:15.2098402Z src/orchestration-v2/testkit/CommandOutputRecorder.ts:37:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("CommandOutputHub.CommandOutputHub.append")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2098406Z
2026-10-25T02:20:15.2098454Z 37 append: (input) =>
2026-10-25T02:20:15.2098493Z ~~~~~~
2026-10-25T02:20:15.2098497Z
2026-10-25T02:20:15.2098818Z src/orchestration-v2/testkit/OrchestratorScenario.ts:282:13 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("awaitDispatch")(function*(key) { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2098820Z
2026-10-25T02:20:15.2098882Z 282 const awaitDispatch = (key: string) =>
2026-10-25T02:20:15.2098925Z ~~~~~~~~~~~~~
2026-10-25T02:20:15.2098928Z
2026-10-25T02:20:15.2099360Z src/orchestration-v2/testkit/ProviderReplayHarness.ts:445:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadTitleRegenerationService.ThreadTitleRegenerationService.execute")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2099364Z
2026-10-25T02:20:15.2099415Z 445 execute: () => Effect.void,
2026-10-25T02:20:15.2099483Z ~~~~~~~
2026-10-25T02:20:15.2099485Z
2026-10-25T02:20:15.2099826Z src/persistence/PullRequestFilesViewed.ts:87:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestFilesViewedRepository.list")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2099828Z
2026-10-25T02:20:15.2099873Z 87 list: (input) =>
2026-10-25T02:20:15.2099913Z ~~~~
2026-10-25T02:20:15.2099916Z
2026-10-25T02:20:15.2100248Z src/persistence/PullRequestFilesViewed.ts:97:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestFilesViewedRepository.set")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2100252Z
2026-10-25T02:20:15.2100294Z 97 set: (input) =>
2026-10-25T02:20:15.2100334Z ~~~
2026-10-25T02:20:15.2100336Z
2026-10-25T02:20:15.2100671Z 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-25T02:20:15.2100674Z
2026-10-25T02:20:15.2100716Z 54 get: (key) =>
2026-10-25T02:20:15.2100754Z ~~~
2026-10-25T02:20:15.2100756Z
2026-10-25T02:20:15.2101147Z 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-25T02:20:15.2101150Z
2026-10-25T02:20:15.2101202Z 64 put: (key, guide) =>
2026-10-25T02:20:15.2101242Z ~~~
2026-10-25T02:20:15.2101244Z
2026-10-25T02:20:15.2101583Z 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-25T02:20:15.2101628Z
2026-10-25T02:20:15.2101678Z 45 Effect.catch((error) =>
2026-10-25T02:20:15.2101721Z ~~~~~~~~~~~~
2026-10-25T02:20:15.2101723Z
2026-10-25T02:20:15.2102043Z src/preview/DesktopBrowserChannel.ts:67:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBrowserChannel.awaitAttached")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2102046Z
2026-10-25T02:20:15.2102112Z 67 awaitAttached: () => Effect.succeed(false),
2026-10-25T02:20:15.2102152Z ~~~~~~~~~~~~~
2026-10-25T02:20:15.2102156Z
2026-10-25T02:20:15.2102468Z src/preview/DesktopBrowserChannel.ts:70:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBrowserChannel.isAttached")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2102471Z
2026-10-25T02:20:15.2102531Z 70 isAttached: () => Effect.succeed(false),
2026-10-25T02:20:15.2102574Z ~~~~~~~~~~
2026-10-25T02:20:15.2102576Z
2026-10-25T02:20:15.2102883Z src/preview/DesktopBrowserChannel.ts:71:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBrowserChannel.endpoint")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2102885Z
2026-10-25T02:20:15.2102987Z 71 endpoint: () => Effect.die("No desktop app is attached to this server."),
2026-10-25T02:20:15.2103026Z ~~~~~~~~
2026-10-25T02:20:15.2103028Z
2026-10-25T02:20:15.2103334Z src/preview/DesktopBrowserChannel.ts:72:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBrowserChannel.pointer")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2103336Z
2026-10-25T02:20:15.2103387Z 72 pointer: () => Effect.void,
2026-10-25T02:20:15.2103427Z ~~~~~~~
2026-10-25T02:20:15.2103429Z
2026-10-25T02:20:15.2103764Z src/preview/DesktopBrowserChannel.ts:185:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBrowserChannel.awaitAttached")((key, timeout) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2103770Z
2026-10-25T02:20:15.2103822Z 185 awaitAttached: (key, timeout) =>
2026-10-25T02:20:15.2103863Z ~~~~~~~~~~~~~
2026-10-25T02:20:15.2103866Z
2026-10-25T02:20:15.2104184Z src/preview/DesktopBrowserChannel.ts:207:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBrowserChannel.isAttached")((key) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2104186Z
2026-10-25T02:20:15.2104287Z 207 isAttached: (key) => Effect.sync(() => attachedTabs.has(keyOf(key))),
2026-10-25T02:20:15.2104326Z ~~~~~~~~~~
2026-10-25T02:20:15.2104329Z
2026-10-25T02:20:15.2104651Z src/preview/DesktopBrowserChannel.ts:209:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBrowserChannel.pointer")((key, pointer) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2104655Z
2026-10-25T02:20:15.2104759Z 209 pointer: (key, pointer) => command({ type: "pointer", ...key, ...pointer }),
2026-10-25T02:20:15.2104798Z ~~~~~~~
2026-10-25T02:20:15.2104800Z
2026-10-25T02:20:15.2105304Z src/preview/ServerBrowser.ts:472: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-25T02:20:15.2105307Z
2026-10-25T02:20:15.2105401Z 472 executable: () => Effect.runPromise(previewBrowser.executable),
2026-10-25T02:20:15.2105455Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2105457Z
2026-10-25T02:20:15.2105903Z src/preview/ServerBrowser.ts:678: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-25T02:20:15.2105949Z
2026-10-25T02:20:15.2106000Z 678 ? Effect.runPromise(
2026-10-25T02:20:15.2106045Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2106047Z
2026-10-25T02:20:15.2106487Z src/preview/ServerBrowser.ts:687: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-25T02:20:15.2106491Z
2026-10-25T02:20:15.2106569Z 687 const scope = await Effect.runPromise(Scope.make());
2026-10-25T02:20:15.2106621Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2106623Z
2026-10-25T02:20:15.2107065Z src/preview/ServerBrowser.ts:689: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-25T02:20:15.2107068Z
2026-10-25T02:20:15.2107132Z 689 const endpoint = await Effect.runPromise(
2026-10-25T02:20:15.2107183Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2107186Z
2026-10-25T02:20:15.2107628Z src/preview/ServerBrowser.ts:699: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-25T02:20:15.2107630Z
2026-10-25T02:20:15.2107714Z 699 await Effect.runPromise(Scope.close(scope, Exit.void));
2026-10-25T02:20:15.2107763Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2107765Z
2026-10-25T02:20:15.2108206Z src/preview/ServerBrowser.ts:703: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-25T02:20:15.2108208Z
2026-10-25T02:20:15.2108293Z 703 await Effect.runPromise(Scope.close(scope, Exit.void));
2026-10-25T02:20:15.2108339Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2108342Z
2026-10-25T02:20:15.2108789Z src/preview/ServerBrowser.ts:1185: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-25T02:20:15.2108792Z
2026-10-25T02:20:15.2108844Z 1185 await Effect.runPromise(
2026-10-25T02:20:15.2108889Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2108891Z
2026-10-25T02:20:15.2109342Z src/preview/ServerBrowser.ts:1678: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-25T02:20:15.2109344Z
2026-10-25T02:20:15.2109396Z 1678 : await Effect.runPromise(
2026-10-25T02:20:15.2109509Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2109512Z
2026-10-25T02:20:15.2109953Z src/preview/ServerBrowser.ts:1742: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-25T02:20:15.2109998Z
2026-10-25T02:20:15.2110054Z 1742 ? await Effect.runPromise(
2026-10-25T02:20:15.2110102Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2110105Z
2026-10-25T02:20:15.2110369Z src/preview/ServerBrowser.ts:1745:58 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-25T02:20:15.2110373Z
2026-10-25T02:20:15.2110481Z 1745 ServerBrowserTabNotFoundError: () => Effect.succeed(undefined),
2026-10-25T02:20:15.2110551Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2110553Z
2026-10-25T02:20:15.2111005Z src/preview/ServerBrowser.ts:1751: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-25T02:20:15.2111009Z
2026-10-25T02:20:15.2111081Z 1751 const { sessions } = await Effect.runPromise(
2026-10-25T02:20:15.2111140Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2111142Z
2026-10-25T02:20:15.2111587Z src/preview/ServerBrowser.ts:1778: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-25T02:20:15.2111589Z
2026-10-25T02:20:15.2111645Z 1778 await Effect.runPromise(
2026-10-25T02:20:15.2111691Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2111693Z
2026-10-25T02:20:15.2112135Z src/preview/ServerBrowser.ts:1809: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-25T02:20:15.2112138Z
2026-10-25T02:20:15.2112193Z 1809 await Effect.runPromise(
2026-10-25T02:20:15.2112239Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2112241Z
2026-10-25T02:20:15.2112684Z src/preview/ServerBrowser.ts:1873: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-25T02:20:15.2112686Z
2026-10-25T02:20:15.2112817Z 1873 await Effect.runPromise(manager.close({ threadId: tab.threadId, tabId: tab.tabId }));
2026-10-25T02:20:15.2112863Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2112865Z
2026-10-25T02:20:15.2113305Z src/preview/ServerBrowser.ts:1940: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-25T02:20:15.2113309Z
2026-10-25T02:20:15.2113360Z 1940 await Effect.runPromise(
2026-10-25T02:20:15.2113405Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2113407Z
2026-10-25T02:20:15.2113891Z src/preview/ServerBrowser.ts:1952: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-25T02:20:15.2113893Z
2026-10-25T02:20:15.2113964Z 1952 const snapshot = await Effect.runPromise(
2026-10-25T02:20:15.2114019Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2114062Z
2026-10-25T02:20:15.2114504Z src/preview/ServerBrowser.ts:2198: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-25T02:20:15.2114506Z
2026-10-25T02:20:15.2114555Z 2198 await Effect.runPromise(
2026-10-25T02:20:15.2114601Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2114604Z
2026-10-25T02:20:15.2114882Z 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-25T02:20:15.2114884Z
2026-10-25T02:20:15.2114956Z 179 const receive = (chunk: Uint8Array | string) => {
2026-10-25T02:20:15.2114998Z ~~~~~~~
2026-10-25T02:20:15.2115001Z
2026-10-25T02:20:15.2115298Z 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-25T02:20:15.2115302Z
2026-10-25T02:20:15.2115396Z 209 Effect.catch(() => Effect.succeed(HttpServerResponse.empty())),
2026-10-25T02:20:15.2115437Z ~~~~~~~~~~~~
2026-10-25T02:20:15.2115439Z
2026-10-25T02:20:15.2115765Z src/process/externalLauncher.ts:822:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ExternalLauncher.resolveAvailableEditors")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2115768Z
2026-10-25T02:20:15.2115855Z 822 resolveAvailableEditors: () => cachedAvailableEditors,
2026-10-25T02:20:15.2115899Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2115901Z
2026-10-25T02:20:15.2116232Z src/process/externalLauncher.ts:823:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ExternalLauncher.resolveFileManagerRevealKind")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2116236Z
2026-10-25T02:20:15.2116296Z 823 resolveFileManagerRevealKind: () =>
2026-10-25T02:20:15.2116341Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2116343Z
2026-10-25T02:20:15.2116651Z src/process/externalLauncher.ts:827:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ExternalLauncher.launchBrowser")((target) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2116655Z
2026-10-25T02:20:15.2116705Z 827 launchBrowser: (target) =>
2026-10-25T02:20:15.2116746Z ~~~~~~~~~~~~~
2026-10-25T02:20:15.2116748Z
2026-10-25T02:20:15.2117054Z src/process/externalLauncher.ts:831:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ExternalLauncher.launchEditor")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2117056Z
2026-10-25T02:20:15.2117107Z 831 launchEditor: (input) =>
2026-10-25T02:20:15.2117147Z ~~~~~~~~~~~~
2026-10-25T02:20:15.2117149Z
2026-10-25T02:20:15.2117399Z src/project/AgentSessionImporter.test.ts:212:15 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2117401Z
2026-10-25T02:20:15.2117449Z 212 Effect.succeed(
2026-10-25T02:20:15.2117493Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2117495Z
2026-10-25T02:20:15.2117771Z src/project/ManagedProjectFolders.ts:333:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2117773Z
2026-10-25T02:20:15.2117857Z 333 ? Effect.succeed(Option.some(folderFor(id.slice(-8))))
2026-10-25T02:20:15.2117902Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2117904Z
2026-10-25T02:20:15.2118274Z src/project/ManagedProjectFolders.ts:335:15 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2118333Z
2026-10-25T02:20:15.2118403Z 335 ? Effect.succeed(Option.some(fullFolder))
2026-10-25T02:20:15.2118446Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2118448Z
2026-10-25T02:20:15.2118766Z src/project/ProjectCloneTracker.ts:421:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProjectCloneTracker.start")((input, hooks) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2118768Z
2026-10-25T02:20:15.2118848Z 421 start: (input, hooks) => locked(start(input, hooks)),
2026-10-25T02:20:15.2118889Z ~~~~~
2026-10-25T02:20:15.2118892Z
2026-10-25T02:20:15.2119204Z src/project/ProjectCloneTracker.ts:422:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProjectCloneTracker.cancel")((projectId) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2119208Z
2026-10-25T02:20:15.2119278Z 422 cancel: (projectId) => locked(cancel(projectId)),
2026-10-25T02:20:15.2119321Z ~~~~~~
2026-10-25T02:20:15.2119357Z
2026-10-25T02:20:15.2119681Z src/project/ProjectCloneTracker.ts:423:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProjectCloneTracker.retry")((projectId) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2119683Z
2026-10-25T02:20:15.2119751Z 423 retry: (projectId) => locked(retry(projectId)),
2026-10-25T02:20:15.2119791Z ~~~~~
2026-10-25T02:20:15.2119795Z
2026-10-25T02:20:15.2120104Z src/project/ProjectCloneTracker.ts:424:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProjectCloneTracker.discard")((projectId) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2120106Z
2026-10-25T02:20:15.2120180Z 424 discard: (projectId) => locked(discard(projectId)),
2026-10-25T02:20:15.2120222Z ~~~~~~~
2026-10-25T02:20:15.2120226Z
2026-10-25T02:20:15.2120556Z 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-25T02:20:15.2120558Z
2026-10-25T02:20:15.2120658Z 21 get: (key) => Effect.sync(() => Option.fromUndefinedOr(bytes.get(key))),
2026-10-25T02:20:15.2120697Z ~~~
2026-10-25T02:20:15.2120699Z
2026-10-25T02:20:15.2121036Z 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-25T02:20:15.2121038Z
2026-10-25T02:20:15.2121085Z 22 set: (key, value) =>
2026-10-25T02:20:15.2121124Z ~~~
2026-10-25T02:20:15.2121126Z
2026-10-25T02:20:15.2121460Z 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-25T02:20:15.2121464Z
2026-10-25T02:20:15.2121510Z 26 remove: (key) =>
2026-10-25T02:20:15.2121551Z ~~~~~~
2026-10-25T02:20:15.2121553Z
2026-10-25T02:20:15.2121931Z 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-25T02:20:15.2121934Z
2026-10-25T02:20:15.2122031Z 30 create: () => Effect.die("Handoff does not create persistent secrets."),
2026-10-25T02:20:15.2122070Z ~~~~~~
2026-10-25T02:20:15.2122074Z
2026-10-25T02:20:15.2122424Z 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-25T02:20:15.2122471Z
2026-10-25T02:20:15.2122602Z 31 getOrCreateRandom: () => Effect.die("Handoff uses the destination environment identity."),
2026-10-25T02:20:15.2122647Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2122649Z
2026-10-25T02:20:15.2123064Z 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-25T02:20:15.2123067Z
2026-10-25T02:20:15.2123179Z 205 return yield* Schema.decodeUnknownEffect(Schema.fromJsonString(schema))(
2026-10-25T02:20:15.2123230Z ~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2123232Z
2026-10-25T02:20:15.2123504Z src/provider/CodexProvider.ts:559:11 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-25T02:20:15.2123509Z
2026-10-25T02:20:15.2123561Z 559 ? Effect.succeed(undefined)
2026-10-25T02:20:15.2123607Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2123609Z
2026-10-25T02:20:15.2123926Z src/provider/ModelManifest.ts:270:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ModelCatalog.ModelCatalog.current")((driverKind) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2123928Z
2026-10-25T02:20:15.2123980Z 270 current: (driverKind) =>
2026-10-25T02:20:15.2124020Z ~~~~~~~
2026-10-25T02:20:15.2124023Z
2026-10-25T02:20:15.2124384Z 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-25T02:20:15.2124386Z
2026-10-25T02:20:15.2124443Z 284 return yield* Effect.fail(
2026-10-25T02:20:15.2124487Z ~~~~~
2026-10-25T02:20:15.2124491Z
2026-10-25T02:20:15.2124811Z src/provider/ProviderAuthService.ts:209:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAuthService.importProfile")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2124813Z
2026-10-25T02:20:15.2124864Z 209 importProfile: (input) =>
2026-10-25T02:20:15.2124904Z ~~~~~~~~~~~~~
2026-10-25T02:20:15.2124906Z
2026-10-25T02:20:15.2125252Z 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-25T02:20:15.2125254Z
2026-10-25T02:20:15.2125313Z 39 credentials: (namespace, bindingId) =>
2026-10-25T02:20:15.2125356Z ~~~~~~~~~~~
2026-10-25T02:20:15.2125358Z
2026-10-25T02:20:15.2125736Z src/pullRequest/PullRequestService.ts:2933:7 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-25T02:20:15.2125739Z
2026-10-25T02:20:15.2125792Z 2933 Effect.catchCause((cause) =>
2026-10-25T02:20:15.2125835Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2125837Z
2026-10-25T02:20:15.2126244Z src/pullRequest/PullRequestService.ts:3327:7 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-25T02:20:15.2126248Z
2026-10-25T02:20:15.2126300Z 3327 Effect.catchCause((cause) =>
2026-10-25T02:20:15.2126343Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2126345Z
2026-10-25T02:20:15.2126661Z src/pullRequest/PullRequestService.ts:3538:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestService.listStats")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2126707Z
2026-10-25T02:20:15.2126756Z 3538 listStats: (input) =>
2026-10-25T02:20:15.2126796Z ~~~~~~~~~
2026-10-25T02:20:15.2126799Z
2026-10-25T02:20:15.2127036Z src/relay/AgentAwarenessRelay.test.ts:272:9 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-25T02:20:15.2127039Z
2026-10-25T02:20:15.2127089Z 272 Effect.succeed(
2026-10-25T02:20:15.2127133Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2127135Z
2026-10-25T02:20:15.2127445Z src/relay/AgentAwarenessRelay.ts:809:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AgentAwarenessRelay.requestCatchUp")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2127447Z
2026-10-25T02:20:15.2127566Z 809 requestCatchUp: () => Queue.offer(catchUpRequests, undefined).pipe(Effect.asVoid),
2026-10-25T02:20:15.2127610Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2127612Z
2026-10-25T02:20:15.2127994Z src/resourceTelemetry/DesktopTelemetryReceiver.ts:640:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopTelemetryReceiver.requestDesktopUpdate")((requestId) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2127997Z
2026-10-25T02:20:15.2128057Z 640 requestDesktopUpdate: (requestId) =>
2026-10-25T02:20:15.2128100Z ~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2128104Z
2026-10-25T02:20:15.2128476Z src/resourceTelemetry/DesktopTelemetryReceiver.ts:646:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopTelemetryReceiver.commitDesktopUpdate")((requestId) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2128478Z
2026-10-25T02:20:15.2128536Z 646 commitDesktopUpdate: (requestId) =>
2026-10-25T02:20:15.2128580Z ~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2128582Z
2026-10-25T02:20:15.2128953Z src/resourceTelemetry/DesktopTelemetryReceiver.ts:648:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopTelemetryReceiver.cancelDesktopUpdate")((requestId) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2128955Z
2026-10-25T02:20:15.2129011Z 648 cancelDesktopUpdate: (requestId) =>
2026-10-25T02:20:15.2129053Z ~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2129055Z
2026-10-25T02:20:15.2129455Z src/resourceTelemetry/DesktopTelemetryReceiver.ts:697:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopTelemetryReceiver.setDiagnosticsDemand")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2129458Z
2026-10-25T02:20:15.2129520Z 697 setDiagnosticsDemand: () => Effect.void,
2026-10-25T02:20:15.2129564Z ~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2129568Z
2026-10-25T02:20:15.2129926Z src/resourceTelemetry/DesktopTelemetryReceiver.ts:698:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopTelemetryReceiver.requestDesktopUpdate")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2129929Z
2026-10-25T02:20:15.2129992Z 698 requestDesktopUpdate: () => Effect.void,
2026-10-25T02:20:15.2130036Z ~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2130039Z
2026-10-25T02:20:15.2130436Z src/resourceTelemetry/DesktopTelemetryReceiver.ts:699:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopTelemetryReceiver.commitDesktopUpdate")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2130439Z
2026-10-25T02:20:15.2130500Z 699 commitDesktopUpdate: () => Effect.void,
2026-10-25T02:20:15.2130543Z ~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2130545Z
2026-10-25T02:20:15.2130907Z src/resourceTelemetry/DesktopTelemetryReceiver.ts:700:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopTelemetryReceiver.cancelDesktopUpdate")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2130964Z
2026-10-25T02:20:15.2131026Z 700 cancelDesktopUpdate: () => Effect.void,
2026-10-25T02:20:15.2131070Z ~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2131072Z
2026-10-25T02:20:15.2131408Z 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-25T02:20:15.2131411Z
2026-10-25T02:20:15.2131455Z 1091 readHistory: () =>
2026-10-25T02:20:15.2131496Z ~~~~~~~~~~~
2026-10-25T02:20:15.2131499Z
2026-10-25T02:20:15.2131853Z 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-25T02:20:15.2131857Z
2026-10-25T02:20:15.2131921Z 1097 setExternalProcesses: () => Effect.void,
2026-10-25T02:20:15.2131964Z ~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2131966Z
2026-10-25T02:20:15.2132310Z 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-25T02:20:15.2132314Z
2026-10-25T02:20:15.2132373Z 1098 setHostPowerState: () => Effect.void,
2026-10-25T02:20:15.2132417Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2132419Z
2026-10-25T02:20:15.2132717Z src/scheduledTasks/ScheduledTaskService.ts:1112:31 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-25T02:20:15.2132719Z
2026-10-25T02:20:15.2132788Z 1112 ? Effect.succeed(undefined)
2026-10-25T02:20:15.2132843Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2132845Z
2026-10-25T02:20:15.2133127Z 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-25T02:20:15.2133129Z
2026-10-25T02:20:15.2133186Z 166 const results = yield* Effect.all(
2026-10-25T02:20:15.2133234Z ~~~~~~~~~~
2026-10-25T02:20:15.2133236Z
2026-10-25T02:20:15.2133595Z src/server.ts:489: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-25T02:20:15.2133598Z
2026-10-25T02:20:15.2133650Z 489 return Effect.gen(function* () {
2026-10-25T02:20:15.2133692Z ~~~~~~
2026-10-25T02:20:15.2133694Z
2026-10-25T02:20:15.2133967Z 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-25T02:20:15.2133969Z
2026-10-25T02:20:15.2134036Z 209 prepareTrial: Effect.succeed(undefined),
2026-10-25T02:20:15.2134089Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2134091Z
2026-10-25T02:20:15.2134397Z 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-25T02:20:15.2134399Z
2026-10-25T02:20:15.2134455Z 413 const results = yield* Effect.all(
2026-10-25T02:20:15.2134501Z ~~~~~~~~~~
2026-10-25T02:20:15.2134504Z
2026-10-25T02:20:15.2134919Z src/sourceControl/SourceControlProviderRegistry.ts:199:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.listChangeRequests")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2134969Z
2026-10-25T02:20:15.2135030Z 199 listChangeRequests: (input) =>
2026-10-25T02:20:15.2135073Z ~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2135075Z
2026-10-25T02:20:15.2135485Z src/sourceControl/SourceControlProviderRegistry.ts:204:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2135487Z
2026-10-25T02:20:15.2135539Z 204 getChangeRequest: (input) =>
2026-10-25T02:20:15.2135582Z ~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2135584Z
2026-10-25T02:20:15.2135996Z src/sourceControl/SourceControlProviderRegistry.ts:209:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.createChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2136000Z
2026-10-25T02:20:15.2136055Z 209 createChangeRequest: (input) =>
2026-10-25T02:20:15.2136098Z ~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2136100Z
2026-10-25T02:20:15.2136517Z src/sourceControl/SourceControlProviderRegistry.ts:214:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getRepositoryCloneUrls")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2136522Z
2026-10-25T02:20:15.2136578Z 214 getRepositoryCloneUrls: (input) =>
2026-10-25T02:20:15.2136622Z ~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2136624Z
2026-10-25T02:20:15.2137026Z src/sourceControl/SourceControlProviderRegistry.ts:219:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.createRepository")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2137030Z
2026-10-25T02:20:15.2137127Z 219 createRepository: (input) => provider.createRepository(input),
2026-10-25T02:20:15.2137168Z ~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2137172Z
2026-10-25T02:20:15.2137575Z src/sourceControl/SourceControlProviderRegistry.ts:220:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getDefaultBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2137577Z
2026-10-25T02:20:15.2137628Z 220 getDefaultBranch: (input) =>
2026-10-25T02:20:15.2137670Z ~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2137672Z
2026-10-25T02:20:15.2138089Z src/sourceControl/SourceControlProviderRegistry.ts:225:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.checkoutChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2138093Z
2026-10-25T02:20:15.2138148Z 225 checkoutChangeRequest: (input) =>
2026-10-25T02:20:15.2138190Z ~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2138192Z
2026-10-25T02:20:15.2138549Z src/sourceControl/SourceControlProviderRegistry.ts:340:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProviderRegistry.resolve")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2138552Z
2026-10-25T02:20:15.2138724Z 340 resolve: (input) => resolveHandle(input).pipe(Effect.map((handle) => handle.provider)),
2026-10-25T02:20:15.2138765Z ~~~~~~~
2026-10-25T02:20:15.2138767Z
2026-10-25T02:20:15.2139132Z src/sourceControl/SourceControlRepositoryService.ts:385:7 - suggestion TS377116: `Effect.catchIf` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-25T02:20:15.2139184Z
2026-10-25T02:20:15.2139233Z 385 Effect.catch((sshError) =>
2026-10-25T02:20:15.2139274Z ~~~~~~~~~~~~
2026-10-25T02:20:15.2139277Z
2026-10-25T02:20:15.2139826Z src/sourceControl/SourceControlRepositoryService.ts:524:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.lookupRepository")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2139828Z
2026-10-25T02:20:15.2139881Z 524 lookupRepository: (input) =>
2026-10-25T02:20:15.2139922Z ~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2139924Z
2026-10-25T02:20:15.2140294Z src/sourceControl/SourceControlRepositoryService.ts:526:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.prepareClone")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2140296Z
2026-10-25T02:20:15.2140347Z 526 prepareClone: (input) =>
2026-10-25T02:20:15.2140390Z ~~~~~~~~~~~~
2026-10-25T02:20:15.2140392Z
2026-10-25T02:20:15.2140782Z src/sourceControl/SourceControlRepositoryService.ts:533:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.cloneRepository")((input, options) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2140785Z
2026-10-25T02:20:15.2140841Z 533 cloneRepository: (input, options) =>
2026-10-25T02:20:15.2140882Z ~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2140885Z
2026-10-25T02:20:15.2141272Z src/sourceControl/SourceControlRepositoryService.ts:540:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.discardClone")((destinationPath) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2141274Z
2026-10-25T02:20:15.2141330Z 540 discardClone: (destinationPath) =>
2026-10-25T02:20:15.2141370Z ~~~~~~~~~~~~
2026-10-25T02:20:15.2141373Z
2026-10-25T02:20:15.2141753Z src/sourceControl/SourceControlRepositoryService.ts:544:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.publishRepository")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2141757Z
2026-10-25T02:20:15.2141809Z 544 publishRepository: (input) =>
2026-10-25T02:20:15.2141852Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2141855Z
2026-10-25T02:20:15.2142180Z src/storageCleanup.ts:695: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-25T02:20:15.2142182Z
2026-10-25T02:20:15.2142235Z 695 return yield* Effect.fail(
2026-10-25T02:20:15.2142275Z ~~~~~
2026-10-25T02:20:15.2142277Z
2026-10-25T02:20:15.2142568Z src/telemetry/AnalyticsService.ts:102:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AnalyticsService.record")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2142572Z
2026-10-25T02:20:15.2142619Z 102 record: () => Effect.void,
2026-10-25T02:20:15.2142659Z ~~~~~~
2026-10-25T02:20:15.2142661Z
2026-10-25T02:20:15.2142961Z src/telemetry/AnalyticsService.ts:104:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AnalyticsService.recordOwners")(() => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2143005Z
2026-10-25T02:20:15.2143059Z 104 recordOwners: () => Effect.void,
2026-10-25T02:20:15.2143099Z ~~~~~~~~~~~~
2026-10-25T02:20:15.2143101Z
2026-10-25T02:20:15.2143407Z src/telemetry/AnalyticsService.ts:316:62 - suggestion TS377132: `Effect.andThen` expresses this sequencing more directly than `Effect.flatMap` with a zero-parameter callback. effect(flatMapIgnoredParamToAndThen)
2026-10-25T02:20:15.2143410Z
2026-10-25T02:20:15.2143677Z 316 yield* Effect.forever(Effect.sleep(FLUSH_INTERVAL_MS).pipe(Effect.flatMap(() => flushWhenDue)), {
2026-10-25T02:20:15.2143746Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2143748Z
2026-10-25T02:20:15.2144028Z src/textGeneration/CodexTextGeneration.ts:85:13 - suggestion TS377099: `Effect.ignore` expresses ignored failure more directly than `Effect.catch` returning `Effect.void`. effect(catchToIgnore)
2026-10-25T02:20:15.2144030Z
2026-10-25T02:20:15.2144091Z 85 .pipe(Effect.catch(() => Effect.void));
2026-10-25T02:20:15.2144134Z ~~~~~~~~~~~~
2026-10-25T02:20:15.2144136Z
2026-10-25T02:20:15.2144464Z 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-25T02:20:15.2144466Z
2026-10-25T02:20:15.2144521Z 60 generateCommitMessage: (input) =>
2026-10-25T02:20:15.2144565Z ~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2144567Z
2026-10-25T02:20:15.2144884Z 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-25T02:20:15.2144886Z
2026-10-25T02:20:15.2144938Z 64 generatePrContent: (input) =>
2026-10-25T02:20:15.2144980Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2144983Z
2026-10-25T02:20:15.2145300Z 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-25T02:20:15.2145304Z
2026-10-25T02:20:15.2145355Z 68 generateBranchName: (input) =>
2026-10-25T02:20:15.2145399Z ~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2145401Z
2026-10-25T02:20:15.2145720Z 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-25T02:20:15.2145724Z
2026-10-25T02:20:15.2145778Z 72 generateReviewGuide: (input) =>
2026-10-25T02:20:15.2145820Z ~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2145822Z
2026-10-25T02:20:15.2146145Z 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-25T02:20:15.2146147Z
2026-10-25T02:20:15.2146200Z 76 generateThreadTitle: (input) =>
2026-10-25T02:20:15.2146245Z ~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2146247Z
2026-10-25T02:20:15.2146533Z src/usage/UsageService.ts:165:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("UsageService.readSummary")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2146537Z
2026-10-25T02:20:15.2146588Z 165 readSummary: (input) =>
2026-10-25T02:20:15.2146629Z ~~~~~~~~~~~
2026-10-25T02:20:15.2146631Z
2026-10-25T02:20:15.2146877Z src/usage/UsageService.ts:626:9 - suggestion TS377015: This expression contains chained `pipe` calls that can be simplified to a single `pipe` call. effect(unnecessaryPipeChain)
2026-10-25T02:20:15.2146880Z
2026-10-25T02:20:15.2146936Z 626 usageInstances(driver, settings)
2026-10-25T02:20:15.2147026Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2147070Z 627 .pipe(
2026-10-25T02:20:15.2147111Z ~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2147148Z ...
2026-10-25T02:20:15.2147214Z 648 Effect.provideContext(readerContext),
2026-10-25T02:20:15.2147272Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2147313Z 649 ),
2026-10-25T02:20:15.2147352Z ~~~~~~~~~~~
2026-10-25T02:20:15.2147354Z
2026-10-25T02:20:15.2147743Z src/vcs/GitVcsDriverCore.ts:3964:9 - suggestion TS377120: `Effect.filterOrElse` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-25T02:20:15.2147747Z
2026-10-25T02:20:15.2147797Z 3964 Effect.flatMap((result) =>
2026-10-25T02:20:15.2147839Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2147842Z
2026-10-25T02:20:15.2148179Z src/vcs/GitVcsDriverCore.ts:4448: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-25T02:20:15.2148181Z
2026-10-25T02:20:15.2148242Z 4448 commit: (cwd, subject, body, options) =>
2026-10-25T02:20:15.2148279Z ~~~~~~
2026-10-25T02:20:15.2148282Z
2026-10-25T02:20:15.2148646Z src/vcs/GitVcsDriverCore.ts:4450: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-25T02:20:15.2148650Z
2026-10-25T02:20:15.2148734Z 4450 pushCurrentBranch: (cwd, fallbackBranch, options) =>
2026-10-25T02:20:15.2148776Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2148779Z
2026-10-25T02:20:15.2149106Z src/vcs/GitVcsDriverCore.ts:4452:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.pullCurrentBranch")((cwd) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2149108Z
2026-10-25T02:20:15.2149235Z 4452 pullCurrentBranch: (cwd) => withListRefsInvalidation(cwd, pullCurrentBranch(cwd)),
2026-10-25T02:20:15.2149278Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2149280Z
2026-10-25T02:20:15.2149642Z src/vcs/GitVcsDriverCore.ts:4460:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.createWorktree")((input, options) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2149646Z
2026-10-25T02:20:15.2149703Z 4460 createWorktree: (input, options) =>
2026-10-25T02:20:15.2149745Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2149747Z
2026-10-25T02:20:15.2150072Z src/vcs/GitVcsDriverCore.ts:4462:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchRefIntoBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2150074Z
2026-10-25T02:20:15.2150221Z 4462 fetchRefIntoBranch: (input) => withListRefsInvalidation(input.cwd, fetchRefIntoBranch(input)),
2026-10-25T02:20:15.2150266Z ~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2150268Z
2026-10-25T02:20:15.2150608Z src/vcs/GitVcsDriverCore.ts:4465:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.refreshCheckedOutBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2150612Z
2026-10-25T02:20:15.2150671Z 4465 refreshCheckedOutBranch: (input) =>
2026-10-25T02:20:15.2150715Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2150717Z
2026-10-25T02:20:15.2151034Z src/vcs/GitVcsDriverCore.ts:4467:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.ensureRemote")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2151036Z
2026-10-25T02:20:15.2151208Z 4467 ensureRemote: (input) => withListRefsInvalidation(input.cwd, ensureRemote(input)),
2026-10-25T02:20:15.2151250Z ~~~~~~~~~~~~
2026-10-25T02:20:15.2151252Z
2026-10-25T02:20:15.2151569Z src/vcs/GitVcsDriverCore.ts:4470:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchRemote")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2151571Z
2026-10-25T02:20:15.2151662Z 4470 fetchRemote: (input) =>
2026-10-25T02:20:15.2151702Z ~~~~~~~~~~~
2026-10-25T02:20:15.2151705Z
2026-10-25T02:20:15.2152041Z src/vcs/GitVcsDriverCore.ts:4485:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchWorktreeBaseCommit")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2152043Z
2026-10-25T02:20:15.2152101Z 4485 fetchWorktreeBaseCommit: (input) =>
2026-10-25T02:20:15.2152143Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2152148Z
2026-10-25T02:20:15.2152476Z src/vcs/GitVcsDriverCore.ts:4487:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchRemoteBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2152479Z
2026-10-25T02:20:15.2152619Z 4487 fetchRemoteBranch: (input) => withListRefsInvalidation(input.cwd, fetchRemoteBranch(input)),
2026-10-25T02:20:15.2152663Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2152665Z
2026-10-25T02:20:15.2153007Z src/vcs/GitVcsDriverCore.ts:4488:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchRemoteTrackingBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2153010Z
2026-10-25T02:20:15.2153071Z 4488 fetchRemoteTrackingBranch: (input) =>
2026-10-25T02:20:15.2153117Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2153119Z
2026-10-25T02:20:15.2153446Z src/vcs/GitVcsDriverCore.ts:4490:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.setBranchUpstream")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2153449Z
2026-10-25T02:20:15.2153589Z 4490 setBranchUpstream: (input) => withListRefsInvalidation(input.cwd, setBranchUpstream(input)),
2026-10-25T02:20:15.2153633Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2153637Z
2026-10-25T02:20:15.2153961Z src/vcs/GitVcsDriverCore.ts:4491:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.removeWorktree")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2153963Z
2026-10-25T02:20:15.2154092Z 4491 removeWorktree: (input) => withListRefsInvalidation(input.cwd, removeWorktree(input)),
2026-10-25T02:20:15.2154135Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2154137Z
2026-10-25T02:20:15.2154462Z src/vcs/GitVcsDriverCore.ts:4492:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.pruneWorktrees")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2154464Z
2026-10-25T02:20:15.2154593Z 4492 pruneWorktrees: (input) => withListRefsInvalidation(input.cwd, pruneWorktrees(input)),
2026-10-25T02:20:15.2154634Z ~~~~~~~~~~~~~~
2026-10-25T02:20:15.2154637Z
2026-10-25T02:20:15.2154964Z src/vcs/GitVcsDriverCore.ts:4493:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.deleteLocalBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2154967Z
2026-10-25T02:20:15.2155106Z 4493 deleteLocalBranch: (input) => withListRefsInvalidation(input.cwd, deleteLocalBranch(input)),
2026-10-25T02:20:15.2155149Z ~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2155151Z
2026-10-25T02:20:15.2155510Z src/vcs/GitVcsDriverCore.ts:4494:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.renameBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2155513Z
2026-10-25T02:20:15.2155635Z 4494 renameBranch: (input) => withListRefsInvalidation(input.cwd, renameBranch(input)),
2026-10-25T02:20:15.2155675Z ~~~~~~~~~~~~
2026-10-25T02:20:15.2155678Z
2026-10-25T02:20:15.2155989Z src/vcs/GitVcsDriverCore.ts:4495:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.createRef")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2156035Z
2026-10-25T02:20:15.2156145Z 4495 createRef: (input) => withListRefsInvalidation(input.cwd, createRef(input)),
2026-10-25T02:20:15.2156187Z ~~~~~~~~~
2026-10-25T02:20:15.2156190Z
2026-10-25T02:20:15.2156502Z src/vcs/GitVcsDriverCore.ts:4496:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.switchRef")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-25T02:20:15.2156504Z
2026-10-25T02:20:15.2156611Z 4496 switchRef: (input) => withListRefsInvalidation(input.cwd, switchRef(input)),
2026-10-25T02:20:15.2156651Z ~~~~~~~~~
2026-10-25T02:20:15.2156654Z
2026-10-25T02:20:15.2157046Z 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-25T02:20:15.2157050Z
2026-10-25T02:20:15.2157117Z 153 return serverSettings.getSettings.pipe(
2026-10-25T02:20:15.2157155Z ~~~~~~
2026-10-25T02:20:15.2157159Z
2026-10-25T02:20:15.2157464Z src/workspace/WorkspaceFileSystem.ts:170:15 - suggestion TS377095: `Effect.orElseSucceed` expresses the same recovery more directly than `Effect.catch` followed by `Effect.succeed`. effect(catchToOrElseSucceed)
2026-10-25T02:20:15.2157468Z
2026-10-25T02:20:15.2157550Z 170 }).pipe(Effect.catch(() => Effect.succeed(undefined)));
2026-10-25T02:20:15.2157594Z ~~~~~~~~~~~~
2026-10-25T02:20:15.2157596Z
2026-10-25T02:20:15.2157880Z src/workspace/WorkspaceFileSystem.ts:170:34 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-25T02:20:15.2157884Z
2026-10-25T02:20:15.2157980Z 170 }).pipe(Effect.catch(() => Effect.succeed(undefined)));
2026-10-25T02:20:15.2158108Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2158110Z
2026-10-25T02:20:15.2158349Z src/ws.test.ts:469:47 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-25T02:20:15.2158352Z
2026-10-25T02:20:15.2158454Z 469 resolveFileManagerRevealKind: () => Effect.succeed(undefined),
2026-10-25T02:20:15.2158517Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-25T02:20:15.2158520Z
2026-10-25T02:20:15.2158803Z src/ws.ts:1394: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-25T02:20:15.2158806Z
2026-10-25T02:20:15.2158867Z 1394 return yield* Option.match(project, {
2026-10-25T02:20:15.2158917Z ~~~~~~~~~~~~
2026-10-25T02:20:15.2158920Z
2026-10-25T02:20:15.2159222Z src/ws.ts:2369: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-25T02:20:15.2159225Z
2026-10-25T02:20:15.2159280Z 2369 return yield* Effect.fail(
2026-10-25T02:20:15.2159373Z ~~~~~
2026-10-25T02:20:15.2159432Z
2026-10-25T02:20:15.2159731Z src/ws.ts:2378: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-25T02:20:15.2159733Z
2026-10-25T02:20:15.2159788Z 2378 return yield* Effect.fail(
2026-10-25T02:20:15.2159833Z ~~~~~
2026-10-25T02:20:15.2159888Z
2026-10-25T02:20:15.2160184Z src/ws.ts:2386: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-25T02:20:15.2160186Z
2026-10-25T02:20:15.2160240Z 2386 return yield* Effect.fail(
2026-10-25T02:20:15.2160284Z ~~~~~
2026-10-25T02:20:15.2160286Z
2026-10-25T02:20:15.2160288Z
2026-10-25T02:20:15.2160327Z ---
2026-10-25T02:20:15.2160613Z vp run: 0/33 cache hit (0%), 33/33 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-25T02:20:15.2591686Z Post job cleanup.
2026-10-25T02:20:15.3208362Z Cache hit occurred on the primary key electron-Linux-X64-854e11ddd491bd4f350eebb67a74265df119376a3984c8e153cfe5fc8ced6309, not saving cache.
2026-10-25T02:20:15.3270873Z Post job cleanup.
2026-10-25T02:20:15.3284930Z ##[start-action display=Cache full pnpm store;id=__f92ac6bc-94a5-4216-ba70-c5e77871f292.__actions_cache]
2026-10-25T02:20:15.4005852Z Post job cleanup.
2026-10-25T02:20:15.4677193Z [command]/usr/bin/tar --posix -cf cache.tzst --exclude cache.tzst -P -C /home/runner/_work/t3code/t3code --files-from manifest.txt --use-compress-program zstdmt
2026-10-25T02:20:19.0881816Z Failed to save: Unable to reserve cache with key pnpm-full-v1-Linux-X64-67727b77004e0e6799b7f8587a750813c0ad4460c623edf0becc280ccb581251, another job may be creating this cache.
2026-10-25T02:20:19.1348049Z ##[end-action id=__f92ac6bc-94a5-4216-ba70-c5e77871f292.__actions_cache;outcome=success;conclusion=success;duration_ms=3806]
2026-10-25T02:20:19.1350081Z ##[start-action display=Cache Vite+;id=__f92ac6bc-94a5-4216-ba70-c5e77871f292.vp_cache]
2026-10-25T02:20:19.1371778Z Post job cleanup.
2026-10-25T02:20:19.1988911Z 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-25T02:20:19.2015825Z ##[end-action id=__f92ac6bc-94a5-4216-ba70-c5e77871f292.vp_cache;outcome=success;conclusion=success;duration_ms=66]
2026-10-25T02:20:19.2049537Z Post job cleanup.
2026-10-25T02:20:19.2470048Z [command]/usr/local/bin/git version
2026-10-25T02:20:19.2496083Z git version 2.55.0
2026-10-25T02:20:19.2512555Z Temporarily overriding HOME='/home/runner/_work/_temp/96931028-f8e8-4ebd-9045-82831918ba56' before making global git config changes
2026-10-25T02:20:19.2512914Z Adding repository directory to the temporary git global config as a safe directory
2026-10-25T02:20:19.2515433Z [command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
2026-10-25T02:20:19.2536459Z Removing SSH command configuration
2026-10-25T02:20:19.2539322Z [command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-10-25T02:20:19.2560033Z [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-25T02:20:19.2673583Z fatal: No url found for submodule path '.repos/alchemy-effect/submodules/distilled' in .gitmodules
2026-10-25T02:20:19.2695150Z ##[warning]The process '/usr/local/bin/git' failed with exit code 128
2026-10-25T02:20:19.2728060Z A job completed hook has been configured by the self-hosted runner administrator
2026-10-25T02:20:19.2741751Z ##[group]Run '/job_completed.sh'
2026-10-25T02:20:19.2747777Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
2026-10-25T02:20:19.2747952Z env:
2026-10-25T02:20:19.2748080Z BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 145
2026-10-25T02:20:19.2748231Z BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 404
2026-10-25T02:20:19.2748374Z BLACKSMITH_CHECK_RUN_ID: 121051349043
2026-10-25T02:20:19.2748533Z BLACKSMITH_JOB_DISPLAY_NAME: Build and Typecheck
2026-10-25T02:20:19.2748695Z GITHUB_ACTIONS_CACHE_MODE: write
2026-10-25T02:20:19.2748832Z ##[endgroup]
2026-10-25T02:20:19.2818244Z Docker container cache not activated, skipping hash computation.
2026-10-25T02:20:19.3077174Z No active SSH sessions detected. Proceeding with shutdown immediately.
2026-10-25T02:20:19.3786294Z Cleaning up orphan processes