2026-03-11 23:16:56 +00:00
|
|
|
import { SessionID } from "@/session/schema"
|
2026-05-09 19:51:09 +00:00
|
|
|
import { PositiveInt } from "@opencode-ai/core/schema"
|
2026-05-31 01:08:38 +00:00
|
|
|
import { EventV2 } from "@opencode-ai/core/event"
|
2026-04-26 22:27:02 +00:00
|
|
|
import { Effect, Schema } from "effect"
|
|
|
|
|
|
|
|
|
|
const DEFAULT_TOAST_DURATION = 5000
|
2025-10-31 19:07:36 +00:00
|
|
|
|
|
|
|
|
export const TuiEvent = {
|
2026-05-31 01:08:38 +00:00
|
|
|
PromptAppend: EventV2.define({ type: "tui.prompt.append", schema: { text: Schema.String } }),
|
|
|
|
|
CommandExecute: EventV2.define({
|
|
|
|
|
type: "tui.command.execute",
|
|
|
|
|
schema: {
|
2026-04-23 19:37:44 +00:00
|
|
|
command: Schema.Union([
|
|
|
|
|
Schema.Literals([
|
2025-10-31 19:07:36 +00:00
|
|
|
"session.list",
|
|
|
|
|
"session.new",
|
|
|
|
|
"session.share",
|
|
|
|
|
"session.interrupt",
|
|
|
|
|
"session.compact",
|
|
|
|
|
"session.page.up",
|
|
|
|
|
"session.page.down",
|
2026-01-18 03:54:26 +00:00
|
|
|
"session.line.up",
|
|
|
|
|
"session.line.down",
|
2025-10-31 19:07:36 +00:00
|
|
|
"session.half.page.up",
|
|
|
|
|
"session.half.page.down",
|
|
|
|
|
"session.first",
|
|
|
|
|
"session.last",
|
|
|
|
|
"prompt.clear",
|
|
|
|
|
"prompt.submit",
|
|
|
|
|
"agent.cycle",
|
|
|
|
|
]),
|
2026-04-23 19:37:44 +00:00
|
|
|
Schema.String,
|
2025-10-31 19:07:36 +00:00
|
|
|
]),
|
2026-05-31 01:08:38 +00:00
|
|
|
},
|
|
|
|
|
}),
|
|
|
|
|
ToastShow: EventV2.define({
|
|
|
|
|
type: "tui.toast.show",
|
|
|
|
|
schema: {
|
2026-04-23 19:37:44 +00:00
|
|
|
title: Schema.optional(Schema.String),
|
|
|
|
|
message: Schema.String,
|
|
|
|
|
variant: Schema.Literals(["info", "success", "warning", "error"]),
|
2026-04-29 13:34:50 +00:00
|
|
|
duration: PositiveInt.pipe(Schema.withDecodingDefault(Effect.succeed(DEFAULT_TOAST_DURATION))).annotate({
|
2026-04-26 22:27:02 +00:00
|
|
|
description: "Duration in milliseconds",
|
|
|
|
|
}),
|
2026-05-31 01:08:38 +00:00
|
|
|
},
|
|
|
|
|
}),
|
|
|
|
|
SessionSelect: EventV2.define({
|
|
|
|
|
type: "tui.session.select",
|
|
|
|
|
schema: {
|
2026-04-23 19:37:44 +00:00
|
|
|
sessionID: SessionID.annotate({ description: "Session ID to navigate to" }),
|
2026-05-31 01:08:38 +00:00
|
|
|
},
|
|
|
|
|
}),
|
2025-10-31 19:07:36 +00:00
|
|
|
}
|