summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDax <[email protected]>2026-05-02 23:24:46 -0400
committerGitHub <[email protected]>2026-05-03 03:24:46 +0000
commit33312bfd1b32745417fc56928d46f384ead2e10b (patch)
tree540fd8788bce5ba0eada324bf5896e9c73d97436
parent3f1ce36418835423b79cf4a50f9086a538c37f12 (diff)
downloadopencode-33312bfd1b32745417fc56928d46f384ead2e10b.tar.gz
opencode-33312bfd1b32745417fc56928d46f384ead2e10b.zip
fix(session): encode v2 session responses (#25528)
-rw-r--r--packages/opencode/src/v2/session.ts19
1 files changed, 10 insertions, 9 deletions
diff --git a/packages/opencode/src/v2/session.ts b/packages/opencode/src/v2/session.ts
index 1777b875a..1f4cbcf1e 100644
--- a/packages/opencode/src/v2/session.ts
+++ b/packages/opencode/src/v2/session.ts
@@ -11,6 +11,7 @@ import { ProjectID } from "@/project/schema"
import { ModelID, ProviderID } from "@/provider/schema"
import { SessionEvent } from "./session-event"
import { V2Schema } from "./schema"
+import { optionalOmitUndefined } from "@/util/schema"
export const Delivery = Schema.Union([Schema.Literal("immediate"), Schema.Literal("deferred")]).annotate({
identifier: "Session.Delivery",
@@ -21,20 +22,20 @@ export const DefaultDelivery = "immediate" satisfies Delivery
export class Info extends Schema.Class<Info>("Session.Info")({
id: SessionID,
- parentID: SessionID.pipe(Schema.optional),
+ parentID: optionalOmitUndefined(SessionID),
projectID: ProjectID,
- workspaceID: WorkspaceID.pipe(Schema.optional),
- path: Schema.String.pipe(Schema.optional),
- agent: Schema.String.pipe(Schema.optional),
+ workspaceID: optionalOmitUndefined(WorkspaceID),
+ path: optionalOmitUndefined(Schema.String),
+ agent: optionalOmitUndefined(Schema.String),
model: Schema.Struct({
id: ModelID,
providerID: ProviderID,
- variant: Schema.String.pipe(Schema.optional),
- }).pipe(Schema.optional),
+ variant: optionalOmitUndefined(Schema.String),
+ }).pipe(optionalOmitUndefined),
time: Schema.Struct({
created: V2Schema.DateTimeUtcFromMillis,
updated: V2Schema.DateTimeUtcFromMillis,
- archived: V2Schema.DateTimeUtcFromMillis.pipe(Schema.optional),
+ archived: optionalOmitUndefined(V2Schema.DateTimeUtcFromMillis),
}),
title: Schema.String,
/*
@@ -109,7 +110,7 @@ export const layer = Layer.effect(
decodeMessage({ ...row.data, id: row.id, type: row.type })
function fromRow(row: typeof SessionTable.$inferSelect): Info {
- return {
+ return new Info({
id: SessionID.make(row.id),
projectID: ProjectID.make(row.project_id),
workspaceID: row.workspace_id ? WorkspaceID.make(row.workspace_id) : undefined,
@@ -129,7 +130,7 @@ export const layer = Layer.effect(
updated: DateTime.makeUnsafe(row.time_updated),
archived: row.time_archived ? DateTime.makeUnsafe(row.time_archived) : undefined,
},
- }
+ })
}
const result: Interface = {