summaryrefslogtreecommitdiffhomepage
path: root/packages
diff options
context:
space:
mode:
authorKit Langton <[email protected]>2026-04-16 21:00:30 -0400
committerGitHub <[email protected]>2026-04-17 01:00:30 +0000
commit54046e0b985d8ffd5e343cadcc479570b96f8a5b (patch)
tree8f12e49db58eeb2963f70dbfeb7b4a80ddbb046b /packages
parentd2cb1613ace83609db6a60f3065914e322f93d02 (diff)
downloadopencode-54046e0b985d8ffd5e343cadcc479570b96f8a5b.tar.gz
opencode-54046e0b985d8ffd5e343cadcc479570b96f8a5b.zip
refactor: unwrap SessionV2 namespace + self-reexport (#22978)
Diffstat (limited to 'packages')
-rw-r--r--packages/opencode/src/v2/session.ts100
1 files changed, 50 insertions, 50 deletions
diff --git a/packages/opencode/src/v2/session.ts b/packages/opencode/src/v2/session.ts
index ce1b39031..79a691612 100644
--- a/packages/opencode/src/v2/session.ts
+++ b/packages/opencode/src/v2/session.ts
@@ -4,66 +4,66 @@ import { Struct } from "effect"
import { Session } from "@/session"
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")({
- ...Struct.omit(SessionEntry.User.fields, ["time", "type"]),
- id: Schema.optionalKey(SessionEntry.ID),
- sessionID: SessionV2.ID,
- }) {}
+export class PromptInput extends Schema.Class<PromptInput>("Session.PromptInput")({
+ ...Struct.omit(SessionEntry.User.fields, ["time", "type"]),
+ id: Schema.optionalKey(SessionEntry.ID),
+ sessionID: ID,
+}) {}
- export class CreateInput extends Schema.Class<CreateInput>("Session.CreateInput")({
- id: Schema.optionalKey(SessionV2.ID),
- }) {}
+export class CreateInput extends Schema.Class<CreateInput>("Session.CreateInput")({
+ id: Schema.optionalKey(ID),
+}) {}
- export class Info extends Schema.Class<Info>("Session.Info")({
- id: SessionV2.ID,
- model: Schema.Struct({
- id: Schema.String,
- providerID: Schema.String,
- modelID: Schema.String,
- }).pipe(Schema.optional),
- }) {}
+export class Info extends Schema.Class<Info>("Session.Info")({
+ id: ID,
+ model: Schema.Struct({
+ id: Schema.String,
+ providerID: Schema.String,
+ modelID: Schema.String,
+ }).pipe(Schema.optional),
+}) {}
- export interface Interface {
- fromID: (id: SessionV2.ID) => Effect.Effect<Info>
- create: (input: CreateInput) => Effect.Effect<Info>
- prompt: (input: PromptInput) => Effect.Effect<SessionEntry.User>
- }
-
- export class Service extends Context.Service<Service, Interface>()("Session.Service") {}
+export interface Interface {
+ fromID: (id: ID) => Effect.Effect<Info>
+ create: (input: CreateInput) => Effect.Effect<Info>
+ prompt: (input: PromptInput) => Effect.Effect<SessionEntry.User>
+}
- export const layer = Layer.effect(Service)(
- Effect.gen(function* () {
- const session = yield* Session.Service
+export class Service extends Context.Service<Service, Interface>()("Session.Service") {}
- const create: Interface["create"] = Effect.fn("Session.create")(function* (_input) {
- throw new Error("Not implemented")
- })
+export const layer = Layer.effect(Service)(
+ Effect.gen(function* () {
+ const session = yield* Session.Service
- const prompt: Interface["prompt"] = Effect.fn("Session.prompt")(function* (_input) {
- throw new Error("Not implemented")
- })
+ const create: Interface["create"] = Effect.fn("Session.create")(function* (_input) {
+ throw new Error("Not implemented")
+ })
- const fromID: Interface["fromID"] = Effect.fn("Session.fromID")(function* (id) {
- const match = yield* session.get(id)
- return fromV1(match)
- })
+ const prompt: Interface["prompt"] = Effect.fn("Session.prompt")(function* (_input) {
+ throw new Error("Not implemented")
+ })
- return Service.of({
- create,
- prompt,
- fromID,
- })
- }),
- )
+ const fromID: Interface["fromID"] = Effect.fn("Session.fromID")(function* (id) {
+ const match = yield* session.get(id)
+ return fromV1(match)
+ })
- function fromV1(input: Session.Info): Info {
- return new Info({
- id: SessionV2.ID.make(input.id),
+ return Service.of({
+ create,
+ prompt,
+ fromID,
})
- }
+ }),
+)
+
+function fromV1(input: Session.Info): Info {
+ return new Info({
+ id: ID.make(input.id),
+ })
}
+
+export * as SessionV2 from "./session"