47 lines
1.2 KiB
TypeScript
47 lines
1.2 KiB
TypeScript
import { BusEvent } from "@/bus/bus-event"
|
|
import { Bus } from "@/bus"
|
|
import z from "zod"
|
|
|
|
export const TuiEvent = {
|
|
PromptAppend: BusEvent.define("tui.prompt.append", z.object({ text: z.string() })),
|
|
CommandExecute: BusEvent.define(
|
|
"tui.command.execute",
|
|
z.object({
|
|
command: z.union([
|
|
z.enum([
|
|
"session.list",
|
|
"session.new",
|
|
"session.share",
|
|
"session.interrupt",
|
|
"session.compact",
|
|
"session.page.up",
|
|
"session.page.down",
|
|
"session.half.page.up",
|
|
"session.half.page.down",
|
|
"session.first",
|
|
"session.last",
|
|
"prompt.clear",
|
|
"prompt.submit",
|
|
"agent.cycle",
|
|
]),
|
|
z.string(),
|
|
]),
|
|
}),
|
|
),
|
|
ToastShow: BusEvent.define(
|
|
"tui.toast.show",
|
|
z.object({
|
|
title: z.string().optional(),
|
|
message: z.string(),
|
|
variant: z.enum(["info", "success", "warning", "error"]),
|
|
duration: z.number().default(5000).optional().describe("Duration in milliseconds"),
|
|
}),
|
|
),
|
|
SessionSelect: BusEvent.define(
|
|
"tui.session.select",
|
|
z.object({
|
|
sessionID: z.string().regex(/^ses/).describe("Session ID to navigate to"),
|
|
}),
|
|
),
|
|
}
|