config.schema.json 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546
  1. {
  2. "type": "object",
  3. "properties": {
  4. "$schema": {
  5. "type": "string",
  6. "description": "JSON schema reference for configuration validation"
  7. },
  8. "theme": {
  9. "type": "string",
  10. "description": "Theme name to use for the interface"
  11. },
  12. "keybinds": {
  13. "type": "object",
  14. "properties": {
  15. "leader": {
  16. "type": "string",
  17. "default": "ctrl+x",
  18. "description": "Leader key for keybind combinations\n\ndefault: `ctrl+x`",
  19. "examples": [
  20. "ctrl+x"
  21. ]
  22. },
  23. "app_help": {
  24. "type": "string",
  25. "default": "<leader>h",
  26. "description": "Show help dialog\n\ndefault: `<leader>h`",
  27. "examples": [
  28. "<leader>h"
  29. ]
  30. },
  31. "editor_open": {
  32. "type": "string",
  33. "default": "<leader>e",
  34. "description": "Open external editor\n\ndefault: `<leader>e`",
  35. "examples": [
  36. "<leader>e"
  37. ]
  38. },
  39. "session_new": {
  40. "type": "string",
  41. "default": "<leader>n",
  42. "description": "Create a new session\n\ndefault: `<leader>n`",
  43. "examples": [
  44. "<leader>n"
  45. ]
  46. },
  47. "session_list": {
  48. "type": "string",
  49. "default": "<leader>l",
  50. "description": "List all sessions\n\ndefault: `<leader>l`",
  51. "examples": [
  52. "<leader>l"
  53. ]
  54. },
  55. "session_share": {
  56. "type": "string",
  57. "default": "<leader>s",
  58. "description": "Share current session\n\ndefault: `<leader>s`",
  59. "examples": [
  60. "<leader>s"
  61. ]
  62. },
  63. "session_unshare": {
  64. "type": "string",
  65. "default": "<leader>u",
  66. "description": "Unshare current session\n\ndefault: `<leader>u`",
  67. "examples": [
  68. "<leader>u"
  69. ]
  70. },
  71. "session_interrupt": {
  72. "type": "string",
  73. "default": "esc",
  74. "description": "Interrupt current session\n\ndefault: `esc`",
  75. "examples": [
  76. "esc"
  77. ]
  78. },
  79. "session_compact": {
  80. "type": "string",
  81. "default": "<leader>c",
  82. "description": "Compact the session\n\ndefault: `<leader>c`",
  83. "examples": [
  84. "<leader>c"
  85. ]
  86. },
  87. "tool_details": {
  88. "type": "string",
  89. "default": "<leader>d",
  90. "description": "Toggle tool details\n\ndefault: `<leader>d`",
  91. "examples": [
  92. "<leader>d"
  93. ]
  94. },
  95. "model_list": {
  96. "type": "string",
  97. "default": "<leader>m",
  98. "description": "List available models\n\ndefault: `<leader>m`",
  99. "examples": [
  100. "<leader>m"
  101. ]
  102. },
  103. "theme_list": {
  104. "type": "string",
  105. "default": "<leader>t",
  106. "description": "List available themes\n\ndefault: `<leader>t`",
  107. "examples": [
  108. "<leader>t"
  109. ]
  110. },
  111. "file_list": {
  112. "type": "string",
  113. "default": "<leader>f",
  114. "description": "List files\n\ndefault: `<leader>f`",
  115. "examples": [
  116. "<leader>f"
  117. ]
  118. },
  119. "file_close": {
  120. "type": "string",
  121. "default": "esc",
  122. "description": "Close file\n\ndefault: `esc`",
  123. "examples": [
  124. "esc"
  125. ]
  126. },
  127. "file_search": {
  128. "type": "string",
  129. "default": "<leader>/",
  130. "description": "Search file\n\ndefault: `<leader>/`",
  131. "examples": [
  132. "<leader>/"
  133. ]
  134. },
  135. "file_diff_toggle": {
  136. "type": "string",
  137. "default": "<leader>v",
  138. "description": "Split/unified diff\n\ndefault: `<leader>v`",
  139. "examples": [
  140. "<leader>v"
  141. ]
  142. },
  143. "project_init": {
  144. "type": "string",
  145. "default": "<leader>i",
  146. "description": "Create/update AGENTS.md\n\ndefault: `<leader>i`",
  147. "examples": [
  148. "<leader>i"
  149. ]
  150. },
  151. "input_clear": {
  152. "type": "string",
  153. "default": "ctrl+c",
  154. "description": "Clear input field\n\ndefault: `ctrl+c`",
  155. "examples": [
  156. "ctrl+c"
  157. ]
  158. },
  159. "input_paste": {
  160. "type": "string",
  161. "default": "ctrl+v",
  162. "description": "Paste from clipboard\n\ndefault: `ctrl+v`",
  163. "examples": [
  164. "ctrl+v"
  165. ]
  166. },
  167. "input_submit": {
  168. "type": "string",
  169. "default": "enter",
  170. "description": "Submit input\n\ndefault: `enter`",
  171. "examples": [
  172. "enter"
  173. ]
  174. },
  175. "input_newline": {
  176. "type": "string",
  177. "default": "shift+enter,ctrl+j",
  178. "description": "Insert newline in input\n\ndefault: `shift+enter,ctrl+j`",
  179. "examples": [
  180. "shift+enter,ctrl+j"
  181. ]
  182. },
  183. "messages_page_up": {
  184. "type": "string",
  185. "default": "pgup",
  186. "description": "Scroll messages up by one page\n\ndefault: `pgup`",
  187. "examples": [
  188. "pgup"
  189. ]
  190. },
  191. "messages_page_down": {
  192. "type": "string",
  193. "default": "pgdown",
  194. "description": "Scroll messages down by one page\n\ndefault: `pgdown`",
  195. "examples": [
  196. "pgdown"
  197. ]
  198. },
  199. "messages_half_page_up": {
  200. "type": "string",
  201. "default": "ctrl+alt+u",
  202. "description": "Scroll messages up by half page\n\ndefault: `ctrl+alt+u`",
  203. "examples": [
  204. "ctrl+alt+u"
  205. ]
  206. },
  207. "messages_half_page_down": {
  208. "type": "string",
  209. "default": "ctrl+alt+d",
  210. "description": "Scroll messages down by half page\n\ndefault: `ctrl+alt+d`",
  211. "examples": [
  212. "ctrl+alt+d"
  213. ]
  214. },
  215. "messages_previous": {
  216. "type": "string",
  217. "default": "ctrl+up",
  218. "description": "Navigate to previous message\n\ndefault: `ctrl+up`",
  219. "examples": [
  220. "ctrl+up"
  221. ]
  222. },
  223. "messages_next": {
  224. "type": "string",
  225. "default": "ctrl+down",
  226. "description": "Navigate to next message\n\ndefault: `ctrl+down`",
  227. "examples": [
  228. "ctrl+down"
  229. ]
  230. },
  231. "messages_first": {
  232. "type": "string",
  233. "default": "ctrl+g",
  234. "description": "Navigate to first message\n\ndefault: `ctrl+g`",
  235. "examples": [
  236. "ctrl+g"
  237. ]
  238. },
  239. "messages_last": {
  240. "type": "string",
  241. "default": "ctrl+alt+g",
  242. "description": "Navigate to last message\n\ndefault: `ctrl+alt+g`",
  243. "examples": [
  244. "ctrl+alt+g"
  245. ]
  246. },
  247. "messages_layout_toggle": {
  248. "type": "string",
  249. "default": "<leader>p",
  250. "description": "Toggle layout\n\ndefault: `<leader>p`",
  251. "examples": [
  252. "<leader>p"
  253. ]
  254. },
  255. "messages_copy": {
  256. "type": "string",
  257. "default": "<leader>y",
  258. "description": "Copy message\n\ndefault: `<leader>y`",
  259. "examples": [
  260. "<leader>y"
  261. ]
  262. },
  263. "messages_revert": {
  264. "type": "string",
  265. "default": "<leader>r",
  266. "description": "Revert message\n\ndefault: `<leader>r`",
  267. "examples": [
  268. "<leader>r"
  269. ]
  270. },
  271. "app_exit": {
  272. "type": "string",
  273. "default": "ctrl+c,<leader>q",
  274. "description": "Exit the application\n\ndefault: `ctrl+c,<leader>q`",
  275. "examples": [
  276. "ctrl+c,<leader>q"
  277. ]
  278. }
  279. },
  280. "additionalProperties": false,
  281. "description": "Custom keybind configurations"
  282. },
  283. "autoshare": {
  284. "type": "boolean",
  285. "description": "Share newly created sessions automatically"
  286. },
  287. "autoupdate": {
  288. "type": "boolean",
  289. "description": "Automatically update to the latest version"
  290. },
  291. "disabled_providers": {
  292. "type": "array",
  293. "items": {
  294. "type": "string"
  295. },
  296. "description": "Disable providers that are loaded automatically"
  297. },
  298. "model": {
  299. "type": "string",
  300. "description": "Model to use in the format of provider/model, eg anthropic/claude-2"
  301. },
  302. "provider": {
  303. "type": "object",
  304. "additionalProperties": {
  305. "type": "object",
  306. "properties": {
  307. "api": {
  308. "type": "string"
  309. },
  310. "name": {
  311. "type": "string"
  312. },
  313. "env": {
  314. "type": "array",
  315. "items": {
  316. "type": "string"
  317. }
  318. },
  319. "id": {
  320. "type": "string"
  321. },
  322. "npm": {
  323. "type": "string"
  324. },
  325. "models": {
  326. "type": "object",
  327. "additionalProperties": {
  328. "type": "object",
  329. "properties": {
  330. "id": {
  331. "type": "string"
  332. },
  333. "name": {
  334. "type": "string"
  335. },
  336. "release_date": {
  337. "type": "string"
  338. },
  339. "attachment": {
  340. "type": "boolean"
  341. },
  342. "reasoning": {
  343. "type": "boolean"
  344. },
  345. "temperature": {
  346. "type": "boolean"
  347. },
  348. "tool_call": {
  349. "type": "boolean"
  350. },
  351. "cost": {
  352. "type": "object",
  353. "properties": {
  354. "input": {
  355. "type": "number"
  356. },
  357. "output": {
  358. "type": "number"
  359. },
  360. "cache_read": {
  361. "type": "number"
  362. },
  363. "cache_write": {
  364. "type": "number"
  365. }
  366. },
  367. "required": [
  368. "input",
  369. "output"
  370. ],
  371. "additionalProperties": false
  372. },
  373. "limit": {
  374. "type": "object",
  375. "properties": {
  376. "context": {
  377. "type": "number"
  378. },
  379. "output": {
  380. "type": "number"
  381. }
  382. },
  383. "required": [
  384. "context",
  385. "output"
  386. ],
  387. "additionalProperties": false
  388. },
  389. "options": {
  390. "type": "object",
  391. "additionalProperties": {}
  392. }
  393. },
  394. "additionalProperties": false
  395. }
  396. },
  397. "options": {
  398. "type": "object",
  399. "additionalProperties": {}
  400. }
  401. },
  402. "required": [
  403. "models"
  404. ],
  405. "additionalProperties": false
  406. },
  407. "description": "Custom provider configurations and model overrides"
  408. },
  409. "mcp": {
  410. "type": "object",
  411. "additionalProperties": {
  412. "anyOf": [
  413. {
  414. "type": "object",
  415. "properties": {
  416. "type": {
  417. "type": "string",
  418. "const": "local",
  419. "description": "Type of MCP server connection"
  420. },
  421. "command": {
  422. "type": "array",
  423. "items": {
  424. "type": "string"
  425. },
  426. "description": "Command and arguments to run the MCP server"
  427. },
  428. "environment": {
  429. "type": "object",
  430. "additionalProperties": {
  431. "type": "string"
  432. },
  433. "description": "Environment variables to set when running the MCP server"
  434. },
  435. "enabled": {
  436. "type": "boolean",
  437. "description": "Enable or disable the MCP server on startup"
  438. }
  439. },
  440. "required": [
  441. "type",
  442. "command"
  443. ],
  444. "additionalProperties": false
  445. },
  446. {
  447. "type": "object",
  448. "properties": {
  449. "type": {
  450. "type": "string",
  451. "const": "remote",
  452. "description": "Type of MCP server connection"
  453. },
  454. "url": {
  455. "type": "string",
  456. "description": "URL of the remote MCP server"
  457. },
  458. "enabled": {
  459. "type": "boolean",
  460. "description": "Enable or disable the MCP server on startup"
  461. }
  462. },
  463. "required": [
  464. "type",
  465. "url"
  466. ],
  467. "additionalProperties": false
  468. }
  469. ]
  470. },
  471. "description": "MCP (Model Context Protocol) server configurations"
  472. },
  473. "instructions": {
  474. "type": "array",
  475. "items": {
  476. "type": "string"
  477. },
  478. "description": "Additional instruction files or patterns to include"
  479. },
  480. "experimental": {
  481. "type": "object",
  482. "properties": {
  483. "hook": {
  484. "type": "object",
  485. "properties": {
  486. "file_edited": {
  487. "type": "object",
  488. "additionalProperties": {
  489. "type": "array",
  490. "items": {
  491. "type": "object",
  492. "properties": {
  493. "command": {
  494. "type": "array",
  495. "items": {
  496. "type": "string"
  497. }
  498. },
  499. "environment": {
  500. "type": "object",
  501. "additionalProperties": {
  502. "type": "string"
  503. }
  504. }
  505. },
  506. "required": [
  507. "command"
  508. ],
  509. "additionalProperties": false
  510. }
  511. }
  512. },
  513. "session_completed": {
  514. "type": "array",
  515. "items": {
  516. "type": "object",
  517. "properties": {
  518. "command": {
  519. "type": "array",
  520. "items": {
  521. "type": "string"
  522. }
  523. },
  524. "environment": {
  525. "type": "object",
  526. "additionalProperties": {
  527. "type": "string"
  528. }
  529. }
  530. },
  531. "required": [
  532. "command"
  533. ],
  534. "additionalProperties": false
  535. }
  536. }
  537. },
  538. "additionalProperties": false
  539. }
  540. },
  541. "additionalProperties": false
  542. }
  543. },
  544. "additionalProperties": false,
  545. "$schema": "http://json-schema.org/draft-07/schema#"
  546. }