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

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