event.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { BusEvent } from "@/bus/bus-event"
  2. import { Bus } from "@/bus"
  3. import { SessionID } from "@/session/schema"
  4. import z from "zod"
  5. export const TuiEvent = {
  6. PromptAppend: BusEvent.define("tui.prompt.append", z.object({ text: z.string() })),
  7. CommandExecute: BusEvent.define(
  8. "tui.command.execute",
  9. z.object({
  10. command: z.union([
  11. z.enum([
  12. "session.list",
  13. "session.new",
  14. "session.share",
  15. "session.interrupt",
  16. "session.compact",
  17. "session.page.up",
  18. "session.page.down",
  19. "session.line.up",
  20. "session.line.down",
  21. "session.half.page.up",
  22. "session.half.page.down",
  23. "session.first",
  24. "session.last",
  25. "prompt.clear",
  26. "prompt.submit",
  27. "agent.cycle",
  28. ]),
  29. z.string(),
  30. ]),
  31. }),
  32. ),
  33. ToastShow: BusEvent.define(
  34. "tui.toast.show",
  35. z.object({
  36. title: z.string().optional(),
  37. message: z.string(),
  38. variant: z.enum(["info", "success", "warning", "error"]),
  39. duration: z.number().default(5000).optional().describe("Duration in milliseconds"),
  40. }),
  41. ),
  42. SessionSelect: BusEvent.define(
  43. "tui.session.select",
  44. z.object({
  45. sessionID: SessionID.zod.describe("Session ID to navigate to"),
  46. }),
  47. ),
  48. }