Files
opencode/packages/schema/src/session-status-event.ts

51 lines
1.1 KiB
TypeScript

export * as SessionStatusEvent from "./session-status-event"
import { Schema } from "effect"
import { Event } from "./event"
import { NonNegativeInt } from "./schema"
import { SessionID } from "./session-id"
export const Info = Schema.Union([
Schema.Struct({
type: Schema.Literal("idle"),
}),
Schema.Struct({
type: Schema.Literal("retry"),
attempt: NonNegativeInt,
message: Schema.String,
action: Schema.optional(
Schema.Struct({
reason: Schema.String,
provider: Schema.String,
title: Schema.String,
message: Schema.String,
label: Schema.String,
link: Schema.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.define({
type: "session.status",
schema: {
sessionID: SessionID,
status: Info,
},
})
// deprecated
export const Idle = Event.define({
type: "session.idle",
schema: {
sessionID: SessionID,
},
})
export const Definitions = Event.inventory(Status, Idle)