tui-plugin.ts 1020 B

1234567891011121314151617181920212223242526
  1. import type { TuiPluginApi } from "@opencode-ai/plugin/v1/tui"
  2. import { RGBA } from "@opentui/core"
  3. import { createTuiResolvedConfig } from "./tui-runtime"
  4. type Opts = {
  5. client?: TuiPluginApi["client"]
  6. keymap?: TuiPluginApi["keymap"]
  7. attention?: Partial<TuiPluginApi["attention"]>
  8. event?: TuiPluginApi["event"]
  9. state?: { session?: Partial<TuiPluginApi["state"]["session"]> }
  10. }
  11. export function createTuiPluginApi(opts: Opts = {}) {
  12. const color = RGBA.fromInts(200, 200, 200)
  13. const dialog = { clear() {}, replace() {}, setSize() {}, size: "medium" as const, depth: 0, open: false }
  14. return {
  15. attention: { notify: async () => ({ ok: false, notification: false, sound: false }), ...opts.attention },
  16. client: opts.client,
  17. event: opts.event,
  18. keymap: opts.keymap,
  19. state: { session: { get: () => undefined, ...opts.state?.session } },
  20. theme: { current: new Proxy({}, { get: () => color }) },
  21. tuiConfig: createTuiResolvedConfig(),
  22. ui: { dialog },
  23. } as unknown as TuiPluginApi
  24. }