config.go 63 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068
  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. Name string `json:"name"`
  1335. Options map[string]interface{} `json:"options"`
  1336. Provider ConfigProviderModelsProvider `json:"provider"`
  1337. Reasoning bool `json:"reasoning"`
  1338. ReleaseDate string `json:"release_date"`
  1339. Temperature bool `json:"temperature"`
  1340. ToolCall bool `json:"tool_call"`
  1341. JSON configProviderModelJSON `json:"-"`
  1342. }
  1343. // configProviderModelJSON contains the JSON metadata for the struct
  1344. // [ConfigProviderModel]
  1345. type configProviderModelJSON struct {
  1346. ID apijson.Field
  1347. Attachment apijson.Field
  1348. Cost apijson.Field
  1349. Experimental apijson.Field
  1350. Limit apijson.Field
  1351. Name apijson.Field
  1352. Options apijson.Field
  1353. Provider apijson.Field
  1354. Reasoning apijson.Field
  1355. ReleaseDate apijson.Field
  1356. Temperature apijson.Field
  1357. ToolCall apijson.Field
  1358. raw string
  1359. ExtraFields map[string]apijson.Field
  1360. }
  1361. func (r *ConfigProviderModel) UnmarshalJSON(data []byte) (err error) {
  1362. return apijson.UnmarshalRoot(data, r)
  1363. }
  1364. func (r configProviderModelJSON) RawJSON() string {
  1365. return r.raw
  1366. }
  1367. type ConfigProviderModelsCost struct {
  1368. Input float64 `json:"input,required"`
  1369. Output float64 `json:"output,required"`
  1370. CacheRead float64 `json:"cache_read"`
  1371. CacheWrite float64 `json:"cache_write"`
  1372. JSON configProviderModelsCostJSON `json:"-"`
  1373. }
  1374. // configProviderModelsCostJSON contains the JSON metadata for the struct
  1375. // [ConfigProviderModelsCost]
  1376. type configProviderModelsCostJSON struct {
  1377. Input apijson.Field
  1378. Output apijson.Field
  1379. CacheRead apijson.Field
  1380. CacheWrite apijson.Field
  1381. raw string
  1382. ExtraFields map[string]apijson.Field
  1383. }
  1384. func (r *ConfigProviderModelsCost) UnmarshalJSON(data []byte) (err error) {
  1385. return apijson.UnmarshalRoot(data, r)
  1386. }
  1387. func (r configProviderModelsCostJSON) RawJSON() string {
  1388. return r.raw
  1389. }
  1390. type ConfigProviderModelsLimit struct {
  1391. Context float64 `json:"context,required"`
  1392. Output float64 `json:"output,required"`
  1393. JSON configProviderModelsLimitJSON `json:"-"`
  1394. }
  1395. // configProviderModelsLimitJSON contains the JSON metadata for the struct
  1396. // [ConfigProviderModelsLimit]
  1397. type configProviderModelsLimitJSON struct {
  1398. Context apijson.Field
  1399. Output apijson.Field
  1400. raw string
  1401. ExtraFields map[string]apijson.Field
  1402. }
  1403. func (r *ConfigProviderModelsLimit) UnmarshalJSON(data []byte) (err error) {
  1404. return apijson.UnmarshalRoot(data, r)
  1405. }
  1406. func (r configProviderModelsLimitJSON) RawJSON() string {
  1407. return r.raw
  1408. }
  1409. type ConfigProviderModelsProvider struct {
  1410. Npm string `json:"npm,required"`
  1411. JSON configProviderModelsProviderJSON `json:"-"`
  1412. }
  1413. // configProviderModelsProviderJSON contains the JSON metadata for the struct
  1414. // [ConfigProviderModelsProvider]
  1415. type configProviderModelsProviderJSON struct {
  1416. Npm apijson.Field
  1417. raw string
  1418. ExtraFields map[string]apijson.Field
  1419. }
  1420. func (r *ConfigProviderModelsProvider) UnmarshalJSON(data []byte) (err error) {
  1421. return apijson.UnmarshalRoot(data, r)
  1422. }
  1423. func (r configProviderModelsProviderJSON) RawJSON() string {
  1424. return r.raw
  1425. }
  1426. type ConfigProviderOptions struct {
  1427. APIKey string `json:"apiKey"`
  1428. BaseURL string `json:"baseURL"`
  1429. // Timeout in milliseconds for requests to this provider. Default is 300000 (5
  1430. // minutes). Set to false to disable timeout.
  1431. Timeout ConfigProviderOptionsTimeoutUnion `json:"timeout"`
  1432. ExtraFields map[string]interface{} `json:"-,extras"`
  1433. JSON configProviderOptionsJSON `json:"-"`
  1434. }
  1435. // configProviderOptionsJSON contains the JSON metadata for the struct
  1436. // [ConfigProviderOptions]
  1437. type configProviderOptionsJSON struct {
  1438. APIKey apijson.Field
  1439. BaseURL apijson.Field
  1440. Timeout apijson.Field
  1441. raw string
  1442. ExtraFields map[string]apijson.Field
  1443. }
  1444. func (r *ConfigProviderOptions) UnmarshalJSON(data []byte) (err error) {
  1445. return apijson.UnmarshalRoot(data, r)
  1446. }
  1447. func (r configProviderOptionsJSON) RawJSON() string {
  1448. return r.raw
  1449. }
  1450. // Timeout in milliseconds for requests to this provider. Default is 300000 (5
  1451. // minutes). Set to false to disable timeout.
  1452. //
  1453. // Union satisfied by [shared.UnionInt] or [shared.UnionBool].
  1454. type ConfigProviderOptionsTimeoutUnion interface {
  1455. ImplementsConfigProviderOptionsTimeoutUnion()
  1456. }
  1457. func init() {
  1458. apijson.RegisterUnion(
  1459. reflect.TypeOf((*ConfigProviderOptionsTimeoutUnion)(nil)).Elem(),
  1460. "",
  1461. apijson.UnionVariant{
  1462. TypeFilter: gjson.Number,
  1463. Type: reflect.TypeOf(shared.UnionInt(0)),
  1464. },
  1465. apijson.UnionVariant{
  1466. TypeFilter: gjson.True,
  1467. Type: reflect.TypeOf(shared.UnionBool(false)),
  1468. },
  1469. apijson.UnionVariant{
  1470. TypeFilter: gjson.False,
  1471. Type: reflect.TypeOf(shared.UnionBool(false)),
  1472. },
  1473. )
  1474. }
  1475. // Control sharing behavior:'manual' allows manual sharing via commands, 'auto'
  1476. // enables automatic sharing, 'disabled' disables all sharing
  1477. type ConfigShare string
  1478. const (
  1479. ConfigShareManual ConfigShare = "manual"
  1480. ConfigShareAuto ConfigShare = "auto"
  1481. ConfigShareDisabled ConfigShare = "disabled"
  1482. )
  1483. func (r ConfigShare) IsKnown() bool {
  1484. switch r {
  1485. case ConfigShareManual, ConfigShareAuto, ConfigShareDisabled:
  1486. return true
  1487. }
  1488. return false
  1489. }
  1490. // TUI specific settings
  1491. type ConfigTui struct {
  1492. // TUI scroll speed
  1493. ScrollSpeed float64 `json:"scroll_speed"`
  1494. JSON configTuiJSON `json:"-"`
  1495. }
  1496. // configTuiJSON contains the JSON metadata for the struct [ConfigTui]
  1497. type configTuiJSON struct {
  1498. ScrollSpeed apijson.Field
  1499. raw string
  1500. ExtraFields map[string]apijson.Field
  1501. }
  1502. func (r *ConfigTui) UnmarshalJSON(data []byte) (err error) {
  1503. return apijson.UnmarshalRoot(data, r)
  1504. }
  1505. func (r configTuiJSON) RawJSON() string {
  1506. return r.raw
  1507. }
  1508. type ConfigWatcher struct {
  1509. Ignore []string `json:"ignore"`
  1510. JSON configWatcherJSON `json:"-"`
  1511. }
  1512. // configWatcherJSON contains the JSON metadata for the struct [ConfigWatcher]
  1513. type configWatcherJSON struct {
  1514. Ignore apijson.Field
  1515. raw string
  1516. ExtraFields map[string]apijson.Field
  1517. }
  1518. func (r *ConfigWatcher) UnmarshalJSON(data []byte) (err error) {
  1519. return apijson.UnmarshalRoot(data, r)
  1520. }
  1521. func (r configWatcherJSON) RawJSON() string {
  1522. return r.raw
  1523. }
  1524. // Custom keybind configurations
  1525. type KeybindsConfig struct {
  1526. // Next agent
  1527. AgentCycle string `json:"agent_cycle"`
  1528. // Previous agent
  1529. AgentCycleReverse string `json:"agent_cycle_reverse"`
  1530. // List agents
  1531. AgentList string `json:"agent_list"`
  1532. // Exit the application
  1533. AppExit string `json:"app_exit"`
  1534. // Show help dialog
  1535. AppHelp string `json:"app_help"`
  1536. // Open external editor
  1537. EditorOpen string `json:"editor_open"`
  1538. // @deprecated Close file
  1539. FileClose string `json:"file_close"`
  1540. // @deprecated Split/unified diff
  1541. FileDiffToggle string `json:"file_diff_toggle"`
  1542. // @deprecated Currently not available. List files
  1543. FileList string `json:"file_list"`
  1544. // @deprecated Search file
  1545. FileSearch string `json:"file_search"`
  1546. // Clear input field
  1547. InputClear string `json:"input_clear"`
  1548. // Insert newline in input
  1549. InputNewline string `json:"input_newline"`
  1550. // Paste from clipboard
  1551. InputPaste string `json:"input_paste"`
  1552. // Submit input
  1553. InputSubmit string `json:"input_submit"`
  1554. // Leader key for keybind combinations
  1555. Leader string `json:"leader"`
  1556. // Copy message
  1557. MessagesCopy string `json:"messages_copy"`
  1558. // Navigate to first message
  1559. MessagesFirst string `json:"messages_first"`
  1560. // Scroll messages down by half page
  1561. MessagesHalfPageDown string `json:"messages_half_page_down"`
  1562. // Scroll messages up by half page
  1563. MessagesHalfPageUp string `json:"messages_half_page_up"`
  1564. // Navigate to last message
  1565. MessagesLast string `json:"messages_last"`
  1566. // @deprecated Toggle layout
  1567. MessagesLayoutToggle string `json:"messages_layout_toggle"`
  1568. // @deprecated Navigate to next message
  1569. MessagesNext string `json:"messages_next"`
  1570. // Scroll messages down by one page
  1571. MessagesPageDown string `json:"messages_page_down"`
  1572. // Scroll messages up by one page
  1573. MessagesPageUp string `json:"messages_page_up"`
  1574. // @deprecated Navigate to previous message
  1575. MessagesPrevious string `json:"messages_previous"`
  1576. // Redo message
  1577. MessagesRedo string `json:"messages_redo"`
  1578. // @deprecated use messages_undo. Revert message
  1579. MessagesRevert string `json:"messages_revert"`
  1580. // Undo message
  1581. MessagesUndo string `json:"messages_undo"`
  1582. // Next recent model
  1583. ModelCycleRecent string `json:"model_cycle_recent"`
  1584. // Previous recent model
  1585. ModelCycleRecentReverse string `json:"model_cycle_recent_reverse"`
  1586. // List available models
  1587. ModelList string `json:"model_list"`
  1588. // Create/update AGENTS.md
  1589. ProjectInit string `json:"project_init"`
  1590. // Cycle to next child session
  1591. SessionChildCycle string `json:"session_child_cycle"`
  1592. // Cycle to previous child session
  1593. SessionChildCycleReverse string `json:"session_child_cycle_reverse"`
  1594. // Compact the session
  1595. SessionCompact string `json:"session_compact"`
  1596. // Export session to editor
  1597. SessionExport string `json:"session_export"`
  1598. // Interrupt current session
  1599. SessionInterrupt string `json:"session_interrupt"`
  1600. // List all sessions
  1601. SessionList string `json:"session_list"`
  1602. // Create a new session
  1603. SessionNew string `json:"session_new"`
  1604. // Share current session
  1605. SessionShare string `json:"session_share"`
  1606. // Show session timeline
  1607. SessionTimeline string `json:"session_timeline"`
  1608. // Unshare current session
  1609. SessionUnshare string `json:"session_unshare"`
  1610. // @deprecated use agent_cycle. Next agent
  1611. SwitchAgent string `json:"switch_agent"`
  1612. // @deprecated use agent_cycle_reverse. Previous agent
  1613. SwitchAgentReverse string `json:"switch_agent_reverse"`
  1614. // @deprecated use agent_cycle. Next mode
  1615. SwitchMode string `json:"switch_mode"`
  1616. // @deprecated use agent_cycle_reverse. Previous mode
  1617. SwitchModeReverse string `json:"switch_mode_reverse"`
  1618. // List available themes
  1619. ThemeList string `json:"theme_list"`
  1620. // Toggle thinking blocks
  1621. ThinkingBlocks string `json:"thinking_blocks"`
  1622. // Toggle tool details
  1623. ToolDetails string `json:"tool_details"`
  1624. JSON keybindsConfigJSON `json:"-"`
  1625. }
  1626. // keybindsConfigJSON contains the JSON metadata for the struct [KeybindsConfig]
  1627. type keybindsConfigJSON struct {
  1628. AgentCycle apijson.Field
  1629. AgentCycleReverse apijson.Field
  1630. AgentList apijson.Field
  1631. AppExit apijson.Field
  1632. AppHelp apijson.Field
  1633. EditorOpen apijson.Field
  1634. FileClose apijson.Field
  1635. FileDiffToggle apijson.Field
  1636. FileList apijson.Field
  1637. FileSearch apijson.Field
  1638. InputClear apijson.Field
  1639. InputNewline apijson.Field
  1640. InputPaste apijson.Field
  1641. InputSubmit apijson.Field
  1642. Leader apijson.Field
  1643. MessagesCopy apijson.Field
  1644. MessagesFirst apijson.Field
  1645. MessagesHalfPageDown apijson.Field
  1646. MessagesHalfPageUp apijson.Field
  1647. MessagesLast apijson.Field
  1648. MessagesLayoutToggle apijson.Field
  1649. MessagesNext apijson.Field
  1650. MessagesPageDown apijson.Field
  1651. MessagesPageUp apijson.Field
  1652. MessagesPrevious apijson.Field
  1653. MessagesRedo apijson.Field
  1654. MessagesRevert apijson.Field
  1655. MessagesUndo apijson.Field
  1656. ModelCycleRecent apijson.Field
  1657. ModelCycleRecentReverse apijson.Field
  1658. ModelList apijson.Field
  1659. ProjectInit apijson.Field
  1660. SessionChildCycle apijson.Field
  1661. SessionChildCycleReverse apijson.Field
  1662. SessionCompact apijson.Field
  1663. SessionExport apijson.Field
  1664. SessionInterrupt apijson.Field
  1665. SessionList apijson.Field
  1666. SessionNew apijson.Field
  1667. SessionShare apijson.Field
  1668. SessionTimeline apijson.Field
  1669. SessionUnshare apijson.Field
  1670. SwitchAgent apijson.Field
  1671. SwitchAgentReverse apijson.Field
  1672. SwitchMode apijson.Field
  1673. SwitchModeReverse apijson.Field
  1674. ThemeList apijson.Field
  1675. ThinkingBlocks apijson.Field
  1676. ToolDetails apijson.Field
  1677. raw string
  1678. ExtraFields map[string]apijson.Field
  1679. }
  1680. func (r *KeybindsConfig) UnmarshalJSON(data []byte) (err error) {
  1681. return apijson.UnmarshalRoot(data, r)
  1682. }
  1683. func (r keybindsConfigJSON) RawJSON() string {
  1684. return r.raw
  1685. }
  1686. type McpLocalConfig struct {
  1687. // Command and arguments to run the MCP server
  1688. Command []string `json:"command,required"`
  1689. // Type of MCP server connection
  1690. Type McpLocalConfigType `json:"type,required"`
  1691. // Enable or disable the MCP server on startup
  1692. Enabled bool `json:"enabled"`
  1693. // Environment variables to set when running the MCP server
  1694. Environment map[string]string `json:"environment"`
  1695. JSON mcpLocalConfigJSON `json:"-"`
  1696. }
  1697. // mcpLocalConfigJSON contains the JSON metadata for the struct [McpLocalConfig]
  1698. type mcpLocalConfigJSON struct {
  1699. Command apijson.Field
  1700. Type apijson.Field
  1701. Enabled apijson.Field
  1702. Environment apijson.Field
  1703. raw string
  1704. ExtraFields map[string]apijson.Field
  1705. }
  1706. func (r *McpLocalConfig) UnmarshalJSON(data []byte) (err error) {
  1707. return apijson.UnmarshalRoot(data, r)
  1708. }
  1709. func (r mcpLocalConfigJSON) RawJSON() string {
  1710. return r.raw
  1711. }
  1712. func (r McpLocalConfig) implementsConfigMcp() {}
  1713. // Type of MCP server connection
  1714. type McpLocalConfigType string
  1715. const (
  1716. McpLocalConfigTypeLocal McpLocalConfigType = "local"
  1717. )
  1718. func (r McpLocalConfigType) IsKnown() bool {
  1719. switch r {
  1720. case McpLocalConfigTypeLocal:
  1721. return true
  1722. }
  1723. return false
  1724. }
  1725. type McpRemoteConfig struct {
  1726. // Type of MCP server connection
  1727. Type McpRemoteConfigType `json:"type,required"`
  1728. // URL of the remote MCP server
  1729. URL string `json:"url,required"`
  1730. // Enable or disable the MCP server on startup
  1731. Enabled bool `json:"enabled"`
  1732. // Headers to send with the request
  1733. Headers map[string]string `json:"headers"`
  1734. JSON mcpRemoteConfigJSON `json:"-"`
  1735. }
  1736. // mcpRemoteConfigJSON contains the JSON metadata for the struct [McpRemoteConfig]
  1737. type mcpRemoteConfigJSON struct {
  1738. Type apijson.Field
  1739. URL apijson.Field
  1740. Enabled apijson.Field
  1741. Headers apijson.Field
  1742. raw string
  1743. ExtraFields map[string]apijson.Field
  1744. }
  1745. func (r *McpRemoteConfig) UnmarshalJSON(data []byte) (err error) {
  1746. return apijson.UnmarshalRoot(data, r)
  1747. }
  1748. func (r mcpRemoteConfigJSON) RawJSON() string {
  1749. return r.raw
  1750. }
  1751. func (r McpRemoteConfig) implementsConfigMcp() {}
  1752. // Type of MCP server connection
  1753. type McpRemoteConfigType string
  1754. const (
  1755. McpRemoteConfigTypeRemote McpRemoteConfigType = "remote"
  1756. )
  1757. func (r McpRemoteConfigType) IsKnown() bool {
  1758. switch r {
  1759. case McpRemoteConfigTypeRemote:
  1760. return true
  1761. }
  1762. return false
  1763. }
  1764. type ConfigGetParams struct {
  1765. Directory param.Field[string] `query:"directory"`
  1766. }
  1767. // URLQuery serializes [ConfigGetParams]'s query parameters as `url.Values`.
  1768. func (r ConfigGetParams) URLQuery() (v url.Values) {
  1769. return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
  1770. ArrayFormat: apiquery.ArrayQueryFormatComma,
  1771. NestedFormat: apiquery.NestedQueryFormatBrackets,
  1772. })
  1773. }