51 lines
1.2 KiB
TypeScript
51 lines
1.2 KiB
TypeScript
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<typeof Info>
|
|
|
|
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)
|