$ node scripts/check-changed.ts ⊘ cache disabled check:changed: 4 files since ee33c4c65dfd > vp format Checking formatting... All matched files use the correct format. Finished in 362ms on 4 files using 4 threads. > vp lint apps/server/src/pullRequest/PullRequestService.test.ts:1429:12: warning eslint(no-empty-pattern): Empty array binding pattern help: Passing non-iterable values (null, undefined, numbers, booleans, etc.) will result in a runtime error because these values are not iterable. > vp knip $ knip --include files,dependencies --no-config-hints ⊘ cache disabled $ knip --workspace apps/server --workspace apps/desktop --workspace apps/web --workspace packages/client-runtime --workspace packages/contracts --workspace packages/effect-acp --workspace packages/effect-codex-app-server --workspace packages/shared --workspace packages/ssh --workspace packages/tailscale --workspace packages/provider-core --workspace packages/provider-acp --workspace packages/provider-acp-registry --workspace packages/provider-testing --workspace packages/provider-pi --workspace packages/provider-muse --workspace packages/provider-opencode --workspace packages/provider-cursor --workspace packages/provider-grok --workspace packages/source-control-core --workspace packages/source-control-azure-devops --workspace packages/source-control-bitbucket --workspace packages/source-control-forgejo --workspace packages/source-control-gitcafe --workspace packages/source-control-github --workspace packages/source-control-gitlab --workspace packages/source-control-testing --exports --preprocessor ./scripts/knip-schemas.ts --no-config-hints ⊘ cache disabled --- vp run: 2/2 successful. (Run `vp run --last-details` for full details) > vp graphql (apps/server) ~/apps/server$ graphqlgen --check ⊘ cache disabled > vp typecheck (9 packages) ~/scripts$ tsc --noEmit ~/packages/provider-pi$ tsc --noEmit ~/packages/source-control-forgejo$ tsc --noEmit 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) 440 getCapabilities: () => Effect.succeed(PiProviderCapabilitiesV2), ~~~~~~~~~~~~~~~ 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) 441 planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()), ~~~~~~~~~~~~~~~~~~~~~~~ src/server/adapter.ts:1682:31 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome) 1682 Effect.map(Option.some), ~~~~~~~~~~ src/server/adapter.ts:1685:29 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 1685 : Effect.succeed(Option.none()), ~~~~~~~~~~~~~~ src/server/rpc.ts:334:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("onSuccess")(function*() { ... })`. effect(effectFnOpportunity) 334 onSuccess: () => ~~~~~~~~~ src/server/rpc.ts:342:17 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome) 342 Effect.map(Option.some), ~~~~~~~~~~ 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) 340 getChangeRequest: (input) => ~~~~~~~~~~~~~~~~ ~/packages/client-runtime$ tsc --noEmit src/authorization/remote.test.ts:232:25 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 232 identity: Effect.succeed(Option.some({ accountId: "user_connect" })), ~~~~~~~~~~~~~~ src/authorization/remote.test.ts:237:17 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 237 id: Effect.succeed(Option.some("device-1")), ~~~~~~~~~~~~~~ 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) 553 authorizeDpop: (input) => ~~~~~~~~~~~~~ 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) 555 authorizeDpopHttp: (input) => ~~~~~~~~~~~~~~~~~ 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) 138 get: (entry) => ~~~ 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) 143 set: (entry, permission) => { ~~~ 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) 159 forget: (environmentId) => ~~~~~~ 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) 298 registerPairing: (input) => ~~~~~~~~~~~~~~~ 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) 304 registerSsh: (input) => ~~~~~~~~~~~ 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) 309 updateBearer: (input) => ~~~~~~~~~~~~ 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) 1392 ? Effect.succeed(undefined) ~~~~~~~~~~~~~~~~~~~~~~~~~ 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) 1476 ? Effect.succeed(undefined) ~~~~~~~~~~~~~~~~~~~~~~~~~ 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) 1489 : Effect.succeed(undefined), ~~~~~~~~~~~~~~~~~~~~~~~~~ src/platform/orchestrationCache.test.ts:104:15 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome) 104 }).pipe(Effect.map(Option.some)); ~~~~~~~~~~ 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) 72 load: (prepared: PreparedConnection, threadId: ThreadId) => { ~~~~ 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) 56 Effect.catch(() => Effect.succeed(Option.none())), ~~~~~~~~~~~~ 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) 62 return yield* Effect.fail( ~~~~~ 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) 57 execute: (target: OutdatedServerUpdateTarget, atomRegistry) => { ~~~~~~~ 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) 90 load: (prepared, input) => ~~~~ 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) 34 return yield* Schema.decodeUnknownEffect(codec)(stored.value).pipe( ~~~~~~~~~~~~~~~~~~~ src/state/queryPersistence.ts:35:9 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome) 35 Effect.map(Option.some), ~~~~~~~~~~ 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) 680 execute: (target, atomRegistry) => { ~~~~~~~ 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) 1125 Effect.flatMap((summary) => ~~~~~~~~~~~~~~ src/state/shell-sync.test.ts:90:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 90 loadShell: () => Effect.succeed(Option.none()), ~~~~~~~~~~~~~~ src/state/shell-sync.test.ts:96:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 96 loadThread: () => Effect.succeed(Option.none()), ~~~~~~~~~~~~~~ src/state/shell-sync.test.ts:99:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 99 loadServerConfig: () => Effect.succeed(Option.none()), ~~~~~~~~~~~~~~ src/state/shell-sync.test.ts:101:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 101 loadVcsRefs: () => Effect.succeed(Option.none()), ~~~~~~~~~~~~~~ src/state/shell-sync.test.ts:108:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 108 load: () => Effect.succeed(Option.none()), ~~~~~~~~~~~~~~ src/state/shell-sync.test.ts:229:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 229 loadShell: () => Effect.succeed(Option.none()), ~~~~~~~~~~~~~~ src/state/shell-sync.test.ts:238:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 238 loadThread: () => Effect.succeed(Option.none()), ~~~~~~~~~~~~~~ src/state/shell-sync.test.ts:241:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 241 loadServerConfig: () => Effect.succeed(Option.none()), ~~~~~~~~~~~~~~ src/state/shell-sync.test.ts:243:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 243 loadVcsRefs: () => Effect.succeed(Option.none()), ~~~~~~~~~~~~~~ src/state/shell-sync.test.ts:250:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 250 load: () => Effect.succeed(Option.none()), ~~~~~~~~~~~~~~ src/state/shell-sync.test.ts:349:26 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 349 loadShell: () => Effect.succeed(Option.none()), ~~~~~~~~~~~~~~ src/state/shell-sync.test.ts:355:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 355 loadThread: () => Effect.succeed(Option.none()), ~~~~~~~~~~~~~~ src/state/shell-sync.test.ts:358:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 358 loadServerConfig: () => Effect.succeed(Option.none()), ~~~~~~~~~~~~~~ src/state/shell-sync.test.ts:360:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 360 loadVcsRefs: () => Effect.succeed(Option.none()), ~~~~~~~~~~~~~~ src/state/shell-sync.test.ts:367:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 367 load: () => Effect.succeed(Option.none()), ~~~~~~~~~~~~~~ src/state/shell-sync.test.ts:446:26 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 446 loadShell: () => Effect.succeed(Option.some(cachedSnapshot)), ~~~~~~~~~~~~~~ src/state/shell-sync.test.ts:448:27 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 448 loadThread: () => Effect.succeed(Option.none()), ~~~~~~~~~~~~~~ src/state/shell-sync.test.ts:451:33 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 451 loadServerConfig: () => Effect.succeed(Option.none()), ~~~~~~~~~~~~~~ src/state/shell-sync.test.ts:453:28 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 453 loadVcsRefs: () => Effect.succeed(Option.none()), ~~~~~~~~~~~~~~ src/state/shell-sync.test.ts:460:21 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 460 load: () => Effect.succeed(Option.some(httpSnapshot)), ~~~~~~~~~~~~~~ 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) 98 load: (prepared: PreparedConnection) => ~~~~ src/state/threadHistoryController.ts:47:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadHistoryController.register")((environmentId, threadId, handler) => { ... })`. effect(effectFnOpportunity) 47 register: (environmentId, threadId, handler) => ~~~~~~~~ src/state/threadHistoryController.ts:59:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadHistoryController.unregister")((registration) => { ... })`. effect(effectFnOpportunity) 59 unregister: (registration) => ~~~~~~~~~~ src/state/threadHistoryController.ts:74:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadHistoryController.loadEarlier")((environmentId, threadId, throughEntryId) => { ... })`. effect(effectFnOpportunity) 74 loadEarlier: (environmentId, threadId, throughEntryId) => ~~~~~~~~~~~ src/state/threads-sync.test.ts:1006:29 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 1006 : { loadCached: Effect.succeed(Option.some(saved!)) }, ~~~~~~~~~~~~~~ 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) 447 execute: (input: RunVcsStackedActionInput, registry) => { ~~~~~~~ ~/apps/mobile$ tsc --noEmit ~/infra/relay$ tsc --noEmit ~/apps/web$ tsc --noEmit ~/apps/desktop$ tsc --noEmit 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) 389 complete: (response) => Effect.sync(() => broker.complete(response)), ~~~~~~~~ src/app/DesktopClerk.test.ts:300:27 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 300 currentMainOrFirst: Effect.succeed(Option.some(window)), ~~~~~~~~~~~~~~ src/app/DesktopObservability.ts:459:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("onSome")(function*(logFile) { ... })`. effect(effectFnOpportunity) 459 onSome: (logFile) => ~~~~~~ src/app/DesktopObservability.ts:589:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBackendOutputLogFactory.forInstance")((id) => { ... })`. effect(effectFnOpportunity) 589 forInstance: (id) => makeForId(id), ~~~~~~~~~~~ src/app/DesktopWebLinks.test.ts:29:31 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 29 currentMainOrFirst: Effect.succeed(Option.some(window)), ~~~~~~~~~~~~~~ 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) 72 receive: (url) => ~~~~~~~ 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) 77 setRendererReady: (ready) => ~~~~~~~~~~~~~~~~ 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) 1062 onSome: (run) => ~~~~~~ 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) 307 get: (id) => ~~~ 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) 342 get: (id) => Effect.succeed(Option.fromNullishOr(byId.get(id))), ~~~ src/backend/DesktopBackendPool.ts:345:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBackendPool.register")(() => { ... })`. effect(effectFnOpportunity) 345 register: () => Effect.die("DesktopBackendPool.layerTest does not support register"), ~~~~~~~~ src/backend/DesktopBackendPool.ts:346:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBackendPool.unregister")(() => { ... })`. effect(effectFnOpportunity) 346 unregister: () => Effect.die("DesktopBackendPool.layerTest does not support unregister"), ~~~~~~~~~~ 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) 145 exit: (code) => ~~~~ 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) 149 relaunch: (options) => ~~~~~~~~ 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) 153 setPath: (name, path) => ~~~~~~~ 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) 157 setName: (name) => ~~~~~~~ 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) 161 setAboutPanelOptions: (options) => ~~~~~~~~~~~~~~~~~~~~ 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) 165 setAppUserModelId: (id) => ~~~~~~~~~~~~~~~~~ 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) 170 setAsDefaultProtocolClient: (protocol, path, args) => ~~~~~~~~~~~~~~~~~~~~~~~~~~ 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) 177 setDesktopName: (desktopName) => ~~~~~~~~~~~~~~ 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) 184 setDockIcon: (iconPath) => ~~~~~~~~~~~ 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) 188 appendCommandLineSwitch: (switchName, value) => ~~~~~~~~~~~~~~~~~~~~~~~ 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) 196 onBeforeQuitForUpdate: (listener) => ~~~~~~~~~~~~~~~~~~~~~ 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) 206 removeCommandLineSwitch: (switchName) => ~~~~~~~~~~~~~~~~~~~~~~~ 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) 169 showMessageBox: (options, owner) => ~~~~~~~~~~~~~~ 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) 185 showErrorBox: (title, content) => ~~~~~~~~~~~~ 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) 193 setApplicationMenu: (template) => ~~~~~~~~~~~~~~~~~~ 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) 207 popupTemplate: (input) => ~~~~~~~~~~~~~ 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) 225 showContextMenu: (input) => ~~~~~~~~~~~~~~~ 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) 82 getSystemIdleState: (idleThresholdSeconds) => ~~~~~~~~~~~~~~~~~~ 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) 77 encryptString: (value) => ~~~~~~~~~~~~~ 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) 82 decryptString: (value) => ~~~~~~~~~~~~~ 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) 68 openExternal: (rawUrl) => ~~~~~~~~~~~~ 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) 79 openSystemSettings: (pane) => ~~~~~~~~~~~~~~~~~~ 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) 86 copyText: (text) => ~~~~~~~~ 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) 34 setSource: (theme) => ~~~~~~~~~ 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) 41 onUpdated: (listener) => ~~~~~~~~~ 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) 85 setFeedURL: (options) => ~~~~~~~~~~ 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) 90 setAutoDownload: (value) => ~~~~~~~~~~~~~~~ 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) 95 setAutoInstallOnAppQuit: (value) => ~~~~~~~~~~~~~~~~~~~~~~~ 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) 100 setChannel: (channel) => ~~~~~~~~~~ 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) 105 setAllowPrerelease: (value) => ~~~~~~~~~~~~~~~~~~ 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) 111 setAllowDowngrade: (value) => ~~~~~~~~~~~~~~~~~ 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) 116 setFullChangelog: (value) => ~~~~~~~~~~~~~~~~ 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) 121 setDisableDifferentialDownload: (value) => ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/electron/ElectronUpdater.ts:140:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ElectronUpdater.quitAndInstall")((_) => { ... })`. effect(effectFnOpportunity) 140 quitAndInstall: ({ isSilent, isForceRunAfter }) => ~~~~~~~~~~~~~~ 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) 154 on: (eventName, listener) => { ~~ 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) 211 create: (options) => { ~~~~~~ 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) 243 setMain: (window) => Ref.set(mainWindowRef, Option.some(window)), ~~~~~~~ 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) 244 clearMain: (window) => ~~~~~~~~~ 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) 254 prepareReveal: (window) => ~~~~~~~~~~~~~ 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) 264 reveal: (window) => ~~~~~~ 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) 526 setMainWindowBounds: (bounds, isMaximized) => ~~~~~~~~~~~~~~~~~~~ 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) 538 setServerExposureMode: (mode) => ~~~~~~~~~~~~~~~~~~~~~ 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) 542 setTailscaleServe: (input) => ~~~~~~~~~~~~~~~~~ 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) 546 setUpdateChannel: (channel) => ~~~~~~~~~~~~~~~~ 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) 550 setWslBackendEnabled: (enabled) => ~~~~~~~~~~~~~~~~~~~~ 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) 554 setWslDistro: (distro) => ~~~~~~~~~~~~ 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) 560 setWslOnly: (enabled) => ~~~~~~~~~~ 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) 564 setLocalEnvironmentEnabled: (enabled) => ~~~~~~~~~~~~~~~~~~~~~~~~~~ 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) 599 setMainWindowBounds: (bounds, isMaximized) => ~~~~~~~~~~~~~~~~~~~ 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) 601 setServerExposureMode: (mode) => ~~~~~~~~~~~~~~~~~~~~~ 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) 603 setTailscaleServe: (input) => update((settings) => setTailscaleServe(settings, input)), ~~~~~~~~~~~~~~~~~ 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) 604 setUpdateChannel: (channel) => update((settings) => setUpdateChannel(settings, channel)), ~~~~~~~~~~~~~~~~ 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) 605 setWslBackendEnabled: (enabled) => ~~~~~~~~~~~~~~~~~~~~ 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) 607 setWslDistro: (distro) => update((settings) => setWslDistro(settings, distro)), ~~~~~~~~~~~~ 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) 608 setWslOnly: (enabled) => update((settings) => setWslOnly(settings, enabled)), ~~~~~~~~~~ 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) 609 setLocalEnvironmentEnabled: (enabled) => ~~~~~~~~~~~~~~~~~~~~~~~~~~ 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) 197 set: (settings) => ~~~ 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) 231 set: (settings) => Ref.set(settingsRef, Option.some(settings)), ~~~ 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) 1729 setAnimationDestination: (id, destination) => ~~~~~~~~~~~~~~~~~~~~~~~ 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) 1740 dismissAnimation: (id) => ~~~~~~~~~~~~~~~~ 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) 1745 acknowledge: (id) => ~~~~~~~~~~~ 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) 136 discoverHosts: (input) => ~~~~~~~~~~~~~ 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) 141 resolveHost: (alias) => ~~~~~~~~~~~ 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) 146 ensureEnvironment: (target, ensureOptions) => ~~~~~~~~~~~~~~~~~ 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) 154 disconnectEnvironment: (target) => ~~~~~~~~~~~~~~~~~~~~~ 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) 1171 installPrepared: (expectedVersion) => installWithExpectedVersion(expectedVersion), ~~~~~~~~~~~~~~~ src/wsl/DesktopWslEnvironment.ts:1101:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopWslEnvironment.preWarm")(() => { ... })`. effect(effectFnOpportunity) 1101 preWarm: () => Effect.void, ~~~~~~~ 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) 1102 windowsToWslPath: (distro, windowsPath) => ~~~~~~~~~~~~~~~~ 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) 1104 getUserHome: (distro) => Effect.succeed(stub.getUserHome?.(distro) ?? Option.none()), ~~~~~~~~~~~ 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) 1105 getDistroIp: (distro) => Effect.succeed(stub.getDistroIp?.(distro) ?? Option.none()), ~~~~~~~~~~~ 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) 1106 prepareRuntime: (distro, archive) => ~~~~~~~~~~~~~~ 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) 1113 pruneRuntimes: (distro, runtimeId) => stub.pruneRuntimes?.(distro, runtimeId) ?? Effect.void, ~~~~~~~~~~~~~ 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) 1114 invalidateRuntime: (distro, runtimeId) => ~~~~~~~~~~~~~~~~~ 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) 1116 probeRuntime: (distro, linuxAppRoot) => ~~~~~~~~~~~~ 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) 1120 ensureNodePty: (distro, linuxAppRoot, options) => ~~~~~~~~~~~~~ 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) 1187 preWarm: (distro) => ~~~~~~~ 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) 1192 prepareRuntime: (distro, archive) => ~~~~~~~~~~~~~~ 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) 1196 pruneRuntimes: (distro, runtimeId) => ~~~~~~~~~~~~~ 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) 1200 invalidateRuntime: (distro, runtimeId) => ~~~~~~~~~~~~~~~~~ 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) 1204 probeRuntime: (distro, linuxAppRoot) => ~~~~~~~~~~~~ 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) 1208 ensureNodePty: (distro, linuxAppRoot, options) => ~~~~~~~~~~~~~ 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) 220 send: (body) => ~~~~ 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) 12 onFailure: (error) => ~~~~~~~~~ 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) 64 pauseUntil: (untilMillis) => ~~~~~~~~~~ src/http/Api.ts:198:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("onNone")(function*() { ... })`. effect(effectFnOpportunity) 198 onNone: () => ~~~~~~ src/worker.ts:92:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("HttpPlatform.HttpPlatform.fileResponse")(() => { ... })`. effect(effectFnOpportunity) 92 fileResponse: () => Effect.die("Relay API does not serve filesystem responses"), ~~~~~~~~~~~~ src/worker.ts:93:3 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("HttpPlatform.HttpPlatform.fileWebResponse")(() => { ... })`. effect(effectFnOpportunity) 93 fileWebResponse: () => Effect.die("Relay API does not serve file responses"), ~~~~~~~~~~~~~~~ src/worker.ts:242:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("HookInbox.HookInbox.hold")((_) => { ... })`. effect(effectFnOpportunity) 242 hold: ({ endpointKey, baseUrl, hook }) => ~~~~ src/worker.ts:244:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("HookInbox.HookInbox.wake")((_) => { ... })`. effect(effectFnOpportunity) 244 wake: ({ endpointKey, baseUrl }) => ~~~~ src/worker.ts:246:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("HookInbox.HookInbox.clear")((_) => { ... })`. effect(effectFnOpportunity) 246 clear: ({ endpointKey }) => ~~~~~ 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) 275 send: (body) => ~~~~ src/connection/platform.ts:805:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("Persistence.EnvironmentOwnedDataCleanup.clear")((environmentId) => { ... })`. effect(effectFnOpportunity) 805 clear: (environmentId) => ~~~~~ src/connection/platform.ts:815:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("EnvironmentRpcRequestObserver.observe")((_) => { ... })`. effect(effectFnOpportunity) 815 observe: ({ environmentId, environmentLabel, method }) => ~~~~~~~ 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) 549 get: (entry) => ~~~ 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) 576 set: (entry, permission) => { ~~~ 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) 596 forget: (environmentId) => write(environmentId, null), ~~~~~~ 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) 643 register: (registration, routes) => ~~~~~~~~ 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) 647 setRoutes: (environmentId, routes) => ~~~~~~~~~ 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) 651 remove: (environmentId) => ~~~~~~ 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) 655 setEnabled: (environmentId, enabled) => ~~~~~~~~~~ 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) 732 loadShell: (environmentId) => ~~~~~~~~~ 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) 768 loadServerConfig: (environmentId) => ~~~~~~~~~~~~~~~~ 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) 802 loadThread: (environmentId, threadId) => ~~~~~~~~~~ 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) 851 loadVcsRefs: (environmentId, cwd) => ~~~~~~~~~~~ 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) 893 removeVcsRefs: (environmentId, cwd) => ~~~~~~~~~~~~~ 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) 899 clearVcsRefs: (environmentId) => ~~~~~~~~~~~~ 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) 905 removeThread: (environmentId, threadId) => ~~~~~~~~~~~~ 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) 911 clear: (environmentId) => ~~~~~ ~/apps/server$ tsc --noEmit 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) 941 yield* Effect.sleep("1200 millis") ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 942 .pipe( ~~~~~~~~~~~~~~~~ ... 954 ) ~~~~~~~~~~~ 955 .pipe(Effect.forkDetach); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 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) 1175 logger: (event) => { ~~~~~~ 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) 376 const DEFAULT_GROK_SETTINGS = Schema.decodeUnknownSync(GrokSettings)({}); ~~~~~~~~~~~~~~~~~ src/auth/EnvironmentAuth.ts:1346:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("EnvironmentAuth.getDescriptor")(() => { ... })`. effect(effectFnOpportunity) 1346 getDescriptor: () => ~~~~~~~~~~~~~ src/auth/EnvironmentAuthPolicy.ts:55:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("EnvironmentAuthPolicy.getDescriptor")(() => { ... })`. effect(effectFnOpportunity) 55 getDescriptor: () => ~~~~~~~~~~~~~ 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) 540 authenticate: (request) => ~~~~~~~~~~~~ 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) 468 : Effect.succeed(undefined), ~~~~~~~~~~~~~~~~~~~~~~~~~ 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) 328 HttpClientError: (cause) => ~~~~~~~~~~~~~~~ src/cloud/CloudLink.lifecycle.test.ts:166:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 166 latest: Effect.succeed(Option.none()), ~~~~~~~~~~~~~~ src/cloud/CloudLink.test.ts:99:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 99 latest: Effect.succeed(Option.none()), ~~~~~~~~~~~~~~ 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) 791 requestRecovery: (config) => Queue.offer(recoveryRequests, config).pipe(Effect.asVoid), ~~~~~~~~~~~~~~~ src/cloud/http.test.ts:81:67 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 81 Layer.mock(ConnectReachability.ConnectReachability)({ latest: Effect.succeed(Option.none()) }), ~~~~~~~~~~~~~~ src/cloud/selfUpdate.ts:351:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ServerSelfUpdate.commitDesktopUpdate")((requestId, onHandoffAccepted) => { ... })`. effect(effectFnOpportunity) 351 commitDesktopUpdate: (requestId, onHandoffAccepted) => ~~~~~~~~~~~~~~~~~~~ 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) 808 updateTool: (tool) => ~~~~~~~~~~ src/device/DeviceService.ts:823:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DeviceService.easAccount")(() => { ... })`. effect(effectFnOpportunity) 823 easAccount: () => ~~~~~~~~~~ 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) 868 ensureAgentReady: (onPhase) => ~~~~~~~~~~~~~~~~ src/device/easProjectId.ts:201:7 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome) 201 Effect.map(Option.some), ~~~~~~~~~~ src/environment/DirectEndpoints.ts:141:31 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DirectEndpoints.resolve")(() => { ... })`. effect(effectFnOpportunity) 141 return DirectEndpoints.of({ resolve: () => resolve }); ~~~~~~~ src/environment/RemoteOpenTargets.ts:83:33 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("RemoteOpenTargets.resolveTargets")(() => { ... })`. effect(effectFnOpportunity) 83 return RemoteOpenTargets.of({ resolveTargets: () => resolveTargets }); ~~~~~~~~~~~~~~ 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) 302 isRepository: (cwd) => ~~~~~~~~~~~~ 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) 315 hasCommit: (input) => ~~~~~~~~~ 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) 327 hasRefNamed: (input) => ~~~~~~~~~~~ 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) 346 status: (input) => ~~~~~~ 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) 352 localStatus: (input) => ~~~~~~~~~~~ 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) 360 remoteStatus: (input, options) => ~~~~~~~~~~~~ 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) 369 pullCurrentBranch: (cwd) => ~~~~~~~~~~~~~~~~~ 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) 373 runStackedAction: (input, options) => ~~~~~~~~~~~~~~~~ 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) 388 preparePullRequestThread: (input) => ~~~~~~~~~~~~~~~~~~~~~~~~ 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) 399 listRefs: (input) => ~~~~~~~~ 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) 405 createWorktree: (input, options) => ~~~~~~~~~~~~~~ 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) 409 listLocalBranchNames: (cwd) => ~~~~~~~~~~~~~~~~~~~~ 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) 413 fetchRemote: (input) => ~~~~~~~~~~~ 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) 417 remoteExists: (input) => ~~~~~~~~~~~~ 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) 421 remoteBranchExists: (input) => ~~~~~~~~~~~~~~~~~~ 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) 425 resolveRemoteTrackingCommit: (input) => ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 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) 429 resolveWorktreeBaseRemote: (input) => ~~~~~~~~~~~~~~~~~~~~~~~~~ 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) 433 fetchWorktreeBaseCommit: (input) => ~~~~~~~~~~~~~~~~~~~~~~~ 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) 437 removeWorktree: (input) => ~~~~~~~~~~~~~~ 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) 441 pruneWorktrees: (input) => ~~~~~~~~~~~~~~ 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) 445 deleteLocalBranch: (input) => ~~~~~~~~~~~~~~~~~ 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) 449 createRef: (input) => ~~~~~~~~~ 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) 457 switchRef: (input) => ~~~~~~~~~ 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) 463 renameBranch: (input) => ~~~~~~~~~~~~ src/htmlRender/headlessChrome.ts:281:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("receive")((raw) => { ... })`. effect(effectFnOpportunity) 281 const receive = (raw: string) => { ~~~~~~~ src/mcp/AcpMcpStdioBridge.ts:282: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) 282 try { ~~~~~ 283 parsed = JSON.parse(line); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ... 285 return yield* respondWithError(null, "Parse error", -32700); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 286 } ~~~~~~~ src/mcp/AcpMcpStdioBridge.ts:322:7 - suggestion TS377099: `Effect.ignoreCause` expresses ignored failure more directly than `Effect.catchCause` returning `Effect.void`. effect(catchToIgnore) 322 Effect.catchCause(() => Effect.void), ~~~~~~~~~~~~~~~~~ src/mcp/McpDeviceToolkit.test.ts:105:18 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 105 getById: () => Effect.succeed(Option.none()), ~~~~~~~~~~~~~~ src/mcp/McpHttpServer.ts:421:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("previewSnapshotFailure")((cause) => { ... })`. effect(effectFnOpportunity) 421 const previewSnapshotFailure = (cause: Cause.Cause) => { ~~~~~~~~~~~~~~~~~~~~~~ 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) 933 addTool: (options) => ~~~~~~~ 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) 22 resolve: () => Effect.succeed(undefined), ~~~~~~~~~~~~~~~~~~~~~~~~~ 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) 112 Effect.flatMap(() => writingCaller), ~~~~~~~~~~~~~~ src/mcp/OrchestratorMcpService.ts:2459:39 - suggestion TS377088: This generator applies the same inline `Effect.mapError(...)` to every yielded effect. Keep that `Effect.mapError(...)` inline and hoist it once to the generator result: `Effect.gen(...).pipe(Effect.mapError(...))`, or `Effect.fn(function*(){ ... }, Effect.mapError(...))`. effect(redundantMapError) 2459 const cancelOrphan = Effect.gen(function* () { ~~~~~~~~~ src/mcp/OrchestratorMcpService.ts:2474:17 - This repeated `Effect.mapError(...)` site participates in the hoistable generator-wide mapping. effect(redundantMapError) 2474 .pipe(Effect.mapError(threadManagementFailure)); ~~~~~~~~~~~~~~~ src/mcp/OrchestratorMcpService.ts:2477:17 - This repeated `Effect.mapError(...)` site participates in the hoistable generator-wide mapping. effect(redundantMapError) 2477 .pipe(Effect.mapError(threadManagementFailure)); ~~~~~~~~~~~~~~~ src/mcp/PreviewAutomationBroker.ts:651:9 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("onNone")(function*() { ... })`. effect(effectFnOpportunity) 651 onNone: () => ~~~~~~ src/mcp/WorktreeMcpService.test.ts:355:3 - suggestion TS377017: This Effect.gen contains a single return statement. effect(unnecessaryEffectGen) 355 Effect.gen(function* () { ~~~~~~~~~~~~~~~~~~~~~~~~~ 356 return yield* WorktreeMcpService.WorktreeMcpService; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 357 }).pipe(Effect.provide(harness.layer)); ~~~~ 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) 222 const thread = yield* engine ~~~~~~ 223 .getThreadShell(threadId) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 224 .pipe(Effect.map(Option.fromNullishOr)) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 225 .pipe(Effect.mapError((cause) => new Failure({ cause }))); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/mcpApps/McpAppModelContext.ts:95:27 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("McpAppModelContext.set")(() => { ... })`. effect(effectFnOpportunity) 95 McpAppModelContext.of({ set: () => Effect.void, forThread: () => Effect.succeed([]) }), ~~~ src/mcpApps/McpAppModelContext.ts:95:51 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("McpAppModelContext.forThread")(() => { ... })`. effect(effectFnOpportunity) 95 McpAppModelContext.of({ set: () => Effect.void, forThread: () => Effect.succeed([]) }), ~~~~~~~~~ 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) 16 record: (records) => ~~~~~~ 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) 41 defaultValue: () => ({ latestNoticeableStall: Effect.succeed(undefined) }), ~~~~~~~~~~~~~~~~~~~~~~~~~ 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) 30 const REPLAY_SETTINGS = Schema.decodeUnknownSync(AcpRegistrySettings)({ ~~~~~~~~~~~~~~~~~ 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) 48 defaultModel: Effect.succeed(undefined), ~~~~~~~~~~~~~~~~~~~~~~~~~ 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) 169 defaultModel: Effect.succeed(undefined), ~~~~~~~~~~~~~~~~~~~~~~~~~ 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) 306 defaultModel: Effect.succeed(undefined), ~~~~~~~~~~~~~~~~~~~~~~~~~ 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) 542 defaultModel: Effect.succeed(undefined), ~~~~~~~~~~~~~~~~~~~~~~~~~ src/orchestration-v2/Adapters/ClaudeAdapterV2.test.ts:971:26 - suggestion TS377111: `AbortController` is manually constructed inside Effect code. Use `Effect.abortSignal` for Effect-managed cancellation. effect(abortControllerInEffect) 971 const controller = new AbortController(); ~~~~~~~~~~~~~~~~~~~~~ src/orchestration-v2/Adapters/ClaudeAdapterV2.test.ts:1323:37 - suggestion TS377015: This expression contains chained `pipe` calls that can be simplified to a single `pipe` call. effect(unnecessaryPipeChain) 1323 const requestEvent = yield* runtime.events ~~~~~~~~~~~~~~ 1324 .pipe( ~~~~~~~~~~~~~~~~ ... 1327 ) ~~~~~~~~~~~ 1328 .pipe(Effect.forkScoped); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/orchestration-v2/Adapters/ClaudeAdapterV2.test.ts:1329:28 - suggestion TS377111: `AbortController` is manually constructed inside Effect code. Use `Effect.abortSignal` for Effect-managed cancellation. effect(abortControllerInEffect) 1329 const controller = new AbortController(); ~~~~~~~~~~~~~~~~~~~~~ src/orchestration-v2/Adapters/ClaudeAdapterV2.test.ts:1352:37 - suggestion TS377111: `AbortController` is manually constructed inside Effect code. Use `Effect.abortSignal` for Effect-managed cancellation. effect(abortControllerInEffect) 1352 const cancelledController = new AbortController(); ~~~~~~~~~~~~~~~~~~~~~ src/orchestration-v2/Adapters/ClaudeAdapterV2.ts:3984:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.getCapabilities")(() => { ... })`. effect(effectFnOpportunity) 3984 getCapabilities: () => Effect.succeed(ClaudeProviderCapabilitiesV2), ~~~~~~~~~~~~~~~ src/orchestration-v2/Adapters/ClaudeAdapterV2.ts:3985:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.planSelectionTransition")(() => { ... })`. effect(effectFnOpportunity) 3985 planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()), ~~~~~~~~~~~~~~~~~~~~~~~ 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) 74 const pause = Effect.raceFirst( ~~~~~~~~~~~~~~~~ src/orchestration-v2/Adapters/CodexAdapterV2.ts:1729:25 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid) 1729 threadId === null ? Effect.succeed(undefined) : mcpSessions.read(threadId); ~~~~~~~~~~~~~~~~~~~~~~~~~ src/orchestration-v2/Adapters/CodexAdapterV2.ts:1736:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.getCapabilities")(() => { ... })`. effect(effectFnOpportunity) 1736 getCapabilities: () => Effect.succeed(CodexProviderCapabilitiesV2), ~~~~~~~~~~~~~~~ src/orchestration-v2/Adapters/CodexAdapterV2.ts:1737:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProviderAdapter.ProviderAdapterV2.planSelectionTransition")(() => { ... })`. effect(effectFnOpportunity) 1737 planSelectionTransition: () => Effect.succeed(turnScopedSelectionTransition()), ~~~~~~~~~~~~~~~~~~~~~~~ src/orchestration-v2/Adapters/CodexAdapterV2.ts:3033:19 - suggestion TS377095: `Effect.orElseSucceed` expresses the same recovery more directly than `Effect.catch` followed by `Effect.succeed`. effect(catchToOrElseSucceed) 3033 Effect.catch(() => Effect.succeed(null)), ~~~~~~~~~~~~ src/orchestration-v2/Adapters/CodexAdapterV2.ts:3034:19 - suggestion TS377120: `Effect.filterOrElse` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail) 3034 Effect.flatMap((response) => ~~~~~~~~~~~~~~ src/orchestration-v2/Adapters/CodexAdapterV2.ts:3056:19 - suggestion TS377099: `Effect.ignore` expresses ignored failure more directly than `Effect.catch` returning `Effect.void`. effect(catchToIgnore) 3056 Effect.catch(() => Effect.void), ~~~~~~~~~~~~ src/orchestration-v2/Adapters/CodexAdapterV2.ts:7221: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) 7221 return yield* Effect.fail(failedTermination.error); ~~~~~ 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) 33 const DEFAULT_GROK_SETTINGS = Schema.decodeUnknownSync(GrokSettings)({}); ~~~~~~~~~~~~~~~~~ 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) 414 const DEFAULT_MUSE_SETTINGS = Schema.decodeUnknownSync(MuseSettings)({ enabled: true }); ~~~~~~~~~~~~~~~~~ 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) 242 execute: (input) => ~~~~~~~ src/orchestration-v2/CheckpointRestoreSafety.test.ts:104:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 104 get: () => Effect.succeed(Option.some({ workspaceRoot: parent } as never)), ~~~~~~~~~~~~~~ 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) 41 Effect.catch((error) => ~~~~~~~~~~~~ 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) 83 Effect.catch((error) => ~~~~~~~~~~~~ src/orchestration-v2/CheckpointRollbackService.test.ts:233:22 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 233 return Effect.succeed(Option.some({ workspaceRoot } as never)); ~~~~~~~~~~~~~~ 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) 142 const batchAbort = new AbortController(); ~~~~~~~~~~~~~~~~~~~~~ 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) 168 Effect.flatMap((frame) => ~~~~~~~~~~~~~~ src/orchestration-v2/CommandReceiptStore.ts:164:29 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 164 onNone: () => Effect.succeed(Option.none()), ~~~~~~~~~~~~~~ src/orchestration-v2/CommandReceiptStore.ts:167:21 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 167 ? Effect.succeed(Option.none()) ~~~~~~~~~~~~~~ src/orchestration-v2/CommandReceiptStore.ts:168:58 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome) 168 : fromApplicationReceipt(receipt).pipe(Effect.map(Option.some)), ~~~~~~~~~~ src/orchestration-v2/CommandReceiptStore.ts:183:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 183 ? Effect.succeed(Option.none()) ~~~~~~~~~~~~~~ src/orchestration-v2/CommandReceiptStore.ts:192:25 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome) 192 }).pipe(Effect.map(Option.some)), ~~~~~~~~~~ src/orchestration-v2/EffectOutbox.ts:426:17 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 426 ? Effect.succeed(Option.none()) ~~~~~~~~~~~~~~ src/orchestration-v2/EffectOutbox.ts:427:39 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome) 427 : rowToEffect(row).pipe(Effect.map(Option.some)); ~~~~~~~~~~ src/orchestration-v2/EffectWorker.test.ts:107:20 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 107 get: () => Effect.succeed(Option.none()), ~~~~~~~~~~~~~~ src/orchestration-v2/EffectWorker.test.ts:302:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 302 claimNext: () => Effect.succeed(Option.some(claimedEffect)), ~~~~~~~~~~~~~~ src/orchestration-v2/EffectWorker.test.ts:369:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 369 claimNext: () => Effect.succeed(Option.some(claimedEffect)), ~~~~~~~~~~~~~~ src/orchestration-v2/EffectWorker.test.ts:436:24 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 436 claimNext: () => Effect.succeed(Option.some(claimedEffect)), ~~~~~~~~~~~~~~ src/orchestration-v2/EffectWorker.test.ts:437:18 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 437 get: () => Effect.succeed(Option.some(claimedEffect)), ~~~~~~~~~~~~~~ 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) 98 execute: (effect, options) => { ~~~~~~~ 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) 180 Effect.catch((cause) => ~~~~~~~~~~~~ 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) 110 append: (input) => ~~~~~~ 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) 120 appendProjectEvent: (event) => ~~~~~~~~~~~~~~~~~~ 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) 131 latestSequence: (input) => ~~~~~~~~~~~~~~ src/orchestration-v2/FoundationPersistence.test.ts:1791:26 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 1791 claimNext: () => Effect.succeed(Option.some(claimedEffect)), ~~~~~~~~~~~~~~ src/orchestration-v2/FoundationPersistence.test.ts:1793:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 1793 Effect.succeed( ~~~~~~~~~~~~~~ src/orchestration-v2/FoundationPersistence.test.ts:2663:30 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 2663 nextClaimableAt: Effect.succeed(Option.none()), ~~~~~~~~~~~~~~ src/orchestration-v2/FoundationPersistence.test.ts:2880:30 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 2880 nextClaimableAt: Effect.succeed(Option.none()), ~~~~~~~~~~~~~~ src/orchestration-v2/Orchestrator.ts:11650:7 - suggestion TS377120: `Effect.filterOrFail` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail) 11650 Effect.flatMap((planned) => ~~~~~~~~~~~~~~ src/orchestration-v2/Orchestrator.ts:12073:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.restartContinuationPending")((run) => { ... })`. effect(effectFnOpportunity) 12073 restartContinuationPending: (run) => ~~~~~~~~~~~~~~~~~~~~~~~~~~ src/orchestration-v2/Orchestrator.ts:12075:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.awaitRestartContinuation")((run) => { ... })`. effect(effectFnOpportunity) 12075 awaitRestartContinuation: (run) => ~~~~~~~~~~~~~~~~~~~~~~~~ src/orchestration-v2/Orchestrator.ts:12078:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.autoArmLimitRecovery")((input) => { ... })`. effect(effectFnOpportunity) 12078 autoArmLimitRecovery: (input) => ~~~~~~~~~~~~~~~~~~~~ src/orchestration-v2/Orchestrator.ts:12106:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.searchThread")((input) => { ... })`. effect(effectFnOpportunity) 12106 searchThread: (input) => ~~~~~~~~~~~~ src/orchestration-v2/Orchestrator.ts:12114:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadHistoryPage")((threadId, cursor, throughEntryId, conversationOnly) => { ... })`. effect(effectFnOpportunity) 12114 getThreadHistoryPage: (threadId, cursor, throughEntryId, conversationOnly) => ~~~~~~~~~~~~~~~~~~~~ src/orchestration-v2/Orchestrator.ts:12118:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getTimelinePage")((threadId, options) => { ... })`. effect(effectFnOpportunity) 12118 getTimelinePage: (threadId, options) => ~~~~~~~~~~~~~~~ src/orchestration-v2/Orchestrator.ts:12122:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getMessageCount")((threadId) => { ... })`. effect(effectFnOpportunity) 12122 getMessageCount: (threadId) => ~~~~~~~~~~~~~~~ src/orchestration-v2/Orchestrator.ts:12126:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getTurnItem")((input) => { ... })`. effect(effectFnOpportunity) 12126 getTurnItem: (input) => ~~~~~~~~~~~ src/orchestration-v2/Orchestrator.ts:12134:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadRecords")((threadId, fields, filter) => { ... })`. effect(effectFnOpportunity) 12134 getThreadRecords: (threadId, fields, filter) => ~~~~~~~~~~~~~~~~ src/orchestration-v2/Orchestrator.ts:12138:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadProjection")((threadId) => { ... })`. effect(effectFnOpportunity) 12138 getThreadProjection: (threadId) => ~~~~~~~~~~~~~~~~~~~ src/orchestration-v2/Orchestrator.ts:12142:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getCheckpointContext")((threadId) => { ... })`. effect(effectFnOpportunity) 12142 getCheckpointContext: (threadId) => ~~~~~~~~~~~~~~~~~~~~ src/orchestration-v2/Orchestrator.ts:12146:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadSnapshot")((threadId) => { ... })`. effect(effectFnOpportunity) 12146 getThreadSnapshot: (threadId) => ~~~~~~~~~~~~~~~~~ src/orchestration-v2/Orchestrator.ts:12150:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadSnapshotWindow")((threadId, options) => { ... })`. effect(effectFnOpportunity) 12150 getThreadSnapshotWindow: (threadId, options) => ~~~~~~~~~~~~~~~~~~~~~~~ src/orchestration-v2/Orchestrator.ts:12154:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getShellSnapshot")((options) => { ... })`. effect(effectFnOpportunity) 12154 getShellSnapshot: (options) => ~~~~~~~~~~~~~~~~ src/orchestration-v2/Orchestrator.ts:12156:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.readShellSnapshot")((options) => { ... })`. effect(effectFnOpportunity) 12156 readShellSnapshot: (options) => ~~~~~~~~~~~~~~~~~ src/orchestration-v2/Orchestrator.ts:12163:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadShell")((threadId) => { ... })`. effect(effectFnOpportunity) 12163 getThreadShell: (threadId) => ~~~~~~~~~~~~~~ src/orchestration-v2/Orchestrator.ts:12167:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("OrchestratorV2.getThreadEventSequence")((threadId) => { ... })`. effect(effectFnOpportunity) 12167 getThreadEventSequence: (threadId) => ~~~~~~~~~~~~~~~~~~~~~~ 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) 160 getInstance: () => Effect.succeed(undefined), ~~~~~~~~~~~~~~~~~~~~~~~~~ src/orchestration-v2/ProjectStore.ts:266:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProjectStoreV2.getShell")((projectId) => { ... })`. effect(effectFnOpportunity) 266 getShell: (projectId) => get(projectId).pipe(Effect.map(Option.map(toShell))), ~~~~~~~~ src/orchestration-v2/ProjectStore.ts:267:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ProjectStoreV2.listShells")((options) => { ... })`. effect(effectFnOpportunity) 267 listShells: (options) => ~~~~~~~~~~ src/orchestration-v2/ProjectionControlReads.test.ts:279:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 279 Effect.succeed( ~~~~~~~~~~~~~~ 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) 78 get: (instanceId) => ~~~ 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) 135 list: () => ~~~~ 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) 93 record: (properties: Readonly>) => ~~~~~~ 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) 818 Effect.flatMap((storedEvents) => ~~~~~~~~~~~~~~ src/orchestration-v2/ProviderSessionManager.test.ts:1155:19 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 1155 : Effect.succeed(Option.some(makeBrowserAccessProject(requestedProjectId))), ~~~~~~~~~~~~~~ src/orchestration-v2/ProviderTurnStartService.test.ts:150:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 150 Effect.succeed( ~~~~~~~~~~~~~~ src/orchestration-v2/ProviderTurnStartService.test.ts:703:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 703 Effect.succeed(Option.some({ workspaceRoot: "/tmp/native-account-project" } as never)), ~~~~~~~~~~~~~~ src/orchestration-v2/ProviderTurnStartService.testkit.ts:14:20 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 14 getById: () => Effect.succeed(Option.none()), ~~~~~~~~~~~~~~ src/orchestration-v2/ProviderTurnStartService.ts:499:15 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf) 499 Effect.catchCause((cause) => ~~~~~~~~~~~~~~~~~ src/orchestration-v2/ProviderTurnStartService.ts:1289:7 - suggestion TS377014: This generator returns an Effect-able value directly, which produces a nested `Effect>`. If the intended result is the inner Effect value, `return yield*` represents that form. effect(returnEffectInGen) 1289 return runExecution.startRootRun({ ~~~~~~ src/orchestration-v2/PullRequestWatchReactor.ts:476:53 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome) 476 ? pullRequests.activity(reference).pipe(Effect.map(Option.some)) ~~~~~~~~~~ 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) 49 cleanupScheduledTasks: (threadId: ThreadId) => ~~~~~~~~~~~~~~~~~~~~~ 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) 58 cleanupTerminals: (threadId: string) => ~~~~~~~~~~~~~~~~ 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) 66 cleanupPreviews: (threadId: string) => ~~~~~~~~~~~~~~~ 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) 74 cleanupAttachments: (attachmentIds: ReadonlyArray) => ~~~~~~~~~~~~~~~~~~ src/orchestration-v2/RunExecutionService.test.ts:1812:16 - suggestion TS377114: `Effect.asSome` expresses wrapping the success value in `Option.some` directly. effect(mapSomeToAsSome) 1812 ).pipe(Effect.map(Option.some)), ~~~~~~~~~~ src/orchestration-v2/RunExecutionService.ts:919:15 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf) 919 Effect.catchCause((cause) => ~~~~~~~~~~~~~~~~~ src/orchestration-v2/RuntimePolicy.test.ts:90:9 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 90 Effect.succeed( ~~~~~~~~~~~~~~ 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) 54 resolve: (input) => ~~~~~~~ src/orchestration-v2/RuntimeRequestService.test.ts:27:5 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 27 Effect.succeed( ~~~~~~~~~~~~~~ src/orchestration-v2/ThreadLaunchService.test.ts:189:33 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 189 getByWorkspaceRoot: () => Effect.succeed(Option.some(project)), ~~~~~~~~~~~~~~ src/orchestration-v2/ThreadLaunchService.test.ts:220:32 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 220 folderForThread: () => Effect.succeed(Option.none()), ~~~~~~~~~~~~~~ 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) 91 archive: (input) => ~~~~~~~ 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) 97 unarchive: (input) => ~~~~~~~~~ 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) 103 delete: (input) => ~~~~~~ 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) 109 updateMetadata: (input) => ~~~~~~~~~~~~~~ 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) 118 setRuntimeMode: (input) => ~~~~~~~~~~~~~~ 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) 125 setInteractionMode: (input) => ~~~~~~~~~~~~~~~~~~ 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) 132 setModelSelection: (input) => ~~~~~~~~~~~~~~~~~ src/orchestration-v2/ThreadManagementService.ts:688:7 - suggestion TS377120: `Effect.filterOrFail` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail) 688 Effect.flatMap((projection) => ~~~~~~~~~~~~~~ src/orchestration-v2/ThreadManagementService.ts:705:5 - suggestion TS377015: This expression contains chained `pipe` calls that can be simplified to a single `pipe` call. effect(unnecessaryPipeChain) 705 ensureProjectionTranscript(input.threadId) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 706 .pipe(Effect.andThen(orchestrator.getThreadRecords(input.threadId, fields, filter))) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ... 725 ), ~~~~~~~~~~ 726 ); ~~~~~~~ src/orchestration-v2/ThreadManagementService.ts:716:9 - suggestion TS377120: `Effect.filterOrFail` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail) 716 Effect.flatMap((projection) => ~~~~~~~~~~~~~~ src/orchestration-v2/ThreadManagementService.ts:1129: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) 1129 if (failures[0] !== undefined) return yield* Effect.fail(failures[0]); ~~~~~ src/orchestration-v2/ThreadManagementService.ts:1140:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.searchThread")((input) => { ... })`. effect(effectFnOpportunity) 1140 searchThread: (input) => ~~~~~~~~~~~~ src/orchestration-v2/ThreadManagementService.ts:1145:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.getThreadHistoryPage")((threadId, cursor, throughEntryId, conversationOnly) => { ... })`. effect(effectFnOpportunity) 1145 getThreadHistoryPage: (threadId, cursor, throughEntryId, conversationOnly) => ~~~~~~~~~~~~~~~~~~~~ src/orchestration-v2/ThreadManagementService.ts:1151:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.getTimelinePage")((threadId, options) => { ... })`. effect(effectFnOpportunity) 1151 getTimelinePage: (threadId, options) => ~~~~~~~~~~~~~~~ src/orchestration-v2/ThreadManagementService.ts:1155:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.getMessageCount")((threadId) => { ... })`. effect(effectFnOpportunity) 1155 getMessageCount: (threadId) => ~~~~~~~~~~~~~~~ src/orchestration-v2/ThreadManagementService.ts:1159:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.getTurnItem")((input) => { ... })`. effect(effectFnOpportunity) 1159 getTurnItem: (input) => ~~~~~~~~~~~ src/orchestration-v2/ThreadManagementService.ts:1164:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ThreadManagementService.getThreadRecords")((threadId, fields, filter) => { ... })`. effect(effectFnOpportunity) 1164 getThreadRecords: (threadId, fields, filter) => ~~~~~~~~~~~~~~~~ src/orchestration-v2/ThreadManagementService.ts:1203:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("LegacyV1ThreadImporter.LegacyV1ThreadImporter.ensureTranscript")(() => { ... })`. effect(effectFnOpportunity) 1203 ensureTranscript: () => Effect.succeed({ importedThreadCount: 0, importedMessageCount: 0 }), ~~~~~~~~~~~~~~~~ src/orchestration-v2/ThreadPullRequestService.test.ts:135:31 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 135 getShell: () => Effect.succeed(Option.some(project)), ~~~~~~~~~~~~~~ src/orchestration-v2/ThreadPullRequestService.ts:327:17 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf) 327 Effect.catchCause((cause) => ~~~~~~~~~~~~~~~~~ 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) 353 Effect.catchCause((cause) => ~~~~~~~~~~~~~~~~~ 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) 516 Effect.catchCause((cause) => ~~~~~~~~~~~~~~~~~ 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) 534 Effect.catchCause((cause) => ~~~~~~~~~~~~~~~~~ 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) 576 Effect.catchCause((cause) => ~~~~~~~~~~~~~~~~~ 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) 106 normalize: (item, runOrdinal) => ~~~~~~~~~ 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) 54 const thread = Schema.decodeUnknownSync(OrchestrationV2AppThread)({ ~~~~~~~~~~~~~~~~~ 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) 231 try { ~~~~~ 232 decodeThreadHistoryCursor(args.query.cursor); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ... 236 return yield* failEnvironmentInternal("orchestration_thread_history_failed", cause); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 237 } ~~~~~~~~~~~ src/orchestration-v2/runtimeLayer.test.ts:120:18 - suggestion TS377117: `Effect.succeedNone` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 120 getById: () => Effect.succeed(Option.none()), ~~~~~~~~~~~~~~ src/orchestration-v2/runtimeLayer.test.ts:996:11 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 996 Effect.succeed( ~~~~~~~~~~~~~~ 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) 40 append: (input) => ~~~~~~ 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) 283 const awaitDispatch = (key: string) => ~~~~~~~~~~~~~ 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) 447 execute: () => Effect.void, ~~~~~~~ src/persistence/PullRequestFilesViewed.ts:91:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestFilesViewedRepository.list")((input) => { ... })`. effect(effectFnOpportunity) 91 list: (input) => ~~~~ src/persistence/PullRequestFilesViewed.ts:100:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestFilesViewedRepository.set")((input) => { ... })`. effect(effectFnOpportunity) 100 set: (input) => ~~~ src/persistence/PullRequestReviewGuides.ts:53:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestReviewGuideRepository.get")((key) => { ... })`. effect(effectFnOpportunity) 53 get: (key) => ~~~ src/persistence/PullRequestReviewGuides.ts:62:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestReviewGuideRepository.put")((key, guide) => { ... })`. effect(effectFnOpportunity) 62 put: (key, guide) => ~~~ 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) 45 Effect.catch((error) => ~~~~~~~~~~~~ src/preview/DesktopBrowserChannel.ts:75:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBrowserChannel.awaitAttached")(() => { ... })`. effect(effectFnOpportunity) 75 awaitAttached: () => Effect.succeed(false), ~~~~~~~~~~~~~ src/preview/DesktopBrowserChannel.ts:78:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBrowserChannel.isAttached")(() => { ... })`. effect(effectFnOpportunity) 78 isAttached: () => Effect.succeed(false), ~~~~~~~~~~ src/preview/DesktopBrowserChannel.ts:79:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBrowserChannel.endpoint")(() => { ... })`. effect(effectFnOpportunity) 79 endpoint: () => Effect.die("No desktop app is attached to this server."), ~~~~~~~~ src/preview/DesktopBrowserChannel.ts:80:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopBrowserChannel.pointer")(() => { ... })`. effect(effectFnOpportunity) 80 pointer: () => Effect.void, ~~~~~~~ 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) 194 awaitAttached: (key, timeout) => ~~~~~~~~~~~~~ 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) 216 isAttached: (key) => Effect.sync(() => attachedTabs.has(keyOf(key))), ~~~~~~~~~~ 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) 218 pointer: (key, pointer) => command({ type: "pointer", ...key, ...pointer }), ~~~~~~~ src/preview/ServerBrowser.ts:480:23 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect) 480 executable: () => Effect.runPromise(previewBrowser.executable), ~~~~~~~~~~~~~~~~~ src/preview/ServerBrowser.ts:687:9 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect) 687 ? Effect.runPromise( ~~~~~~~~~~~~~~~~~ src/preview/ServerBrowser.ts:696:25 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect) 696 const scope = await Effect.runPromise(Scope.make()); ~~~~~~~~~~~~~~~~~ src/preview/ServerBrowser.ts:698:30 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect) 698 const endpoint = await Effect.runPromise( ~~~~~~~~~~~~~~~~~ src/preview/ServerBrowser.ts:708:17 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect) 708 await Effect.runPromise(Scope.close(scope, Exit.void)); ~~~~~~~~~~~~~~~~~ src/preview/ServerBrowser.ts:712:13 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect) 712 await Effect.runPromise(Scope.close(scope, Exit.void)); ~~~~~~~~~~~~~~~~~ src/preview/ServerBrowser.ts:1199:11 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect) 1199 await Effect.runPromise( ~~~~~~~~~~~~~~~~~ src/preview/ServerBrowser.ts:1688:17 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect) 1688 : await Effect.runPromise( ~~~~~~~~~~~~~~~~~ src/preview/ServerBrowser.ts:1752:21 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect) 1752 ? await Effect.runPromise( ~~~~~~~~~~~~~~~~~ src/preview/ServerBrowser.ts:1755:58 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid) 1755 ServerBrowserTabNotFoundError: () => Effect.succeed(undefined), ~~~~~~~~~~~~~~~~~~~~~~~~~ src/preview/ServerBrowser.ts:1761:38 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect) 1761 const { sessions } = await Effect.runPromise( ~~~~~~~~~~~~~~~~~ src/preview/ServerBrowser.ts:1789:19 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect) 1789 await Effect.runPromise( ~~~~~~~~~~~~~~~~~ src/preview/ServerBrowser.ts:1820:21 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect) 1820 await Effect.runPromise( ~~~~~~~~~~~~~~~~~ src/preview/ServerBrowser.ts:1884:13 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect) 1884 await Effect.runPromise(manager.close({ threadId: tab.threadId, tabId: tab.tabId })); ~~~~~~~~~~~~~~~~~ src/preview/ServerBrowser.ts:1952:15 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect) 1952 await Effect.runPromise( ~~~~~~~~~~~~~~~~~ src/preview/ServerBrowser.ts:1964:32 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect) 1964 const snapshot = await Effect.runPromise( ~~~~~~~~~~~~~~~~~ src/preview/ServerBrowser.ts:2210:15 - suggestion TS377074: `Effect.runPromise` is called inside an Effect with a separate services invocation. In this context, child Effects run with the surrounding services, which can be accessed through `Effect.context` and `Effect.runPromiseWith`. effect(runEffectInsideEffect) 2210 await Effect.runPromise( ~~~~~~~~~~~~~~~~~ src/preview/ServerBrowserStream.ts:179:13 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("receive")((chunk) => { ... })`. effect(effectFnOpportunity) 179 const receive = (chunk: Uint8Array | string) => { ~~~~~~~ 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) 209 Effect.catch(() => Effect.succeed(HttpServerResponse.empty())), ~~~~~~~~~~~~ src/process/externalLauncher.ts:860:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ExternalLauncher.resolveAvailableEditors")(() => { ... })`. effect(effectFnOpportunity) 860 resolveAvailableEditors: () => cachedAvailableEditors, ~~~~~~~~~~~~~~~~~~~~~~~ src/process/externalLauncher.ts:861:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("ExternalLauncher.resolveFileManagerRevealKind")(() => { ... })`. effect(effectFnOpportunity) 861 resolveFileManagerRevealKind: () => ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 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) 865 launchBrowser: (target) => ~~~~~~~~~~~~~ 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) 869 launchEditor: (input) => ~~~~~~~~~~~~ src/project/AgentSessionImporter.test.ts:212:15 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 212 Effect.succeed( ~~~~~~~~~~~~~~ src/project/ManagedProjectFolders.ts:346:13 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 346 ? Effect.succeed(Option.some(folderFor(id.slice(-8)))) ~~~~~~~~~~~~~~ src/project/ManagedProjectFolders.ts:348:15 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 348 ? Effect.succeed(Option.some(fullFolder)) ~~~~~~~~~~~~~~ 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) 432 start: (input, hooks) => locked(start(input, hooks)), ~~~~~ 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) 433 cancel: (projectId) => locked(cancel(projectId)), ~~~~~~ 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) 434 retry: (projectId) => locked(retry(projectId)), ~~~~~ 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) 435 discard: (projectId) => locked(discard(projectId)), ~~~~~~~ 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) 21 get: (key) => Effect.sync(() => Option.fromUndefinedOr(bytes.get(key))), ~~~ 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) 22 set: (key, value) => ~~~ 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) 26 remove: (key) => ~~~~~~ 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) 30 create: () => Effect.die("Handoff does not create persistent secrets."), ~~~~~~ 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) 31 getOrCreateRandom: () => Effect.die("Handoff uses the destination environment identity."), ~~~~~~~~~~~~~~~~~ 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) 205 return yield* Schema.decodeUnknownEffect(Schema.fromJsonString(schema))( ~~~~~~~~~~~~~~~~~~~ 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) 569 ? Effect.succeed(undefined) ~~~~~~~~~~~~~~~~~~~~~~~~~ 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) 284 current: (driverKind) => ~~~~~~~ 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) 284 return yield* Effect.fail( ~~~~~ 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) 211 importProfile: (input) => ~~~~~~~~~~~~~ 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) 39 credentials: (namespace, bindingId) => ~~~~~~~~~~~ src/pullRequest/PullRequestService.ts:2773:7 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf) 2773 Effect.catchCause((cause) => ~~~~~~~~~~~~~~~~~ src/pullRequest/PullRequestService.ts:3172:7 - suggestion TS377116: `Effect.catchCauseIf` expresses selective recovery more directly than `Effect.catchCause` with a conditional `Effect.failCause` passthrough. effect(catchConditionalRefailToCatchIf) 3172 Effect.catchCause((cause) => ~~~~~~~~~~~~~~~~~ src/pullRequest/PullRequestService.ts:3391:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("PullRequestService.listStats")((input) => { ... })`. effect(effectFnOpportunity) 3391 listStats: (input) => ~~~~~~~~~ src/relay/AgentAwarenessRelay.test.ts:270:9 - suggestion TS377117: `Effect.succeedSome` expresses this Option success value directly. effect(preferSucceedSomeOrNone) 270 Effect.succeed( ~~~~~~~~~~~~~~ src/relay/AgentAwarenessRelay.ts:822:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AgentAwarenessRelay.requestCatchUp")(() => { ... })`. effect(effectFnOpportunity) 822 requestCatchUp: () => Queue.offer(catchUpRequests, undefined).pipe(Effect.asVoid), ~~~~~~~~~~~~~~ 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) 641 requestDesktopUpdate: (requestId) => ~~~~~~~~~~~~~~~~~~~~ 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) 647 commitDesktopUpdate: (requestId) => ~~~~~~~~~~~~~~~~~~~ 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) 649 cancelDesktopUpdate: (requestId) => ~~~~~~~~~~~~~~~~~~~ src/resourceTelemetry/DesktopTelemetryReceiver.ts:698:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopTelemetryReceiver.setDiagnosticsDemand")(() => { ... })`. effect(effectFnOpportunity) 698 setDiagnosticsDemand: () => Effect.void, ~~~~~~~~~~~~~~~~~~~~ src/resourceTelemetry/DesktopTelemetryReceiver.ts:699:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopTelemetryReceiver.requestDesktopUpdate")(() => { ... })`. effect(effectFnOpportunity) 699 requestDesktopUpdate: () => Effect.void, ~~~~~~~~~~~~~~~~~~~~ src/resourceTelemetry/DesktopTelemetryReceiver.ts:700:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopTelemetryReceiver.commitDesktopUpdate")(() => { ... })`. effect(effectFnOpportunity) 700 commitDesktopUpdate: () => Effect.void, ~~~~~~~~~~~~~~~~~~~ src/resourceTelemetry/DesktopTelemetryReceiver.ts:701:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("DesktopTelemetryReceiver.cancelDesktopUpdate")(() => { ... })`. effect(effectFnOpportunity) 701 cancelDesktopUpdate: () => Effect.void, ~~~~~~~~~~~~~~~~~~~ src/resourceTelemetry/NativeTelemetryClient.ts:1091:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("NativeTelemetryClient.readHistory")(() => { ... })`. effect(effectFnOpportunity) 1091 readHistory: () => ~~~~~~~~~~~ src/resourceTelemetry/NativeTelemetryClient.ts:1097:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("NativeTelemetryClient.setExternalProcesses")(() => { ... })`. effect(effectFnOpportunity) 1097 setExternalProcesses: () => Effect.void, ~~~~~~~~~~~~~~~~~~~~ src/resourceTelemetry/NativeTelemetryClient.ts:1098:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("NativeTelemetryClient.setHostPowerState")(() => { ... })`. effect(effectFnOpportunity) 1098 setHostPowerState: () => Effect.void, ~~~~~~~~~~~~~~~~~ src/scheduledTasks/ScheduledTaskService.ts:1132:31 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid) 1132 ? Effect.succeed(undefined) ~~~~~~~~~~~~~~~~~~~~~~~~~ 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) 166 const results = yield* Effect.all( ~~~~~~~~~~ src/server.ts:479:5 - suggestion TS377014: This generator returns an Effect-able value directly, which produces a nested `Effect>`. If the intended result is the inner Effect value, `return yield*` represents that form. effect(returnEffectInGen) 479 return Effect.gen(function* () { ~~~~~~ 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) 209 prepareTrial: Effect.succeed(undefined), ~~~~~~~~~~~~~~~~~~~~~~~~~ src/serverSettings.test.ts:390:30 - suggestion TS377113: `Effect.forEach` expresses this effectful array mapping more directly than `Effect.all` over `Array#map`. effect(allOfMapToForEach) 390 const results = yield* Effect.all( ~~~~~~~~~~ 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) 204 listChangeRequests: (input) => ~~~~~~~~~~~~~~~~~~ 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) 209 getChangeRequest: (input) => ~~~~~~~~~~~~~~~~ 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) 214 createChangeRequest: (input) => ~~~~~~~~~~~~~~~~~~~ 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) 219 getRepositoryCloneUrls: (input) => ~~~~~~~~~~~~~~~~~~~~~~ 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) 224 createRepository: (input) => provider.createRepository(input), ~~~~~~~~~~~~~~~~ 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) 225 getDefaultBranch: (input) => ~~~~~~~~~~~~~~~~ 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) 230 checkoutChangeRequest: (input) => ~~~~~~~~~~~~~~~~~~~~~ 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) 345 resolve: (input) => resolveHandle(input).pipe(Effect.map((handle) => handle.provider)), ~~~~~~~ src/sourceControl/SourceControlRepositoryService.ts:405:7 - suggestion TS377116: `Effect.catchIf` expresses selective recovery more directly than `Effect.catch` with a conditional `Effect.fail` passthrough. effect(catchConditionalRefailToCatchIf) 405 Effect.catch((sshError) => ~~~~~~~~~~~~ src/sourceControl/SourceControlRepositoryService.ts:552:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.lookupRepository")((input) => { ... })`. effect(effectFnOpportunity) 552 lookupRepository: (input) => ~~~~~~~~~~~~~~~~ src/sourceControl/SourceControlRepositoryService.ts:554:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.prepareClone")((input) => { ... })`. effect(effectFnOpportunity) 554 prepareClone: (input) => ~~~~~~~~~~~~ src/sourceControl/SourceControlRepositoryService.ts:561:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.cloneRepository")((input, options) => { ... })`. effect(effectFnOpportunity) 561 cloneRepository: (input, options) => ~~~~~~~~~~~~~~~ src/sourceControl/SourceControlRepositoryService.ts:568:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.discardClone")((destinationPath) => { ... })`. effect(effectFnOpportunity) 568 discardClone: (destinationPath) => ~~~~~~~~~~~~ src/sourceControl/SourceControlRepositoryService.ts:572:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("SourceControlRepositoryService.publishRepository")((input) => { ... })`. effect(effectFnOpportunity) 572 publishRepository: (input) => ~~~~~~~~~~~~~~~~~ src/storageCleanup.ts:706:14 - suggestion TS377019: This `yield* Effect.fail(...)` passes a yieldable error value. `yield*` represents that value directly without wrapping it in `Effect.fail`. effect(unnecessaryFailYieldableError) 706 return yield* Effect.fail( ~~~~~ src/telemetry/AnalyticsService.ts:113:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AnalyticsService.record")(() => { ... })`. effect(effectFnOpportunity) 113 record: () => Effect.void, ~~~~~~ src/telemetry/AnalyticsService.ts:115:7 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("AnalyticsService.recordOwners")(() => { ... })`. effect(effectFnOpportunity) 115 recordOwners: () => Effect.void, ~~~~~~~~~~~~ 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) 329 yield* Effect.forever(Effect.sleep(FLUSH_INTERVAL_MS).pipe(Effect.flatMap(() => flushWhenDue)), { ~~~~~~~~~~~~~~ src/textGeneration/CodexTextGeneration.ts:90:13 - suggestion TS377099: `Effect.ignore` expresses ignored failure more directly than `Effect.catch` returning `Effect.void`. effect(catchToIgnore) 90 .pipe(Effect.catch(() => Effect.void)); ~~~~~~~~~~~~ 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) 60 generateCommitMessage: (input) => ~~~~~~~~~~~~~~~~~~~~~ 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) 64 generatePrContent: (input) => ~~~~~~~~~~~~~~~~~ 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) 68 generateBranchName: (input) => ~~~~~~~~~~~~~~~~~~ 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) 72 generateReviewGuide: (input) => ~~~~~~~~~~~~~~~~~~~ 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) 76 generateThreadTitle: (input) => ~~~~~~~~~~~~~~~~~~~ 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) 172 readSummary: (input) => ~~~~~~~~~~~ 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) 642 usageInstances(driver, settings) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 643 .pipe( ~~~~~~~~~~~~~~~~ ... 664 Effect.provideContext(readerContext), ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 665 ), ~~~~~~~~~~~ src/vcs/GitVcsDriverCore.ts:4005:9 - suggestion TS377120: `Effect.filterOrElse` expresses this conditional validation more directly than `Effect.flatMap` with an identity `Effect.succeed` branch. effect(flatMapConditionalToFilterOrFail) 4005 Effect.flatMap((result) => ~~~~~~~~~~~~~~ src/vcs/GitVcsDriverCore.ts:4496:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.commit")((cwd, subject, body, options) => { ... })`. effect(effectFnOpportunity) 4496 commit: (cwd, subject, body, options) => ~~~~~~ src/vcs/GitVcsDriverCore.ts:4498:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.pushCurrentBranch")((cwd, fallbackBranch, options) => { ... })`. effect(effectFnOpportunity) 4498 pushCurrentBranch: (cwd, fallbackBranch, options) => ~~~~~~~~~~~~~~~~~ src/vcs/GitVcsDriverCore.ts:4500:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.pullCurrentBranch")((cwd) => { ... })`. effect(effectFnOpportunity) 4500 pullCurrentBranch: (cwd) => withListRefsInvalidation(cwd, pullCurrentBranch(cwd)), ~~~~~~~~~~~~~~~~~ src/vcs/GitVcsDriverCore.ts:4507:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.createWorktree")((input, options) => { ... })`. effect(effectFnOpportunity) 4507 createWorktree: (input, options) => ~~~~~~~~~~~~~~ src/vcs/GitVcsDriverCore.ts:4509:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchPullRequestBranch")((input) => { ... })`. effect(effectFnOpportunity) 4509 fetchPullRequestBranch: (input) => ~~~~~~~~~~~~~~~~~~~~~~ src/vcs/GitVcsDriverCore.ts:4513:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.refreshCheckedOutBranch")((input) => { ... })`. effect(effectFnOpportunity) 4513 refreshCheckedOutBranch: (input) => ~~~~~~~~~~~~~~~~~~~~~~~ src/vcs/GitVcsDriverCore.ts:4515:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.ensureRemote")((input) => { ... })`. effect(effectFnOpportunity) 4515 ensureRemote: (input) => withListRefsInvalidation(input.cwd, ensureRemote(input)), ~~~~~~~~~~~~ src/vcs/GitVcsDriverCore.ts:4518:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchRemote")((input) => { ... })`. effect(effectFnOpportunity) 4518 fetchRemote: (input) => ~~~~~~~~~~~ src/vcs/GitVcsDriverCore.ts:4533:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchWorktreeBaseCommit")((input) => { ... })`. effect(effectFnOpportunity) 4533 fetchWorktreeBaseCommit: (input) => ~~~~~~~~~~~~~~~~~~~~~~~ src/vcs/GitVcsDriverCore.ts:4535:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchRemoteBranch")((input) => { ... })`. effect(effectFnOpportunity) 4535 fetchRemoteBranch: (input) => withListRefsInvalidation(input.cwd, fetchRemoteBranch(input)), ~~~~~~~~~~~~~~~~~ src/vcs/GitVcsDriverCore.ts:4536:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.fetchRemoteTrackingBranch")((input) => { ... })`. effect(effectFnOpportunity) 4536 fetchRemoteTrackingBranch: (input) => ~~~~~~~~~~~~~~~~~~~~~~~~~ src/vcs/GitVcsDriverCore.ts:4538:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.setBranchUpstream")((input) => { ... })`. effect(effectFnOpportunity) 4538 setBranchUpstream: (input) => withListRefsInvalidation(input.cwd, setBranchUpstream(input)), ~~~~~~~~~~~~~~~~~ src/vcs/GitVcsDriverCore.ts:4539:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.removeWorktree")((input) => { ... })`. effect(effectFnOpportunity) 4539 removeWorktree: (input) => withListRefsInvalidation(input.cwd, removeWorktree(input)), ~~~~~~~~~~~~~~ src/vcs/GitVcsDriverCore.ts:4540:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.pruneWorktrees")((input) => { ... })`. effect(effectFnOpportunity) 4540 pruneWorktrees: (input) => withListRefsInvalidation(input.cwd, pruneWorktrees(input)), ~~~~~~~~~~~~~~ src/vcs/GitVcsDriverCore.ts:4541:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.deleteLocalBranch")((input) => { ... })`. effect(effectFnOpportunity) 4541 deleteLocalBranch: (input) => withListRefsInvalidation(input.cwd, deleteLocalBranch(input)), ~~~~~~~~~~~~~~~~~ src/vcs/GitVcsDriverCore.ts:4542:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.renameBranch")((input) => { ... })`. effect(effectFnOpportunity) 4542 renameBranch: (input) => withListRefsInvalidation(input.cwd, renameBranch(input)), ~~~~~~~~~~~~ src/vcs/GitVcsDriverCore.ts:4543:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.createRef")((input) => { ... })`. effect(effectFnOpportunity) 4543 createRef: (input) => withListRefsInvalidation(input.cwd, createRef(input)), ~~~~~~~~~ src/vcs/GitVcsDriverCore.ts:4544:5 - suggestion TS377047: This expression can be rewritten in the reusable function form `Effect.fn("GitVcsDriver.GitVcsDriver.switchRef")((input) => { ... })`. effect(effectFnOpportunity) 4544 switchRef: (input) => withListRefsInvalidation(input.cwd, switchRef(input)), ~~~~~~~~~ src/vcs/VcsStatusBroadcaster.ts:153:5 - suggestion TS377014: This generator returns an Effect-able value directly, which produces a nested `Effect>`. If the intended result is the inner Effect value, `return yield*` represents that form. effect(returnEffectInGen) 153 return serverSettings.getSettings.pipe( ~~~~~~ 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) 171 }).pipe(Effect.catch(() => Effect.succeed(undefined))); ~~~~~~~~~~~~ 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) 171 }).pipe(Effect.catch(() => Effect.succeed(undefined))); ~~~~~~~~~~~~~~~~~~~~~~~~~ src/ws.test.ts:399:47 - suggestion TS377016: `Effect.void` represents the same outcome as `Effect.succeed(undefined)` or `Effect.succeed(void 0)`. effect(effectSucceedWithVoid) 399 resolveFileManagerRevealKind: () => Effect.succeed(undefined), ~~~~~~~~~~~~~~~~~~~~~~~~~ src/ws.ts:1350:23 - suggestion TS377118: `Effect.fromOption` expresses this Option-to-Effect conversion more directly than `Option.match` or an Option tag conditional. effect(optionMatchToFromOption) 1350 return yield* Option.match(project, { ~~~~~~~~~~~~ src/ws.ts:2269: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) 2269 return yield* Effect.fail( ~~~~~ src/ws.ts:2278: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) 2278 return yield* Effect.fail( ~~~~~ src/ws.ts:2286: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) 2286 return yield* Effect.fail( ~~~~~ --- vp run: 0/9 cache hit (0%), 9/9 successful. @t3tools/scripts#typecheck not cached because it modified its inputs. (Run `vp run --last-details` for full details) > vp test (2 files) RUN v5.0.5 /home/ubuntu/wt/issue-14296 Test Files 2 passed (2) Tests 108 passed (108) Start at 08:22:59 Duration 33.17s (tests 46%, transform 41%, import 8%, setup 4%) check:changed summary pass format 0.6s pass lint 1.1s pass knip 146.7s pass graphql (apps/server) 1.0s pass typecheck (9 packages) 48.4s pass test (2 files) 37.8s CI also runs: full test suites, build