Skip to content

Commit f998124

Browse files
authored
refactor: destroy SessionStatus facade (#21968)
1 parent b898c6d commit f998124

4 files changed

Lines changed: 14 additions & 22 deletions

File tree

packages/opencode/specs/effect-migration.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,5 +336,6 @@ For each service, the migration is roughly:
336336

337337
### Migration log
338338

339+
- `SessionStatus` — migrated 2026-04-11. Replaced the last route and retry-policy callers with `AppRuntime.runPromise(SessionStatus.Service.use(...))` and removed the `makeRuntime(...)` facade.
339340
- `ShareNext` — migrated 2026-04-11. Swapped remaining async callers to `AppRuntime.runPromise(ShareNext.Service.use(...))`, removed the `makeRuntime(...)` facade, and kept instance bootstrap on the shared app runtime.
340341
- `Storage` — migrated 2026-04-10. One production caller (`Session.diff`) and all storage.test.ts tests converted to effectful style. Facades and `makeRuntime` removed.

packages/opencode/src/server/routes/session.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ export const SessionRoutes = lazy(() =>
9494
},
9595
}),
9696
async (c) => {
97-
const result = await SessionStatus.list()
97+
const result = await AppRuntime.runPromise(SessionStatus.Service.use((svc) => svc.list()))
9898
return c.json(Object.fromEntries(result))
9999
},
100100
)

packages/opencode/src/session/status.ts

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { BusEvent } from "@/bus/bus-event"
22
import { Bus } from "@/bus"
33
import { InstanceState } from "@/effect/instance-state"
4-
import { makeRuntime } from "@/effect/run-service"
54
import { SessionID } from "./schema"
65
import { Effect, Layer, ServiceMap } from "effect"
76
import z from "zod"
@@ -86,17 +85,4 @@ export namespace SessionStatus {
8685
)
8786

8887
export const defaultLayer = layer.pipe(Layer.provide(Bus.layer))
89-
const { runPromise } = makeRuntime(Service, defaultLayer)
90-
91-
export async function get(sessionID: SessionID) {
92-
return runPromise((svc) => svc.get(sessionID))
93-
}
94-
95-
export async function list() {
96-
return runPromise((svc) => svc.list())
97-
}
98-
99-
export async function set(sessionID: SessionID, status: Info) {
100-
return runPromise((svc) => svc.set(sessionID, status))
101-
}
10288
}

packages/opencode/test/session/retry.test.ts

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { Effect, Schedule } from "effect"
66
import { SessionRetry } from "../../src/session/retry"
77
import { MessageV2 } from "../../src/session/message-v2"
88
import { ProviderID } from "../../src/provider/schema"
9+
import { AppRuntime } from "../../src/effect/app-runtime"
910
import { SessionID } from "../../src/session/schema"
1011
import { SessionStatus } from "../../src/session/status"
1112
import { Instance } from "../../src/project/instance"
@@ -94,12 +95,16 @@ describe("session.retry.delay", () => {
9495
parse: (err) => err as MessageV2.APIError,
9596
set: (info) =>
9697
Effect.promise(() =>
97-
SessionStatus.set(sessionID, {
98-
type: "retry",
99-
attempt: info.attempt,
100-
message: info.message,
101-
next: info.next,
102-
}),
98+
AppRuntime.runPromise(
99+
SessionStatus.Service.use((svc) =>
100+
svc.set(sessionID, {
101+
type: "retry",
102+
attempt: info.attempt,
103+
message: info.message,
104+
next: info.next,
105+
}),
106+
),
107+
),
103108
),
104109
}),
105110
)
@@ -108,7 +113,7 @@ describe("session.retry.delay", () => {
108113
}),
109114
)
110115

111-
expect(await SessionStatus.get(sessionID)).toMatchObject({
116+
expect(await AppRuntime.runPromise(SessionStatus.Service.use((svc) => svc.get(sessionID)))).toMatchObject({
112117
type: "retry",
113118
attempt: 2,
114119
message: "boom",

0 commit comments

Comments
 (0)