summaryrefslogtreecommitdiffhomepage
path: root/packages
diff options
context:
space:
mode:
authoradamelmore <[email protected]>2026-01-27 08:53:48 -0600
committeradamelmore <[email protected]>2026-01-28 07:28:02 -0600
commit2f35c40bb59e3b6628247801f9678f5023fd659c (patch)
treee3c93afdb78575d6d22e1774c415321360028d8e /packages
parent6650aa6f35885ce564eb003da0f3420b49e81cb3 (diff)
downloadopencode-2f35c40bb59e3b6628247801f9678f5023fd659c.tar.gz
opencode-2f35c40bb59e3b6628247801f9678f5023fd659c.zip
chore(app): global config changes
Diffstat (limited to 'packages')
-rw-r--r--packages/app/src/context/global-sync.tsx108
-rw-r--r--packages/opencode/src/server/routes/global.ts50
-rw-r--r--packages/sdk/js/src/v2/gen/sdk.gen.ts58
-rw-r--r--packages/sdk/js/src/v2/gen/types.gen.ts71
-rw-r--r--packages/sdk/openapi.json1725
5 files changed, 1637 insertions, 375 deletions
diff --git a/packages/app/src/context/global-sync.tsx b/packages/app/src/context/global-sync.tsx
index fb67193ab..ad3d124b2 100644
--- a/packages/app/src/context/global-sync.tsx
+++ b/packages/app/src/context/global-sync.tsx
@@ -188,7 +188,74 @@ function createGlobalSync() {
config: {},
reload: undefined,
})
- let bootstrapQueue: string[] = []
+
+ const queued = new Set<string>()
+ let root = false
+ let running = false
+ let timer: ReturnType<typeof setTimeout> | undefined
+
+ const paused = () => untrack(() => globalStore.reload) !== undefined
+
+ const tick = () => new Promise<void>((resolve) => setTimeout(resolve, 0))
+
+ const take = (count: number) => {
+ if (queued.size === 0) return [] as string[]
+ const items: string[] = []
+ for (const item of queued) {
+ queued.delete(item)
+ items.push(item)
+ if (items.length >= count) break
+ }
+ return items
+ }
+
+ const schedule = () => {
+ if (timer) return
+ timer = setTimeout(() => {
+ timer = undefined
+ void drain()
+ }, 0)
+ }
+
+ const push = (directory: string) => {
+ if (!directory) return
+ queued.add(directory)
+ if (paused()) return
+ schedule()
+ }
+
+ const refresh = () => {
+ root = true
+ if (paused()) return
+ schedule()
+ }
+
+ async function drain() {
+ if (running) return
+ running = true
+ try {
+ while (true) {
+ if (paused()) return
+
+ if (root) {
+ root = false
+ await bootstrap()
+ await tick()
+ continue
+ }
+
+ const dirs = take(2)
+ if (dirs.length === 0) return
+
+ await Promise.all(dirs.map((dir) => bootstrapInstance(dir)))
+ await tick()
+ }
+ } finally {
+ running = false
+ if (paused()) return
+ if (root || queued.size) schedule()
+ }
+ }
createEffect(() => {
if (!projectCacheReady()) return
@@ -210,14 +277,8 @@ function createGlobalSync() {
createEffect(() => {
if (globalStore.reload !== "complete") return
- if (bootstrapQueue.length) {
- for (const directory of bootstrapQueue) {
- bootstrapInstance(directory)
- }
- bootstrap()
- }
- bootstrapQueue = []
setGlobalStore("reload", undefined)
+ refresh()
})
const children: Record<string, [Store<State>, SetStoreFunction<State>]> = {}
@@ -584,9 +645,8 @@ function createGlobalSync() {
if (directory === "global") {
switch (event?.type) {
case "global.disposed": {
- if (globalStore.reload) return
- bootstrap()
- break
+ refresh()
+ return
}
case "project.updated": {
const result = Binary.search(globalStore.project, event.properties.id, (s) => s.id)
@@ -647,12 +707,8 @@ function createGlobalSync() {
switch (event.type) {
case "server.instance.disposed": {
- if (globalStore.reload) {
- bootstrapQueue.push(directory)
- return
- }
- bootstrapInstance(directory)
- break
+ push(directory)
+ return
}
case "session.created": {
const info = event.properties.info
@@ -893,6 +949,10 @@ function createGlobalSync() {
}
})
onCleanup(unsub)
+ onCleanup(() => {
+ if (!timer) return
+ clearTimeout(timer)
+ })
async function bootstrap() {
const health = await globalSDK.client.global
@@ -916,7 +976,7 @@ function createGlobalSync() {
}),
),
retry(() =>
- globalSDK.client.config.get().then((x) => {
+ globalSDK.client.global.config.get().then((x) => {
setGlobalStore("config", x.data!)
}),
),
@@ -999,13 +1059,13 @@ function createGlobalSync() {
},
child,
bootstrap,
- updateConfig: async (config: Config) => {
+ updateConfig: (config: Config) => {
setGlobalStore("reload", "pending")
- const response = await globalSDK.client.config.update({ config })
- setTimeout(() => {
- setGlobalStore("reload", "complete")
- }, 1000)
- return response
+ return globalSDK.client.global.config.update({ config }).finally(() => {
+ setTimeout(() => {
+ setGlobalStore("reload", "complete")
+ }, 1000)
+ })
},
project: {
loadSessions,
diff --git a/packages/opencode/src/server/routes/global.ts b/packages/opencode/src/server/routes/global.ts
index c3c5ca5eb..e5450e947 100644
--- a/packages/opencode/src/server/routes/global.ts
+++ b/packages/opencode/src/server/routes/global.ts
@@ -1,5 +1,5 @@
import { Hono } from "hono"
-import { describeRoute, resolver } from "hono-openapi"
+import { describeRoute, resolver, validator } from "hono-openapi"
import { streamSSE } from "hono/streaming"
import z from "zod"
import { BusEvent } from "@/bus/bus-event"
@@ -8,6 +8,8 @@ import { Instance } from "../../project/instance"
import { Installation } from "@/installation"
import { Log } from "../../util/log"
import { lazy } from "../../util/lazy"
+import { Config } from "../../config/config"
+import { errors } from "../error"
const log = Log.create({ service: "server" })
@@ -103,6 +105,52 @@ export const GlobalRoutes = lazy(() =>
})
},
)
+ .get(
+ "/config",
+ describeRoute({
+ summary: "Get global configuration",
+ description: "Retrieve the current global OpenCode configuration settings and preferences.",
+ operationId: "global.config.get",
+ responses: {
+ 200: {
+ description: "Get global config info",
+ content: {
+ "application/json": {
+ schema: resolver(Config.Info),
+ },
+ },
+ },
+ },
+ }),
+ async (c) => {
+ return c.json(await Config.getGlobal())
+ },
+ )
+ .patch(
+ "/config",
+ describeRoute({
+ summary: "Update global configuration",
+ description: "Update global OpenCode configuration settings and preferences.",
+ operationId: "global.config.update",
+ responses: {
+ 200: {
+ description: "Successfully updated global config",
+ content: {
+ "application/json": {
+ schema: resolver(Config.Info),
+ },
+ },
+ },
+ ...errors(400),
+ },
+ }),
+ validator("json", Config.Info),
+ async (c) => {
+ const config = c.req.valid("json")
+ await Config.updateGlobal(config)
+ return c.json(await Config.getGlobal())
+ },
+ )
.post(
"/dispose",
describeRoute({
diff --git a/packages/sdk/js/src/v2/gen/sdk.gen.ts b/packages/sdk/js/src/v2/gen/sdk.gen.ts
index d39dd2b34..eee26ceb2 100644
--- a/packages/sdk/js/src/v2/gen/sdk.gen.ts
+++ b/packages/sdk/js/src/v2/gen/sdk.gen.ts
@@ -14,7 +14,7 @@ import type {
AuthSetErrors,
AuthSetResponses,
CommandListResponses,
- Config as Config2,
+ Config as Config3,
ConfigGetResponses,
ConfigProvidersResponses,
ConfigUpdateErrors,
@@ -34,6 +34,9 @@ import type {
FindSymbolsResponses,
FindTextResponses,
FormatterStatusResponses,
+ GlobalConfigGetResponses,
+ GlobalConfigUpdateErrors,
+ GlobalConfigUpdateResponses,
GlobalDisposeResponses,
GlobalEventResponses,
GlobalHealthResponses,
@@ -215,6 +218,44 @@ class HeyApiRegistry<T> {
}
}
+export class Config extends HeyApiClient {
+ /**
+ * Get global configuration
+ *
+ * Retrieve the current global OpenCode configuration settings and preferences.
+ */
+ public get<ThrowOnError extends boolean = false>(options?: Options<never, ThrowOnError>) {
+ return (options?.client ?? this.client).get<GlobalConfigGetResponses, unknown, ThrowOnError>({
+ url: "/global/config",
+ ...options,
+ })
+ }
+
+ /**
+ * Update global configuration
+ *
+ * Update global OpenCode configuration settings and preferences.
+ */
+ public update<ThrowOnError extends boolean = false>(
+ parameters?: {
+ config?: Config3
+ },
+ options?: Options<never, ThrowOnError>,
+ ) {
+ const params = buildClientParams([parameters], [{ args: [{ key: "config", map: "body" }] }])
+ return (options?.client ?? this.client).patch<GlobalConfigUpdateResponses, GlobalConfigUpdateErrors, ThrowOnError>({
+ url: "/global/config",
+ ...options,
+ ...params,
+ headers: {
+ "Content-Type": "application/json",
+ ...options?.headers,
+ ...params.headers,
+ },
+ })
+ }
+}
+
export class Global extends HeyApiClient {
/**
* Get health
@@ -251,6 +292,11 @@ export class Global extends HeyApiClient {
...options,
})
}
+
+ private _config?: Config
+ get config(): Config {
+ return (this._config ??= new Config({ client: this.client }))
+ }
}
export class Project extends HeyApiClient {
@@ -541,7 +587,7 @@ export class Pty extends HeyApiClient {
}
}
-export class Config extends HeyApiClient {
+export class Config2 extends HeyApiClient {
/**
* Get configuration
*
@@ -569,7 +615,7 @@ export class Config extends HeyApiClient {
public update<ThrowOnError extends boolean = false>(
parameters?: {
directory?: string
- config?: Config2
+ config?: Config3
},
options?: Options<never, ThrowOnError>,
) {
@@ -3168,9 +3214,9 @@ export class OpencodeClient extends HeyApiClient {
return (this._pty ??= new Pty({ client: this.client }))
}
- private _config?: Config
- get config(): Config {
- return (this._config ??= new Config({ client: this.client }))
+ private _config?: Config2
+ get config(): Config2 {
+ return (this._config ??= new Config2({ client: this.client }))
}
private _tool?: Tool
diff --git a/packages/sdk/js/src/v2/gen/types.gen.ts b/packages/sdk/js/src/v2/gen/types.gen.ts
index 2a63d7212..cfb798806 100644
--- a/packages/sdk/js/src/v2/gen/types.gen.ts
+++ b/packages/sdk/js/src/v2/gen/types.gen.ts
@@ -930,21 +930,6 @@ export type GlobalEvent = {
payload: Event
}
-export type BadRequestError = {
- data: unknown
- errors: Array<{
- [key: string]: unknown
- }>
- success: false
-}
-
-export type NotFoundError = {
- name: "NotFoundError"
- data: {
- message: string
- }
-}
-
/**
* Custom keybind configurations
*/
@@ -1826,6 +1811,21 @@ export type Config = {
}
}
+export type BadRequestError = {
+ data: unknown
+ errors: Array<{
+ [key: string]: unknown
+ }>
+ success: false
+}
+
+export type NotFoundError = {
+ name: "NotFoundError"
+ data: {
+ message: string
+ }
+}
+
export type Model = {
id: string
providerID: string
@@ -2199,6 +2199,47 @@ export type GlobalEventResponses = {
export type GlobalEventResponse = GlobalEventResponses[keyof GlobalEventResponses]
+export type GlobalConfigGetData = {
+ body?: never
+ path?: never
+ query?: never
+ url: "/global/config"
+}
+
+export type GlobalConfigGetResponses = {
+ /**
+ * Get global config info
+ */
+ 200: Config
+}
+
+export type GlobalConfigGetResponse = GlobalConfigGetResponses[keyof GlobalConfigGetResponses]
+
+export type GlobalConfigUpdateData = {
+ body?: Config
+ path?: never
+ query?: never
+ url: "/global/config"
+}
+
+export type GlobalConfigUpdateErrors = {
+ /**
+ * Bad request
+ */
+ 400: BadRequestError
+}
+
+export type GlobalConfigUpdateError = GlobalConfigUpdateErrors[keyof GlobalConfigUpdateErrors]
+
+export type GlobalConfigUpdateResponses = {
+ /**
+ * Successfully updated global config
+ */
+ 200: Config
+}
+
+export type GlobalConfigUpdateResponse = GlobalConfigUpdateResponses[keyof GlobalConfigUpdateResponses]
+
export type GlobalDisposeData = {
body?: never
path?: never
diff --git a/packages/sdk/openapi.json b/packages/sdk/openapi.json
index cf2f29d85..b5cac590d 100644
--- a/packages/sdk/openapi.json
+++ b/packages/sdk/openapi.json
@@ -27,7 +27,10 @@
"type": "string"
}
},
- "required": ["healthy", "version"]
+ "required": [
+ "healthy",
+ "version"
+ ]
}
}
}
@@ -66,6 +69,73 @@
]
}
},
+ "/global/config": {
+ "get": {
+ "operationId": "global.config.get",
+ "summary": "Get global configuration",
+ "description": "Retrieve the current global OpenCode configuration settings and preferences.",
+ "responses": {
+ "200": {
+ "description": "Get global config info",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Config"
+ }
+ }
+ }
+ }
+ },
+ "x-codeSamples": [
+ {
+ "lang": "js",
+ "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.global.config.get({\n ...\n})"
+ }
+ ]
+ },
+ "patch": {
+ "operationId": "global.config.update",
+ "summary": "Update global configuration",
+ "description": "Update global OpenCode configuration settings and preferences.",
+ "responses": {
+ "200": {
+ "description": "Successfully updated global config",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Config"
+ }
+ }
+ }
+ },
+ "400": {
+ "description": "Bad request",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/BadRequestError"
+ }
+ }
+ }
+ }
+ },
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/Config"
+ }
+ }
+ }
+ },
+ "x-codeSamples": [
+ {
+ "lang": "js",
+ "source": "import { createOpencodeClient } from \"@opencode-ai/sdk\n\nconst client = createOpencodeClient()\nawait client.global.config.update({\n ...\n})"
+ }
+ ]
+ }
+ },
"/global/dispose": {
"post": {
"operationId": "global.dispose",
@@ -488,7 +558,10 @@
"type": "number"
}
},
- "required": ["rows", "cols"]
+ "required": [
+ "rows",
+ "cols"
+ ]
}
}
}
@@ -728,7 +801,10 @@
}
}
},
- "required": ["providers", "default"]
+ "required": [
+ "providers",
+ "default"
+ ]
}
}
}
@@ -1284,7 +1360,9 @@
],
"summary": "Get session",
"description": "Retrieve detailed information about a specific OpenCode session.",
- "tags": ["Session"],
+ "tags": [
+ "Session"
+ ],
"responses": {
"200": {
"description": "Get session",
@@ -1490,7 +1568,9 @@
}
],
"summary": "Get session children",
- "tags": ["Session"],
+ "tags": [
+ "Session"
+ ],
"description": "Retrieve all child sessions that were forked from the specified parent session.",
"responses": {
"200": {
@@ -1673,7 +1753,11 @@
"pattern": "^msg.*"
}
},
- "required": ["modelID", "providerID", "messageID"]
+ "required": [
+ "modelID",
+ "providerID",
+ "messageID"
+ ]
}
}
}
@@ -2055,7 +2139,10 @@
"type": "boolean"
}
},
- "required": ["providerID", "modelID"]
+ "required": [
+ "providerID",
+ "modelID"
+ ]
}
}
}
@@ -2118,7 +2205,10 @@
}
}
},
- "required": ["info", "parts"]
+ "required": [
+ "info",
+ "parts"
+ ]
}
}
}
@@ -2192,7 +2282,10 @@
}
}
},
- "required": ["info", "parts"]
+ "required": [
+ "info",
+ "parts"
+ ]
}
}
}
@@ -2238,7 +2331,10 @@
"type": "string"
}
},
- "required": ["providerID", "modelID"]
+ "required": [
+ "providerID",
+ "modelID"
+ ]
},
"agent": {
"type": "string"
@@ -2282,7 +2378,9 @@
}
}
},
- "required": ["parts"]
+ "required": [
+ "parts"
+ ]
}
}
}
@@ -2345,7 +2443,10 @@
}
}
},
- "required": ["info", "parts"]
+ "required": [
+ "info",
+ "parts"
+ ]
}
}
}
@@ -2614,7 +2715,10 @@
"type": "string"
}
},
- "required": ["providerID", "modelID"]
+ "required": [
+ "providerID",
+ "modelID"
+ ]
},
"agent": {
"type": "string"
@@ -2658,7 +2762,9 @@
}
}
},
- "required": ["parts"]
+ "required": [
+ "parts"
+ ]
}
}
}
@@ -2712,7 +2818,10 @@
}
}
},
- "required": ["info", "parts"]
+ "required": [
+ "info",
+ "parts"
+ ]
}
}
}
@@ -2790,13 +2899,20 @@
"$ref": "#/components/schemas/FilePartSource"
}
},
- "required": ["type", "mime", "url"]
+ "required": [
+ "type",
+ "mime",
+ "url"
+ ]
}
]
}
}
},
- "required": ["arguments", "command"]
+ "required": [
+ "arguments",
+ "command"
+ ]
}
}
}
@@ -2883,13 +2999,19 @@
"type": "string"
}
},
- "required": ["providerID", "modelID"]
+ "required": [
+ "providerID",
+ "modelID"
+ ]
},
"command": {
"type": "string"
}
},
- "required": ["agent", "command"]
+ "required": [
+ "agent",
+ "command"
+ ]
}
}
}
@@ -2971,7 +3093,9 @@
"pattern": "^prt.*"
}
},
- "required": ["messageID"]
+ "required": [
+ "messageID"
+ ]
}
}
}
@@ -3117,10 +3241,16 @@
"properties": {
"response": {
"type": "string",
- "enum": ["once", "always", "reject"]
+ "enum": [
+ "once",
+ "always",
+ "reject"
+ ]
}
},
- "required": ["response"]
+ "required": [
+ "response"
+ ]
}
}
}
@@ -3195,13 +3325,19 @@
"properties": {
"reply": {
"type": "string",
- "enum": ["once", "always", "reject"]
+ "enum": [
+ "once",
+ "always",
+ "reject"
+ ]
},
"message": {
"type": "string"
}
},
- "required": ["reply"]
+ "required": [
+ "reply"
+ ]
}
}
}
@@ -3356,7 +3492,9 @@
}
}
},
- "required": ["answers"]
+ "required": [
+ "answers"
+ ]
}
}
}
@@ -3519,10 +3657,15 @@
"properties": {
"field": {
"type": "string",
- "enum": ["reasoning_content", "reasoning_details"]
+ "enum": [
+ "reasoning_content",
+ "reasoning_details"
+ ]
}
},
- "required": ["field"],
+ "required": [
+ "field"
+ ],
"additionalProperties": false
}
]
@@ -3558,10 +3701,16 @@
"type": "number"
}
},
- "required": ["input", "output"]
+ "required": [
+ "input",
+ "output"
+ ]
}
},
- "required": ["input", "output"]
+ "required": [
+ "input",
+ "output"
+ ]
},
"limit": {
"type": "object",
@@ -3576,7 +3725,10 @@
"type": "number"
}
},
- "required": ["context", "output"]
+ "required": [
+ "context",
+ "output"
+ ]
},
"modalities": {
"type": "object",
@@ -3585,25 +3737,44 @@
"type": "array",
"items": {
"type": "string",
- "enum": ["text", "audio", "image", "video", "pdf"]
+ "enum": [
+ "text",
+ "audio",
+ "image",
+ "video",
+ "pdf"
+ ]
}
},
"output": {
"type": "array",
"items": {
"type": "string",
- "enum": ["text", "audio", "image", "video", "pdf"]
+ "enum": [
+ "text",
+ "audio",
+ "image",
+ "video",
+ "pdf"
+ ]
}
}
},
- "required": ["input", "output"]
+ "required": [
+ "input",
+ "output"
+ ]
},
"experimental": {
"type": "boolean"
},
"status": {
"type": "string",
- "enum": ["alpha", "beta", "deprecated"]
+ "enum": [
+ "alpha",
+ "beta",
+ "deprecated"
+ ]
},
"options": {
"type": "object",
@@ -3628,7 +3799,9 @@
"type": "string"
}
},
- "required": ["npm"]
+ "required": [
+ "npm"
+ ]
},
"variants": {
"type": "object",
@@ -3658,7 +3831,12 @@
}
}
},
- "required": ["name", "env", "id", "models"]
+ "required": [
+ "name",
+ "env",
+ "id",
+ "models"
+ ]
}
},
"default": {
@@ -3677,7 +3855,11 @@
}
}
},
- "required": ["all", "default", "connected"]
+ "required": [
+ "all",
+ "default",
+ "connected"
+ ]
}
}
}
@@ -3790,7 +3972,9 @@
"type": "number"
}
},
- "required": ["method"]
+ "required": [
+ "method"
+ ]
}
}
}
@@ -3863,7 +4047,9 @@
"type": "string"
}
},
- "required": ["method"]
+ "required": [
+ "method"
+ ]
}
}
}
@@ -3915,7 +4101,9 @@
"type": "string"
}
},
- "required": ["text"]
+ "required": [
+ "text"
+ ]
},
"lines": {
"type": "object",
@@ -3924,7 +4112,9 @@
"type": "string"
}
},
- "required": ["text"]
+ "required": [
+ "text"
+ ]
},
"line_number": {
"type": "number"
@@ -3944,7 +4134,9 @@
"type": "string"
}
},
- "required": ["text"]
+ "required": [
+ "text"
+ ]
},
"start": {
"type": "number"
@@ -3953,11 +4145,21 @@
"type": "number"
}
},
- "required": ["match", "start", "end"]
+ "required": [
+ "match",
+ "start",
+ "end"
+ ]
}
}
},
- "required": ["path", "lines", "line_number", "absolute_offset", "submatches"]
+ "required": [
+ "path",
+ "lines",
+ "line_number",
+ "absolute_offset",
+ "submatches"
+ ]
}
}
}
@@ -3996,7 +4198,10 @@
"name": "dirs",
"schema": {
"type": "string",
- "enum": ["true", "false"]
+ "enum": [
+ "true",
+ "false"
+ ]
}
},
{
@@ -4004,7 +4209,10 @@
"name": "type",
"schema": {
"type": "string",
- "enum": ["file", "directory"]
+ "enum": [
+ "file",
+ "directory"
+ ]
}
},
{
@@ -4311,7 +4519,10 @@
]
}
},
- "required": ["name", "config"]
+ "required": [
+ "name",
+ "config"
+ ]
}
}
}
@@ -4359,7 +4570,9 @@
"type": "string"
}
},
- "required": ["authorizationUrl"]
+ "required": [
+ "authorizationUrl"
+ ]
}
}
}
@@ -4426,7 +4639,9 @@
"const": true
}
},
- "required": ["success"]
+ "required": [
+ "success"
+ ]
}
}
}
@@ -4515,7 +4730,9 @@
"type": "string"
}
},
- "required": ["code"]
+ "required": [
+ "code"
+ ]
}
}
}
@@ -4718,7 +4935,9 @@
"type": "string"
}
},
- "required": ["text"]
+ "required": [
+ "text"
+ ]
}
}
}
@@ -4981,7 +5200,9 @@
"type": "string"
}
},
- "required": ["command"]
+ "required": [
+ "command"
+ ]
}
}
}
@@ -5034,7 +5255,12 @@
},
"variant": {
"type": "string",
- "enum": ["info", "success", "warning", "error"]
+ "enum": [
+ "info",
+ "success",
+ "warning",
+ "error"
+ ]
},
"duration": {
"description": "Duration in milliseconds",
@@ -5042,7 +5268,10 @@
"type": "number"
}
},
- "required": ["message", "variant"]
+ "required": [
+ "message",
+ "variant"
+ ]
}
}
}
@@ -5179,7 +5408,9 @@
"pattern": "^ses"
}
},
- "required": ["sessionID"]
+ "required": [
+ "sessionID"
+ ]
}
}
}
@@ -5219,7 +5450,10 @@
},
"body": {}
},
- "required": ["path", "body"]
+ "required": [
+ "path",
+ "body"
+ ]
}
}
}
@@ -5462,7 +5696,12 @@
"level": {
"description": "Log level",
"type": "string",
- "enum": ["debug", "info", "error", "warn"]
+ "enum": [
+ "debug",
+ "info",
+ "error",
+ "warn"
+ ]
},
"message": {
"description": "Log message",
@@ -5477,7 +5716,11 @@
"additionalProperties": {}
}
},
- "required": ["service", "level", "message"]
+ "required": [
+ "service",
+ "level",
+ "message"
+ ]
}
}
}
@@ -5561,7 +5804,11 @@
"type": "string"
}
},
- "required": ["name", "description", "location"]
+ "required": [
+ "name",
+ "description",
+ "location"
+ ]
}
}
}
@@ -5812,10 +6059,15 @@
"type": "string"
}
},
- "required": ["version"]
+ "required": [
+ "version"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Event.installation.update-available": {
"type": "object",
@@ -5831,10 +6083,15 @@
"type": "string"
}
},
- "required": ["version"]
+ "required": [
+ "version"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Project": {
"type": "object",
@@ -5888,7 +6145,10 @@
"type": "number"
}
},
- "required": ["created", "updated"]
+ "required": [
+ "created",
+ "updated"
+ ]
},
"sandboxes": {
"type": "array",
@@ -5897,7 +6157,12 @@
}
}
},
- "required": ["id", "worktree", "time", "sandboxes"]
+ "required": [
+ "id",
+ "worktree",
+ "time",
+ "sandboxes"
+ ]
},
"Event.project.updated": {
"type": "object",
@@ -5910,7 +6175,10 @@
"$ref": "#/components/schemas/Project"
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Event.server.instance.disposed": {
"type": "object",
@@ -5926,10 +6194,15 @@
"type": "string"
}
},
- "required": ["directory"]
+ "required": [
+ "directory"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Event.server.connected": {
"type": "object",
@@ -5943,7 +6216,10 @@
"properties": {}
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Event.global.disposed": {
"type": "object",
@@ -5957,7 +6233,10 @@
"properties": {}
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Event.lsp.client.diagnostics": {
"type": "object",
@@ -5976,10 +6255,16 @@
"type": "string"
}
},
- "required": ["serverID", "path"]
+ "required": [
+ "serverID",
+ "path"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Event.lsp.updated": {
"type": "object",
@@ -5993,7 +6278,10 @@
"properties": {}
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Event.file.edited": {
"type": "object",
@@ -6009,10 +6297,15 @@
"type": "string"
}
},
- "required": ["file"]
+ "required": [
+ "file"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"FileDiff": {
"type": "object",
@@ -6033,7 +6326,13 @@
"type": "number"
}
},
- "required": ["file", "before", "after", "additions", "deletions"]
+ "required": [
+ "file",
+ "before",
+ "after",
+ "additions",
+ "deletions"
+ ]
},
"UserMessage": {
"type": "object",
@@ -6055,7 +6354,9 @@
"type": "number"
}
},
- "required": ["created"]
+ "required": [
+ "created"
+ ]
},
"summary": {
"type": "object",
@@ -6073,7 +6374,9 @@
}
}
},
- "required": ["diffs"]
+ "required": [
+ "diffs"
+ ]
},
"agent": {
"type": "string"
@@ -6088,7 +6391,10 @@
"type": "string"
}
},
- "required": ["providerID", "modelID"]
+ "required": [
+ "providerID",
+ "modelID"
+ ]
},
"system": {
"type": "string"
@@ -6106,7 +6412,14 @@
"type": "string"
}
},
- "required": ["id", "sessionID", "role", "time", "agent", "model"]
+ "required": [
+ "id",
+ "sessionID",
+ "role",
+ "time",
+ "agent",
+ "model"
+ ]
},
"ProviderAuthError": {
"type": "object",
@@ -6125,10 +6438,16 @@
"type": "string"
}
},
- "required": ["providerID", "message"]
+ "required": [
+ "providerID",
+ "message"
+ ]
}
},
- "required": ["name", "data"]
+ "required": [
+ "name",
+ "data"
+ ]
},
"UnknownError": {
"type": "object",
@@ -6144,10 +6463,15 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
},
- "required": ["name", "data"]
+ "required": [
+ "name",
+ "data"
+ ]
},
"MessageOutputLengthError": {
"type": "object",
@@ -6161,7 +6485,10 @@
"properties": {}
}
},
- "required": ["name", "data"]
+ "required": [
+ "name",
+ "data"
+ ]
},
"MessageAbortedError": {
"type": "object",
@@ -6177,10 +6504,15 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
},
- "required": ["name", "data"]
+ "required": [
+ "name",
+ "data"
+ ]
},
"APIError": {
"type": "object",
@@ -6223,10 +6555,16 @@
}
}
},
- "required": ["message", "isRetryable"]
+ "required": [
+ "message",
+ "isRetryable"
+ ]
}
},
- "required": ["name", "data"]
+ "required": [
+ "name",
+ "data"
+ ]
},
"AssistantMessage": {
"type": "object",
@@ -6251,7 +6589,9 @@
"type": "number"
}
},
- "required": ["created"]
+ "required": [
+ "created"
+ ]
},
"error": {
"anyOf": [
@@ -6297,7 +6637,10 @@
"type": "string"
}
},
- "required": ["cwd", "root"]
+ "required": [
+ "cwd",
+ "root"
+ ]
},
"summary": {
"type": "boolean"
@@ -6327,10 +6670,18 @@
"type": "number"
}
},
- "required": ["read", "write"]
+ "required": [
+ "read",
+ "write"
+ ]
}
},
- "required": ["input", "output", "reasoning", "cache"]
+ "required": [
+ "input",
+ "output",
+ "reasoning",
+ "cache"
+ ]
},
"finish": {
"type": "string"
@@ -6375,10 +6726,15 @@
"$ref": "#/components/schemas/Message"
}
},
- "required": ["info"]
+ "required": [
+ "info"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Event.message.removed": {
"type": "object",
@@ -6397,10 +6753,16 @@
"type": "string"
}
},
- "required": ["sessionID", "messageID"]
+ "required": [
+ "sessionID",
+ "messageID"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"TextPart": {
"type": "object",
@@ -6437,7 +6799,9 @@
"type": "number"
}
},
- "required": ["start"]
+ "required": [
+ "start"
+ ]
},
"metadata": {
"type": "object",
@@ -6447,7 +6811,13 @@
"additionalProperties": {}
}
},
- "required": ["id", "sessionID", "messageID", "type", "text"]
+ "required": [
+ "id",
+ "sessionID",
+ "messageID",
+ "type",
+ "text"
+ ]
},
"ReasoningPart": {
"type": "object",
@@ -6485,10 +6855,19 @@
"type": "number"
}
},
- "required": ["start"]
+ "required": [
+ "start"
+ ]
}
},
- "required": ["id", "sessionID", "messageID", "type", "text", "time"]
+ "required": [
+ "id",
+ "sessionID",
+ "messageID",
+ "type",
+ "text",
+ "time"
+ ]
},
"FilePartSourceText": {
"type": "object",
@@ -6507,7 +6886,11 @@
"maximum": 9007199254740991
}
},
- "required": ["value", "start", "end"]
+ "required": [
+ "value",
+ "start",
+ "end"
+ ]
},
"FileSource": {
"type": "object",
@@ -6523,7 +6906,11 @@
"type": "string"
}
},
- "required": ["text", "type", "path"]
+ "required": [
+ "text",
+ "type",
+ "path"
+ ]
},
"Range": {
"type": "object",
@@ -6538,7 +6925,10 @@
"type": "number"
}
},
- "required": ["line", "character"]
+ "required": [
+ "line",
+ "character"
+ ]
},
"end": {
"type": "object",
@@ -6550,10 +6940,16 @@
"type": "number"
}
},
- "required": ["line", "character"]
+ "required": [
+ "line",
+ "character"
+ ]
}
},
- "required": ["start", "end"]
+ "required": [
+ "start",
+ "end"
+ ]
},
"SymbolSource": {
"type": "object",
@@ -6580,7 +6976,14 @@
"maximum": 9007199254740991
}
},
- "required": ["text", "type", "path", "range", "name", "kind"]
+ "required": [
+ "text",
+ "type",
+ "path",
+ "range",
+ "name",
+ "kind"
+ ]
},
"ResourceSource": {
"type": "object",
@@ -6599,7 +7002,12 @@
"type": "string"
}
},
- "required": ["text", "type", "clientName", "uri"]
+ "required": [
+ "text",
+ "type",
+ "clientName",
+ "uri"
+ ]
},
"FilePartSource": {
"anyOf": [
@@ -6643,7 +7051,14 @@
"$ref": "#/components/schemas/FilePartSource"
}
},
- "required": ["id", "sessionID", "messageID", "type", "mime", "url"]
+ "required": [
+ "id",
+ "sessionID",
+ "messageID",
+ "type",
+ "mime",
+ "url"
+ ]
},
"ToolStatePending": {
"type": "object",
@@ -6663,7 +7078,11 @@
"type": "string"
}
},
- "required": ["status", "input", "raw"]
+ "required": [
+ "status",
+ "input",
+ "raw"
+ ]
},
"ToolStateRunning": {
"type": "object",
@@ -6696,10 +7115,16 @@
"type": "number"
}
},
- "required": ["start"]
+ "required": [
+ "start"
+ ]
}
},
- "required": ["status", "input", "time"]
+ "required": [
+ "status",
+ "input",
+ "time"
+ ]
},
"ToolStateCompleted": {
"type": "object",
@@ -6741,7 +7166,10 @@
"type": "number"
}
},
- "required": ["start", "end"]
+ "required": [
+ "start",
+ "end"
+ ]
},
"attachments": {
"type": "array",
@@ -6750,7 +7178,14 @@
}
}
},
- "required": ["status", "input", "output", "title", "metadata", "time"]
+ "required": [
+ "status",
+ "input",
+ "output",
+ "title",
+ "metadata",
+ "time"
+ ]
},
"ToolStateError": {
"type": "object",
@@ -6786,10 +7221,18 @@
"type": "number"
}
},
- "required": ["start", "end"]
+ "required": [
+ "start",
+ "end"
+ ]
}
},
- "required": ["status", "input", "error", "time"]
+ "required": [
+ "status",
+ "input",
+ "error",
+ "time"
+ ]
},
"ToolState": {
"anyOf": [
@@ -6840,7 +7283,15 @@
"additionalProperties": {}
}
},
- "required": ["id", "sessionID", "messageID", "type", "callID", "tool", "state"]
+ "required": [
+ "id",
+ "sessionID",
+ "messageID",
+ "type",
+ "callID",
+ "tool",
+ "state"
+ ]
},
"StepStartPart": {
"type": "object",
@@ -6862,7 +7313,12 @@
"type": "string"
}
},
- "required": ["id", "sessionID", "messageID", "type"]
+ "required": [
+ "id",
+ "sessionID",
+ "messageID",
+ "type"
+ ]
},
"StepFinishPart": {
"type": "object",
@@ -6911,13 +7367,29 @@
"type": "number"
}
},
- "required": ["read", "write"]
+ "required": [
+ "read",
+ "write"
+ ]
}
},
- "required": ["input", "output", "reasoning", "cache"]
+ "required": [
+ "input",
+ "output",
+ "reasoning",
+ "cache"
+ ]
}
},
- "required": ["id", "sessionID", "messageID", "type", "reason", "cost", "tokens"]
+ "required": [
+ "id",
+ "sessionID",
+ "messageID",
+ "type",
+ "reason",
+ "cost",
+ "tokens"
+ ]
},
"SnapshotPart": {
"type": "object",
@@ -6939,7 +7411,13 @@
"type": "string"
}
},
- "required": ["id", "sessionID", "messageID", "type", "snapshot"]
+ "required": [
+ "id",
+ "sessionID",
+ "messageID",
+ "type",
+ "snapshot"
+ ]
},
"PatchPart": {
"type": "object",
@@ -6967,7 +7445,14 @@
}
}
},
- "required": ["id", "sessionID", "messageID", "type", "hash", "files"]
+ "required": [
+ "id",
+ "sessionID",
+ "messageID",
+ "type",
+ "hash",
+ "files"
+ ]
},
"AgentPart": {
"type": "object",
@@ -7005,10 +7490,20 @@
"maximum": 9007199254740991
}
},
- "required": ["value", "start", "end"]
+ "required": [
+ "value",
+ "start",
+ "end"
+ ]
}
},
- "required": ["id", "sessionID", "messageID", "type", "name"]
+ "required": [
+ "id",
+ "sessionID",
+ "messageID",
+ "type",
+ "name"
+ ]
},
"RetryPart": {
"type": "object",
@@ -7039,10 +7534,20 @@
"type": "number"
}
},
- "required": ["created"]
+ "required": [
+ "created"
+ ]
}
},
- "required": ["id", "sessionID", "messageID", "type", "attempt", "error", "time"]
+ "required": [
+ "id",
+ "sessionID",
+ "messageID",
+ "type",
+ "attempt",
+ "error",
+ "time"
+ ]
},
"CompactionPart": {
"type": "object",
@@ -7064,7 +7569,13 @@
"type": "boolean"
}
},
- "required": ["id", "sessionID", "messageID", "type", "auto"]
+ "required": [
+ "id",
+ "sessionID",
+ "messageID",
+ "type",
+ "auto"
+ ]
},
"Part": {
"anyOf": [
@@ -7106,13 +7617,24 @@
"type": "string"
}
},
- "required": ["providerID", "modelID"]
+ "required": [
+ "providerID",
+ "modelID"
+ ]
},
"command": {
"type": "string"
}
},
- "required": ["id", "sessionID", "messageID", "type", "prompt", "description", "agent"]
+ "required": [
+ "id",
+ "sessionID",
+ "messageID",
+ "type",
+ "prompt",
+ "description",
+ "agent"
+ ]
},
{
"$ref": "#/components/schemas/ReasoningPart"
@@ -7163,10 +7685,15 @@
"type": "string"
}
},
- "required": ["part"]
+ "required": [
+ "part"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Event.message.part.removed": {
"type": "object",
@@ -7188,10 +7715,17 @@
"type": "string"
}
},
- "required": ["sessionID", "messageID", "partID"]
+ "required": [
+ "sessionID",
+ "messageID",
+ "partID"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"PermissionRequest": {
"type": "object",
@@ -7236,10 +7770,20 @@
"type": "string"
}
},
- "required": ["messageID", "callID"]
+ "required": [
+ "messageID",
+ "callID"
+ ]
}
},
- "required": ["id", "sessionID", "permission", "patterns", "metadata", "always"]
+ "required": [
+ "id",
+ "sessionID",
+ "permission",
+ "patterns",
+ "metadata",
+ "always"
+ ]
},
"Event.permission.asked": {
"type": "object",
@@ -7252,7 +7796,10 @@
"$ref": "#/components/schemas/PermissionRequest"
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Event.permission.replied": {
"type": "object",
@@ -7272,13 +7819,24 @@
},
"reply": {
"type": "string",
- "enum": ["once", "always", "reject"]
+ "enum": [
+ "once",
+ "always",
+ "reject"
+ ]
}
},
- "required": ["sessionID", "requestID", "reply"]
+ "required": [
+ "sessionID",
+ "requestID",
+ "reply"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"SessionStatus": {
"anyOf": [
@@ -7290,7 +7848,9 @@
"const": "idle"
}
},
- "required": ["type"]
+ "required": [
+ "type"
+ ]
},
{
"type": "object",
@@ -7309,7 +7869,12 @@
"type": "number"
}
},
- "required": ["type", "attempt", "message", "next"]
+ "required": [
+ "type",
+ "attempt",
+ "message",
+ "next"
+ ]
},
{
"type": "object",
@@ -7319,7 +7884,9 @@
"const": "busy"
}
},
- "required": ["type"]
+ "required": [
+ "type"
+ ]
}
]
},
@@ -7340,10 +7907,16 @@
"$ref": "#/components/schemas/SessionStatus"
}
},
- "required": ["sessionID", "status"]
+ "required": [
+ "sessionID",
+ "status"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Event.session.idle": {
"type": "object",
@@ -7359,10 +7932,15 @@
"type": "string"
}
},
- "required": ["sessionID"]
+ "required": [
+ "sessionID"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"QuestionOption": {
"type": "object",
@@ -7376,7 +7954,10 @@
"type": "string"
}
},
- "required": ["label", "description"]
+ "required": [
+ "label",
+ "description"
+ ]
},
"QuestionInfo": {
"type": "object",
@@ -7405,7 +7986,11 @@
"type": "boolean"
}
},
- "required": ["question", "header", "options"]
+ "required": [
+ "question",
+ "header",
+ "options"
+ ]
},
"QuestionRequest": {
"type": "object",
@@ -7435,10 +8020,17 @@
"type": "string"
}
},
- "required": ["messageID", "callID"]
+ "required": [
+ "messageID",
+ "callID"
+ ]
}
},
- "required": ["id", "sessionID", "questions"]
+ "required": [
+ "id",
+ "sessionID",
+ "questions"
+ ]
},
"Event.question.asked": {
"type": "object",
@@ -7451,7 +8043,10 @@
"$ref": "#/components/schemas/QuestionRequest"
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"QuestionAnswer": {
"type": "array",
@@ -7482,10 +8077,17 @@
}
}
},
- "required": ["sessionID", "requestID", "answers"]
+ "required": [
+ "sessionID",
+ "requestID",
+ "answers"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Event.question.rejected": {
"type": "object",
@@ -7504,10 +8106,16 @@
"type": "string"
}
},
- "required": ["sessionID", "requestID"]
+ "required": [
+ "sessionID",
+ "requestID"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Event.session.compacted": {
"type": "object",
@@ -7523,10 +8131,15 @@
"type": "string"
}
},
- "required": ["sessionID"]
+ "required": [
+ "sessionID"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Event.file.watcher.updated": {
"type": "object",
@@ -7558,10 +8171,16 @@
]
}
},
- "required": ["file", "event"]
+ "required": [
+ "file",
+ "event"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Todo": {
"type": "object",
@@ -7583,7 +8202,12 @@
"type": "string"
}
},
- "required": ["content", "status", "priority", "id"]
+ "required": [
+ "content",
+ "status",
+ "priority",
+ "id"
+ ]
},
"Event.todo.updated": {
"type": "object",
@@ -7605,10 +8229,16 @@
}
}
},
- "required": ["sessionID", "todos"]
+ "required": [
+ "sessionID",
+ "todos"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Event.tui.prompt.append": {
"type": "object",
@@ -7624,10 +8254,15 @@
"type": "string"
}
},
- "required": ["text"]
+ "required": [
+ "text"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Event.tui.command.execute": {
"type": "object",
@@ -7668,10 +8303,15 @@
]
}
},
- "required": ["command"]
+ "required": [
+ "command"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Event.tui.toast.show": {
"type": "object",
@@ -7691,7 +8331,12 @@
},
"variant": {
"type": "string",
- "enum": ["info", "success", "warning", "error"]
+ "enum": [
+ "info",
+ "success",
+ "warning",
+ "error"
+ ]
},
"duration": {
"description": "Duration in milliseconds",
@@ -7699,10 +8344,16 @@
"type": "number"
}
},
- "required": ["message", "variant"]
+ "required": [
+ "message",
+ "variant"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Event.tui.session.select": {
"type": "object",
@@ -7720,10 +8371,15 @@
"pattern": "^ses"
}
},
- "required": ["sessionID"]
+ "required": [
+ "sessionID"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Event.mcp.tools.changed": {
"type": "object",
@@ -7739,10 +8395,15 @@
"type": "string"
}
},
- "required": ["server"]
+ "required": [
+ "server"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Event.mcp.browser.open.failed": {
"type": "object",
@@ -7761,10 +8422,16 @@
"type": "string"
}
},
- "required": ["mcpName", "url"]
+ "required": [
+ "mcpName",
+ "url"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Event.command.executed": {
"type": "object",
@@ -7791,14 +8458,26 @@
"pattern": "^msg.*"
}
},
- "required": ["name", "sessionID", "arguments", "messageID"]
+ "required": [
+ "name",
+ "sessionID",
+ "arguments",
+ "messageID"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"PermissionAction": {
"type": "string",
- "enum": ["allow", "deny", "ask"]
+ "enum": [
+ "allow",
+ "deny",
+ "ask"
+ ]
},
"PermissionRule": {
"type": "object",
@@ -7813,7 +8492,11 @@
"$ref": "#/components/schemas/PermissionAction"
}
},
- "required": ["permission", "pattern", "action"]
+ "required": [
+ "permission",
+ "pattern",
+ "action"
+ ]
},
"PermissionRuleset": {
"type": "array",
@@ -7860,7 +8543,11 @@
}
}
},
- "required": ["additions", "deletions", "files"]
+ "required": [
+ "additions",
+ "deletions",
+ "files"
+ ]
},
"share": {
"type": "object",
@@ -7869,7 +8556,9 @@
"type": "string"
}
},
- "required": ["url"]
+ "required": [
+ "url"
+ ]
},
"title": {
"type": "string"
@@ -7893,7 +8582,10 @@
"type": "number"
}
},
- "required": ["created", "updated"]
+ "required": [
+ "created",
+ "updated"
+ ]
},
"permission": {
"$ref": "#/components/schemas/PermissionRuleset"
@@ -7914,10 +8606,20 @@
"type": "string"
}
},
- "required": ["messageID"]
+ "required": [
+ "messageID"
+ ]
}
},
- "required": ["id", "slug", "projectID", "directory", "title", "version", "time"]
+ "required": [
+ "id",
+ "slug",
+ "projectID",
+ "directory",
+ "title",
+ "version",
+ "time"
+ ]
},
"Event.session.created": {
"type": "object",
@@ -7933,10 +8635,15 @@
"$ref": "#/components/schemas/Session"
}
},
- "required": ["info"]
+ "required": [
+ "info"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Event.session.updated": {
"type": "object",
@@ -7952,10 +8659,15 @@
"$ref": "#/components/schemas/Session"
}
},
- "required": ["info"]
+ "required": [
+ "info"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Event.session.deleted": {
"type": "object",
@@ -7971,10 +8683,15 @@
"$ref": "#/components/schemas/Session"
}
},
- "required": ["info"]
+ "required": [
+ "info"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Event.session.diff": {
"type": "object",
@@ -7996,10 +8713,16 @@
}
}
},
- "required": ["sessionID", "diff"]
+ "required": [
+ "sessionID",
+ "diff"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Event.session.error": {
"type": "object",
@@ -8036,7 +8759,10 @@
}
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Event.vcs.branch.updated": {
"type": "object",
@@ -8054,7 +8780,10 @@
}
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Pty": {
"type": "object",
@@ -8080,13 +8809,24 @@
},
"status": {
"type": "string",
- "enum": ["running", "exited"]
+ "enum": [
+ "running",
+ "exited"
+ ]
},
"pid": {
"type": "number"
}
},
- "required": ["id", "title", "command", "args", "cwd", "status", "pid"]
+ "required": [
+ "id",
+ "title",
+ "command",
+ "args",
+ "cwd",
+ "status",
+ "pid"
+ ]
},
"Event.pty.created": {
"type": "object",
@@ -8102,10 +8842,15 @@
"$ref": "#/components/schemas/Pty"
}
},
- "required": ["info"]
+ "required": [
+ "info"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Event.pty.updated": {
"type": "object",
@@ -8121,10 +8866,15 @@
"$ref": "#/components/schemas/Pty"
}
},
- "required": ["info"]
+ "required": [
+ "info"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Event.pty.exited": {
"type": "object",
@@ -8144,10 +8894,16 @@
"type": "number"
}
},
- "required": ["id", "exitCode"]
+ "required": [
+ "id",
+ "exitCode"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Event.pty.deleted": {
"type": "object",
@@ -8164,10 +8920,15 @@
"pattern": "^pty.*"
}
},
- "required": ["id"]
+ "required": [
+ "id"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Event.worktree.ready": {
"type": "object",
@@ -8186,10 +8947,16 @@
"type": "string"
}
},
- "required": ["name", "branch"]
+ "required": [
+ "name",
+ "branch"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Event.worktree.failed": {
"type": "object",
@@ -8205,10 +8972,15 @@
"type": "string"
}
},
- "required": ["message"]
+ "required": [
+ "message"
+ ]
}
},
- "required": ["type", "properties"]
+ "required": [
+ "type",
+ "properties"
+ ]
},
"Event": {
"anyOf": [
@@ -8350,47 +9122,10 @@
"$ref": "#/components/schemas/Event"
}
},
- "required": ["directory", "payload"]
- },
- "BadRequestError": {
- "type": "object",
- "properties": {
- "data": {},
- "errors": {
- "type": "array",
- "items": {
- "type": "object",
- "propertyNames": {
- "type": "string"
- },
- "additionalProperties": {}
- }
- },
- "success": {
- "type": "boolean",
- "const": false
- }
- },
- "required": ["data", "errors", "success"]
- },
- "NotFoundError": {
- "type": "object",
- "properties": {
- "name": {
- "type": "string",
- "const": "NotFoundError"
- },
- "data": {
- "type": "object",
- "properties": {
- "message": {
- "type": "string"
- }
- },
- "required": ["message"]
- }
- },
- "required": ["name", "data"]
+ "required": [
+ "directory",
+ "payload"
+ ]
},
"KeybindsConfig": {
"description": "Custom keybind configurations",
@@ -8867,7 +9602,12 @@
"LogLevel": {
"description": "Log level",
"type": "string",
- "enum": ["DEBUG", "INFO", "WARN", "ERROR"]
+ "enum": [
+ "DEBUG",
+ "INFO",
+ "WARN",
+ "ERROR"
+ ]
},
"ServerConfig": {
"description": "Server configuration for opencode serve and web commands",
@@ -8899,7 +9639,11 @@
},
"PermissionActionConfig": {
"type": "string",
- "enum": ["ask", "allow", "deny"]
+ "enum": [
+ "ask",
+ "allow",
+ "deny"
+ ]
},
"PermissionObjectConfig": {
"type": "object",
@@ -9023,7 +9767,11 @@
},
"mode": {
"type": "string",
- "enum": ["subagent", "primary", "all"]
+ "enum": [
+ "subagent",
+ "primary",
+ "all"
+ ]
},
"hidden": {
"description": "Hide this subagent from the @ autocomplete menu (default: false, only applies to mode: subagent)",
@@ -9123,10 +9871,15 @@
"properties": {
"field": {
"type": "string",
- "enum": ["reasoning_content", "reasoning_details"]
+ "enum": [
+ "reasoning_content",
+ "reasoning_details"
+ ]
}
},
- "required": ["field"],
+ "required": [
+ "field"
+ ],
"additionalProperties": false
}
]
@@ -9162,10 +9915,16 @@
"type": "number"
}
},
- "required": ["input", "output"]
+ "required": [
+ "input",
+ "output"
+ ]
}
},
- "required": ["input", "output"]
+ "required": [
+ "input",
+ "output"
+ ]
},
"limit": {
"type": "object",
@@ -9180,7 +9939,10 @@
"type": "number"
}
},
- "required": ["context", "output"]
+ "required": [
+ "context",
+ "output"
+ ]
},
"modalities": {
"type": "object",
@@ -9189,25 +9951,44 @@
"type": "array",
"items": {
"type": "string",
- "enum": ["text", "audio", "image", "video", "pdf"]
+ "enum": [
+ "text",
+ "audio",
+ "image",
+ "video",
+ "pdf"
+ ]
}
},
"output": {
"type": "array",
"items": {
"type": "string",
- "enum": ["text", "audio", "image", "video", "pdf"]
+ "enum": [
+ "text",
+ "audio",
+ "image",
+ "video",
+ "pdf"
+ ]
}
}
},
- "required": ["input", "output"]
+ "required": [
+ "input",
+ "output"
+ ]
},
"experimental": {
"type": "boolean"
},
"status": {
"type": "string",
- "enum": ["alpha", "beta", "deprecated"]
+ "enum": [
+ "alpha",
+ "beta",
+ "deprecated"
+ ]
},
"options": {
"type": "object",
@@ -9232,7 +10013,9 @@
"type": "string"
}
},
- "required": ["npm"]
+ "required": [
+ "npm"
+ ]
},
"variants": {
"description": "Variant-specific configuration",
@@ -9341,7 +10124,10 @@
"maximum": 9007199254740991
}
},
- "required": ["type", "command"],
+ "required": [
+ "type",
+ "command"
+ ],
"additionalProperties": false
},
"McpOAuthConfig": {
@@ -9407,13 +10193,19 @@
"maximum": 9007199254740991
}
},
- "required": ["type", "url"],
+ "required": [
+ "type",
+ "url"
+ ],
"additionalProperties": false
},
"LayoutConfig": {
"description": "@deprecated Always uses stretch layout.",
"type": "string",
- "enum": ["auto", "stretch"]
+ "enum": [
+ "auto",
+ "stretch"
+ ]
},
"Config": {
"type": "object",
@@ -9450,12 +10242,17 @@
"type": "boolean"
}
},
- "required": ["enabled"]
+ "required": [
+ "enabled"
+ ]
},
"diff_style": {
"description": "Control diff rendering style: 'auto' adapts to terminal width, 'stacked' always shows single column",
"type": "string",
- "enum": ["auto", "stacked"]
+ "enum": [
+ "auto",
+ "stacked"
+ ]
}
}
},
@@ -9487,7 +10284,9 @@
"type": "boolean"
}
},
- "required": ["template"]
+ "required": [
+ "template"
+ ]
}
},
"watcher": {
@@ -9513,7 +10312,11 @@
"share": {
"description": "Control sharing behavior:'manual' allows manual sharing via commands, 'auto' enables automatic sharing, 'disabled' disables all sharing",
"type": "string",
- "enum": ["manual", "auto", "disabled"]
+ "enum": [
+ "manual",
+ "auto",
+ "disabled"
+ ]
},
"autoshare": {
"description": "@deprecated Use 'share' field instead. Share newly created sessions automatically",
@@ -9641,7 +10444,9 @@
"type": "boolean"
}
},
- "required": ["enabled"],
+ "required": [
+ "enabled"
+ ],
"additionalProperties": false
}
]
@@ -9711,7 +10516,9 @@
"const": true
}
},
- "required": ["disabled"]
+ "required": [
+ "disabled"
+ ]
},
{
"type": "object",
@@ -9748,7 +10555,9 @@
"additionalProperties": {}
}
},
- "required": ["command"]
+ "required": [
+ "command"
+ ]
}
]
}
@@ -9831,7 +10640,9 @@
}
}
},
- "required": ["command"]
+ "required": [
+ "command"
+ ]
}
}
},
@@ -9856,7 +10667,9 @@
}
}
},
- "required": ["command"]
+ "required": [
+ "command"
+ ]
}
}
}
@@ -9898,6 +10711,55 @@
},
"additionalProperties": false
},
+ "BadRequestError": {
+ "type": "object",
+ "properties": {
+ "data": {},
+ "errors": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "propertyNames": {
+ "type": "string"
+ },
+ "additionalProperties": {}
+ }
+ },
+ "success": {
+ "type": "boolean",
+ "const": false
+ }
+ },
+ "required": [
+ "data",
+ "errors",
+ "success"
+ ]
+ },
+ "NotFoundError": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "const": "NotFoundError"
+ },
+ "data": {
+ "type": "object",
+ "properties": {
+ "message": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "message"
+ ]
+ }
+ },
+ "required": [
+ "name",
+ "data"
+ ]
+ },
"Model": {
"type": "object",
"properties": {
@@ -9920,7 +10782,11 @@
"type": "string"
}
},
- "required": ["id", "url", "npm"]
+ "required": [
+ "id",
+ "url",
+ "npm"
+ ]
},
"name": {
"type": "string"
@@ -9962,7 +10828,13 @@
"type": "boolean"
}
},
- "required": ["text", "audio", "image", "video", "pdf"]
+ "required": [
+ "text",
+ "audio",
+ "image",
+ "video",
+ "pdf"
+ ]
},
"output": {
"type": "object",
@@ -9983,7 +10855,13 @@
"type": "boolean"
}
},
- "required": ["text", "audio", "image", "video", "pdf"]
+ "required": [
+ "text",
+ "audio",
+ "image",
+ "video",
+ "pdf"
+ ]
},
"interleaved": {
"anyOf": [
@@ -9995,15 +10873,28 @@
"properties": {
"field": {
"type": "string",
- "enum": ["reasoning_content", "reasoning_details"]
+ "enum": [
+ "reasoning_content",
+ "reasoning_details"
+ ]
}
},
- "required": ["field"]
+ "required": [
+ "field"
+ ]
}
]
}
},
- "required": ["temperature", "reasoning", "attachment", "toolcall", "input", "output", "interleaved"]
+ "required": [
+ "temperature",
+ "reasoning",
+ "attachment",
+ "toolcall",
+ "input",
+ "output",
+ "interleaved"
+ ]
},
"cost": {
"type": "object",
@@ -10024,7 +10915,10 @@
"type": "number"
}
},
- "required": ["read", "write"]
+ "required": [
+ "read",
+ "write"
+ ]
},
"experimentalOver200K": {
"type": "object",
@@ -10045,13 +10939,24 @@
"type": "number"
}
},
- "required": ["read", "write"]
+ "required": [
+ "read",
+ "write"
+ ]
}
},
- "required": ["input", "output", "cache"]
+ "required": [
+ "input",
+ "output",
+ "cache"
+ ]
}
},
- "required": ["input", "output", "cache"]
+ "required": [
+ "input",
+ "output",
+ "cache"
+ ]
},
"limit": {
"type": "object",
@@ -10066,11 +10971,19 @@
"type": "number"
}
},
- "required": ["context", "output"]
+ "required": [
+ "context",
+ "output"
+ ]
},
"status": {
"type": "string",
- "enum": ["alpha", "beta", "deprecated", "active"]
+ "enum": [
+ "alpha",
+ "beta",
+ "deprecated",
+ "active"
+ ]
},
"options": {
"type": "object",
@@ -10130,7 +11043,12 @@
},
"source": {
"type": "string",
- "enum": ["env", "config", "custom", "api"]
+ "enum": [
+ "env",
+ "config",
+ "custom",
+ "api"
+ ]
},
"env": {
"type": "array",
@@ -10158,7 +11076,14 @@
}
}
},
- "required": ["id", "name", "source", "env", "options", "models"]
+ "required": [
+ "id",
+ "name",
+ "source",
+ "env",
+ "options",
+ "models"
+ ]
},
"ToolIDs": {
"type": "array",
@@ -10177,7 +11102,11 @@
},
"parameters": {}
},
- "required": ["id", "description", "parameters"]
+ "required": [
+ "id",
+ "description",
+ "parameters"
+ ]
},
"ToolList": {
"type": "array",
@@ -10198,7 +11127,11 @@
"type": "string"
}
},
- "required": ["name", "branch", "directory"]
+ "required": [
+ "name",
+ "branch",
+ "directory"
+ ]
},
"WorktreeCreateInput": {
"type": "object",
@@ -10219,7 +11152,9 @@
"type": "string"
}
},
- "required": ["directory"]
+ "required": [
+ "directory"
+ ]
},
"WorktreeResetInput": {
"type": "object",
@@ -10228,7 +11163,9 @@
"type": "string"
}
},
- "required": ["directory"]
+ "required": [
+ "directory"
+ ]
},
"McpResource": {
"type": "object",
@@ -10249,7 +11186,11 @@
"type": "string"
}
},
- "required": ["name", "uri", "client"]
+ "required": [
+ "name",
+ "uri",
+ "client"
+ ]
},
"TextPartInput": {
"type": "object",
@@ -10280,7 +11221,9 @@
"type": "number"
}
},
- "required": ["start"]
+ "required": [
+ "start"
+ ]
},
"metadata": {
"type": "object",
@@ -10290,7 +11233,10 @@
"additionalProperties": {}
}
},
- "required": ["type", "text"]
+ "required": [
+ "type",
+ "text"
+ ]
},
"FilePartInput": {
"type": "object",
@@ -10315,7 +11261,11 @@
"$ref": "#/components/schemas/FilePartSource"
}
},
- "required": ["type", "mime", "url"]
+ "required": [
+ "type",
+ "mime",
+ "url"
+ ]
},
"AgentPartInput": {
"type": "object",
@@ -10347,10 +11297,17 @@
"maximum": 9007199254740991
}
},
- "required": ["value", "start", "end"]
+ "required": [
+ "value",
+ "start",
+ "end"
+ ]
}
},
- "required": ["type", "name"]
+ "required": [
+ "type",
+ "name"
+ ]
},
"SubtaskPartInput": {
"type": "object",
@@ -10381,13 +11338,21 @@
"type": "string"
}
},
- "required": ["providerID", "modelID"]
+ "required": [
+ "providerID",
+ "modelID"
+ ]
},
"command": {
"type": "string"
}
},
- "required": ["type", "prompt", "description", "agent"]
+ "required": [
+ "type",
+ "prompt",
+ "description",
+ "agent"
+ ]
},
"ProviderAuthMethod": {
"type": "object",
@@ -10408,7 +11373,10 @@
"type": "string"
}
},
- "required": ["type", "label"]
+ "required": [
+ "type",
+ "label"
+ ]
},
"ProviderAuthAuthorization": {
"type": "object",
@@ -10432,7 +11400,11 @@
"type": "string"
}
},
- "required": ["url", "method", "instructions"]
+ "required": [
+ "url",
+ "method",
+ "instructions"
+ ]
},
"Symbol": {
"type": "object",
@@ -10453,10 +11425,17 @@
"$ref": "#/components/schemas/Range"
}
},
- "required": ["uri", "range"]
+ "required": [
+ "uri",
+ "range"
+ ]
}
},
- "required": ["name", "kind", "location"]
+ "required": [
+ "name",
+ "kind",
+ "location"
+ ]
},
"FileNode": {
"type": "object",
@@ -10472,13 +11451,22 @@
},
"type": {
"type": "string",
- "enum": ["file", "directory"]
+ "enum": [
+ "file",
+ "directory"
+ ]
},
"ignored": {
"type": "boolean"
}
},
- "required": ["name", "path", "absolute", "type", "ignored"]
+ "required": [
+ "name",
+ "path",
+ "absolute",
+ "type",
+ "ignored"
+ ]
},
"FileContent": {
"type": "object",
@@ -10532,14 +11520,24 @@
}
}
},
- "required": ["oldStart", "oldLines", "newStart", "newLines", "lines"]
+ "required": [
+ "oldStart",
+ "oldLines",
+ "newStart",
+ "newLines",
+ "lines"
+ ]
}
},
"index": {
"type": "string"
}
},
- "required": ["oldFileName", "newFileName", "hunks"]
+ "required": [
+ "oldFileName",
+ "newFileName",
+ "hunks"
+ ]
},
"encoding": {
"type": "string",
@@ -10549,7 +11547,10 @@
"type": "string"
}
},
- "required": ["type", "content"]
+ "required": [
+ "type",
+ "content"
+ ]
},
"File": {
"type": "object",
@@ -10569,10 +11570,19 @@
},
"status": {
"type": "string",
- "enum": ["added", "deleted", "modified"]
+ "enum": [
+ "added",
+ "deleted",
+ "modified"
+ ]
}
},
- "required": ["path", "added", "removed", "status"]
+ "required": [
+ "path",
+ "added",
+ "removed",
+ "status"
+ ]
},
"MCPStatusConnected": {
"type": "object",
@@ -10582,7 +11592,9 @@
"const": "connected"
}
},
- "required": ["status"]
+ "required": [
+ "status"
+ ]
},
"MCPStatusDisabled": {
"type": "object",
@@ -10592,7 +11604,9 @@
"const": "disabled"
}
},
- "required": ["status"]
+ "required": [
+ "status"
+ ]
},
"MCPStatusFailed": {
"type": "object",
@@ -10605,7 +11619,10 @@
"type": "string"
}
},
- "required": ["status", "error"]
+ "required": [
+ "status",
+ "error"
+ ]
},
"MCPStatusNeedsAuth": {
"type": "object",
@@ -10615,7 +11632,9 @@
"const": "needs_auth"
}
},
- "required": ["status"]
+ "required": [
+ "status"
+ ]
},
"MCPStatusNeedsClientRegistration": {
"type": "object",
@@ -10628,7 +11647,10 @@
"type": "string"
}
},
- "required": ["status", "error"]
+ "required": [
+ "status",
+ "error"
+ ]
},
"MCPStatus": {
"anyOf": [
@@ -10668,7 +11690,13 @@
"type": "string"
}
},
- "required": ["home", "state", "config", "worktree", "directory"]
+ "required": [
+ "home",
+ "state",
+ "config",
+ "worktree",
+ "directory"
+ ]
},
"VcsInfo": {
"type": "object",
@@ -10677,7 +11705,9 @@
"type": "string"
}
},
- "required": ["branch"]
+ "required": [
+ "branch"
+ ]
},
"Command": {
"type": "object",
@@ -10717,7 +11747,11 @@
}
}
},
- "required": ["name", "template", "hints"]
+ "required": [
+ "name",
+ "template",
+ "hints"
+ ]
},
"Agent": {
"type": "object",
@@ -10730,7 +11764,11 @@
},
"mode": {
"type": "string",
- "enum": ["subagent", "primary", "all"]
+ "enum": [
+ "subagent",
+ "primary",
+ "all"
+ ]
},
"native": {
"type": "boolean"
@@ -10760,7 +11798,10 @@
"type": "string"
}
},
- "required": ["modelID", "providerID"]
+ "required": [
+ "modelID",
+ "providerID"
+ ]
},
"prompt": {
"type": "string"
@@ -10778,7 +11819,12 @@
"maximum": 9007199254740991
}
},
- "required": ["name", "mode", "permission", "options"]
+ "required": [
+ "name",
+ "mode",
+ "permission",
+ "options"
+ ]
},
"LSPStatus": {
"type": "object",
@@ -10805,7 +11851,12 @@
]
}
},
- "required": ["id", "name", "root", "status"]
+ "required": [
+ "id",
+ "name",
+ "root",
+ "status"
+ ]
},
"FormatterStatus": {
"type": "object",
@@ -10823,7 +11874,11 @@
"type": "boolean"
}
},
- "required": ["name", "extensions", "enabled"]
+ "required": [
+ "name",
+ "extensions",
+ "enabled"
+ ]
},
"OAuth": {
"type": "object",
@@ -10848,7 +11903,12 @@
"type": "string"
}
},
- "required": ["type", "refresh", "access", "expires"]
+ "required": [
+ "type",
+ "refresh",
+ "access",
+ "expires"
+ ]
},
"ApiAuth": {
"type": "object",
@@ -10861,7 +11921,10 @@
"type": "string"
}
},
- "required": ["type", "key"]
+ "required": [
+ "type",
+ "key"
+ ]
},
"WellKnownAuth": {
"type": "object",
@@ -10877,7 +11940,11 @@
"type": "string"
}
},
- "required": ["type", "key", "token"]
+ "required": [
+ "type",
+ "key",
+ "token"
+ ]
},
"Auth": {
"anyOf": [
@@ -10894,4 +11961,4 @@
}
}
}
-}
+} \ No newline at end of file