refactor: destroy SessionStatus facade (#21968)

This commit is contained in:
Kit Langton
2026-04-10 22:16:53 -04:00
committed by GitHub
parent b898c6d0ea
commit f99812443c
4 changed files with 14 additions and 22 deletions
@@ -336,5 +336,6 @@ For each service, the migration is roughly:
### Migration log ### Migration log
- `SessionStatus` — migrated 2026-04-11. Replaced the last route and retry-policy callers with `AppRuntime.runPromise(SessionStatus.Service.use(...))` and removed the `makeRuntime(...)` facade.
- `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. - `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.
- `Storage` — migrated 2026-04-10. One production caller (`Session.diff`) and all storage.test.ts tests converted to effectful style. Facades and `makeRuntime` removed. - `Storage` — migrated 2026-04-10. One production caller (`Session.diff`) and all storage.test.ts tests converted to effectful style. Facades and `makeRuntime` removed.
@@ -94,7 +94,7 @@ export const SessionRoutes = lazy(() =>
}, },
}), }),
async (c) => { async (c) => {
const result = await SessionStatus.list() const result = await AppRuntime.runPromise(SessionStatus.Service.use((svc) => svc.list()))
return c.json(Object.fromEntries(result)) return c.json(Object.fromEntries(result))
}, },
) )
-14
View File
@@ -1,7 +1,6 @@
import { BusEvent } from "@/bus/bus-event" import { BusEvent } from "@/bus/bus-event"
import { Bus } from "@/bus" import { Bus } from "@/bus"
import { InstanceState } from "@/effect/instance-state" import { InstanceState } from "@/effect/instance-state"
import { makeRuntime } from "@/effect/run-service"
import { SessionID } from "./schema" import { SessionID } from "./schema"
import { Effect, Layer, ServiceMap } from "effect" import { Effect, Layer, ServiceMap } from "effect"
import z from "zod" import z from "zod"
@@ -86,17 +85,4 @@ export namespace SessionStatus {
) )
export const defaultLayer = layer.pipe(Layer.provide(Bus.layer)) export const defaultLayer = layer.pipe(Layer.provide(Bus.layer))
const { runPromise } = makeRuntime(Service, defaultLayer)
export async function get(sessionID: SessionID) {
return runPromise((svc) => svc.get(sessionID))
}
export async function list() {
return runPromise((svc) => svc.list())
}
export async function set(sessionID: SessionID, status: Info) {
return runPromise((svc) => svc.set(sessionID, status))
}
} }
+12 -7
View File
@@ -6,6 +6,7 @@ import { Effect, Schedule } from "effect"
import { SessionRetry } from "../../src/session/retry" import { SessionRetry } from "../../src/session/retry"
import { MessageV2 } from "../../src/session/message-v2" import { MessageV2 } from "../../src/session/message-v2"
import { ProviderID } from "../../src/provider/schema" import { ProviderID } from "../../src/provider/schema"
import { AppRuntime } from "../../src/effect/app-runtime"
import { SessionID } from "../../src/session/schema" import { SessionID } from "../../src/session/schema"
import { SessionStatus } from "../../src/session/status" import { SessionStatus } from "../../src/session/status"
import { Instance } from "../../src/project/instance" import { Instance } from "../../src/project/instance"
@@ -94,12 +95,16 @@ describe("session.retry.delay", () => {
parse: (err) => err as MessageV2.APIError, parse: (err) => err as MessageV2.APIError,
set: (info) => set: (info) =>
Effect.promise(() => Effect.promise(() =>
SessionStatus.set(sessionID, { AppRuntime.runPromise(
type: "retry", SessionStatus.Service.use((svc) =>
attempt: info.attempt, svc.set(sessionID, {
message: info.message, type: "retry",
next: info.next, attempt: info.attempt,
}), message: info.message,
next: info.next,
}),
),
),
), ),
}), }),
) )
@@ -108,7 +113,7 @@ describe("session.retry.delay", () => {
}), }),
) )
expect(await SessionStatus.get(sessionID)).toMatchObject({ expect(await AppRuntime.runPromise(SessionStatus.Service.use((svc) => svc.get(sessionID)))).toMatchObject({
type: "retry", type: "retry",
attempt: 2, attempt: 2,
message: "boom", message: "boom",