fix(session): hide pending admission sequence

This commit is contained in:
Dax Raad 2026-07-28 22:32:06 -04:00
commit 2a85c861e0
17 changed files with 32 additions and 48 deletions

View file

@ -3,7 +3,7 @@ export * as SessionPending from "./session-pending.js"
import { Schema } from "effect"
import { optional } from "./schema.js"
import { Prompt } from "./prompt.js"
import { DateTimeUtcFromMillis, NonNegativeInt } from "./schema.js"
import { DateTimeUtcFromMillis } from "./schema.js"
import { SessionDelivery } from "./session-delivery.js"
import { SessionID } from "./session-id.js"
import { SessionMessage } from "./session-message.js"
@ -45,7 +45,6 @@ export const Message = Schema.Union([UserMessage, SyntheticMessage]).pipe(
export type Message = typeof Message.Type
const Admitted = {
admittedSeq: NonNegativeInt,
id: SessionMessage.ID,
sessionID: SessionID,
timeCreated: DateTimeUtcFromMillis,

View file

@ -54,6 +54,29 @@ describe("contract hygiene", () => {
).toEqual({ text: "completed" })
})
test("pending session items omit the internal admission sequence", () => {
expect(
Schema.encodeSync(SessionPending.Info)(
Schema.decodeUnknownSync(SessionPending.Info)({
admittedSeq: 3,
id: "msg_pending",
sessionID: "ses_pending",
timeCreated: 1,
type: "user",
data: { text: "hello" },
delivery: "steer",
}),
),
).toEqual({
id: "msg_pending",
sessionID: "ses_pending",
timeCreated: 1,
type: "user",
data: { text: "hello" },
delivery: "steer",
})
})
test("forms require at least one field", () => {
expect(() =>
Schema.decodeUnknownSync(Form.Info)({