@sortedyuan/maybecode 0.3.2 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/README.md +166 -55
  2. package/README.zh-CN.md +267 -0
  3. package/dist/application.d.ts +40 -34
  4. package/dist/application.d.ts.map +1 -1
  5. package/dist/application.js +290 -170
  6. package/dist/application.js.map +1 -1
  7. package/dist/args.d.ts +2 -2
  8. package/dist/args.d.ts.map +1 -1
  9. package/dist/args.js +50 -27
  10. package/dist/args.js.map +1 -1
  11. package/dist/bin.js +82 -71
  12. package/dist/bin.js.map +4 -4
  13. package/dist/cli/chunk-3IORPKBL.js +3572 -0
  14. package/dist/cli/chunk-3IORPKBL.js.map +7 -0
  15. package/dist/cli/{chunk-LVTRXPDS.js → chunk-4B2Z6KW7.js} +1547 -1536
  16. package/dist/cli/chunk-4B2Z6KW7.js.map +7 -0
  17. package/dist/cli/{chunk-JT6VBKOM.js → chunk-4WG6JIJJ.js} +127 -33
  18. package/dist/cli/{chunk-JT6VBKOM.js.map → chunk-4WG6JIJJ.js.map} +3 -3
  19. package/dist/cli/{chunk-K5JWPNSY.js → chunk-5SLWALZK.js} +3521 -16164
  20. package/dist/cli/chunk-5SLWALZK.js.map +7 -0
  21. package/dist/cli/chunk-MNBYXL5Y.js +132 -0
  22. package/dist/cli/chunk-MNBYXL5Y.js.map +7 -0
  23. package/dist/cli/{chunk-F4XRPLUM.js → chunk-SLWLUEHQ.js} +226 -86
  24. package/dist/cli/chunk-SLWLUEHQ.js.map +7 -0
  25. package/dist/cli/chunk-UQDZ55LQ.js +199 -0
  26. package/dist/cli/chunk-UQDZ55LQ.js.map +7 -0
  27. package/dist/cli/{chunk-7ISOHFS7.js → chunk-WMSG5ZTR.js} +717 -388
  28. package/dist/cli/chunk-WMSG5ZTR.js.map +7 -0
  29. package/dist/cli/chunk-WVIRS76R.js +4057 -0
  30. package/dist/cli/chunk-WVIRS76R.js.map +7 -0
  31. package/dist/cli/{chunk-HOU5ITUK.js → chunk-XTEMRAQW.js} +1 -1
  32. package/dist/cli/chunk-XTEMRAQW.js.map +7 -0
  33. package/dist/cli/chunk-Z3BOPBVU.js +91 -0
  34. package/dist/cli/chunk-Z3BOPBVU.js.map +7 -0
  35. package/dist/cli/{configured-WHY3GGAJ.js → configured-ACNM6TRQ.js} +10 -9
  36. package/dist/cli/{file-type-R2T7TBHI.js → file-type-HLHPV7WC.js} +817 -13
  37. package/dist/cli/file-type-HLHPV7WC.js.map +7 -0
  38. package/dist/cli/mcp-auth-XD5U7WCV.js +74 -0
  39. package/dist/cli/mcp-auth-XD5U7WCV.js.map +7 -0
  40. package/dist/cli/onboarding-WQWCPYEO.js +530 -0
  41. package/dist/cli/onboarding-WQWCPYEO.js.map +7 -0
  42. package/dist/cli/onboarding-check-HRRI5OJ7.js +32 -0
  43. package/dist/cli/onboarding-check-HRRI5OJ7.js.map +7 -0
  44. package/dist/cli/{retained-tui-VJ3VX4R3.js → retained-tui-QF5VMYLC.js} +788 -332
  45. package/dist/cli/retained-tui-QF5VMYLC.js.map +7 -0
  46. package/dist/cli/{sixel-LWTCM76G.js → sixel-ISZ4FZ3U.js} +37 -37
  47. package/dist/cli/{sixel-LWTCM76G.js.map → sixel-ISZ4FZ3U.js.map} +1 -1
  48. package/dist/cli/{team-T7G7PPNN.js → team-O2I5BXHM.js} +7 -6
  49. package/dist/cli/{team-v2-JGBBQ7FR.js → team-v2-YYO2G7DJ.js} +816 -390
  50. package/dist/cli/team-v2-YYO2G7DJ.js.map +7 -0
  51. package/dist/cli/{web-server-FOMNPY7Q.js → web-server-SXMH6FGA.js} +55 -19
  52. package/dist/cli/web-server-SXMH6FGA.js.map +7 -0
  53. package/dist/cli/{web-ui-COB6PKC5.js → web-ui-UWQUFE4W.js} +7 -6
  54. package/dist/config-schema.json +337 -0
  55. package/dist/configured.d.ts +18 -11
  56. package/dist/configured.d.ts.map +1 -1
  57. package/dist/configured.js +213 -390
  58. package/dist/configured.js.map +1 -1
  59. package/dist/controller.d.ts +19 -18
  60. package/dist/controller.d.ts.map +1 -1
  61. package/dist/delegation-commands.d.ts +1 -1
  62. package/dist/delegation-commands.d.ts.map +1 -1
  63. package/dist/delegation-commands.js +8 -8
  64. package/dist/delegation-commands.js.map +1 -1
  65. package/dist/errors.d.ts +2 -1
  66. package/dist/errors.d.ts.map +1 -1
  67. package/dist/errors.js +2 -1
  68. package/dist/errors.js.map +1 -1
  69. package/dist/events.d.ts +8 -6
  70. package/dist/events.d.ts.map +1 -1
  71. package/dist/fork-picker.d.ts.map +1 -1
  72. package/dist/fork-picker.js +19 -5
  73. package/dist/fork-picker.js.map +1 -1
  74. package/dist/git-request.d.ts +6 -6
  75. package/dist/git-request.d.ts.map +1 -1
  76. package/dist/git-request.js +28 -15
  77. package/dist/git-request.js.map +1 -1
  78. package/dist/goal-commands.d.ts +1 -1
  79. package/dist/goal-commands.d.ts.map +1 -1
  80. package/dist/goal-commands.js +12 -5
  81. package/dist/goal-commands.js.map +1 -1
  82. package/dist/index.d.ts +5 -37
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +3 -36
  85. package/dist/index.js.map +1 -1
  86. package/dist/instructions.d.ts +2 -7
  87. package/dist/instructions.d.ts.map +1 -1
  88. package/dist/instructions.js +7 -15
  89. package/dist/instructions.js.map +1 -1
  90. package/dist/keymap.d.ts +2 -2
  91. package/dist/keymap.d.ts.map +1 -1
  92. package/dist/keymap.js +2 -2
  93. package/dist/keymap.js.map +1 -1
  94. package/dist/maybecode-config.schema.json +1765 -0
  95. package/dist/mcp-auth.d.ts +1 -1
  96. package/dist/mcp-auth.d.ts.map +1 -1
  97. package/dist/mcp-auth.js +11 -8
  98. package/dist/mcp-auth.js.map +1 -1
  99. package/dist/mcp-commands.d.ts.map +1 -1
  100. package/dist/mcp-commands.js +18 -4
  101. package/dist/mcp-commands.js.map +1 -1
  102. package/dist/mcp-interaction-ui.d.ts.map +1 -1
  103. package/dist/mcp-interaction-ui.js +11 -4
  104. package/dist/mcp-interaction-ui.js.map +1 -1
  105. package/dist/media-history.d.ts +1 -1
  106. package/dist/media-history.d.ts.map +1 -1
  107. package/dist/media-history.js +8 -2
  108. package/dist/media-history.js.map +1 -1
  109. package/dist/model-picker.d.ts.map +1 -1
  110. package/dist/model-picker.js +10 -11
  111. package/dist/model-picker.js.map +1 -1
  112. package/dist/model-transition.d.ts +11 -0
  113. package/dist/model-transition.d.ts.map +1 -0
  114. package/dist/model-transition.js +48 -0
  115. package/dist/model-transition.js.map +1 -0
  116. package/dist/model.d.ts +2 -2
  117. package/dist/model.d.ts.map +1 -1
  118. package/dist/model.js +8 -4
  119. package/dist/model.js.map +1 -1
  120. package/dist/onboarding-check.d.ts +3 -0
  121. package/dist/onboarding-check.d.ts.map +1 -0
  122. package/dist/onboarding-check.js +22 -0
  123. package/dist/onboarding-check.js.map +1 -0
  124. package/dist/onboarding.d.ts +6 -0
  125. package/dist/onboarding.d.ts.map +1 -0
  126. package/dist/onboarding.js +463 -0
  127. package/dist/onboarding.js.map +1 -0
  128. package/dist/plugins/application.d.ts +6 -4
  129. package/dist/plugins/application.d.ts.map +1 -1
  130. package/dist/plugins/application.js +106 -52
  131. package/dist/plugins/application.js.map +1 -1
  132. package/dist/plugins/instructions.d.ts +1 -1
  133. package/dist/plugins/instructions.d.ts.map +1 -1
  134. package/dist/plugins/instructions.js +24 -11
  135. package/dist/plugins/instructions.js.map +1 -1
  136. package/dist/plugins/resources.d.ts +2 -2
  137. package/dist/plugins/resources.d.ts.map +1 -1
  138. package/dist/plugins/resources.js +22 -12
  139. package/dist/plugins/resources.js.map +1 -1
  140. package/dist/policy.d.ts +1 -1
  141. package/dist/policy.d.ts.map +1 -1
  142. package/dist/policy.js +59 -11
  143. package/dist/policy.js.map +1 -1
  144. package/dist/run.d.ts +2 -0
  145. package/dist/run.d.ts.map +1 -1
  146. package/dist/run.js +38 -33
  147. package/dist/run.js.map +1 -1
  148. package/dist/runtime-instructions.d.ts +1 -1
  149. package/dist/runtime-instructions.d.ts.map +1 -1
  150. package/dist/runtime-instructions.js +15 -7
  151. package/dist/runtime-instructions.js.map +1 -1
  152. package/dist/session-navigation.d.ts +6 -0
  153. package/dist/session-navigation.d.ts.map +1 -0
  154. package/dist/session-navigation.js +64 -0
  155. package/dist/session-navigation.js.map +1 -0
  156. package/dist/session-picker.d.ts +1 -1
  157. package/dist/session-picker.d.ts.map +1 -1
  158. package/dist/session-picker.js +23 -32
  159. package/dist/session-picker.js.map +1 -1
  160. package/dist/settings.d.ts +718 -0
  161. package/dist/settings.d.ts.map +1 -0
  162. package/dist/settings.js +14 -0
  163. package/dist/settings.js.map +1 -0
  164. package/dist/skills.d.ts +1 -1
  165. package/dist/skills.d.ts.map +1 -1
  166. package/dist/skills.js +10 -12
  167. package/dist/skills.js.map +1 -1
  168. package/dist/slash-commands.d.ts +2 -2
  169. package/dist/slash-commands.d.ts.map +1 -1
  170. package/dist/slash-commands.js +149 -67
  171. package/dist/slash-commands.js.map +1 -1
  172. package/dist/team-execution.d.ts +10 -0
  173. package/dist/team-execution.d.ts.map +1 -0
  174. package/dist/team-execution.js +29 -0
  175. package/dist/team-execution.js.map +1 -0
  176. package/dist/team-patches.d.ts.map +1 -1
  177. package/dist/team-patches.js +149 -52
  178. package/dist/team-patches.js.map +1 -1
  179. package/dist/team-plan.d.ts +2 -2
  180. package/dist/team-plan.d.ts.map +1 -1
  181. package/dist/team-plan.js +115 -34
  182. package/dist/team-plan.js.map +1 -1
  183. package/dist/team-recovery.d.ts +1 -1
  184. package/dist/team-recovery.d.ts.map +1 -1
  185. package/dist/team-recovery.js +40 -10
  186. package/dist/team-recovery.js.map +1 -1
  187. package/dist/team-v2.d.ts.map +1 -1
  188. package/dist/team-v2.js +335 -104
  189. package/dist/team-v2.js.map +1 -1
  190. package/dist/team-verification.d.ts +4 -2
  191. package/dist/team-verification.d.ts.map +1 -1
  192. package/dist/team-verification.js +300 -97
  193. package/dist/team-verification.js.map +1 -1
  194. package/dist/team.d.ts +2 -2
  195. package/dist/team.d.ts.map +1 -1
  196. package/dist/team.js +172 -62
  197. package/dist/team.js.map +1 -1
  198. package/dist/terminal-web.d.ts +1 -0
  199. package/dist/terminal-web.d.ts.map +1 -1
  200. package/dist/terminal-web.js +28 -10
  201. package/dist/terminal-web.js.map +1 -1
  202. package/dist/ui/actions.d.ts.map +1 -1
  203. package/dist/ui/actions.js.map +1 -1
  204. package/dist/ui/retained-tui.d.ts.map +1 -1
  205. package/dist/ui/retained-tui.js +231 -173
  206. package/dist/ui/retained-tui.js.map +1 -1
  207. package/dist/ui/{prototype-view.d.ts → terminal-view.d.ts} +7 -7
  208. package/dist/ui/terminal-view.d.ts.map +1 -0
  209. package/dist/ui/{prototype-view.js → terminal-view.js} +185 -98
  210. package/dist/ui/terminal-view.js.map +1 -0
  211. package/dist/web-commands.d.ts.map +1 -1
  212. package/dist/web-commands.js +160 -57
  213. package/dist/web-commands.js.map +1 -1
  214. package/dist/web-extension.d.ts.map +1 -1
  215. package/dist/web-extension.js +14 -4
  216. package/dist/web-extension.js.map +1 -1
  217. package/dist/web-server.d.ts.map +1 -1
  218. package/dist/web-server.js +2 -1
  219. package/dist/web-server.js.map +1 -1
  220. package/dist/web-ui.d.ts.map +1 -1
  221. package/dist/web-ui.js +167 -40
  222. package/dist/web-ui.js.map +1 -1
  223. package/dist/workspace-configuration.d.ts +7 -0
  224. package/dist/workspace-configuration.d.ts.map +1 -0
  225. package/dist/workspace-configuration.js +134 -0
  226. package/dist/workspace-configuration.js.map +1 -0
  227. package/dist/workspace-state.d.ts +20 -0
  228. package/dist/workspace-state.d.ts.map +1 -0
  229. package/dist/workspace-state.js +2 -0
  230. package/dist/workspace-state.js.map +1 -0
  231. package/dist/workspace.d.ts +26 -43
  232. package/dist/workspace.d.ts.map +1 -1
  233. package/dist/workspace.js +261 -323
  234. package/dist/workspace.js.map +1 -1
  235. package/package.json +21 -31
  236. package/dist/cli/chunk-7ISOHFS7.js.map +0 -7
  237. package/dist/cli/chunk-F4XRPLUM.js.map +0 -7
  238. package/dist/cli/chunk-H7SNBFO4.js +0 -5522
  239. package/dist/cli/chunk-H7SNBFO4.js.map +0 -7
  240. package/dist/cli/chunk-HOU5ITUK.js.map +0 -7
  241. package/dist/cli/chunk-K5JWPNSY.js.map +0 -7
  242. package/dist/cli/chunk-LVTRXPDS.js.map +0 -7
  243. package/dist/cli/chunk-VAZMCNBB.js +0 -686
  244. package/dist/cli/chunk-VAZMCNBB.js.map +0 -7
  245. package/dist/cli/chunk-WOFEI42C.js +0 -7820
  246. package/dist/cli/chunk-WOFEI42C.js.map +0 -7
  247. package/dist/cli/file-type-R2T7TBHI.js.map +0 -7
  248. package/dist/cli/mcp-auth-UNRHSIKJ.js +0 -63
  249. package/dist/cli/mcp-auth-UNRHSIKJ.js.map +0 -7
  250. package/dist/cli/retained-tui-VJ3VX4R3.js.map +0 -7
  251. package/dist/cli/team-v2-JGBBQ7FR.js.map +0 -7
  252. package/dist/cli/tui-SA74DKMA.js +0 -1705
  253. package/dist/cli/tui-SA74DKMA.js.map +0 -7
  254. package/dist/cli/web-server-FOMNPY7Q.js.map +0 -7
  255. package/dist/delegation.d.ts +0 -2
  256. package/dist/delegation.d.ts.map +0 -1
  257. package/dist/delegation.js +0 -2
  258. package/dist/delegation.js.map +0 -1
  259. package/dist/history-memory.d.ts +0 -2
  260. package/dist/history-memory.d.ts.map +0 -1
  261. package/dist/history-memory.js +0 -2
  262. package/dist/history-memory.js.map +0 -1
  263. package/dist/subagent-budget.d.ts +0 -2
  264. package/dist/subagent-budget.d.ts.map +0 -1
  265. package/dist/subagent-budget.js +0 -2
  266. package/dist/subagent-budget.js.map +0 -1
  267. package/dist/subagent-files.d.ts +0 -2
  268. package/dist/subagent-files.d.ts.map +0 -1
  269. package/dist/subagent-files.js +0 -2
  270. package/dist/subagent-files.js.map +0 -1
  271. package/dist/subagent-host.d.ts +0 -2
  272. package/dist/subagent-host.d.ts.map +0 -1
  273. package/dist/subagent-host.js +0 -2
  274. package/dist/subagent-host.js.map +0 -1
  275. package/dist/subagent-instructions.d.ts +0 -2
  276. package/dist/subagent-instructions.d.ts.map +0 -1
  277. package/dist/subagent-instructions.js +0 -2
  278. package/dist/subagent-instructions.js.map +0 -1
  279. package/dist/subagents.d.ts +0 -2
  280. package/dist/subagents.d.ts.map +0 -1
  281. package/dist/subagents.js +0 -2
  282. package/dist/subagents.js.map +0 -1
  283. package/dist/summarizer.d.ts +0 -2
  284. package/dist/summarizer.d.ts.map +0 -1
  285. package/dist/summarizer.js +0 -2
  286. package/dist/summarizer.js.map +0 -1
  287. package/dist/tui.d.ts +0 -7
  288. package/dist/tui.d.ts.map +0 -1
  289. package/dist/tui.js +0 -1109
  290. package/dist/tui.js.map +0 -1
  291. package/dist/ui/prototype-view.d.ts.map +0 -1
  292. package/dist/ui/prototype-view.js.map +0 -1
  293. /package/dist/cli/{configured-WHY3GGAJ.js.map → configured-ACNM6TRQ.js.map} +0 -0
  294. /package/dist/cli/{team-T7G7PPNN.js.map → team-O2I5BXHM.js.map} +0 -0
  295. /package/dist/cli/{web-ui-COB6PKC5.js.map → web-ui-UWQUFE4W.js.map} +0 -0
@@ -0,0 +1,1765 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "MaybeCode configuration",
4
+ "description": "Configuration for May model profiles and provider adapters. Each application describes its own entry under apps.",
5
+ "type": "object",
6
+ "required": [
7
+ "providers"
8
+ ],
9
+ "properties": {
10
+ "$schema": {
11
+ "type": "string",
12
+ "description": "Optional editor hint pointing to this schema."
13
+ },
14
+ "defaultModel": {
15
+ "$ref": "#/$defs/nonEmptyString",
16
+ "description": "Default model profile name."
17
+ },
18
+ "providers": {
19
+ "type": "object",
20
+ "description": "Named provider connections.",
21
+ "propertyNames": {
22
+ "$ref": "#/$defs/nonEmptyString"
23
+ },
24
+ "additionalProperties": {
25
+ "$ref": "#/$defs/provider"
26
+ }
27
+ },
28
+ "models": {
29
+ "type": "object",
30
+ "description": "Named, user-selectable model profiles.",
31
+ "default": {},
32
+ "propertyNames": {
33
+ "$ref": "#/$defs/nonEmptyString"
34
+ },
35
+ "additionalProperties": {
36
+ "$ref": "#/$defs/model"
37
+ }
38
+ },
39
+ "apps": {
40
+ "type": "object",
41
+ "description": "Application-owned settings. Each application validates its own entry.",
42
+ "default": {},
43
+ "propertyNames": {
44
+ "$ref": "#/$defs/nonEmptyString"
45
+ },
46
+ "additionalProperties": {
47
+ "type": "object"
48
+ },
49
+ "properties": {
50
+ "maybecode": {
51
+ "$ref": "#/$defs/maybecode"
52
+ }
53
+ }
54
+ }
55
+ },
56
+ "additionalProperties": false,
57
+ "$defs": {
58
+ "pluginSelections": {
59
+ "type": "array",
60
+ "items": {
61
+ "type": "object",
62
+ "required": [
63
+ "module"
64
+ ],
65
+ "properties": {
66
+ "module": {
67
+ "type": "string",
68
+ "minLength": 1
69
+ },
70
+ "export": {
71
+ "type": "string",
72
+ "minLength": 1,
73
+ "default": "default"
74
+ },
75
+ "config": {},
76
+ "enabled": {
77
+ "type": "boolean",
78
+ "default": true
79
+ }
80
+ },
81
+ "additionalProperties": false
82
+ }
83
+ },
84
+ "nonEmptyString": {
85
+ "type": "string",
86
+ "pattern": "\\S"
87
+ },
88
+ "positiveInteger": {
89
+ "type": "integer",
90
+ "minimum": 1,
91
+ "maximum": 9007199254740991
92
+ },
93
+ "reasoningEffort": {
94
+ "type": "string",
95
+ "minLength": 1,
96
+ "description": "Model-specific value. Use model capabilities or MaybeCode /effort to discover supported levels."
97
+ },
98
+ "provider": {
99
+ "type": "object",
100
+ "required": [
101
+ "adapter"
102
+ ],
103
+ "properties": {
104
+ "adapter": {
105
+ "$ref": "#/$defs/nonEmptyString"
106
+ },
107
+ "apiKey": {
108
+ "$ref": "#/$defs/nonEmptyString"
109
+ },
110
+ "apiKeyEnv": {
111
+ "$ref": "#/$defs/nonEmptyString"
112
+ },
113
+ "baseURL": {
114
+ "$ref": "#/$defs/nonEmptyString"
115
+ },
116
+ "capabilities": {
117
+ "$ref": "#/$defs/modelCapabilities"
118
+ },
119
+ "options": {
120
+ "type": "object",
121
+ "description": "Adapter-specific shared options. A model profile may override them."
122
+ }
123
+ },
124
+ "allOf": [
125
+ {
126
+ "if": {
127
+ "properties": {
128
+ "adapter": {
129
+ "const": "openai-responses"
130
+ }
131
+ }
132
+ },
133
+ "then": {
134
+ "properties": {
135
+ "options": {
136
+ "$ref": "#/$defs/openaiResponsesOptions"
137
+ }
138
+ }
139
+ }
140
+ },
141
+ {
142
+ "if": {
143
+ "properties": {
144
+ "adapter": {
145
+ "const": "openai-chat-completions"
146
+ }
147
+ }
148
+ },
149
+ "then": {
150
+ "properties": {
151
+ "options": {
152
+ "$ref": "#/$defs/openaiChatOptions"
153
+ }
154
+ }
155
+ }
156
+ },
157
+ {
158
+ "if": {
159
+ "properties": {
160
+ "adapter": {
161
+ "const": "deepseek-chat"
162
+ }
163
+ }
164
+ },
165
+ "then": {
166
+ "properties": {
167
+ "options": {
168
+ "$ref": "#/$defs/deepseekOptions"
169
+ }
170
+ }
171
+ }
172
+ },
173
+ {
174
+ "if": {
175
+ "properties": {
176
+ "adapter": {
177
+ "const": "zhipu-chat"
178
+ }
179
+ }
180
+ },
181
+ "then": {
182
+ "properties": {
183
+ "options": {
184
+ "$ref": "#/$defs/zhipuOptions"
185
+ }
186
+ }
187
+ }
188
+ },
189
+ {
190
+ "if": {
191
+ "properties": {
192
+ "adapter": {
193
+ "const": "kimi-chat"
194
+ }
195
+ }
196
+ },
197
+ "then": {
198
+ "properties": {
199
+ "options": {
200
+ "$ref": "#/$defs/kimiOptions"
201
+ }
202
+ }
203
+ }
204
+ },
205
+ {
206
+ "if": {
207
+ "properties": {
208
+ "adapter": {
209
+ "const": "anthropic-messages"
210
+ }
211
+ }
212
+ },
213
+ "then": {
214
+ "properties": {
215
+ "options": {
216
+ "$ref": "#/$defs/anthropicOptions"
217
+ }
218
+ }
219
+ }
220
+ }
221
+ ],
222
+ "not": {
223
+ "required": [
224
+ "apiKey",
225
+ "apiKeyEnv"
226
+ ]
227
+ },
228
+ "additionalProperties": false
229
+ },
230
+ "model": {
231
+ "type": "object",
232
+ "required": [
233
+ "provider",
234
+ "model"
235
+ ],
236
+ "properties": {
237
+ "provider": {
238
+ "$ref": "#/$defs/nonEmptyString"
239
+ },
240
+ "adapter": {
241
+ "$ref": "#/$defs/nonEmptyString"
242
+ },
243
+ "model": {
244
+ "$ref": "#/$defs/nonEmptyString"
245
+ },
246
+ "contextWindowTokens": {
247
+ "$ref": "#/$defs/positiveInteger"
248
+ },
249
+ "maxOutputTokens": {
250
+ "$ref": "#/$defs/positiveInteger"
251
+ },
252
+ "options": {
253
+ "$ref": "#/$defs/knownModelOptions"
254
+ },
255
+ "capabilities": {
256
+ "$ref": "#/$defs/modelCapabilities"
257
+ }
258
+ },
259
+ "allOf": [
260
+ {
261
+ "if": {
262
+ "properties": {
263
+ "adapter": {
264
+ "const": "openai-responses"
265
+ }
266
+ },
267
+ "required": [
268
+ "adapter"
269
+ ]
270
+ },
271
+ "then": {
272
+ "properties": {
273
+ "options": {
274
+ "$ref": "#/$defs/openaiResponsesOptions"
275
+ }
276
+ }
277
+ }
278
+ },
279
+ {
280
+ "if": {
281
+ "properties": {
282
+ "adapter": {
283
+ "const": "openai-chat-completions"
284
+ }
285
+ },
286
+ "required": [
287
+ "adapter"
288
+ ]
289
+ },
290
+ "then": {
291
+ "properties": {
292
+ "options": {
293
+ "$ref": "#/$defs/openaiChatOptions"
294
+ }
295
+ }
296
+ }
297
+ },
298
+ {
299
+ "if": {
300
+ "properties": {
301
+ "adapter": {
302
+ "const": "deepseek-chat"
303
+ }
304
+ },
305
+ "required": [
306
+ "adapter"
307
+ ]
308
+ },
309
+ "then": {
310
+ "properties": {
311
+ "options": {
312
+ "$ref": "#/$defs/deepseekOptions"
313
+ }
314
+ }
315
+ }
316
+ },
317
+ {
318
+ "if": {
319
+ "properties": {
320
+ "adapter": {
321
+ "const": "zhipu-chat"
322
+ }
323
+ },
324
+ "required": [
325
+ "adapter"
326
+ ]
327
+ },
328
+ "then": {
329
+ "properties": {
330
+ "options": {
331
+ "$ref": "#/$defs/zhipuOptions"
332
+ }
333
+ }
334
+ }
335
+ },
336
+ {
337
+ "if": {
338
+ "properties": {
339
+ "adapter": {
340
+ "const": "kimi-chat"
341
+ }
342
+ },
343
+ "required": [
344
+ "adapter"
345
+ ]
346
+ },
347
+ "then": {
348
+ "properties": {
349
+ "options": {
350
+ "$ref": "#/$defs/kimiOptions"
351
+ }
352
+ }
353
+ }
354
+ },
355
+ {
356
+ "if": {
357
+ "properties": {
358
+ "adapter": {
359
+ "const": "anthropic-messages"
360
+ }
361
+ },
362
+ "required": [
363
+ "adapter"
364
+ ]
365
+ },
366
+ "then": {
367
+ "properties": {
368
+ "options": {
369
+ "$ref": "#/$defs/anthropicOptions"
370
+ }
371
+ }
372
+ }
373
+ }
374
+ ],
375
+ "additionalProperties": false
376
+ },
377
+ "modelCapabilities": {
378
+ "type": "object",
379
+ "description": "Explicit model capability overrides. These take precedence over provider discovery and May's built-in catalog.",
380
+ "properties": {
381
+ "fields": {
382
+ "$ref": "#/$defs/capabilityFields"
383
+ },
384
+ "reasoning": {
385
+ "oneOf": [
386
+ {
387
+ "const": false
388
+ },
389
+ {
390
+ "$ref": "#/$defs/reasoningCapabilities"
391
+ }
392
+ ]
393
+ }
394
+ },
395
+ "additionalProperties": false
396
+ },
397
+ "capabilityFields": {
398
+ "type": "object",
399
+ "propertyNames": {
400
+ "enum": [
401
+ "input.text",
402
+ "input.image",
403
+ "input.audio",
404
+ "input.file",
405
+ "input.resource",
406
+ "input.image.sources",
407
+ "input.audio.sources",
408
+ "input.file.sources",
409
+ "output.text",
410
+ "output.image",
411
+ "output.audio",
412
+ "tools",
413
+ "tools.maxCalls",
414
+ "structuredOutput.json",
415
+ "structuredOutput.jsonSchema",
416
+ "structuredOutput.schemaDialects",
417
+ "structuredOutput.schemaConstraint",
418
+ "contextWindowTokens",
419
+ "maxOutputTokens",
420
+ "maxImages",
421
+ "maxAttachments",
422
+ "maxAttachmentBytes",
423
+ "fileTypes",
424
+ "parameters",
425
+ "contextCompaction",
426
+ "reasoning.modes"
427
+ ]
428
+ },
429
+ "additionalProperties": {
430
+ "type": "boolean"
431
+ },
432
+ "properties": {
433
+ "contextWindowTokens": {
434
+ "$ref": "#/$defs/capabilityLimit"
435
+ },
436
+ "maxOutputTokens": {
437
+ "$ref": "#/$defs/capabilityLimit"
438
+ },
439
+ "maxImages": {
440
+ "$ref": "#/$defs/capabilityLimit"
441
+ },
442
+ "maxAttachments": {
443
+ "$ref": "#/$defs/capabilityLimit"
444
+ },
445
+ "maxAttachmentBytes": {
446
+ "$ref": "#/$defs/capabilityLimit"
447
+ },
448
+ "tools.maxCalls": {
449
+ "$ref": "#/$defs/capabilityLimit"
450
+ },
451
+ "input.image.sources": {
452
+ "$ref": "#/$defs/capabilitySources"
453
+ },
454
+ "input.audio.sources": {
455
+ "$ref": "#/$defs/capabilitySources"
456
+ },
457
+ "input.file.sources": {
458
+ "$ref": "#/$defs/capabilitySources"
459
+ },
460
+ "fileTypes": {
461
+ "$ref": "#/$defs/capabilityStrings"
462
+ },
463
+ "reasoning.modes": {
464
+ "$ref": "#/$defs/capabilityStrings"
465
+ },
466
+ "structuredOutput.schemaDialects": {
467
+ "$ref": "#/$defs/capabilityStrings"
468
+ },
469
+ "structuredOutput.schemaConstraint": {
470
+ "oneOf": [
471
+ {
472
+ "const": false
473
+ },
474
+ {
475
+ "type": "object"
476
+ }
477
+ ]
478
+ },
479
+ "parameters": {
480
+ "oneOf": [
481
+ {
482
+ "const": false
483
+ },
484
+ {
485
+ "type": "object"
486
+ }
487
+ ]
488
+ }
489
+ }
490
+ },
491
+ "capabilityLimit": {
492
+ "oneOf": [
493
+ {
494
+ "const": false
495
+ },
496
+ {
497
+ "$ref": "#/$defs/positiveInteger"
498
+ }
499
+ ]
500
+ },
501
+ "capabilityStrings": {
502
+ "oneOf": [
503
+ {
504
+ "const": false
505
+ },
506
+ {
507
+ "type": "array",
508
+ "minItems": 1,
509
+ "uniqueItems": true,
510
+ "items": {
511
+ "$ref": "#/$defs/nonEmptyString"
512
+ }
513
+ }
514
+ ]
515
+ },
516
+ "capabilitySources": {
517
+ "oneOf": [
518
+ {
519
+ "const": false
520
+ },
521
+ {
522
+ "type": "array",
523
+ "minItems": 1,
524
+ "uniqueItems": true,
525
+ "items": {
526
+ "enum": [
527
+ "url",
528
+ "base64",
529
+ "file"
530
+ ]
531
+ }
532
+ }
533
+ ]
534
+ },
535
+ "reasoningCapabilities": {
536
+ "type": "object",
537
+ "required": [
538
+ "efforts"
539
+ ],
540
+ "properties": {
541
+ "efforts": {
542
+ "type": "array",
543
+ "minItems": 1,
544
+ "uniqueItems": true,
545
+ "items": {
546
+ "$ref": "#/$defs/nonEmptyString"
547
+ }
548
+ },
549
+ "defaultEffort": {
550
+ "$ref": "#/$defs/nonEmptyString"
551
+ }
552
+ },
553
+ "additionalProperties": false
554
+ },
555
+ "knownModelOptions": {
556
+ "type": "object",
557
+ "description": "Options are interpreted by the effective adapter. Unknown keys remain allowed for custom adapters.",
558
+ "properties": {
559
+ "responseFormat": {
560
+ "$ref": "#/$defs/modelResponseFormat"
561
+ },
562
+ "unknownCapabilityPolicy": {
563
+ "enum": [
564
+ "allow",
565
+ "require-known"
566
+ ]
567
+ },
568
+ "thinking": {
569
+ "oneOf": [
570
+ {
571
+ "type": "string",
572
+ "enum": [
573
+ "enabled",
574
+ "disabled"
575
+ ]
576
+ },
577
+ {
578
+ "$ref": "#/$defs/kimiThinking"
579
+ },
580
+ {
581
+ "$ref": "#/$defs/anthropicThinking"
582
+ }
583
+ ]
584
+ },
585
+ "clearThinking": {
586
+ "type": "boolean"
587
+ },
588
+ "reasoningEffort": {
589
+ "$ref": "#/$defs/reasoningEffort"
590
+ },
591
+ "reasoningSummary": {
592
+ "type": "string",
593
+ "enum": [
594
+ "auto",
595
+ "concise",
596
+ "detailed"
597
+ ]
598
+ },
599
+ "maxTokens": {
600
+ "$ref": "#/$defs/positiveInteger"
601
+ },
602
+ "maxOutputTokens": {
603
+ "$ref": "#/$defs/positiveInteger"
604
+ },
605
+ "serverCompactThreshold": {
606
+ "$ref": "#/$defs/positiveInteger"
607
+ },
608
+ "store": {
609
+ "type": "boolean"
610
+ },
611
+ "apiVersion": {
612
+ "$ref": "#/$defs/nonEmptyString"
613
+ }
614
+ },
615
+ "additionalProperties": true
616
+ },
617
+ "openaiResponsesOptions": {
618
+ "type": "object",
619
+ "properties": {
620
+ "responseFormat": {
621
+ "$ref": "#/$defs/modelResponseFormat"
622
+ },
623
+ "unknownCapabilityPolicy": {
624
+ "enum": [
625
+ "allow",
626
+ "require-known"
627
+ ]
628
+ },
629
+ "maxOutputTokens": {
630
+ "$ref": "#/$defs/positiveInteger"
631
+ },
632
+ "reasoningEffort": {
633
+ "$ref": "#/$defs/reasoningEffort"
634
+ },
635
+ "reasoningSummary": {
636
+ "type": "string",
637
+ "enum": [
638
+ "auto",
639
+ "concise",
640
+ "detailed"
641
+ ]
642
+ },
643
+ "serverCompactThreshold": {
644
+ "$ref": "#/$defs/positiveInteger"
645
+ },
646
+ "store": {
647
+ "type": "boolean",
648
+ "default": false
649
+ }
650
+ },
651
+ "additionalProperties": false
652
+ },
653
+ "openaiChatOptions": {
654
+ "type": "object",
655
+ "properties": {
656
+ "responseFormat": {
657
+ "$ref": "#/$defs/modelResponseFormat"
658
+ },
659
+ "unknownCapabilityPolicy": {
660
+ "enum": [
661
+ "allow",
662
+ "require-known"
663
+ ]
664
+ },
665
+ "maxOutputTokens": {
666
+ "$ref": "#/$defs/positiveInteger"
667
+ },
668
+ "reasoningEffort": {
669
+ "$ref": "#/$defs/reasoningEffort"
670
+ },
671
+ "store": {
672
+ "type": "boolean"
673
+ }
674
+ },
675
+ "additionalProperties": false
676
+ },
677
+ "deepseekOptions": {
678
+ "type": "object",
679
+ "properties": {
680
+ "unknownCapabilityPolicy": {
681
+ "enum": [
682
+ "allow",
683
+ "require-known"
684
+ ]
685
+ },
686
+ "thinking": {
687
+ "type": "string",
688
+ "enum": [
689
+ "enabled",
690
+ "disabled"
691
+ ]
692
+ },
693
+ "reasoningEffort": {
694
+ "$ref": "#/$defs/reasoningEffort"
695
+ },
696
+ "maxTokens": {
697
+ "$ref": "#/$defs/positiveInteger"
698
+ }
699
+ },
700
+ "additionalProperties": false
701
+ },
702
+ "zhipuOptions": {
703
+ "type": "object",
704
+ "properties": {
705
+ "unknownCapabilityPolicy": {
706
+ "enum": [
707
+ "allow",
708
+ "require-known"
709
+ ]
710
+ },
711
+ "thinking": {
712
+ "type": "string",
713
+ "enum": [
714
+ "enabled",
715
+ "disabled"
716
+ ]
717
+ },
718
+ "clearThinking": {
719
+ "type": "boolean"
720
+ },
721
+ "reasoningEffort": {
722
+ "$ref": "#/$defs/reasoningEffort"
723
+ },
724
+ "maxTokens": {
725
+ "$ref": "#/$defs/positiveInteger"
726
+ }
727
+ },
728
+ "additionalProperties": false
729
+ },
730
+ "kimiThinking": {
731
+ "type": "object",
732
+ "required": [
733
+ "type"
734
+ ],
735
+ "properties": {
736
+ "type": {
737
+ "type": "string",
738
+ "enum": [
739
+ "enabled",
740
+ "disabled"
741
+ ]
742
+ },
743
+ "keep": {
744
+ "enum": [
745
+ "all",
746
+ null
747
+ ]
748
+ }
749
+ },
750
+ "additionalProperties": false
751
+ },
752
+ "kimiOptions": {
753
+ "type": "object",
754
+ "properties": {
755
+ "unknownCapabilityPolicy": {
756
+ "enum": [
757
+ "allow",
758
+ "require-known"
759
+ ]
760
+ },
761
+ "thinking": {
762
+ "$ref": "#/$defs/kimiThinking"
763
+ },
764
+ "reasoningEffort": {
765
+ "$ref": "#/$defs/reasoningEffort"
766
+ },
767
+ "maxTokens": {
768
+ "$ref": "#/$defs/positiveInteger"
769
+ }
770
+ },
771
+ "additionalProperties": false
772
+ },
773
+ "anthropicThinking": {
774
+ "oneOf": [
775
+ {
776
+ "type": "object",
777
+ "required": [
778
+ "type",
779
+ "budgetTokens"
780
+ ],
781
+ "properties": {
782
+ "type": {
783
+ "const": "enabled"
784
+ },
785
+ "budgetTokens": {
786
+ "$ref": "#/$defs/positiveInteger"
787
+ },
788
+ "display": {
789
+ "type": "string",
790
+ "enum": [
791
+ "summarized",
792
+ "omitted"
793
+ ]
794
+ }
795
+ },
796
+ "additionalProperties": false
797
+ },
798
+ {
799
+ "type": "object",
800
+ "required": [
801
+ "type"
802
+ ],
803
+ "properties": {
804
+ "type": {
805
+ "const": "adaptive"
806
+ },
807
+ "display": {
808
+ "type": "string",
809
+ "enum": [
810
+ "summarized",
811
+ "omitted"
812
+ ]
813
+ }
814
+ },
815
+ "additionalProperties": false
816
+ },
817
+ {
818
+ "type": "object",
819
+ "required": [
820
+ "type"
821
+ ],
822
+ "properties": {
823
+ "type": {
824
+ "const": "disabled"
825
+ }
826
+ },
827
+ "additionalProperties": false
828
+ }
829
+ ]
830
+ },
831
+ "anthropicOptions": {
832
+ "type": "object",
833
+ "properties": {
834
+ "promptCaching": {
835
+ "oneOf": [
836
+ {
837
+ "const": false
838
+ },
839
+ {
840
+ "type": "object",
841
+ "properties": {
842
+ "ttl": {
843
+ "enum": [
844
+ "5m",
845
+ "1h"
846
+ ]
847
+ },
848
+ "cacheInstructions": {
849
+ "type": "boolean"
850
+ }
851
+ },
852
+ "additionalProperties": false
853
+ }
854
+ ]
855
+ },
856
+ "unknownCapabilityPolicy": {
857
+ "enum": [
858
+ "allow",
859
+ "require-known"
860
+ ]
861
+ },
862
+ "thinking": {
863
+ "$ref": "#/$defs/anthropicThinking"
864
+ },
865
+ "reasoningEffort": {
866
+ "$ref": "#/$defs/reasoningEffort"
867
+ },
868
+ "maxTokens": {
869
+ "$ref": "#/$defs/positiveInteger"
870
+ },
871
+ "apiVersion": {
872
+ "$ref": "#/$defs/nonEmptyString"
873
+ }
874
+ },
875
+ "additionalProperties": false
876
+ },
877
+ "modelResponseFormat": {
878
+ "oneOf": [
879
+ {
880
+ "type": "object",
881
+ "properties": {
882
+ "type": {
883
+ "const": "json"
884
+ }
885
+ },
886
+ "required": [
887
+ "type"
888
+ ],
889
+ "additionalProperties": false
890
+ },
891
+ {
892
+ "type": "object",
893
+ "properties": {
894
+ "type": {
895
+ "const": "jsonSchema"
896
+ },
897
+ "name": {
898
+ "type": "string",
899
+ "pattern": "^[A-Za-z0-9_-]{1,64}$"
900
+ },
901
+ "schema": {
902
+ "type": "object"
903
+ },
904
+ "strict": {
905
+ "type": "boolean"
906
+ }
907
+ },
908
+ "required": [
909
+ "type",
910
+ "name",
911
+ "schema"
912
+ ],
913
+ "additionalProperties": false
914
+ }
915
+ ]
916
+ },
917
+ "runBudget": {
918
+ "type": "object",
919
+ "properties": {
920
+ "maxDurationMs": {
921
+ "type": "integer",
922
+ "minimum": 1,
923
+ "maximum": 2147483647
924
+ },
925
+ "maxSteps": {
926
+ "$ref": "#/$defs/positiveInteger"
927
+ },
928
+ "maxModelCalls": {
929
+ "$ref": "#/$defs/positiveInteger"
930
+ },
931
+ "maxToolCalls": {
932
+ "$ref": "#/$defs/positiveInteger"
933
+ },
934
+ "maxTotalTokens": {
935
+ "$ref": "#/$defs/positiveInteger"
936
+ },
937
+ "maxCostUsd": {
938
+ "type": "number",
939
+ "exclusiveMinimum": 0
940
+ },
941
+ "tokenPrices": {
942
+ "type": "object",
943
+ "required": [
944
+ "inputUsdPerMillion",
945
+ "outputUsdPerMillion"
946
+ ],
947
+ "properties": {
948
+ "inputUsdPerMillion": {
949
+ "type": "number",
950
+ "minimum": 0
951
+ },
952
+ "outputUsdPerMillion": {
953
+ "type": "number",
954
+ "minimum": 0
955
+ },
956
+ "cachedReadUsdPerMillion": {
957
+ "type": "number",
958
+ "minimum": 0
959
+ },
960
+ "cachedWriteUsdPerMillion": {
961
+ "type": "number",
962
+ "minimum": 0
963
+ },
964
+ "reasoningUsdPerMillion": {
965
+ "type": "number",
966
+ "minimum": 0
967
+ }
968
+ },
969
+ "additionalProperties": false
970
+ },
971
+ "pricing": {
972
+ "$ref": "#/$defs/tokenPriceSchedule"
973
+ }
974
+ },
975
+ "not": {
976
+ "required": [
977
+ "tokenPrices",
978
+ "pricing"
979
+ ]
980
+ },
981
+ "if": {
982
+ "required": [
983
+ "maxCostUsd"
984
+ ]
985
+ },
986
+ "then": {
987
+ "anyOf": [
988
+ {
989
+ "required": [
990
+ "tokenPrices"
991
+ ]
992
+ },
993
+ {
994
+ "required": [
995
+ "pricing"
996
+ ]
997
+ }
998
+ ],
999
+ "properties": {
1000
+ "pricing": {
1001
+ "properties": {
1002
+ "currency": {
1003
+ "const": "USD"
1004
+ }
1005
+ }
1006
+ }
1007
+ }
1008
+ },
1009
+ "additionalProperties": false
1010
+ },
1011
+ "tokenPriceSchedule": {
1012
+ "type": "object",
1013
+ "required": [
1014
+ "id",
1015
+ "version",
1016
+ "currency",
1017
+ "source",
1018
+ "effectiveAt",
1019
+ "inputPerMillion",
1020
+ "outputPerMillion"
1021
+ ],
1022
+ "properties": {
1023
+ "id": {
1024
+ "type": "string",
1025
+ "minLength": 1,
1026
+ "maxLength": 256
1027
+ },
1028
+ "version": {
1029
+ "type": "string",
1030
+ "minLength": 1,
1031
+ "maxLength": 256
1032
+ },
1033
+ "currency": {
1034
+ "type": "string",
1035
+ "pattern": "^[A-Z]{3}$"
1036
+ },
1037
+ "source": {
1038
+ "type": "string",
1039
+ "minLength": 1,
1040
+ "maxLength": 256
1041
+ },
1042
+ "effectiveAt": {
1043
+ "type": "string",
1044
+ "format": "date-time"
1045
+ },
1046
+ "inputPerMillion": {
1047
+ "type": "number",
1048
+ "minimum": 0
1049
+ },
1050
+ "outputPerMillion": {
1051
+ "type": "number",
1052
+ "minimum": 0
1053
+ },
1054
+ "cachedReadPerMillion": {
1055
+ "type": "number",
1056
+ "minimum": 0
1057
+ },
1058
+ "cachedWritePerMillion": {
1059
+ "type": "number",
1060
+ "minimum": 0
1061
+ },
1062
+ "reasoningPerMillion": {
1063
+ "type": "number",
1064
+ "minimum": 0
1065
+ },
1066
+ "items": {
1067
+ "type": "object",
1068
+ "maxProperties": 64,
1069
+ "additionalProperties": {
1070
+ "type": "object",
1071
+ "required": [
1072
+ "unit",
1073
+ "perUnit"
1074
+ ],
1075
+ "properties": {
1076
+ "unit": {
1077
+ "type": "string",
1078
+ "minLength": 1,
1079
+ "maxLength": 256
1080
+ },
1081
+ "perUnit": {
1082
+ "type": "number",
1083
+ "minimum": 0
1084
+ }
1085
+ },
1086
+ "additionalProperties": false
1087
+ }
1088
+ }
1089
+ },
1090
+ "additionalProperties": false
1091
+ },
1092
+ "subagentIdentifier": {
1093
+ "type": "string",
1094
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9_.-]{0,63}$",
1095
+ "not": {
1096
+ "enum": [
1097
+ "constructor",
1098
+ "prototype"
1099
+ ]
1100
+ }
1101
+ },
1102
+ "subagentRole": {
1103
+ "type": "object",
1104
+ "properties": {
1105
+ "model": {
1106
+ "$ref": "#/$defs/subagentIdentifier",
1107
+ "description": "Model profile name. Without it the role inherits the main Session model and reasoning effort."
1108
+ },
1109
+ "reasoningEffort": {
1110
+ "type": "string",
1111
+ "pattern": "\\S",
1112
+ "maxLength": 64
1113
+ },
1114
+ "instructions": {
1115
+ "type": "string",
1116
+ "pattern": "^[^\\u0000]*\\S[^\\u0000]*$",
1117
+ "maxLength": 16384
1118
+ },
1119
+ "tools": {
1120
+ "type": "array",
1121
+ "maxItems": 7,
1122
+ "uniqueItems": true,
1123
+ "items": {
1124
+ "enum": [
1125
+ "read",
1126
+ "shell",
1127
+ "edit",
1128
+ "write",
1129
+ "glob",
1130
+ "grep",
1131
+ "fetch"
1132
+ ]
1133
+ }
1134
+ },
1135
+ "delegateTo": {
1136
+ "type": "array",
1137
+ "maxItems": 8,
1138
+ "uniqueItems": true,
1139
+ "items": {
1140
+ "$ref": "#/$defs/subagentIdentifier"
1141
+ }
1142
+ },
1143
+ "runBudget": {
1144
+ "$ref": "#/$defs/runBudget"
1145
+ }
1146
+ },
1147
+ "additionalProperties": false
1148
+ },
1149
+ "mcpStdioServer": {
1150
+ "type": "object",
1151
+ "properties": {
1152
+ "enabled": {
1153
+ "type": "boolean",
1154
+ "default": true
1155
+ },
1156
+ "required": {
1157
+ "type": "boolean",
1158
+ "default": true
1159
+ },
1160
+ "transport": {
1161
+ "const": "stdio",
1162
+ "default": "stdio"
1163
+ },
1164
+ "protocolMode": {
1165
+ "enum": [
1166
+ "legacy",
1167
+ "auto"
1168
+ ],
1169
+ "default": "legacy"
1170
+ },
1171
+ "host": {
1172
+ "$ref": "#/$defs/mcpHostOptions"
1173
+ },
1174
+ "tasks": {
1175
+ "type": "boolean",
1176
+ "default": false,
1177
+ "description": "Enable the modern Tasks extension with durable encrypted handles."
1178
+ },
1179
+ "command": {
1180
+ "$ref": "#/$defs/nonEmptyString"
1181
+ },
1182
+ "args": {
1183
+ "type": "array",
1184
+ "items": {
1185
+ "type": "string"
1186
+ }
1187
+ },
1188
+ "cwd": {
1189
+ "$ref": "#/$defs/nonEmptyString"
1190
+ },
1191
+ "env": {
1192
+ "type": "object",
1193
+ "propertyNames": {
1194
+ "minLength": 1
1195
+ },
1196
+ "additionalProperties": {
1197
+ "type": "string"
1198
+ }
1199
+ },
1200
+ "requestTimeoutMs": {
1201
+ "$ref": "#/$defs/positiveInteger"
1202
+ },
1203
+ "maxTotalTimeoutMs": {
1204
+ "$ref": "#/$defs/positiveInteger"
1205
+ },
1206
+ "maxBufferSize": {
1207
+ "$ref": "#/$defs/positiveInteger"
1208
+ },
1209
+ "stderrMaxBytes": {
1210
+ "$ref": "#/$defs/positiveInteger",
1211
+ "default": 16384
1212
+ }
1213
+ },
1214
+ "anyOf": [
1215
+ {
1216
+ "required": [
1217
+ "enabled"
1218
+ ],
1219
+ "properties": {
1220
+ "enabled": {
1221
+ "const": false
1222
+ }
1223
+ }
1224
+ },
1225
+ {
1226
+ "required": [
1227
+ "command"
1228
+ ]
1229
+ }
1230
+ ],
1231
+ "additionalProperties": false
1232
+ },
1233
+ "mcpHttpServer": {
1234
+ "type": "object",
1235
+ "required": [
1236
+ "transport"
1237
+ ],
1238
+ "properties": {
1239
+ "enabled": {
1240
+ "type": "boolean",
1241
+ "default": true
1242
+ },
1243
+ "required": {
1244
+ "type": "boolean",
1245
+ "default": true
1246
+ },
1247
+ "transport": {
1248
+ "const": "streamable-http"
1249
+ },
1250
+ "url": {
1251
+ "$ref": "#/$defs/nonEmptyString",
1252
+ "description": "HTTPS endpoint (HTTP only on loopback); redirects and URL credentials are refused at runtime."
1253
+ },
1254
+ "headers": {
1255
+ "type": "object",
1256
+ "propertyNames": {
1257
+ "minLength": 1
1258
+ },
1259
+ "additionalProperties": {
1260
+ "type": "string"
1261
+ }
1262
+ },
1263
+ "auth": {
1264
+ "$ref": "#/$defs/mcpOAuthOptions"
1265
+ },
1266
+ "protocolMode": {
1267
+ "enum": [
1268
+ "legacy",
1269
+ "auto"
1270
+ ],
1271
+ "default": "auto"
1272
+ },
1273
+ "host": {
1274
+ "$ref": "#/$defs/mcpHostOptions"
1275
+ },
1276
+ "tasks": {
1277
+ "type": "boolean",
1278
+ "default": false,
1279
+ "description": "Enable the modern Tasks extension with durable encrypted handles."
1280
+ },
1281
+ "requestTimeoutMs": {
1282
+ "$ref": "#/$defs/positiveInteger"
1283
+ },
1284
+ "maxTotalTimeoutMs": {
1285
+ "$ref": "#/$defs/positiveInteger"
1286
+ }
1287
+ },
1288
+ "anyOf": [
1289
+ {
1290
+ "required": [
1291
+ "enabled"
1292
+ ],
1293
+ "properties": {
1294
+ "enabled": {
1295
+ "const": false
1296
+ }
1297
+ }
1298
+ },
1299
+ {
1300
+ "required": [
1301
+ "url"
1302
+ ]
1303
+ }
1304
+ ],
1305
+ "additionalProperties": false
1306
+ },
1307
+ "mcpHostOptions": {
1308
+ "type": "object",
1309
+ "description": "Explicit compatibility options; an active interaction UI and host services are also required.",
1310
+ "properties": {
1311
+ "roots": {
1312
+ "type": "boolean",
1313
+ "default": false
1314
+ },
1315
+ "sampling": {
1316
+ "type": "boolean",
1317
+ "default": false
1318
+ },
1319
+ "legacyRequests": {
1320
+ "const": "isolated",
1321
+ "description": "Use a fresh process/session for each legacy interactive operation, never shared or reused."
1322
+ }
1323
+ },
1324
+ "additionalProperties": false
1325
+ },
1326
+ "mcpOAuthOptions": {
1327
+ "type": "object",
1328
+ "required": [
1329
+ "type"
1330
+ ],
1331
+ "properties": {
1332
+ "type": {
1333
+ "const": "oauth"
1334
+ },
1335
+ "account": {
1336
+ "$ref": "#/$defs/nonEmptyString"
1337
+ },
1338
+ "clientId": {
1339
+ "$ref": "#/$defs/nonEmptyString"
1340
+ },
1341
+ "expectedIssuer": {
1342
+ "$ref": "#/$defs/nonEmptyString"
1343
+ },
1344
+ "clientMetadataUrl": {
1345
+ "$ref": "#/$defs/nonEmptyString"
1346
+ },
1347
+ "scopes": {
1348
+ "type": "array",
1349
+ "items": {
1350
+ "$ref": "#/$defs/nonEmptyString"
1351
+ }
1352
+ },
1353
+ "authorizationOrigins": {
1354
+ "type": "array",
1355
+ "items": {
1356
+ "$ref": "#/$defs/nonEmptyString"
1357
+ }
1358
+ },
1359
+ "callbackPort": {
1360
+ "type": "integer",
1361
+ "minimum": 0,
1362
+ "maximum": 65535
1363
+ }
1364
+ },
1365
+ "dependentRequired": {
1366
+ "clientId": [
1367
+ "expectedIssuer"
1368
+ ]
1369
+ },
1370
+ "not": {
1371
+ "required": [
1372
+ "clientId",
1373
+ "clientMetadataUrl"
1374
+ ]
1375
+ },
1376
+ "additionalProperties": false
1377
+ },
1378
+ "maybecode": {
1379
+ "type": "object",
1380
+ "description": "MaybeCode settings.",
1381
+ "properties": {
1382
+ "execution": {
1383
+ "default": {
1384
+ "mode": "host"
1385
+ },
1386
+ "oneOf": [
1387
+ {
1388
+ "type": "object",
1389
+ "properties": {
1390
+ "mode": {
1391
+ "const": "host"
1392
+ }
1393
+ },
1394
+ "required": [
1395
+ "mode"
1396
+ ],
1397
+ "additionalProperties": false
1398
+ },
1399
+ {
1400
+ "type": "object",
1401
+ "properties": {
1402
+ "mode": {
1403
+ "const": "container"
1404
+ },
1405
+ "image": {
1406
+ "$ref": "#/$defs/nonEmptyString"
1407
+ },
1408
+ "network": {
1409
+ "const": "none"
1410
+ },
1411
+ "memoryBytes": {
1412
+ "$ref": "#/$defs/positiveInteger"
1413
+ },
1414
+ "cpuCount": {
1415
+ "type": "number",
1416
+ "exclusiveMinimum": 0
1417
+ }
1418
+ },
1419
+ "required": [
1420
+ "mode",
1421
+ "image",
1422
+ "network",
1423
+ "memoryBytes",
1424
+ "cpuCount"
1425
+ ],
1426
+ "additionalProperties": false
1427
+ }
1428
+ ]
1429
+ },
1430
+ "fetch": {
1431
+ "type": "object",
1432
+ "properties": {
1433
+ "allowedOrigins": {
1434
+ "type": "array",
1435
+ "uniqueItems": true,
1436
+ "items": {
1437
+ "type": "string",
1438
+ "pattern": "^https?://(?:[A-Za-z0-9.-]+|\\[[A-Fa-f0-9:]+\\])(?::[0-9]{1,5})?$"
1439
+ }
1440
+ },
1441
+ "maxBytes": {
1442
+ "$ref": "#/$defs/positiveInteger"
1443
+ },
1444
+ "timeoutMs": {
1445
+ "$ref": "#/$defs/positiveInteger"
1446
+ },
1447
+ "maxRedirects": {
1448
+ "type": "integer",
1449
+ "minimum": 0
1450
+ }
1451
+ },
1452
+ "additionalProperties": false
1453
+ },
1454
+ "requestRecording": {
1455
+ "enum": [
1456
+ "off",
1457
+ "required"
1458
+ ],
1459
+ "default": "required"
1460
+ },
1461
+ "providerBodyRecording": {
1462
+ "type": "boolean",
1463
+ "default": false
1464
+ },
1465
+ "git": {
1466
+ "oneOf": [
1467
+ {
1468
+ "const": false
1469
+ },
1470
+ {
1471
+ "type": "object",
1472
+ "properties": {
1473
+ "autoCommit": {
1474
+ "type": "boolean",
1475
+ "default": true
1476
+ },
1477
+ "readOnly": {
1478
+ "type": "boolean",
1479
+ "default": false
1480
+ },
1481
+ "dataRoot": {
1482
+ "$ref": "#/$defs/nonEmptyString"
1483
+ },
1484
+ "worktreesRoot": {
1485
+ "$ref": "#/$defs/nonEmptyString"
1486
+ },
1487
+ "excludedPaths": {
1488
+ "type": "array",
1489
+ "items": {
1490
+ "$ref": "#/$defs/nonEmptyString"
1491
+ }
1492
+ }
1493
+ },
1494
+ "additionalProperties": false
1495
+ }
1496
+ ]
1497
+ },
1498
+ "plugins": {
1499
+ "$ref": "#/$defs/pluginSelections"
1500
+ },
1501
+ "permissionMode": {
1502
+ "enum": [
1503
+ "default",
1504
+ "yolo"
1505
+ ],
1506
+ "default": "default",
1507
+ "description": "Tool approval mode. yolo auto-approves requests while preserving explicit policy denials."
1508
+ },
1509
+ "persistentRules": {
1510
+ "type": "boolean",
1511
+ "default": false,
1512
+ "description": "Enable project-scoped persistent file permissions in .may/permission-rules.json."
1513
+ },
1514
+ "delegationNotifications": {
1515
+ "type": "boolean",
1516
+ "default": false,
1517
+ "description": "Show a notice when a sub-agent task finishes."
1518
+ },
1519
+ "instructionsDirectory": {
1520
+ "$ref": "#/$defs/nonEmptyString"
1521
+ },
1522
+ "skills": {
1523
+ "oneOf": [
1524
+ {
1525
+ "const": false
1526
+ },
1527
+ {
1528
+ "type": "object",
1529
+ "properties": {
1530
+ "directories": {
1531
+ "type": "array",
1532
+ "maxItems": 32,
1533
+ "items": {
1534
+ "$ref": "#/$defs/nonEmptyString"
1535
+ }
1536
+ }
1537
+ },
1538
+ "additionalProperties": false
1539
+ }
1540
+ ]
1541
+ },
1542
+ "runBudget": {
1543
+ "$ref": "#/$defs/runBudget"
1544
+ },
1545
+ "subagents": {
1546
+ "oneOf": [
1547
+ {
1548
+ "const": false
1549
+ },
1550
+ {
1551
+ "type": "object",
1552
+ "properties": {
1553
+ "enabled": {
1554
+ "type": "boolean",
1555
+ "default": true,
1556
+ "description": "Sub-agent delegation for ordinary requests. Enabled by default."
1557
+ },
1558
+ "roles": {
1559
+ "type": "object",
1560
+ "minProperties": 1,
1561
+ "maxProperties": 8,
1562
+ "propertyNames": {
1563
+ "$ref": "#/$defs/subagentIdentifier"
1564
+ },
1565
+ "additionalProperties": {
1566
+ "$ref": "#/$defs/subagentRole"
1567
+ }
1568
+ },
1569
+ "defaultRole": {
1570
+ "$ref": "#/$defs/subagentIdentifier"
1571
+ },
1572
+ "limits": {
1573
+ "type": "object",
1574
+ "properties": {
1575
+ "maxConcurrent": {
1576
+ "type": "integer",
1577
+ "minimum": 1,
1578
+ "maximum": 8,
1579
+ "default": 2
1580
+ },
1581
+ "maxTasks": {
1582
+ "type": "integer",
1583
+ "minimum": 1,
1584
+ "maximum": 128,
1585
+ "default": 24
1586
+ },
1587
+ "maxDepth": {
1588
+ "type": "integer",
1589
+ "minimum": 2,
1590
+ "maximum": 4,
1591
+ "default": 3
1592
+ },
1593
+ "maxTaskTurns": {
1594
+ "type": "integer",
1595
+ "minimum": 2,
1596
+ "maximum": 16,
1597
+ "default": 6
1598
+ },
1599
+ "maxDurationMs": {
1600
+ "type": "integer",
1601
+ "minimum": 1,
1602
+ "maximum": 3600000,
1603
+ "default": 900000
1604
+ },
1605
+ "maxInputBytes": {
1606
+ "type": "integer",
1607
+ "minimum": 1,
1608
+ "maximum": 65536,
1609
+ "default": 32768
1610
+ },
1611
+ "maxOutputBytes": {
1612
+ "type": "integer",
1613
+ "minimum": 1,
1614
+ "maximum": 262144,
1615
+ "default": 65536
1616
+ }
1617
+ },
1618
+ "additionalProperties": false
1619
+ },
1620
+ "runBudget": {
1621
+ "$ref": "#/$defs/runBudget",
1622
+ "description": "Per child Run budget."
1623
+ },
1624
+ "maxModelCalls": {
1625
+ "type": "integer",
1626
+ "minimum": 1,
1627
+ "maximum": 10000,
1628
+ "default": 128,
1629
+ "description": "Model calls reserved across the main Run, child Runs and compaction of one request."
1630
+ },
1631
+ "maxTotalTokens": {
1632
+ "$ref": "#/$defs/positiveInteger",
1633
+ "description": "Optional token ceiling checked against per-call reservations."
1634
+ },
1635
+ "reservationTokens": {
1636
+ "type": "integer",
1637
+ "minimum": 1,
1638
+ "maximum": 10000000,
1639
+ "default": 32768
1640
+ }
1641
+ },
1642
+ "additionalProperties": false
1643
+ }
1644
+ ]
1645
+ },
1646
+ "autoCompaction": {
1647
+ "type": "object",
1648
+ "properties": {
1649
+ "mode": {
1650
+ "enum": [
1651
+ "prune-summary",
1652
+ "history-reference",
1653
+ "provider-native"
1654
+ ],
1655
+ "default": "prune-summary"
1656
+ }
1657
+ },
1658
+ "additionalProperties": false
1659
+ },
1660
+ "retry": {
1661
+ "oneOf": [
1662
+ {
1663
+ "const": false
1664
+ },
1665
+ {
1666
+ "type": "object",
1667
+ "properties": {
1668
+ "maxAttempts": {
1669
+ "$ref": "#/$defs/positiveInteger"
1670
+ },
1671
+ "baseDelayMs": {
1672
+ "type": "number",
1673
+ "minimum": 0
1674
+ },
1675
+ "maxDelayMs": {
1676
+ "type": "number",
1677
+ "minimum": 0
1678
+ },
1679
+ "jitterRatio": {
1680
+ "type": "number",
1681
+ "minimum": 0,
1682
+ "maximum": 1
1683
+ }
1684
+ },
1685
+ "additionalProperties": false
1686
+ }
1687
+ ]
1688
+ },
1689
+ "observability": {
1690
+ "oneOf": [
1691
+ {
1692
+ "const": false
1693
+ },
1694
+ {
1695
+ "type": "object",
1696
+ "properties": {
1697
+ "enabled": {
1698
+ "type": "boolean",
1699
+ "default": true
1700
+ },
1701
+ "exporter": {
1702
+ "const": "file",
1703
+ "default": "file"
1704
+ },
1705
+ "file": {
1706
+ "$ref": "#/$defs/nonEmptyString"
1707
+ },
1708
+ "samplingRatio": {
1709
+ "type": "number",
1710
+ "minimum": 0,
1711
+ "maximum": 1
1712
+ },
1713
+ "retentionDays": {
1714
+ "$ref": "#/$defs/positiveInteger",
1715
+ "default": 60
1716
+ },
1717
+ "batch": {
1718
+ "type": "object",
1719
+ "properties": {
1720
+ "maxQueueSize": {
1721
+ "$ref": "#/$defs/positiveInteger"
1722
+ },
1723
+ "maxExportBatchSize": {
1724
+ "$ref": "#/$defs/positiveInteger"
1725
+ },
1726
+ "scheduledDelayMs": {
1727
+ "type": "number",
1728
+ "minimum": 0
1729
+ }
1730
+ },
1731
+ "additionalProperties": false
1732
+ }
1733
+ },
1734
+ "additionalProperties": false
1735
+ }
1736
+ ]
1737
+ },
1738
+ "mcpServers": {
1739
+ "oneOf": [
1740
+ {
1741
+ "const": false
1742
+ },
1743
+ {
1744
+ "type": "object",
1745
+ "propertyNames": {
1746
+ "pattern": "^[A-Za-z0-9_-]+$"
1747
+ },
1748
+ "additionalProperties": {
1749
+ "oneOf": [
1750
+ {
1751
+ "$ref": "#/$defs/mcpStdioServer"
1752
+ },
1753
+ {
1754
+ "$ref": "#/$defs/mcpHttpServer"
1755
+ }
1756
+ ]
1757
+ }
1758
+ }
1759
+ ]
1760
+ }
1761
+ },
1762
+ "additionalProperties": false
1763
+ }
1764
+ }
1765
+ }