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

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