oh-my-opencode-slim.schema.json 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542
  1. {
  2. "$schema": "https://json-schema.org/draft/2020-12/schema",
  3. "type": "object",
  4. "properties": {
  5. "preset": {
  6. "type": "string"
  7. },
  8. "setDefaultAgent": {
  9. "type": "boolean"
  10. },
  11. "autoUpdate": {
  12. "description": "Disable automatic installation of plugin updates when false. Defaults to true.",
  13. "type": "boolean"
  14. },
  15. "presets": {
  16. "type": "object",
  17. "propertyNames": {
  18. "type": "string"
  19. },
  20. "additionalProperties": {
  21. "type": "object",
  22. "propertyNames": {
  23. "type": "string"
  24. },
  25. "additionalProperties": {
  26. "type": "object",
  27. "properties": {
  28. "model": {
  29. "anyOf": [
  30. {
  31. "type": "string"
  32. },
  33. {
  34. "minItems": 1,
  35. "type": "array",
  36. "items": {
  37. "anyOf": [
  38. {
  39. "type": "string"
  40. },
  41. {
  42. "type": "object",
  43. "properties": {
  44. "id": {
  45. "type": "string"
  46. },
  47. "variant": {
  48. "type": "string"
  49. }
  50. },
  51. "required": [
  52. "id"
  53. ]
  54. }
  55. ]
  56. }
  57. }
  58. ]
  59. },
  60. "temperature": {
  61. "type": "number",
  62. "minimum": 0,
  63. "maximum": 2
  64. },
  65. "variant": {
  66. "type": "string"
  67. },
  68. "skills": {
  69. "type": "array",
  70. "items": {
  71. "type": "string"
  72. }
  73. },
  74. "mcps": {
  75. "type": "array",
  76. "items": {
  77. "type": "string"
  78. }
  79. },
  80. "prompt": {
  81. "type": "string",
  82. "minLength": 1
  83. },
  84. "orchestratorPrompt": {
  85. "type": "string",
  86. "minLength": 1
  87. },
  88. "options": {
  89. "type": "object",
  90. "propertyNames": {
  91. "type": "string"
  92. },
  93. "additionalProperties": {}
  94. },
  95. "displayName": {
  96. "type": "string",
  97. "minLength": 1
  98. }
  99. },
  100. "additionalProperties": false
  101. }
  102. }
  103. },
  104. "agents": {
  105. "type": "object",
  106. "propertyNames": {
  107. "type": "string"
  108. },
  109. "additionalProperties": {
  110. "type": "object",
  111. "properties": {
  112. "model": {
  113. "anyOf": [
  114. {
  115. "type": "string"
  116. },
  117. {
  118. "minItems": 1,
  119. "type": "array",
  120. "items": {
  121. "anyOf": [
  122. {
  123. "type": "string"
  124. },
  125. {
  126. "type": "object",
  127. "properties": {
  128. "id": {
  129. "type": "string"
  130. },
  131. "variant": {
  132. "type": "string"
  133. }
  134. },
  135. "required": [
  136. "id"
  137. ]
  138. }
  139. ]
  140. }
  141. }
  142. ]
  143. },
  144. "temperature": {
  145. "type": "number",
  146. "minimum": 0,
  147. "maximum": 2
  148. },
  149. "variant": {
  150. "type": "string"
  151. },
  152. "skills": {
  153. "type": "array",
  154. "items": {
  155. "type": "string"
  156. }
  157. },
  158. "mcps": {
  159. "type": "array",
  160. "items": {
  161. "type": "string"
  162. }
  163. },
  164. "prompt": {
  165. "type": "string",
  166. "minLength": 1
  167. },
  168. "orchestratorPrompt": {
  169. "type": "string",
  170. "minLength": 1
  171. },
  172. "options": {
  173. "type": "object",
  174. "propertyNames": {
  175. "type": "string"
  176. },
  177. "additionalProperties": {}
  178. },
  179. "displayName": {
  180. "type": "string",
  181. "minLength": 1
  182. }
  183. },
  184. "additionalProperties": false
  185. }
  186. },
  187. "disabled_agents": {
  188. "description": "Agent names to disable completely. Disabled agents are not instantiated and cannot be delegated to. Orchestrator and council internal agents (councillor) cannot be disabled. By default, 'observer' is disabled. Remove it from this list and configure a vision-capable model to enable.",
  189. "type": "array",
  190. "items": {
  191. "type": "string"
  192. }
  193. },
  194. "disabled_mcps": {
  195. "type": "array",
  196. "items": {
  197. "type": "string"
  198. }
  199. },
  200. "multiplexer": {
  201. "type": "object",
  202. "properties": {
  203. "type": {
  204. "default": "none",
  205. "type": "string",
  206. "enum": [
  207. "auto",
  208. "tmux",
  209. "zellij",
  210. "none"
  211. ]
  212. },
  213. "layout": {
  214. "default": "main-vertical",
  215. "type": "string",
  216. "enum": [
  217. "main-horizontal",
  218. "main-vertical",
  219. "tiled",
  220. "even-horizontal",
  221. "even-vertical"
  222. ]
  223. },
  224. "main_pane_size": {
  225. "default": 60,
  226. "type": "number",
  227. "minimum": 20,
  228. "maximum": 80
  229. },
  230. "zellij_pane_mode": {
  231. "default": "agent-tab",
  232. "type": "string",
  233. "enum": [
  234. "agent-tab",
  235. "current-tab"
  236. ]
  237. }
  238. }
  239. },
  240. "tmux": {
  241. "type": "object",
  242. "properties": {
  243. "enabled": {
  244. "default": false,
  245. "type": "boolean"
  246. },
  247. "layout": {
  248. "default": "main-vertical",
  249. "type": "string",
  250. "enum": [
  251. "main-horizontal",
  252. "main-vertical",
  253. "tiled",
  254. "even-horizontal",
  255. "even-vertical"
  256. ]
  257. },
  258. "main_pane_size": {
  259. "default": 60,
  260. "type": "number",
  261. "minimum": 20,
  262. "maximum": 80
  263. }
  264. }
  265. },
  266. "websearch": {
  267. "type": "object",
  268. "properties": {
  269. "provider": {
  270. "default": "exa",
  271. "type": "string",
  272. "enum": [
  273. "exa",
  274. "tavily"
  275. ]
  276. }
  277. }
  278. },
  279. "interview": {
  280. "type": "object",
  281. "properties": {
  282. "maxQuestions": {
  283. "default": 2,
  284. "type": "integer",
  285. "minimum": 1,
  286. "maximum": 10
  287. },
  288. "outputFolder": {
  289. "default": "interview",
  290. "type": "string",
  291. "minLength": 1
  292. },
  293. "autoOpenBrowser": {
  294. "default": true,
  295. "description": "Automatically open the interview UI in your default browser during interactive runs. Disabled automatically in tests and CI.",
  296. "type": "boolean"
  297. },
  298. "port": {
  299. "default": 0,
  300. "type": "integer",
  301. "minimum": 0,
  302. "maximum": 65535
  303. },
  304. "dashboard": {
  305. "default": false,
  306. "type": "boolean"
  307. }
  308. }
  309. },
  310. "backgroundJobs": {
  311. "type": "object",
  312. "properties": {
  313. "maxSessionsPerAgent": {
  314. "default": 2,
  315. "type": "integer",
  316. "minimum": 1,
  317. "maximum": 10
  318. },
  319. "readContextMinLines": {
  320. "default": 10,
  321. "type": "integer",
  322. "minimum": 0,
  323. "maximum": 1000
  324. },
  325. "readContextMaxFiles": {
  326. "default": 8,
  327. "type": "integer",
  328. "minimum": 0,
  329. "maximum": 50
  330. }
  331. }
  332. },
  333. "fallback": {
  334. "type": "object",
  335. "properties": {
  336. "enabled": {
  337. "default": true,
  338. "type": "boolean"
  339. },
  340. "timeoutMs": {
  341. "default": 15000,
  342. "type": "number",
  343. "minimum": 0
  344. },
  345. "retryDelayMs": {
  346. "default": 500,
  347. "type": "number",
  348. "minimum": 0
  349. },
  350. "retry_on_empty": {
  351. "default": true,
  352. "description": "When true (default), empty provider responses are treated as failures, triggering fallback/retry. Set to false to treat them as successes.",
  353. "type": "boolean"
  354. }
  355. },
  356. "additionalProperties": false
  357. },
  358. "council": {
  359. "type": "object",
  360. "properties": {
  361. "presets": {
  362. "type": "object",
  363. "propertyNames": {
  364. "type": "string"
  365. },
  366. "additionalProperties": {
  367. "type": "object",
  368. "propertyNames": {
  369. "type": "string"
  370. },
  371. "additionalProperties": {
  372. "type": "object",
  373. "propertyNames": {
  374. "type": "string"
  375. },
  376. "additionalProperties": {}
  377. }
  378. }
  379. },
  380. "timeout": {
  381. "default": 180000,
  382. "type": "number",
  383. "minimum": 0
  384. },
  385. "default_preset": {
  386. "default": "default",
  387. "type": "string"
  388. },
  389. "councillor_execution_mode": {
  390. "default": "parallel",
  391. "description": "Execution mode for councillors. \"serial\" runs them one at a time (required for single-model systems). \"parallel\" runs them concurrently (default, faster for multi-model systems).",
  392. "type": "string",
  393. "enum": [
  394. "parallel",
  395. "serial"
  396. ]
  397. },
  398. "councillor_retries": {
  399. "default": 3,
  400. "description": "Number of retry attempts for councillors that return empty responses (e.g. due to provider rate limiting). Default: 3 retries.",
  401. "type": "integer",
  402. "minimum": 0,
  403. "maximum": 5
  404. },
  405. "master": {
  406. "description": "DEPRECATED — ignored. Council agent synthesizes directly."
  407. }
  408. },
  409. "required": [
  410. "presets"
  411. ]
  412. },
  413. "companion": {
  414. "type": "object",
  415. "properties": {
  416. "enabled": {
  417. "type": "boolean"
  418. },
  419. "binaryPath": {
  420. "description": "Path to a custom companion binary to launch.",
  421. "type": "string",
  422. "minLength": 1
  423. },
  424. "position": {
  425. "type": "string",
  426. "enum": [
  427. "bottom-right",
  428. "bottom-left",
  429. "top-right",
  430. "top-left"
  431. ]
  432. },
  433. "size": {
  434. "type": "string",
  435. "enum": [
  436. "small",
  437. "medium",
  438. "large"
  439. ]
  440. },
  441. "gifPack": {
  442. "description": "Bundled companion animation pack to use.",
  443. "type": "string",
  444. "enum": [
  445. "default"
  446. ]
  447. },
  448. "loopStyle": {
  449. "description": "Companion animation playback style: classic loops or smooth ping-pong playback.",
  450. "type": "string",
  451. "enum": [
  452. "classic",
  453. "smooth"
  454. ]
  455. },
  456. "speed": {
  457. "description": "Companion animation playback speed multiplier. Defaults to 1.",
  458. "type": "number",
  459. "minimum": 0.25,
  460. "maximum": 4
  461. },
  462. "debug": {
  463. "description": "Enable verbose native companion debug logs.",
  464. "type": "boolean"
  465. }
  466. }
  467. },
  468. "acpAgents": {
  469. "type": "object",
  470. "propertyNames": {
  471. "type": "string"
  472. },
  473. "additionalProperties": {
  474. "type": "object",
  475. "properties": {
  476. "command": {
  477. "type": "string",
  478. "minLength": 1
  479. },
  480. "args": {
  481. "default": [],
  482. "type": "array",
  483. "items": {
  484. "type": "string"
  485. }
  486. },
  487. "env": {
  488. "default": {},
  489. "type": "object",
  490. "propertyNames": {
  491. "type": "string"
  492. },
  493. "additionalProperties": {
  494. "type": "string"
  495. }
  496. },
  497. "cwd": {
  498. "type": "string",
  499. "minLength": 1
  500. },
  501. "description": {
  502. "type": "string",
  503. "minLength": 1
  504. },
  505. "prompt": {
  506. "type": "string",
  507. "minLength": 1
  508. },
  509. "orchestratorPrompt": {
  510. "type": "string",
  511. "minLength": 1
  512. },
  513. "wrapperModel": {
  514. "type": "string",
  515. "pattern": "^[^/\\s]+\\/[^\\s]+$"
  516. },
  517. "timeoutMs": {
  518. "default": 300000,
  519. "type": "integer",
  520. "minimum": 1000,
  521. "maximum": 900000
  522. },
  523. "permissionMode": {
  524. "default": "ask",
  525. "type": "string",
  526. "enum": [
  527. "ask",
  528. "allow",
  529. "reject"
  530. ]
  531. }
  532. },
  533. "required": [
  534. "command"
  535. ],
  536. "additionalProperties": false
  537. }
  538. }
  539. },
  540. "title": "oh-my-opencode-slim",
  541. "description": "Configuration schema for oh-my-opencode-slim plugin for OpenCode"
  542. }