keybinds_config.py 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492
  1. from collections.abc import Mapping
  2. from typing import Any, TypeVar, Union
  3. from attrs import define as _attrs_define
  4. from ..types import UNSET, Unset
  5. T = TypeVar("T", bound="KeybindsConfig")
  6. @_attrs_define
  7. class KeybindsConfig:
  8. """Custom keybind configurations
  9. Attributes:
  10. leader (Union[Unset, str]): Leader key for keybind combinations Default: 'ctrl+x'.
  11. app_help (Union[Unset, str]): Show help dialog Default: '<leader>h'.
  12. app_exit (Union[Unset, str]): Exit the application Default: 'ctrl+c,<leader>q'.
  13. editor_open (Union[Unset, str]): Open external editor Default: '<leader>e'.
  14. theme_list (Union[Unset, str]): List available themes Default: '<leader>t'.
  15. project_init (Union[Unset, str]): Create/update AGENTS.md Default: '<leader>i'.
  16. tool_details (Union[Unset, str]): Toggle tool details Default: '<leader>d'.
  17. thinking_blocks (Union[Unset, str]): Toggle thinking blocks Default: '<leader>b'.
  18. session_export (Union[Unset, str]): Export session to editor Default: '<leader>x'.
  19. session_new (Union[Unset, str]): Create a new session Default: '<leader>n'.
  20. session_list (Union[Unset, str]): List all sessions Default: '<leader>l'.
  21. session_timeline (Union[Unset, str]): Show session timeline Default: '<leader>g'.
  22. session_share (Union[Unset, str]): Share current session Default: '<leader>s'.
  23. session_unshare (Union[Unset, str]): Unshare current session Default: 'none'.
  24. session_interrupt (Union[Unset, str]): Interrupt current session Default: 'esc'.
  25. session_compact (Union[Unset, str]): Compact the session Default: '<leader>c'.
  26. session_child_cycle (Union[Unset, str]): Cycle to next child session Default: 'ctrl+right'.
  27. session_child_cycle_reverse (Union[Unset, str]): Cycle to previous child session Default: 'ctrl+left'.
  28. messages_page_up (Union[Unset, str]): Scroll messages up by one page Default: 'pgup'.
  29. messages_page_down (Union[Unset, str]): Scroll messages down by one page Default: 'pgdown'.
  30. messages_half_page_up (Union[Unset, str]): Scroll messages up by half page Default: 'ctrl+alt+u'.
  31. messages_half_page_down (Union[Unset, str]): Scroll messages down by half page Default: 'ctrl+alt+d'.
  32. messages_first (Union[Unset, str]): Navigate to first message Default: 'ctrl+g'.
  33. messages_last (Union[Unset, str]): Navigate to last message Default: 'ctrl+alt+g'.
  34. messages_copy (Union[Unset, str]): Copy message Default: '<leader>y'.
  35. messages_undo (Union[Unset, str]): Undo message Default: '<leader>u'.
  36. messages_redo (Union[Unset, str]): Redo message Default: '<leader>r'.
  37. model_list (Union[Unset, str]): List available models Default: '<leader>m'.
  38. model_cycle_recent (Union[Unset, str]): Next recent model Default: 'f2'.
  39. model_cycle_recent_reverse (Union[Unset, str]): Previous recent model Default: 'shift+f2'.
  40. model_cycle_favorite (Union[Unset, str]): Next favorite model Default: 'none'.
  41. model_cycle_favorite_reverse (Union[Unset, str]): Previous favorite model Default: 'none'.
  42. agent_list (Union[Unset, str]): List agents Default: '<leader>a'.
  43. agent_cycle (Union[Unset, str]): Next agent Default: 'tab'.
  44. agent_cycle_reverse (Union[Unset, str]): Previous agent Default: 'shift+tab'.
  45. input_clear (Union[Unset, str]): Clear input field Default: 'ctrl+c'.
  46. input_paste (Union[Unset, str]): Paste from clipboard Default: 'ctrl+v'.
  47. input_submit (Union[Unset, str]): Submit input Default: 'enter'.
  48. input_newline (Union[Unset, str]): Insert newline in input Default: 'shift+enter,ctrl+j'.
  49. switch_mode (Union[Unset, str]): @deprecated use agent_cycle. Next mode Default: 'none'.
  50. switch_mode_reverse (Union[Unset, str]): @deprecated use agent_cycle_reverse. Previous mode Default: 'none'.
  51. switch_agent (Union[Unset, str]): @deprecated use agent_cycle. Next agent Default: 'tab'.
  52. switch_agent_reverse (Union[Unset, str]): @deprecated use agent_cycle_reverse. Previous agent Default:
  53. 'shift+tab'.
  54. file_list (Union[Unset, str]): @deprecated Currently not available. List files Default: 'none'.
  55. file_close (Union[Unset, str]): @deprecated Close file Default: 'none'.
  56. file_search (Union[Unset, str]): @deprecated Search file Default: 'none'.
  57. file_diff_toggle (Union[Unset, str]): @deprecated Split/unified diff Default: 'none'.
  58. messages_previous (Union[Unset, str]): @deprecated Navigate to previous message Default: 'none'.
  59. messages_next (Union[Unset, str]): @deprecated Navigate to next message Default: 'none'.
  60. messages_layout_toggle (Union[Unset, str]): @deprecated Toggle layout Default: 'none'.
  61. messages_revert (Union[Unset, str]): @deprecated use messages_undo. Revert message Default: 'none'.
  62. """
  63. leader: Union[Unset, str] = "ctrl+x"
  64. app_help: Union[Unset, str] = "<leader>h"
  65. app_exit: Union[Unset, str] = "ctrl+c,<leader>q"
  66. editor_open: Union[Unset, str] = "<leader>e"
  67. theme_list: Union[Unset, str] = "<leader>t"
  68. project_init: Union[Unset, str] = "<leader>i"
  69. tool_details: Union[Unset, str] = "<leader>d"
  70. thinking_blocks: Union[Unset, str] = "<leader>b"
  71. session_export: Union[Unset, str] = "<leader>x"
  72. session_new: Union[Unset, str] = "<leader>n"
  73. session_list: Union[Unset, str] = "<leader>l"
  74. session_timeline: Union[Unset, str] = "<leader>g"
  75. session_share: Union[Unset, str] = "<leader>s"
  76. session_unshare: Union[Unset, str] = "none"
  77. session_interrupt: Union[Unset, str] = "esc"
  78. session_compact: Union[Unset, str] = "<leader>c"
  79. session_child_cycle: Union[Unset, str] = "<leader>right"
  80. session_child_cycle_reverse: Union[Unset, str] = "<leader>left"
  81. messages_page_up: Union[Unset, str] = "pgup"
  82. messages_page_down: Union[Unset, str] = "pgdown"
  83. messages_half_page_up: Union[Unset, str] = "ctrl+alt+u"
  84. messages_half_page_down: Union[Unset, str] = "ctrl+alt+d"
  85. messages_first: Union[Unset, str] = "ctrl+g"
  86. messages_last: Union[Unset, str] = "ctrl+alt+g"
  87. messages_copy: Union[Unset, str] = "<leader>y"
  88. messages_undo: Union[Unset, str] = "<leader>u"
  89. messages_redo: Union[Unset, str] = "<leader>r"
  90. model_list: Union[Unset, str] = "<leader>m"
  91. model_cycle_recent: Union[Unset, str] = "f2"
  92. model_cycle_recent_reverse: Union[Unset, str] = "shift+f2"
  93. model_cycle_favorite: Union[Unset, str] = "none"
  94. model_cycle_favorite_reverse: Union[Unset, str] = "none"
  95. agent_list: Union[Unset, str] = "<leader>a"
  96. agent_cycle: Union[Unset, str] = "tab"
  97. agent_cycle_reverse: Union[Unset, str] = "shift+tab"
  98. input_clear: Union[Unset, str] = "ctrl+c"
  99. input_paste: Union[Unset, str] = "ctrl+v"
  100. input_submit: Union[Unset, str] = "enter"
  101. input_newline: Union[Unset, str] = "shift+enter,ctrl+j"
  102. switch_mode: Union[Unset, str] = "none"
  103. switch_mode_reverse: Union[Unset, str] = "none"
  104. switch_agent: Union[Unset, str] = "tab"
  105. switch_agent_reverse: Union[Unset, str] = "shift+tab"
  106. file_list: Union[Unset, str] = "none"
  107. file_close: Union[Unset, str] = "none"
  108. file_search: Union[Unset, str] = "none"
  109. file_diff_toggle: Union[Unset, str] = "none"
  110. messages_previous: Union[Unset, str] = "none"
  111. messages_next: Union[Unset, str] = "none"
  112. messages_layout_toggle: Union[Unset, str] = "none"
  113. messages_revert: Union[Unset, str] = "none"
  114. def to_dict(self) -> dict[str, Any]:
  115. leader = self.leader
  116. app_help = self.app_help
  117. app_exit = self.app_exit
  118. editor_open = self.editor_open
  119. theme_list = self.theme_list
  120. project_init = self.project_init
  121. tool_details = self.tool_details
  122. thinking_blocks = self.thinking_blocks
  123. session_export = self.session_export
  124. session_new = self.session_new
  125. session_list = self.session_list
  126. session_timeline = self.session_timeline
  127. session_share = self.session_share
  128. session_unshare = self.session_unshare
  129. session_interrupt = self.session_interrupt
  130. session_compact = self.session_compact
  131. session_child_cycle = self.session_child_cycle
  132. session_child_cycle_reverse = self.session_child_cycle_reverse
  133. messages_page_up = self.messages_page_up
  134. messages_page_down = self.messages_page_down
  135. messages_half_page_up = self.messages_half_page_up
  136. messages_half_page_down = self.messages_half_page_down
  137. messages_first = self.messages_first
  138. messages_last = self.messages_last
  139. messages_copy = self.messages_copy
  140. messages_undo = self.messages_undo
  141. messages_redo = self.messages_redo
  142. model_list = self.model_list
  143. model_cycle_recent = self.model_cycle_recent
  144. model_cycle_recent_reverse = self.model_cycle_recent_reverse
  145. model_cycle_favorite = self.model_cycle_favorite
  146. model_cycle_favorite_reverse = self.model_cycle_favorite_reverse
  147. agent_list = self.agent_list
  148. agent_cycle = self.agent_cycle
  149. agent_cycle_reverse = self.agent_cycle_reverse
  150. input_clear = self.input_clear
  151. input_paste = self.input_paste
  152. input_submit = self.input_submit
  153. input_newline = self.input_newline
  154. switch_mode = self.switch_mode
  155. switch_mode_reverse = self.switch_mode_reverse
  156. switch_agent = self.switch_agent
  157. switch_agent_reverse = self.switch_agent_reverse
  158. file_list = self.file_list
  159. file_close = self.file_close
  160. file_search = self.file_search
  161. file_diff_toggle = self.file_diff_toggle
  162. messages_previous = self.messages_previous
  163. messages_next = self.messages_next
  164. messages_layout_toggle = self.messages_layout_toggle
  165. messages_revert = self.messages_revert
  166. field_dict: dict[str, Any] = {}
  167. field_dict.update({})
  168. if leader is not UNSET:
  169. field_dict["leader"] = leader
  170. if app_help is not UNSET:
  171. field_dict["app_help"] = app_help
  172. if app_exit is not UNSET:
  173. field_dict["app_exit"] = app_exit
  174. if editor_open is not UNSET:
  175. field_dict["editor_open"] = editor_open
  176. if theme_list is not UNSET:
  177. field_dict["theme_list"] = theme_list
  178. if project_init is not UNSET:
  179. field_dict["project_init"] = project_init
  180. if tool_details is not UNSET:
  181. field_dict["tool_details"] = tool_details
  182. if thinking_blocks is not UNSET:
  183. field_dict["thinking_blocks"] = thinking_blocks
  184. if session_export is not UNSET:
  185. field_dict["session_export"] = session_export
  186. if session_new is not UNSET:
  187. field_dict["session_new"] = session_new
  188. if session_list is not UNSET:
  189. field_dict["session_list"] = session_list
  190. if session_timeline is not UNSET:
  191. field_dict["session_timeline"] = session_timeline
  192. if session_share is not UNSET:
  193. field_dict["session_share"] = session_share
  194. if session_unshare is not UNSET:
  195. field_dict["session_unshare"] = session_unshare
  196. if session_interrupt is not UNSET:
  197. field_dict["session_interrupt"] = session_interrupt
  198. if session_compact is not UNSET:
  199. field_dict["session_compact"] = session_compact
  200. if session_child_cycle is not UNSET:
  201. field_dict["session_child_cycle"] = session_child_cycle
  202. if session_child_cycle_reverse is not UNSET:
  203. field_dict["session_child_cycle_reverse"] = session_child_cycle_reverse
  204. if messages_page_up is not UNSET:
  205. field_dict["messages_page_up"] = messages_page_up
  206. if messages_page_down is not UNSET:
  207. field_dict["messages_page_down"] = messages_page_down
  208. if messages_half_page_up is not UNSET:
  209. field_dict["messages_half_page_up"] = messages_half_page_up
  210. if messages_half_page_down is not UNSET:
  211. field_dict["messages_half_page_down"] = messages_half_page_down
  212. if messages_first is not UNSET:
  213. field_dict["messages_first"] = messages_first
  214. if messages_last is not UNSET:
  215. field_dict["messages_last"] = messages_last
  216. if messages_copy is not UNSET:
  217. field_dict["messages_copy"] = messages_copy
  218. if messages_undo is not UNSET:
  219. field_dict["messages_undo"] = messages_undo
  220. if messages_redo is not UNSET:
  221. field_dict["messages_redo"] = messages_redo
  222. if model_list is not UNSET:
  223. field_dict["model_list"] = model_list
  224. if model_cycle_recent is not UNSET:
  225. field_dict["model_cycle_recent"] = model_cycle_recent
  226. if model_cycle_recent_reverse is not UNSET:
  227. field_dict["model_cycle_recent_reverse"] = model_cycle_recent_reverse
  228. if model_cycle_favorite is not UNSET:
  229. field_dict["model_cycle_favorite"] = model_cycle_favorite
  230. if model_cycle_favorite_reverse is not UNSET:
  231. field_dict["model_cycle_favorite_reverse"] = model_cycle_favorite_reverse
  232. if agent_list is not UNSET:
  233. field_dict["agent_list"] = agent_list
  234. if agent_cycle is not UNSET:
  235. field_dict["agent_cycle"] = agent_cycle
  236. if agent_cycle_reverse is not UNSET:
  237. field_dict["agent_cycle_reverse"] = agent_cycle_reverse
  238. if input_clear is not UNSET:
  239. field_dict["input_clear"] = input_clear
  240. if input_paste is not UNSET:
  241. field_dict["input_paste"] = input_paste
  242. if input_submit is not UNSET:
  243. field_dict["input_submit"] = input_submit
  244. if input_newline is not UNSET:
  245. field_dict["input_newline"] = input_newline
  246. if switch_mode is not UNSET:
  247. field_dict["switch_mode"] = switch_mode
  248. if switch_mode_reverse is not UNSET:
  249. field_dict["switch_mode_reverse"] = switch_mode_reverse
  250. if switch_agent is not UNSET:
  251. field_dict["switch_agent"] = switch_agent
  252. if switch_agent_reverse is not UNSET:
  253. field_dict["switch_agent_reverse"] = switch_agent_reverse
  254. if file_list is not UNSET:
  255. field_dict["file_list"] = file_list
  256. if file_close is not UNSET:
  257. field_dict["file_close"] = file_close
  258. if file_search is not UNSET:
  259. field_dict["file_search"] = file_search
  260. if file_diff_toggle is not UNSET:
  261. field_dict["file_diff_toggle"] = file_diff_toggle
  262. if messages_previous is not UNSET:
  263. field_dict["messages_previous"] = messages_previous
  264. if messages_next is not UNSET:
  265. field_dict["messages_next"] = messages_next
  266. if messages_layout_toggle is not UNSET:
  267. field_dict["messages_layout_toggle"] = messages_layout_toggle
  268. if messages_revert is not UNSET:
  269. field_dict["messages_revert"] = messages_revert
  270. return field_dict
  271. @classmethod
  272. def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
  273. d = dict(src_dict)
  274. leader = d.pop("leader", UNSET)
  275. app_help = d.pop("app_help", UNSET)
  276. app_exit = d.pop("app_exit", UNSET)
  277. editor_open = d.pop("editor_open", UNSET)
  278. theme_list = d.pop("theme_list", UNSET)
  279. project_init = d.pop("project_init", UNSET)
  280. tool_details = d.pop("tool_details", UNSET)
  281. thinking_blocks = d.pop("thinking_blocks", UNSET)
  282. session_export = d.pop("session_export", UNSET)
  283. session_new = d.pop("session_new", UNSET)
  284. session_list = d.pop("session_list", UNSET)
  285. session_timeline = d.pop("session_timeline", UNSET)
  286. session_share = d.pop("session_share", UNSET)
  287. session_unshare = d.pop("session_unshare", UNSET)
  288. session_interrupt = d.pop("session_interrupt", UNSET)
  289. session_compact = d.pop("session_compact", UNSET)
  290. session_child_cycle = d.pop("session_child_cycle", UNSET)
  291. session_child_cycle_reverse = d.pop("session_child_cycle_reverse", UNSET)
  292. messages_page_up = d.pop("messages_page_up", UNSET)
  293. messages_page_down = d.pop("messages_page_down", UNSET)
  294. messages_half_page_up = d.pop("messages_half_page_up", UNSET)
  295. messages_half_page_down = d.pop("messages_half_page_down", UNSET)
  296. messages_first = d.pop("messages_first", UNSET)
  297. messages_last = d.pop("messages_last", UNSET)
  298. messages_copy = d.pop("messages_copy", UNSET)
  299. messages_undo = d.pop("messages_undo", UNSET)
  300. messages_redo = d.pop("messages_redo", UNSET)
  301. model_list = d.pop("model_list", UNSET)
  302. model_cycle_recent = d.pop("model_cycle_recent", UNSET)
  303. model_cycle_recent_reverse = d.pop("model_cycle_recent_reverse", UNSET)
  304. model_cycle_favorite = d.pop("model_cycle_favorite", UNSET)
  305. model_cycle_favorite_reverse = d.pop("model_cycle_favorite_reverse", UNSET)
  306. agent_list = d.pop("agent_list", UNSET)
  307. agent_cycle = d.pop("agent_cycle", UNSET)
  308. agent_cycle_reverse = d.pop("agent_cycle_reverse", UNSET)
  309. input_clear = d.pop("input_clear", UNSET)
  310. input_paste = d.pop("input_paste", UNSET)
  311. input_submit = d.pop("input_submit", UNSET)
  312. input_newline = d.pop("input_newline", UNSET)
  313. switch_mode = d.pop("switch_mode", UNSET)
  314. switch_mode_reverse = d.pop("switch_mode_reverse", UNSET)
  315. switch_agent = d.pop("switch_agent", UNSET)
  316. switch_agent_reverse = d.pop("switch_agent_reverse", UNSET)
  317. file_list = d.pop("file_list", UNSET)
  318. file_close = d.pop("file_close", UNSET)
  319. file_search = d.pop("file_search", UNSET)
  320. file_diff_toggle = d.pop("file_diff_toggle", UNSET)
  321. messages_previous = d.pop("messages_previous", UNSET)
  322. messages_next = d.pop("messages_next", UNSET)
  323. messages_layout_toggle = d.pop("messages_layout_toggle", UNSET)
  324. messages_revert = d.pop("messages_revert", UNSET)
  325. keybinds_config = cls(
  326. leader=leader,
  327. app_help=app_help,
  328. app_exit=app_exit,
  329. editor_open=editor_open,
  330. theme_list=theme_list,
  331. project_init=project_init,
  332. tool_details=tool_details,
  333. thinking_blocks=thinking_blocks,
  334. session_export=session_export,
  335. session_new=session_new,
  336. session_list=session_list,
  337. session_timeline=session_timeline,
  338. session_share=session_share,
  339. session_unshare=session_unshare,
  340. session_interrupt=session_interrupt,
  341. session_compact=session_compact,
  342. session_child_cycle=session_child_cycle,
  343. session_child_cycle_reverse=session_child_cycle_reverse,
  344. messages_page_up=messages_page_up,
  345. messages_page_down=messages_page_down,
  346. messages_half_page_up=messages_half_page_up,
  347. messages_half_page_down=messages_half_page_down,
  348. messages_first=messages_first,
  349. messages_last=messages_last,
  350. messages_copy=messages_copy,
  351. messages_undo=messages_undo,
  352. messages_redo=messages_redo,
  353. model_list=model_list,
  354. model_cycle_recent=model_cycle_recent,
  355. model_cycle_recent_reverse=model_cycle_recent_reverse,
  356. model_cycle_favorite=model_cycle_favorite,
  357. model_cycle_favorite_reverse=model_cycle_favorite_reverse,
  358. agent_list=agent_list,
  359. agent_cycle=agent_cycle,
  360. agent_cycle_reverse=agent_cycle_reverse,
  361. input_clear=input_clear,
  362. input_paste=input_paste,
  363. input_submit=input_submit,
  364. input_newline=input_newline,
  365. switch_mode=switch_mode,
  366. switch_mode_reverse=switch_mode_reverse,
  367. switch_agent=switch_agent,
  368. switch_agent_reverse=switch_agent_reverse,
  369. file_list=file_list,
  370. file_close=file_close,
  371. file_search=file_search,
  372. file_diff_toggle=file_diff_toggle,
  373. messages_previous=messages_previous,
  374. messages_next=messages_next,
  375. messages_layout_toggle=messages_layout_toggle,
  376. messages_revert=messages_revert,
  377. )
  378. return keybinds_config