refactor(core): replace legacy logger with Effect logging (#31310)

This commit is contained in:
Dax
2026-06-08 15:41:56 -04:00
committed by GitHub
parent 0a7cb20e66
commit c06ad7c881
152 changed files with 698 additions and 2243 deletions
+9 -12
View File
@@ -1,4 +1,3 @@
import * as Log from "@opencode-ai/core/util/log"
import path from "path"
import { Global } from "@opencode-ai/core/global"
import { FSUtil } from "@opencode-ai/core/fs-util"
@@ -6,8 +5,6 @@ import { Effect, Exit, Layer, Option, RcMap, Schema, Context, TxReentrantLock }
import { NonNegativeInt } from "@opencode-ai/core/schema"
import { Git } from "@/git"
const log = Log.create({ service: "storage" })
type Migration = (dir: string, fs: FSUtil.Interface, git: Git.Interface) => Effect.Effect<void, FSUtil.Error>
export class NotFoundError extends Schema.TaggedErrorClass<NotFoundError>()("NotFoundError", {
@@ -91,7 +88,7 @@ const MIGRATIONS: Migration[] = [
for (const projectDir of projectDirs) {
const full = path.join(project, projectDir)
if (!(yield* fs.isDir(full))) continue
log.info(`migrating project ${projectDir}`)
yield* Effect.logInfo(`migrating project ${projectDir}`)
let projectID = projectDir
let worktree = "/"
@@ -137,24 +134,24 @@ const MIGRATIONS: Migration[] = [
),
)
log.info(`migrating sessions for project ${projectID}`)
yield* Effect.logInfo(`migrating sessions for project ${projectID}`)
for (const sessionFile of yield* fs.glob("storage/session/info/*.json", {
cwd: full,
absolute: true,
})) {
const dest = path.join(dir, "session", projectID, path.basename(sessionFile))
log.info("copying", { sessionFile, dest })
yield* Effect.logInfo("copying", { sessionFile, dest })
const session = yield* fs.readJson(sessionFile)
const info = decodeSession(session, { onExcessProperty: "preserve" })
yield* fs.writeWithDirs(dest, JSON.stringify(session, null, 2))
if (Option.isNone(info)) continue
log.info(`migrating messages for session ${info.value.id}`)
yield* Effect.logInfo(`migrating messages for session ${info.value.id}`)
for (const msgFile of yield* fs.glob(`storage/session/message/${info.value.id}/*.json`, {
cwd: full,
absolute: true,
})) {
const next = path.join(dir, "message", info.value.id, path.basename(msgFile))
log.info("copying", {
yield* Effect.logInfo("copying", {
msgFile,
dest: next,
})
@@ -163,14 +160,14 @@ const MIGRATIONS: Migration[] = [
yield* fs.writeWithDirs(next, JSON.stringify(message, null, 2))
if (Option.isNone(item)) continue
log.info(`migrating parts for message ${item.value.id}`)
yield* Effect.logInfo(`migrating parts for message ${item.value.id}`)
for (const partFile of yield* fs.glob(`storage/session/part/${info.value.id}/${item.value.id}/*.json`, {
cwd: full,
absolute: true,
})) {
const out = path.join(dir, "part", item.value.id, path.basename(partFile))
const part = yield* fs.readJson(partFile)
log.info("copying", {
yield* Effect.logInfo("copying", {
partFile,
dest: out,
})
@@ -231,11 +228,11 @@ export const layer = Layer.effect(
Effect.orElseSucceed(() => 0),
)
for (let i = migration; i < MIGRATIONS.length; i++) {
log.info("running migration", { index: i })
yield* Effect.logInfo("running migration", { index: i })
const step = MIGRATIONS[i]!
const exit = yield* Effect.exit(step(dir, fs, git))
if (Exit.isFailure(exit)) {
log.error("failed to run migration", { index: i, cause: exit.cause })
yield* Effect.logError("failed to run migration", { index: i, cause: exit.cause })
break
}
yield* fs.writeWithDirs(marker, String(i + 1))