Skip to content

Commit 5917ac2

Browse files
authored
fix: provide EffectLogger.layer to bare Effect.runPromise/runFork calls (#21974)
1 parent b6af4d0 commit 5917ac2

11 files changed

Lines changed: 24 additions & 12 deletions

File tree

packages/opencode/src/bus/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import z from "zod"
22
import { Effect, Exit, Layer, PubSub, Scope, ServiceMap, Stream } from "effect"
3+
import { EffectLogger } from "@/effect/logger"
34
import { Log } from "../util/log"
45
import { BusEvent } from "./bus-event"
56
import { GlobalBus } from "./global"
@@ -146,7 +147,7 @@ export namespace Bus {
146147

147148
return () => {
148149
log.info("unsubscribing", { type })
149-
Effect.runFork(Scope.close(scope, Exit.void))
150+
Effect.runFork(Scope.close(scope, Exit.void).pipe(Effect.provide(EffectLogger.layer)))
150151
}
151152
})
152153
}

packages/opencode/src/command/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { InstanceState } from "@/effect/instance-state"
33
import { makeRuntime } from "@/effect/run-service"
44
import { SessionID, MessageID } from "@/session/schema"
55
import { Effect, Layer, ServiceMap } from "effect"
6+
import { EffectLogger } from "@/effect/logger"
67
import z from "zod"
78
import { Config } from "../config/config"
89
import { MCP } from "../mcp"
@@ -140,6 +141,7 @@ export namespace Command {
140141
.map((message) => (message.content.type === "text" ? message.content.text : ""))
141142
.join("\n") || "",
142143
),
144+
Effect.provide(EffectLogger.layer),
143145
),
144146
)
145147
},

packages/opencode/src/effect/instance-state.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { Effect, Fiber, ScopedCache, Scope, ServiceMap } from "effect"
2+
import { EffectLogger } from "@/effect/logger"
23
import { Instance, type InstanceContext } from "@/project/instance"
34
import { Context } from "@/util/context"
45
import { InstanceRef, WorkspaceRef } from "./instance-ref"
@@ -47,7 +48,7 @@ export namespace InstanceState {
4748
}),
4849
})
4950

50-
const off = registerDisposer((directory) => Effect.runPromise(ScopedCache.invalidate(cache, directory)))
51+
const off = registerDisposer((directory) => Effect.runPromise(ScopedCache.invalidate(cache, directory).pipe(Effect.provide(EffectLogger.layer))))
5152
yield* Effect.addFinalizer(() => Effect.sync(off))
5253

5354
return {

packages/opencode/src/mcp/index.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import { Bus } from "@/bus"
2525
import { TuiEvent } from "@/cli/cmd/tui/event"
2626
import open from "open"
2727
import { Effect, Exit, Layer, Option, ServiceMap, Stream } from "effect"
28+
import { EffectLogger } from "@/effect/logger"
2829
import { InstanceState } from "@/effect/instance-state"
2930
import { makeRuntime } from "@/effect/run-service"
3031
import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process"
@@ -469,12 +470,12 @@ export namespace MCP {
469470
log.info("tools list changed notification received", { server: name })
470471
if (s.clients[name] !== client || s.status[name]?.status !== "connected") return
471472

472-
const listed = await Effect.runPromise(defs(name, client, timeout))
473+
const listed = await Effect.runPromise(defs(name, client, timeout).pipe(Effect.provide(EffectLogger.layer)))
473474
if (!listed) return
474475
if (s.clients[name] !== client || s.status[name]?.status !== "connected") return
475476

476477
s.defs[name] = listed
477-
await Effect.runPromise(bus.publish(ToolsChanged, { server: name }).pipe(Effect.ignore))
478+
await Effect.runPromise(bus.publish(ToolsChanged, { server: name }).pipe(Effect.ignore, Effect.provide(EffectLogger.layer)))
478479
})
479480
}
480481

packages/opencode/src/plugin/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { gitlabAuthPlugin as GitlabAuthPlugin } from "opencode-gitlab-auth"
1212
import { PoeAuthPlugin } from "opencode-poe-auth"
1313
import { CloudflareAIGatewayAuthPlugin, CloudflareWorkersAuthPlugin } from "./cloudflare"
1414
import { Effect, Layer, ServiceMap, Stream } from "effect"
15+
import { EffectLogger } from "@/effect/logger"
1516
import { InstanceState } from "@/effect/instance-state"
1617
import { makeRuntime } from "@/effect/run-service"
1718
import { errorMessage } from "@/util/error"
@@ -83,7 +84,7 @@ export namespace Plugin {
8384
}
8485

8586
function publishPluginError(bus: Bus.Interface, message: string) {
86-
Effect.runFork(bus.publish(Session.Event.Error, { error: new NamedError.Unknown({ message }).toObject() }))
87+
Effect.runFork(bus.publish(Session.Event.Error, { error: new NamedError.Unknown({ message }).toObject() }).pipe(Effect.provide(EffectLogger.layer)))
8788
}
8889

8990
async function applyPlugin(load: PluginLoader.Loaded, input: PluginInput, hooks: Hooks[]) {

packages/opencode/src/provider/provider.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import { Global } from "../global"
2020
import path from "path"
2121
import { Filesystem } from "../util/filesystem"
2222
import { Effect, Layer, ServiceMap } from "effect"
23+
import { EffectLogger } from "@/effect/logger"
2324
import { InstanceState } from "@/effect/instance-state"
2425
import { makeRuntime } from "@/effect/run-service"
2526

@@ -1215,7 +1216,7 @@ export namespace Provider {
12151216

12161217
const options = yield* Effect.promise(() =>
12171218
plugin.auth!.loader!(
1218-
() => Effect.runPromise(auth.get(providerID).pipe(Effect.orDie)) as any,
1219+
() => Effect.runPromise(auth.get(providerID).pipe(Effect.orDie, Effect.provide(EffectLogger.layer))) as any,
12191220
database[plugin.auth!.provider],
12201221
),
12211222
)

packages/opencode/src/pty/index.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { Shell } from "@/shell/shell"
1111
import { Plugin } from "@/plugin"
1212
import { PtyID } from "./schema"
1313
import { Effect, Layer, ServiceMap } from "effect"
14+
import { EffectLogger } from "@/effect/logger"
1415

1516
export namespace Pty {
1617
const log = Log.create({ service: "pty" })
@@ -256,8 +257,8 @@ export namespace Pty {
256257
if (session.info.status === "exited") return
257258
log.info("session exited", { id, exitCode })
258259
session.info.status = "exited"
259-
Effect.runFork(bus.publish(Event.Exited, { id, exitCode }))
260-
Effect.runFork(remove(id))
260+
Effect.runFork(bus.publish(Event.Exited, { id, exitCode }).pipe(Effect.provide(EffectLogger.layer)))
261+
Effect.runFork(remove(id).pipe(Effect.provide(EffectLogger.layer)))
261262
}),
262263
)
263264
yield* bus.publish(Event.Created, { info })

packages/opencode/src/session/message-v2.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import type { SystemError } from "bun"
1515
import type { Provider } from "@/provider/provider"
1616
import { ModelID, ProviderID } from "@/provider/schema"
1717
import { Effect } from "effect"
18+
import { EffectLogger } from "@/effect/logger"
1819

1920
/** Error shape thrown by Bun's fetch() when gzip/br decompression fails mid-stream */
2021
interface FetchDecompressionError extends Error {
@@ -839,7 +840,7 @@ export namespace MessageV2 {
839840
model: Provider.Model,
840841
options?: { stripMedia?: boolean },
841842
): Promise<ModelMessage[]> {
842-
return Effect.runPromise(toModelMessagesEffect(input, model, options))
843+
return Effect.runPromise(toModelMessagesEffect(input, model, options).pipe(Effect.provide(EffectLogger.layer)))
843844
}
844845

845846
export function page(input: { sessionID: SessionID; limit: number; before?: string }) {

packages/opencode/src/tool/external-directory.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import path from "path"
22
import { Effect } from "effect"
3+
import { EffectLogger } from "@/effect/logger"
34
import type { Tool } from "./tool"
45
import { Instance } from "../project/instance"
56
import { AppFileSystem } from "../filesystem"
@@ -42,5 +43,5 @@ export const assertExternalDirectoryEffect = Effect.fn("Tool.assertExternalDirec
4243
})
4344

4445
export async function assertExternalDirectory(ctx: Tool.Context, target?: string, options?: Options) {
45-
return Effect.runPromise(assertExternalDirectoryEffect(ctx, target, options))
46+
return Effect.runPromise(assertExternalDirectoryEffect(ctx, target, options).pipe(Effect.provide(EffectLogger.layer)))
4647
}

packages/opencode/src/tool/registry.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import { Glob } from "../util/glob"
3030
import path from "path"
3131
import { pathToFileURL } from "url"
3232
import { Effect, Layer, ServiceMap } from "effect"
33+
import { EffectLogger } from "@/effect/logger"
3334
import { FetchHttpClient, HttpClient } from "effect/unstable/http"
3435
import { ChildProcessSpawner } from "effect/unstable/process/ChildProcessSpawner"
3536
import * as CrossSpawnSpawner from "@/effect/cross-spawn-spawner"
@@ -136,7 +137,7 @@ export namespace ToolRegistry {
136137
Effect.gen(function* () {
137138
const pluginCtx: PluginToolContext = {
138139
...toolCtx,
139-
ask: (req) => Effect.runPromise(toolCtx.ask(req)),
140+
ask: (req) => Effect.runPromise(toolCtx.ask(req).pipe(Effect.provide(EffectLogger.layer))),
140141
directory: ctx.directory,
141142
worktree: ctx.worktree,
142143
}

0 commit comments

Comments
 (0)