summaryrefslogtreecommitdiffhomepage
path: root/packages
diff options
context:
space:
mode:
authorKit Langton <[email protected]>2026-04-15 22:14:14 -0400
committerGitHub <[email protected]>2026-04-16 02:14:14 +0000
commitc6286d1bb94d208ba66a97d16445978bba7c5c6b (patch)
tree31cb821def1b81334d130ada6d817d63fb3c3507 /packages
parent710c81984aa38618ca7106b9521100a9964ae51d (diff)
downloadopencode-c6286d1bb94d208ba66a97d16445978bba7c5c6b.tar.gz
opencode-c6286d1bb94d208ba66a97d16445978bba7c5c6b.zip
feat: unwrap uenv namespace to flat exports + barrel (#22701)
Diffstat (limited to 'packages')
-rw-r--r--packages/opencode/src/env/env.ts35
-rw-r--r--packages/opencode/src/env/index.ts38
2 files changed, 36 insertions, 37 deletions
diff --git a/packages/opencode/src/env/env.ts b/packages/opencode/src/env/env.ts
new file mode 100644
index 000000000..0ffd5ebdc
--- /dev/null
+++ b/packages/opencode/src/env/env.ts
@@ -0,0 +1,35 @@
+import { Context, Effect, Layer } from "effect"
+import { InstanceState } from "@/effect/instance-state"
+
+type State = Record<string, string | undefined>
+
+export interface Interface {
+ readonly get: (key: string) => Effect.Effect<string | undefined>
+ readonly all: () => Effect.Effect<State>
+ readonly set: (key: string, value: string) => Effect.Effect<void>
+ readonly remove: (key: string) => Effect.Effect<void>
+}
+
+export class Service extends Context.Service<Service, Interface>()("@opencode/Env") {}
+
+export const layer = Layer.effect(
+ Service,
+ Effect.gen(function* () {
+ const state = yield* InstanceState.make<State>(Effect.fn("Env.state")(() => Effect.succeed({ ...process.env })))
+
+ const get = Effect.fn("Env.get")((key: string) => InstanceState.use(state, (env) => env[key]))
+ const all = Effect.fn("Env.all")(() => InstanceState.get(state))
+ const set = Effect.fn("Env.set")(function* (key: string, value: string) {
+ const env = yield* InstanceState.get(state)
+ env[key] = value
+ })
+ const remove = Effect.fn("Env.remove")(function* (key: string) {
+ const env = yield* InstanceState.get(state)
+ delete env[key]
+ })
+
+ return Service.of({ get, all, set, remove })
+ }),
+)
+
+export const defaultLayer = layer
diff --git a/packages/opencode/src/env/index.ts b/packages/opencode/src/env/index.ts
index b9efb6852..c589edbfd 100644
--- a/packages/opencode/src/env/index.ts
+++ b/packages/opencode/src/env/index.ts
@@ -1,37 +1 @@
-import { Context, Effect, Layer } from "effect"
-import { InstanceState } from "@/effect/instance-state"
-
-export namespace Env {
- type State = Record<string, string | undefined>
-
- export interface Interface {
- readonly get: (key: string) => Effect.Effect<string | undefined>
- readonly all: () => Effect.Effect<State>
- readonly set: (key: string, value: string) => Effect.Effect<void>
- readonly remove: (key: string) => Effect.Effect<void>
- }
-
- export class Service extends Context.Service<Service, Interface>()("@opencode/Env") {}
-
- export const layer = Layer.effect(
- Service,
- Effect.gen(function* () {
- const state = yield* InstanceState.make<State>(Effect.fn("Env.state")(() => Effect.succeed({ ...process.env })))
-
- const get = Effect.fn("Env.get")((key: string) => InstanceState.use(state, (env) => env[key]))
- const all = Effect.fn("Env.all")(() => InstanceState.get(state))
- const set = Effect.fn("Env.set")(function* (key: string, value: string) {
- const env = yield* InstanceState.get(state)
- env[key] = value
- })
- const remove = Effect.fn("Env.remove")(function* (key: string) {
- const env = yield* InstanceState.get(state)
- delete env[key]
- })
-
- return Service.of({ get, all, set, remove })
- }),
- )
-
- export const defaultLayer = layer
-}
+export * as Env from "./env"