opencode 5 mesi fa
parent
commit
542b9fa342

+ 13 - 13
bun.lock

@@ -37,7 +37,7 @@
     },
     "packages/console/core": {
       "name": "@opencode-ai/console-core",
-      "version": "0.15.3",
+      "version": "0.15.4",
       "dependencies": {
         "@aws-sdk/client-sts": "3.782.0",
         "@jsx-email/render": "1.1.1",
@@ -64,7 +64,7 @@
     },
     "packages/console/function": {
       "name": "@opencode-ai/console-function",
-      "version": "0.15.3",
+      "version": "0.15.4",
       "dependencies": {
         "@ai-sdk/anthropic": "2.0.0",
         "@ai-sdk/openai": "2.0.2",
@@ -88,7 +88,7 @@
     },
     "packages/console/mail": {
       "name": "@opencode-ai/console-mail",
-      "version": "0.15.3",
+      "version": "0.15.4",
       "dependencies": {
         "@jsx-email/all": "2.2.3",
         "@jsx-email/cli": "1.4.3",
@@ -109,18 +109,18 @@
     },
     "packages/console/scripts": {
       "name": "@opencode-ai/console-scripts",
-      "version": "0.15.3",
+      "version": "0.15.4",
       "dependencies": {
         "@opencode-ai/console-core": "workspace:*",
       },
     },
     "packages/css": {
       "name": "@opencode-ai/css",
-      "version": "0.15.3",
+      "version": "0.15.4",
     },
     "packages/desktop": {
       "name": "@opencode-ai/desktop",
-      "version": "0.15.3",
+      "version": "0.15.4",
       "dependencies": {
         "@kobalte/core": "catalog:",
         "@opencode-ai/sdk": "workspace:*",
@@ -157,7 +157,7 @@
     },
     "packages/function": {
       "name": "@opencode-ai/function",
-      "version": "0.15.3",
+      "version": "0.15.4",
       "dependencies": {
         "@octokit/auth-app": "8.0.1",
         "@octokit/rest": "22.0.0",
@@ -172,7 +172,7 @@
     },
     "packages/opencode": {
       "name": "opencode",
-      "version": "0.15.3",
+      "version": "0.15.4",
       "bin": {
         "opencode": "./bin/opencode",
       },
@@ -230,7 +230,7 @@
     },
     "packages/plugin": {
       "name": "@opencode-ai/plugin",
-      "version": "0.15.3",
+      "version": "0.15.4",
       "dependencies": {
         "@opencode-ai/sdk": "workspace:*",
         "zod": "catalog:",
@@ -250,7 +250,7 @@
     },
     "packages/sdk/js": {
       "name": "@opencode-ai/sdk",
-      "version": "0.15.3",
+      "version": "0.15.4",
       "devDependencies": {
         "@hey-api/openapi-ts": "0.81.0",
         "@tsconfig/node22": "catalog:",
@@ -261,7 +261,7 @@
     },
     "packages/slack": {
       "name": "@opencode-ai/slack",
-      "version": "0.15.3",
+      "version": "0.15.4",
       "dependencies": {
         "@opencode-ai/sdk": "workspace:*",
         "@slack/bolt": "^3.17.1",
@@ -274,7 +274,7 @@
     },
     "packages/ui": {
       "name": "@opencode-ai/ui",
-      "version": "0.15.3",
+      "version": "0.15.4",
       "dependencies": {
         "@kobalte/core": "catalog:",
         "@opencode-ai/css": "workspace:*",
@@ -289,7 +289,7 @@
     },
     "packages/web": {
       "name": "@opencode-ai/web",
-      "version": "0.15.3",
+      "version": "0.15.4",
       "dependencies": {
         "@astrojs/cloudflare": "12.6.3",
         "@astrojs/markdown-remark": "6.3.1",

+ 1 - 1
packages/console/app/package.json

@@ -7,7 +7,7 @@
     "dev:remote": "VITE_AUTH_URL=https://auth.dev.opencode.ai bun sst shell --stage=dev bun dev",
     "build": "vinxi build && ../../opencode/script/schema.ts ./.output/public/config.json",
     "start": "vinxi start",
-    "version": "0.15.3"
+    "version": "0.15.4"
   },
   "dependencies": {
     "@ibm/plex": "6.4.1",

+ 1 - 1
packages/console/core/package.json

@@ -1,7 +1,7 @@
 {
   "$schema": "https://json.schemastore.org/package.json",
   "name": "@opencode-ai/console-core",
-  "version": "0.15.3",
+  "version": "0.15.4",
   "private": true,
   "type": "module",
   "dependencies": {

+ 1 - 1
packages/console/function/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@opencode-ai/console-function",
-  "version": "0.15.3",
+  "version": "0.15.4",
   "$schema": "https://json.schemastore.org/package.json",
   "private": true,
   "type": "module",

+ 1 - 1
packages/console/mail/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@opencode-ai/console-mail",
-  "version": "0.15.3",
+  "version": "0.15.4",
   "dependencies": {
     "@jsx-email/all": "2.2.3",
     "@jsx-email/cli": "1.4.3",

+ 1 - 1
packages/console/scripts/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@opencode-ai/console-scripts",
-  "version": "0.15.3",
+  "version": "0.15.4",
   "$schema": "https://json.schemastore.org/package.json",
   "private": true,
   "type": "module",

+ 1 - 1
packages/css/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@opencode-ai/css",
-  "version": "0.15.3",
+  "version": "0.15.4",
   "type": "module",
   "exports": {
     ".": "./src/index.css",

+ 1 - 1
packages/desktop/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@opencode-ai/desktop",
-  "version": "0.15.3",
+  "version": "0.15.4",
   "description": "",
   "type": "module",
   "scripts": {

+ 1 - 1
packages/function/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@opencode-ai/function",
-  "version": "0.15.3",
+  "version": "0.15.4",
   "$schema": "https://json.schemastore.org/package.json",
   "private": true,
   "type": "module",

+ 1 - 1
packages/opencode/package.json

@@ -1,6 +1,6 @@
 {
   "$schema": "https://json.schemastore.org/package.json",
-  "version": "0.15.3",
+  "version": "0.15.4",
   "name": "opencode",
   "type": "module",
   "private": true,

+ 2 - 2
packages/plugin/package.json

@@ -1,7 +1,7 @@
 {
   "$schema": "https://json.schemastore.org/package.json",
   "name": "@opencode-ai/plugin",
-  "version": "0.15.3",
+  "version": "0.15.4",
   "type": "module",
   "scripts": {
     "typecheck": "tsgo --noEmit",
@@ -24,4 +24,4 @@
     "typescript": "catalog:",
     "@typescript/native-preview": "catalog:"
   }
-}
+}

+ 2 - 2
packages/sdk/js/package.json

@@ -1,7 +1,7 @@
 {
   "$schema": "https://json.schemastore.org/package.json",
   "name": "@opencode-ai/sdk",
-  "version": "0.15.3",
+  "version": "0.15.4",
   "type": "module",
   "scripts": {
     "typecheck": "tsgo --noEmit",
@@ -26,4 +26,4 @@
   "publishConfig": {
     "directory": "dist"
   }
-}
+}

+ 46 - 21
packages/sdk/js/src/gen/sdk.gen.ts

@@ -26,42 +26,60 @@ import type {
   SessionCreateErrors,
   SessionDeleteData,
   SessionDeleteResponses,
+  SessionDeleteErrors,
   SessionGetData,
   SessionGetResponses,
+  SessionGetErrors,
   SessionUpdateData,
   SessionUpdateResponses,
+  SessionUpdateErrors,
   SessionChildrenData,
   SessionChildrenResponses,
+  SessionChildrenErrors,
   SessionTodoData,
   SessionTodoResponses,
+  SessionTodoErrors,
   SessionInitData,
   SessionInitResponses,
+  SessionInitErrors,
   SessionForkData,
   SessionForkResponses,
   SessionAbortData,
   SessionAbortResponses,
+  SessionAbortErrors,
   SessionUnshareData,
   SessionUnshareResponses,
+  SessionUnshareErrors,
   SessionShareData,
   SessionShareResponses,
+  SessionShareErrors,
   SessionSummarizeData,
   SessionSummarizeResponses,
+  SessionSummarizeErrors,
   SessionMessagesData,
   SessionMessagesResponses,
+  SessionMessagesErrors,
   SessionPromptData,
   SessionPromptResponses,
+  SessionPromptErrors,
   SessionMessageData,
   SessionMessageResponses,
+  SessionMessageErrors,
   SessionCommandData,
   SessionCommandResponses,
+  SessionCommandErrors,
   SessionShellData,
   SessionShellResponses,
+  SessionShellErrors,
   SessionRevertData,
   SessionRevertResponses,
+  SessionRevertErrors,
   SessionUnrevertData,
   SessionUnrevertResponses,
+  SessionUnrevertErrors,
   PostSessionIdPermissionsPermissionIdData,
   PostSessionIdPermissionsPermissionIdResponses,
+  PostSessionIdPermissionsPermissionIdErrors,
   CommandListData,
   CommandListResponses,
   ConfigProvidersData,
@@ -80,12 +98,14 @@ import type {
   FileStatusResponses,
   AppLogData,
   AppLogResponses,
+  AppLogErrors,
   AppAgentsData,
   AppAgentsResponses,
   McpStatusData,
   McpStatusResponses,
   TuiAppendPromptData,
   TuiAppendPromptResponses,
+  TuiAppendPromptErrors,
   TuiOpenHelpData,
   TuiOpenHelpResponses,
   TuiOpenSessionsData,
@@ -100,6 +120,7 @@ import type {
   TuiClearPromptResponses,
   TuiExecuteCommandData,
   TuiExecuteCommandResponses,
+  TuiExecuteCommandErrors,
   TuiShowToastData,
   TuiShowToastResponses,
   AuthSetData,
@@ -258,7 +279,7 @@ class Session extends _HeyApiClient {
    * Delete a session and all its data
    */
   public delete<ThrowOnError extends boolean = false>(options: Options<SessionDeleteData, ThrowOnError>) {
-    return (options.client ?? this._client).delete<SessionDeleteResponses, unknown, ThrowOnError>({
+    return (options.client ?? this._client).delete<SessionDeleteResponses, SessionDeleteErrors, ThrowOnError>({
       url: "/session/{id}",
       ...options,
     })
@@ -268,7 +289,7 @@ class Session extends _HeyApiClient {
    * Get session
    */
   public get<ThrowOnError extends boolean = false>(options: Options<SessionGetData, ThrowOnError>) {
-    return (options.client ?? this._client).get<SessionGetResponses, unknown, ThrowOnError>({
+    return (options.client ?? this._client).get<SessionGetResponses, SessionGetErrors, ThrowOnError>({
       url: "/session/{id}",
       ...options,
     })
@@ -278,7 +299,7 @@ class Session extends _HeyApiClient {
    * Update session properties
    */
   public update<ThrowOnError extends boolean = false>(options: Options<SessionUpdateData, ThrowOnError>) {
-    return (options.client ?? this._client).patch<SessionUpdateResponses, unknown, ThrowOnError>({
+    return (options.client ?? this._client).patch<SessionUpdateResponses, SessionUpdateErrors, ThrowOnError>({
       url: "/session/{id}",
       ...options,
       headers: {
@@ -292,7 +313,7 @@ class Session extends _HeyApiClient {
    * Get a session's children
    */
   public children<ThrowOnError extends boolean = false>(options: Options<SessionChildrenData, ThrowOnError>) {
-    return (options.client ?? this._client).get<SessionChildrenResponses, unknown, ThrowOnError>({
+    return (options.client ?? this._client).get<SessionChildrenResponses, SessionChildrenErrors, ThrowOnError>({
       url: "/session/{id}/children",
       ...options,
     })
@@ -302,7 +323,7 @@ class Session extends _HeyApiClient {
    * Get the todo list for a session
    */
   public todo<ThrowOnError extends boolean = false>(options: Options<SessionTodoData, ThrowOnError>) {
-    return (options.client ?? this._client).get<SessionTodoResponses, unknown, ThrowOnError>({
+    return (options.client ?? this._client).get<SessionTodoResponses, SessionTodoErrors, ThrowOnError>({
       url: "/session/{id}/todo",
       ...options,
     })
@@ -312,7 +333,7 @@ class Session extends _HeyApiClient {
    * Analyze the app and create an AGENTS.md file
    */
   public init<ThrowOnError extends boolean = false>(options: Options<SessionInitData, ThrowOnError>) {
-    return (options.client ?? this._client).post<SessionInitResponses, unknown, ThrowOnError>({
+    return (options.client ?? this._client).post<SessionInitResponses, SessionInitErrors, ThrowOnError>({
       url: "/session/{id}/init",
       ...options,
       headers: {
@@ -340,7 +361,7 @@ class Session extends _HeyApiClient {
    * Abort a session
    */
   public abort<ThrowOnError extends boolean = false>(options: Options<SessionAbortData, ThrowOnError>) {
-    return (options.client ?? this._client).post<SessionAbortResponses, unknown, ThrowOnError>({
+    return (options.client ?? this._client).post<SessionAbortResponses, SessionAbortErrors, ThrowOnError>({
       url: "/session/{id}/abort",
       ...options,
     })
@@ -350,7 +371,7 @@ class Session extends _HeyApiClient {
    * Unshare the session
    */
   public unshare<ThrowOnError extends boolean = false>(options: Options<SessionUnshareData, ThrowOnError>) {
-    return (options.client ?? this._client).delete<SessionUnshareResponses, unknown, ThrowOnError>({
+    return (options.client ?? this._client).delete<SessionUnshareResponses, SessionUnshareErrors, ThrowOnError>({
       url: "/session/{id}/share",
       ...options,
     })
@@ -360,7 +381,7 @@ class Session extends _HeyApiClient {
    * Share a session
    */
   public share<ThrowOnError extends boolean = false>(options: Options<SessionShareData, ThrowOnError>) {
-    return (options.client ?? this._client).post<SessionShareResponses, unknown, ThrowOnError>({
+    return (options.client ?? this._client).post<SessionShareResponses, SessionShareErrors, ThrowOnError>({
       url: "/session/{id}/share",
       ...options,
     })
@@ -370,7 +391,7 @@ class Session extends _HeyApiClient {
    * Summarize the session
    */
   public summarize<ThrowOnError extends boolean = false>(options: Options<SessionSummarizeData, ThrowOnError>) {
-    return (options.client ?? this._client).post<SessionSummarizeResponses, unknown, ThrowOnError>({
+    return (options.client ?? this._client).post<SessionSummarizeResponses, SessionSummarizeErrors, ThrowOnError>({
       url: "/session/{id}/summarize",
       ...options,
       headers: {
@@ -384,7 +405,7 @@ class Session extends _HeyApiClient {
    * List messages for a session
    */
   public messages<ThrowOnError extends boolean = false>(options: Options<SessionMessagesData, ThrowOnError>) {
-    return (options.client ?? this._client).get<SessionMessagesResponses, unknown, ThrowOnError>({
+    return (options.client ?? this._client).get<SessionMessagesResponses, SessionMessagesErrors, ThrowOnError>({
       url: "/session/{id}/message",
       ...options,
     })
@@ -394,7 +415,7 @@ class Session extends _HeyApiClient {
    * Create and send a new message to a session
    */
   public prompt<ThrowOnError extends boolean = false>(options: Options<SessionPromptData, ThrowOnError>) {
-    return (options.client ?? this._client).post<SessionPromptResponses, unknown, ThrowOnError>({
+    return (options.client ?? this._client).post<SessionPromptResponses, SessionPromptErrors, ThrowOnError>({
       url: "/session/{id}/message",
       ...options,
       headers: {
@@ -408,7 +429,7 @@ class Session extends _HeyApiClient {
    * Get a message from a session
    */
   public message<ThrowOnError extends boolean = false>(options: Options<SessionMessageData, ThrowOnError>) {
-    return (options.client ?? this._client).get<SessionMessageResponses, unknown, ThrowOnError>({
+    return (options.client ?? this._client).get<SessionMessageResponses, SessionMessageErrors, ThrowOnError>({
       url: "/session/{id}/message/{messageID}",
       ...options,
     })
@@ -418,7 +439,7 @@ class Session extends _HeyApiClient {
    * Send a new command to a session
    */
   public command<ThrowOnError extends boolean = false>(options: Options<SessionCommandData, ThrowOnError>) {
-    return (options.client ?? this._client).post<SessionCommandResponses, unknown, ThrowOnError>({
+    return (options.client ?? this._client).post<SessionCommandResponses, SessionCommandErrors, ThrowOnError>({
       url: "/session/{id}/command",
       ...options,
       headers: {
@@ -432,7 +453,7 @@ class Session extends _HeyApiClient {
    * Run a shell command
    */
   public shell<ThrowOnError extends boolean = false>(options: Options<SessionShellData, ThrowOnError>) {
-    return (options.client ?? this._client).post<SessionShellResponses, unknown, ThrowOnError>({
+    return (options.client ?? this._client).post<SessionShellResponses, SessionShellErrors, ThrowOnError>({
       url: "/session/{id}/shell",
       ...options,
       headers: {
@@ -446,7 +467,7 @@ class Session extends _HeyApiClient {
    * Revert a message
    */
   public revert<ThrowOnError extends boolean = false>(options: Options<SessionRevertData, ThrowOnError>) {
-    return (options.client ?? this._client).post<SessionRevertResponses, unknown, ThrowOnError>({
+    return (options.client ?? this._client).post<SessionRevertResponses, SessionRevertErrors, ThrowOnError>({
       url: "/session/{id}/revert",
       ...options,
       headers: {
@@ -460,7 +481,7 @@ class Session extends _HeyApiClient {
    * Restore all reverted messages
    */
   public unrevert<ThrowOnError extends boolean = false>(options: Options<SessionUnrevertData, ThrowOnError>) {
-    return (options.client ?? this._client).post<SessionUnrevertResponses, unknown, ThrowOnError>({
+    return (options.client ?? this._client).post<SessionUnrevertResponses, SessionUnrevertErrors, ThrowOnError>({
       url: "/session/{id}/unrevert",
       ...options,
     })
@@ -548,7 +569,7 @@ class App extends _HeyApiClient {
    * Write a log entry to the server logs
    */
   public log<ThrowOnError extends boolean = false>(options?: Options<AppLogData, ThrowOnError>) {
-    return (options?.client ?? this._client).post<AppLogResponses, unknown, ThrowOnError>({
+    return (options?.client ?? this._client).post<AppLogResponses, AppLogErrors, ThrowOnError>({
       url: "/log",
       ...options,
       headers: {
@@ -586,7 +607,7 @@ class Tui extends _HeyApiClient {
    * Append prompt to the TUI
    */
   public appendPrompt<ThrowOnError extends boolean = false>(options?: Options<TuiAppendPromptData, ThrowOnError>) {
-    return (options?.client ?? this._client).post<TuiAppendPromptResponses, unknown, ThrowOnError>({
+    return (options?.client ?? this._client).post<TuiAppendPromptResponses, TuiAppendPromptErrors, ThrowOnError>({
       url: "/tui/append-prompt",
       ...options,
       headers: {
@@ -660,7 +681,7 @@ class Tui extends _HeyApiClient {
    * Execute a TUI command (e.g. agent_cycle)
    */
   public executeCommand<ThrowOnError extends boolean = false>(options?: Options<TuiExecuteCommandData, ThrowOnError>) {
-    return (options?.client ?? this._client).post<TuiExecuteCommandResponses, unknown, ThrowOnError>({
+    return (options?.client ?? this._client).post<TuiExecuteCommandResponses, TuiExecuteCommandErrors, ThrowOnError>({
       url: "/tui/execute-command",
       ...options,
       headers: {
@@ -720,7 +741,11 @@ export class OpencodeClient extends _HeyApiClient {
   public postSessionIdPermissionsPermissionId<ThrowOnError extends boolean = false>(
     options: Options<PostSessionIdPermissionsPermissionIdData, ThrowOnError>,
   ) {
-    return (options.client ?? this._client).post<PostSessionIdPermissionsPermissionIdResponses, unknown, ThrowOnError>({
+    return (options.client ?? this._client).post<
+      PostSessionIdPermissionsPermissionIdResponses,
+      PostSessionIdPermissionsPermissionIdErrors,
+      ThrowOnError
+    >({
       url: "/session/{id}/permissions/{permissionID}",
       ...options,
       headers: {

+ 281 - 8
packages/sdk/js/src/gen/types.gen.ts

@@ -418,6 +418,7 @@ export type Config = {
             output: Array<"text" | "audio" | "image" | "video" | "pdf">
           }
           experimental?: boolean
+          status?: "alpha" | "beta"
           options?: {
             [key: string]: unknown
           }
@@ -508,10 +509,12 @@ export type Config = {
   }
 }
 
-export type _Error = {
-  data: {
+export type BadRequestError = {
+  data: unknown | null
+  errors: Array<{
     [key: string]: unknown
-  }
+  }>
+  success: false
 }
 
 export type ToolIds = Array<string>
@@ -554,6 +557,13 @@ export type Session = {
   }
 }
 
+export type NotFoundError = {
+  name: "NotFoundError"
+  data: {
+    message: string
+  }
+}
+
 export type Todo = {
   /**
    * Brief description of the task
@@ -914,6 +924,7 @@ export type Model = {
     output: Array<"text" | "audio" | "image" | "video" | "pdf">
   }
   experimental?: boolean
+  status?: "alpha" | "beta"
   options: {
     [key: string]: unknown
   }
@@ -1259,7 +1270,7 @@ export type ConfigUpdateErrors = {
   /**
    * Bad request
    */
-  400: _Error
+  400: BadRequestError
 }
 
 export type ConfigUpdateError = ConfigUpdateErrors[keyof ConfigUpdateErrors]
@@ -1286,7 +1297,7 @@ export type ToolIdsErrors = {
   /**
    * Bad request
    */
-  400: _Error
+  400: BadRequestError
 }
 
 export type ToolIdsError = ToolIdsErrors[keyof ToolIdsErrors]
@@ -1315,7 +1326,7 @@ export type ToolListErrors = {
   /**
    * Bad request
    */
-  400: _Error
+  400: BadRequestError
 }
 
 export type ToolListError = ToolListErrors[keyof ToolListErrors]
@@ -1381,7 +1392,7 @@ export type SessionCreateErrors = {
   /**
    * Bad request
    */
-  400: _Error
+  400: BadRequestError
 }
 
 export type SessionCreateError = SessionCreateErrors[keyof SessionCreateErrors]
@@ -1406,6 +1417,19 @@ export type SessionDeleteData = {
   url: "/session/{id}"
 }
 
+export type SessionDeleteErrors = {
+  /**
+   * Bad request
+   */
+  400: BadRequestError
+  /**
+   * Not found
+   */
+  404: NotFoundError
+}
+
+export type SessionDeleteError = SessionDeleteErrors[keyof SessionDeleteErrors]
+
 export type SessionDeleteResponses = {
   /**
    * Successfully deleted session
@@ -1426,6 +1450,19 @@ export type SessionGetData = {
   url: "/session/{id}"
 }
 
+export type SessionGetErrors = {
+  /**
+   * Bad request
+   */
+  400: BadRequestError
+  /**
+   * Not found
+   */
+  404: NotFoundError
+}
+
+export type SessionGetError = SessionGetErrors[keyof SessionGetErrors]
+
 export type SessionGetResponses = {
   /**
    * Get session
@@ -1448,6 +1485,19 @@ export type SessionUpdateData = {
   url: "/session/{id}"
 }
 
+export type SessionUpdateErrors = {
+  /**
+   * Bad request
+   */
+  400: BadRequestError
+  /**
+   * Not found
+   */
+  404: NotFoundError
+}
+
+export type SessionUpdateError = SessionUpdateErrors[keyof SessionUpdateErrors]
+
 export type SessionUpdateResponses = {
   /**
    * Successfully updated session
@@ -1468,6 +1518,19 @@ export type SessionChildrenData = {
   url: "/session/{id}/children"
 }
 
+export type SessionChildrenErrors = {
+  /**
+   * Bad request
+   */
+  400: BadRequestError
+  /**
+   * Not found
+   */
+  404: NotFoundError
+}
+
+export type SessionChildrenError = SessionChildrenErrors[keyof SessionChildrenErrors]
+
 export type SessionChildrenResponses = {
   /**
    * List of children
@@ -1491,6 +1554,19 @@ export type SessionTodoData = {
   url: "/session/{id}/todo"
 }
 
+export type SessionTodoErrors = {
+  /**
+   * Bad request
+   */
+  400: BadRequestError
+  /**
+   * Not found
+   */
+  404: NotFoundError
+}
+
+export type SessionTodoError = SessionTodoErrors[keyof SessionTodoErrors]
+
 export type SessionTodoResponses = {
   /**
    * Todo list
@@ -1518,6 +1594,19 @@ export type SessionInitData = {
   url: "/session/{id}/init"
 }
 
+export type SessionInitErrors = {
+  /**
+   * Bad request
+   */
+  400: BadRequestError
+  /**
+   * Not found
+   */
+  404: NotFoundError
+}
+
+export type SessionInitError = SessionInitErrors[keyof SessionInitErrors]
+
 export type SessionInitResponses = {
   /**
    * 200
@@ -1560,6 +1649,19 @@ export type SessionAbortData = {
   url: "/session/{id}/abort"
 }
 
+export type SessionAbortErrors = {
+  /**
+   * Bad request
+   */
+  400: BadRequestError
+  /**
+   * Not found
+   */
+  404: NotFoundError
+}
+
+export type SessionAbortError = SessionAbortErrors[keyof SessionAbortErrors]
+
 export type SessionAbortResponses = {
   /**
    * Aborted session
@@ -1580,6 +1682,19 @@ export type SessionUnshareData = {
   url: "/session/{id}/share"
 }
 
+export type SessionUnshareErrors = {
+  /**
+   * Bad request
+   */
+  400: BadRequestError
+  /**
+   * Not found
+   */
+  404: NotFoundError
+}
+
+export type SessionUnshareError = SessionUnshareErrors[keyof SessionUnshareErrors]
+
 export type SessionUnshareResponses = {
   /**
    * Successfully unshared session
@@ -1600,6 +1715,19 @@ export type SessionShareData = {
   url: "/session/{id}/share"
 }
 
+export type SessionShareErrors = {
+  /**
+   * Bad request
+   */
+  400: BadRequestError
+  /**
+   * Not found
+   */
+  404: NotFoundError
+}
+
+export type SessionShareError = SessionShareErrors[keyof SessionShareErrors]
+
 export type SessionShareResponses = {
   /**
    * Successfully shared session
@@ -1626,6 +1754,19 @@ export type SessionSummarizeData = {
   url: "/session/{id}/summarize"
 }
 
+export type SessionSummarizeErrors = {
+  /**
+   * Bad request
+   */
+  400: BadRequestError
+  /**
+   * Not found
+   */
+  404: NotFoundError
+}
+
+export type SessionSummarizeError = SessionSummarizeErrors[keyof SessionSummarizeErrors]
+
 export type SessionSummarizeResponses = {
   /**
    * Summarized session
@@ -1649,6 +1790,19 @@ export type SessionMessagesData = {
   url: "/session/{id}/message"
 }
 
+export type SessionMessagesErrors = {
+  /**
+   * Bad request
+   */
+  400: BadRequestError
+  /**
+   * Not found
+   */
+  404: NotFoundError
+}
+
+export type SessionMessagesError = SessionMessagesErrors[keyof SessionMessagesErrors]
+
 export type SessionMessagesResponses = {
   /**
    * List of messages
@@ -1687,6 +1841,19 @@ export type SessionPromptData = {
   url: "/session/{id}/message"
 }
 
+export type SessionPromptErrors = {
+  /**
+   * Bad request
+   */
+  400: BadRequestError
+  /**
+   * Not found
+   */
+  404: NotFoundError
+}
+
+export type SessionPromptError = SessionPromptErrors[keyof SessionPromptErrors]
+
 export type SessionPromptResponses = {
   /**
    * Created message
@@ -1717,6 +1884,19 @@ export type SessionMessageData = {
   url: "/session/{id}/message/{messageID}"
 }
 
+export type SessionMessageErrors = {
+  /**
+   * Bad request
+   */
+  400: BadRequestError
+  /**
+   * Not found
+   */
+  404: NotFoundError
+}
+
+export type SessionMessageError = SessionMessageErrors[keyof SessionMessageErrors]
+
 export type SessionMessageResponses = {
   /**
    * Message
@@ -1749,6 +1929,19 @@ export type SessionCommandData = {
   url: "/session/{id}/command"
 }
 
+export type SessionCommandErrors = {
+  /**
+   * Bad request
+   */
+  400: BadRequestError
+  /**
+   * Not found
+   */
+  404: NotFoundError
+}
+
+export type SessionCommandError = SessionCommandErrors[keyof SessionCommandErrors]
+
 export type SessionCommandResponses = {
   /**
    * Created message
@@ -1778,6 +1971,19 @@ export type SessionShellData = {
   url: "/session/{id}/shell"
 }
 
+export type SessionShellErrors = {
+  /**
+   * Bad request
+   */
+  400: BadRequestError
+  /**
+   * Not found
+   */
+  404: NotFoundError
+}
+
+export type SessionShellError = SessionShellErrors[keyof SessionShellErrors]
+
 export type SessionShellResponses = {
   /**
    * Created message
@@ -1801,6 +2007,19 @@ export type SessionRevertData = {
   url: "/session/{id}/revert"
 }
 
+export type SessionRevertErrors = {
+  /**
+   * Bad request
+   */
+  400: BadRequestError
+  /**
+   * Not found
+   */
+  404: NotFoundError
+}
+
+export type SessionRevertError = SessionRevertErrors[keyof SessionRevertErrors]
+
 export type SessionRevertResponses = {
   /**
    * Updated session
@@ -1821,6 +2040,19 @@ export type SessionUnrevertData = {
   url: "/session/{id}/unrevert"
 }
 
+export type SessionUnrevertErrors = {
+  /**
+   * Bad request
+   */
+  400: BadRequestError
+  /**
+   * Not found
+   */
+  404: NotFoundError
+}
+
+export type SessionUnrevertError = SessionUnrevertErrors[keyof SessionUnrevertErrors]
+
 export type SessionUnrevertResponses = {
   /**
    * Updated session
@@ -1844,6 +2076,20 @@ export type PostSessionIdPermissionsPermissionIdData = {
   url: "/session/{id}/permissions/{permissionID}"
 }
 
+export type PostSessionIdPermissionsPermissionIdErrors = {
+  /**
+   * Bad request
+   */
+  400: BadRequestError
+  /**
+   * Not found
+   */
+  404: NotFoundError
+}
+
+export type PostSessionIdPermissionsPermissionIdError =
+  PostSessionIdPermissionsPermissionIdErrors[keyof PostSessionIdPermissionsPermissionIdErrors]
+
 export type PostSessionIdPermissionsPermissionIdResponses = {
   /**
    * Permission processed successfully
@@ -2052,6 +2298,15 @@ export type AppLogData = {
   url: "/log"
 }
 
+export type AppLogErrors = {
+  /**
+   * Bad request
+   */
+  400: BadRequestError
+}
+
+export type AppLogError = AppLogErrors[keyof AppLogErrors]
+
 export type AppLogResponses = {
   /**
    * Log entry written successfully
@@ -2106,6 +2361,15 @@ export type TuiAppendPromptData = {
   url: "/tui/append-prompt"
 }
 
+export type TuiAppendPromptErrors = {
+  /**
+   * Bad request
+   */
+  400: BadRequestError
+}
+
+export type TuiAppendPromptError = TuiAppendPromptErrors[keyof TuiAppendPromptErrors]
+
 export type TuiAppendPromptResponses = {
   /**
    * Prompt processed successfully
@@ -2234,6 +2498,15 @@ export type TuiExecuteCommandData = {
   url: "/tui/execute-command"
 }
 
+export type TuiExecuteCommandErrors = {
+  /**
+   * Bad request
+   */
+  400: BadRequestError
+}
+
+export type TuiExecuteCommandError = TuiExecuteCommandErrors[keyof TuiExecuteCommandErrors]
+
 export type TuiExecuteCommandResponses = {
   /**
    * Command executed successfully
@@ -2280,7 +2553,7 @@ export type AuthSetErrors = {
   /**
    * Bad request
    */
-  400: _Error
+  400: BadRequestError
 }
 
 export type AuthSetError = AuthSetErrors[keyof AuthSetErrors]

+ 1 - 1
packages/slack/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@opencode-ai/slack",
-  "version": "0.15.3",
+  "version": "0.15.4",
   "type": "module",
   "scripts": {
     "dev": "bun run src/index.ts",

+ 1 - 1
packages/ui/package.json

@@ -1,6 +1,6 @@
 {
   "name": "@opencode-ai/ui",
-  "version": "0.15.3",
+  "version": "0.15.4",
   "type": "module",
   "exports": {
     ".": "./src/components/index.ts",

+ 1 - 1
packages/web/package.json

@@ -1,7 +1,7 @@
 {
   "name": "@opencode-ai/web",
   "type": "module",
-  "version": "0.15.3",
+  "version": "0.15.4",
   "scripts": {
     "dev": "astro dev",
     "dev:remote": "VITE_API_URL=https://api.opencode.ai astro dev",

+ 1 - 1
sdks/vscode/package.json

@@ -2,7 +2,7 @@
   "name": "opencode",
   "displayName": "opencode",
   "description": "opencode for VS Code",
-  "version": "0.15.3",
+  "version": "0.15.4",
   "publisher": "sst-dev",
   "repository": {
     "type": "git",