config.go 66 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146
  1. // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
  2. package opencode
  3. import (
  4. "context"
  5. "net/http"
  6. "net/url"
  7. "reflect"
  8. "slices"
  9. "github.com/sst/opencode-sdk-go/internal/apijson"
  10. "github.com/sst/opencode-sdk-go/internal/apiquery"
  11. "github.com/sst/opencode-sdk-go/internal/param"
  12. "github.com/sst/opencode-sdk-go/internal/requestconfig"
  13. "github.com/sst/opencode-sdk-go/option"
  14. "github.com/sst/opencode-sdk-go/shared"
  15. "github.com/tidwall/gjson"
  16. )
  17. // ConfigService contains methods and other services that help with interacting
  18. // with the opencode API.
  19. //
  20. // Note, unlike clients, this service does not read variables from the environment
  21. // automatically. You should not instantiate this service directly, and instead use
  22. // the [NewConfigService] method instead.
  23. type ConfigService struct {
  24. Options []option.RequestOption
  25. }
  26. // NewConfigService generates a new service that applies the given options to each
  27. // request. These options are applied after the parent client's options (if there
  28. // is one), and before any request-specific options.
  29. func NewConfigService(opts ...option.RequestOption) (r *ConfigService) {
  30. r = &ConfigService{}
  31. r.Options = opts
  32. return
  33. }
  34. // Get config info
  35. func (r *ConfigService) Get(ctx context.Context, query ConfigGetParams, opts ...option.RequestOption) (res *Config, err error) {
  36. opts = slices.Concat(r.Options, opts)
  37. path := "config"
  38. err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, query, &res, opts...)
  39. return
  40. }
  41. type Config struct {
  42. // JSON schema reference for configuration validation
  43. Schema string `json:"$schema"`
  44. // Agent configuration, see https://opencode.ai/docs/agent
  45. Agent ConfigAgent `json:"agent"`
  46. // @deprecated Use 'share' field instead. Share newly created sessions
  47. // automatically
  48. Autoshare bool `json:"autoshare"`
  49. // Automatically update to the latest version
  50. Autoupdate bool `json:"autoupdate"`
  51. // Command configuration, see https://opencode.ai/docs/commands
  52. Command map[string]ConfigCommand `json:"command"`
  53. // Disable providers that are loaded automatically
  54. DisabledProviders []string `json:"disabled_providers"`
  55. Experimental ConfigExperimental `json:"experimental"`
  56. Formatter map[string]ConfigFormatter `json:"formatter"`
  57. // Additional instruction files or patterns to include
  58. Instructions []string `json:"instructions"`
  59. // Custom keybind configurations
  60. Keybinds KeybindsConfig `json:"keybinds"`
  61. // @deprecated Always uses stretch layout.
  62. Layout ConfigLayout `json:"layout"`
  63. Lsp map[string]ConfigLsp `json:"lsp"`
  64. // MCP (Model Context Protocol) server configurations
  65. Mcp map[string]ConfigMcp `json:"mcp"`
  66. // @deprecated Use `agent` field instead.
  67. Mode ConfigMode `json:"mode"`
  68. // Model to use in the format of provider/model, eg anthropic/claude-2
  69. Model string `json:"model"`
  70. Permission ConfigPermission `json:"permission"`
  71. Plugin []string `json:"plugin"`
  72. // Custom provider configurations and model overrides
  73. Provider map[string]ConfigProvider `json:"provider"`
  74. // Control sharing behavior:'manual' allows manual sharing via commands, 'auto'
  75. // enables automatic sharing, 'disabled' disables all sharing
  76. Share ConfigShare `json:"share"`
  77. // Small model to use for tasks like title generation in the format of
  78. // provider/model
  79. SmallModel string `json:"small_model"`
  80. Snapshot bool `json:"snapshot"`
  81. // Theme name to use for the interface
  82. Theme string `json:"theme"`
  83. Tools map[string]bool `json:"tools"`
  84. // TUI specific settings
  85. Tui ConfigTui `json:"tui"`
  86. // Custom username to display in conversations instead of system username
  87. Username string `json:"username"`
  88. Watcher ConfigWatcher `json:"watcher"`
  89. JSON configJSON `json:"-"`
  90. }
  91. // configJSON contains the JSON metadata for the struct [Config]
  92. type configJSON struct {
  93. Schema apijson.Field
  94. Agent apijson.Field
  95. Autoshare apijson.Field
  96. Autoupdate apijson.Field
  97. Command apijson.Field
  98. DisabledProviders apijson.Field
  99. Experimental apijson.Field
  100. Formatter apijson.Field
  101. Instructions apijson.Field
  102. Keybinds apijson.Field
  103. Layout apijson.Field
  104. Lsp apijson.Field
  105. Mcp apijson.Field
  106. Mode apijson.Field
  107. Model apijson.Field
  108. Permission apijson.Field
  109. Plugin apijson.Field
  110. Provider apijson.Field
  111. Share apijson.Field
  112. SmallModel apijson.Field
  113. Snapshot apijson.Field
  114. Theme apijson.Field
  115. Tools apijson.Field
  116. Tui apijson.Field
  117. Username apijson.Field
  118. Watcher apijson.Field
  119. raw string
  120. ExtraFields map[string]apijson.Field
  121. }
  122. func (r *Config) UnmarshalJSON(data []byte) (err error) {
  123. return apijson.UnmarshalRoot(data, r)
  124. }
  125. func (r configJSON) RawJSON() string {
  126. return r.raw
  127. }
  128. // Agent configuration, see https://opencode.ai/docs/agent
  129. type ConfigAgent struct {
  130. Build ConfigAgentBuild `json:"build"`
  131. General ConfigAgentGeneral `json:"general"`
  132. Plan ConfigAgentPlan `json:"plan"`
  133. ExtraFields map[string]ConfigAgent `json:"-,extras"`
  134. JSON configAgentJSON `json:"-"`
  135. }
  136. // configAgentJSON contains the JSON metadata for the struct [ConfigAgent]
  137. type configAgentJSON struct {
  138. Build apijson.Field
  139. General apijson.Field
  140. Plan apijson.Field
  141. raw string
  142. ExtraFields map[string]apijson.Field
  143. }
  144. func (r *ConfigAgent) UnmarshalJSON(data []byte) (err error) {
  145. return apijson.UnmarshalRoot(data, r)
  146. }
  147. func (r configAgentJSON) RawJSON() string {
  148. return r.raw
  149. }
  150. type ConfigAgentBuild struct {
  151. // Description of when to use the agent
  152. Description string `json:"description"`
  153. Disable bool `json:"disable"`
  154. Mode ConfigAgentBuildMode `json:"mode"`
  155. Model string `json:"model"`
  156. Permission ConfigAgentBuildPermission `json:"permission"`
  157. Prompt string `json:"prompt"`
  158. Temperature float64 `json:"temperature"`
  159. Tools map[string]bool `json:"tools"`
  160. TopP float64 `json:"top_p"`
  161. ExtraFields map[string]interface{} `json:"-,extras"`
  162. JSON configAgentBuildJSON `json:"-"`
  163. }
  164. // configAgentBuildJSON contains the JSON metadata for the struct
  165. // [ConfigAgentBuild]
  166. type configAgentBuildJSON struct {
  167. Description apijson.Field
  168. Disable apijson.Field
  169. Mode apijson.Field
  170. Model apijson.Field
  171. Permission apijson.Field
  172. Prompt apijson.Field
  173. Temperature apijson.Field
  174. Tools apijson.Field
  175. TopP apijson.Field
  176. raw string
  177. ExtraFields map[string]apijson.Field
  178. }
  179. func (r *ConfigAgentBuild) UnmarshalJSON(data []byte) (err error) {
  180. return apijson.UnmarshalRoot(data, r)
  181. }
  182. func (r configAgentBuildJSON) RawJSON() string {
  183. return r.raw
  184. }
  185. type ConfigAgentBuildMode string
  186. const (
  187. ConfigAgentBuildModeSubagent ConfigAgentBuildMode = "subagent"
  188. ConfigAgentBuildModePrimary ConfigAgentBuildMode = "primary"
  189. ConfigAgentBuildModeAll ConfigAgentBuildMode = "all"
  190. )
  191. func (r ConfigAgentBuildMode) IsKnown() bool {
  192. switch r {
  193. case ConfigAgentBuildModeSubagent, ConfigAgentBuildModePrimary, ConfigAgentBuildModeAll:
  194. return true
  195. }
  196. return false
  197. }
  198. type ConfigAgentBuildPermission struct {
  199. Bash ConfigAgentBuildPermissionBashUnion `json:"bash"`
  200. Edit ConfigAgentBuildPermissionEdit `json:"edit"`
  201. Webfetch ConfigAgentBuildPermissionWebfetch `json:"webfetch"`
  202. JSON configAgentBuildPermissionJSON `json:"-"`
  203. }
  204. // configAgentBuildPermissionJSON contains the JSON metadata for the struct
  205. // [ConfigAgentBuildPermission]
  206. type configAgentBuildPermissionJSON struct {
  207. Bash apijson.Field
  208. Edit apijson.Field
  209. Webfetch apijson.Field
  210. raw string
  211. ExtraFields map[string]apijson.Field
  212. }
  213. func (r *ConfigAgentBuildPermission) UnmarshalJSON(data []byte) (err error) {
  214. return apijson.UnmarshalRoot(data, r)
  215. }
  216. func (r configAgentBuildPermissionJSON) RawJSON() string {
  217. return r.raw
  218. }
  219. // Union satisfied by [ConfigAgentBuildPermissionBashString] or
  220. // [ConfigAgentBuildPermissionBashMap].
  221. type ConfigAgentBuildPermissionBashUnion interface {
  222. implementsConfigAgentBuildPermissionBashUnion()
  223. }
  224. func init() {
  225. apijson.RegisterUnion(
  226. reflect.TypeOf((*ConfigAgentBuildPermissionBashUnion)(nil)).Elem(),
  227. "",
  228. apijson.UnionVariant{
  229. TypeFilter: gjson.String,
  230. Type: reflect.TypeOf(ConfigAgentBuildPermissionBashString("")),
  231. },
  232. apijson.UnionVariant{
  233. TypeFilter: gjson.JSON,
  234. Type: reflect.TypeOf(ConfigAgentBuildPermissionBashMap{}),
  235. },
  236. )
  237. }
  238. type ConfigAgentBuildPermissionBashString string
  239. const (
  240. ConfigAgentBuildPermissionBashStringAsk ConfigAgentBuildPermissionBashString = "ask"
  241. ConfigAgentBuildPermissionBashStringAllow ConfigAgentBuildPermissionBashString = "allow"
  242. ConfigAgentBuildPermissionBashStringDeny ConfigAgentBuildPermissionBashString = "deny"
  243. )
  244. func (r ConfigAgentBuildPermissionBashString) IsKnown() bool {
  245. switch r {
  246. case ConfigAgentBuildPermissionBashStringAsk, ConfigAgentBuildPermissionBashStringAllow, ConfigAgentBuildPermissionBashStringDeny:
  247. return true
  248. }
  249. return false
  250. }
  251. func (r ConfigAgentBuildPermissionBashString) implementsConfigAgentBuildPermissionBashUnion() {}
  252. type ConfigAgentBuildPermissionBashMap map[string]ConfigAgentBuildPermissionBashMapItem
  253. func (r ConfigAgentBuildPermissionBashMap) implementsConfigAgentBuildPermissionBashUnion() {}
  254. type ConfigAgentBuildPermissionBashMapItem string
  255. const (
  256. ConfigAgentBuildPermissionBashMapAsk ConfigAgentBuildPermissionBashMapItem = "ask"
  257. ConfigAgentBuildPermissionBashMapAllow ConfigAgentBuildPermissionBashMapItem = "allow"
  258. ConfigAgentBuildPermissionBashMapDeny ConfigAgentBuildPermissionBashMapItem = "deny"
  259. )
  260. func (r ConfigAgentBuildPermissionBashMapItem) IsKnown() bool {
  261. switch r {
  262. case ConfigAgentBuildPermissionBashMapAsk, ConfigAgentBuildPermissionBashMapAllow, ConfigAgentBuildPermissionBashMapDeny:
  263. return true
  264. }
  265. return false
  266. }
  267. type ConfigAgentBuildPermissionEdit string
  268. const (
  269. ConfigAgentBuildPermissionEditAsk ConfigAgentBuildPermissionEdit = "ask"
  270. ConfigAgentBuildPermissionEditAllow ConfigAgentBuildPermissionEdit = "allow"
  271. ConfigAgentBuildPermissionEditDeny ConfigAgentBuildPermissionEdit = "deny"
  272. )
  273. func (r ConfigAgentBuildPermissionEdit) IsKnown() bool {
  274. switch r {
  275. case ConfigAgentBuildPermissionEditAsk, ConfigAgentBuildPermissionEditAllow, ConfigAgentBuildPermissionEditDeny:
  276. return true
  277. }
  278. return false
  279. }
  280. type ConfigAgentBuildPermissionWebfetch string
  281. const (
  282. ConfigAgentBuildPermissionWebfetchAsk ConfigAgentBuildPermissionWebfetch = "ask"
  283. ConfigAgentBuildPermissionWebfetchAllow ConfigAgentBuildPermissionWebfetch = "allow"
  284. ConfigAgentBuildPermissionWebfetchDeny ConfigAgentBuildPermissionWebfetch = "deny"
  285. )
  286. func (r ConfigAgentBuildPermissionWebfetch) IsKnown() bool {
  287. switch r {
  288. case ConfigAgentBuildPermissionWebfetchAsk, ConfigAgentBuildPermissionWebfetchAllow, ConfigAgentBuildPermissionWebfetchDeny:
  289. return true
  290. }
  291. return false
  292. }
  293. type ConfigAgentGeneral struct {
  294. // Description of when to use the agent
  295. Description string `json:"description"`
  296. Disable bool `json:"disable"`
  297. Mode ConfigAgentGeneralMode `json:"mode"`
  298. Model string `json:"model"`
  299. Permission ConfigAgentGeneralPermission `json:"permission"`
  300. Prompt string `json:"prompt"`
  301. Temperature float64 `json:"temperature"`
  302. Tools map[string]bool `json:"tools"`
  303. TopP float64 `json:"top_p"`
  304. ExtraFields map[string]interface{} `json:"-,extras"`
  305. JSON configAgentGeneralJSON `json:"-"`
  306. }
  307. // configAgentGeneralJSON contains the JSON metadata for the struct
  308. // [ConfigAgentGeneral]
  309. type configAgentGeneralJSON struct {
  310. Description apijson.Field
  311. Disable apijson.Field
  312. Mode apijson.Field
  313. Model apijson.Field
  314. Permission apijson.Field
  315. Prompt apijson.Field
  316. Temperature apijson.Field
  317. Tools apijson.Field
  318. TopP apijson.Field
  319. raw string
  320. ExtraFields map[string]apijson.Field
  321. }
  322. func (r *ConfigAgentGeneral) UnmarshalJSON(data []byte) (err error) {
  323. return apijson.UnmarshalRoot(data, r)
  324. }
  325. func (r configAgentGeneralJSON) RawJSON() string {
  326. return r.raw
  327. }
  328. type ConfigAgentGeneralMode string
  329. const (
  330. ConfigAgentGeneralModeSubagent ConfigAgentGeneralMode = "subagent"
  331. ConfigAgentGeneralModePrimary ConfigAgentGeneralMode = "primary"
  332. ConfigAgentGeneralModeAll ConfigAgentGeneralMode = "all"
  333. )
  334. func (r ConfigAgentGeneralMode) IsKnown() bool {
  335. switch r {
  336. case ConfigAgentGeneralModeSubagent, ConfigAgentGeneralModePrimary, ConfigAgentGeneralModeAll:
  337. return true
  338. }
  339. return false
  340. }
  341. type ConfigAgentGeneralPermission struct {
  342. Bash ConfigAgentGeneralPermissionBashUnion `json:"bash"`
  343. Edit ConfigAgentGeneralPermissionEdit `json:"edit"`
  344. Webfetch ConfigAgentGeneralPermissionWebfetch `json:"webfetch"`
  345. JSON configAgentGeneralPermissionJSON `json:"-"`
  346. }
  347. // configAgentGeneralPermissionJSON contains the JSON metadata for the struct
  348. // [ConfigAgentGeneralPermission]
  349. type configAgentGeneralPermissionJSON struct {
  350. Bash apijson.Field
  351. Edit apijson.Field
  352. Webfetch apijson.Field
  353. raw string
  354. ExtraFields map[string]apijson.Field
  355. }
  356. func (r *ConfigAgentGeneralPermission) UnmarshalJSON(data []byte) (err error) {
  357. return apijson.UnmarshalRoot(data, r)
  358. }
  359. func (r configAgentGeneralPermissionJSON) RawJSON() string {
  360. return r.raw
  361. }
  362. // Union satisfied by [ConfigAgentGeneralPermissionBashString] or
  363. // [ConfigAgentGeneralPermissionBashMap].
  364. type ConfigAgentGeneralPermissionBashUnion interface {
  365. implementsConfigAgentGeneralPermissionBashUnion()
  366. }
  367. func init() {
  368. apijson.RegisterUnion(
  369. reflect.TypeOf((*ConfigAgentGeneralPermissionBashUnion)(nil)).Elem(),
  370. "",
  371. apijson.UnionVariant{
  372. TypeFilter: gjson.String,
  373. Type: reflect.TypeOf(ConfigAgentGeneralPermissionBashString("")),
  374. },
  375. apijson.UnionVariant{
  376. TypeFilter: gjson.JSON,
  377. Type: reflect.TypeOf(ConfigAgentGeneralPermissionBashMap{}),
  378. },
  379. )
  380. }
  381. type ConfigAgentGeneralPermissionBashString string
  382. const (
  383. ConfigAgentGeneralPermissionBashStringAsk ConfigAgentGeneralPermissionBashString = "ask"
  384. ConfigAgentGeneralPermissionBashStringAllow ConfigAgentGeneralPermissionBashString = "allow"
  385. ConfigAgentGeneralPermissionBashStringDeny ConfigAgentGeneralPermissionBashString = "deny"
  386. )
  387. func (r ConfigAgentGeneralPermissionBashString) IsKnown() bool {
  388. switch r {
  389. case ConfigAgentGeneralPermissionBashStringAsk, ConfigAgentGeneralPermissionBashStringAllow, ConfigAgentGeneralPermissionBashStringDeny:
  390. return true
  391. }
  392. return false
  393. }
  394. func (r ConfigAgentGeneralPermissionBashString) implementsConfigAgentGeneralPermissionBashUnion() {}
  395. type ConfigAgentGeneralPermissionBashMap map[string]ConfigAgentGeneralPermissionBashMapItem
  396. func (r ConfigAgentGeneralPermissionBashMap) implementsConfigAgentGeneralPermissionBashUnion() {}
  397. type ConfigAgentGeneralPermissionBashMapItem string
  398. const (
  399. ConfigAgentGeneralPermissionBashMapAsk ConfigAgentGeneralPermissionBashMapItem = "ask"
  400. ConfigAgentGeneralPermissionBashMapAllow ConfigAgentGeneralPermissionBashMapItem = "allow"
  401. ConfigAgentGeneralPermissionBashMapDeny ConfigAgentGeneralPermissionBashMapItem = "deny"
  402. )
  403. func (r ConfigAgentGeneralPermissionBashMapItem) IsKnown() bool {
  404. switch r {
  405. case ConfigAgentGeneralPermissionBashMapAsk, ConfigAgentGeneralPermissionBashMapAllow, ConfigAgentGeneralPermissionBashMapDeny:
  406. return true
  407. }
  408. return false
  409. }
  410. type ConfigAgentGeneralPermissionEdit string
  411. const (
  412. ConfigAgentGeneralPermissionEditAsk ConfigAgentGeneralPermissionEdit = "ask"
  413. ConfigAgentGeneralPermissionEditAllow ConfigAgentGeneralPermissionEdit = "allow"
  414. ConfigAgentGeneralPermissionEditDeny ConfigAgentGeneralPermissionEdit = "deny"
  415. )
  416. func (r ConfigAgentGeneralPermissionEdit) IsKnown() bool {
  417. switch r {
  418. case ConfigAgentGeneralPermissionEditAsk, ConfigAgentGeneralPermissionEditAllow, ConfigAgentGeneralPermissionEditDeny:
  419. return true
  420. }
  421. return false
  422. }
  423. type ConfigAgentGeneralPermissionWebfetch string
  424. const (
  425. ConfigAgentGeneralPermissionWebfetchAsk ConfigAgentGeneralPermissionWebfetch = "ask"
  426. ConfigAgentGeneralPermissionWebfetchAllow ConfigAgentGeneralPermissionWebfetch = "allow"
  427. ConfigAgentGeneralPermissionWebfetchDeny ConfigAgentGeneralPermissionWebfetch = "deny"
  428. )
  429. func (r ConfigAgentGeneralPermissionWebfetch) IsKnown() bool {
  430. switch r {
  431. case ConfigAgentGeneralPermissionWebfetchAsk, ConfigAgentGeneralPermissionWebfetchAllow, ConfigAgentGeneralPermissionWebfetchDeny:
  432. return true
  433. }
  434. return false
  435. }
  436. type ConfigAgentPlan struct {
  437. // Description of when to use the agent
  438. Description string `json:"description"`
  439. Disable bool `json:"disable"`
  440. Mode ConfigAgentPlanMode `json:"mode"`
  441. Model string `json:"model"`
  442. Permission ConfigAgentPlanPermission `json:"permission"`
  443. Prompt string `json:"prompt"`
  444. Temperature float64 `json:"temperature"`
  445. Tools map[string]bool `json:"tools"`
  446. TopP float64 `json:"top_p"`
  447. ExtraFields map[string]interface{} `json:"-,extras"`
  448. JSON configAgentPlanJSON `json:"-"`
  449. }
  450. // configAgentPlanJSON contains the JSON metadata for the struct [ConfigAgentPlan]
  451. type configAgentPlanJSON struct {
  452. Description apijson.Field
  453. Disable apijson.Field
  454. Mode apijson.Field
  455. Model apijson.Field
  456. Permission apijson.Field
  457. Prompt apijson.Field
  458. Temperature apijson.Field
  459. Tools apijson.Field
  460. TopP apijson.Field
  461. raw string
  462. ExtraFields map[string]apijson.Field
  463. }
  464. func (r *ConfigAgentPlan) UnmarshalJSON(data []byte) (err error) {
  465. return apijson.UnmarshalRoot(data, r)
  466. }
  467. func (r configAgentPlanJSON) RawJSON() string {
  468. return r.raw
  469. }
  470. type ConfigAgentPlanMode string
  471. const (
  472. ConfigAgentPlanModeSubagent ConfigAgentPlanMode = "subagent"
  473. ConfigAgentPlanModePrimary ConfigAgentPlanMode = "primary"
  474. ConfigAgentPlanModeAll ConfigAgentPlanMode = "all"
  475. )
  476. func (r ConfigAgentPlanMode) IsKnown() bool {
  477. switch r {
  478. case ConfigAgentPlanModeSubagent, ConfigAgentPlanModePrimary, ConfigAgentPlanModeAll:
  479. return true
  480. }
  481. return false
  482. }
  483. type ConfigAgentPlanPermission struct {
  484. Bash ConfigAgentPlanPermissionBashUnion `json:"bash"`
  485. Edit ConfigAgentPlanPermissionEdit `json:"edit"`
  486. Webfetch ConfigAgentPlanPermissionWebfetch `json:"webfetch"`
  487. JSON configAgentPlanPermissionJSON `json:"-"`
  488. }
  489. // configAgentPlanPermissionJSON contains the JSON metadata for the struct
  490. // [ConfigAgentPlanPermission]
  491. type configAgentPlanPermissionJSON struct {
  492. Bash apijson.Field
  493. Edit apijson.Field
  494. Webfetch apijson.Field
  495. raw string
  496. ExtraFields map[string]apijson.Field
  497. }
  498. func (r *ConfigAgentPlanPermission) UnmarshalJSON(data []byte) (err error) {
  499. return apijson.UnmarshalRoot(data, r)
  500. }
  501. func (r configAgentPlanPermissionJSON) RawJSON() string {
  502. return r.raw
  503. }
  504. // Union satisfied by [ConfigAgentPlanPermissionBashString] or
  505. // [ConfigAgentPlanPermissionBashMap].
  506. type ConfigAgentPlanPermissionBashUnion interface {
  507. implementsConfigAgentPlanPermissionBashUnion()
  508. }
  509. func init() {
  510. apijson.RegisterUnion(
  511. reflect.TypeOf((*ConfigAgentPlanPermissionBashUnion)(nil)).Elem(),
  512. "",
  513. apijson.UnionVariant{
  514. TypeFilter: gjson.String,
  515. Type: reflect.TypeOf(ConfigAgentPlanPermissionBashString("")),
  516. },
  517. apijson.UnionVariant{
  518. TypeFilter: gjson.JSON,
  519. Type: reflect.TypeOf(ConfigAgentPlanPermissionBashMap{}),
  520. },
  521. )
  522. }
  523. type ConfigAgentPlanPermissionBashString string
  524. const (
  525. ConfigAgentPlanPermissionBashStringAsk ConfigAgentPlanPermissionBashString = "ask"
  526. ConfigAgentPlanPermissionBashStringAllow ConfigAgentPlanPermissionBashString = "allow"
  527. ConfigAgentPlanPermissionBashStringDeny ConfigAgentPlanPermissionBashString = "deny"
  528. )
  529. func (r ConfigAgentPlanPermissionBashString) IsKnown() bool {
  530. switch r {
  531. case ConfigAgentPlanPermissionBashStringAsk, ConfigAgentPlanPermissionBashStringAllow, ConfigAgentPlanPermissionBashStringDeny:
  532. return true
  533. }
  534. return false
  535. }
  536. func (r ConfigAgentPlanPermissionBashString) implementsConfigAgentPlanPermissionBashUnion() {}
  537. type ConfigAgentPlanPermissionBashMap map[string]ConfigAgentPlanPermissionBashMapItem
  538. func (r ConfigAgentPlanPermissionBashMap) implementsConfigAgentPlanPermissionBashUnion() {}
  539. type ConfigAgentPlanPermissionBashMapItem string
  540. const (
  541. ConfigAgentPlanPermissionBashMapAsk ConfigAgentPlanPermissionBashMapItem = "ask"
  542. ConfigAgentPlanPermissionBashMapAllow ConfigAgentPlanPermissionBashMapItem = "allow"
  543. ConfigAgentPlanPermissionBashMapDeny ConfigAgentPlanPermissionBashMapItem = "deny"
  544. )
  545. func (r ConfigAgentPlanPermissionBashMapItem) IsKnown() bool {
  546. switch r {
  547. case ConfigAgentPlanPermissionBashMapAsk, ConfigAgentPlanPermissionBashMapAllow, ConfigAgentPlanPermissionBashMapDeny:
  548. return true
  549. }
  550. return false
  551. }
  552. type ConfigAgentPlanPermissionEdit string
  553. const (
  554. ConfigAgentPlanPermissionEditAsk ConfigAgentPlanPermissionEdit = "ask"
  555. ConfigAgentPlanPermissionEditAllow ConfigAgentPlanPermissionEdit = "allow"
  556. ConfigAgentPlanPermissionEditDeny ConfigAgentPlanPermissionEdit = "deny"
  557. )
  558. func (r ConfigAgentPlanPermissionEdit) IsKnown() bool {
  559. switch r {
  560. case ConfigAgentPlanPermissionEditAsk, ConfigAgentPlanPermissionEditAllow, ConfigAgentPlanPermissionEditDeny:
  561. return true
  562. }
  563. return false
  564. }
  565. type ConfigAgentPlanPermissionWebfetch string
  566. const (
  567. ConfigAgentPlanPermissionWebfetchAsk ConfigAgentPlanPermissionWebfetch = "ask"
  568. ConfigAgentPlanPermissionWebfetchAllow ConfigAgentPlanPermissionWebfetch = "allow"
  569. ConfigAgentPlanPermissionWebfetchDeny ConfigAgentPlanPermissionWebfetch = "deny"
  570. )
  571. func (r ConfigAgentPlanPermissionWebfetch) IsKnown() bool {
  572. switch r {
  573. case ConfigAgentPlanPermissionWebfetchAsk, ConfigAgentPlanPermissionWebfetchAllow, ConfigAgentPlanPermissionWebfetchDeny:
  574. return true
  575. }
  576. return false
  577. }
  578. type ConfigCommand struct {
  579. Template string `json:"template,required"`
  580. Agent string `json:"agent"`
  581. Description string `json:"description"`
  582. Model string `json:"model"`
  583. Subtask bool `json:"subtask"`
  584. JSON configCommandJSON `json:"-"`
  585. }
  586. // configCommandJSON contains the JSON metadata for the struct [ConfigCommand]
  587. type configCommandJSON struct {
  588. Template apijson.Field
  589. Agent apijson.Field
  590. Description apijson.Field
  591. Model apijson.Field
  592. Subtask apijson.Field
  593. raw string
  594. ExtraFields map[string]apijson.Field
  595. }
  596. func (r *ConfigCommand) UnmarshalJSON(data []byte) (err error) {
  597. return apijson.UnmarshalRoot(data, r)
  598. }
  599. func (r configCommandJSON) RawJSON() string {
  600. return r.raw
  601. }
  602. type ConfigExperimental struct {
  603. DisablePasteSummary bool `json:"disable_paste_summary"`
  604. Hook ConfigExperimentalHook `json:"hook"`
  605. JSON configExperimentalJSON `json:"-"`
  606. }
  607. // configExperimentalJSON contains the JSON metadata for the struct
  608. // [ConfigExperimental]
  609. type configExperimentalJSON struct {
  610. DisablePasteSummary apijson.Field
  611. Hook apijson.Field
  612. raw string
  613. ExtraFields map[string]apijson.Field
  614. }
  615. func (r *ConfigExperimental) UnmarshalJSON(data []byte) (err error) {
  616. return apijson.UnmarshalRoot(data, r)
  617. }
  618. func (r configExperimentalJSON) RawJSON() string {
  619. return r.raw
  620. }
  621. type ConfigExperimentalHook struct {
  622. FileEdited map[string][]ConfigExperimentalHookFileEdited `json:"file_edited"`
  623. SessionCompleted []ConfigExperimentalHookSessionCompleted `json:"session_completed"`
  624. JSON configExperimentalHookJSON `json:"-"`
  625. }
  626. // configExperimentalHookJSON contains the JSON metadata for the struct
  627. // [ConfigExperimentalHook]
  628. type configExperimentalHookJSON struct {
  629. FileEdited apijson.Field
  630. SessionCompleted apijson.Field
  631. raw string
  632. ExtraFields map[string]apijson.Field
  633. }
  634. func (r *ConfigExperimentalHook) UnmarshalJSON(data []byte) (err error) {
  635. return apijson.UnmarshalRoot(data, r)
  636. }
  637. func (r configExperimentalHookJSON) RawJSON() string {
  638. return r.raw
  639. }
  640. type ConfigExperimentalHookFileEdited struct {
  641. Command []string `json:"command,required"`
  642. Environment map[string]string `json:"environment"`
  643. JSON configExperimentalHookFileEditedJSON `json:"-"`
  644. }
  645. // configExperimentalHookFileEditedJSON contains the JSON metadata for the struct
  646. // [ConfigExperimentalHookFileEdited]
  647. type configExperimentalHookFileEditedJSON struct {
  648. Command apijson.Field
  649. Environment apijson.Field
  650. raw string
  651. ExtraFields map[string]apijson.Field
  652. }
  653. func (r *ConfigExperimentalHookFileEdited) UnmarshalJSON(data []byte) (err error) {
  654. return apijson.UnmarshalRoot(data, r)
  655. }
  656. func (r configExperimentalHookFileEditedJSON) RawJSON() string {
  657. return r.raw
  658. }
  659. type ConfigExperimentalHookSessionCompleted struct {
  660. Command []string `json:"command,required"`
  661. Environment map[string]string `json:"environment"`
  662. JSON configExperimentalHookSessionCompletedJSON `json:"-"`
  663. }
  664. // configExperimentalHookSessionCompletedJSON contains the JSON metadata for the
  665. // struct [ConfigExperimentalHookSessionCompleted]
  666. type configExperimentalHookSessionCompletedJSON struct {
  667. Command apijson.Field
  668. Environment apijson.Field
  669. raw string
  670. ExtraFields map[string]apijson.Field
  671. }
  672. func (r *ConfigExperimentalHookSessionCompleted) UnmarshalJSON(data []byte) (err error) {
  673. return apijson.UnmarshalRoot(data, r)
  674. }
  675. func (r configExperimentalHookSessionCompletedJSON) RawJSON() string {
  676. return r.raw
  677. }
  678. type ConfigFormatter struct {
  679. Command []string `json:"command"`
  680. Disabled bool `json:"disabled"`
  681. Environment map[string]string `json:"environment"`
  682. Extensions []string `json:"extensions"`
  683. JSON configFormatterJSON `json:"-"`
  684. }
  685. // configFormatterJSON contains the JSON metadata for the struct [ConfigFormatter]
  686. type configFormatterJSON struct {
  687. Command apijson.Field
  688. Disabled apijson.Field
  689. Environment apijson.Field
  690. Extensions apijson.Field
  691. raw string
  692. ExtraFields map[string]apijson.Field
  693. }
  694. func (r *ConfigFormatter) UnmarshalJSON(data []byte) (err error) {
  695. return apijson.UnmarshalRoot(data, r)
  696. }
  697. func (r configFormatterJSON) RawJSON() string {
  698. return r.raw
  699. }
  700. // @deprecated Always uses stretch layout.
  701. type ConfigLayout string
  702. const (
  703. ConfigLayoutAuto ConfigLayout = "auto"
  704. ConfigLayoutStretch ConfigLayout = "stretch"
  705. )
  706. func (r ConfigLayout) IsKnown() bool {
  707. switch r {
  708. case ConfigLayoutAuto, ConfigLayoutStretch:
  709. return true
  710. }
  711. return false
  712. }
  713. type ConfigLsp struct {
  714. // This field can have the runtime type of [[]string].
  715. Command interface{} `json:"command"`
  716. Disabled bool `json:"disabled"`
  717. // This field can have the runtime type of [map[string]string].
  718. Env interface{} `json:"env"`
  719. // This field can have the runtime type of [[]string].
  720. Extensions interface{} `json:"extensions"`
  721. // This field can have the runtime type of [map[string]interface{}].
  722. Initialization interface{} `json:"initialization"`
  723. JSON configLspJSON `json:"-"`
  724. union ConfigLspUnion
  725. }
  726. // configLspJSON contains the JSON metadata for the struct [ConfigLsp]
  727. type configLspJSON struct {
  728. Command apijson.Field
  729. Disabled apijson.Field
  730. Env apijson.Field
  731. Extensions apijson.Field
  732. Initialization apijson.Field
  733. raw string
  734. ExtraFields map[string]apijson.Field
  735. }
  736. func (r configLspJSON) RawJSON() string {
  737. return r.raw
  738. }
  739. func (r *ConfigLsp) UnmarshalJSON(data []byte) (err error) {
  740. *r = ConfigLsp{}
  741. err = apijson.UnmarshalRoot(data, &r.union)
  742. if err != nil {
  743. return err
  744. }
  745. return apijson.Port(r.union, &r)
  746. }
  747. // AsUnion returns a [ConfigLspUnion] interface which you can cast to the specific
  748. // types for more type safety.
  749. //
  750. // Possible runtime types of the union are [ConfigLspDisabled], [ConfigLspObject].
  751. func (r ConfigLsp) AsUnion() ConfigLspUnion {
  752. return r.union
  753. }
  754. // Union satisfied by [ConfigLspDisabled] or [ConfigLspObject].
  755. type ConfigLspUnion interface {
  756. implementsConfigLsp()
  757. }
  758. func init() {
  759. apijson.RegisterUnion(
  760. reflect.TypeOf((*ConfigLspUnion)(nil)).Elem(),
  761. "",
  762. apijson.UnionVariant{
  763. TypeFilter: gjson.JSON,
  764. Type: reflect.TypeOf(ConfigLspDisabled{}),
  765. },
  766. apijson.UnionVariant{
  767. TypeFilter: gjson.JSON,
  768. Type: reflect.TypeOf(ConfigLspObject{}),
  769. },
  770. )
  771. }
  772. type ConfigLspDisabled struct {
  773. Disabled ConfigLspDisabledDisabled `json:"disabled,required"`
  774. JSON configLspDisabledJSON `json:"-"`
  775. }
  776. // configLspDisabledJSON contains the JSON metadata for the struct
  777. // [ConfigLspDisabled]
  778. type configLspDisabledJSON struct {
  779. Disabled apijson.Field
  780. raw string
  781. ExtraFields map[string]apijson.Field
  782. }
  783. func (r *ConfigLspDisabled) UnmarshalJSON(data []byte) (err error) {
  784. return apijson.UnmarshalRoot(data, r)
  785. }
  786. func (r configLspDisabledJSON) RawJSON() string {
  787. return r.raw
  788. }
  789. func (r ConfigLspDisabled) implementsConfigLsp() {}
  790. type ConfigLspDisabledDisabled bool
  791. const (
  792. ConfigLspDisabledDisabledTrue ConfigLspDisabledDisabled = true
  793. )
  794. func (r ConfigLspDisabledDisabled) IsKnown() bool {
  795. switch r {
  796. case ConfigLspDisabledDisabledTrue:
  797. return true
  798. }
  799. return false
  800. }
  801. type ConfigLspObject struct {
  802. Command []string `json:"command,required"`
  803. Disabled bool `json:"disabled"`
  804. Env map[string]string `json:"env"`
  805. Extensions []string `json:"extensions"`
  806. Initialization map[string]interface{} `json:"initialization"`
  807. JSON configLspObjectJSON `json:"-"`
  808. }
  809. // configLspObjectJSON contains the JSON metadata for the struct [ConfigLspObject]
  810. type configLspObjectJSON struct {
  811. Command apijson.Field
  812. Disabled apijson.Field
  813. Env apijson.Field
  814. Extensions apijson.Field
  815. Initialization apijson.Field
  816. raw string
  817. ExtraFields map[string]apijson.Field
  818. }
  819. func (r *ConfigLspObject) UnmarshalJSON(data []byte) (err error) {
  820. return apijson.UnmarshalRoot(data, r)
  821. }
  822. func (r configLspObjectJSON) RawJSON() string {
  823. return r.raw
  824. }
  825. func (r ConfigLspObject) implementsConfigLsp() {}
  826. type ConfigMcp struct {
  827. // Type of MCP server connection
  828. Type ConfigMcpType `json:"type,required"`
  829. // This field can have the runtime type of [[]string].
  830. Command interface{} `json:"command"`
  831. // Enable or disable the MCP server on startup
  832. Enabled bool `json:"enabled"`
  833. // This field can have the runtime type of [map[string]string].
  834. Environment interface{} `json:"environment"`
  835. // This field can have the runtime type of [map[string]string].
  836. Headers interface{} `json:"headers"`
  837. // URL of the remote MCP server
  838. URL string `json:"url"`
  839. JSON configMcpJSON `json:"-"`
  840. union ConfigMcpUnion
  841. }
  842. // configMcpJSON contains the JSON metadata for the struct [ConfigMcp]
  843. type configMcpJSON struct {
  844. Type apijson.Field
  845. Command apijson.Field
  846. Enabled apijson.Field
  847. Environment apijson.Field
  848. Headers apijson.Field
  849. URL apijson.Field
  850. raw string
  851. ExtraFields map[string]apijson.Field
  852. }
  853. func (r configMcpJSON) RawJSON() string {
  854. return r.raw
  855. }
  856. func (r *ConfigMcp) UnmarshalJSON(data []byte) (err error) {
  857. *r = ConfigMcp{}
  858. err = apijson.UnmarshalRoot(data, &r.union)
  859. if err != nil {
  860. return err
  861. }
  862. return apijson.Port(r.union, &r)
  863. }
  864. // AsUnion returns a [ConfigMcpUnion] interface which you can cast to the specific
  865. // types for more type safety.
  866. //
  867. // Possible runtime types of the union are [McpLocalConfig], [McpRemoteConfig].
  868. func (r ConfigMcp) AsUnion() ConfigMcpUnion {
  869. return r.union
  870. }
  871. // Union satisfied by [McpLocalConfig] or [McpRemoteConfig].
  872. type ConfigMcpUnion interface {
  873. implementsConfigMcp()
  874. }
  875. func init() {
  876. apijson.RegisterUnion(
  877. reflect.TypeOf((*ConfigMcpUnion)(nil)).Elem(),
  878. "",
  879. apijson.UnionVariant{
  880. TypeFilter: gjson.JSON,
  881. Type: reflect.TypeOf(McpLocalConfig{}),
  882. },
  883. apijson.UnionVariant{
  884. TypeFilter: gjson.JSON,
  885. Type: reflect.TypeOf(McpRemoteConfig{}),
  886. },
  887. )
  888. }
  889. // Type of MCP server connection
  890. type ConfigMcpType string
  891. const (
  892. ConfigMcpTypeLocal ConfigMcpType = "local"
  893. ConfigMcpTypeRemote ConfigMcpType = "remote"
  894. )
  895. func (r ConfigMcpType) IsKnown() bool {
  896. switch r {
  897. case ConfigMcpTypeLocal, ConfigMcpTypeRemote:
  898. return true
  899. }
  900. return false
  901. }
  902. // @deprecated Use `agent` field instead.
  903. type ConfigMode struct {
  904. Build ConfigModeBuild `json:"build"`
  905. Plan ConfigModePlan `json:"plan"`
  906. ExtraFields map[string]ConfigMode `json:"-,extras"`
  907. JSON configModeJSON `json:"-"`
  908. }
  909. // configModeJSON contains the JSON metadata for the struct [ConfigMode]
  910. type configModeJSON struct {
  911. Build apijson.Field
  912. Plan apijson.Field
  913. raw string
  914. ExtraFields map[string]apijson.Field
  915. }
  916. func (r *ConfigMode) UnmarshalJSON(data []byte) (err error) {
  917. return apijson.UnmarshalRoot(data, r)
  918. }
  919. func (r configModeJSON) RawJSON() string {
  920. return r.raw
  921. }
  922. type ConfigModeBuild struct {
  923. // Description of when to use the agent
  924. Description string `json:"description"`
  925. Disable bool `json:"disable"`
  926. Mode ConfigModeBuildMode `json:"mode"`
  927. Model string `json:"model"`
  928. Permission ConfigModeBuildPermission `json:"permission"`
  929. Prompt string `json:"prompt"`
  930. Temperature float64 `json:"temperature"`
  931. Tools map[string]bool `json:"tools"`
  932. TopP float64 `json:"top_p"`
  933. ExtraFields map[string]interface{} `json:"-,extras"`
  934. JSON configModeBuildJSON `json:"-"`
  935. }
  936. // configModeBuildJSON contains the JSON metadata for the struct [ConfigModeBuild]
  937. type configModeBuildJSON struct {
  938. Description apijson.Field
  939. Disable apijson.Field
  940. Mode apijson.Field
  941. Model apijson.Field
  942. Permission apijson.Field
  943. Prompt apijson.Field
  944. Temperature apijson.Field
  945. Tools apijson.Field
  946. TopP apijson.Field
  947. raw string
  948. ExtraFields map[string]apijson.Field
  949. }
  950. func (r *ConfigModeBuild) UnmarshalJSON(data []byte) (err error) {
  951. return apijson.UnmarshalRoot(data, r)
  952. }
  953. func (r configModeBuildJSON) RawJSON() string {
  954. return r.raw
  955. }
  956. type ConfigModeBuildMode string
  957. const (
  958. ConfigModeBuildModeSubagent ConfigModeBuildMode = "subagent"
  959. ConfigModeBuildModePrimary ConfigModeBuildMode = "primary"
  960. ConfigModeBuildModeAll ConfigModeBuildMode = "all"
  961. )
  962. func (r ConfigModeBuildMode) IsKnown() bool {
  963. switch r {
  964. case ConfigModeBuildModeSubagent, ConfigModeBuildModePrimary, ConfigModeBuildModeAll:
  965. return true
  966. }
  967. return false
  968. }
  969. type ConfigModeBuildPermission struct {
  970. Bash ConfigModeBuildPermissionBashUnion `json:"bash"`
  971. Edit ConfigModeBuildPermissionEdit `json:"edit"`
  972. Webfetch ConfigModeBuildPermissionWebfetch `json:"webfetch"`
  973. JSON configModeBuildPermissionJSON `json:"-"`
  974. }
  975. // configModeBuildPermissionJSON contains the JSON metadata for the struct
  976. // [ConfigModeBuildPermission]
  977. type configModeBuildPermissionJSON struct {
  978. Bash apijson.Field
  979. Edit apijson.Field
  980. Webfetch apijson.Field
  981. raw string
  982. ExtraFields map[string]apijson.Field
  983. }
  984. func (r *ConfigModeBuildPermission) UnmarshalJSON(data []byte) (err error) {
  985. return apijson.UnmarshalRoot(data, r)
  986. }
  987. func (r configModeBuildPermissionJSON) RawJSON() string {
  988. return r.raw
  989. }
  990. // Union satisfied by [ConfigModeBuildPermissionBashString] or
  991. // [ConfigModeBuildPermissionBashMap].
  992. type ConfigModeBuildPermissionBashUnion interface {
  993. implementsConfigModeBuildPermissionBashUnion()
  994. }
  995. func init() {
  996. apijson.RegisterUnion(
  997. reflect.TypeOf((*ConfigModeBuildPermissionBashUnion)(nil)).Elem(),
  998. "",
  999. apijson.UnionVariant{
  1000. TypeFilter: gjson.String,
  1001. Type: reflect.TypeOf(ConfigModeBuildPermissionBashString("")),
  1002. },
  1003. apijson.UnionVariant{
  1004. TypeFilter: gjson.JSON,
  1005. Type: reflect.TypeOf(ConfigModeBuildPermissionBashMap{}),
  1006. },
  1007. )
  1008. }
  1009. type ConfigModeBuildPermissionBashString string
  1010. const (
  1011. ConfigModeBuildPermissionBashStringAsk ConfigModeBuildPermissionBashString = "ask"
  1012. ConfigModeBuildPermissionBashStringAllow ConfigModeBuildPermissionBashString = "allow"
  1013. ConfigModeBuildPermissionBashStringDeny ConfigModeBuildPermissionBashString = "deny"
  1014. )
  1015. func (r ConfigModeBuildPermissionBashString) IsKnown() bool {
  1016. switch r {
  1017. case ConfigModeBuildPermissionBashStringAsk, ConfigModeBuildPermissionBashStringAllow, ConfigModeBuildPermissionBashStringDeny:
  1018. return true
  1019. }
  1020. return false
  1021. }
  1022. func (r ConfigModeBuildPermissionBashString) implementsConfigModeBuildPermissionBashUnion() {}
  1023. type ConfigModeBuildPermissionBashMap map[string]ConfigModeBuildPermissionBashMapItem
  1024. func (r ConfigModeBuildPermissionBashMap) implementsConfigModeBuildPermissionBashUnion() {}
  1025. type ConfigModeBuildPermissionBashMapItem string
  1026. const (
  1027. ConfigModeBuildPermissionBashMapAsk ConfigModeBuildPermissionBashMapItem = "ask"
  1028. ConfigModeBuildPermissionBashMapAllow ConfigModeBuildPermissionBashMapItem = "allow"
  1029. ConfigModeBuildPermissionBashMapDeny ConfigModeBuildPermissionBashMapItem = "deny"
  1030. )
  1031. func (r ConfigModeBuildPermissionBashMapItem) IsKnown() bool {
  1032. switch r {
  1033. case ConfigModeBuildPermissionBashMapAsk, ConfigModeBuildPermissionBashMapAllow, ConfigModeBuildPermissionBashMapDeny:
  1034. return true
  1035. }
  1036. return false
  1037. }
  1038. type ConfigModeBuildPermissionEdit string
  1039. const (
  1040. ConfigModeBuildPermissionEditAsk ConfigModeBuildPermissionEdit = "ask"
  1041. ConfigModeBuildPermissionEditAllow ConfigModeBuildPermissionEdit = "allow"
  1042. ConfigModeBuildPermissionEditDeny ConfigModeBuildPermissionEdit = "deny"
  1043. )
  1044. func (r ConfigModeBuildPermissionEdit) IsKnown() bool {
  1045. switch r {
  1046. case ConfigModeBuildPermissionEditAsk, ConfigModeBuildPermissionEditAllow, ConfigModeBuildPermissionEditDeny:
  1047. return true
  1048. }
  1049. return false
  1050. }
  1051. type ConfigModeBuildPermissionWebfetch string
  1052. const (
  1053. ConfigModeBuildPermissionWebfetchAsk ConfigModeBuildPermissionWebfetch = "ask"
  1054. ConfigModeBuildPermissionWebfetchAllow ConfigModeBuildPermissionWebfetch = "allow"
  1055. ConfigModeBuildPermissionWebfetchDeny ConfigModeBuildPermissionWebfetch = "deny"
  1056. )
  1057. func (r ConfigModeBuildPermissionWebfetch) IsKnown() bool {
  1058. switch r {
  1059. case ConfigModeBuildPermissionWebfetchAsk, ConfigModeBuildPermissionWebfetchAllow, ConfigModeBuildPermissionWebfetchDeny:
  1060. return true
  1061. }
  1062. return false
  1063. }
  1064. type ConfigModePlan struct {
  1065. // Description of when to use the agent
  1066. Description string `json:"description"`
  1067. Disable bool `json:"disable"`
  1068. Mode ConfigModePlanMode `json:"mode"`
  1069. Model string `json:"model"`
  1070. Permission ConfigModePlanPermission `json:"permission"`
  1071. Prompt string `json:"prompt"`
  1072. Temperature float64 `json:"temperature"`
  1073. Tools map[string]bool `json:"tools"`
  1074. TopP float64 `json:"top_p"`
  1075. ExtraFields map[string]interface{} `json:"-,extras"`
  1076. JSON configModePlanJSON `json:"-"`
  1077. }
  1078. // configModePlanJSON contains the JSON metadata for the struct [ConfigModePlan]
  1079. type configModePlanJSON struct {
  1080. Description apijson.Field
  1081. Disable apijson.Field
  1082. Mode apijson.Field
  1083. Model apijson.Field
  1084. Permission apijson.Field
  1085. Prompt apijson.Field
  1086. Temperature apijson.Field
  1087. Tools apijson.Field
  1088. TopP apijson.Field
  1089. raw string
  1090. ExtraFields map[string]apijson.Field
  1091. }
  1092. func (r *ConfigModePlan) UnmarshalJSON(data []byte) (err error) {
  1093. return apijson.UnmarshalRoot(data, r)
  1094. }
  1095. func (r configModePlanJSON) RawJSON() string {
  1096. return r.raw
  1097. }
  1098. type ConfigModePlanMode string
  1099. const (
  1100. ConfigModePlanModeSubagent ConfigModePlanMode = "subagent"
  1101. ConfigModePlanModePrimary ConfigModePlanMode = "primary"
  1102. ConfigModePlanModeAll ConfigModePlanMode = "all"
  1103. )
  1104. func (r ConfigModePlanMode) IsKnown() bool {
  1105. switch r {
  1106. case ConfigModePlanModeSubagent, ConfigModePlanModePrimary, ConfigModePlanModeAll:
  1107. return true
  1108. }
  1109. return false
  1110. }
  1111. type ConfigModePlanPermission struct {
  1112. Bash ConfigModePlanPermissionBashUnion `json:"bash"`
  1113. Edit ConfigModePlanPermissionEdit `json:"edit"`
  1114. Webfetch ConfigModePlanPermissionWebfetch `json:"webfetch"`
  1115. JSON configModePlanPermissionJSON `json:"-"`
  1116. }
  1117. // configModePlanPermissionJSON contains the JSON metadata for the struct
  1118. // [ConfigModePlanPermission]
  1119. type configModePlanPermissionJSON struct {
  1120. Bash apijson.Field
  1121. Edit apijson.Field
  1122. Webfetch apijson.Field
  1123. raw string
  1124. ExtraFields map[string]apijson.Field
  1125. }
  1126. func (r *ConfigModePlanPermission) UnmarshalJSON(data []byte) (err error) {
  1127. return apijson.UnmarshalRoot(data, r)
  1128. }
  1129. func (r configModePlanPermissionJSON) RawJSON() string {
  1130. return r.raw
  1131. }
  1132. // Union satisfied by [ConfigModePlanPermissionBashString] or
  1133. // [ConfigModePlanPermissionBashMap].
  1134. type ConfigModePlanPermissionBashUnion interface {
  1135. implementsConfigModePlanPermissionBashUnion()
  1136. }
  1137. func init() {
  1138. apijson.RegisterUnion(
  1139. reflect.TypeOf((*ConfigModePlanPermissionBashUnion)(nil)).Elem(),
  1140. "",
  1141. apijson.UnionVariant{
  1142. TypeFilter: gjson.String,
  1143. Type: reflect.TypeOf(ConfigModePlanPermissionBashString("")),
  1144. },
  1145. apijson.UnionVariant{
  1146. TypeFilter: gjson.JSON,
  1147. Type: reflect.TypeOf(ConfigModePlanPermissionBashMap{}),
  1148. },
  1149. )
  1150. }
  1151. type ConfigModePlanPermissionBashString string
  1152. const (
  1153. ConfigModePlanPermissionBashStringAsk ConfigModePlanPermissionBashString = "ask"
  1154. ConfigModePlanPermissionBashStringAllow ConfigModePlanPermissionBashString = "allow"
  1155. ConfigModePlanPermissionBashStringDeny ConfigModePlanPermissionBashString = "deny"
  1156. )
  1157. func (r ConfigModePlanPermissionBashString) IsKnown() bool {
  1158. switch r {
  1159. case ConfigModePlanPermissionBashStringAsk, ConfigModePlanPermissionBashStringAllow, ConfigModePlanPermissionBashStringDeny:
  1160. return true
  1161. }
  1162. return false
  1163. }
  1164. func (r ConfigModePlanPermissionBashString) implementsConfigModePlanPermissionBashUnion() {}
  1165. type ConfigModePlanPermissionBashMap map[string]ConfigModePlanPermissionBashMapItem
  1166. func (r ConfigModePlanPermissionBashMap) implementsConfigModePlanPermissionBashUnion() {}
  1167. type ConfigModePlanPermissionBashMapItem string
  1168. const (
  1169. ConfigModePlanPermissionBashMapAsk ConfigModePlanPermissionBashMapItem = "ask"
  1170. ConfigModePlanPermissionBashMapAllow ConfigModePlanPermissionBashMapItem = "allow"
  1171. ConfigModePlanPermissionBashMapDeny ConfigModePlanPermissionBashMapItem = "deny"
  1172. )
  1173. func (r ConfigModePlanPermissionBashMapItem) IsKnown() bool {
  1174. switch r {
  1175. case ConfigModePlanPermissionBashMapAsk, ConfigModePlanPermissionBashMapAllow, ConfigModePlanPermissionBashMapDeny:
  1176. return true
  1177. }
  1178. return false
  1179. }
  1180. type ConfigModePlanPermissionEdit string
  1181. const (
  1182. ConfigModePlanPermissionEditAsk ConfigModePlanPermissionEdit = "ask"
  1183. ConfigModePlanPermissionEditAllow ConfigModePlanPermissionEdit = "allow"
  1184. ConfigModePlanPermissionEditDeny ConfigModePlanPermissionEdit = "deny"
  1185. )
  1186. func (r ConfigModePlanPermissionEdit) IsKnown() bool {
  1187. switch r {
  1188. case ConfigModePlanPermissionEditAsk, ConfigModePlanPermissionEditAllow, ConfigModePlanPermissionEditDeny:
  1189. return true
  1190. }
  1191. return false
  1192. }
  1193. type ConfigModePlanPermissionWebfetch string
  1194. const (
  1195. ConfigModePlanPermissionWebfetchAsk ConfigModePlanPermissionWebfetch = "ask"
  1196. ConfigModePlanPermissionWebfetchAllow ConfigModePlanPermissionWebfetch = "allow"
  1197. ConfigModePlanPermissionWebfetchDeny ConfigModePlanPermissionWebfetch = "deny"
  1198. )
  1199. func (r ConfigModePlanPermissionWebfetch) IsKnown() bool {
  1200. switch r {
  1201. case ConfigModePlanPermissionWebfetchAsk, ConfigModePlanPermissionWebfetchAllow, ConfigModePlanPermissionWebfetchDeny:
  1202. return true
  1203. }
  1204. return false
  1205. }
  1206. type ConfigPermission struct {
  1207. Bash ConfigPermissionBashUnion `json:"bash"`
  1208. Edit ConfigPermissionEdit `json:"edit"`
  1209. Webfetch ConfigPermissionWebfetch `json:"webfetch"`
  1210. JSON configPermissionJSON `json:"-"`
  1211. }
  1212. // configPermissionJSON contains the JSON metadata for the struct
  1213. // [ConfigPermission]
  1214. type configPermissionJSON struct {
  1215. Bash apijson.Field
  1216. Edit apijson.Field
  1217. Webfetch apijson.Field
  1218. raw string
  1219. ExtraFields map[string]apijson.Field
  1220. }
  1221. func (r *ConfigPermission) UnmarshalJSON(data []byte) (err error) {
  1222. return apijson.UnmarshalRoot(data, r)
  1223. }
  1224. func (r configPermissionJSON) RawJSON() string {
  1225. return r.raw
  1226. }
  1227. // Union satisfied by [ConfigPermissionBashString] or [ConfigPermissionBashMap].
  1228. type ConfigPermissionBashUnion interface {
  1229. implementsConfigPermissionBashUnion()
  1230. }
  1231. func init() {
  1232. apijson.RegisterUnion(
  1233. reflect.TypeOf((*ConfigPermissionBashUnion)(nil)).Elem(),
  1234. "",
  1235. apijson.UnionVariant{
  1236. TypeFilter: gjson.String,
  1237. Type: reflect.TypeOf(ConfigPermissionBashString("")),
  1238. },
  1239. apijson.UnionVariant{
  1240. TypeFilter: gjson.JSON,
  1241. Type: reflect.TypeOf(ConfigPermissionBashMap{}),
  1242. },
  1243. )
  1244. }
  1245. type ConfigPermissionBashString string
  1246. const (
  1247. ConfigPermissionBashStringAsk ConfigPermissionBashString = "ask"
  1248. ConfigPermissionBashStringAllow ConfigPermissionBashString = "allow"
  1249. ConfigPermissionBashStringDeny ConfigPermissionBashString = "deny"
  1250. )
  1251. func (r ConfigPermissionBashString) IsKnown() bool {
  1252. switch r {
  1253. case ConfigPermissionBashStringAsk, ConfigPermissionBashStringAllow, ConfigPermissionBashStringDeny:
  1254. return true
  1255. }
  1256. return false
  1257. }
  1258. func (r ConfigPermissionBashString) implementsConfigPermissionBashUnion() {}
  1259. type ConfigPermissionBashMap map[string]ConfigPermissionBashMapItem
  1260. func (r ConfigPermissionBashMap) implementsConfigPermissionBashUnion() {}
  1261. type ConfigPermissionBashMapItem string
  1262. const (
  1263. ConfigPermissionBashMapAsk ConfigPermissionBashMapItem = "ask"
  1264. ConfigPermissionBashMapAllow ConfigPermissionBashMapItem = "allow"
  1265. ConfigPermissionBashMapDeny ConfigPermissionBashMapItem = "deny"
  1266. )
  1267. func (r ConfigPermissionBashMapItem) IsKnown() bool {
  1268. switch r {
  1269. case ConfigPermissionBashMapAsk, ConfigPermissionBashMapAllow, ConfigPermissionBashMapDeny:
  1270. return true
  1271. }
  1272. return false
  1273. }
  1274. type ConfigPermissionEdit string
  1275. const (
  1276. ConfigPermissionEditAsk ConfigPermissionEdit = "ask"
  1277. ConfigPermissionEditAllow ConfigPermissionEdit = "allow"
  1278. ConfigPermissionEditDeny ConfigPermissionEdit = "deny"
  1279. )
  1280. func (r ConfigPermissionEdit) IsKnown() bool {
  1281. switch r {
  1282. case ConfigPermissionEditAsk, ConfigPermissionEditAllow, ConfigPermissionEditDeny:
  1283. return true
  1284. }
  1285. return false
  1286. }
  1287. type ConfigPermissionWebfetch string
  1288. const (
  1289. ConfigPermissionWebfetchAsk ConfigPermissionWebfetch = "ask"
  1290. ConfigPermissionWebfetchAllow ConfigPermissionWebfetch = "allow"
  1291. ConfigPermissionWebfetchDeny ConfigPermissionWebfetch = "deny"
  1292. )
  1293. func (r ConfigPermissionWebfetch) IsKnown() bool {
  1294. switch r {
  1295. case ConfigPermissionWebfetchAsk, ConfigPermissionWebfetchAllow, ConfigPermissionWebfetchDeny:
  1296. return true
  1297. }
  1298. return false
  1299. }
  1300. type ConfigProvider struct {
  1301. ID string `json:"id"`
  1302. API string `json:"api"`
  1303. Env []string `json:"env"`
  1304. Models map[string]ConfigProviderModel `json:"models"`
  1305. Name string `json:"name"`
  1306. Npm string `json:"npm"`
  1307. Options ConfigProviderOptions `json:"options"`
  1308. JSON configProviderJSON `json:"-"`
  1309. }
  1310. // configProviderJSON contains the JSON metadata for the struct [ConfigProvider]
  1311. type configProviderJSON struct {
  1312. ID apijson.Field
  1313. API apijson.Field
  1314. Env apijson.Field
  1315. Models apijson.Field
  1316. Name apijson.Field
  1317. Npm apijson.Field
  1318. Options apijson.Field
  1319. raw string
  1320. ExtraFields map[string]apijson.Field
  1321. }
  1322. func (r *ConfigProvider) UnmarshalJSON(data []byte) (err error) {
  1323. return apijson.UnmarshalRoot(data, r)
  1324. }
  1325. func (r configProviderJSON) RawJSON() string {
  1326. return r.raw
  1327. }
  1328. type ConfigProviderModel struct {
  1329. ID string `json:"id"`
  1330. Attachment bool `json:"attachment"`
  1331. Cost ConfigProviderModelsCost `json:"cost"`
  1332. Experimental bool `json:"experimental"`
  1333. Limit ConfigProviderModelsLimit `json:"limit"`
  1334. Modalities ConfigProviderModelsModalities `json:"modalities"`
  1335. Name string `json:"name"`
  1336. Options map[string]interface{} `json:"options"`
  1337. Provider ConfigProviderModelsProvider `json:"provider"`
  1338. Reasoning bool `json:"reasoning"`
  1339. ReleaseDate string `json:"release_date"`
  1340. Status ConfigProviderModelsStatus `json:"status"`
  1341. Temperature bool `json:"temperature"`
  1342. ToolCall bool `json:"tool_call"`
  1343. JSON configProviderModelJSON `json:"-"`
  1344. }
  1345. // configProviderModelJSON contains the JSON metadata for the struct
  1346. // [ConfigProviderModel]
  1347. type configProviderModelJSON struct {
  1348. ID apijson.Field
  1349. Attachment apijson.Field
  1350. Cost apijson.Field
  1351. Experimental apijson.Field
  1352. Limit apijson.Field
  1353. Modalities apijson.Field
  1354. Name apijson.Field
  1355. Options apijson.Field
  1356. Provider apijson.Field
  1357. Reasoning apijson.Field
  1358. ReleaseDate apijson.Field
  1359. Status apijson.Field
  1360. Temperature apijson.Field
  1361. ToolCall apijson.Field
  1362. raw string
  1363. ExtraFields map[string]apijson.Field
  1364. }
  1365. func (r *ConfigProviderModel) UnmarshalJSON(data []byte) (err error) {
  1366. return apijson.UnmarshalRoot(data, r)
  1367. }
  1368. func (r configProviderModelJSON) RawJSON() string {
  1369. return r.raw
  1370. }
  1371. type ConfigProviderModelsCost struct {
  1372. Input float64 `json:"input,required"`
  1373. Output float64 `json:"output,required"`
  1374. CacheRead float64 `json:"cache_read"`
  1375. CacheWrite float64 `json:"cache_write"`
  1376. JSON configProviderModelsCostJSON `json:"-"`
  1377. }
  1378. // configProviderModelsCostJSON contains the JSON metadata for the struct
  1379. // [ConfigProviderModelsCost]
  1380. type configProviderModelsCostJSON struct {
  1381. Input apijson.Field
  1382. Output apijson.Field
  1383. CacheRead apijson.Field
  1384. CacheWrite apijson.Field
  1385. raw string
  1386. ExtraFields map[string]apijson.Field
  1387. }
  1388. func (r *ConfigProviderModelsCost) UnmarshalJSON(data []byte) (err error) {
  1389. return apijson.UnmarshalRoot(data, r)
  1390. }
  1391. func (r configProviderModelsCostJSON) RawJSON() string {
  1392. return r.raw
  1393. }
  1394. type ConfigProviderModelsLimit struct {
  1395. Context float64 `json:"context,required"`
  1396. Output float64 `json:"output,required"`
  1397. JSON configProviderModelsLimitJSON `json:"-"`
  1398. }
  1399. // configProviderModelsLimitJSON contains the JSON metadata for the struct
  1400. // [ConfigProviderModelsLimit]
  1401. type configProviderModelsLimitJSON struct {
  1402. Context apijson.Field
  1403. Output apijson.Field
  1404. raw string
  1405. ExtraFields map[string]apijson.Field
  1406. }
  1407. func (r *ConfigProviderModelsLimit) UnmarshalJSON(data []byte) (err error) {
  1408. return apijson.UnmarshalRoot(data, r)
  1409. }
  1410. func (r configProviderModelsLimitJSON) RawJSON() string {
  1411. return r.raw
  1412. }
  1413. type ConfigProviderModelsModalities struct {
  1414. Input []ConfigProviderModelsModalitiesInput `json:"input,required"`
  1415. Output []ConfigProviderModelsModalitiesOutput `json:"output,required"`
  1416. JSON configProviderModelsModalitiesJSON `json:"-"`
  1417. }
  1418. // configProviderModelsModalitiesJSON contains the JSON metadata for the struct
  1419. // [ConfigProviderModelsModalities]
  1420. type configProviderModelsModalitiesJSON struct {
  1421. Input apijson.Field
  1422. Output apijson.Field
  1423. raw string
  1424. ExtraFields map[string]apijson.Field
  1425. }
  1426. func (r *ConfigProviderModelsModalities) UnmarshalJSON(data []byte) (err error) {
  1427. return apijson.UnmarshalRoot(data, r)
  1428. }
  1429. func (r configProviderModelsModalitiesJSON) RawJSON() string {
  1430. return r.raw
  1431. }
  1432. type ConfigProviderModelsModalitiesInput string
  1433. const (
  1434. ConfigProviderModelsModalitiesInputText ConfigProviderModelsModalitiesInput = "text"
  1435. ConfigProviderModelsModalitiesInputAudio ConfigProviderModelsModalitiesInput = "audio"
  1436. ConfigProviderModelsModalitiesInputImage ConfigProviderModelsModalitiesInput = "image"
  1437. ConfigProviderModelsModalitiesInputVideo ConfigProviderModelsModalitiesInput = "video"
  1438. ConfigProviderModelsModalitiesInputPdf ConfigProviderModelsModalitiesInput = "pdf"
  1439. )
  1440. func (r ConfigProviderModelsModalitiesInput) IsKnown() bool {
  1441. switch r {
  1442. case ConfigProviderModelsModalitiesInputText, ConfigProviderModelsModalitiesInputAudio, ConfigProviderModelsModalitiesInputImage, ConfigProviderModelsModalitiesInputVideo, ConfigProviderModelsModalitiesInputPdf:
  1443. return true
  1444. }
  1445. return false
  1446. }
  1447. type ConfigProviderModelsModalitiesOutput string
  1448. const (
  1449. ConfigProviderModelsModalitiesOutputText ConfigProviderModelsModalitiesOutput = "text"
  1450. ConfigProviderModelsModalitiesOutputAudio ConfigProviderModelsModalitiesOutput = "audio"
  1451. ConfigProviderModelsModalitiesOutputImage ConfigProviderModelsModalitiesOutput = "image"
  1452. ConfigProviderModelsModalitiesOutputVideo ConfigProviderModelsModalitiesOutput = "video"
  1453. ConfigProviderModelsModalitiesOutputPdf ConfigProviderModelsModalitiesOutput = "pdf"
  1454. )
  1455. func (r ConfigProviderModelsModalitiesOutput) IsKnown() bool {
  1456. switch r {
  1457. case ConfigProviderModelsModalitiesOutputText, ConfigProviderModelsModalitiesOutputAudio, ConfigProviderModelsModalitiesOutputImage, ConfigProviderModelsModalitiesOutputVideo, ConfigProviderModelsModalitiesOutputPdf:
  1458. return true
  1459. }
  1460. return false
  1461. }
  1462. type ConfigProviderModelsProvider struct {
  1463. Npm string `json:"npm,required"`
  1464. JSON configProviderModelsProviderJSON `json:"-"`
  1465. }
  1466. // configProviderModelsProviderJSON contains the JSON metadata for the struct
  1467. // [ConfigProviderModelsProvider]
  1468. type configProviderModelsProviderJSON struct {
  1469. Npm apijson.Field
  1470. raw string
  1471. ExtraFields map[string]apijson.Field
  1472. }
  1473. func (r *ConfigProviderModelsProvider) UnmarshalJSON(data []byte) (err error) {
  1474. return apijson.UnmarshalRoot(data, r)
  1475. }
  1476. func (r configProviderModelsProviderJSON) RawJSON() string {
  1477. return r.raw
  1478. }
  1479. type ConfigProviderModelsStatus string
  1480. const (
  1481. ConfigProviderModelsStatusAlpha ConfigProviderModelsStatus = "alpha"
  1482. ConfigProviderModelsStatusBeta ConfigProviderModelsStatus = "beta"
  1483. )
  1484. func (r ConfigProviderModelsStatus) IsKnown() bool {
  1485. switch r {
  1486. case ConfigProviderModelsStatusAlpha, ConfigProviderModelsStatusBeta:
  1487. return true
  1488. }
  1489. return false
  1490. }
  1491. type ConfigProviderOptions struct {
  1492. APIKey string `json:"apiKey"`
  1493. BaseURL string `json:"baseURL"`
  1494. // Timeout in milliseconds for requests to this provider. Default is 300000 (5
  1495. // minutes). Set to false to disable timeout.
  1496. Timeout ConfigProviderOptionsTimeoutUnion `json:"timeout"`
  1497. ExtraFields map[string]interface{} `json:"-,extras"`
  1498. JSON configProviderOptionsJSON `json:"-"`
  1499. }
  1500. // configProviderOptionsJSON contains the JSON metadata for the struct
  1501. // [ConfigProviderOptions]
  1502. type configProviderOptionsJSON struct {
  1503. APIKey apijson.Field
  1504. BaseURL apijson.Field
  1505. Timeout apijson.Field
  1506. raw string
  1507. ExtraFields map[string]apijson.Field
  1508. }
  1509. func (r *ConfigProviderOptions) UnmarshalJSON(data []byte) (err error) {
  1510. return apijson.UnmarshalRoot(data, r)
  1511. }
  1512. func (r configProviderOptionsJSON) RawJSON() string {
  1513. return r.raw
  1514. }
  1515. // Timeout in milliseconds for requests to this provider. Default is 300000 (5
  1516. // minutes). Set to false to disable timeout.
  1517. //
  1518. // Union satisfied by [shared.UnionInt] or [shared.UnionBool].
  1519. type ConfigProviderOptionsTimeoutUnion interface {
  1520. ImplementsConfigProviderOptionsTimeoutUnion()
  1521. }
  1522. func init() {
  1523. apijson.RegisterUnion(
  1524. reflect.TypeOf((*ConfigProviderOptionsTimeoutUnion)(nil)).Elem(),
  1525. "",
  1526. apijson.UnionVariant{
  1527. TypeFilter: gjson.Number,
  1528. Type: reflect.TypeOf(shared.UnionInt(0)),
  1529. },
  1530. apijson.UnionVariant{
  1531. TypeFilter: gjson.True,
  1532. Type: reflect.TypeOf(shared.UnionBool(false)),
  1533. },
  1534. apijson.UnionVariant{
  1535. TypeFilter: gjson.False,
  1536. Type: reflect.TypeOf(shared.UnionBool(false)),
  1537. },
  1538. )
  1539. }
  1540. // Control sharing behavior:'manual' allows manual sharing via commands, 'auto'
  1541. // enables automatic sharing, 'disabled' disables all sharing
  1542. type ConfigShare string
  1543. const (
  1544. ConfigShareManual ConfigShare = "manual"
  1545. ConfigShareAuto ConfigShare = "auto"
  1546. ConfigShareDisabled ConfigShare = "disabled"
  1547. )
  1548. func (r ConfigShare) IsKnown() bool {
  1549. switch r {
  1550. case ConfigShareManual, ConfigShareAuto, ConfigShareDisabled:
  1551. return true
  1552. }
  1553. return false
  1554. }
  1555. // TUI specific settings
  1556. type ConfigTui struct {
  1557. // TUI scroll speed
  1558. ScrollSpeed float64 `json:"scroll_speed"`
  1559. JSON configTuiJSON `json:"-"`
  1560. }
  1561. // configTuiJSON contains the JSON metadata for the struct [ConfigTui]
  1562. type configTuiJSON struct {
  1563. ScrollSpeed apijson.Field
  1564. raw string
  1565. ExtraFields map[string]apijson.Field
  1566. }
  1567. func (r *ConfigTui) UnmarshalJSON(data []byte) (err error) {
  1568. return apijson.UnmarshalRoot(data, r)
  1569. }
  1570. func (r configTuiJSON) RawJSON() string {
  1571. return r.raw
  1572. }
  1573. type ConfigWatcher struct {
  1574. Ignore []string `json:"ignore"`
  1575. JSON configWatcherJSON `json:"-"`
  1576. }
  1577. // configWatcherJSON contains the JSON metadata for the struct [ConfigWatcher]
  1578. type configWatcherJSON struct {
  1579. Ignore apijson.Field
  1580. raw string
  1581. ExtraFields map[string]apijson.Field
  1582. }
  1583. func (r *ConfigWatcher) UnmarshalJSON(data []byte) (err error) {
  1584. return apijson.UnmarshalRoot(data, r)
  1585. }
  1586. func (r configWatcherJSON) RawJSON() string {
  1587. return r.raw
  1588. }
  1589. // Custom keybind configurations
  1590. type KeybindsConfig struct {
  1591. // Next agent
  1592. AgentCycle string `json:"agent_cycle"`
  1593. // Previous agent
  1594. AgentCycleReverse string `json:"agent_cycle_reverse"`
  1595. // List agents
  1596. AgentList string `json:"agent_list"`
  1597. // Exit the application
  1598. AppExit string `json:"app_exit"`
  1599. // Show help dialog
  1600. AppHelp string `json:"app_help"`
  1601. // Open external editor
  1602. EditorOpen string `json:"editor_open"`
  1603. // @deprecated Close file
  1604. FileClose string `json:"file_close"`
  1605. // @deprecated Split/unified diff
  1606. FileDiffToggle string `json:"file_diff_toggle"`
  1607. // @deprecated Currently not available. List files
  1608. FileList string `json:"file_list"`
  1609. // @deprecated Search file
  1610. FileSearch string `json:"file_search"`
  1611. // Clear input field
  1612. InputClear string `json:"input_clear"`
  1613. // Insert newline in input
  1614. InputNewline string `json:"input_newline"`
  1615. // Paste from clipboard
  1616. InputPaste string `json:"input_paste"`
  1617. // Submit input
  1618. InputSubmit string `json:"input_submit"`
  1619. // Leader key for keybind combinations
  1620. Leader string `json:"leader"`
  1621. // Copy message
  1622. MessagesCopy string `json:"messages_copy"`
  1623. // Navigate to first message
  1624. MessagesFirst string `json:"messages_first"`
  1625. // Scroll messages down by half page
  1626. MessagesHalfPageDown string `json:"messages_half_page_down"`
  1627. // Scroll messages up by half page
  1628. MessagesHalfPageUp string `json:"messages_half_page_up"`
  1629. // Navigate to last message
  1630. MessagesLast string `json:"messages_last"`
  1631. // @deprecated Toggle layout
  1632. MessagesLayoutToggle string `json:"messages_layout_toggle"`
  1633. // @deprecated Navigate to next message
  1634. MessagesNext string `json:"messages_next"`
  1635. // Scroll messages down by one page
  1636. MessagesPageDown string `json:"messages_page_down"`
  1637. // Scroll messages up by one page
  1638. MessagesPageUp string `json:"messages_page_up"`
  1639. // @deprecated Navigate to previous message
  1640. MessagesPrevious string `json:"messages_previous"`
  1641. // Redo message
  1642. MessagesRedo string `json:"messages_redo"`
  1643. // @deprecated use messages_undo. Revert message
  1644. MessagesRevert string `json:"messages_revert"`
  1645. // Undo message
  1646. MessagesUndo string `json:"messages_undo"`
  1647. // Next recent model
  1648. ModelCycleRecent string `json:"model_cycle_recent"`
  1649. // Previous recent model
  1650. ModelCycleRecentReverse string `json:"model_cycle_recent_reverse"`
  1651. // List available models
  1652. ModelList string `json:"model_list"`
  1653. // Create/update AGENTS.md
  1654. ProjectInit string `json:"project_init"`
  1655. // Cycle to next child session
  1656. SessionChildCycle string `json:"session_child_cycle"`
  1657. // Cycle to previous child session
  1658. SessionChildCycleReverse string `json:"session_child_cycle_reverse"`
  1659. // Compact the session
  1660. SessionCompact string `json:"session_compact"`
  1661. // Export session to editor
  1662. SessionExport string `json:"session_export"`
  1663. // Interrupt current session
  1664. SessionInterrupt string `json:"session_interrupt"`
  1665. // List all sessions
  1666. SessionList string `json:"session_list"`
  1667. // Create a new session
  1668. SessionNew string `json:"session_new"`
  1669. // Share current session
  1670. SessionShare string `json:"session_share"`
  1671. // Show session timeline
  1672. SessionTimeline string `json:"session_timeline"`
  1673. // Unshare current session
  1674. SessionUnshare string `json:"session_unshare"`
  1675. // @deprecated use agent_cycle. Next agent
  1676. SwitchAgent string `json:"switch_agent"`
  1677. // @deprecated use agent_cycle_reverse. Previous agent
  1678. SwitchAgentReverse string `json:"switch_agent_reverse"`
  1679. // @deprecated use agent_cycle. Next mode
  1680. SwitchMode string `json:"switch_mode"`
  1681. // @deprecated use agent_cycle_reverse. Previous mode
  1682. SwitchModeReverse string `json:"switch_mode_reverse"`
  1683. // List available themes
  1684. ThemeList string `json:"theme_list"`
  1685. // Toggle thinking blocks
  1686. ThinkingBlocks string `json:"thinking_blocks"`
  1687. // Toggle tool details
  1688. ToolDetails string `json:"tool_details"`
  1689. JSON keybindsConfigJSON `json:"-"`
  1690. }
  1691. // keybindsConfigJSON contains the JSON metadata for the struct [KeybindsConfig]
  1692. type keybindsConfigJSON struct {
  1693. AgentCycle apijson.Field
  1694. AgentCycleReverse apijson.Field
  1695. AgentList apijson.Field
  1696. AppExit apijson.Field
  1697. AppHelp apijson.Field
  1698. EditorOpen apijson.Field
  1699. FileClose apijson.Field
  1700. FileDiffToggle apijson.Field
  1701. FileList apijson.Field
  1702. FileSearch apijson.Field
  1703. InputClear apijson.Field
  1704. InputNewline apijson.Field
  1705. InputPaste apijson.Field
  1706. InputSubmit apijson.Field
  1707. Leader apijson.Field
  1708. MessagesCopy apijson.Field
  1709. MessagesFirst apijson.Field
  1710. MessagesHalfPageDown apijson.Field
  1711. MessagesHalfPageUp apijson.Field
  1712. MessagesLast apijson.Field
  1713. MessagesLayoutToggle apijson.Field
  1714. MessagesNext apijson.Field
  1715. MessagesPageDown apijson.Field
  1716. MessagesPageUp apijson.Field
  1717. MessagesPrevious apijson.Field
  1718. MessagesRedo apijson.Field
  1719. MessagesRevert apijson.Field
  1720. MessagesUndo apijson.Field
  1721. ModelCycleRecent apijson.Field
  1722. ModelCycleRecentReverse apijson.Field
  1723. ModelList apijson.Field
  1724. ProjectInit apijson.Field
  1725. SessionChildCycle apijson.Field
  1726. SessionChildCycleReverse apijson.Field
  1727. SessionCompact apijson.Field
  1728. SessionExport apijson.Field
  1729. SessionInterrupt apijson.Field
  1730. SessionList apijson.Field
  1731. SessionNew apijson.Field
  1732. SessionShare apijson.Field
  1733. SessionTimeline apijson.Field
  1734. SessionUnshare apijson.Field
  1735. SwitchAgent apijson.Field
  1736. SwitchAgentReverse apijson.Field
  1737. SwitchMode apijson.Field
  1738. SwitchModeReverse apijson.Field
  1739. ThemeList apijson.Field
  1740. ThinkingBlocks apijson.Field
  1741. ToolDetails apijson.Field
  1742. raw string
  1743. ExtraFields map[string]apijson.Field
  1744. }
  1745. func (r *KeybindsConfig) UnmarshalJSON(data []byte) (err error) {
  1746. return apijson.UnmarshalRoot(data, r)
  1747. }
  1748. func (r keybindsConfigJSON) RawJSON() string {
  1749. return r.raw
  1750. }
  1751. type McpLocalConfig struct {
  1752. // Command and arguments to run the MCP server
  1753. Command []string `json:"command,required"`
  1754. // Type of MCP server connection
  1755. Type McpLocalConfigType `json:"type,required"`
  1756. // Enable or disable the MCP server on startup
  1757. Enabled bool `json:"enabled"`
  1758. // Environment variables to set when running the MCP server
  1759. Environment map[string]string `json:"environment"`
  1760. JSON mcpLocalConfigJSON `json:"-"`
  1761. }
  1762. // mcpLocalConfigJSON contains the JSON metadata for the struct [McpLocalConfig]
  1763. type mcpLocalConfigJSON struct {
  1764. Command apijson.Field
  1765. Type apijson.Field
  1766. Enabled apijson.Field
  1767. Environment apijson.Field
  1768. raw string
  1769. ExtraFields map[string]apijson.Field
  1770. }
  1771. func (r *McpLocalConfig) UnmarshalJSON(data []byte) (err error) {
  1772. return apijson.UnmarshalRoot(data, r)
  1773. }
  1774. func (r mcpLocalConfigJSON) RawJSON() string {
  1775. return r.raw
  1776. }
  1777. func (r McpLocalConfig) implementsConfigMcp() {}
  1778. // Type of MCP server connection
  1779. type McpLocalConfigType string
  1780. const (
  1781. McpLocalConfigTypeLocal McpLocalConfigType = "local"
  1782. )
  1783. func (r McpLocalConfigType) IsKnown() bool {
  1784. switch r {
  1785. case McpLocalConfigTypeLocal:
  1786. return true
  1787. }
  1788. return false
  1789. }
  1790. type McpRemoteConfig struct {
  1791. // Type of MCP server connection
  1792. Type McpRemoteConfigType `json:"type,required"`
  1793. // URL of the remote MCP server
  1794. URL string `json:"url,required"`
  1795. // Enable or disable the MCP server on startup
  1796. Enabled bool `json:"enabled"`
  1797. // Headers to send with the request
  1798. Headers map[string]string `json:"headers"`
  1799. JSON mcpRemoteConfigJSON `json:"-"`
  1800. }
  1801. // mcpRemoteConfigJSON contains the JSON metadata for the struct [McpRemoteConfig]
  1802. type mcpRemoteConfigJSON struct {
  1803. Type apijson.Field
  1804. URL apijson.Field
  1805. Enabled apijson.Field
  1806. Headers apijson.Field
  1807. raw string
  1808. ExtraFields map[string]apijson.Field
  1809. }
  1810. func (r *McpRemoteConfig) UnmarshalJSON(data []byte) (err error) {
  1811. return apijson.UnmarshalRoot(data, r)
  1812. }
  1813. func (r mcpRemoteConfigJSON) RawJSON() string {
  1814. return r.raw
  1815. }
  1816. func (r McpRemoteConfig) implementsConfigMcp() {}
  1817. // Type of MCP server connection
  1818. type McpRemoteConfigType string
  1819. const (
  1820. McpRemoteConfigTypeRemote McpRemoteConfigType = "remote"
  1821. )
  1822. func (r McpRemoteConfigType) IsKnown() bool {
  1823. switch r {
  1824. case McpRemoteConfigTypeRemote:
  1825. return true
  1826. }
  1827. return false
  1828. }
  1829. type ConfigGetParams struct {
  1830. Directory param.Field[string] `query:"directory"`
  1831. }
  1832. // URLQuery serializes [ConfigGetParams]'s query parameters as `url.Values`.
  1833. func (r ConfigGetParams) URLQuery() (v url.Values) {
  1834. return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
  1835. ArrayFormat: apiquery.ArrayQueryFormatComma,
  1836. NestedFormat: apiquery.NestedQueryFormatBrackets,
  1837. })
  1838. }