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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745
  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. "autoUpdate": {
  23. "description": "Disable automatic installation of plugin updates when false. 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. "sessionManager": {
  490. "type": "object",
  491. "properties": {
  492. "maxSessionsPerAgent": {
  493. "default": 2,
  494. "type": "integer",
  495. "minimum": 1,
  496. "maximum": 10
  497. },
  498. "readContextMinLines": {
  499. "default": 10,
  500. "type": "integer",
  501. "minimum": 0,
  502. "maximum": 1000
  503. },
  504. "readContextMaxFiles": {
  505. "default": 8,
  506. "type": "integer",
  507. "minimum": 0,
  508. "maximum": 50
  509. }
  510. }
  511. },
  512. "divoom": {
  513. "type": "object",
  514. "properties": {
  515. "enabled": {
  516. "default": false,
  517. "type": "boolean"
  518. },
  519. "python": {
  520. "default": "/Applications/Divoom MiniToo.app/Contents/Resources/.venv/bin/python",
  521. "type": "string",
  522. "minLength": 1
  523. },
  524. "script": {
  525. "default": "/Applications/Divoom MiniToo.app/Contents/Resources/tools/divoom_send.py",
  526. "type": "string",
  527. "minLength": 1
  528. },
  529. "size": {
  530. "default": 128,
  531. "type": "integer",
  532. "minimum": 1,
  533. "maximum": 1024
  534. },
  535. "fps": {
  536. "default": 8,
  537. "type": "integer",
  538. "minimum": 1,
  539. "maximum": 60
  540. },
  541. "speed": {
  542. "default": 125,
  543. "type": "integer",
  544. "minimum": 1,
  545. "maximum": 10000
  546. },
  547. "maxFrames": {
  548. "default": 24,
  549. "type": "integer",
  550. "minimum": 1,
  551. "maximum": 500
  552. },
  553. "posterizeBits": {
  554. "default": 3,
  555. "type": "integer",
  556. "minimum": 1,
  557. "maximum": 8
  558. },
  559. "gifs": {
  560. "type": "object",
  561. "propertyNames": {
  562. "type": "string"
  563. },
  564. "additionalProperties": {
  565. "type": "string",
  566. "minLength": 1
  567. }
  568. }
  569. }
  570. },
  571. "todoContinuation": {
  572. "type": "object",
  573. "properties": {
  574. "maxContinuations": {
  575. "default": 5,
  576. "description": "Maximum consecutive auto-continuations before stopping to ask user",
  577. "type": "integer",
  578. "minimum": 1,
  579. "maximum": 50
  580. },
  581. "cooldownMs": {
  582. "default": 3000,
  583. "description": "Delay in ms before auto-continuing (gives user time to abort)",
  584. "type": "integer",
  585. "minimum": 0,
  586. "maximum": 30000
  587. },
  588. "autoEnable": {
  589. "default": false,
  590. "description": "Automatically enable auto-continue when the orchestrator session has enough todos",
  591. "type": "boolean"
  592. },
  593. "autoEnableThreshold": {
  594. "default": 4,
  595. "description": "Number of todos that triggers auto-enable (only used when autoEnable is true)",
  596. "type": "integer",
  597. "minimum": 1,
  598. "maximum": 50
  599. }
  600. }
  601. },
  602. "fallback": {
  603. "type": "object",
  604. "properties": {
  605. "enabled": {
  606. "default": true,
  607. "type": "boolean"
  608. },
  609. "timeoutMs": {
  610. "default": 15000,
  611. "type": "number",
  612. "minimum": 0
  613. },
  614. "retryDelayMs": {
  615. "default": 500,
  616. "type": "number",
  617. "minimum": 0
  618. },
  619. "chains": {
  620. "default": {},
  621. "type": "object",
  622. "properties": {
  623. "orchestrator": {
  624. "minItems": 1,
  625. "type": "array",
  626. "items": {
  627. "type": "string"
  628. }
  629. },
  630. "oracle": {
  631. "minItems": 1,
  632. "type": "array",
  633. "items": {
  634. "type": "string"
  635. }
  636. },
  637. "designer": {
  638. "minItems": 1,
  639. "type": "array",
  640. "items": {
  641. "type": "string"
  642. }
  643. },
  644. "explorer": {
  645. "minItems": 1,
  646. "type": "array",
  647. "items": {
  648. "type": "string"
  649. }
  650. },
  651. "librarian": {
  652. "minItems": 1,
  653. "type": "array",
  654. "items": {
  655. "type": "string"
  656. }
  657. },
  658. "fixer": {
  659. "minItems": 1,
  660. "type": "array",
  661. "items": {
  662. "type": "string"
  663. }
  664. }
  665. },
  666. "additionalProperties": {
  667. "minItems": 1,
  668. "type": "array",
  669. "items": {
  670. "type": "string"
  671. }
  672. }
  673. },
  674. "retry_on_empty": {
  675. "default": true,
  676. "description": "When true (default), empty provider responses are treated as failures, triggering fallback/retry. Set to false to treat them as successes.",
  677. "type": "boolean"
  678. }
  679. }
  680. },
  681. "council": {
  682. "type": "object",
  683. "properties": {
  684. "presets": {
  685. "type": "object",
  686. "propertyNames": {
  687. "type": "string"
  688. },
  689. "additionalProperties": {
  690. "type": "object",
  691. "propertyNames": {
  692. "type": "string"
  693. },
  694. "additionalProperties": {
  695. "type": "object",
  696. "propertyNames": {
  697. "type": "string"
  698. },
  699. "additionalProperties": {}
  700. }
  701. }
  702. },
  703. "timeout": {
  704. "default": 180000,
  705. "type": "number",
  706. "minimum": 0
  707. },
  708. "default_preset": {
  709. "default": "default",
  710. "type": "string"
  711. },
  712. "councillor_execution_mode": {
  713. "default": "parallel",
  714. "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).",
  715. "type": "string",
  716. "enum": [
  717. "parallel",
  718. "serial"
  719. ]
  720. },
  721. "councillor_retries": {
  722. "default": 3,
  723. "description": "Number of retry attempts for councillors that return empty responses (e.g. due to provider rate limiting). Default: 3 retries.",
  724. "type": "integer",
  725. "minimum": 0,
  726. "maximum": 5
  727. },
  728. "master": {
  729. "description": "DEPRECATED — ignored. Council agent synthesizes directly."
  730. },
  731. "master_timeout": {
  732. "description": "DEPRECATED — ignored. Use \"timeout\" instead."
  733. },
  734. "master_fallback": {
  735. "description": "DEPRECATED — ignored. No separate master session."
  736. }
  737. },
  738. "required": [
  739. "presets"
  740. ]
  741. }
  742. },
  743. "title": "oh-my-opencode-slim",
  744. "description": "Configuration schema for oh-my-opencode-slim plugin for OpenCode"
  745. }