export * as SessionStatusEvent from "./session-status-event.js" import { Schema } from "effect" import { optional } from "./schema.js" import { Event } from "./event.js" import { NonNegativeInt } from "./schema.js" import { SessionID } from "./session-id.js" export const Info = Schema.Union([ Schema.Struct({ type: Schema.Literal("idle"), }), Schema.Struct({ type: Schema.Literal("retry"), attempt: NonNegativeInt, message: Schema.String, action: optional( Schema.Struct({ reason: Schema.String, provider: Schema.String, title: Schema.String, message: Schema.String, label: Schema.String, link: optional(Schema.String), }), ), next: NonNegativeInt, }), Schema.Struct({ type: Schema.Literal("busy"), }), ]).annotate({ identifier: "SessionStatus" }) export type Info = Schema.Schema.Type export const Status = Event.ephemeral({ type: "session.status", schema: { sessionID: SessionID, status: Info, }, }) // deprecated export const Idle = Event.ephemeral({ type: "session.idle", schema: { sessionID: SessionID, }, }) export const Definitions = Event.inventory(Status, Idle)