config.schema.json 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556
  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. "log_level": {
  303. "type": "string",
  304. "enum": [
  305. "DEBUG",
  306. "INFO",
  307. "WARN",
  308. "ERROR"
  309. ],
  310. "description": "Minimum log level to write to log files"
  311. },
  312. "provider": {
  313. "type": "object",
  314. "additionalProperties": {
  315. "type": "object",
  316. "properties": {
  317. "api": {
  318. "type": "string"
  319. },
  320. "name": {
  321. "type": "string"
  322. },
  323. "env": {
  324. "type": "array",
  325. "items": {
  326. "type": "string"
  327. }
  328. },
  329. "id": {
  330. "type": "string"
  331. },
  332. "npm": {
  333. "type": "string"
  334. },
  335. "models": {
  336. "type": "object",
  337. "additionalProperties": {
  338. "type": "object",
  339. "properties": {
  340. "id": {
  341. "type": "string"
  342. },
  343. "name": {
  344. "type": "string"
  345. },
  346. "release_date": {
  347. "type": "string"
  348. },
  349. "attachment": {
  350. "type": "boolean"
  351. },
  352. "reasoning": {
  353. "type": "boolean"
  354. },
  355. "temperature": {
  356. "type": "boolean"
  357. },
  358. "tool_call": {
  359. "type": "boolean"
  360. },
  361. "cost": {
  362. "type": "object",
  363. "properties": {
  364. "input": {
  365. "type": "number"
  366. },
  367. "output": {
  368. "type": "number"
  369. },
  370. "cache_read": {
  371. "type": "number"
  372. },
  373. "cache_write": {
  374. "type": "number"
  375. }
  376. },
  377. "required": [
  378. "input",
  379. "output"
  380. ],
  381. "additionalProperties": false
  382. },
  383. "limit": {
  384. "type": "object",
  385. "properties": {
  386. "context": {
  387. "type": "number"
  388. },
  389. "output": {
  390. "type": "number"
  391. }
  392. },
  393. "required": [
  394. "context",
  395. "output"
  396. ],
  397. "additionalProperties": false
  398. },
  399. "options": {
  400. "type": "object",
  401. "additionalProperties": {}
  402. }
  403. },
  404. "additionalProperties": false
  405. }
  406. },
  407. "options": {
  408. "type": "object",
  409. "additionalProperties": {}
  410. }
  411. },
  412. "required": [
  413. "models"
  414. ],
  415. "additionalProperties": false
  416. },
  417. "description": "Custom provider configurations and model overrides"
  418. },
  419. "mcp": {
  420. "type": "object",
  421. "additionalProperties": {
  422. "anyOf": [
  423. {
  424. "type": "object",
  425. "properties": {
  426. "type": {
  427. "type": "string",
  428. "const": "local",
  429. "description": "Type of MCP server connection"
  430. },
  431. "command": {
  432. "type": "array",
  433. "items": {
  434. "type": "string"
  435. },
  436. "description": "Command and arguments to run the MCP server"
  437. },
  438. "environment": {
  439. "type": "object",
  440. "additionalProperties": {
  441. "type": "string"
  442. },
  443. "description": "Environment variables to set when running the MCP server"
  444. },
  445. "enabled": {
  446. "type": "boolean",
  447. "description": "Enable or disable the MCP server on startup"
  448. }
  449. },
  450. "required": [
  451. "type",
  452. "command"
  453. ],
  454. "additionalProperties": false
  455. },
  456. {
  457. "type": "object",
  458. "properties": {
  459. "type": {
  460. "type": "string",
  461. "const": "remote",
  462. "description": "Type of MCP server connection"
  463. },
  464. "url": {
  465. "type": "string",
  466. "description": "URL of the remote MCP server"
  467. },
  468. "enabled": {
  469. "type": "boolean",
  470. "description": "Enable or disable the MCP server on startup"
  471. }
  472. },
  473. "required": [
  474. "type",
  475. "url"
  476. ],
  477. "additionalProperties": false
  478. }
  479. ]
  480. },
  481. "description": "MCP (Model Context Protocol) server configurations"
  482. },
  483. "instructions": {
  484. "type": "array",
  485. "items": {
  486. "type": "string"
  487. },
  488. "description": "Additional instruction files or patterns to include"
  489. },
  490. "experimental": {
  491. "type": "object",
  492. "properties": {
  493. "hook": {
  494. "type": "object",
  495. "properties": {
  496. "file_edited": {
  497. "type": "object",
  498. "additionalProperties": {
  499. "type": "array",
  500. "items": {
  501. "type": "object",
  502. "properties": {
  503. "command": {
  504. "type": "array",
  505. "items": {
  506. "type": "string"
  507. }
  508. },
  509. "environment": {
  510. "type": "object",
  511. "additionalProperties": {
  512. "type": "string"
  513. }
  514. }
  515. },
  516. "required": [
  517. "command"
  518. ],
  519. "additionalProperties": false
  520. }
  521. }
  522. },
  523. "session_completed": {
  524. "type": "array",
  525. "items": {
  526. "type": "object",
  527. "properties": {
  528. "command": {
  529. "type": "array",
  530. "items": {
  531. "type": "string"
  532. }
  533. },
  534. "environment": {
  535. "type": "object",
  536. "additionalProperties": {
  537. "type": "string"
  538. }
  539. }
  540. },
  541. "required": [
  542. "command"
  543. ],
  544. "additionalProperties": false
  545. }
  546. }
  547. },
  548. "additionalProperties": false
  549. }
  550. },
  551. "additionalProperties": false
  552. }
  553. },
  554. "additionalProperties": false,
  555. "$schema": "http://json-schema.org/draft-07/schema#"
  556. }