GitHub check
256 KB of 528 KB loaded Download the full log (528 KB)
272 KB of earlier output not loaded
he reusable function form `Effect.fn("AzureDevOpsPullRequestCli.setPullRequestReviewers")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5295667Z
2026-10-24T04:19:02.5295725Z 663 setPullRequestReviewers: (input) =>
2026-10-24T04:19:02.5295863Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5295934Z
2026-10-24T04:19:02.5296276Z src/server/AzureDevOpsPullRequestCli.ts:688:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AzureDevOpsPullRequestCli.runPullRequestAction")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5296659Z
2026-10-24T04:19:02.5296713Z 688 runPullRequestAction: (input) =>
2026-10-24T04:19:02.5296843Z ~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5296915Z
2026-10-24T04:19:02.5297261Z src/server/AzureDevOpsPullRequestCli.ts:707:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AzureDevOpsPullRequestCli.updatePullRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5297638Z
2026-10-24T04:19:02.5297687Z 707 updatePullRequest: (input) =>
2026-10-24T04:19:02.5297818Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5297885Z
2026-10-24T04:19:02.5298277Z src/server/AzureDevOpsSourceControlProvider.ts:81:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.listChangeRequests")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5298706Z
2026-10-24T04:19:02.5298758Z 81 listChangeRequests: (input) => {
2026-10-24T04:19:02.5298884Z ~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5298953Z
2026-10-24T04:19:02.5299339Z src/server/AzureDevOpsSourceControlProvider.ts:109:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5299762Z
2026-10-24T04:19:02.5299812Z 109 getChangeRequest: (input) =>
2026-10-24T04:19:02.5299939Z ~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5300007Z
2026-10-24T04:19:02.5300394Z src/server/AzureDevOpsSourceControlProvider.ts:127:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.createChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5300829Z
2026-10-24T04:19:02.5300883Z 127 createChangeRequest: (input) => {
2026-10-24T04:19:02.5301016Z ~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5301087Z
2026-10-24T04:19:02.5301491Z src/server/AzureDevOpsSourceControlProvider.ts:156:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getRepositoryCloneUrls")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5301964Z
2026-10-24T04:19:02.5302021Z 156 getRepositoryCloneUrls: (input) =>
2026-10-24T04:19:02.5302155Z ~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5302231Z
2026-10-24T04:19:02.5302619Z src/server/AzureDevOpsSourceControlProvider.ts:173:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.createRepository")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5303048Z
2026-10-24T04:19:02.5303098Z 173 createRepository: (input) =>
2026-10-24T04:19:02.5303224Z ~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5303288Z
2026-10-24T04:19:02.5303677Z src/server/AzureDevOpsSourceControlProvider.ts:190:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getDefaultBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5304104Z
2026-10-24T04:19:02.5304197Z 190 getDefaultBranch: (input) =>
2026-10-24T04:19:02.5304320Z ~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5304386Z
2026-10-24T04:19:02.5304780Z src/server/AzureDevOpsSourceControlProvider.ts:204:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.checkoutChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5305260Z
2026-10-24T04:19:02.5305315Z 204 checkoutChangeRequest: (input) =>
2026-10-24T04:19:02.5305449Z ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5305522Z
2026-10-24T04:19:02.5305524Z
2026-10-24T04:19:02.5305579Z ~/packages/provider-pi$ tsc --noEmit
2026-10-24T04:19:02.5305948Z src/server/GitCafeCredentials.ts:170:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitCafeCredentials.get")((host) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5306272Z
2026-10-24T04:19:02.5306323Z 170 get: (host) =>
2026-10-24T04:19:02.5306430Z ~~~
2026-10-24T04:19:02.5306483Z
2026-10-24T04:19:02.5306783Z src/server/GitCafeCredentials.ts:183:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitCafeCredentials.invalidate")((host) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5307126Z
2026-10-24T04:19:02.5307221Z 183 invalidate: (host) => Cache.invalidate(cache, normalizeHost(host)),
2026-10-24T04:19:02.5307397Z ~~~~~~~~~~
2026-10-24T04:19:02.5307459Z
2026-10-24T04:19:02.5307750Z src/server/GitCafeCredentials.ts:184:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitCafeCredentials.cliEnv")((host) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5308080Z
2026-10-24T04:19:02.5308123Z 184 cliEnv: (host) =>
2026-10-24T04:19:02.5308233Z ~~~~~~
2026-10-24T04:19:02.5308289Z
2026-10-24T04:19:02.5308539Z src/server/GitCafePullRequestProvider.ts:341:9 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T04:19:02.5308823Z
2026-10-24T04:19:02.5308876Z 341 Effect.map(Option.some),
2026-10-24T04:19:02.5309001Z ~~~~~~~~~~
2026-10-24T04:19:02.5309066Z
2026-10-24T04:19:02.5309307Z src/server/GitCafePullRequestProvider.ts:346:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5309589Z
2026-10-24T04:19:02.5309647Z 346 : Effect.succeed(Option.none()),
2026-10-24T04:19:02.5309793Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5309871Z
2026-10-24T04:19:02.5310115Z src/server/GitCafePullRequestProvider.ts:655:13 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T04:19:02.5310405Z
2026-10-24T04:19:02.5310458Z 655 Effect.map(Option.some),
2026-10-24T04:19:02.5310592Z ~~~~~~~~~~
2026-10-24T04:19:02.5310663Z
2026-10-24T04:19:02.5310902Z src/server/GitCafePullRequestProvider.ts:660:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5311183Z
2026-10-24T04:19:02.5311243Z 660 : Effect.succeed(Option.none()),
2026-10-24T04:19:02.5311394Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5311476Z
2026-10-24T04:19:02.5311794Z src/server/GitCafePullRequestProvider.ts:673:15 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("readPage")((rows, after) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5312125Z
2026-10-24T04:19:02.5312208Z 673 const readPage = (rows: number, after: string | null) => {
2026-10-24T04:19:02.5312373Z ~~~~~~~~
2026-10-24T04:19:02.5312443Z
2026-10-24T04:19:02.5312843Z src/server/GitCafePullRequestProvider.ts:790:13 - suggestion TS377116: `Effect.catchIf` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T04:19:02.5313224Z
2026-10-24T04:19:02.5313272Z 790 Effect.catch((error) =>
2026-10-24T04:19:02.5313451Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5313526Z
2026-10-24T04:19:02.5313858Z src/server/GitCafePullRequestProvider.ts:868:19 - suggestion TS377116: `Effect.catchIf` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T04:19:02.5314232Z
2026-10-24T04:19:02.5314289Z 868 Effect.catch((error) =>
2026-10-24T04:19:02.5314429Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5314509Z
2026-10-24T04:19:02.5314511Z
2026-10-24T04:19:02.5314567Z ~/packages/provider-muse$ tsc --noEmit
2026-10-24T04:19:02.5315042Z src/server/ForgejoSourceControlProvider.ts:340:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5315464Z
2026-10-24T04:19:02.5315518Z 340 getChangeRequest: (input) =>
2026-10-24T04:19:02.5315644Z ~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5315715Z
2026-10-24T04:19:02.5315717Z
2026-10-24T04:19:02.5315776Z ~/packages/provider-opencode$ tsc --noEmit
2026-10-24T04:19:02.5316182Z src/server/adapter.ts:440:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.getCapabilities")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5316538Z
2026-10-24T04:19:02.5316632Z 440 getCapabilities: () => Effect.succeed(PiProviderCapabilitiesV2),
2026-10-24T04:19:02.5316807Z ~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5316878Z
2026-10-24T04:19:02.5317210Z src/server/adapter.ts:441:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.planSelectionTransition")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5317577Z
2026-10-24T04:19:02.5317697Z 441 planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T04:19:02.5317903Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5317981Z
2026-10-24T04:19:02.5318196Z src/server/adapter.ts:1694:31 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T04:19:02.5318448Z
2026-10-24T04:19:02.5318517Z 1694 Effect.map(Option.some),
2026-10-24T04:19:02.5318679Z ~~~~~~~~~~
2026-10-24T04:19:02.5318767Z
2026-10-24T04:19:02.5318980Z src/server/adapter.ts:1697:29 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5319233Z
2026-10-24T04:19:02.5319303Z 1697 : Effect.succeed(Option.none()),
2026-10-24T04:19:02.5319464Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5319557Z
2026-10-24T04:19:02.5319806Z src/server/rpc.ts:334:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("onSuccess")(function*() { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5320089Z
2026-10-24T04:19:02.5320136Z 334 onSuccess: () =>
2026-10-24T04:19:02.5320250Z ~~~~~~~~~
2026-10-24T04:19:02.5320312Z
2026-10-24T04:19:02.5320517Z src/server/rpc.ts:342:17 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T04:19:02.5320762Z
2026-10-24T04:19:02.5320819Z 342 Effect.map(Option.some),
2026-10-24T04:19:02.5320956Z ~~~~~~~~~~
2026-10-24T04:19:02.5321033Z
2026-10-24T04:19:02.5321035Z
2026-10-24T04:19:02.5321177Z ~/packages/provider-cursor$ tsc --noEmit
2026-10-24T04:19:02.5321613Z src/server/adapter.ts:284:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.getCapabilities")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5322019Z
2026-10-24T04:19:02.5322118Z 284 getCapabilities: () => Effect.succeed(MuseProviderCapabilitiesV2),
2026-10-24T04:19:02.5322301Z ~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5322372Z
2026-10-24T04:19:02.5322705Z src/server/adapter.ts:285:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.planSelectionTransition")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5323073Z
2026-10-24T04:19:02.5323194Z 285 planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T04:19:02.5323401Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5323476Z
2026-10-24T04:19:02.5323741Z src/server/adapter.ts:388:13 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("TimeoutError")(function*(cause) { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5324046Z
2026-10-24T04:19:02.5324103Z 388 TimeoutError: (cause) =>
2026-10-24T04:19:02.5324236Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5324312Z
2026-10-24T04:19:02.5324527Z src/server/adapter.ts:1366:35 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T04:19:02.5324776Z
2026-10-24T04:19:02.5324903Z 1366 wake === held ? Effect.map(dispatch, Option.some) : Effect.succeed(Option.none()),
2026-10-24T04:19:02.5325121Z ~~~~~~~~~~
2026-10-24T04:19:02.5325213Z
2026-10-24T04:19:02.5325426Z src/server/adapter.ts:1366:71 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5325673Z
2026-10-24T04:19:02.5325794Z 1366 wake === held ? Effect.map(dispatch, Option.some) : Effect.succeed(Option.none()),
2026-10-24T04:19:02.5326021Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5326137Z
2026-10-24T04:19:02.5326139Z
2026-10-24T04:19:02.5326196Z ~/packages/provider-grok$ tsc --noEmit
2026-10-24T04:19:02.5326555Z 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-24T04:19:02.5326866Z
2026-10-24T04:19:02.5326926Z 147 return Effect.succeed(undefined);
2026-10-24T04:19:02.5327063Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5327149Z
2026-10-24T04:19:02.5327538Z 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-24T04:19:02.5327960Z
2026-10-24T04:19:02.5328016Z 188 if (!recordable) return Effect.void;
2026-10-24T04:19:02.5328165Z ~~~~~~
2026-10-24T04:19:02.5328247Z
2026-10-24T04:19:02.5328620Z src/server/OpenCodeServerLedger.ts:208:9 - suggestion TS377014: This generator returns an Effect-able value directly, which produces a nested `Effect<Effect<...>>`. If the intended result is the inner Effect value, `return yield*` represents that form. effect(returnEffectInGen)
2026-10-24T04:19:02.5329045Z
2026-10-24T04:19:02.5329094Z 208 return Effect.void;
2026-10-24T04:19:02.5329211Z ~~~~~~
2026-10-24T04:19:02.5329275Z
2026-10-24T04:19:02.5329708Z src/server/OpenCodeServerLedger.ts:228:7 - suggestion TS377014: This generator returns an Effect-able value directly, which produces a nested `Effect<Effect<...>>`. If the intended result is the inner Effect value, `return yield*` represents that form. effect(returnEffectInGen)
2026-10-24T04:19:02.5330123Z
2026-10-24T04:19:02.5330168Z 228 return fs
2026-10-24T04:19:02.5330271Z ~~~~~~
2026-10-24T04:19:02.5330379Z
2026-10-24T04:19:02.5330673Z src/server/OpenCodeServerLedger.ts:311:29 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OpenCodeServerLedger.track")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5331007Z
2026-10-24T04:19:02.5331114Z 311 OpenCodeServerLedger.of({ track: () => Effect.succeed(Effect.void) }),
2026-10-24T04:19:02.5331309Z ~~~~~
2026-10-24T04:19:02.5331393Z
2026-10-24T04:19:02.5331734Z 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-24T04:19:02.5332078Z
2026-10-24T04:19:02.5332129Z 169 withServer: (use) =>
2026-10-24T04:19:02.5332244Z ~~~~~~~~~~
2026-10-24T04:19:02.5332307Z
2026-10-24T04:19:02.5332692Z 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-24T04:19:02.5333112Z
2026-10-24T04:19:02.5333230Z 103 const OPENCODE_TEST_SETTINGS = Schema.decodeUnknownSync(OpenCodeSettings)({});
2026-10-24T04:19:02.5333444Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5333541Z
2026-10-24T04:19:02.5333860Z src/server/adapter.ts:938:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.getCapabilities")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5334216Z
2026-10-24T04:19:02.5334325Z 938 getCapabilities: () => Effect.succeed(OpenCodeProviderCapabilitiesV2),
2026-10-24T04:19:02.5334517Z ~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5334590Z
2026-10-24T04:19:02.5334923Z src/server/adapter.ts:939:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.planSelectionTransition")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5335294Z
2026-10-24T04:19:02.5335409Z 939 planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T04:19:02.5335616Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5335693Z
2026-10-24T04:19:02.5335978Z src/server/adapter.ts:1011:33 - suggestion TS377111: `AbortController` is manually constructed inside Effect code. Use `Effect.abortSignal` for Effect-managed cancellation. effect(abortControllerInEffect)
2026-10-24T04:19:02.5336303Z
2026-10-24T04:19:02.5336380Z 1011 const abortController = new AbortController();
2026-10-24T04:19:02.5336550Z ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5336649Z
2026-10-24T04:19:02.5336963Z src/server/adapter.ts:1088:31 - suggestion TS377019: This `yield* Effect.fail(...)` passes a yieldable error value. `yield*` represents that value directly without wrapping it in `Effect.fail`. effect(unnecessaryFailYieldableError)
2026-10-24T04:19:02.5337317Z
2026-10-24T04:19:02.5337389Z 1088 if (failure) return yield* Effect.fail(failure);
2026-10-24T04:19:02.5337560Z ~~~~~
2026-10-24T04:19:02.5337647Z
2026-10-24T04:19:02.5337917Z src/server/adapter.ts:1584:15 - suggestion TS377095: `Effect.orElseSucceed` expresses the same recovery more directly than `Effect.catch` followed by `Effect.succeed`. effect(catchToOrElseSucceed)
2026-10-24T04:19:02.5338229Z
2026-10-24T04:19:02.5338308Z 1584 Effect.catch(() => Effect.succeed(undefined)),
2026-10-24T04:19:02.5338463Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5338581Z
2026-10-24T04:19:02.5338831Z src/server/adapter.ts:1584:34 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T04:19:02.5339118Z
2026-10-24T04:19:02.5339234Z 1584 Effect.catch(() => Effect.succeed(undefined)),
2026-10-24T04:19:02.5339401Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5339502Z
2026-10-24T04:19:02.5339788Z src/server/adapter.ts:3194:43 - suggestion TS377111: `AbortController` is manually constructed inside Effect code. Use `Effect.abortSignal` for Effect-managed cancellation. effect(abortControllerInEffect)
2026-10-24T04:19:02.5340107Z
2026-10-24T04:19:02.5340191Z 3194 admissionAbortController: new AbortController(),
2026-10-24T04:19:02.5340374Z ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5340473Z
2026-10-24T04:19:02.5340760Z src/server/adapter.ts:3354:47 - suggestion TS377111: `AbortController` is manually constructed inside Effect code. Use `Effect.abortSignal` for Effect-managed cancellation. effect(abortControllerInEffect)
2026-10-24T04:19:02.5341080Z
2026-10-24T04:19:02.5341171Z 3354 turn.admissionAbortController = new AbortController();
2026-10-24T04:19:02.5341362Z ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5341468Z
2026-10-24T04:19:02.5341784Z src/server/v2/OpenCode2Client.ts:158:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OpenCode2Client.connect")((_) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5342105Z
2026-10-24T04:19:02.5342170Z 158 connect: ({ baseUrl, password }) => {
2026-10-24T04:19:02.5342311Z ~~~~~~~
2026-10-24T04:19:02.5342371Z
2026-10-24T04:19:02.5342671Z src/server/v2/OpenCode2Server.ts:160:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OpenCode2Server.withConnection")((use) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5343009Z
2026-10-24T04:19:02.5343063Z 160 withConnection: (use) =>
2026-10-24T04:19:02.5343191Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5343263Z
2026-10-24T04:19:02.5343556Z src/server/v2/OpenCode2Server.ts:175:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OpenCode2Server.withConnection")((use) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5343888Z
2026-10-24T04:19:02.5343939Z 175 withConnection: (use) =>
2026-10-24T04:19:02.5344065Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5344130Z
2026-10-24T04:19:02.5344344Z src/server/v2/adapter.ts:1544:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5344597Z
2026-10-24T04:19:02.5344722Z 1544 wake.dropped ? Effect.succeed(Option.none()) : Effect.map(dispatch, Option.some),
2026-10-24T04:19:02.5344932Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5345025Z
2026-10-24T04:19:02.5345242Z src/server/v2/adapter.ts:1544:58 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T04:19:02.5345500Z
2026-10-24T04:19:02.5345615Z 1544 wake.dropped ? Effect.succeed(Option.none()) : Effect.map(dispatch, Option.some),
2026-10-24T04:19:02.5345839Z ~~~~~~~~~~
2026-10-24T04:19:02.5345943Z
2026-10-24T04:19:02.5346262Z src/server/v2/adapter.ts:4137:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.getCapabilities")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5346629Z
2026-10-24T04:19:02.5346734Z 4137 getCapabilities: () => Effect.succeed(OpenCode2ProviderCapabilities),
2026-10-24T04:19:02.5346920Z ~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5347046Z
2026-10-24T04:19:02.5347385Z src/server/v2/adapter.ts:4138:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.planSelectionTransition")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5347803Z
2026-10-24T04:19:02.5347919Z 4138 planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T04:19:02.5348126Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5348205Z
2026-10-24T04:19:02.5348207Z
2026-10-24T04:19:02.5348271Z ~/packages/provider-acp-registry$ tsc --noEmit
2026-10-24T04:19:02.5348704Z src/server/driver.ts:174:7 - suggestion TS377120: `Effect.filterOrElse` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-24T04:19:02.5349065Z
2026-10-24T04:19:02.5349121Z 174 Effect.flatMap((snapshot) =>
2026-10-24T04:19:02.5349252Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5349322Z
2026-10-24T04:19:02.5349557Z src/server/xaiAcpExtension.ts:1507:15 - suggestion TS377009: The previous Effect does not fail, so this error-handling branch will never run. effect(catchUnfailableEffect)
2026-10-24T04:19:02.5349832Z
2026-10-24T04:19:02.5349900Z 1507 }).pipe(Effect.catch(() => Effect.void));
2026-10-24T04:19:02.5350049Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5350125Z
2026-10-24T04:19:02.5350379Z src/server/xaiAcpExtension.ts:1507:15 - suggestion TS377099: `Effect.ignore` expresses ignored failure more directly than `Effect.catch` returning `Effect.void`. effect(catchToIgnore)
2026-10-24T04:19:02.5350672Z
2026-10-24T04:19:02.5350738Z 1507 }).pipe(Effect.catch(() => Effect.void));
2026-10-24T04:19:02.5350882Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5350959Z
2026-10-24T04:19:02.5351310Z src/server/xaiAcpExtension.ts:1588:13 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T04:19:02.5351726Z
2026-10-24T04:19:02.5351788Z 1588 Effect.catchCause((cause) =>
2026-10-24T04:19:02.5351933Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5352014Z
2026-10-24T04:19:02.5352016Z
2026-10-24T04:19:02.5352075Z ~/packages/client-runtime$ tsc --noEmit
2026-10-24T04:19:02.5352504Z 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-24T04:19:02.5352875Z
2026-10-24T04:19:02.5352945Z 31 read: (credentialSource, sinceMs, untilMs) =>
2026-10-24T04:19:02.5353098Z ~~~~
2026-10-24T04:19:02.5353155Z
2026-10-24T04:19:02.5353442Z 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-24T04:19:02.5353763Z
2026-10-24T04:19:02.5353811Z 82 read: (apiKey) =>
2026-10-24T04:19:02.5353921Z ~~~~
2026-10-24T04:19:02.5353977Z
2026-10-24T04:19:02.5354252Z src/server/accountUsage.ts:360:5 - suggestion TS377095: `Effect.orElseSucceed` expresses the same recovery more directly than `Effect.catch` followed by `Effect.succeed`. effect(catchToOrElseSucceed)
2026-10-24T04:19:02.5354562Z
2026-10-24T04:19:02.5354611Z 360 Effect.catch(() =>
2026-10-24T04:19:02.5354722Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5354783Z
2026-10-24T04:19:02.5355098Z src/server/adapter.ts:904:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.getCapabilities")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5355446Z
2026-10-24T04:19:02.5355545Z 904 getCapabilities: () => Effect.succeed(CursorProviderCapabilitiesV2),
2026-10-24T04:19:02.5361451Z ~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5361536Z
2026-10-24T04:19:02.5361908Z src/server/adapter.ts:905:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.planSelectionTransition")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5362342Z
2026-10-24T04:19:02.5362462Z 905 planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T04:19:02.5362667Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5362741Z
2026-10-24T04:19:02.5363186Z 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-24T04:19:02.5363662Z
2026-10-24T04:19:02.5363711Z 55 Effect.runPromise(
2026-10-24T04:19:02.5363829Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5363899Z
2026-10-24T04:19:02.5364164Z 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-24T04:19:02.5364468Z
2026-10-24T04:19:02.5364532Z 59 onNone: () => Effect.succeed(undefined),
2026-10-24T04:19:02.5364690Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5364782Z
2026-10-24T04:19:02.5365222Z 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-24T04:19:02.5365695Z
2026-10-24T04:19:02.5365741Z 69 Effect.runPromise(
2026-10-24T04:19:02.5365854Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5365926Z
2026-10-24T04:19:02.5366365Z 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-24T04:19:02.5366841Z
2026-10-24T04:19:02.5366910Z 82 clear: () => Effect.runPromise(credentials.remove),
2026-10-24T04:19:02.5367064Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5367147Z
2026-10-24T04:19:02.5367470Z 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-24T04:19:02.5367825Z
2026-10-24T04:19:02.5367880Z 228 Effect.flatMap((snapshot) =>
2026-10-24T04:19:02.5368017Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5368089Z
2026-10-24T04:19:02.5368282Z src/server/usageLimits.test.ts:74:5 - suggestion TS377017: This Effect.gen contains a single return statement. effect(unnecessaryEffectGen)
2026-10-24T04:19:02.5368512Z
2026-10-24T04:19:02.5368562Z 74 Effect.gen(function* () {
2026-10-24T04:19:02.5368688Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5368811Z 75 yield* withNodeServices(
2026-10-24T04:19:02.5368940Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5369054Z ...
2026-10-24T04:19:02.5369149Z 115 );
2026-10-24T04:19:02.5369241Z ~~~~~~~~
2026-10-24T04:19:02.5369334Z 116 }),
2026-10-24T04:19:02.5369430Z ~~~~~~
2026-10-24T04:19:02.5369485Z
2026-10-24T04:19:02.5369487Z
2026-10-24T04:19:02.5369743Z src/server/AcpRegistryRuntimeCoordinator.ts:154:52 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T04:19:02.5370031Z
2026-10-24T04:19:02.5370216Z 154 return yield* Effect.raceFirst(effect.pipe(Effect.map(Option.some)), foregroundStarted);
2026-10-24T04:19:02.5370448Z ~~~~~~~~~~
2026-10-24T04:19:02.5370547Z
2026-10-24T04:19:02.5370876Z src/server/AcpRegistrySupport.ts:1301:9 - suggestion TS377116: `Effect.catchIf` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T04:19:02.5371285Z
2026-10-24T04:19:02.5371337Z 1301 Effect.catch((error) =>
2026-10-24T04:19:02.5371464Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5371535Z
2026-10-24T04:19:02.5371861Z src/server/auth.ts:146:13 - suggestion TS377118: `Effect.fromOption` expresses this Option-to-Effect conversion more directly than `Option.match` or an Option tag conditional. effect(optionMatchToFromOption)
2026-10-24T04:19:02.5372182Z
2026-10-24T04:19:02.5372234Z 146 Option.isSome(result)
2026-10-24T04:19:02.5372365Z ~~~~~~~~~~~~~
2026-10-24T04:19:02.5372441Z
2026-10-24T04:19:02.5372691Z src/server/driver.ts:640:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("enrichSnapshot")((_) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5372981Z
2026-10-24T04:19:02.5373080Z 640 enrichSnapshot: ({ snapshot, getSnapshot, publishSnapshot }) => {
2026-10-24T04:19:02.5373261Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5373332Z
2026-10-24T04:19:02.5373541Z src/server/driver.ts:650:51 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T04:19:02.5373785Z
2026-10-24T04:19:02.5373884Z 650 : enrichProviderCached(snapshot).pipe(Effect.map(Option.some))
2026-10-24T04:19:02.5374082Z ~~~~~~~~~~
2026-10-24T04:19:02.5374179Z
2026-10-24T04:19:02.5374184Z
2026-10-24T04:19:02.5374408Z src/authorization/remote.test.ts:232:25 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5374675Z
2026-10-24T04:19:02.5374779Z 232 identity: Effect.succeed(Option.some({ accountId: "user_connect" })),
2026-10-24T04:19:02.5374973Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5375060Z
2026-10-24T04:19:02.5375284Z src/authorization/remote.test.ts:237:17 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5375543Z
2026-10-24T04:19:02.5375613Z 237 id: Effect.succeed(Option.some("device-1")),
2026-10-24T04:19:02.5375770Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5375851Z
2026-10-24T04:19:02.5376176Z src/authorization/service.ts:553:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("RemoteEnvironmentAuthorization.authorizeDpop")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5376549Z
2026-10-24T04:19:02.5376600Z 553 authorizeDpop: (input) =>
2026-10-24T04:19:02.5376726Z ~~~~~~~~~~~~~
2026-10-24T04:19:02.5376793Z
2026-10-24T04:19:02.5377125Z src/authorization/service.ts:555:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("RemoteEnvironmentAuthorization.authorizeDpopHttp")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5377498Z
2026-10-24T04:19:02.5377549Z 555 authorizeDpopHttp: (input) =>
2026-10-24T04:19:02.5377680Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5377749Z
2026-10-24T04:19:02.5378062Z src/connection/githubRoutingPermissions.ts:138:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubRoutingPermissions.get")((entry) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5378417Z
2026-10-24T04:19:02.5378462Z 138 get: (entry) =>
2026-10-24T04:19:02.5378569Z ~~~
2026-10-24T04:19:02.5378628Z
2026-10-24T04:19:02.5379010Z src/connection/githubRoutingPermissions.ts:143:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubRoutingPermissions.set")((entry, permission) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5379424Z
2026-10-24T04:19:02.5379474Z 143 set: (entry, permission) => {
2026-10-24T04:19:02.5379605Z ~~~
2026-10-24T04:19:02.5379662Z
2026-10-24T04:19:02.5379990Z src/connection/githubRoutingPermissions.ts:159:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubRoutingPermissions.forget")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5380363Z
2026-10-24T04:19:02.5380415Z 159 forget: (environmentId) =>
2026-10-24T04:19:02.5380539Z ~~~~~~
2026-10-24T04:19:02.5380600Z
2026-10-24T04:19:02.5380907Z 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-24T04:19:02.5381253Z
2026-10-24T04:19:02.5381307Z 298 registerPairing: (input) =>
2026-10-24T04:19:02.5381435Z ~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5381505Z
2026-10-24T04:19:02.5381838Z 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-24T04:19:02.5382177Z
2026-10-24T04:19:02.5382229Z 304 registerSsh: (input) =>
2026-10-24T04:19:02.5382347Z ~~~~~~~~~~~
2026-10-24T04:19:02.5382412Z
2026-10-24T04:19:02.5382714Z 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-24T04:19:02.5383055Z
2026-10-24T04:19:02.5383111Z 309 updateBearer: (input) =>
2026-10-24T04:19:02.5383235Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5383301Z
2026-10-24T04:19:02.5383566Z 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-24T04:19:02.5383868Z
2026-10-24T04:19:02.5383926Z 1392 ? Effect.succeed(undefined)
2026-10-24T04:19:02.5384071Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5384156Z
2026-10-24T04:19:02.5384416Z 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-24T04:19:02.5384717Z
2026-10-24T04:19:02.5384771Z 1476 ? Effect.succeed(undefined)
2026-10-24T04:19:02.5384907Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5384997Z
2026-10-24T04:19:02.5385258Z 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-24T04:19:02.5385553Z
2026-10-24T04:19:02.5385620Z 1489 : Effect.succeed(undefined),
2026-10-24T04:19:02.5385781Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5385873Z
2026-10-24T04:19:02.5386118Z src/platform/orchestrationCache.test.ts:104:15 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T04:19:02.5386402Z
2026-10-24T04:19:02.5386460Z 104 }).pipe(Effect.map(Option.some));
2026-10-24T04:19:02.5386599Z ~~~~~~~~~~
2026-10-24T04:19:02.5386672Z
2026-10-24T04:19:02.5387092Z 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-24T04:19:02.5387496Z
2026-10-24T04:19:02.5387587Z 72 load: (prepared: PreparedConnection, threadId: ThreadId) => {
2026-10-24T04:19:02.5387755Z ~~~~
2026-10-24T04:19:02.5387810Z
2026-10-24T04:19:02.5388140Z 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-24T04:19:02.5388465Z
2026-10-24T04:19:02.5388566Z 56 Effect.catch(() => Effect.succeed(Option.none<AuthSessionState>())),
2026-10-24T04:19:02.5388746Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5388821Z
2026-10-24T04:19:02.5389152Z 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-24T04:19:02.5389517Z
2026-10-24T04:19:02.5389570Z 62 return yield* Effect.fail(
2026-10-24T04:19:02.5389706Z ~~~~~
2026-10-24T04:19:02.5389779Z
2026-10-24T04:19:02.5390065Z 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-24T04:19:02.5390394Z
2026-10-24T04:19:02.5390489Z 57 execute: (target: OutdatedServerUpdateTarget, atomRegistry) => {
2026-10-24T04:19:02.5390662Z ~~~~~~~
2026-10-24T04:19:02.5390723Z
2026-10-24T04:19:02.5391034Z 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-24T04:19:02.5391384Z
2026-10-24T04:19:02.5391435Z 90 load: (prepared, input) =>
2026-10-24T04:19:02.5391560Z ~~~~
2026-10-24T04:19:02.5391627Z
2026-10-24T04:19:02.5392053Z 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-24T04:19:02.5392486Z
2026-10-24T04:19:02.5392585Z 34 return yield* Schema.decodeUnknownEffect(codec)(stored.value).pipe(
2026-10-24T04:19:02.5392776Z ~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5392873Z
2026-10-24T04:19:02.5393094Z src/state/queryPersistence.ts:35:9 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T04:19:02.5393361Z
2026-10-24T04:19:02.5393411Z 35 Effect.map(Option.some),
2026-10-24T04:19:02.5393540Z ~~~~~~~~~~
2026-10-24T04:19:02.5393606Z
2026-10-24T04:19:02.5393864Z 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-24T04:19:02.5394163Z
2026-10-24T04:19:02.5394220Z 680 execute: (target, atomRegistry) => {
2026-10-24T04:19:02.5394352Z ~~~~~~~
2026-10-24T04:19:02.5394413Z
2026-10-24T04:19:02.5394737Z 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-24T04:19:02.5395099Z
2026-10-24T04:19:02.5395154Z 1125 Effect.flatMap((summary) =>
2026-10-24T04:19:02.5395288Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5395364Z
2026-10-24T04:19:02.5395578Z src/state/shell-sync.test.ts:90:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5395833Z
2026-10-24T04:19:02.5395947Z 90 loadShell: () => Effect.succeed(Option.none()),
2026-10-24T04:19:02.5396103Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5396188Z
2026-10-24T04:19:02.5396400Z src/state/shell-sync.test.ts:96:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5396694Z
2026-10-24T04:19:02.5396765Z 96 loadThread: () => Effect.succeed(Option.none()),
2026-10-24T04:19:02.5396922Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5397011Z
2026-10-24T04:19:02.5397224Z src/state/shell-sync.test.ts:99:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5397476Z
2026-10-24T04:19:02.5397559Z 99 loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-24T04:19:02.5397732Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5397736Z
2026-10-24T04:19:02.5397953Z src/state/shell-sync.test.ts:101:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5397955Z
2026-10-24T04:19:02.5398031Z 101 loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-24T04:19:02.5398086Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5398088Z
2026-10-24T04:19:02.5398302Z src/state/shell-sync.test.ts:108:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5398304Z
2026-10-24T04:19:02.5398368Z 108 load: () => Effect.succeed(Option.none()),
2026-10-24T04:19:02.5398418Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5398421Z
2026-10-24T04:19:02.5398634Z src/state/shell-sync.test.ts:229:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5398636Z
2026-10-24T04:19:02.5398710Z 229 loadShell: () => Effect.succeed(Option.none()),
2026-10-24T04:19:02.5398758Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5398760Z
2026-10-24T04:19:02.5398973Z src/state/shell-sync.test.ts:238:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5398977Z
2026-10-24T04:19:02.5399049Z 238 loadThread: () => Effect.succeed(Option.none()),
2026-10-24T04:19:02.5399108Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5399110Z
2026-10-24T04:19:02.5399321Z src/state/shell-sync.test.ts:241:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5399324Z
2026-10-24T04:19:02.5399406Z 241 loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-24T04:19:02.5399456Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5399458Z
2026-10-24T04:19:02.5399672Z src/state/shell-sync.test.ts:243:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5399674Z
2026-10-24T04:19:02.5399748Z 243 loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-24T04:19:02.5399800Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5399802Z
2026-10-24T04:19:02.5400009Z src/state/shell-sync.test.ts:250:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5400015Z
2026-10-24T04:19:02.5400078Z 250 load: () => Effect.succeed(Option.none()),
2026-10-24T04:19:02.5400126Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5400128Z
2026-10-24T04:19:02.5400343Z src/state/shell-sync.test.ts:349:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5400345Z
2026-10-24T04:19:02.5400461Z 349 loadShell: () => Effect.succeed(Option.none()),
2026-10-24T04:19:02.5400507Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5400509Z
2026-10-24T04:19:02.5400720Z src/state/shell-sync.test.ts:355:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5400766Z
2026-10-24T04:19:02.5400837Z 355 loadThread: () => Effect.succeed(Option.none()),
2026-10-24T04:19:02.5400887Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5400889Z
2026-10-24T04:19:02.5401108Z src/state/shell-sync.test.ts:358:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5401110Z
2026-10-24T04:19:02.5401246Z 358 loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-24T04:19:02.5401299Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5401302Z
2026-10-24T04:19:02.5401513Z src/state/shell-sync.test.ts:360:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5401515Z
2026-10-24T04:19:02.5401608Z 360 loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-24T04:19:02.5401657Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5401664Z
2026-10-24T04:19:02.5401876Z src/state/shell-sync.test.ts:367:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5401878Z
2026-10-24T04:19:02.5401942Z 367 load: () => Effect.succeed(Option.none()),
2026-10-24T04:19:02.5401990Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5401992Z
2026-10-24T04:19:02.5402203Z src/state/shell-sync.test.ts:446:26 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5402205Z
2026-10-24T04:19:02.5402292Z 446 loadShell: () => Effect.succeed(Option.some(cachedSnapshot)),
2026-10-24T04:19:02.5402341Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5402343Z
2026-10-24T04:19:02.5402554Z src/state/shell-sync.test.ts:448:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5402557Z
2026-10-24T04:19:02.5402629Z 448 loadThread: () => Effect.succeed(Option.none()),
2026-10-24T04:19:02.5402678Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5402680Z
2026-10-24T04:19:02.5402893Z src/state/shell-sync.test.ts:451:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5402899Z
2026-10-24T04:19:02.5402976Z 451 loadServerConfig: () => Effect.succeed(Option.none()),
2026-10-24T04:19:02.5403031Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5403033Z
2026-10-24T04:19:02.5403245Z src/state/shell-sync.test.ts:453:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5403247Z
2026-10-24T04:19:02.5403320Z 453 loadVcsRefs: () => Effect.succeed(Option.none()),
2026-10-24T04:19:02.5403369Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5403372Z
2026-10-24T04:19:02.5403584Z src/state/shell-sync.test.ts:460:21 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5403586Z
2026-10-24T04:19:02.5403662Z 460 load: () => Effect.succeed(Option.some(httpSnapshot)),
2026-10-24T04:19:02.5403708Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5403710Z
2026-10-24T04:19:02.5404007Z src/state/shellSnapshotHttp.ts:98:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ShellSnapshotLoader.load")((prepared) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5404066Z
2026-10-24T04:19:02.5404128Z 98 load: (prepared: PreparedConnection) =>
2026-10-24T04:19:02.5404170Z ~~~~
2026-10-24T04:19:02.5404173Z
2026-10-24T04:19:02.5404531Z 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-24T04:19:02.5404592Z
2026-10-24T04:19:02.5404662Z 52 register: (environmentId, threadId, handler) =>
2026-10-24T04:19:02.5404705Z ~~~~~~~~
2026-10-24T04:19:02.5404708Z
2026-10-24T04:19:02.5405030Z 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-24T04:19:02.5405032Z
2026-10-24T04:19:02.5405086Z 64 unregister: (registration) =>
2026-10-24T04:19:02.5405131Z ~~~~~~~~~~
2026-10-24T04:19:02.5405133Z
2026-10-24T04:19:02.5405499Z 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-24T04:19:02.5405503Z
2026-10-24T04:19:02.5405587Z 79 loadEarlier: (environmentId, threadId, throughEntryId) =>
2026-10-24T04:19:02.5405626Z ~~~~~~~~~~~
2026-10-24T04:19:02.5405628Z
2026-10-24T04:19:02.5405989Z 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-24T04:19:02.5405991Z
2026-10-24T04:19:02.5406067Z 89 reconcilePendingWork: (environmentId, threadId) =>
2026-10-24T04:19:02.5406116Z ~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5406118Z
2026-10-24T04:19:02.5406338Z src/state/threads-sync.test.ts:1458:29 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5406342Z
2026-10-24T04:19:02.5406421Z 1458 : { loadCached: Effect.succeed(Option.some(saved!)) },
2026-10-24T04:19:02.5406474Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5406476Z
2026-10-24T04:19:02.5406732Z 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-24T04:19:02.5406734Z
2026-10-24T04:19:02.5406820Z 447 execute: (input: RunVcsStackedActionInput, registry) => {
2026-10-24T04:19:02.5406859Z ~~~~~~~
2026-10-24T04:19:02.5406861Z
2026-10-24T04:19:02.5406867Z
2026-10-24T04:19:02.5406915Z ~/apps/mobile$ tsc --noEmit
2026-10-24T04:19:02.5406964Z ~/infra/relay$ tsc --noEmit
2026-10-24T04:19:02.5407012Z ~/apps/web$ tsc --noEmit
2026-10-24T04:19:02.5407055Z Result (22 files):
2026-10-24T04:19:02.5407097Z - 0 errors
2026-10-24T04:19:02.5407142Z - 0 warnings
2026-10-24T04:19:02.5407184Z - 0 hints
2026-10-24T04:19:02.5407187Z
2026-10-24T04:19:02.5407189Z
2026-10-24T04:19:02.5407238Z ~/apps/desktop$ tsc --noEmit
2026-10-24T04:19:02.5407552Z 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-24T04:19:02.5407554Z
2026-10-24T04:19:02.5407603Z 220 send: (body) =>
2026-10-24T04:19:02.5407645Z ~~~~
2026-10-24T04:19:02.5407647Z
2026-10-24T04:19:02.5407944Z 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-24T04:19:02.5407989Z
2026-10-24T04:19:02.5408038Z 12 onFailure: (error) =>
2026-10-24T04:19:02.5408081Z ~~~~~~~~~
2026-10-24T04:19:02.5408083Z
2026-10-24T04:19:02.5408402Z src/environments/CloudflareApiPause.ts:64:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("CloudflareApiPause.pauseUntil")((untilMillis) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5408446Z
2026-10-24T04:19:02.5408500Z 64 pauseUntil: (untilMillis) =>
2026-10-24T04:19:02.5408538Z ~~~~~~~~~~
2026-10-24T04:19:02.5408542Z
2026-10-24T04:19:02.5408771Z src/http/Api.ts:198:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("onNone")(function*() { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5408774Z
2026-10-24T04:19:02.5408820Z 198 onNone: () =>
2026-10-24T04:19:02.5408861Z ~~~~~~
2026-10-24T04:19:02.5408863Z
2026-10-24T04:19:02.5409128Z src/previewTunnelSweep.test.ts:53:11 - suggestion TS377124: `Effect.provideService` provides this inline single-service layer directly. effect(provideLayerSucceedToProvideService)
2026-10-24T04:19:02.5409130Z
2026-10-24T04:19:02.5409245Z 53 }).pipe(Effect.provide(Layer.succeed(HttpClient.HttpClient, cloudflare.client)));
2026-10-24T04:19:02.5409290Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5409292Z
2026-10-24T04:19:02.5409570Z 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-24T04:19:02.5409573Z
2026-10-24T04:19:02.5409682Z 92 fileResponse: () => Effect.die("Relay API does not serve filesystem responses"),
2026-10-24T04:19:02.5409723Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5409725Z
2026-10-24T04:19:02.5410005Z 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-24T04:19:02.5410007Z
2026-10-24T04:19:02.5410114Z 93 fileWebResponse: () => Effect.die("Relay API does not serve file responses"),
2026-10-24T04:19:02.5410157Z ~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5410160Z
2026-10-24T04:19:02.5410413Z src/worker.ts:242:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("HookInbox.HookInbox.hold")((_) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5410415Z
2026-10-24T04:19:02.5410479Z 242 hold: ({ endpointKey, baseUrl, hook }) =>
2026-10-24T04:19:02.5410519Z ~~~~
2026-10-24T04:19:02.5410521Z
2026-10-24T04:19:02.5410770Z src/worker.ts:244:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("HookInbox.HookInbox.wake")((_) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5410772Z
2026-10-24T04:19:02.5410831Z 244 wake: ({ endpointKey, baseUrl }) =>
2026-10-24T04:19:02.5410875Z ~~~~
2026-10-24T04:19:02.5410877Z
2026-10-24T04:19:02.5411132Z src/worker.ts:246:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("HookInbox.HookInbox.clear")((_) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5411136Z
2026-10-24T04:19:02.5411187Z 246 clear: ({ endpointKey }) =>
2026-10-24T04:19:02.5411229Z ~~~~~
2026-10-24T04:19:02.5411232Z
2026-10-24T04:19:02.5411542Z src/worker.ts:275:15 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("FcmDeliveryQueueSender.FcmDeliveryQueueSender.send")((body) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5411544Z
2026-10-24T04:19:02.5411625Z 275 send: (body) =>
2026-10-24T04:19:02.5411671Z ~~~~
2026-10-24T04:19:02.5411674Z
2026-10-24T04:19:02.5411678Z
2026-10-24T04:19:02.5411680Z
2026-10-24T04:19:02.5412022Z src/app/DesktopAppActivation.ts:389:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppActivation.complete")((response) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5412025Z
2026-10-24T04:19:02.5412125Z 389 complete: (response) => Effect.sync(() => broker.complete(response)),
2026-10-24T04:19:02.5412205Z ~~~~~~~~
2026-10-24T04:19:02.5412207Z
2026-10-24T04:19:02.5412428Z src/app/DesktopClerk.test.ts:300:27 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5412430Z
2026-10-24T04:19:02.5412513Z 300 currentMainOrFirst: Effect.succeed(Option.some(window)),
2026-10-24T04:19:02.5412564Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5412566Z
2026-10-24T04:19:02.5412838Z src/app/DesktopObservability.ts:461:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("onSome")(function*(logFile) { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5412842Z
2026-10-24T04:19:02.5412894Z 461 onSome: (logFile) =>
2026-10-24T04:19:02.5412936Z ~~~~~~
2026-10-24T04:19:02.5412938Z
2026-10-24T04:19:02.5413256Z src/app/DesktopObservability.ts:591:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBackendOutputLogFactory.forInstance")((id) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5413264Z
2026-10-24T04:19:02.5413319Z 591 forInstance: (id) => makeForId(id),
2026-10-24T04:19:02.5413364Z ~~~~~~~~~~~
2026-10-24T04:19:02.5413366Z
2026-10-24T04:19:02.5413588Z src/app/DesktopWebLinks.test.ts:29:31 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5413590Z
2026-10-24T04:19:02.5413677Z 29 currentMainOrFirst: Effect.succeed(Option.some(window)),
2026-10-24T04:19:02.5413727Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5413731Z
2026-10-24T04:19:02.5414005Z 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-24T04:19:02.5414009Z
2026-10-24T04:19:02.5414057Z 72 receive: (url) =>
2026-10-24T04:19:02.5414099Z ~~~~~~~
2026-10-24T04:19:02.5414101Z
2026-10-24T04:19:02.5414393Z 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-24T04:19:02.5414395Z
2026-10-24T04:19:02.5414445Z 77 setRendererReady: (ready) =>
2026-10-24T04:19:02.5414490Z ~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5414492Z
2026-10-24T04:19:02.5414770Z src/backend/DesktopBackendManager.ts:1062:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("onSome")(function*(run) { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5414773Z
2026-10-24T04:19:02.5414820Z 1062 onSome: (run) =>
2026-10-24T04:19:02.5414858Z ~~~~~~
2026-10-24T04:19:02.5414860Z
2026-10-24T04:19:02.5415143Z src/backend/DesktopBackendPool.ts:307:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBackendPool.get")((id) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5415147Z
2026-10-24T04:19:02.5415191Z 307 get: (id) =>
2026-10-24T04:19:02.5415233Z ~~~
2026-10-24T04:19:02.5415235Z
2026-10-24T04:19:02.5415515Z src/backend/DesktopBackendPool.ts:342:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBackendPool.get")((id) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5415517Z
2026-10-24T04:19:02.5415606Z 342 get: (id) => Effect.succeed(Option.fromNullishOr(byId.get(id))),
2026-10-24T04:19:02.5415648Z ~~~
2026-10-24T04:19:02.5415697Z
2026-10-24T04:19:02.5415986Z src/backend/DesktopBackendPool.ts:345:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBackendPool.register")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5416029Z
2026-10-24T04:19:02.5416157Z 345 register: () => Effect.die("DesktopBackendPool.layerTest does not support register"),
2026-10-24T04:19:02.5416200Z ~~~~~~~~
2026-10-24T04:19:02.5416202Z
2026-10-24T04:19:02.5416493Z src/backend/DesktopBackendPool.ts:346:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBackendPool.unregister")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5416495Z
2026-10-24T04:19:02.5416625Z 346 unregister: () => Effect.die("DesktopBackendPool.layerTest does not support unregister"),
2026-10-24T04:19:02.5416670Z ~~~~~~~~~~
2026-10-24T04:19:02.5416672Z
2026-10-24T04:19:02.5416939Z src/electron/ElectronApp.ts:145:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.exit")((code) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5416942Z
2026-10-24T04:19:02.5416987Z 145 exit: (code) =>
2026-10-24T04:19:02.5417028Z ~~~~
2026-10-24T04:19:02.5417030Z
2026-10-24T04:19:02.5417305Z src/electron/ElectronApp.ts:149:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.relaunch")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5417307Z
2026-10-24T04:19:02.5417354Z 149 relaunch: (options) =>
2026-10-24T04:19:02.5417395Z ~~~~~~~~
2026-10-24T04:19:02.5417397Z
2026-10-24T04:19:02.5417671Z src/electron/ElectronApp.ts:153:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.setPath")((name, path) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5417676Z
2026-10-24T04:19:02.5417726Z 153 setPath: (name, path) =>
2026-10-24T04:19:02.5417769Z ~~~~~~~
2026-10-24T04:19:02.5417771Z
2026-10-24T04:19:02.5418040Z src/electron/ElectronApp.ts:157:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.setName")((name) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5418044Z
2026-10-24T04:19:02.5418092Z 157 setName: (name) =>
2026-10-24T04:19:02.5418131Z ~~~~~~~
2026-10-24T04:19:02.5418133Z
2026-10-24T04:19:02.5418436Z src/electron/ElectronApp.ts:161:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.setAboutPanelOptions")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5418438Z
2026-10-24T04:19:02.5418496Z 161 setAboutPanelOptions: (options) =>
2026-10-24T04:19:02.5418543Z ~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5418545Z
2026-10-24T04:19:02.5418830Z src/electron/ElectronApp.ts:165:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.setAppUserModelId")((id) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5418832Z
2026-10-24T04:19:02.5418884Z 165 setAppUserModelId: (id) =>
2026-10-24T04:19:02.5418931Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5418933Z
2026-10-24T04:19:02.5419269Z src/electron/ElectronApp.ts:170:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.setAsDefaultProtocolClient")((protocol, path, args) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5419271Z
2026-10-24T04:19:02.5419355Z 170 setAsDefaultProtocolClient: (protocol, path, args) =>
2026-10-24T04:19:02.5419398Z ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5419403Z
2026-10-24T04:19:02.5419740Z src/electron/ElectronApp.ts:177:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.setDesktopName")((desktopName) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5419743Z
2026-10-24T04:19:02.5419799Z 177 setDesktopName: (desktopName) =>
2026-10-24T04:19:02.5419840Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5419842Z
2026-10-24T04:19:02.5420119Z src/electron/ElectronApp.ts:184:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.setDockIcon")((iconPath) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5420161Z
2026-10-24T04:19:02.5420207Z 184 setDockIcon: (iconPath) =>
2026-10-24T04:19:02.5420252Z ~~~~~~~~~~~
2026-10-24T04:19:02.5420254Z
2026-10-24T04:19:02.5420571Z src/electron/ElectronApp.ts:188:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.appendCommandLineSwitch")((switchName, value) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5420573Z
2026-10-24T04:19:02.5420646Z 188 appendCommandLineSwitch: (switchName, value) =>
2026-10-24T04:19:02.5420693Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5420696Z
2026-10-24T04:19:02.5420992Z src/electron/ElectronApp.ts:196:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.onBeforeQuitForUpdate")((listener) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5421000Z
2026-10-24T04:19:02.5421058Z 196 onBeforeQuitForUpdate: (listener) =>
2026-10-24T04:19:02.5421103Z ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5421105Z
2026-10-24T04:19:02.5421412Z src/electron/ElectronApp.ts:206:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronApp.removeCommandLineSwitch")((switchName) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5421415Z
2026-10-24T04:19:02.5421477Z 206 removeCommandLineSwitch: (switchName) =>
2026-10-24T04:19:02.5421520Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5421523Z
2026-10-24T04:19:02.5421867Z 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-24T04:19:02.5421870Z
2026-10-24T04:19:02.5421926Z 169 showMessageBox: (options, owner) =>
2026-10-24T04:19:02.5421973Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5421975Z
2026-10-24T04:19:02.5422278Z 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-24T04:19:02.5422281Z
2026-10-24T04:19:02.5422332Z 185 showErrorBox: (title, content) =>
2026-10-24T04:19:02.5422375Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5422377Z
2026-10-24T04:19:02.5422678Z src/electron/ElectronMenu.ts:193:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronMenu.setApplicationMenu")((template) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5422680Z
2026-10-24T04:19:02.5422738Z 193 setApplicationMenu: (template) =>
2026-10-24T04:19:02.5422781Z ~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5422785Z
2026-10-24T04:19:02.5423067Z src/electron/ElectronMenu.ts:207:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronMenu.popupTemplate")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5423070Z
2026-10-24T04:19:02.5423126Z 207 popupTemplate: (input) =>
2026-10-24T04:19:02.5423169Z ~~~~~~~~~~~~~
2026-10-24T04:19:02.5423171Z
2026-10-24T04:19:02.5423459Z src/electron/ElectronMenu.ts:225:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronMenu.showContextMenu")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5423461Z
2026-10-24T04:19:02.5423512Z 225 showContextMenu: (input) =>
2026-10-24T04:19:02.5423556Z ~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5423558Z
2026-10-24T04:19:02.5423950Z 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-24T04:19:02.5423982Z
2026-10-24T04:19:02.5424054Z 82 getSystemIdleState: (idleThresholdSeconds) =>
2026-10-24T04:19:02.5424098Z ~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5424100Z
2026-10-24T04:19:02.5424407Z 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-24T04:19:02.5424411Z
2026-10-24T04:19:02.5424460Z 77 encryptString: (value) =>
2026-10-24T04:19:02.5424503Z ~~~~~~~~~~~~~
2026-10-24T04:19:02.5424505Z
2026-10-24T04:19:02.5424815Z 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-24T04:19:02.5424817Z
2026-10-24T04:19:02.5424867Z 82 decryptString: (value) =>
2026-10-24T04:19:02.5424906Z ~~~~~~~~~~~~~
2026-10-24T04:19:02.5424909Z
2026-10-24T04:19:02.5425194Z src/electron/ElectronShell.ts:68:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronShell.openExternal")((rawUrl) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5425196Z
2026-10-24T04:19:02.5425248Z 68 openExternal: (rawUrl) =>
2026-10-24T04:19:02.5425290Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5425292Z
2026-10-24T04:19:02.5425589Z src/electron/ElectronShell.ts:79:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronShell.openSystemSettings")((pane) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5425591Z
2026-10-24T04:19:02.5425643Z 79 openSystemSettings: (pane) =>
2026-10-24T04:19:02.5425687Z ~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5425689Z
2026-10-24T04:19:02.5425965Z src/electron/ElectronShell.ts:86:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronShell.copyText")((text) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5425969Z
2026-10-24T04:19:02.5426016Z 86 copyText: (text) =>
2026-10-24T04:19:02.5426055Z ~~~~~~~~
2026-10-24T04:19:02.5426057Z
2026-10-24T04:19:02.5426334Z 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-24T04:19:02.5426336Z
2026-10-24T04:19:02.5426385Z 34 setSource: (theme) =>
2026-10-24T04:19:02.5426426Z ~~~~~~~~~
2026-10-24T04:19:02.5426428Z
2026-10-24T04:19:02.5426711Z 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-24T04:19:02.5426714Z
2026-10-24T04:19:02.5426761Z 41 onUpdated: (listener) =>
2026-10-24T04:19:02.5426804Z ~~~~~~~~~
2026-10-24T04:19:02.5426807Z
2026-10-24T04:19:02.5427101Z 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-24T04:19:02.5427103Z
2026-10-24T04:19:02.5427150Z 85 setFeedURL: (options) =>
2026-10-24T04:19:02.5427189Z ~~~~~~~~~~
2026-10-24T04:19:02.5427194Z
2026-10-24T04:19:02.5427489Z 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-24T04:19:02.5427491Z
2026-10-24T04:19:02.5427581Z 90 setAutoDownload: (value) =>
2026-10-24T04:19:02.5427625Z ~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5427627Z
2026-10-24T04:19:02.5427939Z 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-24T04:19:02.5427984Z
2026-10-24T04:19:02.5428041Z 95 setAutoInstallOnAppQuit: (value) =>
2026-10-24T04:19:02.5428084Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5428086Z
2026-10-24T04:19:02.5428375Z 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-24T04:19:02.5428378Z
2026-10-24T04:19:02.5428427Z 100 setChannel: (channel) =>
2026-10-24T04:19:02.5428467Z ~~~~~~~~~~
2026-10-24T04:19:02.5428469Z
2026-10-24T04:19:02.5428771Z 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-24T04:19:02.5428777Z
2026-10-24T04:19:02.5428828Z 105 setAllowPrerelease: (value) =>
2026-10-24T04:19:02.5428875Z ~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5428877Z
2026-10-24T04:19:02.5429178Z 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-24T04:19:02.5429180Z
2026-10-24T04:19:02.5429232Z 111 setAllowDowngrade: (value) =>
2026-10-24T04:19:02.5429274Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5429276Z
2026-10-24T04:19:02.5429578Z 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-24T04:19:02.5429582Z
2026-10-24T04:19:02.5429631Z 116 setFullChangelog: (value) =>
2026-10-24T04:19:02.5429673Z ~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5429675Z
2026-10-24T04:19:02.5430004Z 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-24T04:19:02.5430008Z
2026-10-24T04:19:02.5430073Z 121 setDisableDifferentialDownload: (value) =>
2026-10-24T04:19:02.5430121Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5430123Z
2026-10-24T04:19:02.5430412Z 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-24T04:19:02.5430415Z
2026-10-24T04:19:02.5430487Z 140 quitAndInstall: ({ isSilent, isForceRunAfter }) =>
2026-10-24T04:19:02.5430529Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5430534Z
2026-10-24T04:19:02.5430825Z 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-24T04:19:02.5430829Z
2026-10-24T04:19:02.5430879Z 154 on: (eventName, listener) => {
2026-10-24T04:19:02.5430920Z ~~
2026-10-24T04:19:02.5430923Z
2026-10-24T04:19:02.5431204Z src/electron/ElectronWindow.ts:211:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronWindow.create")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5431206Z
2026-10-24T04:19:02.5431252Z 211 create: (options) => {
2026-10-24T04:19:02.5431294Z ~~~~~~
2026-10-24T04:19:02.5431296Z
2026-10-24T04:19:02.5431650Z src/electron/ElectronWindow.ts:243:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronWindow.setMain")((window) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5431653Z
2026-10-24T04:19:02.5431747Z 243 setMain: (window) => Ref.set(mainWindowRef, Option.some(window)),
2026-10-24T04:19:02.5431841Z ~~~~~~~
2026-10-24T04:19:02.5431844Z
2026-10-24T04:19:02.5432127Z src/electron/ElectronWindow.ts:244:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronWindow.clearMain")((window) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5432129Z
2026-10-24T04:19:02.5432175Z 244 clearMain: (window) =>
2026-10-24T04:19:02.5432217Z ~~~~~~~~~
2026-10-24T04:19:02.5432219Z
2026-10-24T04:19:02.5432510Z src/electron/ElectronWindow.ts:254:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronWindow.prepareReveal")((window) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5432513Z
2026-10-24T04:19:02.5432566Z 254 prepareReveal: (window) =>
2026-10-24T04:19:02.5432606Z ~~~~~~~~~~~~~
2026-10-24T04:19:02.5432608Z
2026-10-24T04:19:02.5432887Z src/electron/ElectronWindow.ts:264:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronWindow.reveal")((window) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5432891Z
2026-10-24T04:19:02.5432941Z 264 reveal: (window) =>
2026-10-24T04:19:02.5432983Z ~~~~~~
2026-10-24T04:19:02.5432985Z
2026-10-24T04:19:02.5433322Z src/settings/DesktopAppSettings.ts:526:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setMainWindowBounds")((bounds, isMaximized) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5433328Z
2026-10-24T04:19:02.5433401Z 526 setMainWindowBounds: (bounds, isMaximized) =>
2026-10-24T04:19:02.5433449Z ~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5433451Z
2026-10-24T04:19:02.5433772Z src/settings/DesktopAppSettings.ts:538:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setServerExposureMode")((mode) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5433775Z
2026-10-24T04:19:02.5433833Z 538 setServerExposureMode: (mode) =>
2026-10-24T04:19:02.5433876Z ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5433878Z
2026-10-24T04:19:02.5434191Z src/settings/DesktopAppSettings.ts:542:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setTailscaleServe")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5434194Z
2026-10-24T04:19:02.5434248Z 542 setTailscaleServe: (input) =>
2026-10-24T04:19:02.5434292Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5434294Z
2026-10-24T04:19:02.5434610Z src/settings/DesktopAppSettings.ts:546:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setUpdateChannel")((channel) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5434612Z
2026-10-24T04:19:02.5434662Z 546 setUpdateChannel: (channel) =>
2026-10-24T04:19:02.5434708Z ~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5434711Z
2026-10-24T04:19:02.5435034Z src/settings/DesktopAppSettings.ts:550:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setWslBackendEnabled")((enabled) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5435036Z
2026-10-24T04:19:02.5435095Z 550 setWslBackendEnabled: (enabled) =>
2026-10-24T04:19:02.5435141Z ~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5435144Z
2026-10-24T04:19:02.5435446Z src/settings/DesktopAppSettings.ts:554:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setWslDistro")((distro) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5435448Z
2026-10-24T04:19:02.5435547Z 554 setWslDistro: (distro) =>
2026-10-24T04:19:02.5435591Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5435593Z
2026-10-24T04:19:02.5435897Z src/settings/DesktopAppSettings.ts:560:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setWslOnly")((enabled) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5435940Z
2026-10-24T04:19:02.5435990Z 560 setWslOnly: (enabled) =>
2026-10-24T04:19:02.5436030Z ~~~~~~~~~~
2026-10-24T04:19:02.5436032Z
2026-10-24T04:19:02.5436367Z src/settings/DesktopAppSettings.ts:564:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setLocalEnvironmentEnabled")((enabled) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5436370Z
2026-10-24T04:19:02.5436435Z 564 setLocalEnvironmentEnabled: (enabled) =>
2026-10-24T04:19:02.5436480Z ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5436483Z
2026-10-24T04:19:02.5436821Z src/settings/DesktopAppSettings.ts:599:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setMainWindowBounds")((bounds, isMaximized) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5436825Z
2026-10-24T04:19:02.5436894Z 599 setMainWindowBounds: (bounds, isMaximized) =>
2026-10-24T04:19:02.5436941Z ~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5436943Z
2026-10-24T04:19:02.5437261Z src/settings/DesktopAppSettings.ts:601:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setServerExposureMode")((mode) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5437264Z
2026-10-24T04:19:02.5437323Z 601 setServerExposureMode: (mode) =>
2026-10-24T04:19:02.5437366Z ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5437372Z
2026-10-24T04:19:02.5437682Z src/settings/DesktopAppSettings.ts:603:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setTailscaleServe")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5437684Z
2026-10-24T04:19:02.5437813Z 603 setTailscaleServe: (input) => update((settings) => setTailscaleServe(settings, input)),
2026-10-24T04:19:02.5437858Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5437860Z
2026-10-24T04:19:02.5438173Z src/settings/DesktopAppSettings.ts:604:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setUpdateChannel")((channel) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5438175Z
2026-10-24T04:19:02.5438301Z 604 setUpdateChannel: (channel) => update((settings) => setUpdateChannel(settings, channel)),
2026-10-24T04:19:02.5438343Z ~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5438345Z
2026-10-24T04:19:02.5438672Z src/settings/DesktopAppSettings.ts:605:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setWslBackendEnabled")((enabled) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5438674Z
2026-10-24T04:19:02.5438734Z 605 setWslBackendEnabled: (enabled) =>
2026-10-24T04:19:02.5438780Z ~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5438782Z
2026-10-24T04:19:02.5439084Z src/settings/DesktopAppSettings.ts:607:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setWslDistro")((distro) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5439090Z
2026-10-24T04:19:02.5439200Z 607 setWslDistro: (distro) => update((settings) => setWslDistro(settings, distro)),
2026-10-24T04:19:02.5439244Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5439246Z
2026-10-24T04:19:02.5439587Z src/settings/DesktopAppSettings.ts:608:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setWslOnly")((enabled) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5439590Z
2026-10-24T04:19:02.5439697Z 608 setWslOnly: (enabled) => update((settings) => setWslOnly(settings, enabled)),
2026-10-24T04:19:02.5439736Z ~~~~~~~~~~
2026-10-24T04:19:02.5439784Z
2026-10-24T04:19:02.5440122Z src/settings/DesktopAppSettings.ts:609:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopAppSettings.setLocalEnvironmentEnabled")((enabled) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5440124Z
2026-10-24T04:19:02.5440192Z 609 setLocalEnvironmentEnabled: (enabled) =>
2026-10-24T04:19:02.5440242Z ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5440244Z
2026-10-24T04:19:02.5440553Z 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-24T04:19:02.5440557Z
2026-10-24T04:19:02.5440601Z 197 set: (settings) =>
2026-10-24T04:19:02.5440642Z ~~~
2026-10-24T04:19:02.5440645Z
2026-10-24T04:19:02.5440950Z 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-24T04:19:02.5440954Z
2026-10-24T04:19:02.5441041Z 231 set: (settings) => Ref.set(settingsRef, Option.some(settings)),
2026-10-24T04:19:02.5441091Z ~~~
2026-10-24T04:19:02.5441093Z
2026-10-24T04:19:02.5441473Z src/snapShot/DesktopSnapShot.ts:1729:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopSnapShot.setAnimationDestination")((id, destination) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5441479Z
2026-10-24T04:19:02.5441550Z 1729 setAnimationDestination: (id, destination) =>
2026-10-24T04:19:02.5441626Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5441628Z
2026-10-24T04:19:02.5441930Z src/snapShot/DesktopSnapShot.ts:1740:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopSnapShot.dismissAnimation")((id) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5441934Z
2026-10-24T04:19:02.5441987Z 1740 dismissAnimation: (id) =>
2026-10-24T04:19:02.5442029Z ~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5442032Z
2026-10-24T04:19:02.5442320Z src/snapShot/DesktopSnapShot.ts:1745:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopSnapShot.acknowledge")((id) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5442322Z
2026-10-24T04:19:02.5442370Z 1745 acknowledge: (id) =>
2026-10-24T04:19:02.5442410Z ~~~~~~~~~~~
2026-10-24T04:19:02.5442412Z
2026-10-24T04:19:02.5442728Z 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-24T04:19:02.5442730Z
2026-10-24T04:19:02.5442778Z 136 discoverHosts: (input) =>
2026-10-24T04:19:02.5442824Z ~~~~~~~~~~~~~
2026-10-24T04:19:02.5442826Z
2026-10-24T04:19:02.5443130Z 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-24T04:19:02.5443133Z
2026-10-24T04:19:02.5443180Z 141 resolveHost: (alias) =>
2026-10-24T04:19:02.5443218Z ~~~~~~~~~~~
2026-10-24T04:19:02.5443222Z
2026-10-24T04:19:02.5443562Z 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-24T04:19:02.5443620Z
2026-10-24T04:19:02.5443688Z 146 ensureEnvironment: (target, ensureOptions) =>
2026-10-24T04:19:02.5443731Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5443733Z
2026-10-24T04:19:02.5444057Z 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-24T04:19:02.5444109Z
2026-10-24T04:19:02.5444168Z 154 disconnectEnvironment: (target) =>
2026-10-24T04:19:02.5444210Z ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5444212Z
2026-10-24T04:19:02.5444523Z src/updates/DesktopUpdates.ts:1171:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopUpdates.installPrepared")((expectedVersion) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5444525Z
2026-10-24T04:19:02.5444655Z 1171 installPrepared: (expectedVersion) => installWithExpectedVersion(expectedVersion),
2026-10-24T04:19:02.5444698Z ~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5444700Z
2026-10-24T04:19:02.5444989Z src/wsl/DesktopWslEnvironment.ts:1101:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.preWarm")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5444996Z
2026-10-24T04:19:02.5445046Z 1101 preWarm: () => Effect.void,
2026-10-24T04:19:02.5445089Z ~~~~~~~
2026-10-24T04:19:02.5445091Z
2026-10-24T04:19:02.5445428Z src/wsl/DesktopWslEnvironment.ts:1102:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.windowsToWslPath")((distro, windowsPath) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5445431Z
2026-10-24T04:19:02.5445498Z 1102 windowsToWslPath: (distro, windowsPath) =>
2026-10-24T04:19:02.5445539Z ~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5445541Z
2026-10-24T04:19:02.5445849Z src/wsl/DesktopWslEnvironment.ts:1104:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.getUserHome")((distro) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5445851Z
2026-10-24T04:19:02.5445988Z 1104 getUserHome: (distro) => Effect.succeed(stub.getUserHome?.(distro) ?? Option.none<string>()),
2026-10-24T04:19:02.5446031Z ~~~~~~~~~~~
2026-10-24T04:19:02.5446033Z
2026-10-24T04:19:02.5446338Z src/wsl/DesktopWslEnvironment.ts:1105:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.getDistroIp")((distro) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5446340Z
2026-10-24T04:19:02.5446469Z 1105 getDistroIp: (distro) => Effect.succeed(stub.getDistroIp?.(distro) ?? Option.none<string>()),
2026-10-24T04:19:02.5446511Z ~~~~~~~~~~~
2026-10-24T04:19:02.5446514Z
2026-10-24T04:19:02.5446843Z src/wsl/DesktopWslEnvironment.ts:1106:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.prepareRuntime")((distro, archive) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5446845Z
2026-10-24T04:19:02.5446907Z 1106 prepareRuntime: (distro, archive) =>
2026-10-24T04:19:02.5446950Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5446952Z
2026-10-24T04:19:02.5447279Z src/wsl/DesktopWslEnvironment.ts:1113:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.pruneRuntimes")((distro, runtimeId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5447284Z
2026-10-24T04:19:02.5447414Z 1113 pruneRuntimes: (distro, runtimeId) => stub.pruneRuntimes?.(distro, runtimeId) ?? Effect.void,
2026-10-24T04:19:02.5447458Z ~~~~~~~~~~~~~
2026-10-24T04:19:02.5447460Z
2026-10-24T04:19:02.5447834Z src/wsl/DesktopWslEnvironment.ts:1114:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.invalidateRuntime")((distro, runtimeId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5447837Z
2026-10-24T04:19:02.5447901Z 1114 invalidateRuntime: (distro, runtimeId) =>
2026-10-24T04:19:02.5447987Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5447989Z
2026-10-24T04:19:02.5448319Z src/wsl/DesktopWslEnvironment.ts:1116:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.probeRuntime")((distro, linuxAppRoot) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5448321Z
2026-10-24T04:19:02.5448383Z 1116 probeRuntime: (distro, linuxAppRoot) =>
2026-10-24T04:19:02.5448424Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5448426Z
2026-10-24T04:19:02.5448771Z src/wsl/DesktopWslEnvironment.ts:1120:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.ensureNodePty")((distro, linuxAppRoot, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5448774Z
2026-10-24T04:19:02.5448846Z 1120 ensureNodePty: (distro, linuxAppRoot, options) =>
2026-10-24T04:19:02.5448888Z ~~~~~~~~~~~~~
2026-10-24T04:19:02.5448892Z
2026-10-24T04:19:02.5449191Z src/wsl/DesktopWslEnvironment.ts:1187:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.preWarm")((distro) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5449193Z
2026-10-24T04:19:02.5449243Z 1187 preWarm: (distro) =>
2026-10-24T04:19:02.5449283Z ~~~~~~~
2026-10-24T04:19:02.5449285Z
2026-10-24T04:19:02.5449608Z src/wsl/DesktopWslEnvironment.ts:1192:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.prepareRuntime")((distro, archive) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5449610Z
2026-10-24T04:19:02.5449670Z 1192 prepareRuntime: (distro, archive) =>
2026-10-24T04:19:02.5449712Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5449714Z
2026-10-24T04:19:02.5450039Z src/wsl/DesktopWslEnvironment.ts:1196:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.pruneRuntimes")((distro, runtimeId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5450043Z
2026-10-24T04:19:02.5450100Z 1196 pruneRuntimes: (distro, runtimeId) =>
2026-10-24T04:19:02.5450139Z ~~~~~~~~~~~~~
2026-10-24T04:19:02.5450141Z
2026-10-24T04:19:02.5450476Z src/wsl/DesktopWslEnvironment.ts:1200:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.invalidateRuntime")((distro, runtimeId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5450478Z
2026-10-24T04:19:02.5450540Z 1200 invalidateRuntime: (distro, runtimeId) =>
2026-10-24T04:19:02.5450588Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5450590Z
2026-10-24T04:19:02.5450919Z src/wsl/DesktopWslEnvironment.ts:1204:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.probeRuntime")((distro, linuxAppRoot) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5450923Z
2026-10-24T04:19:02.5450982Z 1204 probeRuntime: (distro, linuxAppRoot) =>
2026-10-24T04:19:02.5451025Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5451027Z
2026-10-24T04:19:02.5451373Z src/wsl/DesktopWslEnvironment.ts:1208:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.ensureNodePty")((distro, linuxAppRoot, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5451376Z
2026-10-24T04:19:02.5451449Z 1208 ensureNodePty: (distro, linuxAppRoot, options) =>
2026-10-24T04:19:02.5451489Z ~~~~~~~~~~~~~
2026-10-24T04:19:02.5451494Z
2026-10-24T04:19:02.5451495Z
2026-10-24T04:19:02.5451904Z src/connection/platform.ts:820:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentOwnedDataCleanup.clear")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5451934Z
2026-10-24T04:19:02.5451982Z 820 clear: (environmentId) =>
2026-10-24T04:19:02.5452021Z ~~~~~
2026-10-24T04:19:02.5452023Z
2026-10-24T04:19:02.5452320Z src/connection/platform.ts:830:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("EnvironmentRpcRequestObserver.observe")((_) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5452322Z
2026-10-24T04:19:02.5452405Z 830 observe: ({ environmentId, environmentLabel, method }) =>
2026-10-24T04:19:02.5452442Z ~~~~~~~
2026-10-24T04:19:02.5452444Z
2026-10-24T04:19:02.5452727Z src/connection/storage.ts:549:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubRoutingPermissions.get")((entry) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5452729Z
2026-10-24T04:19:02.5452772Z 549 get: (entry) =>
2026-10-24T04:19:02.5452814Z ~~~
2026-10-24T04:19:02.5452816Z
2026-10-24T04:19:02.5453120Z src/connection/storage.ts:576:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubRoutingPermissions.set")((entry, permission) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5453126Z
2026-10-24T04:19:02.5453176Z 576 set: (entry, permission) => {
2026-10-24T04:19:02.5453217Z ~~~
2026-10-24T04:19:02.5453219Z
2026-10-24T04:19:02.5453518Z src/connection/storage.ts:596:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitHubRoutingPermissions.forget")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5453521Z
2026-10-24T04:19:02.5453601Z 596 forget: (environmentId) => write(environmentId, null),
2026-10-24T04:19:02.5453638Z ~~~~~~
2026-10-24T04:19:02.5453640Z
2026-10-24T04:19:02.5453980Z src/connection/storage.ts:643:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.ConnectionRegistrationStore.register")((registration, routes) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5453984Z
2026-10-24T04:19:02.5454041Z 643 register: (registration, routes) =>
2026-10-24T04:19:02.5454082Z ~~~~~~~~
2026-10-24T04:19:02.5454084Z
2026-10-24T04:19:02.5454432Z src/connection/storage.ts:647:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.ConnectionRegistrationStore.setRoutes")((environmentId, routes) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5454434Z
2026-10-24T04:19:02.5454491Z 647 setRoutes: (environmentId, routes) =>
2026-10-24T04:19:02.5454532Z ~~~~~~~~~
2026-10-24T04:19:02.5454535Z
2026-10-24T04:19:02.5454862Z src/connection/storage.ts:651:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.ConnectionRegistrationStore.remove")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5454866Z
2026-10-24T04:19:02.5454916Z 651 remove: (environmentId) =>
2026-10-24T04:19:02.5454957Z ~~~~~~
2026-10-24T04:19:02.5454959Z
2026-10-24T04:19:02.5455305Z src/connection/storage.ts:655:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.ConnectionRegistrationStore.setEnabled")((environmentId, enabled) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5455307Z
2026-10-24T04:19:02.5455368Z 655 setEnabled: (environmentId, enabled) =>
2026-10-24T04:19:02.5455410Z ~~~~~~~~~~
2026-10-24T04:19:02.5455412Z
2026-10-24T04:19:02.5455778Z src/connection/storage.ts:732:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.loadShell")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5455780Z
2026-10-24T04:19:02.5455835Z 732 loadShell: (environmentId) =>
2026-10-24T04:19:02.5455902Z ~~~~~~~~~
2026-10-24T04:19:02.5455904Z
2026-10-24T04:19:02.5456237Z src/connection/storage.ts:768:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.loadServerConfig")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5456239Z
2026-10-24T04:19:02.5456299Z 768 loadServerConfig: (environmentId) =>
2026-10-24T04:19:02.5456342Z ~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5456344Z
2026-10-24T04:19:02.5456685Z src/connection/storage.ts:802:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.loadThread")((environmentId, threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5456687Z
2026-10-24T04:19:02.5456746Z 802 loadThread: (environmentId, threadId) =>
2026-10-24T04:19:02.5456787Z ~~~~~~~~~~
2026-10-24T04:19:02.5456789Z
2026-10-24T04:19:02.5457121Z src/connection/storage.ts:851:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.loadVcsRefs")((environmentId, cwd) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5457124Z
2026-10-24T04:19:02.5457182Z 851 loadVcsRefs: (environmentId, cwd) =>
2026-10-24T04:19:02.5457221Z ~~~~~~~~~~~
2026-10-24T04:19:02.5457223Z
2026-10-24T04:19:02.5457564Z src/connection/storage.ts:893:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.removeVcsRefs")((environmentId, cwd) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5457566Z
2026-10-24T04:19:02.5457627Z 893 removeVcsRefs: (environmentId, cwd) =>
2026-10-24T04:19:02.5457670Z ~~~~~~~~~~~~~
2026-10-24T04:19:02.5457672Z
2026-10-24T04:19:02.5457998Z src/connection/storage.ts:899:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.clearVcsRefs")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5458002Z
2026-10-24T04:19:02.5458055Z 899 clearVcsRefs: (environmentId) =>
2026-10-24T04:19:02.5458096Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5458098Z
2026-10-24T04:19:02.5458443Z src/connection/storage.ts:905:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.removeThread")((environmentId, threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5458445Z
2026-10-24T04:19:02.5458508Z 905 removeThread: (environmentId, threadId) =>
2026-10-24T04:19:02.5458550Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5458553Z
2026-10-24T04:19:02.5458865Z src/connection/storage.ts:911:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentCacheStore.clear")((environmentId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5458871Z
2026-10-24T04:19:02.5458919Z 911 clear: (environmentId) =>
2026-10-24T04:19:02.5458958Z ~~~~~
2026-10-24T04:19:02.5458960Z
2026-10-24T04:19:02.5458962Z
2026-10-24T04:19:02.5459011Z ~/apps/server$ tsc --noEmit
2026-10-24T04:19:02.5459255Z scripts/acp-mock-agent.ts:941:16 - suggestion TS377015: This expression contains chained `pipe` calls that can be simplified to a single `pipe` call. effect(unnecessaryPipeChain)
2026-10-24T04:19:02.5459257Z
2026-10-24T04:19:02.5459310Z 941 yield* Effect.sleep("1200 millis")
2026-10-24T04:19:02.5459359Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5459400Z 942 .pipe(
2026-10-24T04:19:02.5459444Z ~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5459524Z ...
2026-10-24T04:19:02.5459564Z 954 )
2026-10-24T04:19:02.5459604Z ~~~~~~~~~~~
2026-10-24T04:19:02.5459656Z 955 .pipe(Effect.forkDetach);
2026-10-24T04:19:02.5459703Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5459744Z
2026-10-24T04:19:02.5460042Z scripts/record-codex-app-server-replay-fixture.ts:1175:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("logger")((event) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5460044Z
2026-10-24T04:19:02.5460093Z 1175 logger: (event) => {
2026-10-24T04:19:02.5460132Z ~~~~~~
2026-10-24T04:19:02.5460134Z
2026-10-24T04:19:02.5460547Z scripts/record-grok-acp-replay-fixture.ts:376:38 - suggestion TS377112: This input is already assignable to the schema's Encoded type. Use `decodeSync` to preserve compile-time type checking instead of discarding the input type through `decodeUnknownSync`. effect(preferTypedSchemaDecoder)
2026-10-24T04:19:02.5460552Z
2026-10-24T04:19:02.5460658Z 376 const DEFAULT_GROK_SETTINGS = Schema.decodeUnknownSync(GrokSettings)({});
2026-10-24T04:19:02.5460718Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5460720Z
2026-10-24T04:19:02.5461007Z src/auth/EnvironmentAuth.ts:1346:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("EnvironmentAuth.getDescriptor")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5461010Z
2026-10-24T04:19:02.5461056Z 1346 getDescriptor: () =>
2026-10-24T04:19:02.5461095Z ~~~~~~~~~~~~~
2026-10-24T04:19:02.5461097Z
2026-10-24T04:19:02.5461403Z 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-24T04:19:02.5461406Z
2026-10-24T04:19:02.5461452Z 55 getDescriptor: () =>
2026-10-24T04:19:02.5461496Z ~~~~~~~~~~~~~
2026-10-24T04:19:02.5461498Z
2026-10-24T04:19:02.5461851Z src/auth/McpOAuth.ts:540:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("McpHttpServer.McpClientAuthenticator.authenticate")((request) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5461856Z
2026-10-24T04:19:02.5461906Z 540 authenticate: (request) =>
2026-10-24T04:19:02.5461947Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5461949Z
2026-10-24T04:19:02.5462193Z 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-24T04:19:02.5462195Z
2026-10-24T04:19:02.5462249Z 468 : Effect.succeed(undefined),
2026-10-24T04:19:02.5462293Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5462299Z
2026-10-24T04:19:02.5462574Z src/cloud/CliTokenManager.ts:328:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("HttpClientError")(function*(cause) { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5462576Z
2026-10-24T04:19:02.5462628Z 328 HttpClientError: (cause) =>
2026-10-24T04:19:02.5462670Z ~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5462674Z
2026-10-24T04:19:02.5462906Z src/cloud/CloudLink.lifecycle.test.ts:166:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5462908Z
2026-10-24T04:19:02.5462971Z 166 latest: Effect.succeed(Option.none()),
2026-10-24T04:19:02.5463018Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5463020Z
2026-10-24T04:19:02.5463233Z src/cloud/CloudLink.test.ts:99:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5463235Z
2026-10-24T04:19:02.5463297Z 99 latest: Effect.succeed(Option.none()),
2026-10-24T04:19:02.5463384Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5463387Z
2026-10-24T04:19:02.5463721Z src/cloud/ManagedEndpointRuntime.ts:791:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("CloudManagedEndpointRuntime.requestRecovery")((config) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5463769Z
2026-10-24T04:19:02.5463896Z 791 requestRecovery: (config) => Queue.offer(recoveryRequests, config).pipe(Effect.asVoid),
2026-10-24T04:19:02.5463939Z ~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5463941Z
2026-10-24T04:19:02.5464143Z src/cloud/http.test.ts:81:67 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5464145Z
2026-10-24T04:19:02.5464291Z 81 Layer.mock(ConnectReachability.ConnectReachability)({ latest: Effect.succeed(Option.none()) }),
2026-10-24T04:19:02.5464358Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5464361Z
2026-10-24T04:19:02.5464692Z 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-24T04:19:02.5464696Z
2026-10-24T04:19:02.5464777Z 371 commitDesktopUpdate: (requestId, onHandoffAccepted) =>
2026-10-24T04:19:02.5464818Z ~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5464820Z
2026-10-24T04:19:02.5465098Z src/device/DeviceService.ts:808:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DeviceService.updateTool")((tool) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5465101Z
2026-10-24T04:19:02.5465146Z 808 updateTool: (tool) =>
2026-10-24T04:19:02.5465187Z ~~~~~~~~~~
2026-10-24T04:19:02.5465189Z
2026-10-24T04:19:02.5465460Z src/device/DeviceService.ts:823:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DeviceService.easAccount")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5465462Z
2026-10-24T04:19:02.5465506Z 823 easAccount: () =>
2026-10-24T04:19:02.5465543Z ~~~~~~~~~~
2026-10-24T04:19:02.5465549Z
2026-10-24T04:19:02.5465856Z src/device/EasDeviceHost.ts:868:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DeviceHost.DeviceHost.ensureAgentReady")((onPhase) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5465858Z
2026-10-24T04:19:02.5465909Z 868 ensureAgentReady: (onPhase) =>
2026-10-24T04:19:02.5465951Z ~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5465953Z
2026-10-24T04:19:02.5466173Z src/device/easProjectId.ts:201:7 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T04:19:02.5466176Z
2026-10-24T04:19:02.5466224Z 201 Effect.map(Option.some),
2026-10-24T04:19:02.5466266Z ~~~~~~~~~~
2026-10-24T04:19:02.5466268Z
2026-10-24T04:19:02.5466552Z src/environment/DirectEndpoints.ts:141:31 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DirectEndpoints.resolve")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5466557Z
2026-10-24T04:19:02.5466634Z 141 return DirectEndpoints.of({ resolve: () => resolve });
2026-10-24T04:19:02.5466681Z ~~~~~~~
2026-10-24T04:19:02.5466683Z
2026-10-24T04:19:02.5466983Z src/environment/RemoteOpenTargets.ts:83:33 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("RemoteOpenTargets.resolveTargets")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5466985Z
2026-10-24T04:19:02.5467084Z 83 return RemoteOpenTargets.of({ resolveTargets: () => resolveTargets });
2026-10-24T04:19:02.5467135Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5467137Z
2026-10-24T04:19:02.5467470Z 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-24T04:19:02.5467472Z
2026-10-24T04:19:02.5467548Z 302 isRepository: (cwd) =>
2026-10-24T04:19:02.5467588Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5467590Z
2026-10-24T04:19:02.5467878Z 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-24T04:19:02.5467881Z
2026-10-24T04:19:02.5467928Z 315 hasCommit: (input) =>
2026-10-24T04:19:02.5467968Z ~~~~~~~~~
2026-10-24T04:19:02.5467970Z
2026-10-24T04:19:02.5468261Z 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-24T04:19:02.5468265Z
2026-10-24T04:19:02.5468311Z 327 hasRefNamed: (input) =>
2026-10-24T04:19:02.5468350Z ~~~~~~~~~~~
2026-10-24T04:19:02.5468352Z
2026-10-24T04:19:02.5468638Z 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-24T04:19:02.5468642Z
2026-10-24T04:19:02.5468690Z 346 status: (input) =>
2026-10-24T04:19:02.5468728Z ~~~~~~
2026-10-24T04:19:02.5468730Z
2026-10-24T04:19:02.5469022Z 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-24T04:19:02.5469024Z
2026-10-24T04:19:02.5469070Z 352 localStatus: (input) =>
2026-10-24T04:19:02.5469114Z ~~~~~~~~~~~
2026-10-24T04:19:02.5469116Z
2026-10-24T04:19:02.5469424Z 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-24T04:19:02.5469428Z
2026-10-24T04:19:02.5469479Z 360 remoteStatus: (input, options) =>
2026-10-24T04:19:02.5469519Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5469521Z
2026-10-24T04:19:02.5469822Z 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-24T04:19:02.5469824Z
2026-10-24T04:19:02.5469874Z 369 pullCurrentBranch: (cwd) =>
2026-10-24T04:19:02.5469916Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5469918Z
2026-10-24T04:19:02.5470231Z 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-24T04:19:02.5470234Z
2026-10-24T04:19:02.5470292Z 373 runStackedAction: (input, options) =>
2026-10-24T04:19:02.5470334Z ~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5470338Z
2026-10-24T04:19:02.5470660Z 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-24T04:19:02.5470662Z
2026-10-24T04:19:02.5470724Z 388 preparePullRequestThread: (input) =>
2026-10-24T04:19:02.5470768Z ~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5470770Z
2026-10-24T04:19:02.5471062Z 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-24T04:19:02.5471064Z
2026-10-24T04:19:02.5471155Z 399 listRefs: (input) =>
2026-10-24T04:19:02.5471195Z ~~~~~~~~
2026-10-24T04:19:02.5471197Z
2026-10-24T04:19:02.5471502Z 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-24T04:19:02.5471547Z
2026-10-24T04:19:02.5471622Z 405 createWorktree: (input, options) =>
2026-10-24T04:19:02.5471663Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5471666Z
2026-10-24T04:19:02.5471972Z 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-24T04:19:02.5471974Z
2026-10-24T04:19:02.5472025Z 409 listLocalBranchNames: (cwd) =>
2026-10-24T04:19:02.5472066Z ~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5472068Z
2026-10-24T04:19:02.5472362Z 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-24T04:19:02.5472365Z
2026-10-24T04:19:02.5472414Z 413 fetchRemote: (input) =>
2026-10-24T04:19:02.5472454Z ~~~~~~~~~~~
2026-10-24T04:19:02.5472456Z
2026-10-24T04:19:02.5472751Z 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-24T04:19:02.5472753Z
2026-10-24T04:19:02.5472799Z 417 remoteExists: (input) =>
2026-10-24T04:19:02.5472840Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5472842Z
2026-10-24T04:19:02.5473150Z 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-24T04:19:02.5473153Z
2026-10-24T04:19:02.5473205Z 421 remoteBranchExists: (input) =>
2026-10-24T04:19:02.5473247Z ~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5473252Z
2026-10-24T04:19:02.5473574Z 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-24T04:19:02.5473577Z
2026-10-24T04:19:02.5473643Z 425 resolveRemoteTrackingCommit: (input) =>
2026-10-24T04:19:02.5473688Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5473690Z
2026-10-24T04:19:02.5474006Z 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-24T04:19:02.5474009Z
2026-10-24T04:19:02.5474070Z 429 resolveWorktreeBaseRemote: (input) =>
2026-10-24T04:19:02.5474113Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5474115Z
2026-10-24T04:19:02.5474430Z 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-24T04:19:02.5474433Z
2026-10-24T04:19:02.5474489Z 433 fetchWorktreeBaseCommit: (input) =>
2026-10-24T04:19:02.5474532Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5474534Z
2026-10-24T04:19:02.5474830Z 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-24T04:19:02.5474835Z
2026-10-24T04:19:02.5474883Z 437 removeWorktree: (input) =>
2026-10-24T04:19:02.5474925Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5474927Z
2026-10-24T04:19:02.5475263Z 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-24T04:19:02.5475265Z
2026-10-24T04:19:02.5475342Z 441 pruneWorktrees: (input) =>
2026-10-24T04:19:02.5475381Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5475383Z
2026-10-24T04:19:02.5475687Z 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-24T04:19:02.5475689Z
2026-10-24T04:19:02.5475741Z 445 deleteLocalBranch: (input) =>
2026-10-24T04:19:02.5475783Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5475786Z
2026-10-24T04:19:02.5476079Z 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-24T04:19:02.5476081Z
2026-10-24T04:19:02.5476127Z 449 createRef: (input) =>
2026-10-24T04:19:02.5476166Z ~~~~~~~~~
2026-10-24T04:19:02.5476168Z
2026-10-24T04:19:02.5476458Z 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-24T04:19:02.5476462Z
2026-10-24T04:19:02.5476507Z 457 switchRef: (input) =>
2026-10-24T04:19:02.5476545Z ~~~~~~~~~
2026-10-24T04:19:02.5476549Z
2026-10-24T04:19:02.5476841Z 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-24T04:19:02.5476843Z
2026-10-24T04:19:02.5476891Z 463 renameBranch: (input) =>
2026-10-24T04:19:02.5476931Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5476934Z
2026-10-24T04:19:02.5477190Z src/htmlRender/headlessChrome.ts:281:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("receive")((raw) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5477194Z
2026-10-24T04:19:02.5477246Z 281 const receive = (raw: string) => {
2026-10-24T04:19:02.5477285Z ~~~~~~~
2026-10-24T04:19:02.5477287Z
2026-10-24T04:19:02.5477654Z src/mcp/AcpMcpStdioBridge.ts:284:7 - suggestion TS377012: This Effect generator contains `try/catch`; in this context, error handling is expressed with Effect APIs such as Effect.try, Effect.tryPromise, Effect.catch, Effect.catchTag). effect(tryCatchInEffectGen)
2026-10-24T04:19:02.5477657Z
2026-10-24T04:19:02.5477698Z 284 try {
2026-10-24T04:19:02.5477737Z ~~~~~
2026-10-24T04:19:02.5477788Z 285 parsed = JSON.parse(line);
2026-10-24T04:19:02.5477832Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5477871Z ...
2026-10-24T04:19:02.5477969Z 287 return yield* respondWithError(null, "Parse error", -32700);
2026-10-24T04:19:02.5478034Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5478074Z 288 }
2026-10-24T04:19:02.5478115Z ~~~~~~~
2026-10-24T04:19:02.5478117Z
2026-10-24T04:19:02.5478382Z src/mcp/AcpMcpStdioBridge.ts:324:7 - suggestion TS377099: `Effect.ignoreCause` expresses ignored failure more directly than `Effect.catchCause` returning `Effect.void`. effect(catchToIgnore)
2026-10-24T04:19:02.5478384Z
2026-10-24T04:19:02.5478443Z 324 Effect.catchCause(() => Effect.void),
2026-10-24T04:19:02.5478487Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5478489Z
2026-10-24T04:19:02.5478716Z src/mcp/McpDeviceToolkit.test.ts:105:18 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5478718Z
2026-10-24T04:19:02.5478786Z 105 getById: () => Effect.succeed(Option.none()),
2026-10-24T04:19:02.5478937Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5478940Z
2026-10-24T04:19:02.5479218Z src/mcp/McpHttpServer.ts:421:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("previewSnapshotFailure")(<E>(cause) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5479266Z
2026-10-24T04:19:02.5479359Z 421 const previewSnapshotFailure = <E>(cause: Cause.Cause<E>) => {
2026-10-24T04:19:02.5479403Z ~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5479405Z
2026-10-24T04:19:02.5479687Z src/mcp/McpHttpServer.ts:933:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("McpServer.McpServer.addTool")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5479689Z
2026-10-24T04:19:02.5479735Z 933 addTool: (options) =>
2026-10-24T04:19:02.5479775Z ~~~~~~~
2026-10-24T04:19:02.5479777Z
2026-10-24T04:19:02.5480050Z 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-24T04:19:02.5480052Z
2026-10-24T04:19:02.5480111Z 22 resolve: () => Effect.succeed(undefined),
2026-10-24T04:19:02.5480162Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5480165Z
2026-10-24T04:19:02.5480441Z src/mcp/McpToolAccess.ts:112:7 - suggestion TS377132: `Effect.andThen` expresses this sequencing more directly than `Effect.flatMap` with a zero-parameter callback. effect(flatMapIgnoredParamToAndThen)
2026-10-24T04:19:02.5480444Z
2026-10-24T04:19:02.5480500Z 112 Effect.flatMap(() => writingCaller),
2026-10-24T04:19:02.5480543Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5480545Z
2026-10-24T04:19:02.5481038Z src/mcp/OrchestratorMcpService.ts:2465: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-24T04:19:02.5481041Z
2026-10-24T04:19:02.5481126Z 2465 const cancelOrphan = Effect.gen(function* () {
2026-10-24T04:19:02.5481180Z ~~~~~~~~~
2026-10-24T04:19:02.5481240Z
2026-10-24T04:19:02.5481474Z src/mcp/OrchestratorMcpService.ts:2480:17 - This repeated `Effect.mapError(...)` site participates in the hoistable generator-wide mapping. effect(redundantMapError)
2026-10-24T04:19:02.5481557Z 2480 .pipe(Effect.mapError(threadManagementFailure));
2026-10-24T04:19:02.5481632Z ~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5481634Z
2026-10-24T04:19:02.5481861Z src/mcp/OrchestratorMcpService.ts:2483:17 - This repeated `Effect.mapError(...)` site participates in the hoistable generator-wide mapping. effect(redundantMapError)
2026-10-24T04:19:02.5481938Z 2483 .pipe(Effect.mapError(threadManagementFailure));
2026-10-24T04:19:02.5481983Z ~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5481985Z
2026-10-24T04:19:02.5482252Z src/mcp/PreviewAutomationBroker.ts:651:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("onNone")(function*() { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5482255Z
2026-10-24T04:19:02.5482300Z 651 onNone: () =>
2026-10-24T04:19:02.5482338Z ~~~~~~
2026-10-24T04:19:02.5482341Z
2026-10-24T04:19:02.5482538Z src/mcp/WorktreeMcpService.test.ts:355:3 - suggestion TS377017: This Effect.gen contains a single return statement. effect(unnecessaryEffectGen)
2026-10-24T04:19:02.5482541Z
2026-10-24T04:19:02.5482589Z 355 Effect.gen(function* () {
2026-10-24T04:19:02.5482633Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5482714Z 356 return yield* WorktreeMcpService.WorktreeMcpService;
2026-10-24T04:19:02.5482827Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5482887Z 357 }).pipe(Effect.provide(harness.layer));
2026-10-24T04:19:02.5482927Z ~~~~
2026-10-24T04:19:02.5482929Z
2026-10-24T04:19:02.5483191Z src/mcp/toolkits/pullRequests/handlers.ts:222:27 - suggestion TS377015: This expression contains chained `pipe` calls that can be simplified to a single `pipe` call. effect(unnecessaryPipeChain)
2026-10-24T04:19:02.5483243Z
2026-10-24T04:19:02.5483292Z 222 const thread = yield* engine
2026-10-24T04:19:02.5483336Z ~~~~~~
2026-10-24T04:19:02.5483387Z 223 .getThreadShell(threadId)
2026-10-24T04:19:02.5483429Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5483492Z 224 .pipe(Effect.map(Option.fromNullishOr))
2026-10-24T04:19:02.5483544Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5483628Z 225 .pipe(Effect.mapError((cause) => new Failure({ cause })));
2026-10-24T04:19:02.5483691Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5483696Z
2026-10-24T04:19:02.5483975Z src/mcpApps/McpAppModelContext.ts:96:27 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("McpAppModelContext.set")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5483979Z
2026-10-24T04:19:02.5484099Z 96 McpAppModelContext.of({ set: () => Effect.void, forThread: () => Effect.succeed([]) }),
2026-10-24T04:19:02.5484142Z ~~~
2026-10-24T04:19:02.5484144Z
2026-10-24T04:19:02.5484436Z src/mcpApps/McpAppModelContext.ts:96:51 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("McpAppModelContext.forThread")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5484438Z
2026-10-24T04:19:02.5484552Z 96 McpAppModelContext.of({ set: () => Effect.void, forThread: () => Effect.succeed([]) }),
2026-10-24T04:19:02.5484609Z ~~~~~~~~~
2026-10-24T04:19:02.5484613Z
2026-10-24T04:19:02.5484928Z 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-24T04:19:02.5484932Z
2026-10-24T04:19:02.5484978Z 16 record: (records) =>
2026-10-24T04:19:02.5485017Z ~~~~~~
2026-10-24T04:19:02.5485019Z
2026-10-24T04:19:02.5485285Z src/observability/EventLoopMonitor.ts:41:49 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T04:19:02.5485289Z
2026-10-24T04:19:02.5485387Z 41 defaultValue: () => ({ latestNoticeableStall: Effect.succeed(undefined) }),
2026-10-24T04:19:02.5485450Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5485453Z
2026-10-24T04:19:02.5485897Z 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-24T04:19:02.5485901Z
2026-10-24T04:19:02.5486000Z 30 const REPLAY_SETTINGS = Schema.decodeUnknownSync(AcpRegistrySettings)({
2026-10-24T04:19:02.5486050Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5486054Z
2026-10-24T04:19:02.5486358Z 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-24T04:19:02.5486360Z
2026-10-24T04:19:02.5486421Z 48 defaultModel: Effect.succeed(undefined),
2026-10-24T04:19:02.5486470Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5486472Z
2026-10-24T04:19:02.5486816Z 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-24T04:19:02.5486818Z
2026-10-24T04:19:02.5486882Z 169 defaultModel: Effect.succeed(undefined),
2026-10-24T04:19:02.5486960Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5486962Z
2026-10-24T04:19:02.5487266Z 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-24T04:19:02.5487268Z
2026-10-24T04:19:02.5487331Z 306 defaultModel: Effect.succeed(undefined),
2026-10-24T04:19:02.5487380Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5487382Z
2026-10-24T04:19:02.5487682Z 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-24T04:19:02.5487686Z
2026-10-24T04:19:02.5487745Z 542 defaultModel: Effect.succeed(undefined),
2026-10-24T04:19:02.5487794Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5487798Z
2026-10-24T04:19:02.5488131Z src/orchestration-v2/Adapters/ClaudeAdapterV2.test.ts:974:26 - suggestion TS377111: `AbortController` is manually constructed inside Effect code. Use `Effect.abortSignal` for Effect-managed cancellation. effect(abortControllerInEffect)
2026-10-24T04:19:02.5488133Z
2026-10-24T04:19:02.5488193Z 974 const controller = new AbortController();
2026-10-24T04:19:02.5488241Z ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5488245Z
2026-10-24T04:19:02.5488533Z src/orchestration-v2/Adapters/ClaudeAdapterV2.test.ts:1326:37 - suggestion TS377015: This expression contains chained `pipe` calls that can be simplified to a single `pipe` call. effect(unnecessaryPipeChain)
2026-10-24T04:19:02.5488535Z
2026-10-24T04:19:02.5488602Z 1326 const requestEvent = yield* runtime.events
2026-10-24T04:19:02.5488656Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5488700Z 1327 .pipe(
2026-10-24T04:19:02.5488738Z ~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5488779Z ...
2026-10-24T04:19:02.5488818Z 1330 )
2026-10-24T04:19:02.5488855Z ~~~~~~~~~~~
2026-10-24T04:19:02.5488908Z 1331 .pipe(Effect.forkScoped);
2026-10-24T04:19:02.5488954Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5488956Z
2026-10-24T04:19:02.5489287Z src/orchestration-v2/Adapters/ClaudeAdapterV2.test.ts:1332:28 - suggestion TS377111: `AbortController` is manually constructed inside Effect code. Use `Effect.abortSignal` for Effect-managed cancellation. effect(abortControllerInEffect)
2026-10-24T04:19:02.5489289Z
2026-10-24T04:19:02.5489354Z 1332 const controller = new AbortController();
2026-10-24T04:19:02.5489406Z ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5489409Z
2026-10-24T04:19:02.5489738Z src/orchestration-v2/Adapters/ClaudeAdapterV2.test.ts:1355:37 - suggestion TS377111: `AbortController` is manually constructed inside Effect code. Use `Effect.abortSignal` for Effect-managed cancellation. effect(abortControllerInEffect)
2026-10-24T04:19:02.5489742Z
2026-10-24T04:19:02.5489821Z 1355 const cancelledController = new AbortController();
2026-10-24T04:19:02.5489877Z ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5489880Z
2026-10-24T04:19:02.5490240Z src/orchestration-v2/Adapters/ClaudeAdapterV2.ts:4019:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.getCapabilities")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5490242Z
2026-10-24T04:19:02.5490343Z 4019 getCapabilities: () => Effect.succeed(ClaudeProviderCapabilitiesV2),
2026-10-24T04:19:02.5490431Z ~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5490434Z
2026-10-24T04:19:02.5490808Z src/orchestration-v2/Adapters/ClaudeAdapterV2.ts:4020:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.planSelectionTransition")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5490852Z
2026-10-24T04:19:02.5490973Z 4020 planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T04:19:02.5491017Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5491019Z
2026-10-24T04:19:02.5491370Z src/orchestration-v2/Adapters/ClaudeAgentSdkQueryRunner.test.ts:201:17 - suggestion TS377111: `AbortController` is manually constructed inside Effect code. Use `Effect.abortSignal` for Effect-managed cancellation. effect(abortControllerInEffect)
2026-10-24T04:19:02.5491374Z
2026-10-24T04:19:02.5491431Z 201 signal: new AbortController().signal,
2026-10-24T04:19:02.5491479Z ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5491482Z
2026-10-24T04:19:02.5491909Z src/orchestration-v2/Adapters/ClaudeTaskOutputTail.ts:74:17 - suggestion TS377121: This Effect first-completion race has exactly one sleep- or delay-based timer arm. `Effect.timeoutOrElse` expresses the timeout and fallback directly. effect(raceFirstWithSleepToTimeout)
2026-10-24T04:19:02.5491913Z
2026-10-24T04:19:02.5491964Z 74 const pause = Effect.raceFirst(
2026-10-24T04:19:02.5492006Z ~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5492009Z
2026-10-24T04:19:02.5492295Z src/orchestration-v2/Adapters/CodexAdapterV2.ts:1741:25 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T04:19:02.5492297Z
2026-10-24T04:19:02.5492401Z 1741 threadId === null ? Effect.succeed(undefined) : mcpSessions.read(threadId);
2026-10-24T04:19:02.5492456Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5492458Z
2026-10-24T04:19:02.5492811Z src/orchestration-v2/Adapters/CodexAdapterV2.ts:1748:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.getCapabilities")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5492815Z
2026-10-24T04:19:02.5492911Z 1748 getCapabilities: () => Effect.succeed(CodexProviderCapabilitiesV2),
2026-10-24T04:19:02.5492953Z ~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5492956Z
2026-10-24T04:19:02.5493323Z src/orchestration-v2/Adapters/CodexAdapterV2.ts:1749:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.planSelectionTransition")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5493325Z
2026-10-24T04:19:02.5493440Z 1749 planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()),
2026-10-24T04:19:02.5493486Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5493488Z
2026-10-24T04:19:02.5493798Z src/orchestration-v2/Adapters/CodexAdapterV2.ts:3045:19 - suggestion TS377095: `Effect.orElseSucceed` expresses the same recovery more directly than `Effect.catch` followed by `Effect.succeed`. effect(catchToOrElseSucceed)
2026-10-24T04:19:02.5493804Z
2026-10-24T04:19:02.5493872Z 3045 Effect.catch(() => Effect.succeed(null)),
2026-10-24T04:19:02.5493916Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5493919Z
2026-10-24T04:19:02.5494281Z src/orchestration-v2/Adapters/CodexAdapterV2.ts:3046:19 - suggestion TS377120: `Effect.filterOrElse` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-24T04:19:02.5494283Z
2026-10-24T04:19:02.5494343Z 3046 Effect.flatMap((response) =>
2026-10-24T04:19:02.5494387Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5494389Z
2026-10-24T04:19:02.5494706Z src/orchestration-v2/Adapters/CodexAdapterV2.ts:3068:19 - suggestion TS377099: `Effect.ignore` expresses ignored failure more directly than `Effect.catch` returning `Effect.void`. effect(catchToIgnore)
2026-10-24T04:19:02.5494709Z
2026-10-24T04:19:02.5494798Z 3068 Effect.catch(() => Effect.void),
2026-10-24T04:19:02.5494842Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5494845Z
2026-10-24T04:19:02.5495197Z src/orchestration-v2/Adapters/CodexAdapterV2.ts:7268:26 - suggestion TS377019: This `yield* Effect.fail(...)` passes a yieldable error value. `yield*` represents that value directly without wrapping it in `Effect.fail`. effect(unnecessaryFailYieldableError)
2026-10-24T04:19:02.5495199Z
2026-10-24T04:19:02.5495277Z 7268 return yield* Effect.fail(failedTermination.error);
2026-10-24T04:19:02.5495321Z ~~~~~
2026-10-24T04:19:02.5495323Z
2026-10-24T04:19:02.5495750Z 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-24T04:19:02.5495754Z
2026-10-24T04:19:02.5495853Z 33 const DEFAULT_GROK_SETTINGS = Schema.decodeUnknownSync(GrokSettings)({});
2026-10-24T04:19:02.5495911Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5495913Z
2026-10-24T04:19:02.5496334Z src/orchestration-v2/Adapters/MuseAdapterV2.testkit.ts:414:38 - suggestion TS377112: This input is already assignable to the schema's Encoded type. Use `decodeSync` to preserve compile-time type checking instead of discarding the input type through `decodeUnknownSync`. effect(preferTypedSchemaDecoder)
2026-10-24T04:19:02.5496337Z
2026-10-24T04:19:02.5496458Z 414 const DEFAULT_MUSE_SETTINGS = Schema.decodeUnknownSync(MuseSettings)({ enabled: true });
2026-10-24T04:19:02.5496514Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5496517Z
2026-10-24T04:19:02.5496855Z src/orchestration-v2/CheckpointCaptureService.ts:242:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("CheckpointCaptureServiceV2.execute")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5496859Z
2026-10-24T04:19:02.5496906Z 242 execute: (input) =>
2026-10-24T04:19:02.5496944Z ~~~~~~~
2026-10-24T04:19:02.5496948Z
2026-10-24T04:19:02.5497205Z src/orchestration-v2/CheckpointRestoreSafety.test.ts:104:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5497207Z
2026-10-24T04:19:02.5497312Z 104 get: () => Effect.succeed(Option.some({ workspaceRoot: parent } as never)),
2026-10-24T04:19:02.5497358Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5497360Z
2026-10-24T04:19:02.5497705Z src/orchestration-v2/CheckpointRestoreSafety.ts:41:13 - suggestion TS377116: `Effect.catchIf` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T04:19:02.5497707Z
2026-10-24T04:19:02.5497758Z 41 Effect.catch((error) =>
2026-10-24T04:19:02.5497799Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5497801Z
2026-10-24T04:19:02.5498137Z src/orchestration-v2/CheckpointRestoreSafety.ts:83:17 - suggestion TS377116: `Effect.catchIf` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T04:19:02.5498139Z
2026-10-24T04:19:02.5498190Z 83 Effect.catch((error) =>
2026-10-24T04:19:02.5498234Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5498236Z
2026-10-24T04:19:02.5498532Z src/orchestration-v2/CheckpointRollbackService.test.ts:233:22 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5498537Z
2026-10-24T04:19:02.5498631Z 233 return Effect.succeed(Option.some({ workspaceRoot } as never));
2026-10-24T04:19:02.5498675Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5498717Z
2026-10-24T04:19:02.5499069Z 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-24T04:19:02.5499071Z
2026-10-24T04:19:02.5499134Z 142 const batchAbort = new AbortController();
2026-10-24T04:19:02.5499186Z ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5499188Z
2026-10-24T04:19:02.5499550Z src/orchestration-v2/CommandOutputHub.test.ts:168:5 - suggestion TS377120: `Effect.filterOrElse` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-24T04:19:02.5499553Z
2026-10-24T04:19:02.5499604Z 168 Effect.flatMap((frame) =>
2026-10-24T04:19:02.5499649Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5499651Z
2026-10-24T04:19:02.5499894Z src/orchestration-v2/CommandReceiptStore.ts:164:29 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5499897Z
2026-10-24T04:19:02.5499966Z 164 onNone: () => Effect.succeed(Option.none()),
2026-10-24T04:19:02.5500019Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5500021Z
2026-10-24T04:19:02.5500259Z src/orchestration-v2/CommandReceiptStore.ts:167:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5500261Z
2026-10-24T04:19:02.5500323Z 167 ? Effect.succeed(Option.none())
2026-10-24T04:19:02.5500372Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5500375Z
2026-10-24T04:19:02.5500615Z src/orchestration-v2/CommandReceiptStore.ts:168:58 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T04:19:02.5500619Z
2026-10-24T04:19:02.5500721Z 168 : fromApplicationReceipt(receipt).pipe(Effect.map(Option.some)),
2026-10-24T04:19:02.5500783Z ~~~~~~~~~~
2026-10-24T04:19:02.5500786Z
2026-10-24T04:19:02.5501024Z src/orchestration-v2/CommandReceiptStore.ts:183:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5501027Z
2026-10-24T04:19:02.5501086Z 183 ? Effect.succeed(Option.none())
2026-10-24T04:19:02.5501132Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5501134Z
2026-10-24T04:19:02.5501380Z src/orchestration-v2/CommandReceiptStore.ts:192:25 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T04:19:02.5501383Z
2026-10-24T04:19:02.5501446Z 192 }).pipe(Effect.map(Option.some)),
2026-10-24T04:19:02.5501494Z ~~~~~~~~~~
2026-10-24T04:19:02.5501496Z
2026-10-24T04:19:02.5501751Z src/orchestration-v2/EffectOutbox.ts:429:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5501756Z
2026-10-24T04:19:02.5501813Z 429 ? Effect.succeed(Option.none())
2026-10-24T04:19:02.5501860Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5501862Z
2026-10-24T04:19:02.5502091Z src/orchestration-v2/EffectOutbox.ts:430:39 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T04:19:02.5502093Z
2026-10-24T04:19:02.5502215Z 430 : rowToEffect(row).pipe(Effect.map(Option.some));
2026-10-24T04:19:02.5502266Z ~~~~~~~~~~
2026-10-24T04:19:02.5502269Z
2026-10-24T04:19:02.5502501Z src/orchestration-v2/EffectWorker.test.ts:107:20 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5502545Z
2026-10-24T04:19:02.5502609Z 107 get: () => Effect.succeed(Option.none()),
2026-10-24T04:19:02.5502657Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5502659Z
2026-10-24T04:19:02.5502890Z src/orchestration-v2/EffectWorker.test.ts:302:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5502892Z
2026-10-24T04:19:02.5502976Z 302 claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T04:19:02.5503025Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5503027Z
2026-10-24T04:19:02.5503261Z src/orchestration-v2/EffectWorker.test.ts:369:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5503263Z
2026-10-24T04:19:02.5503347Z 369 claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T04:19:02.5503394Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5503398Z
2026-10-24T04:19:02.5503630Z src/orchestration-v2/EffectWorker.test.ts:436:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5503632Z
2026-10-24T04:19:02.5503716Z 436 claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T04:19:02.5503763Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5503765Z
2026-10-24T04:19:02.5503998Z src/orchestration-v2/EffectWorker.test.ts:437:18 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5504001Z
2026-10-24T04:19:02.5504074Z 437 get: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T04:19:02.5504121Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5504123Z
2026-10-24T04:19:02.5504458Z 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-24T04:19:02.5504462Z
2026-10-24T04:19:02.5504517Z 98 execute: (effect, options) => {
2026-10-24T04:19:02.5504558Z ~~~~~~~
2026-10-24T04:19:02.5504560Z
2026-10-24T04:19:02.5504884Z 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-24T04:19:02.5504889Z
2026-10-24T04:19:02.5504942Z 180 Effect.catch((cause) =>
2026-10-24T04:19:02.5504991Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5504993Z
2026-10-24T04:19:02.5505277Z 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-24T04:19:02.5505281Z
2026-10-24T04:19:02.5505331Z 110 append: (input) =>
2026-10-24T04:19:02.5505371Z ~~~~~~
2026-10-24T04:19:02.5505373Z
2026-10-24T04:19:02.5505679Z 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-24T04:19:02.5505681Z
2026-10-24T04:19:02.5505739Z 120 appendProjectEvent: (event) =>
2026-10-24T04:19:02.5505784Z ~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5505786Z
2026-10-24T04:19:02.5506120Z 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-24T04:19:02.5506123Z
2026-10-24T04:19:02.5506174Z 131 latestSequence: (input) =>
2026-10-24T04:19:02.5506266Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5506269Z
2026-10-24T04:19:02.5506526Z src/orchestration-v2/FoundationPersistence.test.ts:1791:26 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5506528Z
2026-10-24T04:19:02.5506617Z 1791 claimNext: () => Effect.succeed(Option.some(claimedEffect)),
2026-10-24T04:19:02.5506664Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5506669Z
2026-10-24T04:19:02.5506922Z src/orchestration-v2/FoundationPersistence.test.ts:1793:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5506926Z
2026-10-24T04:19:02.5506973Z 1793 Effect.succeed(
2026-10-24T04:19:02.5507020Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5507022Z
2026-10-24T04:19:02.5507277Z src/orchestration-v2/FoundationPersistence.test.ts:2663:30 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5507281Z
2026-10-24T04:19:02.5507357Z 2663 nextClaimableAt: Effect.succeed(Option.none()),
2026-10-24T04:19:02.5507410Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5507412Z
2026-10-24T04:19:02.5507665Z src/orchestration-v2/FoundationPersistence.test.ts:2880:30 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5507667Z
2026-10-24T04:19:02.5507743Z 2880 nextClaimableAt: Effect.succeed(Option.none()),
2026-10-24T04:19:02.5507795Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5507797Z
2026-10-24T04:19:02.5508147Z src/orchestration-v2/Orchestrator.ts:11782:7 - suggestion TS377120: `Effect.filterOrFail` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-24T04:19:02.5508155Z
2026-10-24T04:19:02.5508206Z 11782 Effect.flatMap((planned) =>
2026-10-24T04:19:02.5508253Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5508255Z
2026-10-24T04:19:02.5508588Z src/orchestration-v2/Orchestrator.ts:12205:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.restartContinuationPending")((run) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5508591Z
2026-10-24T04:19:02.5508655Z 12205 restartContinuationPending: (run) =>
2026-10-24T04:19:02.5508699Z ~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5508701Z
2026-10-24T04:19:02.5509031Z src/orchestration-v2/Orchestrator.ts:12207:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.awaitRestartContinuation")((run) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5509033Z
2026-10-24T04:19:02.5509095Z 12207 awaitRestartContinuation: (run) =>
2026-10-24T04:19:02.5509142Z ~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5509145Z
2026-10-24T04:19:02.5509462Z src/orchestration-v2/Orchestrator.ts:12210:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.autoArmLimitRecovery")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5509464Z
2026-10-24T04:19:02.5509519Z 12210 autoArmLimitRecovery: (input) =>
2026-10-24T04:19:02.5509566Z ~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5509568Z
2026-10-24T04:19:02.5509910Z src/orchestration-v2/Orchestrator.ts:12238:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.searchThread")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5509912Z
2026-10-24T04:19:02.5509964Z 12238 searchThread: (input) =>
2026-10-24T04:19:02.5510005Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5510010Z
2026-10-24T04:19:02.5510433Z src/orchestration-v2/Orchestrator.ts:12246: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-24T04:19:02.5510436Z
2026-10-24T04:19:02.5510556Z 12246 getThreadHistoryPage: (threadId, cursor, throughEntryId, conversationOnly) =>
2026-10-24T04:19:02.5510601Z ~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5510604Z
2026-10-24T04:19:02.5510929Z src/orchestration-v2/Orchestrator.ts:12250:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getTimelinePage")((threadId, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5510931Z
2026-10-24T04:19:02.5510996Z 12250 getTimelinePage: (threadId, options) =>
2026-10-24T04:19:02.5511038Z ~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5511040Z
2026-10-24T04:19:02.5511350Z src/orchestration-v2/Orchestrator.ts:12254:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getMessageCount")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5511353Z
2026-10-24T04:19:02.5511406Z 12254 getMessageCount: (threadId) =>
2026-10-24T04:19:02.5511451Z ~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5511453Z
2026-10-24T04:19:02.5511787Z src/orchestration-v2/Orchestrator.ts:12258:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getTurnItem")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5511789Z
2026-10-24T04:19:02.5511838Z 12258 getTurnItem: (input) =>
2026-10-24T04:19:02.5511884Z ~~~~~~~~~~~
2026-10-24T04:19:02.5511886Z
2026-10-24T04:19:02.5512226Z src/orchestration-v2/Orchestrator.ts:12266:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadRecords")((threadId, fields, filter) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5512230Z
2026-10-24T04:19:02.5512307Z 12266 getThreadRecords: (threadId, fields, filter) =>
2026-10-24T04:19:02.5512349Z ~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5512355Z
2026-10-24T04:19:02.5512669Z src/orchestration-v2/Orchestrator.ts:12270:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadProjection")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5512672Z
2026-10-24T04:19:02.5512731Z 12270 getThreadProjection: (threadId) =>
2026-10-24T04:19:02.5512777Z ~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5512779Z
2026-10-24T04:19:02.5513101Z src/orchestration-v2/Orchestrator.ts:12274:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getCheckpointContext")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5513105Z
2026-10-24T04:19:02.5513163Z 12274 getCheckpointContext: (threadId) =>
2026-10-24T04:19:02.5513209Z ~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5513211Z
2026-10-24T04:19:02.5513524Z src/orchestration-v2/Orchestrator.ts:12278:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadSnapshot")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5513526Z
2026-10-24T04:19:02.5513584Z 12278 getThreadSnapshot: (threadId) =>
2026-10-24T04:19:02.5513630Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5513632Z
2026-10-24T04:19:02.5514009Z src/orchestration-v2/Orchestrator.ts:12282:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadSnapshotWindow")((threadId, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5514014Z
2026-10-24T04:19:02.5514089Z 12282 getThreadSnapshotWindow: (threadId, options) =>
2026-10-24T04:19:02.5514215Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5514218Z
2026-10-24T04:19:02.5514529Z src/orchestration-v2/Orchestrator.ts:12286:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getShellSnapshot")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5514531Z
2026-10-24T04:19:02.5514588Z 12286 getShellSnapshot: (options) =>
2026-10-24T04:19:02.5514629Z ~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5514631Z
2026-10-24T04:19:02.5514956Z src/orchestration-v2/Orchestrator.ts:12288:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.listActiveSubagentThreadIds")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5514958Z
2026-10-24T04:19:02.5515022Z 12288 listActiveSubagentThreadIds: () =>
2026-10-24T04:19:02.5515068Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5515071Z
2026-10-24T04:19:02.5515385Z src/orchestration-v2/Orchestrator.ts:12290:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.readShellSnapshot")((options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5515387Z
2026-10-24T04:19:02.5515441Z 12290 readShellSnapshot: (options) =>
2026-10-24T04:19:02.5515486Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5515488Z
2026-10-24T04:19:02.5515797Z src/orchestration-v2/Orchestrator.ts:12297:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadShell")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5515799Z
2026-10-24T04:19:02.5515855Z 12297 getThreadShell: (threadId) =>
2026-10-24T04:19:02.5515900Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5515902Z
2026-10-24T04:19:02.5516223Z src/orchestration-v2/Orchestrator.ts:12301:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadEventSequence")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5516227Z
2026-10-24T04:19:02.5516290Z 12301 getThreadEventSequence: (threadId) =>
2026-10-24T04:19:02.5516338Z ~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5516340Z
2026-10-24T04:19:02.5516663Z 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-24T04:19:02.5516665Z
2026-10-24T04:19:02.5516733Z 160 getInstance: () => Effect.succeed(undefined),
2026-10-24T04:19:02.5516786Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5516789Z
2026-10-24T04:19:02.5517088Z 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-24T04:19:02.5517091Z
2026-10-24T04:19:02.5517205Z 269 getShell: (projectId) => get(projectId).pipe(Effect.map(Option.map(toShell))),
2026-10-24T04:19:02.5517247Z ~~~~~~~~
2026-10-24T04:19:02.5517249Z
2026-10-24T04:19:02.5517548Z 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-24T04:19:02.5517550Z
2026-10-24T04:19:02.5517598Z 270 listShells: (options) =>
2026-10-24T04:19:02.5517641Z ~~~~~~~~~~
2026-10-24T04:19:02.5517643Z
2026-10-24T04:19:02.5517953Z src/orchestration-v2/ProjectionControlReads.test.ts:279:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5517955Z
2026-10-24T04:19:02.5518004Z 279 Effect.succeed(
2026-10-24T04:19:02.5518047Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5518088Z
2026-10-24T04:19:02.5518416Z 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-24T04:19:02.5518419Z
2026-10-24T04:19:02.5518466Z 78 get: (instanceId) =>
2026-10-24T04:19:02.5518507Z ~~~
2026-10-24T04:19:02.5518509Z
2026-10-24T04:19:02.5518824Z 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-24T04:19:02.5518826Z
2026-10-24T04:19:02.5518869Z 135 list: () =>
2026-10-24T04:19:02.5518912Z ~~~~
2026-10-24T04:19:02.5518914Z
2026-10-24T04:19:02.5519235Z src/orchestration-v2/ProviderEventIngestor.ts:93:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderTurnAnalytics.record")((properties) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5519239Z
2026-10-24T04:19:02.5519324Z 93 record: (properties: Readonly<Record<string, unknown>>) =>
2026-10-24T04:19:02.5519365Z ~~~~~~
2026-10-24T04:19:02.5519367Z
2026-10-24T04:19:02.5519729Z src/orchestration-v2/ProviderEventIngestor.ts:818:15 - suggestion TS377120: `Effect.filterOrElse` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-24T04:19:02.5519731Z
2026-10-24T04:19:02.5519793Z 818 Effect.flatMap((storedEvents) =>
2026-10-24T04:19:02.5519839Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5519843Z
2026-10-24T04:19:02.5520098Z src/orchestration-v2/ProviderSessionManager.test.ts:1155:19 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5520102Z
2026-10-24T04:19:02.5520224Z 1155 : Effect.succeed(Option.some(makeBrowserAccessProject(requestedProjectId))),
2026-10-24T04:19:02.5520268Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5520270Z
2026-10-24T04:19:02.5520529Z src/orchestration-v2/ProviderTurnStartService.test.ts:150:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5520531Z
2026-10-24T04:19:02.5520579Z 150 Effect.succeed(
2026-10-24T04:19:02.5520623Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5520625Z
2026-10-24T04:19:02.5520878Z src/orchestration-v2/ProviderTurnStartService.test.ts:703:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5520884Z
2026-10-24T04:19:02.5521015Z 703 Effect.succeed(Option.some({ workspaceRoot: "/tmp/native-account-project" } as never)),
2026-10-24T04:19:02.5521064Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5521066Z
2026-10-24T04:19:02.5521381Z src/orchestration-v2/ProviderTurnStartService.testkit.ts:14:20 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5521383Z
2026-10-24T04:19:02.5521453Z 14 getById: () => Effect.succeed(Option.none()),
2026-10-24T04:19:02.5521496Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5521499Z
2026-10-24T04:19:02.5524247Z src/orchestration-v2/ProviderTurnStartService.ts:205:39 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T04:19:02.5524250Z
2026-10-24T04:19:02.5524411Z 205 Effect.catchCause(() => Effect.succeed(undefined)),
2026-10-24T04:19:02.5524474Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5524476Z
2026-10-24T04:19:02.5524858Z src/orchestration-v2/ProviderTurnStartService.ts:512:15 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T04:19:02.5524918Z
2026-10-24T04:19:02.5524974Z 512 Effect.catchCause((cause) =>
2026-10-24T04:19:02.5525021Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5525023Z
2026-10-24T04:19:02.5525434Z src/orchestration-v2/ProviderTurnStartService.ts:1302: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-24T04:19:02.5525437Z
2026-10-24T04:19:02.5525497Z 1302 return runExecution.startRootRun({
2026-10-24T04:19:02.5525537Z ~~~~~~
2026-10-24T04:19:02.5525539Z
2026-10-24T04:19:02.5525789Z src/orchestration-v2/PullRequestWatchReactor.ts:478:53 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T04:19:02.5525793Z
2026-10-24T04:19:02.5525892Z 478 ? pullRequests.activity(reference).pipe(Effect.map(Option.some))
2026-10-24T04:19:02.5525953Z ~~~~~~~~~~
2026-10-24T04:19:02.5525955Z
2026-10-24T04:19:02.5526311Z 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-24T04:19:02.5526313Z
2026-10-24T04:19:02.5526386Z 49 cleanupScheduledTasks: (threadId: ThreadId) =>
2026-10-24T04:19:02.5526429Z ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5526431Z
2026-10-24T04:19:02.5526774Z 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-24T04:19:02.5526777Z
2026-10-24T04:19:02.5526837Z 58 cleanupTerminals: (threadId: string) =>
2026-10-24T04:19:02.5526880Z ~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5526882Z
2026-10-24T04:19:02.5527220Z 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-24T04:19:02.5527223Z
2026-10-24T04:19:02.5527279Z 66 cleanupPreviews: (threadId: string) =>
2026-10-24T04:19:02.5527322Z ~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5527325Z
2026-10-24T04:19:02.5527678Z 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-24T04:19:02.5527682Z
2026-10-24T04:19:02.5527770Z 74 cleanupAttachments: (attachmentIds: ReadonlyArray<string>) =>
2026-10-24T04:19:02.5527813Z ~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5527815Z
2026-10-24T04:19:02.5528070Z src/orchestration-v2/RunExecutionService.test.ts:1812:16 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome)
2026-10-24T04:19:02.5528072Z
2026-10-24T04:19:02.5528131Z 1812 ).pipe(Effect.map(Option.some)),
2026-10-24T04:19:02.5528173Z ~~~~~~~~~~
2026-10-24T04:19:02.5528175Z
2026-10-24T04:19:02.5528576Z src/orchestration-v2/RunExecutionService.ts:931:15 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T04:19:02.5528579Z
2026-10-24T04:19:02.5528665Z 931 Effect.catchCause((cause) =>
2026-10-24T04:19:02.5528707Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5528710Z
2026-10-24T04:19:02.5528944Z src/orchestration-v2/RuntimePolicy.test.ts:90:9 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5528947Z
2026-10-24T04:19:02.5528992Z 90 Effect.succeed(
2026-10-24T04:19:02.5529033Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5529036Z
2026-10-24T04:19:02.5529325Z 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-24T04:19:02.5529330Z
2026-10-24T04:19:02.5529375Z 54 resolve: (input) =>
2026-10-24T04:19:02.5529415Z ~~~~~~~
2026-10-24T04:19:02.5529417Z
2026-10-24T04:19:02.5529670Z src/orchestration-v2/RuntimeRequestService.test.ts:29:7 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5529675Z
2026-10-24T04:19:02.5529720Z 29 Effect.succeed(
2026-10-24T04:19:02.5529761Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5529763Z
2026-10-24T04:19:02.5530011Z src/orchestration-v2/ThreadLaunchService.test.ts:189:33 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5530013Z
2026-10-24T04:19:02.5530105Z 189 getByWorkspaceRoot: () => Effect.succeed(Option.some(project)),
2026-10-24T04:19:02.5530158Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5530160Z
2026-10-24T04:19:02.5530403Z src/orchestration-v2/ThreadLaunchService.test.ts:220:32 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5530407Z
2026-10-24T04:19:02.5530488Z 220 folderForThread: () => Effect.succeed(Option.none()),
2026-10-24T04:19:02.5530543Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5530546Z
2026-10-24T04:19:02.5530866Z 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-24T04:19:02.5530868Z
2026-10-24T04:19:02.5530916Z 91 archive: (input) =>
2026-10-24T04:19:02.5530955Z ~~~~~~~
2026-10-24T04:19:02.5530957Z
2026-10-24T04:19:02.5531281Z 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-24T04:19:02.5531284Z
2026-10-24T04:19:02.5531338Z 97 unarchive: (input) =>
2026-10-24T04:19:02.5531380Z ~~~~~~~~~
2026-10-24T04:19:02.5531382Z
2026-10-24T04:19:02.5531732Z 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-24T04:19:02.5531736Z
2026-10-24T04:19:02.5531780Z 103 delete: (input) =>
2026-10-24T04:19:02.5531821Z ~~~~~~
2026-10-24T04:19:02.5531823Z
2026-10-24T04:19:02.5532161Z 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-24T04:19:02.5532163Z
2026-10-24T04:19:02.5532216Z 109 updateMetadata: (input) =>
2026-10-24T04:19:02.5532300Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5532303Z
2026-10-24T04:19:02.5532632Z 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-24T04:19:02.5532673Z
2026-10-24T04:19:02.5532726Z 118 setRuntimeMode: (input) =>
2026-10-24T04:19:02.5532768Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5532770Z
2026-10-24T04:19:02.5533112Z 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-24T04:19:02.5533114Z
2026-10-24T04:19:02.5533168Z 125 setInteractionMode: (input) =>
2026-10-24T04:19:02.5533209Z ~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5533211Z
2026-10-24T04:19:02.5533555Z 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-24T04:19:02.5533557Z
2026-10-24T04:19:02.5533613Z 132 setModelSelection: (input) =>
2026-10-24T04:19:02.5533657Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5533659Z
2026-10-24T04:19:02.5534027Z src/orchestration-v2/ThreadManagementService.ts:689:7 - suggestion TS377120: `Effect.filterOrFail` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-24T04:19:02.5534029Z
2026-10-24T04:19:02.5534083Z 689 Effect.flatMap((projection) =>
2026-10-24T04:19:02.5534126Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5534128Z
2026-10-24T04:19:02.5534406Z src/orchestration-v2/ThreadManagementService.ts:706:5 - suggestion TS377015: This expression contains chained `pipe` calls that can be simplified to a single `pipe` call. effect(unnecessaryPipeChain)
2026-10-24T04:19:02.5534408Z
2026-10-24T04:19:02.5534476Z 706 ensureProjectionTranscript(input.threadId)
2026-10-24T04:19:02.5534527Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5534660Z 707 .pipe(Effect.andThen(orchestrator.getThreadRecords(input.threadId, fields, filter)))
2026-10-24T04:19:02.5534746Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5534788Z ...
2026-10-24T04:19:02.5534827Z 726 ),
2026-10-24T04:19:02.5534868Z ~~~~~~~~~~
2026-10-24T04:19:02.5534909Z 727 );
2026-10-24T04:19:02.5534952Z ~~~~~~~
2026-10-24T04:19:02.5534954Z
2026-10-24T04:19:02.5535319Z src/orchestration-v2/ThreadManagementService.ts:717:9 - suggestion TS377120: `Effect.filterOrFail` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-24T04:19:02.5535324Z
2026-10-24T04:19:02.5535378Z 717 Effect.flatMap((projection) =>
2026-10-24T04:19:02.5535422Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5535424Z
2026-10-24T04:19:02.5535787Z src/orchestration-v2/ThreadManagementService.ts:1131:43 - suggestion TS377019: This `yield* Effect.fail(...)` passes a yieldable error value. `yield*` represents that value directly without wrapping it in `Effect.fail`. effect(unnecessaryFailYieldableError)
2026-10-24T04:19:02.5535791Z
2026-10-24T04:19:02.5535890Z 1131 if (failures[0] !== undefined) return yield* Effect.fail(failures[0]);
2026-10-24T04:19:02.5535944Z ~~~~~
2026-10-24T04:19:02.5535946Z
2026-10-24T04:19:02.5536291Z src/orchestration-v2/ThreadManagementService.ts:1142:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.searchThread")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5536331Z
2026-10-24T04:19:02.5536383Z 1142 searchThread: (input) =>
2026-10-24T04:19:02.5536425Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5536427Z
2026-10-24T04:19:02.5536848Z src/orchestration-v2/ThreadManagementService.ts:1147:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.getThreadHistoryPage")((threadId, cursor, throughEntryId, conversationOnly) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5536890Z
2026-10-24T04:19:02.5537006Z 1147 getThreadHistoryPage: (threadId, cursor, throughEntryId, conversationOnly) =>
2026-10-24T04:19:02.5537052Z ~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5537054Z
2026-10-24T04:19:02.5537413Z src/orchestration-v2/ThreadManagementService.ts:1153:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.getTimelinePage")((threadId, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5537417Z
2026-10-24T04:19:02.5537479Z 1153 getTimelinePage: (threadId, options) =>
2026-10-24T04:19:02.5537522Z ~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5537524Z
2026-10-24T04:19:02.5537868Z src/orchestration-v2/ThreadManagementService.ts:1157:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.getMessageCount")((threadId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5537873Z
2026-10-24T04:19:02.5537925Z 1157 getMessageCount: (threadId) =>
2026-10-24T04:19:02.5537969Z ~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5537972Z
2026-10-24T04:19:02.5538306Z src/orchestration-v2/ThreadManagementService.ts:1161:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.getTurnItem")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5538308Z
2026-10-24T04:19:02.5538359Z 1161 getTurnItem: (input) =>
2026-10-24T04:19:02.5538400Z ~~~~~~~~~~~
2026-10-24T04:19:02.5538402Z
2026-10-24T04:19:02.5538779Z src/orchestration-v2/ThreadManagementService.ts:1166:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.getThreadRecords")((threadId, fields, filter) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5538783Z
2026-10-24T04:19:02.5538856Z 1166 getThreadRecords: (threadId, fields, filter) =>
2026-10-24T04:19:02.5538900Z ~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5538903Z
2026-10-24T04:19:02.5539287Z src/orchestration-v2/ThreadManagementService.ts:1206:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("LegacyV1ThreadImporter.LegacyV1ThreadImporter.ensureTranscript")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5539290Z
2026-10-24T04:19:02.5539422Z 1206 ensureTranscript: () => Effect.succeed({ importedThreadCount: 0, importedMessageCount: 0 }),
2026-10-24T04:19:02.5539467Z ~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5539469Z
2026-10-24T04:19:02.5539731Z src/orchestration-v2/ThreadPullRequestService.test.ts:119:29 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5539735Z
2026-10-24T04:19:02.5539815Z 119 getShell: () => Effect.succeed(Option.some(project)),
2026-10-24T04:19:02.5539865Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5539868Z
2026-10-24T04:19:02.5540122Z src/orchestration-v2/ThreadPullRequestService.test.ts:238:31 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5540124Z
2026-10-24T04:19:02.5540203Z 238 getShell: () => Effect.succeed(Option.some(project)),
2026-10-24T04:19:02.5540255Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5540257Z
2026-10-24T04:19:02.5540675Z src/orchestration-v2/ThreadPullRequestService.ts:329:17 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T04:19:02.5540678Z
2026-10-24T04:19:02.5540761Z 329 Effect.catchCause((cause) =>
2026-10-24T04:19:02.5540807Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5540809Z
2026-10-24T04:19:02.5541179Z src/orchestration-v2/ThreadSettlementService.ts:353:11 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T04:19:02.5541181Z
2026-10-24T04:19:02.5541237Z 353 Effect.catchCause((cause) =>
2026-10-24T04:19:02.5541284Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5541286Z
2026-10-24T04:19:02.5541684Z src/orchestration-v2/ThreadSettlementService.ts:516:11 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T04:19:02.5541686Z
2026-10-24T04:19:02.5541738Z 516 Effect.catchCause((cause) =>
2026-10-24T04:19:02.5541789Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5541791Z
2026-10-24T04:19:02.5542160Z src/orchestration-v2/ThreadSettlementService.ts:534:7 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T04:19:02.5542162Z
2026-10-24T04:19:02.5542215Z 534 Effect.catchCause((cause) =>
2026-10-24T04:19:02.5542259Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5542261Z
2026-10-24T04:19:02.5542628Z src/orchestration-v2/ThreadSettlementService.ts:576:9 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T04:19:02.5542630Z
2026-10-24T04:19:02.5542683Z 576 Effect.catchCause((cause) =>
2026-10-24T04:19:02.5542730Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5542733Z
2026-10-24T04:19:02.5543080Z 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-24T04:19:02.5543082Z
2026-10-24T04:19:02.5543136Z 106 normalize: (item, runOrdinal) =>
2026-10-24T04:19:02.5543175Z ~~~~~~~~~
2026-10-24T04:19:02.5543178Z
2026-10-24T04:19:02.5543570Z 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-24T04:19:02.5543573Z
2026-10-24T04:19:02.5543671Z 54 const thread = Schema.decodeUnknownSync(OrchestrationV2AppThread)({
2026-10-24T04:19:02.5543719Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5543722Z
2026-10-24T04:19:02.5544084Z src/orchestration-v2/http.ts:231:11 - suggestion TS377012: This Effect generator contains `try/catch`; in this context, error handling is expressed with Effect APIs such as Effect.try, Effect.tryPromise, Effect.catch, Effect.catchTag). effect(tryCatchInEffectGen)
2026-10-24T04:19:02.5544086Z
2026-10-24T04:19:02.5544126Z 231 try {
2026-10-24T04:19:02.5544168Z ~~~~~
2026-10-24T04:19:02.5544250Z 232 decodeThreadHistoryCursor(args.query.cursor);
2026-10-24T04:19:02.5544316Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5544355Z ...
2026-10-24T04:19:02.5544485Z 236 return yield* failEnvironmentInternal("orchestration_thread_history_failed", cause);
2026-10-24T04:19:02.5544616Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5544659Z 237 }
2026-10-24T04:19:02.5544699Z ~~~~~~~~~~~
2026-10-24T04:19:02.5544701Z
2026-10-24T04:19:02.5544965Z src/orchestration-v2/runtimeLayer.test.ts:120:18 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5544968Z
2026-10-24T04:19:02.5545033Z 120 getById: () => Effect.succeed(Option.none()),
2026-10-24T04:19:02.5545080Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5545083Z
2026-10-24T04:19:02.5545313Z src/orchestration-v2/runtimeLayer.test.ts:996:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5545318Z
2026-10-24T04:19:02.5545363Z 996 Effect.succeed(
2026-10-24T04:19:02.5545408Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5545412Z
2026-10-24T04:19:02.5545768Z src/orchestration-v2/testkit/CommandOutputRecorder.ts:40:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("CommandOutputHub.CommandOutputHub.append")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5545772Z
2026-10-24T04:19:02.5545819Z 40 append: (input) =>
2026-10-24T04:19:02.5545857Z ~~~~~~
2026-10-24T04:19:02.5545859Z
2026-10-24T04:19:02.5546173Z src/orchestration-v2/testkit/OrchestratorScenario.ts:283:13 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("awaitDispatch")(function*(key) { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5546175Z
2026-10-24T04:19:02.5546238Z 283 const awaitDispatch = (key: string) =>
2026-10-24T04:19:02.5546282Z ~~~~~~~~~~~~~
2026-10-24T04:19:02.5546284Z
2026-10-24T04:19:02.5546694Z src/orchestration-v2/testkit/ProviderReplayHarness.ts:447:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadTitleRegenerationService.ThreadTitleRegenerationService.execute")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5546697Z
2026-10-24T04:19:02.5546747Z 447 execute: () => Effect.void,
2026-10-24T04:19:02.5546793Z ~~~~~~~
2026-10-24T04:19:02.5546795Z
2026-10-24T04:19:02.5547127Z src/persistence/PullRequestFilesViewed.ts:92:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestFilesViewedRepository.list")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5547129Z
2026-10-24T04:19:02.5547175Z 92 list: (input) =>
2026-10-24T04:19:02.5547217Z ~~~~
2026-10-24T04:19:02.5547219Z
2026-10-24T04:19:02.5547544Z src/persistence/PullRequestFilesViewed.ts:102:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestFilesViewedRepository.set")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5547547Z
2026-10-24T04:19:02.5547592Z 102 set: (input) =>
2026-10-24T04:19:02.5547633Z ~~~
2026-10-24T04:19:02.5547636Z
2026-10-24T04:19:02.5547960Z 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-24T04:19:02.5547964Z
2026-10-24T04:19:02.5548010Z 54 get: (key) =>
2026-10-24T04:19:02.5548049Z ~~~
2026-10-24T04:19:02.5548051Z
2026-10-24T04:19:02.5548386Z 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-24T04:19:02.5548388Z
2026-10-24T04:19:02.5548435Z 64 put: (key, guide) =>
2026-10-24T04:19:02.5548477Z ~~~
2026-10-24T04:19:02.5548479Z
2026-10-24T04:19:02.5548846Z 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-24T04:19:02.5548876Z
2026-10-24T04:19:02.5548925Z 45 Effect.catch((error) =>
2026-10-24T04:19:02.5548970Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5548972Z
2026-10-24T04:19:02.5549281Z src/preview/DesktopBrowserChannel.ts:75:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBrowserChannel.awaitAttached")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5549284Z
2026-10-24T04:19:02.5549350Z 75 awaitAttached: () => Effect.succeed(false),
2026-10-24T04:19:02.5549390Z ~~~~~~~~~~~~~
2026-10-24T04:19:02.5549392Z
2026-10-24T04:19:02.5549699Z src/preview/DesktopBrowserChannel.ts:78:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBrowserChannel.isAttached")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5549702Z
2026-10-24T04:19:02.5549762Z 78 isAttached: () => Effect.succeed(false),
2026-10-24T04:19:02.5549805Z ~~~~~~~~~~
2026-10-24T04:19:02.5549809Z
2026-10-24T04:19:02.5550105Z src/preview/DesktopBrowserChannel.ts:79:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBrowserChannel.endpoint")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5550107Z
2026-10-24T04:19:02.5550205Z 79 endpoint: () => Effect.die("No desktop app is attached to this server."),
2026-10-24T04:19:02.5550246Z ~~~~~~~~
2026-10-24T04:19:02.5550248Z
2026-10-24T04:19:02.5550545Z src/preview/DesktopBrowserChannel.ts:80:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBrowserChannel.pointer")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5550549Z
2026-10-24T04:19:02.5550602Z 80 pointer: () => Effect.void,
2026-10-24T04:19:02.5550643Z ~~~~~~~
2026-10-24T04:19:02.5550645Z
2026-10-24T04:19:02.5550969Z src/preview/DesktopBrowserChannel.ts:194:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBrowserChannel.awaitAttached")((key, timeout) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5550974Z
2026-10-24T04:19:02.5551028Z 194 awaitAttached: (key, timeout) =>
2026-10-24T04:19:02.5551073Z ~~~~~~~~~~~~~
2026-10-24T04:19:02.5551075Z
2026-10-24T04:19:02.5551384Z src/preview/DesktopBrowserChannel.ts:216:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBrowserChannel.isAttached")((key) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5551386Z
2026-10-24T04:19:02.5551485Z 216 isAttached: (key) => Effect.sync(() => attachedTabs.has(keyOf(key))),
2026-10-24T04:19:02.5551525Z ~~~~~~~~~~
2026-10-24T04:19:02.5551527Z
2026-10-24T04:19:02.5551874Z src/preview/DesktopBrowserChannel.ts:218:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBrowserChannel.pointer")((key, pointer) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5551878Z
2026-10-24T04:19:02.5551982Z 218 pointer: (key, pointer) => command({ type: "pointer", ...key, ...pointer }),
2026-10-24T04:19:02.5552023Z ~~~~~~~
2026-10-24T04:19:02.5552025Z
2026-10-24T04:19:02.5552468Z src/preview/ServerBrowser.ts:481: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-24T04:19:02.5552471Z
2026-10-24T04:19:02.5552563Z 481 executable: () => Effect.runPromise(previewBrowser.executable),
2026-10-24T04:19:02.5552652Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5552655Z
2026-10-24T04:19:02.5553086Z src/preview/ServerBrowser.ts:688: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-24T04:19:02.5553126Z
2026-10-24T04:19:02.5553175Z 688 ? Effect.runPromise(
2026-10-24T04:19:02.5553220Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5553222Z
2026-10-24T04:19:02.5553650Z src/preview/ServerBrowser.ts:697: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-24T04:19:02.5553656Z
2026-10-24T04:19:02.5553733Z 697 const scope = await Effect.runPromise(Scope.make());
2026-10-24T04:19:02.5553787Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5553789Z
2026-10-24T04:19:02.5554218Z src/preview/ServerBrowser.ts:699: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-24T04:19:02.5554223Z
2026-10-24T04:19:02.5554288Z 699 const endpoint = await Effect.runPromise(
2026-10-24T04:19:02.5554340Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5554342Z
2026-10-24T04:19:02.5554772Z src/preview/ServerBrowser.ts:709: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-24T04:19:02.5554775Z
2026-10-24T04:19:02.5554863Z 709 await Effect.runPromise(Scope.close(scope, Exit.void));
2026-10-24T04:19:02.5554911Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5554913Z
2026-10-24T04:19:02.5555346Z src/preview/ServerBrowser.ts:713: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-24T04:19:02.5555348Z
2026-10-24T04:19:02.5555431Z 713 await Effect.runPromise(Scope.close(scope, Exit.void));
2026-10-24T04:19:02.5555474Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5555476Z
2026-10-24T04:19:02.5555912Z src/preview/ServerBrowser.ts:1200: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-24T04:19:02.5555914Z
2026-10-24T04:19:02.5555965Z 1200 await Effect.runPromise(
2026-10-24T04:19:02.5556010Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5556014Z
2026-10-24T04:19:02.5556445Z src/preview/ServerBrowser.ts:1693: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-24T04:19:02.5556448Z
2026-10-24T04:19:02.5556498Z 1693 : await Effect.runPromise(
2026-10-24T04:19:02.5556546Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5556549Z
2026-10-24T04:19:02.5557025Z src/preview/ServerBrowser.ts:1757: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-24T04:19:02.5557028Z
2026-10-24T04:19:02.5557083Z 1757 ? await Effect.runPromise(
2026-10-24T04:19:02.5557172Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5557174Z
2026-10-24T04:19:02.5557432Z src/preview/ServerBrowser.ts:1760:58 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T04:19:02.5557434Z
2026-10-24T04:19:02.5557540Z 1760 ServerBrowserTabNotFoundError: () => Effect.succeed(undefined),
2026-10-24T04:19:02.5557609Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5557612Z
2026-10-24T04:19:02.5558045Z src/preview/ServerBrowser.ts:1766: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-24T04:19:02.5558047Z
2026-10-24T04:19:02.5558121Z 1766 const { sessions } = await Effect.runPromise(
2026-10-24T04:19:02.5558176Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5558178Z
2026-10-24T04:19:02.5558608Z src/preview/ServerBrowser.ts:1794: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-24T04:19:02.5558610Z
2026-10-24T04:19:02.5558663Z 1794 await Effect.runPromise(
2026-10-24T04:19:02.5558709Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5558711Z
2026-10-24T04:19:02.5559142Z src/preview/ServerBrowser.ts:1825: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-24T04:19:02.5559145Z
2026-10-24T04:19:02.5559200Z 1825 await Effect.runPromise(
2026-10-24T04:19:02.5559245Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5559247Z
2026-10-24T04:19:02.5559678Z src/preview/ServerBrowser.ts:1889: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-24T04:19:02.5559680Z
2026-10-24T04:19:02.5559809Z 1889 await Effect.runPromise(manager.close({ threadId: tab.threadId, tabId: tab.tabId }));
2026-10-24T04:19:02.5559857Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5559860Z
2026-10-24T04:19:02.5560289Z src/preview/ServerBrowser.ts:1957: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-24T04:19:02.5560292Z
2026-10-24T04:19:02.5560342Z 1957 await Effect.runPromise(
2026-10-24T04:19:02.5560391Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5560393Z
2026-10-24T04:19:02.5560825Z src/preview/ServerBrowser.ts:1969: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-24T04:19:02.5560827Z
2026-10-24T04:19:02.5560934Z 1969 const snapshot = await Effect.runPromise(
2026-10-24T04:19:02.5560992Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5560995Z
2026-10-24T04:19:02.5561473Z src/preview/ServerBrowser.ts:2215: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-24T04:19:02.5561531Z
2026-10-24T04:19:02.5561580Z 2215 await Effect.runPromise(
2026-10-24T04:19:02.5561647Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5561649Z
2026-10-24T04:19:02.5561916Z 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-24T04:19:02.5561918Z
2026-10-24T04:19:02.5561993Z 179 const receive = (chunk: Uint8Array | string) => {
2026-10-24T04:19:02.5562034Z ~~~~~~~
2026-10-24T04:19:02.5562037Z
2026-10-24T04:19:02.5562328Z 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-24T04:19:02.5562332Z
2026-10-24T04:19:02.5562426Z 209 Effect.catch(() => Effect.succeed(HttpServerResponse.empty())),
2026-10-24T04:19:02.5562468Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5562470Z
2026-10-24T04:19:02.5562788Z src/process/externalLauncher.ts:860:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ExternalLauncher.resolveAvailableEditors")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5562790Z
2026-10-24T04:19:02.5562874Z 860 resolveAvailableEditors: () => cachedAvailableEditors,
2026-10-24T04:19:02.5562919Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5562923Z
2026-10-24T04:19:02.5563247Z src/process/externalLauncher.ts:861:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ExternalLauncher.resolveFileManagerRevealKind")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5563251Z
2026-10-24T04:19:02.5563311Z 861 resolveFileManagerRevealKind: () =>
2026-10-24T04:19:02.5563355Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5563357Z
2026-10-24T04:19:02.5563654Z src/process/externalLauncher.ts:865:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ExternalLauncher.launchBrowser")((target) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5563656Z
2026-10-24T04:19:02.5563707Z 865 launchBrowser: (target) =>
2026-10-24T04:19:02.5563750Z ~~~~~~~~~~~~~
2026-10-24T04:19:02.5563752Z
2026-10-24T04:19:02.5564047Z src/process/externalLauncher.ts:869:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ExternalLauncher.launchEditor")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5564050Z
2026-10-24T04:19:02.5564098Z 869 launchEditor: (input) =>
2026-10-24T04:19:02.5564136Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5564140Z
2026-10-24T04:19:02.5564381Z src/project/AgentSessionImporter.test.ts:212:15 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5564383Z
2026-10-24T04:19:02.5564430Z 212 Effect.succeed(
2026-10-24T04:19:02.5564473Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5564475Z
2026-10-24T04:19:02.5564702Z src/project/ManagedProjectFolders.ts:346:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5564706Z
2026-10-24T04:19:02.5564787Z 346 ? Effect.succeed(Option.some(folderFor(id.slice(-8))))
2026-10-24T04:19:02.5564881Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5564884Z
2026-10-24T04:19:02.5565111Z src/project/ManagedProjectFolders.ts:348:15 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5565161Z
2026-10-24T04:19:02.5565229Z 348 ? Effect.succeed(Option.some(fullFolder))
2026-10-24T04:19:02.5565270Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5565272Z
2026-10-24T04:19:02.5565580Z src/project/ProjectCloneTracker.ts:432:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProjectCloneTracker.start")((input, hooks) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5565582Z
2026-10-24T04:19:02.5565659Z 432 start: (input, hooks) => locked(start(input, hooks)),
2026-10-24T04:19:02.5565701Z ~~~~~
2026-10-24T04:19:02.5565703Z
2026-10-24T04:19:02.5566007Z src/project/ProjectCloneTracker.ts:433:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProjectCloneTracker.cancel")((projectId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5566009Z
2026-10-24T04:19:02.5566078Z 433 cancel: (projectId) => locked(cancel(projectId)),
2026-10-24T04:19:02.5566122Z ~~~~~~
2026-10-24T04:19:02.5566124Z
2026-10-24T04:19:02.5566421Z src/project/ProjectCloneTracker.ts:434:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProjectCloneTracker.retry")((projectId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5566423Z
2026-10-24T04:19:02.5566493Z 434 retry: (projectId) => locked(retry(projectId)),
2026-10-24T04:19:02.5566530Z ~~~~~
2026-10-24T04:19:02.5566533Z
2026-10-24T04:19:02.5566833Z src/project/ProjectCloneTracker.ts:435:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProjectCloneTracker.discard")((projectId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5566835Z
2026-10-24T04:19:02.5566906Z 435 discard: (projectId) => locked(discard(projectId)),
2026-10-24T04:19:02.5566945Z ~~~~~~~
2026-10-24T04:19:02.5566947Z
2026-10-24T04:19:02.5567260Z 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-24T04:19:02.5567264Z
2026-10-24T04:19:02.5567358Z 21 get: (key) => Effect.sync(() => Option.fromUndefinedOr(bytes.get(key))),
2026-10-24T04:19:02.5567397Z ~~~
2026-10-24T04:19:02.5567399Z
2026-10-24T04:19:02.5567724Z 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-24T04:19:02.5567726Z
2026-10-24T04:19:02.5567773Z 22 set: (key, value) =>
2026-10-24T04:19:02.5567812Z ~~~
2026-10-24T04:19:02.5567814Z
2026-10-24T04:19:02.5568132Z 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-24T04:19:02.5568136Z
2026-10-24T04:19:02.5568182Z 26 remove: (key) =>
2026-10-24T04:19:02.5568222Z ~~~~~~
2026-10-24T04:19:02.5568224Z
2026-10-24T04:19:02.5568538Z 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-24T04:19:02.5568540Z
2026-10-24T04:19:02.5568636Z 30 create: () => Effect.die("Handoff does not create persistent secrets."),
2026-10-24T04:19:02.5568674Z ~~~~~~
2026-10-24T04:19:02.5568676Z
2026-10-24T04:19:02.5569056Z 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-24T04:19:02.5569088Z
2026-10-24T04:19:02.5569214Z 31 getOrCreateRandom: () => Effect.die("Handoff uses the destination environment identity."),
2026-10-24T04:19:02.5569259Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5569261Z
2026-10-24T04:19:02.5569660Z 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-24T04:19:02.5569662Z
2026-10-24T04:19:02.5569767Z 205 return yield* Schema.decodeUnknownEffect(Schema.fromJsonString(schema))(
2026-10-24T04:19:02.5569818Z ~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5569822Z
2026-10-24T04:19:02.5570082Z src/provider/CodexProvider.ts:569:11 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T04:19:02.5570086Z
2026-10-24T04:19:02.5570136Z 569 ? Effect.succeed(undefined)
2026-10-24T04:19:02.5570180Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5570183Z
2026-10-24T04:19:02.5570487Z src/provider/ModelManifest.ts:284:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ModelCatalog.ModelCatalog.current")((driverKind) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5570489Z
2026-10-24T04:19:02.5570539Z 284 current: (driverKind) =>
2026-10-24T04:19:02.5570578Z ~~~~~~~
2026-10-24T04:19:02.5570580Z
2026-10-24T04:19:02.5570927Z 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-24T04:19:02.5570930Z
2026-10-24T04:19:02.5570985Z 284 return yield* Effect.fail(
2026-10-24T04:19:02.5571027Z ~~~~~
2026-10-24T04:19:02.5571031Z
2026-10-24T04:19:02.5571340Z src/provider/ProviderAuthService.ts:211:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAuthService.importProfile")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5571343Z
2026-10-24T04:19:02.5571392Z 211 importProfile: (input) =>
2026-10-24T04:19:02.5571432Z ~~~~~~~~~~~~~
2026-10-24T04:19:02.5571434Z
2026-10-24T04:19:02.5571793Z 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-24T04:19:02.5571798Z
2026-10-24T04:19:02.5571855Z 39 credentials: (namespace, bindingId) =>
2026-10-24T04:19:02.5571894Z ~~~~~~~~~~~
2026-10-24T04:19:02.5571896Z
2026-10-24T04:19:02.5572253Z 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-24T04:19:02.5572256Z
2026-10-24T04:19:02.5572308Z 2933 Effect.catchCause((cause) =>
2026-10-24T04:19:02.5572350Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5572352Z
2026-10-24T04:19:02.5572712Z src/pullRequest/PullRequestService.ts:3336:7 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T04:19:02.5572714Z
2026-10-24T04:19:02.5572765Z 3336 Effect.catchCause((cause) =>
2026-10-24T04:19:02.5572847Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5572850Z
2026-10-24T04:19:02.5573156Z src/pullRequest/PullRequestService.ts:3556:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestService.listStats")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5573200Z
2026-10-24T04:19:02.5573247Z 3556 listStats: (input) =>
2026-10-24T04:19:02.5573287Z ~~~~~~~~~
2026-10-24T04:19:02.5573290Z
2026-10-24T04:19:02.5573517Z src/relay/AgentAwarenessRelay.test.ts:271:9 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone)
2026-10-24T04:19:02.5573519Z
2026-10-24T04:19:02.5573566Z 271 Effect.succeed(
2026-10-24T04:19:02.5573609Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5573611Z
2026-10-24T04:19:02.5573909Z src/relay/AgentAwarenessRelay.ts:822:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AgentAwarenessRelay.requestCatchUp")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5573912Z
2026-10-24T04:19:02.5574027Z 822 requestCatchUp: () => Queue.offer(catchUpRequests, undefined).pipe(Effect.asVoid),
2026-10-24T04:19:02.5574069Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5574071Z
2026-10-24T04:19:02.5574445Z src/resourceTelemetry/DesktopTelemetryReceiver.ts:641:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopTelemetryReceiver.requestDesktopUpdate")((requestId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5574448Z
2026-10-24T04:19:02.5574508Z 641 requestDesktopUpdate: (requestId) =>
2026-10-24T04:19:02.5574548Z ~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5574550Z
2026-10-24T04:19:02.5574917Z src/resourceTelemetry/DesktopTelemetryReceiver.ts:647:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopTelemetryReceiver.commitDesktopUpdate")((requestId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5574919Z
2026-10-24T04:19:02.5574974Z 647 commitDesktopUpdate: (requestId) =>
2026-10-24T04:19:02.5575017Z ~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5575019Z
2026-10-24T04:19:02.5575383Z src/resourceTelemetry/DesktopTelemetryReceiver.ts:649:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopTelemetryReceiver.cancelDesktopUpdate")((requestId) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5575386Z
2026-10-24T04:19:02.5575438Z 649 cancelDesktopUpdate: (requestId) =>
2026-10-24T04:19:02.5575478Z ~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5575481Z
2026-10-24T04:19:02.5575833Z src/resourceTelemetry/DesktopTelemetryReceiver.ts:698:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopTelemetryReceiver.setDiagnosticsDemand")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5575837Z
2026-10-24T04:19:02.5575898Z 698 setDiagnosticsDemand: () => Effect.void,
2026-10-24T04:19:02.5575940Z ~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5575942Z
2026-10-24T04:19:02.5576291Z src/resourceTelemetry/DesktopTelemetryReceiver.ts:699:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopTelemetryReceiver.requestDesktopUpdate")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5576295Z
2026-10-24T04:19:02.5576357Z 699 requestDesktopUpdate: () => Effect.void,
2026-10-24T04:19:02.5576399Z ~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5576401Z
2026-10-24T04:19:02.5576748Z src/resourceTelemetry/DesktopTelemetryReceiver.ts:700:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopTelemetryReceiver.commitDesktopUpdate")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5576750Z
2026-10-24T04:19:02.5576849Z 700 commitDesktopUpdate: () => Effect.void,
2026-10-24T04:19:02.5576893Z ~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5576895Z
2026-10-24T04:19:02.5577240Z src/resourceTelemetry/DesktopTelemetryReceiver.ts:701:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopTelemetryReceiver.cancelDesktopUpdate")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5577284Z
2026-10-24T04:19:02.5577344Z 701 cancelDesktopUpdate: () => Effect.void,
2026-10-24T04:19:02.5577386Z ~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5577388Z
2026-10-24T04:19:02.5577707Z 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-24T04:19:02.5577709Z
2026-10-24T04:19:02.5577751Z 1091 readHistory: () =>
2026-10-24T04:19:02.5577790Z ~~~~~~~~~~~
2026-10-24T04:19:02.5577792Z
2026-10-24T04:19:02.5578131Z 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-24T04:19:02.5578135Z
2026-10-24T04:19:02.5578196Z 1097 setExternalProcesses: () => Effect.void,
2026-10-24T04:19:02.5578239Z ~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5578241Z
2026-10-24T04:19:02.5578570Z 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-24T04:19:02.5578572Z
2026-10-24T04:19:02.5578631Z 1098 setHostPowerState: () => Effect.void,
2026-10-24T04:19:02.5578672Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5578674Z
2026-10-24T04:19:02.5578958Z src/scheduledTasks/ScheduledTaskService.ts:1136:31 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T04:19:02.5578960Z
2026-10-24T04:19:02.5579025Z 1136 ? Effect.succeed(undefined)
2026-10-24T04:19:02.5579083Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5579085Z
2026-10-24T04:19:02.5579352Z 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-24T04:19:02.5579354Z
2026-10-24T04:19:02.5579409Z 166 const results = yield* Effect.all(
2026-10-24T04:19:02.5579455Z ~~~~~~~~~~
2026-10-24T04:19:02.5579458Z
2026-10-24T04:19:02.5579799Z src/server.ts:480:5 - suggestion TS377014: This generator returns an Effect-able value directly, which produces a nested `Effect<Effect<...>>`. If the intended result is the inner Effect value, `return yield*` represents that form. effect(returnEffectInGen)
2026-10-24T04:19:02.5579803Z
2026-10-24T04:19:02.5579854Z 480 return Effect.gen(function* () {
2026-10-24T04:19:02.5579893Z ~~~~~~
2026-10-24T04:19:02.5579895Z
2026-10-24T04:19:02.5580159Z 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-24T04:19:02.5580161Z
2026-10-24T04:19:02.5580228Z 209 prepareTrial: Effect.succeed(undefined),
2026-10-24T04:19:02.5580279Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5580281Z
2026-10-24T04:19:02.5580537Z 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-24T04:19:02.5580539Z
2026-10-24T04:19:02.5580593Z 413 const results = yield* Effect.all(
2026-10-24T04:19:02.5580724Z ~~~~~~~~~~
2026-10-24T04:19:02.5580727Z
2026-10-24T04:19:02.5581128Z src/sourceControl/SourceControlProviderRegistry.ts:204:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.listChangeRequests")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5581170Z
2026-10-24T04:19:02.5581222Z 204 listChangeRequests: (input) =>
2026-10-24T04:19:02.5581265Z ~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5581267Z
2026-10-24T04:19:02.5581668Z src/sourceControl/SourceControlProviderRegistry.ts:209:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5581670Z
2026-10-24T04:19:02.5581753Z 209 getChangeRequest: (input) =>
2026-10-24T04:19:02.5581796Z ~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5581798Z
2026-10-24T04:19:02.5582193Z src/sourceControl/SourceControlProviderRegistry.ts:214:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.createChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5582197Z
2026-10-24T04:19:02.5582249Z 214 createChangeRequest: (input) =>
2026-10-24T04:19:02.5582291Z ~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5582293Z
2026-10-24T04:19:02.5582695Z src/sourceControl/SourceControlProviderRegistry.ts:219:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getRepositoryCloneUrls")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5582698Z
2026-10-24T04:19:02.5582754Z 219 getRepositoryCloneUrls: (input) =>
2026-10-24T04:19:02.5582795Z ~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5582797Z
2026-10-24T04:19:02.5583193Z src/sourceControl/SourceControlProviderRegistry.ts:224:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.createRepository")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5583197Z
2026-10-24T04:19:02.5583290Z 224 createRepository: (input) => provider.createRepository(input),
2026-10-24T04:19:02.5583332Z ~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5583334Z
2026-10-24T04:19:02.5583722Z src/sourceControl/SourceControlProviderRegistry.ts:225:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.getDefaultBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5583725Z
2026-10-24T04:19:02.5583773Z 225 getDefaultBranch: (input) =>
2026-10-24T04:19:02.5583814Z ~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5583816Z
2026-10-24T04:19:02.5584217Z src/sourceControl/SourceControlProviderRegistry.ts:230:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProvider.SourceControlProvider.checkoutChangeRequest")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5584220Z
2026-10-24T04:19:02.5584275Z 230 checkoutChangeRequest: (input) =>
2026-10-24T04:19:02.5584317Z ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5584319Z
2026-10-24T04:19:02.5584662Z src/sourceControl/SourceControlProviderRegistry.ts:345:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlProviderRegistry.resolve")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5584664Z
2026-10-24T04:19:02.5584788Z 345 resolve: (input) => resolveHandle(input).pipe(Effect.map((handle) => handle.provider)),
2026-10-24T04:19:02.5584826Z ~~~~~~~
2026-10-24T04:19:02.5584828Z
2026-10-24T04:19:02.5585221Z src/sourceControl/SourceControlRepositoryService.ts:409:7 - suggestion TS377116: `Effect.catchIf` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf)
2026-10-24T04:19:02.5585224Z
2026-10-24T04:19:02.5585302Z 409 Effect.catch((sshError) =>
2026-10-24T04:19:02.5585341Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5585343Z
2026-10-24T04:19:02.5585712Z src/sourceControl/SourceControlRepositoryService.ts:556:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.lookupRepository")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5585715Z
2026-10-24T04:19:02.5585762Z 556 lookupRepository: (input) =>
2026-10-24T04:19:02.5585803Z ~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5585805Z
2026-10-24T04:19:02.5586165Z src/sourceControl/SourceControlRepositoryService.ts:558:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.prepareClone")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5586167Z
2026-10-24T04:19:02.5586214Z 558 prepareClone: (input) =>
2026-10-24T04:19:02.5586256Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5586260Z
2026-10-24T04:19:02.5586638Z src/sourceControl/SourceControlRepositoryService.ts:565:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.cloneRepository")((input, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5586640Z
2026-10-24T04:19:02.5586696Z 565 cloneRepository: (input, options) =>
2026-10-24T04:19:02.5586735Z ~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5586739Z
2026-10-24T04:19:02.5587112Z src/sourceControl/SourceControlRepositoryService.ts:572:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.discardClone")((destinationPath) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5587114Z
2026-10-24T04:19:02.5587171Z 572 discardClone: (destinationPath) =>
2026-10-24T04:19:02.5587209Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5587211Z
2026-10-24T04:19:02.5587578Z src/sourceControl/SourceControlRepositoryService.ts:576:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.publishRepository")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5587582Z
2026-10-24T04:19:02.5587634Z 576 publishRepository: (input) =>
2026-10-24T04:19:02.5587675Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5587677Z
2026-10-24T04:19:02.5587990Z src/storageCleanup.ts:708:14 - suggestion TS377019: This `yield* Effect.fail(...)` passes a yieldable error value. `yield*` represents that value directly without wrapping it in `Effect.fail`. effect(unnecessaryFailYieldableError)
2026-10-24T04:19:02.5587992Z
2026-10-24T04:19:02.5588042Z 708 return yield* Effect.fail(
2026-10-24T04:19:02.5588083Z ~~~~~
2026-10-24T04:19:02.5588085Z
2026-10-24T04:19:02.5588362Z src/telemetry/AnalyticsService.ts:113:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AnalyticsService.record")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5588367Z
2026-10-24T04:19:02.5588411Z 113 record: () => Effect.void,
2026-10-24T04:19:02.5588450Z ~~~~~~
2026-10-24T04:19:02.5588453Z
2026-10-24T04:19:02.5588741Z src/telemetry/AnalyticsService.ts:115:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AnalyticsService.recordOwners")(() => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5588743Z
2026-10-24T04:19:02.5588795Z 115 recordOwners: () => Effect.void,
2026-10-24T04:19:02.5588835Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5588837Z
2026-10-24T04:19:02.5589170Z src/telemetry/AnalyticsService.ts:329:62 - suggestion TS377132: `Effect.andThen` expresses this sequencing more directly than `Effect.flatMap` with a zero-parameter callback. effect(flatMapIgnoredParamToAndThen)
2026-10-24T04:19:02.5589173Z
2026-10-24T04:19:02.5589312Z 329 yield* Effect.forever(Effect.sleep(FLUSH_INTERVAL_MS).pipe(Effect.flatMap(() => flushWhenDue)), {
2026-10-24T04:19:02.5589418Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5589420Z
2026-10-24T04:19:02.5589689Z src/textGeneration/CodexTextGeneration.ts:90:13 - suggestion TS377099: `Effect.ignore` expresses ignored failure more directly than `Effect.catch` returning `Effect.void`. effect(catchToIgnore)
2026-10-24T04:19:02.5589691Z
2026-10-24T04:19:02.5589748Z 90 .pipe(Effect.catch(() => Effect.void));
2026-10-24T04:19:02.5589793Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5589795Z
2026-10-24T04:19:02.5590115Z 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-24T04:19:02.5590118Z
2026-10-24T04:19:02.5590174Z 60 generateCommitMessage: (input) =>
2026-10-24T04:19:02.5590217Z ~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5590220Z
2026-10-24T04:19:02.5590522Z 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-24T04:19:02.5590524Z
2026-10-24T04:19:02.5590573Z 64 generatePrContent: (input) =>
2026-10-24T04:19:02.5590615Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5590617Z
2026-10-24T04:19:02.5590924Z 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-24T04:19:02.5590926Z
2026-10-24T04:19:02.5590980Z 68 generateBranchName: (input) =>
2026-10-24T04:19:02.5591021Z ~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5591023Z
2026-10-24T04:19:02.5591330Z 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-24T04:19:02.5591334Z
2026-10-24T04:19:02.5591387Z 72 generateReviewGuide: (input) =>
2026-10-24T04:19:02.5591429Z ~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5591431Z
2026-10-24T04:19:02.5591776Z 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-24T04:19:02.5591780Z
2026-10-24T04:19:02.5591831Z 76 generateThreadTitle: (input) =>
2026-10-24T04:19:02.5591874Z ~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5591876Z
2026-10-24T04:19:02.5592152Z src/usage/UsageService.ts:172:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("UsageService.readSummary")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5592154Z
2026-10-24T04:19:02.5592208Z 172 readSummary: (input) =>
2026-10-24T04:19:02.5592248Z ~~~~~~~~~~~
2026-10-24T04:19:02.5592250Z
2026-10-24T04:19:02.5592487Z src/usage/UsageService.ts:642:9 - suggestion TS377015: This expression contains chained `pipe` calls that can be simplified to a single `pipe` call. effect(unnecessaryPipeChain)
2026-10-24T04:19:02.5592489Z
2026-10-24T04:19:02.5592546Z 642 usageInstances(driver, settings)
2026-10-24T04:19:02.5592594Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5592634Z 643 .pipe(
2026-10-24T04:19:02.5592674Z ~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5592713Z ...
2026-10-24T04:19:02.5592779Z 664 Effect.provideContext(readerContext),
2026-10-24T04:19:02.5592872Z ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5592913Z 665 ),
2026-10-24T04:19:02.5592953Z ~~~~~~~~~~~
2026-10-24T04:19:02.5592955Z
2026-10-24T04:19:02.5593289Z src/vcs/GitVcsDriverCore.ts:4009:9 - suggestion TS377120: `Effect.filterOrElse` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail)
2026-10-24T04:19:02.5593334Z
2026-10-24T04:19:02.5593385Z 4009 Effect.flatMap((result) =>
2026-10-24T04:19:02.5593426Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5593428Z
2026-10-24T04:19:02.5593752Z src/vcs/GitVcsDriverCore.ts:4500:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.commit")((cwd, subject, body, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5593754Z
2026-10-24T04:19:02.5593814Z 4500 commit: (cwd, subject, body, options) =>
2026-10-24T04:19:02.5593856Z ~~~~~~
2026-10-24T04:19:02.5593858Z
2026-10-24T04:19:02.5594203Z src/vcs/GitVcsDriverCore.ts:4502:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.pushCurrentBranch")((cwd, fallbackBranch, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5594209Z
2026-10-24T04:19:02.5594288Z 4502 pushCurrentBranch: (cwd, fallbackBranch, options) =>
2026-10-24T04:19:02.5594331Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5594333Z
2026-10-24T04:19:02.5594644Z src/vcs/GitVcsDriverCore.ts:4504:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.pullCurrentBranch")((cwd) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5594647Z
2026-10-24T04:19:02.5594772Z 4504 pullCurrentBranch: (cwd) => withListRefsInvalidation(cwd, pullCurrentBranch(cwd)),
2026-10-24T04:19:02.5594813Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5594816Z
2026-10-24T04:19:02.5595138Z src/vcs/GitVcsDriverCore.ts:4511:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.createWorktree")((input, options) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5595142Z
2026-10-24T04:19:02.5595199Z 4511 createWorktree: (input, options) =>
2026-10-24T04:19:02.5595241Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5595243Z
2026-10-24T04:19:02.5595571Z src/vcs/GitVcsDriverCore.ts:4513:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchPullRequestBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5595573Z
2026-10-24T04:19:02.5595628Z 4513 fetchPullRequestBranch: (input) =>
2026-10-24T04:19:02.5595672Z ~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5595674Z
2026-10-24T04:19:02.5596002Z src/vcs/GitVcsDriverCore.ts:4517:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.refreshCheckedOutBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5596005Z
2026-10-24T04:19:02.5596062Z 4517 refreshCheckedOutBranch: (input) =>
2026-10-24T04:19:02.5596108Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5596110Z
2026-10-24T04:19:02.5596420Z src/vcs/GitVcsDriverCore.ts:4519:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.ensureRemote")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5596422Z
2026-10-24T04:19:02.5596542Z 4519 ensureRemote: (input) => withListRefsInvalidation(input.cwd, ensureRemote(input)),
2026-10-24T04:19:02.5596583Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5596585Z
2026-10-24T04:19:02.5596929Z src/vcs/GitVcsDriverCore.ts:4522:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchRemote")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5596932Z
2026-10-24T04:19:02.5596979Z 4522 fetchRemote: (input) =>
2026-10-24T04:19:02.5597017Z ~~~~~~~~~~~
2026-10-24T04:19:02.5597019Z
2026-10-24T04:19:02.5597394Z src/vcs/GitVcsDriverCore.ts:4537:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchWorktreeBaseCommit")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5597396Z
2026-10-24T04:19:02.5597452Z 4537 fetchWorktreeBaseCommit: (input) =>
2026-10-24T04:19:02.5597495Z ~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5597497Z
2026-10-24T04:19:02.5597811Z src/vcs/GitVcsDriverCore.ts:4539:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchRemoteBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5597813Z
2026-10-24T04:19:02.5597948Z 4539 fetchRemoteBranch: (input) => withListRefsInvalidation(input.cwd, fetchRemoteBranch(input)),
2026-10-24T04:19:02.5597991Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5597993Z
2026-10-24T04:19:02.5598324Z src/vcs/GitVcsDriverCore.ts:4540:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchRemoteTrackingBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5598327Z
2026-10-24T04:19:02.5598389Z 4540 fetchRemoteTrackingBranch: (input) =>
2026-10-24T04:19:02.5598434Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5598436Z
2026-10-24T04:19:02.5598749Z src/vcs/GitVcsDriverCore.ts:4542:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.setBranchUpstream")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5598751Z
2026-10-24T04:19:02.5598887Z 4542 setBranchUpstream: (input) => withListRefsInvalidation(input.cwd, setBranchUpstream(input)),
2026-10-24T04:19:02.5598934Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5598936Z
2026-10-24T04:19:02.5599243Z src/vcs/GitVcsDriverCore.ts:4543:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.removeWorktree")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5599247Z
2026-10-24T04:19:02.5599372Z 4543 removeWorktree: (input) => withListRefsInvalidation(input.cwd, removeWorktree(input)),
2026-10-24T04:19:02.5599412Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5599414Z
2026-10-24T04:19:02.5599722Z src/vcs/GitVcsDriverCore.ts:4544:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.pruneWorktrees")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5599724Z
2026-10-24T04:19:02.5599851Z 4544 pruneWorktrees: (input) => withListRefsInvalidation(input.cwd, pruneWorktrees(input)),
2026-10-24T04:19:02.5599891Z ~~~~~~~~~~~~~~
2026-10-24T04:19:02.5599894Z
2026-10-24T04:19:02.5600205Z src/vcs/GitVcsDriverCore.ts:4545:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.deleteLocalBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5600209Z
2026-10-24T04:19:02.5600339Z 4545 deleteLocalBranch: (input) => withListRefsInvalidation(input.cwd, deleteLocalBranch(input)),
2026-10-24T04:19:02.5600381Z ~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5600383Z
2026-10-24T04:19:02.5600688Z src/vcs/GitVcsDriverCore.ts:4546:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.renameBranch")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5600690Z
2026-10-24T04:19:02.5600808Z 4546 renameBranch: (input) => withListRefsInvalidation(input.cwd, renameBranch(input)),
2026-10-24T04:19:02.5600893Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5600896Z
2026-10-24T04:19:02.5601246Z src/vcs/GitVcsDriverCore.ts:4547:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.createRef")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5601301Z
2026-10-24T04:19:02.5601409Z 4547 createRef: (input) => withListRefsInvalidation(input.cwd, createRef(input)),
2026-10-24T04:19:02.5601450Z ~~~~~~~~~
2026-10-24T04:19:02.5601452Z
2026-10-24T04:19:02.5601775Z src/vcs/GitVcsDriverCore.ts:4548:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.switchRef")((input) => { ... })`. effect(effectFnOpportunity)
2026-10-24T04:19:02.5601778Z
2026-10-24T04:19:02.5601882Z 4548 switchRef: (input) => withListRefsInvalidation(input.cwd, switchRef(input)),
2026-10-24T04:19:02.5601920Z ~~~~~~~~~
2026-10-24T04:19:02.5601923Z
2026-10-24T04:19:02.5602301Z 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-24T04:19:02.5602304Z
2026-10-24T04:19:02.5602370Z 153 return serverSettings.getSettings.pipe(
2026-10-24T04:19:02.5602409Z ~~~~~~
2026-10-24T04:19:02.5602411Z
2026-10-24T04:19:02.5602709Z src/workspace/WorkspaceFileSystem.ts:171:15 - suggestion TS377095: `Effect.orElseSucceed` expresses the same recovery more directly than `Effect.catch` followed by `Effect.succeed`. effect(catchToOrElseSucceed)
2026-10-24T04:19:02.5602711Z
2026-10-24T04:19:02.5602789Z 171 }).pipe(Effect.catch(() => Effect.succeed(undefined)));
2026-10-24T04:19:02.5602832Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5602834Z
2026-10-24T04:19:02.5603105Z src/workspace/WorkspaceFileSystem.ts:171:34 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T04:19:02.5603107Z
2026-10-24T04:19:02.5603184Z 171 }).pipe(Effect.catch(() => Effect.succeed(undefined)));
2026-10-24T04:19:02.5603244Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5603248Z
2026-10-24T04:19:02.5603476Z src/ws.test.ts:401:47 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid)
2026-10-24T04:19:02.5603478Z
2026-10-24T04:19:02.5603575Z 401 resolveFileManagerRevealKind: () => Effect.succeed(undefined),
2026-10-24T04:19:02.5603638Z ~~~~~~~~~~~~~~~~~~~~~~~~~
2026-10-24T04:19:02.5603641Z
2026-10-24T04:19:02.5603913Z src/ws.ts:1384:23 - suggestion TS377118: `Effect.fromOption` expresses this Option-to-Effect conversion more directly than `Option.match` or an Option tag conditional. effect(optionMatchToFromOption)
2026-10-24T04:19:02.5603915Z
2026-10-24T04:19:02.5603976Z 1384 return yield* Option.match(project, {
2026-10-24T04:19:02.5604021Z ~~~~~~~~~~~~
2026-10-24T04:19:02.5604024Z
2026-10-24T04:19:02.5604319Z src/ws.ts:2319:24 - suggestion TS377019: This `yield* Effect.fail(...)` passes a yieldable error value. `yield*` represents that value directly without wrapping it in `Effect.fail`. effect(unnecessaryFailYieldableError)
2026-10-24T04:19:02.5604321Z
2026-10-24T04:19:02.5604376Z 2319 return yield* Effect.fail(
2026-10-24T04:19:02.5604421Z ~~~~~
2026-10-24T04:19:02.5604423Z
2026-10-24T04:19:02.5604709Z src/ws.ts:2328:24 - suggestion TS377019: This `yield* Effect.fail(...)` passes a yieldable error value. `yield*` represents that value directly without wrapping it in `Effect.fail`. effect(unnecessaryFailYieldableError)
2026-10-24T04:19:02.5604714Z
2026-10-24T04:19:02.5604817Z 2328 return yield* Effect.fail(
2026-10-24T04:19:02.5604862Z ~~~~~
2026-10-24T04:19:02.5604864Z
2026-10-24T04:19:02.5605150Z src/ws.ts:2336:24 - suggestion TS377019: This `yield* Effect.fail(...)` passes a yieldable error value. `yield*` represents that value directly without wrapping it in `Effect.fail`. effect(unnecessaryFailYieldableError)
2026-10-24T04:19:02.5605191Z
2026-10-24T04:19:02.5605250Z 2336 return yield* Effect.fail(
2026-10-24T04:19:02.5605292Z ~~~~~
2026-10-24T04:19:02.5605294Z
2026-10-24T04:19:02.5605297Z
2026-10-24T04:19:02.5605336Z ---
2026-10-24T04:19:02.5605605Z vp run: 0/32 cache hit (0%), 32/32 successful. @t3tools/oxlint-plugin-t3code#typecheck (and 1 more) not cached because they modified their inputs. (Run `vp run --last-details` for full details)
2026-10-24T04:19:02.6013529Z Post job cleanup.
2026-10-24T04:19:02.6637617Z Cache hit occurred on the primary key electron-Linux-X64-854e11ddd491bd4f350eebb67a74265df119376a3984c8e153cfe5fc8ced6309, not saving cache.
2026-10-24T04:19:02.6698657Z Post job cleanup.
2026-10-24T04:19:02.6711036Z ##[start-action display=Cache full pnpm store;id=__81539c51-0a55-4352-942c-0b2caba1bb3d.__actions_cache]
2026-10-24T04:19:02.7014019Z Post job cleanup.
2026-10-24T04:19:02.7616851Z Cache hit occurred on the primary key pnpm-full-v1-Linux-X64-3cb0b4d7cff93dc8fe33f2ea73cac71ca25a36270fcb648b9b4a9320151012ef, not saving cache.
2026-10-24T04:19:02.7649554Z ##[end-action id=__81539c51-0a55-4352-942c-0b2caba1bb3d.__actions_cache;outcome=success;conclusion=success;duration_ms=93]
2026-10-24T04:19:02.7651173Z ##[start-action display=Cache Vite+;id=__81539c51-0a55-4352-942c-0b2caba1bb3d.vp_cache]
2026-10-24T04:19:02.7670326Z Post job cleanup.
2026-10-24T04:19:02.8275797Z 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-24T04:19:02.8309443Z ##[end-action id=__81539c51-0a55-4352-942c-0b2caba1bb3d.vp_cache;outcome=success;conclusion=success;duration_ms=65]
2026-10-24T04:19:02.8352982Z Post job cleanup.
2026-10-24T04:19:02.8763633Z [command]/usr/local/bin/git version
2026-10-24T04:19:02.8792890Z git version 2.55.0
2026-10-24T04:19:02.8812571Z Temporarily overriding HOME='/home/runner/_work/_temp/1b3d1960-e5b3-45b0-ae13-1de3e1320513' before making global git config changes
2026-10-24T04:19:02.8813159Z Adding repository directory to the temporary git global config as a safe directory
2026-10-24T04:19:02.8816060Z [command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
2026-10-24T04:19:02.8838045Z Removing SSH command configuration
2026-10-24T04:19:02.8841425Z [command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-10-24T04:19:02.8864537Z [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-24T04:19:02.8978946Z fatal: No url found for submodule path '.repos/alchemy-effect/submodules/distilled' in .gitmodules
2026-10-24T04:19:02.9031856Z ##[warning]The process '/usr/local/bin/git' failed with exit code 128
2026-10-24T04:19:02.9066397Z A job completed hook has been configured by the self-hosted runner administrator
2026-10-24T04:19:02.9090975Z ##[group]Run '/job_completed.sh'
2026-10-24T04:19:02.9103026Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
2026-10-24T04:19:02.9103191Z env:
2026-10-24T04:19:02.9103310Z BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 164
2026-10-24T04:19:02.9103453Z BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 373
2026-10-24T04:19:02.9103589Z BLACKSMITH_CHECK_RUN_ID: 120776753667
2026-10-24T04:19:02.9103740Z BLACKSMITH_JOB_DISPLAY_NAME: Build and Typecheck
2026-10-24T04:19:02.9103896Z GITHUB_ACTIONS_CACHE_MODE: write
2026-10-24T04:19:02.9104025Z ##[endgroup]
2026-10-24T04:19:02.9176112Z Docker container cache not activated, skipping hash computation.
2026-10-24T04:19:02.9416867Z No active SSH sessions detected. Proceeding with shutdown immediately.
2026-10-24T04:19:02.9460990Z Cleaning up orphan processes