refactor: unwrap SessionV2 namespace + self-reexport (#22978)

This commit is contained in:
Kit Langton
2026-04-17 01:00:30 +00:00
committed by GitHub
parent d2cb1613ac
commit 54046e0b98
+21 -21
View File
@@ -4,39 +4,38 @@ import { Struct } from "effect"
import { Session } from "@/session" import { Session } from "@/session"
import { SessionID } from "@/session/schema" import { SessionID } from "@/session/schema"
export namespace SessionV2 { export const ID = SessionID
export const ID = SessionID
export type ID = Schema.Schema.Type<typeof ID> export type ID = Schema.Schema.Type<typeof ID>
export class PromptInput extends Schema.Class<PromptInput>("Session.PromptInput")({ export class PromptInput extends Schema.Class<PromptInput>("Session.PromptInput")({
...Struct.omit(SessionEntry.User.fields, ["time", "type"]), ...Struct.omit(SessionEntry.User.fields, ["time", "type"]),
id: Schema.optionalKey(SessionEntry.ID), id: Schema.optionalKey(SessionEntry.ID),
sessionID: SessionV2.ID, sessionID: ID,
}) {} }) {}
export class CreateInput extends Schema.Class<CreateInput>("Session.CreateInput")({ export class CreateInput extends Schema.Class<CreateInput>("Session.CreateInput")({
id: Schema.optionalKey(SessionV2.ID), id: Schema.optionalKey(ID),
}) {} }) {}
export class Info extends Schema.Class<Info>("Session.Info")({ export class Info extends Schema.Class<Info>("Session.Info")({
id: SessionV2.ID, id: ID,
model: Schema.Struct({ model: Schema.Struct({
id: Schema.String, id: Schema.String,
providerID: Schema.String, providerID: Schema.String,
modelID: Schema.String, modelID: Schema.String,
}).pipe(Schema.optional), }).pipe(Schema.optional),
}) {} }) {}
export interface Interface { export interface Interface {
fromID: (id: SessionV2.ID) => Effect.Effect<Info> fromID: (id: ID) => Effect.Effect<Info>
create: (input: CreateInput) => Effect.Effect<Info> create: (input: CreateInput) => Effect.Effect<Info>
prompt: (input: PromptInput) => Effect.Effect<SessionEntry.User> prompt: (input: PromptInput) => Effect.Effect<SessionEntry.User>
} }
export class Service extends Context.Service<Service, Interface>()("Session.Service") {} export class Service extends Context.Service<Service, Interface>()("Session.Service") {}
export const layer = Layer.effect(Service)( export const layer = Layer.effect(Service)(
Effect.gen(function* () { Effect.gen(function* () {
const session = yield* Session.Service const session = yield* Session.Service
@@ -59,11 +58,12 @@ export namespace SessionV2 {
fromID, fromID,
}) })
}), }),
) )
function fromV1(input: Session.Info): Info { function fromV1(input: Session.Info): Info {
return new Info({ return new Info({
id: SessionV2.ID.make(input.id), id: ID.make(input.id),
}) })
}
} }
export * as SessionV2 from "./session"