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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663
  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. "scoringEngineVersion": {
  12. "type": "string",
  13. "enum": [
  14. "v1",
  15. "v2-shadow",
  16. "v2"
  17. ]
  18. },
  19. "balanceProviderUsage": {
  20. "type": "boolean"
  21. },
  22. "showStartupToast": {
  23. "description": "Show the startup activation toast when OpenCode starts. Defaults to true.",
  24. "type": "boolean"
  25. },
  26. "manualPlan": {
  27. "type": "object",
  28. "properties": {
  29. "orchestrator": {
  30. "type": "object",
  31. "properties": {
  32. "primary": {
  33. "type": "string",
  34. "pattern": "^[^/\\s]+\\/[^\\s]+$"
  35. },
  36. "fallback1": {
  37. "type": "string",
  38. "pattern": "^[^/\\s]+\\/[^\\s]+$"
  39. },
  40. "fallback2": {
  41. "type": "string",
  42. "pattern": "^[^/\\s]+\\/[^\\s]+$"
  43. },
  44. "fallback3": {
  45. "type": "string",
  46. "pattern": "^[^/\\s]+\\/[^\\s]+$"
  47. }
  48. },
  49. "required": [
  50. "primary",
  51. "fallback1",
  52. "fallback2",
  53. "fallback3"
  54. ]
  55. },
  56. "oracle": {
  57. "type": "object",
  58. "properties": {
  59. "primary": {
  60. "type": "string",
  61. "pattern": "^[^/\\s]+\\/[^\\s]+$"
  62. },
  63. "fallback1": {
  64. "type": "string",
  65. "pattern": "^[^/\\s]+\\/[^\\s]+$"
  66. },
  67. "fallback2": {
  68. "type": "string",
  69. "pattern": "^[^/\\s]+\\/[^\\s]+$"
  70. },
  71. "fallback3": {
  72. "type": "string",
  73. "pattern": "^[^/\\s]+\\/[^\\s]+$"
  74. }
  75. },
  76. "required": [
  77. "primary",
  78. "fallback1",
  79. "fallback2",
  80. "fallback3"
  81. ]
  82. },
  83. "designer": {
  84. "type": "object",
  85. "properties": {
  86. "primary": {
  87. "type": "string",
  88. "pattern": "^[^/\\s]+\\/[^\\s]+$"
  89. },
  90. "fallback1": {
  91. "type": "string",
  92. "pattern": "^[^/\\s]+\\/[^\\s]+$"
  93. },
  94. "fallback2": {
  95. "type": "string",
  96. "pattern": "^[^/\\s]+\\/[^\\s]+$"
  97. },
  98. "fallback3": {
  99. "type": "string",
  100. "pattern": "^[^/\\s]+\\/[^\\s]+$"
  101. }
  102. },
  103. "required": [
  104. "primary",
  105. "fallback1",
  106. "fallback2",
  107. "fallback3"
  108. ]
  109. },
  110. "explorer": {
  111. "type": "object",
  112. "properties": {
  113. "primary": {
  114. "type": "string",
  115. "pattern": "^[^/\\s]+\\/[^\\s]+$"
  116. },
  117. "fallback1": {
  118. "type": "string",
  119. "pattern": "^[^/\\s]+\\/[^\\s]+$"
  120. },
  121. "fallback2": {
  122. "type": "string",
  123. "pattern": "^[^/\\s]+\\/[^\\s]+$"
  124. },
  125. "fallback3": {
  126. "type": "string",
  127. "pattern": "^[^/\\s]+\\/[^\\s]+$"
  128. }
  129. },
  130. "required": [
  131. "primary",
  132. "fallback1",
  133. "fallback2",
  134. "fallback3"
  135. ]
  136. },
  137. "librarian": {
  138. "type": "object",
  139. "properties": {
  140. "primary": {
  141. "type": "string",
  142. "pattern": "^[^/\\s]+\\/[^\\s]+$"
  143. },
  144. "fallback1": {
  145. "type": "string",
  146. "pattern": "^[^/\\s]+\\/[^\\s]+$"
  147. },
  148. "fallback2": {
  149. "type": "string",
  150. "pattern": "^[^/\\s]+\\/[^\\s]+$"
  151. },
  152. "fallback3": {
  153. "type": "string",
  154. "pattern": "^[^/\\s]+\\/[^\\s]+$"
  155. }
  156. },
  157. "required": [
  158. "primary",
  159. "fallback1",
  160. "fallback2",
  161. "fallback3"
  162. ]
  163. },
  164. "fixer": {
  165. "type": "object",
  166. "properties": {
  167. "primary": {
  168. "type": "string",
  169. "pattern": "^[^/\\s]+\\/[^\\s]+$"
  170. },
  171. "fallback1": {
  172. "type": "string",
  173. "pattern": "^[^/\\s]+\\/[^\\s]+$"
  174. },
  175. "fallback2": {
  176. "type": "string",
  177. "pattern": "^[^/\\s]+\\/[^\\s]+$"
  178. },
  179. "fallback3": {
  180. "type": "string",
  181. "pattern": "^[^/\\s]+\\/[^\\s]+$"
  182. }
  183. },
  184. "required": [
  185. "primary",
  186. "fallback1",
  187. "fallback2",
  188. "fallback3"
  189. ]
  190. }
  191. },
  192. "required": [
  193. "orchestrator",
  194. "oracle",
  195. "designer",
  196. "explorer",
  197. "librarian",
  198. "fixer"
  199. ],
  200. "additionalProperties": false
  201. },
  202. "presets": {
  203. "type": "object",
  204. "propertyNames": {
  205. "type": "string"
  206. },
  207. "additionalProperties": {
  208. "type": "object",
  209. "propertyNames": {
  210. "type": "string"
  211. },
  212. "additionalProperties": {
  213. "type": "object",
  214. "properties": {
  215. "model": {
  216. "anyOf": [
  217. {
  218. "type": "string"
  219. },
  220. {
  221. "minItems": 1,
  222. "type": "array",
  223. "items": {
  224. "anyOf": [
  225. {
  226. "type": "string"
  227. },
  228. {
  229. "type": "object",
  230. "properties": {
  231. "id": {
  232. "type": "string"
  233. },
  234. "variant": {
  235. "type": "string"
  236. }
  237. },
  238. "required": [
  239. "id"
  240. ]
  241. }
  242. ]
  243. }
  244. }
  245. ]
  246. },
  247. "temperature": {
  248. "type": "number",
  249. "minimum": 0,
  250. "maximum": 2
  251. },
  252. "variant": {
  253. "type": "string"
  254. },
  255. "skills": {
  256. "type": "array",
  257. "items": {
  258. "type": "string"
  259. }
  260. },
  261. "mcps": {
  262. "type": "array",
  263. "items": {
  264. "type": "string"
  265. }
  266. },
  267. "prompt": {
  268. "type": "string",
  269. "minLength": 1
  270. },
  271. "orchestratorPrompt": {
  272. "type": "string",
  273. "minLength": 1
  274. },
  275. "options": {
  276. "type": "object",
  277. "propertyNames": {
  278. "type": "string"
  279. },
  280. "additionalProperties": {}
  281. },
  282. "displayName": {
  283. "type": "string",
  284. "minLength": 1
  285. }
  286. },
  287. "additionalProperties": false
  288. }
  289. }
  290. },
  291. "agents": {
  292. "type": "object",
  293. "propertyNames": {
  294. "type": "string"
  295. },
  296. "additionalProperties": {
  297. "type": "object",
  298. "properties": {
  299. "model": {
  300. "anyOf": [
  301. {
  302. "type": "string"
  303. },
  304. {
  305. "minItems": 1,
  306. "type": "array",
  307. "items": {
  308. "anyOf": [
  309. {
  310. "type": "string"
  311. },
  312. {
  313. "type": "object",
  314. "properties": {
  315. "id": {
  316. "type": "string"
  317. },
  318. "variant": {
  319. "type": "string"
  320. }
  321. },
  322. "required": [
  323. "id"
  324. ]
  325. }
  326. ]
  327. }
  328. }
  329. ]
  330. },
  331. "temperature": {
  332. "type": "number",
  333. "minimum": 0,
  334. "maximum": 2
  335. },
  336. "variant": {
  337. "type": "string"
  338. },
  339. "skills": {
  340. "type": "array",
  341. "items": {
  342. "type": "string"
  343. }
  344. },
  345. "mcps": {
  346. "type": "array",
  347. "items": {
  348. "type": "string"
  349. }
  350. },
  351. "prompt": {
  352. "type": "string",
  353. "minLength": 1
  354. },
  355. "orchestratorPrompt": {
  356. "type": "string",
  357. "minLength": 1
  358. },
  359. "options": {
  360. "type": "object",
  361. "propertyNames": {
  362. "type": "string"
  363. },
  364. "additionalProperties": {}
  365. },
  366. "displayName": {
  367. "type": "string",
  368. "minLength": 1
  369. }
  370. },
  371. "additionalProperties": false
  372. }
  373. },
  374. "disabled_agents": {
  375. "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.",
  376. "type": "array",
  377. "items": {
  378. "type": "string"
  379. }
  380. },
  381. "disabled_mcps": {
  382. "type": "array",
  383. "items": {
  384. "type": "string"
  385. }
  386. },
  387. "multiplexer": {
  388. "type": "object",
  389. "properties": {
  390. "type": {
  391. "default": "none",
  392. "type": "string",
  393. "enum": [
  394. "auto",
  395. "tmux",
  396. "zellij",
  397. "none"
  398. ]
  399. },
  400. "layout": {
  401. "default": "main-vertical",
  402. "type": "string",
  403. "enum": [
  404. "main-horizontal",
  405. "main-vertical",
  406. "tiled",
  407. "even-horizontal",
  408. "even-vertical"
  409. ]
  410. },
  411. "main_pane_size": {
  412. "default": 60,
  413. "type": "number",
  414. "minimum": 20,
  415. "maximum": 80
  416. }
  417. }
  418. },
  419. "tmux": {
  420. "type": "object",
  421. "properties": {
  422. "enabled": {
  423. "default": false,
  424. "type": "boolean"
  425. },
  426. "layout": {
  427. "default": "main-vertical",
  428. "type": "string",
  429. "enum": [
  430. "main-horizontal",
  431. "main-vertical",
  432. "tiled",
  433. "even-horizontal",
  434. "even-vertical"
  435. ]
  436. },
  437. "main_pane_size": {
  438. "default": 60,
  439. "type": "number",
  440. "minimum": 20,
  441. "maximum": 80
  442. }
  443. }
  444. },
  445. "websearch": {
  446. "type": "object",
  447. "properties": {
  448. "provider": {
  449. "default": "exa",
  450. "type": "string",
  451. "enum": [
  452. "exa",
  453. "tavily"
  454. ]
  455. }
  456. }
  457. },
  458. "interview": {
  459. "type": "object",
  460. "properties": {
  461. "maxQuestions": {
  462. "default": 2,
  463. "type": "integer",
  464. "minimum": 1,
  465. "maximum": 10
  466. },
  467. "outputFolder": {
  468. "default": "interview",
  469. "type": "string",
  470. "minLength": 1
  471. },
  472. "autoOpenBrowser": {
  473. "default": true,
  474. "description": "Automatically open the interview UI in your default browser during interactive runs. Disabled automatically in tests and CI.",
  475. "type": "boolean"
  476. },
  477. "port": {
  478. "default": 0,
  479. "type": "integer",
  480. "minimum": 0,
  481. "maximum": 65535
  482. },
  483. "dashboard": {
  484. "default": false,
  485. "type": "boolean"
  486. }
  487. }
  488. },
  489. "todoContinuation": {
  490. "type": "object",
  491. "properties": {
  492. "maxContinuations": {
  493. "default": 5,
  494. "description": "Maximum consecutive auto-continuations before stopping to ask user",
  495. "type": "integer",
  496. "minimum": 1,
  497. "maximum": 50
  498. },
  499. "cooldownMs": {
  500. "default": 3000,
  501. "description": "Delay in ms before auto-continuing (gives user time to abort)",
  502. "type": "integer",
  503. "minimum": 0,
  504. "maximum": 30000
  505. },
  506. "autoEnable": {
  507. "default": false,
  508. "description": "Automatically enable auto-continue when the orchestrator session has enough todos",
  509. "type": "boolean"
  510. },
  511. "autoEnableThreshold": {
  512. "default": 4,
  513. "description": "Number of todos that triggers auto-enable (only used when autoEnable is true)",
  514. "type": "integer",
  515. "minimum": 1,
  516. "maximum": 50
  517. }
  518. }
  519. },
  520. "fallback": {
  521. "type": "object",
  522. "properties": {
  523. "enabled": {
  524. "default": true,
  525. "type": "boolean"
  526. },
  527. "timeoutMs": {
  528. "default": 15000,
  529. "type": "number",
  530. "minimum": 0
  531. },
  532. "retryDelayMs": {
  533. "default": 500,
  534. "type": "number",
  535. "minimum": 0
  536. },
  537. "chains": {
  538. "default": {},
  539. "type": "object",
  540. "properties": {
  541. "orchestrator": {
  542. "minItems": 1,
  543. "type": "array",
  544. "items": {
  545. "type": "string"
  546. }
  547. },
  548. "oracle": {
  549. "minItems": 1,
  550. "type": "array",
  551. "items": {
  552. "type": "string"
  553. }
  554. },
  555. "designer": {
  556. "minItems": 1,
  557. "type": "array",
  558. "items": {
  559. "type": "string"
  560. }
  561. },
  562. "explorer": {
  563. "minItems": 1,
  564. "type": "array",
  565. "items": {
  566. "type": "string"
  567. }
  568. },
  569. "librarian": {
  570. "minItems": 1,
  571. "type": "array",
  572. "items": {
  573. "type": "string"
  574. }
  575. },
  576. "fixer": {
  577. "minItems": 1,
  578. "type": "array",
  579. "items": {
  580. "type": "string"
  581. }
  582. }
  583. },
  584. "additionalProperties": {
  585. "minItems": 1,
  586. "type": "array",
  587. "items": {
  588. "type": "string"
  589. }
  590. }
  591. },
  592. "retry_on_empty": {
  593. "default": true,
  594. "description": "When true (default), empty provider responses are treated as failures, triggering fallback/retry. Set to false to treat them as successes.",
  595. "type": "boolean"
  596. }
  597. }
  598. },
  599. "council": {
  600. "type": "object",
  601. "properties": {
  602. "presets": {
  603. "type": "object",
  604. "propertyNames": {
  605. "type": "string"
  606. },
  607. "additionalProperties": {
  608. "type": "object",
  609. "propertyNames": {
  610. "type": "string"
  611. },
  612. "additionalProperties": {
  613. "type": "object",
  614. "propertyNames": {
  615. "type": "string"
  616. },
  617. "additionalProperties": {}
  618. }
  619. }
  620. },
  621. "timeout": {
  622. "default": 180000,
  623. "type": "number",
  624. "minimum": 0
  625. },
  626. "default_preset": {
  627. "default": "default",
  628. "type": "string"
  629. },
  630. "councillor_execution_mode": {
  631. "default": "parallel",
  632. "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).",
  633. "type": "string",
  634. "enum": [
  635. "parallel",
  636. "serial"
  637. ]
  638. },
  639. "councillor_retries": {
  640. "default": 3,
  641. "description": "Number of retry attempts for councillors that return empty responses (e.g. due to provider rate limiting). Default: 3 retries.",
  642. "type": "integer",
  643. "minimum": 0,
  644. "maximum": 5
  645. },
  646. "master": {
  647. "description": "DEPRECATED — ignored. Council agent synthesizes directly."
  648. },
  649. "master_timeout": {
  650. "description": "DEPRECATED — ignored. Use \"timeout\" instead."
  651. },
  652. "master_fallback": {
  653. "description": "DEPRECATED — ignored. No separate master session."
  654. }
  655. },
  656. "required": [
  657. "presets"
  658. ]
  659. }
  660. },
  661. "title": "oh-my-opencode-slim",
  662. "description": "Configuration schema for oh-my-opencode-slim plugin for OpenCode"
  663. }