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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263
  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. "compactSidebar": {
  16. "description": "Render each agent on a single line in the TUI sidebar instead of the default multi-line layout. Default false.",
  17. "type": "boolean"
  18. },
  19. "presets": {
  20. "type": "object",
  21. "propertyNames": {
  22. "type": "string"
  23. },
  24. "additionalProperties": {
  25. "type": "object",
  26. "propertyNames": {
  27. "type": "string"
  28. },
  29. "additionalProperties": {
  30. "type": "object",
  31. "properties": {
  32. "model": {
  33. "anyOf": [
  34. {
  35. "type": "string"
  36. },
  37. {
  38. "minItems": 1,
  39. "type": "array",
  40. "items": {
  41. "anyOf": [
  42. {
  43. "type": "string"
  44. },
  45. {
  46. "type": "object",
  47. "properties": {
  48. "id": {
  49. "type": "string"
  50. },
  51. "variant": {
  52. "type": "string"
  53. }
  54. },
  55. "required": [
  56. "id"
  57. ]
  58. }
  59. ]
  60. }
  61. }
  62. ]
  63. },
  64. "temperature": {
  65. "type": "number",
  66. "minimum": 0,
  67. "maximum": 2
  68. },
  69. "variant": {
  70. "type": "string"
  71. },
  72. "skills": {
  73. "type": "array",
  74. "items": {
  75. "type": "string"
  76. }
  77. },
  78. "mcps": {
  79. "type": "array",
  80. "items": {
  81. "type": "string"
  82. }
  83. },
  84. "prompt": {
  85. "type": "string",
  86. "minLength": 1
  87. },
  88. "orchestratorPrompt": {
  89. "type": "string",
  90. "minLength": 1
  91. },
  92. "options": {
  93. "type": "object",
  94. "propertyNames": {
  95. "type": "string"
  96. },
  97. "additionalProperties": {}
  98. },
  99. "displayName": {
  100. "type": "string",
  101. "minLength": 1
  102. },
  103. "permission": {
  104. "anyOf": [
  105. {
  106. "type": "string",
  107. "enum": [
  108. "ask",
  109. "allow",
  110. "deny"
  111. ]
  112. },
  113. {
  114. "type": "object",
  115. "properties": {
  116. "read": {
  117. "anyOf": [
  118. {
  119. "type": "string",
  120. "enum": [
  121. "ask",
  122. "allow",
  123. "deny"
  124. ]
  125. },
  126. {
  127. "type": "object",
  128. "propertyNames": {
  129. "type": "string"
  130. },
  131. "additionalProperties": {
  132. "type": "string",
  133. "enum": [
  134. "ask",
  135. "allow",
  136. "deny"
  137. ]
  138. }
  139. }
  140. ]
  141. },
  142. "edit": {
  143. "anyOf": [
  144. {
  145. "type": "string",
  146. "enum": [
  147. "ask",
  148. "allow",
  149. "deny"
  150. ]
  151. },
  152. {
  153. "type": "object",
  154. "propertyNames": {
  155. "type": "string"
  156. },
  157. "additionalProperties": {
  158. "type": "string",
  159. "enum": [
  160. "ask",
  161. "allow",
  162. "deny"
  163. ]
  164. }
  165. }
  166. ]
  167. },
  168. "glob": {
  169. "anyOf": [
  170. {
  171. "type": "string",
  172. "enum": [
  173. "ask",
  174. "allow",
  175. "deny"
  176. ]
  177. },
  178. {
  179. "type": "object",
  180. "propertyNames": {
  181. "type": "string"
  182. },
  183. "additionalProperties": {
  184. "type": "string",
  185. "enum": [
  186. "ask",
  187. "allow",
  188. "deny"
  189. ]
  190. }
  191. }
  192. ]
  193. },
  194. "grep": {
  195. "anyOf": [
  196. {
  197. "type": "string",
  198. "enum": [
  199. "ask",
  200. "allow",
  201. "deny"
  202. ]
  203. },
  204. {
  205. "type": "object",
  206. "propertyNames": {
  207. "type": "string"
  208. },
  209. "additionalProperties": {
  210. "type": "string",
  211. "enum": [
  212. "ask",
  213. "allow",
  214. "deny"
  215. ]
  216. }
  217. }
  218. ]
  219. },
  220. "list": {
  221. "anyOf": [
  222. {
  223. "type": "string",
  224. "enum": [
  225. "ask",
  226. "allow",
  227. "deny"
  228. ]
  229. },
  230. {
  231. "type": "object",
  232. "propertyNames": {
  233. "type": "string"
  234. },
  235. "additionalProperties": {
  236. "type": "string",
  237. "enum": [
  238. "ask",
  239. "allow",
  240. "deny"
  241. ]
  242. }
  243. }
  244. ]
  245. },
  246. "bash": {
  247. "anyOf": [
  248. {
  249. "type": "string",
  250. "enum": [
  251. "ask",
  252. "allow",
  253. "deny"
  254. ]
  255. },
  256. {
  257. "type": "object",
  258. "propertyNames": {
  259. "type": "string"
  260. },
  261. "additionalProperties": {
  262. "type": "string",
  263. "enum": [
  264. "ask",
  265. "allow",
  266. "deny"
  267. ]
  268. }
  269. }
  270. ]
  271. },
  272. "task": {
  273. "anyOf": [
  274. {
  275. "type": "string",
  276. "enum": [
  277. "ask",
  278. "allow",
  279. "deny"
  280. ]
  281. },
  282. {
  283. "type": "object",
  284. "propertyNames": {
  285. "type": "string"
  286. },
  287. "additionalProperties": {
  288. "type": "string",
  289. "enum": [
  290. "ask",
  291. "allow",
  292. "deny"
  293. ]
  294. }
  295. }
  296. ]
  297. },
  298. "external_directory": {
  299. "anyOf": [
  300. {
  301. "type": "string",
  302. "enum": [
  303. "ask",
  304. "allow",
  305. "deny"
  306. ]
  307. },
  308. {
  309. "type": "object",
  310. "propertyNames": {
  311. "type": "string"
  312. },
  313. "additionalProperties": {
  314. "type": "string",
  315. "enum": [
  316. "ask",
  317. "allow",
  318. "deny"
  319. ]
  320. }
  321. }
  322. ]
  323. },
  324. "lsp": {
  325. "anyOf": [
  326. {
  327. "type": "string",
  328. "enum": [
  329. "ask",
  330. "allow",
  331. "deny"
  332. ]
  333. },
  334. {
  335. "type": "object",
  336. "propertyNames": {
  337. "type": "string"
  338. },
  339. "additionalProperties": {
  340. "type": "string",
  341. "enum": [
  342. "ask",
  343. "allow",
  344. "deny"
  345. ]
  346. }
  347. }
  348. ]
  349. },
  350. "skill": {
  351. "anyOf": [
  352. {
  353. "type": "string",
  354. "enum": [
  355. "ask",
  356. "allow",
  357. "deny"
  358. ]
  359. },
  360. {
  361. "type": "object",
  362. "propertyNames": {
  363. "type": "string"
  364. },
  365. "additionalProperties": {
  366. "type": "string",
  367. "enum": [
  368. "ask",
  369. "allow",
  370. "deny"
  371. ]
  372. }
  373. }
  374. ]
  375. },
  376. "todowrite": {
  377. "type": "string",
  378. "enum": [
  379. "ask",
  380. "allow",
  381. "deny"
  382. ]
  383. },
  384. "question": {
  385. "type": "string",
  386. "enum": [
  387. "ask",
  388. "allow",
  389. "deny"
  390. ]
  391. },
  392. "webfetch": {
  393. "type": "string",
  394. "enum": [
  395. "ask",
  396. "allow",
  397. "deny"
  398. ]
  399. },
  400. "websearch": {
  401. "type": "string",
  402. "enum": [
  403. "ask",
  404. "allow",
  405. "deny"
  406. ]
  407. },
  408. "codesearch": {
  409. "type": "string",
  410. "enum": [
  411. "ask",
  412. "allow",
  413. "deny"
  414. ]
  415. },
  416. "doom_loop": {
  417. "type": "string",
  418. "enum": [
  419. "ask",
  420. "allow",
  421. "deny"
  422. ]
  423. }
  424. },
  425. "additionalProperties": {
  426. "anyOf": [
  427. {
  428. "type": "string",
  429. "enum": [
  430. "ask",
  431. "allow",
  432. "deny"
  433. ]
  434. },
  435. {
  436. "type": "object",
  437. "propertyNames": {
  438. "type": "string"
  439. },
  440. "additionalProperties": {
  441. "type": "string",
  442. "enum": [
  443. "ask",
  444. "allow",
  445. "deny"
  446. ]
  447. }
  448. }
  449. ]
  450. }
  451. }
  452. ]
  453. }
  454. },
  455. "additionalProperties": false
  456. }
  457. }
  458. },
  459. "agents": {
  460. "type": "object",
  461. "propertyNames": {
  462. "type": "string"
  463. },
  464. "additionalProperties": {
  465. "type": "object",
  466. "properties": {
  467. "model": {
  468. "anyOf": [
  469. {
  470. "type": "string"
  471. },
  472. {
  473. "minItems": 1,
  474. "type": "array",
  475. "items": {
  476. "anyOf": [
  477. {
  478. "type": "string"
  479. },
  480. {
  481. "type": "object",
  482. "properties": {
  483. "id": {
  484. "type": "string"
  485. },
  486. "variant": {
  487. "type": "string"
  488. }
  489. },
  490. "required": [
  491. "id"
  492. ]
  493. }
  494. ]
  495. }
  496. }
  497. ]
  498. },
  499. "temperature": {
  500. "type": "number",
  501. "minimum": 0,
  502. "maximum": 2
  503. },
  504. "variant": {
  505. "type": "string"
  506. },
  507. "skills": {
  508. "type": "array",
  509. "items": {
  510. "type": "string"
  511. }
  512. },
  513. "mcps": {
  514. "type": "array",
  515. "items": {
  516. "type": "string"
  517. }
  518. },
  519. "prompt": {
  520. "type": "string",
  521. "minLength": 1
  522. },
  523. "orchestratorPrompt": {
  524. "type": "string",
  525. "minLength": 1
  526. },
  527. "options": {
  528. "type": "object",
  529. "propertyNames": {
  530. "type": "string"
  531. },
  532. "additionalProperties": {}
  533. },
  534. "displayName": {
  535. "type": "string",
  536. "minLength": 1
  537. },
  538. "permission": {
  539. "anyOf": [
  540. {
  541. "type": "string",
  542. "enum": [
  543. "ask",
  544. "allow",
  545. "deny"
  546. ]
  547. },
  548. {
  549. "type": "object",
  550. "properties": {
  551. "read": {
  552. "anyOf": [
  553. {
  554. "type": "string",
  555. "enum": [
  556. "ask",
  557. "allow",
  558. "deny"
  559. ]
  560. },
  561. {
  562. "type": "object",
  563. "propertyNames": {
  564. "type": "string"
  565. },
  566. "additionalProperties": {
  567. "type": "string",
  568. "enum": [
  569. "ask",
  570. "allow",
  571. "deny"
  572. ]
  573. }
  574. }
  575. ]
  576. },
  577. "edit": {
  578. "anyOf": [
  579. {
  580. "type": "string",
  581. "enum": [
  582. "ask",
  583. "allow",
  584. "deny"
  585. ]
  586. },
  587. {
  588. "type": "object",
  589. "propertyNames": {
  590. "type": "string"
  591. },
  592. "additionalProperties": {
  593. "type": "string",
  594. "enum": [
  595. "ask",
  596. "allow",
  597. "deny"
  598. ]
  599. }
  600. }
  601. ]
  602. },
  603. "glob": {
  604. "anyOf": [
  605. {
  606. "type": "string",
  607. "enum": [
  608. "ask",
  609. "allow",
  610. "deny"
  611. ]
  612. },
  613. {
  614. "type": "object",
  615. "propertyNames": {
  616. "type": "string"
  617. },
  618. "additionalProperties": {
  619. "type": "string",
  620. "enum": [
  621. "ask",
  622. "allow",
  623. "deny"
  624. ]
  625. }
  626. }
  627. ]
  628. },
  629. "grep": {
  630. "anyOf": [
  631. {
  632. "type": "string",
  633. "enum": [
  634. "ask",
  635. "allow",
  636. "deny"
  637. ]
  638. },
  639. {
  640. "type": "object",
  641. "propertyNames": {
  642. "type": "string"
  643. },
  644. "additionalProperties": {
  645. "type": "string",
  646. "enum": [
  647. "ask",
  648. "allow",
  649. "deny"
  650. ]
  651. }
  652. }
  653. ]
  654. },
  655. "list": {
  656. "anyOf": [
  657. {
  658. "type": "string",
  659. "enum": [
  660. "ask",
  661. "allow",
  662. "deny"
  663. ]
  664. },
  665. {
  666. "type": "object",
  667. "propertyNames": {
  668. "type": "string"
  669. },
  670. "additionalProperties": {
  671. "type": "string",
  672. "enum": [
  673. "ask",
  674. "allow",
  675. "deny"
  676. ]
  677. }
  678. }
  679. ]
  680. },
  681. "bash": {
  682. "anyOf": [
  683. {
  684. "type": "string",
  685. "enum": [
  686. "ask",
  687. "allow",
  688. "deny"
  689. ]
  690. },
  691. {
  692. "type": "object",
  693. "propertyNames": {
  694. "type": "string"
  695. },
  696. "additionalProperties": {
  697. "type": "string",
  698. "enum": [
  699. "ask",
  700. "allow",
  701. "deny"
  702. ]
  703. }
  704. }
  705. ]
  706. },
  707. "task": {
  708. "anyOf": [
  709. {
  710. "type": "string",
  711. "enum": [
  712. "ask",
  713. "allow",
  714. "deny"
  715. ]
  716. },
  717. {
  718. "type": "object",
  719. "propertyNames": {
  720. "type": "string"
  721. },
  722. "additionalProperties": {
  723. "type": "string",
  724. "enum": [
  725. "ask",
  726. "allow",
  727. "deny"
  728. ]
  729. }
  730. }
  731. ]
  732. },
  733. "external_directory": {
  734. "anyOf": [
  735. {
  736. "type": "string",
  737. "enum": [
  738. "ask",
  739. "allow",
  740. "deny"
  741. ]
  742. },
  743. {
  744. "type": "object",
  745. "propertyNames": {
  746. "type": "string"
  747. },
  748. "additionalProperties": {
  749. "type": "string",
  750. "enum": [
  751. "ask",
  752. "allow",
  753. "deny"
  754. ]
  755. }
  756. }
  757. ]
  758. },
  759. "lsp": {
  760. "anyOf": [
  761. {
  762. "type": "string",
  763. "enum": [
  764. "ask",
  765. "allow",
  766. "deny"
  767. ]
  768. },
  769. {
  770. "type": "object",
  771. "propertyNames": {
  772. "type": "string"
  773. },
  774. "additionalProperties": {
  775. "type": "string",
  776. "enum": [
  777. "ask",
  778. "allow",
  779. "deny"
  780. ]
  781. }
  782. }
  783. ]
  784. },
  785. "skill": {
  786. "anyOf": [
  787. {
  788. "type": "string",
  789. "enum": [
  790. "ask",
  791. "allow",
  792. "deny"
  793. ]
  794. },
  795. {
  796. "type": "object",
  797. "propertyNames": {
  798. "type": "string"
  799. },
  800. "additionalProperties": {
  801. "type": "string",
  802. "enum": [
  803. "ask",
  804. "allow",
  805. "deny"
  806. ]
  807. }
  808. }
  809. ]
  810. },
  811. "todowrite": {
  812. "type": "string",
  813. "enum": [
  814. "ask",
  815. "allow",
  816. "deny"
  817. ]
  818. },
  819. "question": {
  820. "type": "string",
  821. "enum": [
  822. "ask",
  823. "allow",
  824. "deny"
  825. ]
  826. },
  827. "webfetch": {
  828. "type": "string",
  829. "enum": [
  830. "ask",
  831. "allow",
  832. "deny"
  833. ]
  834. },
  835. "websearch": {
  836. "type": "string",
  837. "enum": [
  838. "ask",
  839. "allow",
  840. "deny"
  841. ]
  842. },
  843. "codesearch": {
  844. "type": "string",
  845. "enum": [
  846. "ask",
  847. "allow",
  848. "deny"
  849. ]
  850. },
  851. "doom_loop": {
  852. "type": "string",
  853. "enum": [
  854. "ask",
  855. "allow",
  856. "deny"
  857. ]
  858. }
  859. },
  860. "additionalProperties": {
  861. "anyOf": [
  862. {
  863. "type": "string",
  864. "enum": [
  865. "ask",
  866. "allow",
  867. "deny"
  868. ]
  869. },
  870. {
  871. "type": "object",
  872. "propertyNames": {
  873. "type": "string"
  874. },
  875. "additionalProperties": {
  876. "type": "string",
  877. "enum": [
  878. "ask",
  879. "allow",
  880. "deny"
  881. ]
  882. }
  883. }
  884. ]
  885. }
  886. }
  887. ]
  888. }
  889. },
  890. "additionalProperties": false
  891. }
  892. },
  893. "disabled_agents": {
  894. "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.",
  895. "type": "array",
  896. "items": {
  897. "type": "string"
  898. }
  899. },
  900. "disabled_mcps": {
  901. "type": "array",
  902. "items": {
  903. "type": "string"
  904. }
  905. },
  906. "disabled_tools": {
  907. "description": "Tool names to disable completely. Disabled tools are not registered with OpenCode and cannot be used by agents.",
  908. "type": "array",
  909. "items": {
  910. "type": "string"
  911. }
  912. },
  913. "disabled_skills": {
  914. "description": "Skill names to disable completely. Disabled skills are not granted to agents, even when referenced by presets or agent overrides.",
  915. "type": "array",
  916. "items": {
  917. "type": "string"
  918. }
  919. },
  920. "multiplexer": {
  921. "type": "object",
  922. "properties": {
  923. "type": {
  924. "default": "none",
  925. "type": "string",
  926. "enum": [
  927. "auto",
  928. "tmux",
  929. "zellij",
  930. "none"
  931. ]
  932. },
  933. "layout": {
  934. "default": "main-vertical",
  935. "type": "string",
  936. "enum": [
  937. "main-horizontal",
  938. "main-vertical",
  939. "tiled",
  940. "even-horizontal",
  941. "even-vertical"
  942. ]
  943. },
  944. "main_pane_size": {
  945. "default": 60,
  946. "type": "number",
  947. "minimum": 20,
  948. "maximum": 80
  949. },
  950. "zellij_pane_mode": {
  951. "default": "agent-tab",
  952. "type": "string",
  953. "enum": [
  954. "agent-tab",
  955. "current-tab"
  956. ]
  957. }
  958. }
  959. },
  960. "tmux": {
  961. "type": "object",
  962. "properties": {
  963. "enabled": {
  964. "default": false,
  965. "type": "boolean"
  966. },
  967. "layout": {
  968. "default": "main-vertical",
  969. "type": "string",
  970. "enum": [
  971. "main-horizontal",
  972. "main-vertical",
  973. "tiled",
  974. "even-horizontal",
  975. "even-vertical"
  976. ]
  977. },
  978. "main_pane_size": {
  979. "default": 60,
  980. "type": "number",
  981. "minimum": 20,
  982. "maximum": 80
  983. }
  984. }
  985. },
  986. "websearch": {
  987. "type": "object",
  988. "properties": {
  989. "provider": {
  990. "default": "exa",
  991. "type": "string",
  992. "enum": [
  993. "exa",
  994. "tavily"
  995. ]
  996. }
  997. }
  998. },
  999. "interview": {
  1000. "type": "object",
  1001. "properties": {
  1002. "maxQuestions": {
  1003. "default": 2,
  1004. "type": "integer",
  1005. "minimum": 1,
  1006. "maximum": 10
  1007. },
  1008. "outputFolder": {
  1009. "default": "interview",
  1010. "type": "string",
  1011. "minLength": 1
  1012. },
  1013. "autoOpenBrowser": {
  1014. "default": true,
  1015. "description": "Automatically open the interview UI in your default browser during interactive runs. Disabled automatically in tests and CI.",
  1016. "type": "boolean"
  1017. },
  1018. "port": {
  1019. "default": 0,
  1020. "type": "integer",
  1021. "minimum": 0,
  1022. "maximum": 65535
  1023. },
  1024. "dashboard": {
  1025. "default": false,
  1026. "type": "boolean"
  1027. }
  1028. }
  1029. },
  1030. "backgroundJobs": {
  1031. "type": "object",
  1032. "properties": {
  1033. "maxSessionsPerAgent": {
  1034. "default": 2,
  1035. "type": "integer",
  1036. "minimum": 1,
  1037. "maximum": 10
  1038. },
  1039. "readContextMinLines": {
  1040. "default": 10,
  1041. "type": "integer",
  1042. "minimum": 0,
  1043. "maximum": 1000
  1044. },
  1045. "readContextMaxFiles": {
  1046. "default": 8,
  1047. "type": "integer",
  1048. "minimum": 0,
  1049. "maximum": 50
  1050. }
  1051. }
  1052. },
  1053. "fallback": {
  1054. "type": "object",
  1055. "properties": {
  1056. "enabled": {
  1057. "default": true,
  1058. "type": "boolean"
  1059. },
  1060. "timeoutMs": {
  1061. "default": 15000,
  1062. "type": "number",
  1063. "minimum": 0
  1064. },
  1065. "retryDelayMs": {
  1066. "default": 500,
  1067. "type": "number",
  1068. "minimum": 0
  1069. },
  1070. "retry_on_empty": {
  1071. "default": true,
  1072. "description": "When true (default), empty provider responses are treated as failures, triggering fallback/retry. Set to false to treat them as successes.",
  1073. "type": "boolean"
  1074. }
  1075. },
  1076. "additionalProperties": false
  1077. },
  1078. "council": {
  1079. "type": "object",
  1080. "properties": {
  1081. "presets": {
  1082. "type": "object",
  1083. "propertyNames": {
  1084. "type": "string"
  1085. },
  1086. "additionalProperties": {
  1087. "type": "object",
  1088. "propertyNames": {
  1089. "type": "string"
  1090. },
  1091. "additionalProperties": {
  1092. "type": "object",
  1093. "propertyNames": {
  1094. "type": "string"
  1095. },
  1096. "additionalProperties": {}
  1097. }
  1098. }
  1099. },
  1100. "timeout": {
  1101. "default": 180000,
  1102. "type": "number",
  1103. "minimum": 0
  1104. },
  1105. "default_preset": {
  1106. "default": "default",
  1107. "type": "string"
  1108. },
  1109. "councillor_execution_mode": {
  1110. "default": "parallel",
  1111. "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).",
  1112. "type": "string",
  1113. "enum": [
  1114. "parallel",
  1115. "serial"
  1116. ]
  1117. },
  1118. "councillor_retries": {
  1119. "default": 3,
  1120. "description": "Number of retry attempts for councillors that return empty responses (e.g. due to provider rate limiting). Default: 3 retries.",
  1121. "type": "integer",
  1122. "minimum": 0,
  1123. "maximum": 5
  1124. },
  1125. "master": {
  1126. "description": "DEPRECATED — ignored. Council agent synthesizes directly."
  1127. }
  1128. },
  1129. "required": [
  1130. "presets"
  1131. ]
  1132. },
  1133. "companion": {
  1134. "type": "object",
  1135. "properties": {
  1136. "enabled": {
  1137. "type": "boolean"
  1138. },
  1139. "binaryPath": {
  1140. "description": "Path to a custom companion binary to launch.",
  1141. "type": "string",
  1142. "minLength": 1
  1143. },
  1144. "position": {
  1145. "type": "string",
  1146. "enum": [
  1147. "bottom-right",
  1148. "bottom-left",
  1149. "top-right",
  1150. "top-left"
  1151. ]
  1152. },
  1153. "size": {
  1154. "type": "string",
  1155. "enum": [
  1156. "small",
  1157. "medium",
  1158. "large"
  1159. ]
  1160. },
  1161. "gifPack": {
  1162. "description": "Bundled companion animation pack to use.",
  1163. "type": "string",
  1164. "enum": [
  1165. "default"
  1166. ]
  1167. },
  1168. "loopStyle": {
  1169. "description": "Companion animation playback style: classic loops or smooth ping-pong playback.",
  1170. "type": "string",
  1171. "enum": [
  1172. "classic",
  1173. "smooth"
  1174. ]
  1175. },
  1176. "speed": {
  1177. "description": "Companion animation playback speed multiplier. Defaults to 1.",
  1178. "type": "number",
  1179. "minimum": 0.25,
  1180. "maximum": 4
  1181. },
  1182. "debug": {
  1183. "description": "Enable verbose native companion debug logs.",
  1184. "type": "boolean"
  1185. }
  1186. }
  1187. },
  1188. "acpAgents": {
  1189. "type": "object",
  1190. "propertyNames": {
  1191. "type": "string"
  1192. },
  1193. "additionalProperties": {
  1194. "type": "object",
  1195. "properties": {
  1196. "command": {
  1197. "type": "string",
  1198. "minLength": 1
  1199. },
  1200. "args": {
  1201. "default": [],
  1202. "type": "array",
  1203. "items": {
  1204. "type": "string"
  1205. }
  1206. },
  1207. "env": {
  1208. "default": {},
  1209. "type": "object",
  1210. "propertyNames": {
  1211. "type": "string"
  1212. },
  1213. "additionalProperties": {
  1214. "type": "string"
  1215. }
  1216. },
  1217. "cwd": {
  1218. "type": "string",
  1219. "minLength": 1
  1220. },
  1221. "description": {
  1222. "type": "string",
  1223. "minLength": 1
  1224. },
  1225. "prompt": {
  1226. "type": "string",
  1227. "minLength": 1
  1228. },
  1229. "orchestratorPrompt": {
  1230. "type": "string",
  1231. "minLength": 1
  1232. },
  1233. "wrapperModel": {
  1234. "type": "string",
  1235. "pattern": "^[^/\\s]+\\/[^\\s]+$"
  1236. },
  1237. "timeoutMs": {
  1238. "default": 0,
  1239. "description": "Timeout for a single ACP run in milliseconds. Set to 0 to disable the timeout.",
  1240. "type": "integer",
  1241. "minimum": 0,
  1242. "maximum": 2147483647
  1243. },
  1244. "permissionMode": {
  1245. "default": "ask",
  1246. "type": "string",
  1247. "enum": [
  1248. "ask",
  1249. "allow",
  1250. "reject"
  1251. ]
  1252. }
  1253. },
  1254. "required": [
  1255. "command"
  1256. ],
  1257. "additionalProperties": false
  1258. }
  1259. }
  1260. },
  1261. "title": "oh-my-opencode-slim",
  1262. "description": "Configuration schema for oh-my-opencode-slim plugin for OpenCode"
  1263. }