Compare commits

...

1 Commits

Author SHA1 Message Date
Kit Langton 0f618408fa feat: unwrap LocalContext namespace to flat exports + barrel 2026-04-15 22:46:10 -04:00
8 changed files with 26 additions and 27 deletions
@@ -1,4 +1,4 @@
import { LocalContext } from "../util/local-context" import { LocalContext } from "../util"
import type { WorkspaceID } from "../control-plane/schema" import type { WorkspaceID } from "../control-plane/schema"
export interface WorkspaceContext { export interface WorkspaceContext {
+1 -1
View File
@@ -1,7 +1,7 @@
import { Effect, Fiber } from "effect" import { Effect, Fiber } from "effect"
import { WorkspaceContext } from "@/control-plane/workspace-context" import { WorkspaceContext } from "@/control-plane/workspace-context"
import { Instance, type InstanceContext } from "@/project/instance" import { Instance, type InstanceContext } from "@/project/instance"
import { LocalContext } from "@/util/local-context" import { LocalContext } from "@/util"
import { InstanceRef, WorkspaceRef } from "./instance-ref" import { InstanceRef, WorkspaceRef } from "./instance-ref"
import { attachWith } from "./run-service" import { attachWith } from "./run-service"
@@ -1,7 +1,7 @@
import { Effect, Fiber, ScopedCache, Scope, Context } from "effect" import { Effect, Fiber, ScopedCache, Scope, Context } from "effect"
import { EffectLogger } from "@/effect/logger" import { EffectLogger } from "@/effect/logger"
import { Instance, type InstanceContext } from "@/project/instance" import { Instance, type InstanceContext } from "@/project/instance"
import { LocalContext } from "@/util/local-context" import { LocalContext } from "@/util"
import { InstanceRef, WorkspaceRef } from "./instance-ref" import { InstanceRef, WorkspaceRef } from "./instance-ref"
import { registerDisposer } from "./instance-registry" import { registerDisposer } from "./instance-registry"
import { WorkspaceContext } from "@/control-plane/workspace-context" import { WorkspaceContext } from "@/control-plane/workspace-context"
+1 -1
View File
@@ -1,7 +1,7 @@
import { Effect, Layer, ManagedRuntime } from "effect" import { Effect, Layer, ManagedRuntime } from "effect"
import * as Context from "effect/Context" import * as Context from "effect/Context"
import { Instance } from "@/project/instance" import { Instance } from "@/project/instance"
import { LocalContext } from "@/util/local-context" import { LocalContext } from "@/util"
import { InstanceRef, WorkspaceRef } from "./instance-ref" import { InstanceRef, WorkspaceRef } from "./instance-ref"
import { Observability } from "./observability" import { Observability } from "./observability"
import { WorkspaceContext } from "@/control-plane/workspace-context" import { WorkspaceContext } from "@/control-plane/workspace-context"
+1 -1
View File
@@ -4,7 +4,7 @@ import { makeRuntime } from "@/effect/run-service"
import { AppFileSystem } from "@opencode-ai/shared/filesystem" import { AppFileSystem } from "@opencode-ai/shared/filesystem"
import { iife } from "@/util/iife" import { iife } from "@/util/iife"
import { Log } from "@/util/log" import { Log } from "@/util/log"
import { LocalContext } from "../util/local-context" import { LocalContext } from "../util"
import { Project } from "./project" import { Project } from "./project"
import { WorkspaceContext } from "@/control-plane/workspace-context" import { WorkspaceContext } from "@/control-plane/workspace-context"
+1 -1
View File
@@ -2,7 +2,7 @@ import { type SQLiteBunDatabase } from "drizzle-orm/bun-sqlite"
import { migrate } from "drizzle-orm/bun-sqlite/migrator" import { migrate } from "drizzle-orm/bun-sqlite/migrator"
import { type SQLiteTransaction } from "drizzle-orm/sqlite-core" import { type SQLiteTransaction } from "drizzle-orm/sqlite-core"
export * from "drizzle-orm" export * from "drizzle-orm"
import { LocalContext } from "../util/local-context" import { LocalContext } from "../util"
import { lazy } from "../util/lazy" import { lazy } from "../util/lazy"
import { Global } from "../global" import { Global } from "../global"
import { Log } from "../util/log" import { Log } from "../util/log"
+1
View File
@@ -0,0 +1 @@
export * as LocalContext from "./local-context"
+19 -21
View File
@@ -1,25 +1,23 @@
import { AsyncLocalStorage } from "async_hooks" import { AsyncLocalStorage } from "async_hooks"
export namespace LocalContext { export class NotFound extends Error {
export class NotFound extends Error { constructor(public override readonly name: string) {
constructor(public override readonly name: string) { super(`No context found for ${name}`)
super(`No context found for ${name}`) }
} }
}
export function create<T>(name: string) {
export function create<T>(name: string) { const storage = new AsyncLocalStorage<T>()
const storage = new AsyncLocalStorage<T>() return {
return { use() {
use() { const result = storage.getStore()
const result = storage.getStore() if (!result) {
if (!result) { throw new NotFound(name)
throw new NotFound(name) }
} return result
return result },
}, provide<R>(value: T, fn: () => R) {
provide<R>(value: T, fn: () => R) { return storage.run(value, fn)
return storage.run(value, fn) },
},
}
} }
} }