summaryrefslogtreecommitdiffhomepage
path: root/packages/sdk
diff options
context:
space:
mode:
authorDax <[email protected]>2026-05-02 22:09:48 -0400
committerGitHub <[email protected]>2026-05-02 22:09:48 -0400
commita3bc5d35b0f8f542d4531193b8816bc8b55363e3 (patch)
tree8a305b985e2fc0a1e05060760fd67d890dace443 /packages/sdk
parent1409a0715cd9f0bd92b9c1b736055791f336324c (diff)
downloadopencode-a3bc5d35b0f8f542d4531193b8816bc8b55363e3.tar.gz
opencode-a3bc5d35b0f8f542d4531193b8816bc8b55363e3.zip
Refactor v2 session events as schemas (#24512)
Diffstat (limited to 'packages/sdk')
-rwxr-xr-xpackages/sdk/js/script/build.ts2
-rw-r--r--packages/sdk/js/src/v2/gen/sdk.gen.ts2763
-rw-r--r--packages/sdk/js/src/v2/gen/types.gen.ts5209
3 files changed, 4644 insertions, 3330 deletions
diff --git a/packages/sdk/js/script/build.ts b/packages/sdk/js/script/build.ts
index e920cc0fd..c490a0be7 100755
--- a/packages/sdk/js/script/build.ts
+++ b/packages/sdk/js/script/build.ts
@@ -9,7 +9,7 @@ import path from "path"
import { createClient } from "@hey-api/openapi-ts"
-const openapiSource = process.env.OPENCODE_SDK_OPENAPI === "httpapi" ? "httpapi" : "hono"
+const openapiSource = process.env.OPENCODE_SDK_OPENAPI === "hono" ? "hono" : "httpapi"
const opencode = path.resolve(dir, "../../opencode")
if (openapiSource === "httpapi") {
diff --git a/packages/sdk/js/src/v2/gen/sdk.gen.ts b/packages/sdk/js/src/v2/gen/sdk.gen.ts
index 67261d749..74c584462 100644
--- a/packages/sdk/js/src/v2/gen/sdk.gen.ts
+++ b/packages/sdk/js/src/v2/gen/sdk.gen.ts
@@ -20,10 +20,10 @@ import type {
ConfigUpdateErrors,
ConfigUpdateResponses,
EventSubscribeResponses,
- EventTuiCommandExecute,
- EventTuiPromptAppend,
- EventTuiSessionSelect,
- EventTuiToastShow,
+ EventTuiCommandExecute2,
+ EventTuiPromptAppend2,
+ EventTuiSessionSelect2,
+ EventTuiToastShow2,
ExperimentalConsoleGetResponses,
ExperimentalConsoleListOrgsResponses,
ExperimentalConsoleSwitchOrgResponses,
@@ -90,6 +90,7 @@ import type {
ProjectListResponses,
ProjectUpdateErrors,
ProjectUpdateResponses,
+ Prompt,
ProviderAuthResponses,
ProviderListResponses,
ProviderOauthAuthorizeErrors,
@@ -126,6 +127,7 @@ import type {
SessionDeleteMessageErrors,
SessionDeleteMessageResponses,
SessionDeleteResponses,
+ SessionDelivery,
SessionDiffResponses,
SessionForkResponses,
SessionGetErrors,
@@ -187,6 +189,14 @@ import type {
TuiSelectSessionResponses,
TuiShowToastResponses,
TuiSubmitPromptResponses,
+ V2SessionCompactResponses,
+ V2SessionContextResponses,
+ V2SessionListErrors,
+ V2SessionListResponses,
+ V2SessionMessagesErrors,
+ V2SessionMessagesResponses,
+ V2SessionPromptResponses,
+ V2SessionWaitResponses,
VcsDiffResponses,
VcsGetResponses,
WorktreeCreateErrors,
@@ -244,6 +254,169 @@ class HeyApiRegistry<T> {
}
}
+export class Auth extends HeyApiClient {
+ /**
+ * Remove auth credentials
+ *
+ * Remove authentication credentials
+ */
+ public remove<ThrowOnError extends boolean = false>(
+ parameters: {
+ providerID: string
+ },
+ options?: Options<never, ThrowOnError>,
+ ) {
+ const params = buildClientParams([parameters], [{ args: [{ in: "path", key: "providerID" }] }])
+ return (options?.client ?? this.client).delete<AuthRemoveResponses, AuthRemoveErrors, ThrowOnError>({
+ url: "/auth/{providerID}",
+ ...options,
+ ...params,
+ })
+ }
+
+ /**
+ * Set auth credentials
+ *
+ * Set authentication credentials
+ */
+ public set<ThrowOnError extends boolean = false>(
+ parameters: {
+ providerID: string
+ auth?: Auth3
+ },
+ options?: Options<never, ThrowOnError>,
+ ) {
+ const params = buildClientParams(
+ [parameters],
+ [
+ {
+ args: [
+ { in: "path", key: "providerID" },
+ { key: "auth", map: "body" },
+ ],
+ },
+ ],
+ )
+ return (options?.client ?? this.client).put<AuthSetResponses, AuthSetErrors, ThrowOnError>({
+ url: "/auth/{providerID}",
+ ...options,
+ ...params,
+ headers: {
+ "Content-Type": "application/json",
+ ...options?.headers,
+ ...params.headers,
+ },
+ })
+ }
+}
+
+export class App extends HeyApiClient {
+ /**
+ * Write log
+ *
+ * Write a log entry to the server logs with specified level and metadata.
+ */
+ public log<ThrowOnError extends boolean = false>(
+ parameters?: {
+ directory?: string
+ workspace?: string
+ service?: string
+ level?: "debug" | "info" | "error" | "warn"
+ message?: string
+ extra?: {
+ [key: string]: unknown
+ }
+ },
+ options?: Options<never, ThrowOnError>,
+ ) {
+ const params = buildClientParams(
+ [parameters],
+ [
+ {
+ args: [
+ { in: "query", key: "directory" },
+ { in: "query", key: "workspace" },
+ { in: "body", key: "service" },
+ { in: "body", key: "level" },
+ { in: "body", key: "message" },
+ { in: "body", key: "extra" },
+ ],
+ },
+ ],
+ )
+ return (options?.client ?? this.client).post<AppLogResponses, AppLogErrors, ThrowOnError>({
+ url: "/log",
+ ...options,
+ ...params,
+ headers: {
+ "Content-Type": "application/json",
+ ...options?.headers,
+ ...params.headers,
+ },
+ })
+ }
+
+ /**
+ * List agents
+ *
+ * Get a list of all available AI agents in the OpenCode system.
+ */
+ public agents<ThrowOnError extends boolean = false>(
+ parameters?: {
+ directory?: string
+ workspace?: string
+ },
+ options?: Options<never, ThrowOnError>,
+ ) {
+ const params = buildClientParams(
+ [parameters],
+ [
+ {
+ args: [
+ { in: "query", key: "directory" },
+ { in: "query", key: "workspace" },
+ ],
+ },
+ ],
+ )
+ return (options?.client ?? this.client).get<AppAgentsResponses, unknown, ThrowOnError>({
+ url: "/agent",
+ ...options,
+ ...params,
+ })
+ }
+
+ /**
+ * List skills
+ *
+ * Get a list of all available skills in the OpenCode system.
+ */
+ public skills<ThrowOnError extends boolean = false>(
+ parameters?: {
+ directory?: string
+ workspace?: string
+ },
+ options?: Options<never, ThrowOnError>,
+ ) {
+ const params = buildClientParams(
+ [parameters],
+ [
+ {
+ args: [
+ { in: "query", key: "directory" },
+ { in: "query", key: "workspace" },
+ ],
+ },
+ ],
+ )
+ return (options?.client ?? this.client).get<AppSkillsResponses, unknown, ThrowOnError>({
+ url: "/skill",
+ ...options,
+ ...params,
+ })
+ }
+}
+
export class Config extends HeyApiClient {
/**
* Get global configuration
@@ -349,35 +522,48 @@ export class Global extends HeyApiClient {
}
}
-export class Auth extends HeyApiClient {
+export class Event extends HeyApiClient {
/**
- * Remove auth credentials
+ * Subscribe to events
*
- * Remove authentication credentials
+ * Get events
*/
- public remove<ThrowOnError extends boolean = false>(
- parameters: {
- providerID: string
+ public subscribe<ThrowOnError extends boolean = false>(
+ parameters?: {
+ directory?: string
+ workspace?: string
},
options?: Options<never, ThrowOnError>,
) {
- const params = buildClientParams([parameters], [{ args: [{ in: "path", key: "providerID" }] }])
- return (options?.client ?? this.client).delete<AuthRemoveResponses, AuthRemoveErrors, ThrowOnError>({
- url: "/auth/{providerID}",
+ const params = buildClientParams(
+ [parameters],
+ [
+ {
+ args: [
+ { in: "query", key: "directory" },
+ { in: "query", key: "workspace" },
+ ],
+ },
+ ],
+ )
+ return (options?.client ?? this.client).sse.get<EventSubscribeResponses, unknown, ThrowOnError>({
+ url: "/event",
...options,
...params,
})
}
+}
+export class Config2 extends HeyApiClient {
/**
- * Set auth credentials
+ * Get configuration
*
- * Set authentication credentials
+ * Retrieve the current OpenCode configuration settings and preferences.
*/
- public set<ThrowOnError extends boolean = false>(
- parameters: {
- providerID: string
- auth?: Auth3
+ public get<ThrowOnError extends boolean = false>(
+ parameters?: {
+ directory?: string
+ workspace?: string
},
options?: Options<never, ThrowOnError>,
) {
@@ -386,14 +572,46 @@ export class Auth extends HeyApiClient {
[
{
args: [
- { in: "path", key: "providerID" },
- { key: "auth", map: "body" },
+ { in: "query", key: "directory" },
+ { in: "query", key: "workspace" },
],
},
],
)
- return (options?.client ?? this.client).put<AuthSetResponses, AuthSetErrors, ThrowOnError>({
- url: "/auth/{providerID}",
+ return (options?.client ?? this.client).get<ConfigGetResponses, unknown, ThrowOnError>({
+ url: "/config",
+ ...options,
+ ...params,
+ })
+ }
+
+ /**
+ * Update configuration
+ *
+ * Update OpenCode configuration settings and preferences.
+ */
+ public update<ThrowOnError extends boolean = false>(
+ parameters?: {
+ directory?: string
+ workspace?: string
+ config?: Config3
+ },
+ options?: Options<never, ThrowOnError>,
+ ) {
+ const params = buildClientParams(
+ [parameters],
+ [
+ {
+ args: [
+ { in: "query", key: "directory" },
+ { in: "query", key: "workspace" },
+ { key: "config", map: "body" },
+ ],
+ },
+ ],
+ )
+ return (options?.client ?? this.client).patch<ConfigUpdateResponses, ConfigUpdateErrors, ThrowOnError>({
+ url: "/config",
...options,
...params,
headers: {
@@ -403,24 +621,48 @@ export class Auth extends HeyApiClient {
},
})
}
+
+ /**
+ * List config providers
+ *
+ * Get a list of all configured AI providers and their default models.
+ */
+ public providers<ThrowOnError extends boolean = false>(
+ parameters?: {
+ directory?: string
+ workspace?: string
+ },
+ options?: Options<never, ThrowOnError>,
+ ) {
+ const params = buildClientParams(
+ [parameters],
+ [
+ {
+ args: [
+ { in: "query", key: "directory" },
+ { in: "query", key: "workspace" },
+ ],
+ },
+ ],
+ )
+ return (options?.client ?? this.client).get<ConfigProvidersResponses, unknown, ThrowOnError>({
+ url: "/config/providers",
+ ...options,
+ ...params,
+ })
+ }
}
-export class App extends HeyApiClient {
+export class Console extends HeyApiClient {
/**
- * Write log
+ * Get active Console provider metadata
*
- * Write a log entry to the server logs with specified level and metadata.
+ * Get the active Console org name and the set of provider IDs managed by that Console org.
*/
- public log<ThrowOnError extends boolean = false>(
+ public get<ThrowOnError extends boolean = false>(
parameters?: {
directory?: string
workspace?: string
- service?: string
- level?: "debug" | "info" | "error" | "warn"
- message?: string
- extra?: {
- [key: string]: unknown
- }
},
options?: Options<never, ThrowOnError>,
) {
@@ -431,16 +673,76 @@ export class App extends HeyApiClient {
args: [
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { in: "body", key: "service" },
- { in: "body", key: "level" },
- { in: "body", key: "message" },
- { in: "body", key: "extra" },
],
},
],
)
- return (options?.client ?? this.client).post<AppLogResponses, AppLogErrors, ThrowOnError>({
- url: "/log",
+ return (options?.client ?? this.client).get<ExperimentalConsoleGetResponses, unknown, ThrowOnError>({
+ url: "/experimental/console",
+ ...options,
+ ...params,
+ })
+ }
+
+ /**
+ * List switchable Console orgs
+ *
+ * Get the available Console orgs across logged-in accounts, including the current active org.
+ */
+ public listOrgs<ThrowOnError extends boolean = false>(
+ parameters?: {
+ directory?: string
+ workspace?: string
+ },
+ options?: Options<never, ThrowOnError>,
+ ) {
+ const params = buildClientParams(
+ [parameters],
+ [
+ {
+ args: [
+ { in: "query", key: "directory" },
+ { in: "query", key: "workspace" },
+ ],
+ },
+ ],
+ )
+ return (options?.client ?? this.client).get<ExperimentalConsoleListOrgsResponses, unknown, ThrowOnError>({
+ url: "/experimental/console/orgs",
+ ...options,
+ ...params,
+ })
+ }
+
+ /**
+ * Switch active Console org
+ *
+ * Persist a new active Console account/org selection for the current local OpenCode state.
+ */
+ public switchOrg<ThrowOnError extends boolean = false>(
+ parameters?: {
+ directory?: string
+ workspace?: string
+ accountID?: string
+ orgID?: string
+ },
+ options?: Options<never, ThrowOnError>,
+ ) {
+ const params = buildClientParams(
+ [parameters],
+ [
+ {
+ args: [
+ { in: "query", key: "directory" },
+ { in: "query", key: "workspace" },
+ { in: "body", key: "accountID" },
+ { in: "body", key: "orgID" },
+ ],
+ },
+ ],
+ )
+ return (options?.client ?? this.client).post<ExperimentalConsoleSwitchOrgResponses, unknown, ThrowOnError>({
+ url: "/experimental/console/switch",
...options,
...params,
headers: {
@@ -450,16 +752,24 @@ export class App extends HeyApiClient {
},
})
}
+}
+export class Session extends HeyApiClient {
/**
- * List agents
+ * List sessions
*
- * Get a list of all available AI agents in the OpenCode system.
+ * Get a list of all OpenCode sessions across projects, sorted by most recently updated. Archived sessions are excluded by default.
*/
- public agents<ThrowOnError extends boolean = false>(
+ public list<ThrowOnError extends boolean = false>(
parameters?: {
directory?: string
workspace?: string
+ roots?: boolean | "true" | "false"
+ start?: number
+ cursor?: number
+ search?: string
+ limit?: number
+ archived?: boolean | "true" | "false"
},
options?: Options<never, ThrowOnError>,
) {
@@ -470,23 +780,31 @@ export class App extends HeyApiClient {
args: [
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
+ { in: "query", key: "roots" },
+ { in: "query", key: "start" },
+ { in: "query", key: "cursor" },
+ { in: "query", key: "search" },
+ { in: "query", key: "limit" },
+ { in: "query", key: "archived" },
],
},
],
)
- return (options?.client ?? this.client).get<AppAgentsResponses, unknown, ThrowOnError>({
- url: "/agent",
+ return (options?.client ?? this.client).get<ExperimentalSessionListResponses, unknown, ThrowOnError>({
+ url: "/experimental/session",
...options,
...params,
})
}
+}
+export class Resource extends HeyApiClient {
/**
- * List skills
+ * Get MCP resources
*
- * Get a list of all available skills in the OpenCode system.
+ * Get all available MCP resources from connected servers. Optionally filter by name.
*/
- public skills<ThrowOnError extends boolean = false>(
+ public list<ThrowOnError extends boolean = false>(
parameters?: {
directory?: string
workspace?: string
@@ -504,8 +822,8 @@ export class App extends HeyApiClient {
},
],
)
- return (options?.client ?? this.client).get<AppSkillsResponses, unknown, ThrowOnError>({
- url: "/skill",
+ return (options?.client ?? this.client).get<ExperimentalResourceListResponses, unknown, ThrowOnError>({
+ url: "/experimental/resource",
...options,
...params,
})
@@ -737,16 +1055,40 @@ export class Workspace extends HeyApiClient {
}
}
-export class Console extends HeyApiClient {
+export class Experimental extends HeyApiClient {
+ private _console?: Console
+ get console(): Console {
+ return (this._console ??= new Console({ client: this.client }))
+ }
+
+ private _session?: Session
+ get session(): Session {
+ return (this._session ??= new Session({ client: this.client }))
+ }
+
+ private _resource?: Resource
+ get resource(): Resource {
+ return (this._resource ??= new Resource({ client: this.client }))
+ }
+
+ private _workspace?: Workspace
+ get workspace(): Workspace {
+ return (this._workspace ??= new Workspace({ client: this.client }))
+ }
+}
+
+export class Tool extends HeyApiClient {
/**
- * Get active Console provider metadata
+ * List tools
*
- * Get the active Console org name and the set of provider IDs managed by that Console org.
+ * Get a list of available tools with their JSON schema parameters for a specific provider and model combination.
*/
- public get<ThrowOnError extends boolean = false>(
- parameters?: {
+ public list<ThrowOnError extends boolean = false>(
+ parameters: {
directory?: string
workspace?: string
+ provider: string
+ model: string
},
options?: Options<never, ThrowOnError>,
) {
@@ -757,23 +1099,25 @@ export class Console extends HeyApiClient {
args: [
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
+ { in: "query", key: "provider" },
+ { in: "query", key: "model" },
],
},
],
)
- return (options?.client ?? this.client).get<ExperimentalConsoleGetResponses, unknown, ThrowOnError>({
- url: "/experimental/console",
+ return (options?.client ?? this.client).get<ToolListResponses, ToolListErrors, ThrowOnError>({
+ url: "/experimental/tool",
...options,
...params,
})
}
/**
- * List switchable Console orgs
+ * List tool IDs
*
- * Get the available Console orgs across logged-in accounts, including the current active org.
+ * Get a list of all available tool IDs, including both built-in tools and dynamically registered tools.
*/
- public listOrgs<ThrowOnError extends boolean = false>(
+ public ids<ThrowOnError extends boolean = false>(
parameters?: {
directory?: string
workspace?: string
@@ -791,24 +1135,25 @@ export class Console extends HeyApiClient {
},
],
)
- return (options?.client ?? this.client).get<ExperimentalConsoleListOrgsResponses, unknown, ThrowOnError>({
- url: "/experimental/console/orgs",
+ return (options?.client ?? this.client).get<ToolIdsResponses, ToolIdsErrors, ThrowOnError>({
+ url: "/experimental/tool/ids",
...options,
...params,
})
}
+}
+export class Worktree extends HeyApiClient {
/**
- * Switch active Console org
+ * Remove worktree
*
- * Persist a new active Console account/org selection for the current local OpenCode state.
+ * Remove a git worktree and delete its branch.
*/
- public switchOrg<ThrowOnError extends boolean = false>(
+ public remove<ThrowOnError extends boolean = false>(
parameters?: {
directory?: string
workspace?: string
- accountID?: string
- orgID?: string
+ worktreeRemoveInput?: WorktreeRemoveInput
},
options?: Options<never, ThrowOnError>,
) {
@@ -819,14 +1164,13 @@ export class Console extends HeyApiClient {
args: [
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { in: "body", key: "accountID" },
- { in: "body", key: "orgID" },
+ { key: "worktreeRemoveInput", map: "body" },
],
},
],
)
- return (options?.client ?? this.client).post<ExperimentalConsoleSwitchOrgResponses, unknown, ThrowOnError>({
- url: "/experimental/console/switch",
+ return (options?.client ?? this.client).delete<WorktreeRemoveResponses, WorktreeRemoveErrors, ThrowOnError>({
+ url: "/experimental/worktree",
...options,
...params,
headers: {
@@ -836,24 +1180,16 @@ export class Console extends HeyApiClient {
},
})
}
-}
-export class Session extends HeyApiClient {
/**
- * List sessions
+ * List worktrees
*
- * Get a list of all OpenCode sessions across projects, sorted by most recently updated. Archived sessions are excluded by default.
+ * List all sandbox worktrees for the current project.
*/
public list<ThrowOnError extends boolean = false>(
parameters?: {
directory?: string
workspace?: string
- roots?: boolean | "true" | "false"
- start?: number
- cursor?: number
- search?: string
- limit?: number
- archived?: boolean | "true" | "false"
},
options?: Options<never, ThrowOnError>,
) {
@@ -864,34 +1200,27 @@ export class Session extends HeyApiClient {
args: [
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { in: "query", key: "roots" },
- { in: "query", key: "start" },
- { in: "query", key: "cursor" },
- { in: "query", key: "search" },
- { in: "query", key: "limit" },
- { in: "query", key: "archived" },
],
},
],
)
- return (options?.client ?? this.client).get<ExperimentalSessionListResponses, unknown, ThrowOnError>({
- url: "/experimental/session",
+ return (options?.client ?? this.client).get<WorktreeListResponses, unknown, ThrowOnError>({
+ url: "/experimental/worktree",
...options,
...params,
})
}
-}
-export class Resource extends HeyApiClient {
/**
- * Get MCP resources
+ * Create worktree
*
- * Get all available MCP resources from connected servers. Optionally filter by name.
+ * Create a new git worktree for the current project and run any configured startup scripts.
*/
- public list<ThrowOnError extends boolean = false>(
+ public create<ThrowOnError extends boolean = false>(
parameters?: {
directory?: string
workspace?: string
+ worktreeCreateInput?: WorktreeCreateInput
},
options?: Options<never, ThrowOnError>,
) {
@@ -902,50 +1231,33 @@ export class Resource extends HeyApiClient {
args: [
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
+ { key: "worktreeCreateInput", map: "body" },
],
},
],
)
- return (options?.client ?? this.client).get<ExperimentalResourceListResponses, unknown, ThrowOnError>({
- url: "/experimental/resource",
+ return (options?.client ?? this.client).post<WorktreeCreateResponses, WorktreeCreateErrors, ThrowOnError>({
+ url: "/experimental/worktree",
...options,
...params,
+ headers: {
+ "Content-Type": "application/json",
+ ...options?.headers,
+ ...params.headers,
+ },
})
}
-}
-
-export class Experimental extends HeyApiClient {
- private _workspace?: Workspace
- get workspace(): Workspace {
- return (this._workspace ??= new Workspace({ client: this.client }))
- }
-
- private _console?: Console
- get console(): Console {
- return (this._console ??= new Console({ client: this.client }))
- }
-
- private _session?: Session
- get session(): Session {
- return (this._session ??= new Session({ client: this.client }))
- }
- private _resource?: Resource
- get resource(): Resource {
- return (this._resource ??= new Resource({ client: this.client }))
- }
-}
-
-export class Project extends HeyApiClient {
/**
- * List all projects
+ * Reset worktree
*
- * Get a list of projects that have been opened with OpenCode.
+ * Reset a worktree branch to the primary default branch.
*/
- public list<ThrowOnError extends boolean = false>(
+ public reset<ThrowOnError extends boolean = false>(
parameters?: {
directory?: string
workspace?: string
+ worktreeResetInput?: WorktreeResetInput
},
options?: Options<never, ThrowOnError>,
) {
@@ -956,26 +1268,35 @@ export class Project extends HeyApiClient {
args: [
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
+ { key: "worktreeResetInput", map: "body" },
],
},
],
)
- return (options?.client ?? this.client).get<ProjectListResponses, unknown, ThrowOnError>({
- url: "/project",
+ return (options?.client ?? this.client).post<WorktreeResetResponses, WorktreeResetErrors, ThrowOnError>({
+ url: "/experimental/worktree/reset",
...options,
...params,
+ headers: {
+ "Content-Type": "application/json",
+ ...options?.headers,
+ ...params.headers,
+ },
})
}
+}
+export class Find extends HeyApiClient {
/**
- * Get current project
+ * Find text
*
- * Retrieve the currently active project that OpenCode is working with.
+ * Search for text patterns across files in the project using ripgrep.
*/
- public current<ThrowOnError extends boolean = false>(
- parameters?: {
+ public text<ThrowOnError extends boolean = false>(
+ parameters: {
directory?: string
workspace?: string
+ pattern: string
},
options?: Options<never, ThrowOnError>,
) {
@@ -986,26 +1307,31 @@ export class Project extends HeyApiClient {
args: [
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
+ { in: "query", key: "pattern" },
],
},
],
)
- return (options?.client ?? this.client).get<ProjectCurrentResponses, unknown, ThrowOnError>({
- url: "/project/current",
+ return (options?.client ?? this.client).get<FindTextResponses, unknown, ThrowOnError>({
+ url: "/find",
...options,
...params,
})
}
/**
- * Initialize git repository
+ * Find files
*
- * Create a git repository for the current project and return the refreshed project info.
+ * Search for files or directories by name or pattern in the project directory.
*/
- public initGit<ThrowOnError extends boolean = false>(
- parameters?: {
+ public files<ThrowOnError extends boolean = false>(
+ parameters: {
directory?: string
workspace?: string
+ query: string
+ dirs?: "true" | "false"
+ type?: "file" | "directory"
+ limit?: number
},
options?: Options<never, ThrowOnError>,
) {
@@ -1016,39 +1342,31 @@ export class Project extends HeyApiClient {
args: [
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
+ { in: "query", key: "query" },
+ { in: "query", key: "dirs" },
+ { in: "query", key: "type" },
+ { in: "query", key: "limit" },
],
},
],
)
- return (options?.client ?? this.client).post<ProjectInitGitResponses, unknown, ThrowOnError>({
- url: "/project/git/init",
+ return (options?.client ?? this.client).get<FindFilesResponses, unknown, ThrowOnError>({
+ url: "/find/file",
...options,
...params,
})
}
/**
- * Update project
+ * Find symbols
*
- * Update project properties such as name, icon, and commands.
+ * Search for workspace symbols like functions, classes, and variables using LSP.
*/
- public update<ThrowOnError extends boolean = false>(
+ public symbols<ThrowOnError extends boolean = false>(
parameters: {
- projectID: string
directory?: string
workspace?: string
- name?: string
- icon?: {
- url?: string
- override?: string
- color?: string
- }
- commands?: {
- /**
- * Startup script to run when creating a new workspace (worktree)
- */
- start?: string
- }
+ query: string
},
options?: Options<never, ThrowOnError>,
) {
@@ -1057,39 +1375,32 @@ export class Project extends HeyApiClient {
[
{
args: [
- { in: "path", key: "projectID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { in: "body", key: "name" },
- { in: "body", key: "icon" },
- { in: "body", key: "commands" },
+ { in: "query", key: "query" },
],
},
],
)
- return (options?.client ?? this.client).patch<ProjectUpdateResponses, ProjectUpdateErrors, ThrowOnError>({
- url: "/project/{projectID}",
+ return (options?.client ?? this.client).get<FindSymbolsResponses, unknown, ThrowOnError>({
+ url: "/find/symbol",
...options,
...params,
- headers: {
- "Content-Type": "application/json",
- ...options?.headers,
- ...params.headers,
- },
})
}
}
-export class Pty extends HeyApiClient {
+export class File extends HeyApiClient {
/**
- * List available shells
+ * List files
*
- * Get a list of available shells on the system.
+ * List files and directories in a specified path.
*/
- public shells<ThrowOnError extends boolean = false>(
- parameters?: {
+ public list<ThrowOnError extends boolean = false>(
+ parameters: {
directory?: string
workspace?: string
+ path: string
},
options?: Options<never, ThrowOnError>,
) {
@@ -1100,26 +1411,28 @@ export class Pty extends HeyApiClient {
args: [
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
+ { in: "query", key: "path" },
],
},
],
)
- return (options?.client ?? this.client).get<PtyShellsResponses, unknown, ThrowOnError>({
- url: "/pty/shells",
+ return (options?.client ?? this.client).get<FileListResponses, unknown, ThrowOnError>({
+ url: "/file",
...options,
...params,
})
}
/**
- * List PTY sessions
+ * Read file
*
- * Get a list of all active pseudo-terminal (PTY) sessions managed by OpenCode.
+ * Read the content of a specified file.
*/
- public list<ThrowOnError extends boolean = false>(
- parameters?: {
+ public read<ThrowOnError extends boolean = false>(
+ parameters: {
directory?: string
workspace?: string
+ path: string
},
options?: Options<never, ThrowOnError>,
) {
@@ -1130,33 +1443,27 @@ export class Pty extends HeyApiClient {
args: [
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
+ { in: "query", key: "path" },
],
},
],
)
- return (options?.client ?? this.client).get<PtyListResponses, unknown, ThrowOnError>({
- url: "/pty",
+ return (options?.client ?? this.client).get<FileReadResponses, unknown, ThrowOnError>({
+ url: "/file/content",
...options,
...params,
})
}
/**
- * Create PTY session
+ * Get file status
*
- * Create a new pseudo-terminal (PTY) session for running shell commands and processes.
+ * Get the git status of all files in the project.
*/
- public create<ThrowOnError extends boolean = false>(
+ public status<ThrowOnError extends boolean = false>(
parameters?: {
directory?: string
workspace?: string
- command?: string
- args?: Array<string>
- cwd?: string
- title?: string
- env?: {
- [key: string]: string
- }
},
options?: Options<never, ThrowOnError>,
) {
@@ -1167,35 +1474,26 @@ export class Pty extends HeyApiClient {
args: [
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { in: "body", key: "command" },
- { in: "body", key: "args" },
- { in: "body", key: "cwd" },
- { in: "body", key: "title" },
- { in: "body", key: "env" },
],
},
],
)
- return (options?.client ?? this.client).post<PtyCreateResponses, PtyCreateErrors, ThrowOnError>({
- url: "/pty",
+ return (options?.client ?? this.client).get<FileStatusResponses, unknown, ThrowOnError>({
+ url: "/file/status",
...options,
...params,
- headers: {
- "Content-Type": "application/json",
- ...options?.headers,
- ...params.headers,
- },
})
}
+}
+export class Instance extends HeyApiClient {
/**
- * Remove PTY session
+ * Dispose instance
*
- * Remove and terminate a specific pseudo-terminal (PTY) session.
+ * Clean up and dispose the current OpenCode instance, releasing all resources.
*/
- public remove<ThrowOnError extends boolean = false>(
- parameters: {
- ptyID: string
+ public dispose<ThrowOnError extends boolean = false>(
+ parameters?: {
directory?: string
workspace?: string
},
@@ -1206,28 +1504,28 @@ export class Pty extends HeyApiClient {
[
{
args: [
- { in: "path", key: "ptyID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
],
},
],
)
- return (options?.client ?? this.client).delete<PtyRemoveResponses, PtyRemoveErrors, ThrowOnError>({
- url: "/pty/{ptyID}",
+ return (options?.client ?? this.client).post<InstanceDisposeResponses, unknown, ThrowOnError>({
+ url: "/instance/dispose",
...options,
...params,
})
}
+}
+export class Path extends HeyApiClient {
/**
- * Get PTY session
+ * Get paths
*
- * Retrieve detailed information about a specific pseudo-terminal (PTY) session.
+ * Retrieve the current working directory and related path information for the OpenCode instance.
*/
public get<ThrowOnError extends boolean = false>(
- parameters: {
- ptyID: string
+ parameters?: {
directory?: string
workspace?: string
},
@@ -1238,35 +1536,30 @@ export class Pty extends HeyApiClient {
[
{
args: [
- { in: "path", key: "ptyID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
],
},
],
)
- return (options?.client ?? this.client).get<PtyGetResponses, PtyGetErrors, ThrowOnError>({
- url: "/pty/{ptyID}",
+ return (options?.client ?? this.client).get<PathGetResponses, unknown, ThrowOnError>({
+ url: "/path",
...options,
...params,
})
}
+}
+export class Vcs extends HeyApiClient {
/**
- * Update PTY session
+ * Get VCS info
*
- * Update properties of an existing pseudo-terminal (PTY) session.
+ * Retrieve version control system (VCS) information for the current project, such as git branch.
*/
- public update<ThrowOnError extends boolean = false>(
- parameters: {
- ptyID: string
+ public get<ThrowOnError extends boolean = false>(
+ parameters?: {
directory?: string
workspace?: string
- title?: string
- size?: {
- rows: number
- cols: number
- }
},
options?: Options<never, ThrowOnError>,
) {
@@ -1275,37 +1568,29 @@ export class Pty extends HeyApiClient {
[
{
args: [
- { in: "path", key: "ptyID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { in: "body", key: "title" },
- { in: "body", key: "size" },
],
},
],
)
- return (options?.client ?? this.client).put<PtyUpdateResponses, PtyUpdateErrors, ThrowOnError>({
- url: "/pty/{ptyID}",
+ return (options?.client ?? this.client).get<VcsGetResponses, unknown, ThrowOnError>({
+ url: "/vcs",
...options,
...params,
- headers: {
- "Content-Type": "application/json",
- ...options?.headers,
- ...params.headers,
- },
})
}
/**
- * Connect to PTY session
+ * Get VCS diff
*
- * Establish a WebSocket connection to interact with a pseudo-terminal (PTY) session in real-time.
+ * Retrieve the current git diff for the working tree or against the default branch.
*/
- public connect<ThrowOnError extends boolean = false>(
+ public diff<ThrowOnError extends boolean = false>(
parameters: {
- ptyID: string
directory?: string
workspace?: string
+ mode: "git" | "branch"
},
options?: Options<never, ThrowOnError>,
) {
@@ -1314,28 +1599,28 @@ export class Pty extends HeyApiClient {
[
{
args: [
- { in: "path", key: "ptyID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
+ { in: "query", key: "mode" },
],
},
],
)
- return (options?.client ?? this.client).get<PtyConnectResponses, PtyConnectErrors, ThrowOnError>({
- url: "/pty/{ptyID}/connect",
+ return (options?.client ?? this.client).get<VcsDiffResponses, unknown, ThrowOnError>({
+ url: "/vcs/diff",
...options,
...params,
})
}
}
-export class Config2 extends HeyApiClient {
+export class Command extends HeyApiClient {
/**
- * Get configuration
+ * List commands
*
- * Retrieve the current OpenCode configuration settings and preferences.
+ * Get a list of all available commands in the OpenCode system.
*/
- public get<ThrowOnError extends boolean = false>(
+ public list<ThrowOnError extends boolean = false>(
parameters?: {
directory?: string
workspace?: string
@@ -1353,23 +1638,24 @@ export class Config2 extends HeyApiClient {
},
],
)
- return (options?.client ?? this.client).get<ConfigGetResponses, unknown, ThrowOnError>({
- url: "/config",
+ return (options?.client ?? this.client).get<CommandListResponses, unknown, ThrowOnError>({
+ url: "/command",
...options,
...params,
})
}
+}
+export class Lsp extends HeyApiClient {
/**
- * Update configuration
+ * Get LSP status
*
- * Update OpenCode configuration settings and preferences.
+ * Get LSP server status
*/
- public update<ThrowOnError extends boolean = false>(
+ public status<ThrowOnError extends boolean = false>(
parameters?: {
directory?: string
workspace?: string
- config?: Config3
},
options?: Options<never, ThrowOnError>,
) {
@@ -1380,29 +1666,25 @@ export class Config2 extends HeyApiClient {
args: [
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { key: "config", map: "body" },
],
},
],
)
- return (options?.client ?? this.client).patch<ConfigUpdateResponses, ConfigUpdateErrors, ThrowOnError>({
- url: "/config",
+ return (options?.client ?? this.client).get<LspStatusResponses, unknown, ThrowOnError>({
+ url: "/lsp",
...options,
...params,
- headers: {
- "Content-Type": "application/json",
- ...options?.headers,
- ...params.headers,
- },
})
}
+}
+export class Formatter extends HeyApiClient {
/**
- * List config providers
+ * Get formatter status
*
- * Get a list of all configured AI providers and their default models.
+ * Get formatter status
*/
- public providers<ThrowOnError extends boolean = false>(
+ public status<ThrowOnError extends boolean = false>(
parameters?: {
directory?: string
workspace?: string
@@ -1420,22 +1702,23 @@ export class Config2 extends HeyApiClient {
},
],
)
- return (options?.client ?? this.client).get<ConfigProvidersResponses, unknown, ThrowOnError>({
- url: "/config/providers",
+ return (options?.client ?? this.client).get<FormatterStatusResponses, unknown, ThrowOnError>({
+ url: "/formatter",
...options,
...params,
})
}
}
-export class Tool extends HeyApiClient {
+export class Auth2 extends HeyApiClient {
/**
- * List tool IDs
+ * Remove MCP OAuth
*
- * Get a list of all available tool IDs, including both built-in tools and dynamically registered tools.
+ * Remove OAuth credentials for an MCP server.
*/
- public ids<ThrowOnError extends boolean = false>(
- parameters?: {
+ public remove<ThrowOnError extends boolean = false>(
+ parameters: {
+ name: string
directory?: string
workspace?: string
},
@@ -1446,30 +1729,30 @@ export class Tool extends HeyApiClient {
[
{
args: [
+ { in: "path", key: "name" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
],
},
],
)
- return (options?.client ?? this.client).get<ToolIdsResponses, ToolIdsErrors, ThrowOnError>({
- url: "/experimental/tool/ids",
+ return (options?.client ?? this.client).delete<McpAuthRemoveResponses, McpAuthRemoveErrors, ThrowOnError>({
+ url: "/mcp/{name}/auth",
...options,
...params,
})
}
/**
- * List tools
+ * Start MCP OAuth
*
- * Get a list of available tools with their JSON schema parameters for a specific provider and model combination.
+ * Start OAuth authentication flow for a Model Context Protocol (MCP) server.
*/
- public list<ThrowOnError extends boolean = false>(
+ public start<ThrowOnError extends boolean = false>(
parameters: {
+ name: string
directory?: string
workspace?: string
- provider: string
- model: string
},
options?: Options<never, ThrowOnError>,
) {
@@ -1478,33 +1761,31 @@ export class Tool extends HeyApiClient {
[
{
args: [
+ { in: "path", key: "name" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { in: "query", key: "provider" },
- { in: "query", key: "model" },
],
},
],
)
- return (options?.client ?? this.client).get<ToolListResponses, ToolListErrors, ThrowOnError>({
- url: "/experimental/tool",
+ return (options?.client ?? this.client).post<McpAuthStartResponses, McpAuthStartErrors, ThrowOnError>({
+ url: "/mcp/{name}/auth",
...options,
...params,
})
}
-}
-export class Worktree extends HeyApiClient {
/**
- * Remove worktree
+ * Complete MCP OAuth
*
- * Remove a git worktree and delete its branch.
+ * Complete OAuth authentication for a Model Context Protocol (MCP) server using the authorization code.
*/
- public remove<ThrowOnError extends boolean = false>(
- parameters?: {
+ public callback<ThrowOnError extends boolean = false>(
+ parameters: {
+ name: string
directory?: string
workspace?: string
- worktreeRemoveInput?: WorktreeRemoveInput
+ code?: string
},
options?: Options<never, ThrowOnError>,
) {
@@ -1513,15 +1794,16 @@ export class Worktree extends HeyApiClient {
[
{
args: [
+ { in: "path", key: "name" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { key: "worktreeRemoveInput", map: "body" },
+ { in: "body", key: "code" },
],
},
],
)
- return (options?.client ?? this.client).delete<WorktreeRemoveResponses, WorktreeRemoveErrors, ThrowOnError>({
- url: "/experimental/worktree",
+ return (options?.client ?? this.client).post<McpAuthCallbackResponses, McpAuthCallbackErrors, ThrowOnError>({
+ url: "/mcp/{name}/auth/callback",
...options,
...params,
headers: {
@@ -1533,11 +1815,47 @@ export class Worktree extends HeyApiClient {
}
/**
- * List worktrees
+ * Authenticate MCP OAuth
*
- * List all sandbox worktrees for the current project.
+ * Start OAuth flow and wait for callback (opens browser).
*/
- public list<ThrowOnError extends boolean = false>(
+ public authenticate<ThrowOnError extends boolean = false>(
+ parameters: {
+ name: string
+ directory?: string
+ workspace?: string
+ },
+ options?: Options<never, ThrowOnError>,
+ ) {
+ const params = buildClientParams(
+ [parameters],
+ [
+ {
+ args: [
+ { in: "path", key: "name" },
+ { in: "query", key: "directory" },
+ { in: "query", key: "workspace" },
+ ],
+ },
+ ],
+ )
+ return (options?.client ?? this.client).post<McpAuthAuthenticateResponses, McpAuthAuthenticateErrors, ThrowOnError>(
+ {
+ url: "/mcp/{name}/auth/authenticate",
+ ...options,
+ ...params,
+ },
+ )
+ }
+}
+
+export class Mcp extends HeyApiClient {
+ /**
+ * Get MCP status
+ *
+ * Get the status of all Model Context Protocol (MCP) servers.
+ */
+ public status<ThrowOnError extends boolean = false>(
parameters?: {
directory?: string
workspace?: string
@@ -1555,23 +1873,24 @@ export class Worktree extends HeyApiClient {
},
],
)
- return (options?.client ?? this.client).get<WorktreeListResponses, unknown, ThrowOnError>({
- url: "/experimental/worktree",
+ return (options?.client ?? this.client).get<McpStatusResponses, unknown, ThrowOnError>({
+ url: "/mcp",
...options,
...params,
})
}
/**
- * Create worktree
+ * Add MCP server
*
- * Create a new git worktree for the current project and run any configured startup scripts.
+ * Dynamically add a new Model Context Protocol (MCP) server to the system.
*/
- public create<ThrowOnError extends boolean = false>(
+ public add<ThrowOnError extends boolean = false>(
parameters?: {
directory?: string
workspace?: string
- worktreeCreateInput?: WorktreeCreateInput
+ name?: string
+ config?: McpLocalConfig | McpRemoteConfig
},
options?: Options<never, ThrowOnError>,
) {
@@ -1582,13 +1901,14 @@ export class Worktree extends HeyApiClient {
args: [
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { key: "worktreeCreateInput", map: "body" },
+ { in: "body", key: "name" },
+ { in: "body", key: "config" },
],
},
],
)
- return (options?.client ?? this.client).post<WorktreeCreateResponses, WorktreeCreateErrors, ThrowOnError>({
- url: "/experimental/worktree",
+ return (options?.client ?? this.client).post<McpAddResponses, McpAddErrors, ThrowOnError>({
+ url: "/mcp",
...options,
...params,
headers: {
@@ -1600,15 +1920,13 @@ export class Worktree extends HeyApiClient {
}
/**
- * Reset worktree
- *
- * Reset a worktree branch to the primary default branch.
+ * Connect an MCP server.
*/
- public reset<ThrowOnError extends boolean = false>(
- parameters?: {
+ public connect<ThrowOnError extends boolean = false>(
+ parameters: {
+ name: string
directory?: string
workspace?: string
- worktreeResetInput?: WorktreeResetInput
},
options?: Options<never, ThrowOnError>,
) {
@@ -1617,42 +1935,66 @@ export class Worktree extends HeyApiClient {
[
{
args: [
+ { in: "path", key: "name" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { key: "worktreeResetInput", map: "body" },
],
},
],
)
- return (options?.client ?? this.client).post<WorktreeResetResponses, WorktreeResetErrors, ThrowOnError>({
- url: "/experimental/worktree/reset",
+ return (options?.client ?? this.client).post<McpConnectResponses, unknown, ThrowOnError>({
+ url: "/mcp/{name}/connect",
+ ...options,
+ ...params,
+ })
+ }
+
+ /**
+ * Disconnect an MCP server.
+ */
+ public disconnect<ThrowOnError extends boolean = false>(
+ parameters: {
+ name: string
+ directory?: string
+ workspace?: string
+ },
+ options?: Options<never, ThrowOnError>,
+ ) {
+ const params = buildClientParams(
+ [parameters],
+ [
+ {
+ args: [
+ { in: "path", key: "name" },
+ { in: "query", key: "directory" },
+ { in: "query", key: "workspace" },
+ ],
+ },
+ ],
+ )
+ return (options?.client ?? this.client).post<McpDisconnectResponses, unknown, ThrowOnError>({
+ url: "/mcp/{name}/disconnect",
...options,
...params,
- headers: {
- "Content-Type": "application/json",
- ...options?.headers,
- ...params.headers,
- },
})
}
+
+ private _auth?: Auth2
+ get auth(): Auth2 {
+ return (this._auth ??= new Auth2({ client: this.client }))
+ }
}
-export class Session2 extends HeyApiClient {
+export class Project extends HeyApiClient {
/**
- * List sessions
+ * List all projects
*
- * Get a list of all OpenCode sessions, sorted by most recently updated.
+ * Get a list of projects that have been opened with OpenCode.
*/
public list<ThrowOnError extends boolean = false>(
parameters?: {
directory?: string
workspace?: string
- scope?: "project"
- path?: string
- roots?: boolean | "true" | "false"
- start?: number
- search?: string
- limit?: number
},
options?: Options<never, ThrowOnError>,
) {
@@ -1663,36 +2005,26 @@ export class Session2 extends HeyApiClient {
args: [
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { in: "query", key: "scope" },
- { in: "query", key: "path" },
- { in: "query", key: "roots" },
- { in: "query", key: "start" },
- { in: "query", key: "search" },
- { in: "query", key: "limit" },
],
},
],
)
- return (options?.client ?? this.client).get<SessionListResponses, unknown, ThrowOnError>({
- url: "/session",
+ return (options?.client ?? this.client).get<ProjectListResponses, unknown, ThrowOnError>({
+ url: "/project",
...options,
...params,
})
}
/**
- * Create session
+ * Get current project
*
- * Create a new OpenCode session for interacting with AI assistants and managing conversations.
+ * Retrieve the currently active project that OpenCode is working with.
*/
- public create<ThrowOnError extends boolean = false>(
+ public current<ThrowOnError extends boolean = false>(
parameters?: {
directory?: string
workspace?: string
- parentID?: string
- title?: string
- permission?: PermissionRuleset
- workspaceID?: string
},
options?: Options<never, ThrowOnError>,
) {
@@ -1703,32 +2035,23 @@ export class Session2 extends HeyApiClient {
args: [
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { in: "body", key: "parentID" },
- { in: "body", key: "title" },
- { in: "body", key: "permission" },
- { in: "body", key: "workspaceID" },
],
},
],
)
- return (options?.client ?? this.client).post<SessionCreateResponses, SessionCreateErrors, ThrowOnError>({
- url: "/session",
+ return (options?.client ?? this.client).get<ProjectCurrentResponses, unknown, ThrowOnError>({
+ url: "/project/current",
...options,
...params,
- headers: {
- "Content-Type": "application/json",
- ...options?.headers,
- ...params.headers,
- },
})
}
/**
- * Get session status
+ * Initialize git repository
*
- * Retrieve the current status of all sessions, including active, idle, and completed states.
+ * Create a git repository for the current project and return the refreshed project info.
*/
- public status<ThrowOnError extends boolean = false>(
+ public initGit<ThrowOnError extends boolean = false>(
parameters?: {
directory?: string
workspace?: string
@@ -1746,23 +2069,35 @@ export class Session2 extends HeyApiClient {
},
],
)
- return (options?.client ?? this.client).get<SessionStatusResponses, SessionStatusErrors, ThrowOnError>({
- url: "/session/status",
+ return (options?.client ?? this.client).post<ProjectInitGitResponses, unknown, ThrowOnError>({
+ url: "/project/git/init",
...options,
...params,
})
}
/**
- * Delete session
+ * Update project
*
- * Delete a session and permanently remove all associated data, including messages and history.
+ * Update project properties such as name, icon, and commands.
*/
- public delete<ThrowOnError extends boolean = false>(
+ public update<ThrowOnError extends boolean = false>(
parameters: {
- sessionID: string
+ projectID: string
directory?: string
workspace?: string
+ name?: string
+ icon?: {
+ url?: string
+ override?: string
+ color?: string
+ }
+ commands?: {
+ /**
+ * Startup script to run when creating a new workspace (worktree)
+ */
+ start?: string
+ }
},
options?: Options<never, ThrowOnError>,
) {
@@ -1771,28 +2106,37 @@ export class Session2 extends HeyApiClient {
[
{
args: [
- { in: "path", key: "sessionID" },
+ { in: "path", key: "projectID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
+ { in: "body", key: "name" },
+ { in: "body", key: "icon" },
+ { in: "body", key: "commands" },
],
},
],
)
- return (options?.client ?? this.client).delete<SessionDeleteResponses, SessionDeleteErrors, ThrowOnError>({
- url: "/session/{sessionID}",
+ return (options?.client ?? this.client).patch<ProjectUpdateResponses, ProjectUpdateErrors, ThrowOnError>({
+ url: "/project/{projectID}",
...options,
...params,
+ headers: {
+ "Content-Type": "application/json",
+ ...options?.headers,
+ ...params.headers,
+ },
})
}
+}
+export class Pty extends HeyApiClient {
/**
- * Get session
+ * List available shells
*
- * Retrieve detailed information about a specific OpenCode session.
+ * Get a list of available shells on the system.
*/
- public get<ThrowOnError extends boolean = false>(
- parameters: {
- sessionID: string
+ public shells<ThrowOnError extends boolean = false>(
+ parameters?: {
directory?: string
workspace?: string
},
@@ -1803,34 +2147,64 @@ export class Session2 extends HeyApiClient {
[
{
args: [
- { in: "path", key: "sessionID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
],
},
],
)
- return (options?.client ?? this.client).get<SessionGetResponses, SessionGetErrors, ThrowOnError>({
- url: "/session/{sessionID}",
+ return (options?.client ?? this.client).get<PtyShellsResponses, unknown, ThrowOnError>({
+ url: "/pty/shells",
...options,
...params,
})
}
/**
- * Update session
+ * List PTY sessions
*
- * Update properties of an existing session, such as title or other metadata.
+ * Get a list of all active pseudo-terminal (PTY) sessions managed by OpenCode.
*/
- public update<ThrowOnError extends boolean = false>(
- parameters: {
- sessionID: string
+ public list<ThrowOnError extends boolean = false>(
+ parameters?: {
directory?: string
workspace?: string
+ },
+ options?: Options<never, ThrowOnError>,
+ ) {
+ const params = buildClientParams(
+ [parameters],
+ [
+ {
+ args: [
+ { in: "query", key: "directory" },
+ { in: "query", key: "workspace" },
+ ],
+ },
+ ],
+ )
+ return (options?.client ?? this.client).get<PtyListResponses, unknown, ThrowOnError>({
+ url: "/pty",
+ ...options,
+ ...params,
+ })
+ }
+
+ /**
+ * Create PTY session
+ *
+ * Create a new pseudo-terminal (PTY) session for running shell commands and processes.
+ */
+ public create<ThrowOnError extends boolean = false>(
+ parameters?: {
+ directory?: string
+ workspace?: string
+ command?: string
+ args?: Array<string>
+ cwd?: string
title?: string
- permission?: PermissionRuleset
- time?: {
- archived?: number
+ env?: {
+ [key: string]: string
}
},
options?: Options<never, ThrowOnError>,
@@ -1840,18 +2214,19 @@ export class Session2 extends HeyApiClient {
[
{
args: [
- { in: "path", key: "sessionID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
+ { in: "body", key: "command" },
+ { in: "body", key: "args" },
+ { in: "body", key: "cwd" },
{ in: "body", key: "title" },
- { in: "body", key: "permission" },
- { in: "body", key: "time" },
+ { in: "body", key: "env" },
],
},
],
)
- return (options?.client ?? this.client).patch<SessionUpdateResponses, SessionUpdateErrors, ThrowOnError>({
- url: "/session/{sessionID}",
+ return (options?.client ?? this.client).post<PtyCreateResponses, PtyCreateErrors, ThrowOnError>({
+ url: "/pty",
...options,
...params,
headers: {
@@ -1863,13 +2238,13 @@ export class Session2 extends HeyApiClient {
}
/**
- * Get session children
+ * Remove PTY session
*
- * Retrieve all child sessions that were forked from the specified parent session.
+ * Remove and terminate a specific pseudo-terminal (PTY) session.
*/
- public children<ThrowOnError extends boolean = false>(
+ public remove<ThrowOnError extends boolean = false>(
parameters: {
- sessionID: string
+ ptyID: string
directory?: string
workspace?: string
},
@@ -1880,28 +2255,28 @@ export class Session2 extends HeyApiClient {
[
{
args: [
- { in: "path", key: "sessionID" },
+ { in: "path", key: "ptyID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
],
},
],
)
- return (options?.client ?? this.client).get<SessionChildrenResponses, SessionChildrenErrors, ThrowOnError>({
- url: "/session/{sessionID}/children",
+ return (options?.client ?? this.client).delete<PtyRemoveResponses, PtyRemoveErrors, ThrowOnError>({
+ url: "/pty/{ptyID}",
...options,
...params,
})
}
/**
- * Get session todos
+ * Get PTY session
*
- * Retrieve the todo list associated with a specific session, showing tasks and action items.
+ * Retrieve detailed information about a specific pseudo-terminal (PTY) session.
*/
- public todo<ThrowOnError extends boolean = false>(
+ public get<ThrowOnError extends boolean = false>(
parameters: {
- sessionID: string
+ ptyID: string
directory?: string
workspace?: string
},
@@ -1912,33 +2287,35 @@ export class Session2 extends HeyApiClient {
[
{
args: [
- { in: "path", key: "sessionID" },
+ { in: "path", key: "ptyID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
],
},
],
)
- return (options?.client ?? this.client).get<SessionTodoResponses, SessionTodoErrors, ThrowOnError>({
- url: "/session/{sessionID}/todo",
+ return (options?.client ?? this.client).get<PtyGetResponses, PtyGetErrors, ThrowOnError>({
+ url: "/pty/{ptyID}",
...options,
...params,
})
}
/**
- * Initialize session
+ * Update PTY session
*
- * Analyze the current application and create an AGENTS.md file with project-specific agent configurations.
+ * Update properties of an existing pseudo-terminal (PTY) session.
*/
- public init<ThrowOnError extends boolean = false>(
+ public update<ThrowOnError extends boolean = false>(
parameters: {
- sessionID: string
+ ptyID: string
directory?: string
workspace?: string
- modelID?: string
- providerID?: string
- messageID?: string
+ title?: string
+ size?: {
+ rows: number
+ cols: number
+ }
},
options?: Options<never, ThrowOnError>,
) {
@@ -1947,18 +2324,17 @@ export class Session2 extends HeyApiClient {
[
{
args: [
- { in: "path", key: "sessionID" },
+ { in: "path", key: "ptyID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { in: "body", key: "modelID" },
- { in: "body", key: "providerID" },
- { in: "body", key: "messageID" },
+ { in: "body", key: "title" },
+ { in: "body", key: "size" },
],
},
],
)
- return (options?.client ?? this.client).post<SessionInitResponses, SessionInitErrors, ThrowOnError>({
- url: "/session/{sessionID}/init",
+ return (options?.client ?? this.client).put<PtyUpdateResponses, PtyUpdateErrors, ThrowOnError>({
+ url: "/pty/{ptyID}",
...options,
...params,
headers: {
@@ -1970,16 +2346,15 @@ export class Session2 extends HeyApiClient {
}
/**
- * Fork session
+ * Connect to PTY session
*
- * Create a new session by forking an existing session at a specific message point.
+ * Establish a WebSocket connection to interact with a pseudo-terminal (PTY) session in real-time.
*/
- public fork<ThrowOnError extends boolean = false>(
+ public connect<ThrowOnError extends boolean = false>(
parameters: {
- sessionID: string
+ ptyID: string
directory?: string
workspace?: string
- messageID?: string
},
options?: Options<never, ThrowOnError>,
) {
@@ -1988,34 +2363,29 @@ export class Session2 extends HeyApiClient {
[
{
args: [
- { in: "path", key: "sessionID" },
+ { in: "path", key: "ptyID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { in: "body", key: "messageID" },
],
},
],
)
- return (options?.client ?? this.client).post<SessionForkResponses, unknown, ThrowOnError>({
- url: "/session/{sessionID}/fork",
+ return (options?.client ?? this.client).get<PtyConnectResponses, PtyConnectErrors, ThrowOnError>({
+ url: "/pty/{ptyID}/connect",
...options,
...params,
- headers: {
- "Content-Type": "application/json",
- ...options?.headers,
- ...params.headers,
- },
})
}
+}
+export class Question extends HeyApiClient {
/**
- * Abort session
+ * List pending questions
*
- * Abort an active session and stop any ongoing AI processing or command execution.
+ * Get all pending question requests across all sessions.
*/
- public abort<ThrowOnError extends boolean = false>(
- parameters: {
- sessionID: string
+ public list<ThrowOnError extends boolean = false>(
+ parameters?: {
directory?: string
workspace?: string
},
@@ -2026,30 +2396,30 @@ export class Session2 extends HeyApiClient {
[
{
args: [
- { in: "path", key: "sessionID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
],
},
],
)
- return (options?.client ?? this.client).post<SessionAbortResponses, SessionAbortErrors, ThrowOnError>({
- url: "/session/{sessionID}/abort",
+ return (options?.client ?? this.client).get<QuestionListResponses, unknown, ThrowOnError>({
+ url: "/question",
...options,
...params,
})
}
/**
- * Unshare session
+ * Reply to question request
*
- * Remove the shareable link for a session, making it private again.
+ * Provide answers to a question request from the AI assistant.
*/
- public unshare<ThrowOnError extends boolean = false>(
+ public reply<ThrowOnError extends boolean = false>(
parameters: {
- sessionID: string
+ requestID: string
directory?: string
workspace?: string
+ answers?: Array<QuestionAnswer>
},
options?: Options<never, ThrowOnError>,
) {
@@ -2058,28 +2428,34 @@ export class Session2 extends HeyApiClient {
[
{
args: [
- { in: "path", key: "sessionID" },
+ { in: "path", key: "requestID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
+ { in: "body", key: "answers" },
],
},
],
)
- return (options?.client ?? this.client).delete<SessionUnshareResponses, SessionUnshareErrors, ThrowOnError>({
- url: "/session/{sessionID}/share",
+ return (options?.client ?? this.client).post<QuestionReplyResponses, QuestionReplyErrors, ThrowOnError>({
+ url: "/question/{requestID}/reply",
...options,
...params,
+ headers: {
+ "Content-Type": "application/json",
+ ...options?.headers,
+ ...params.headers,
+ },
})
}
/**
- * Share session
+ * Reject question request
*
- * Create a shareable link for a session, allowing others to view the conversation.
+ * Reject a question request from the AI assistant.
*/
- public share<ThrowOnError extends boolean = false>(
+ public reject<ThrowOnError extends boolean = false>(
parameters: {
- sessionID: string
+ requestID: string
directory?: string
workspace?: string
},
@@ -2090,31 +2466,31 @@ export class Session2 extends HeyApiClient {
[
{
args: [
- { in: "path", key: "sessionID" },
+ { in: "path", key: "requestID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
],
},
],
)
- return (options?.client ?? this.client).post<SessionShareResponses, SessionShareErrors, ThrowOnError>({
- url: "/session/{sessionID}/share",
+ return (options?.client ?? this.client).post<QuestionRejectResponses, QuestionRejectErrors, ThrowOnError>({
+ url: "/question/{requestID}/reject",
...options,
...params,
})
}
+}
+export class Permission extends HeyApiClient {
/**
- * Get message diff
+ * List pending permissions
*
- * Get the file changes (diff) that resulted from a specific user message in the session.
+ * Get all pending permission requests across all sessions.
*/
- public diff<ThrowOnError extends boolean = false>(
- parameters: {
- sessionID: string
+ public list<ThrowOnError extends boolean = false>(
+ parameters?: {
directory?: string
workspace?: string
- messageID?: string
},
options?: Options<never, ThrowOnError>,
) {
@@ -2123,34 +2499,31 @@ export class Session2 extends HeyApiClient {
[
{
args: [
- { in: "path", key: "sessionID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { in: "query", key: "messageID" },
],
},
],
)
- return (options?.client ?? this.client).get<SessionDiffResponses, unknown, ThrowOnError>({
- url: "/session/{sessionID}/diff",
+ return (options?.client ?? this.client).get<PermissionListResponses, unknown, ThrowOnError>({
+ url: "/permission",
...options,
...params,
})
}
/**
- * Summarize session
+ * Respond to permission request
*
- * Generate a concise summary of the session using AI compaction to preserve key information.
+ * Approve or deny a permission request from the AI assistant.
*/
- public summarize<ThrowOnError extends boolean = false>(
+ public reply<ThrowOnError extends boolean = false>(
parameters: {
- sessionID: string
+ requestID: string
directory?: string
workspace?: string
- providerID?: string
- modelID?: string
- auto?: boolean
+ reply?: "once" | "always" | "reject"
+ message?: string
},
options?: Options<never, ThrowOnError>,
) {
@@ -2159,18 +2532,17 @@ export class Session2 extends HeyApiClient {
[
{
args: [
- { in: "path", key: "sessionID" },
+ { in: "path", key: "requestID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { in: "body", key: "providerID" },
- { in: "body", key: "modelID" },
- { in: "body", key: "auto" },
+ { in: "body", key: "reply" },
+ { in: "body", key: "message" },
],
},
],
)
- return (options?.client ?? this.client).post<SessionSummarizeResponses, SessionSummarizeErrors, ThrowOnError>({
- url: "/session/{sessionID}/summarize",
+ return (options?.client ?? this.client).post<PermissionReplyResponses, PermissionReplyErrors, ThrowOnError>({
+ url: "/permission/{requestID}/reply",
...options,
...params,
headers: {
@@ -2182,17 +2554,19 @@ export class Session2 extends HeyApiClient {
}
/**
- * Get session messages
+ * Respond to permission
*
- * Retrieve all messages in a session, including user prompts and AI responses.
+ * Approve or deny a permission request from the AI assistant.
+ *
+ * @deprecated
*/
- public messages<ThrowOnError extends boolean = false>(
+ public respond<ThrowOnError extends boolean = false>(
parameters: {
sessionID: string
+ permissionID: string
directory?: string
workspace?: string
- limit?: number
- before?: string
+ response?: "once" | "always" | "reject"
},
options?: Options<never, ThrowOnError>,
) {
@@ -2202,45 +2576,42 @@ export class Session2 extends HeyApiClient {
{
args: [
{ in: "path", key: "sessionID" },
+ { in: "path", key: "permissionID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { in: "query", key: "limit" },
- { in: "query", key: "before" },
+ { in: "body", key: "response" },
],
},
],
)
- return (options?.client ?? this.client).get<SessionMessagesResponses, SessionMessagesErrors, ThrowOnError>({
- url: "/session/{sessionID}/message",
+ return (options?.client ?? this.client).post<PermissionRespondResponses, PermissionRespondErrors, ThrowOnError>({
+ url: "/session/{sessionID}/permissions/{permissionID}",
...options,
...params,
+ headers: {
+ "Content-Type": "application/json",
+ ...options?.headers,
+ ...params.headers,
+ },
})
}
+}
+export class Oauth extends HeyApiClient {
/**
- * Send message
+ * Start OAuth authorization
*
- * Create and send a new message to a session, streaming the AI response.
+ * Start the OAuth authorization flow for a provider.
*/
- public prompt<ThrowOnError extends boolean = false>(
+ public authorize<ThrowOnError extends boolean = false>(
parameters: {
- sessionID: string
+ providerID: string
directory?: string
workspace?: string
- messageID?: string
- model?: {
- providerID: string
- modelID: string
- }
- agent?: string
- noReply?: boolean
- tools?: {
- [key: string]: boolean
+ method?: number
+ inputs?: {
+ [key: string]: string
}
- format?: OutputFormat
- system?: string
- variant?: string
- parts?: Array<TextPartInput | FilePartInput | AgentPartInput | SubtaskPartInput>
},
options?: Options<never, ThrowOnError>,
) {
@@ -2249,24 +2620,21 @@ export class Session2 extends HeyApiClient {
[
{
args: [
- { in: "path", key: "sessionID" },
+ { in: "path", key: "providerID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { in: "body", key: "messageID" },
- { in: "body", key: "model" },
- { in: "body", key: "agent" },
- { in: "body", key: "noReply" },
- { in: "body", key: "tools" },
- { in: "body", key: "format" },
- { in: "body", key: "system" },
- { in: "body", key: "variant" },
- { in: "body", key: "parts" },
+ { in: "body", key: "method" },
+ { in: "body", key: "inputs" },
],
},
],
)
- return (options?.client ?? this.client).post<SessionPromptResponses, SessionPromptErrors, ThrowOnError>({
- url: "/session/{sessionID}/message",
+ return (options?.client ?? this.client).post<
+ ProviderOauthAuthorizeResponses,
+ ProviderOauthAuthorizeErrors,
+ ThrowOnError
+ >({
+ url: "/provider/{providerID}/oauth/authorize",
...options,
...params,
headers: {
@@ -2278,16 +2646,17 @@ export class Session2 extends HeyApiClient {
}
/**
- * Delete message
+ * Handle OAuth callback
*
- * Permanently delete a specific message (and all of its parts) from a session. This does not revert any file changes that may have been made while processing the message.
+ * Handle the OAuth callback from a provider after user authorization.
*/
- public deleteMessage<ThrowOnError extends boolean = false>(
+ public callback<ThrowOnError extends boolean = false>(
parameters: {
- sessionID: string
- messageID: string
+ providerID: string
directory?: string
workspace?: string
+ method?: number
+ code?: string
},
options?: Options<never, ThrowOnError>,
) {
@@ -2296,34 +2665,40 @@ export class Session2 extends HeyApiClient {
[
{
args: [
- { in: "path", key: "sessionID" },
- { in: "path", key: "messageID" },
+ { in: "path", key: "providerID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
+ { in: "body", key: "method" },
+ { in: "body", key: "code" },
],
},
],
)
- return (options?.client ?? this.client).delete<
- SessionDeleteMessageResponses,
- SessionDeleteMessageErrors,
+ return (options?.client ?? this.client).post<
+ ProviderOauthCallbackResponses,
+ ProviderOauthCallbackErrors,
ThrowOnError
>({
- url: "/session/{sessionID}/message/{messageID}",
+ url: "/provider/{providerID}/oauth/callback",
...options,
...params,
+ headers: {
+ "Content-Type": "application/json",
+ ...options?.headers,
+ ...params.headers,
+ },
})
}
+}
+export class Provider extends HeyApiClient {
/**
- * Get message
+ * List providers
*
- * Retrieve a specific message from a session by its message ID.
+ * Get a list of all available AI providers, including both available and connected ones.
*/
- public message<ThrowOnError extends boolean = false>(
- parameters: {
- sessionID: string
- messageID: string
+ public list<ThrowOnError extends boolean = false>(
+ parameters?: {
directory?: string
workspace?: string
},
@@ -2334,45 +2709,28 @@ export class Session2 extends HeyApiClient {
[
{
args: [
- { in: "path", key: "sessionID" },
- { in: "path", key: "messageID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
],
},
],
)
- return (options?.client ?? this.client).get<SessionMessageResponses, SessionMessageErrors, ThrowOnError>({
- url: "/session/{sessionID}/message/{messageID}",
+ return (options?.client ?? this.client).get<ProviderListResponses, unknown, ThrowOnError>({
+ url: "/provider",
...options,
...params,
})
}
/**
- * Send async message
+ * Get provider auth methods
*
- * Create and send a new message to a session asynchronously, starting the session if needed and returning immediately.
+ * Retrieve available authentication methods for all AI providers.
*/
- public promptAsync<ThrowOnError extends boolean = false>(
- parameters: {
- sessionID: string
+ public auth<ThrowOnError extends boolean = false>(
+ parameters?: {
directory?: string
workspace?: string
- messageID?: string
- model?: {
- providerID: string
- modelID: string
- }
- agent?: string
- noReply?: boolean
- tools?: {
- [key: string]: boolean
- }
- format?: OutputFormat
- system?: string
- variant?: string
- parts?: Array<TextPartInput | FilePartInput | AgentPartInput | SubtaskPartInput>
},
options?: Options<never, ThrowOnError>,
) {
@@ -2381,58 +2739,41 @@ export class Session2 extends HeyApiClient {
[
{
args: [
- { in: "path", key: "sessionID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { in: "body", key: "messageID" },
- { in: "body", key: "model" },
- { in: "body", key: "agent" },
- { in: "body", key: "noReply" },
- { in: "body", key: "tools" },
- { in: "body", key: "format" },
- { in: "body", key: "system" },
- { in: "body", key: "variant" },
- { in: "body", key: "parts" },
],
},
],
)
- return (options?.client ?? this.client).post<SessionPromptAsyncResponses, SessionPromptAsyncErrors, ThrowOnError>({
- url: "/session/{sessionID}/prompt_async",
+ return (options?.client ?? this.client).get<ProviderAuthResponses, unknown, ThrowOnError>({
+ url: "/provider/auth",
...options,
...params,
- headers: {
- "Content-Type": "application/json",
- ...options?.headers,
- ...params.headers,
- },
})
}
+ private _oauth?: Oauth
+ get oauth(): Oauth {
+ return (this._oauth ??= new Oauth({ client: this.client }))
+ }
+}
+
+export class Session2 extends HeyApiClient {
/**
- * Send command
+ * List sessions
*
- * Send a new command to a session for execution by the AI assistant.
+ * Get a list of all OpenCode sessions, sorted by most recently updated.
*/
- public command<ThrowOnError extends boolean = false>(
- parameters: {
- sessionID: string
+ public list<ThrowOnError extends boolean = false>(
+ parameters?: {
directory?: string
workspace?: string
- messageID?: string
- agent?: string
- model?: string
- arguments?: string
- command?: string
- variant?: string
- parts?: Array<{
- id?: string
- type: "file"
- mime: string
- filename?: string
- url: string
- source?: FilePartSource
- }>
+ scope?: "project"
+ path?: string
+ roots?: boolean | "true" | "false"
+ start?: number
+ search?: string
+ limit?: number
},
options?: Options<never, ThrowOnError>,
) {
@@ -2441,49 +2782,44 @@ export class Session2 extends HeyApiClient {
[
{
args: [
- { in: "path", key: "sessionID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { in: "body", key: "messageID" },
- { in: "body", key: "agent" },
- { in: "body", key: "model" },
- { in: "body", key: "arguments" },
- { in: "body", key: "command" },
- { in: "body", key: "variant" },
- { in: "body", key: "parts" },
+ { in: "query", key: "scope" },
+ { in: "query", key: "path" },
+ { in: "query", key: "roots" },
+ { in: "query", key: "start" },
+ { in: "query", key: "search" },
+ { in: "query", key: "limit" },
],
},
],
)
- return (options?.client ?? this.client).post<SessionCommandResponses, SessionCommandErrors, ThrowOnError>({
- url: "/session/{sessionID}/command",
+ return (options?.client ?? this.client).get<SessionListResponses, unknown, ThrowOnError>({
+ url: "/session",
...options,
...params,
- headers: {
- "Content-Type": "application/json",
- ...options?.headers,
- ...params.headers,
- },
})
}
/**
- * Run shell command
+ * Create session
*
- * Execute a shell command within the session context and return the AI's response.
+ * Create a new OpenCode session for interacting with AI assistants and managing conversations.
*/
- public shell<ThrowOnError extends boolean = false>(
- parameters: {
- sessionID: string
+ public create<ThrowOnError extends boolean = false>(
+ parameters?: {
directory?: string
workspace?: string
- messageID?: string
+ parentID?: string
+ title?: string
agent?: string
model?: {
+ id: string
providerID: string
- modelID: string
+ variant?: string
}
- command?: string
+ permission?: PermissionRuleset
+ workspaceID?: string
},
options?: Options<never, ThrowOnError>,
) {
@@ -2492,19 +2828,20 @@ export class Session2 extends HeyApiClient {
[
{
args: [
- { in: "path", key: "sessionID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { in: "body", key: "messageID" },
+ { in: "body", key: "parentID" },
+ { in: "body", key: "title" },
{ in: "body", key: "agent" },
{ in: "body", key: "model" },
- { in: "body", key: "command" },
+ { in: "body", key: "permission" },
+ { in: "body", key: "workspaceID" },
],
},
],
)
- return (options?.client ?? this.client).post<SessionShellResponses, SessionShellErrors, ThrowOnError>({
- url: "/session/{sessionID}/shell",
+ return (options?.client ?? this.client).post<SessionCreateResponses, SessionCreateErrors, ThrowOnError>({
+ url: "/session",
...options,
...params,
headers: {
@@ -2516,17 +2853,14 @@ export class Session2 extends HeyApiClient {
}
/**
- * Revert message
+ * Get session status
*
- * Revert a specific message in a session, undoing its effects and restoring the previous state.
+ * Retrieve the current status of all sessions, including active, idle, and completed states.
*/
- public revert<ThrowOnError extends boolean = false>(
- parameters: {
- sessionID: string
+ public status<ThrowOnError extends boolean = false>(
+ parameters?: {
directory?: string
workspace?: string
- messageID?: string
- partID?: string
},
options?: Options<never, ThrowOnError>,
) {
@@ -2535,33 +2869,25 @@ export class Session2 extends HeyApiClient {
[
{
args: [
- { in: "path", key: "sessionID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { in: "body", key: "messageID" },
- { in: "body", key: "partID" },
],
},
],
)
- return (options?.client ?? this.client).post<SessionRevertResponses, SessionRevertErrors, ThrowOnError>({
- url: "/session/{sessionID}/revert",
+ return (options?.client ?? this.client).get<SessionStatusResponses, SessionStatusErrors, ThrowOnError>({
+ url: "/session/status",
...options,
...params,
- headers: {
- "Content-Type": "application/json",
- ...options?.headers,
- ...params.headers,
- },
})
}
/**
- * Restore reverted messages
+ * Delete session
*
- * Restore all previously reverted messages in a session.
+ * Delete a session and permanently remove all associated data, including messages and history.
*/
- public unrevert<ThrowOnError extends boolean = false>(
+ public delete<ThrowOnError extends boolean = false>(
parameters: {
sessionID: string
directory?: string
@@ -2581,23 +2907,21 @@ export class Session2 extends HeyApiClient {
},
],
)
- return (options?.client ?? this.client).post<SessionUnrevertResponses, SessionUnrevertErrors, ThrowOnError>({
- url: "/session/{sessionID}/unrevert",
+ return (options?.client ?? this.client).delete<SessionDeleteResponses, SessionDeleteErrors, ThrowOnError>({
+ url: "/session/{sessionID}",
...options,
...params,
})
}
-}
-export class Part extends HeyApiClient {
/**
- * Delete a part from a message
+ * Get session
+ *
+ * Retrieve detailed information about a specific OpenCode session.
*/
- public delete<ThrowOnError extends boolean = false>(
+ public get<ThrowOnError extends boolean = false>(
parameters: {
sessionID: string
- messageID: string
- partID: string
directory?: string
workspace?: string
},
@@ -2609,32 +2933,34 @@ export class Part extends HeyApiClient {
{
args: [
{ in: "path", key: "sessionID" },
- { in: "path", key: "messageID" },
- { in: "path", key: "partID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
],
},
],
)
- return (options?.client ?? this.client).delete<PartDeleteResponses, PartDeleteErrors, ThrowOnError>({
- url: "/session/{sessionID}/message/{messageID}/part/{partID}",
+ return (options?.client ?? this.client).get<SessionGetResponses, SessionGetErrors, ThrowOnError>({
+ url: "/session/{sessionID}",
...options,
...params,
})
}
/**
- * Update a part in a message
+ * Update session
+ *
+ * Update properties of an existing session, such as title or other metadata.
*/
public update<ThrowOnError extends boolean = false>(
parameters: {
sessionID: string
- messageID: string
- partID: string
directory?: string
workspace?: string
- part?: Part2
+ title?: string
+ permission?: PermissionRuleset
+ time?: {
+ archived?: number
+ }
},
options?: Options<never, ThrowOnError>,
) {
@@ -2644,17 +2970,17 @@ export class Part extends HeyApiClient {
{
args: [
{ in: "path", key: "sessionID" },
- { in: "path", key: "messageID" },
- { in: "path", key: "partID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { key: "part", map: "body" },
+ { in: "body", key: "title" },
+ { in: "body", key: "permission" },
+ { in: "body", key: "time" },
],
},
],
)
- return (options?.client ?? this.client).patch<PartUpdateResponses, PartUpdateErrors, ThrowOnError>({
- url: "/session/{sessionID}/message/{messageID}/part/{partID}",
+ return (options?.client ?? this.client).patch<SessionUpdateResponses, SessionUpdateErrors, ThrowOnError>({
+ url: "/session/{sessionID}",
...options,
...params,
headers: {
@@ -2664,23 +2990,17 @@ export class Part extends HeyApiClient {
},
})
}
-}
-export class Permission extends HeyApiClient {
/**
- * Respond to permission
- *
- * Approve or deny a permission request from the AI assistant.
+ * Get session children
*
- * @deprecated
+ * Retrieve all child sessions that were forked from the specified parent session.
*/
- public respond<ThrowOnError extends boolean = false>(
+ public children<ThrowOnError extends boolean = false>(
parameters: {
sessionID: string
- permissionID: string
directory?: string
workspace?: string
- response?: "once" | "always" | "reject"
},
options?: Options<never, ThrowOnError>,
) {
@@ -2690,38 +3010,29 @@ export class Permission extends HeyApiClient {
{
args: [
{ in: "path", key: "sessionID" },
- { in: "path", key: "permissionID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { in: "body", key: "response" },
],
},
],
)
- return (options?.client ?? this.client).post<PermissionRespondResponses, PermissionRespondErrors, ThrowOnError>({
- url: "/session/{sessionID}/permissions/{permissionID}",
+ return (options?.client ?? this.client).get<SessionChildrenResponses, SessionChildrenErrors, ThrowOnError>({
+ url: "/session/{sessionID}/children",
...options,
...params,
- headers: {
- "Content-Type": "application/json",
- ...options?.headers,
- ...params.headers,
- },
})
}
/**
- * Respond to permission request
+ * Get session todos
*
- * Approve or deny a permission request from the AI assistant.
+ * Retrieve the todo list associated with a specific session, showing tasks and action items.
*/
- public reply<ThrowOnError extends boolean = false>(
+ public todo<ThrowOnError extends boolean = false>(
parameters: {
- requestID: string
+ sessionID: string
directory?: string
workspace?: string
- reply?: "once" | "always" | "reject"
- message?: string
},
options?: Options<never, ThrowOnError>,
) {
@@ -2730,36 +3041,31 @@ export class Permission extends HeyApiClient {
[
{
args: [
- { in: "path", key: "requestID" },
+ { in: "path", key: "sessionID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { in: "body", key: "reply" },
- { in: "body", key: "message" },
],
},
],
)
- return (options?.client ?? this.client).post<PermissionReplyResponses, PermissionReplyErrors, ThrowOnError>({
- url: "/permission/{requestID}/reply",
+ return (options?.client ?? this.client).get<SessionTodoResponses, SessionTodoErrors, ThrowOnError>({
+ url: "/session/{sessionID}/todo",
...options,
...params,
- headers: {
- "Content-Type": "application/json",
- ...options?.headers,
- ...params.headers,
- },
})
}
/**
- * List pending permissions
+ * Get message diff
*
- * Get all pending permission requests across all sessions.
+ * Get the file changes (diff) that resulted from a specific user message in the session.
*/
- public list<ThrowOnError extends boolean = false>(
- parameters?: {
+ public diff<ThrowOnError extends boolean = false>(
+ parameters: {
+ sessionID: string
directory?: string
workspace?: string
+ messageID?: string
},
options?: Options<never, ThrowOnError>,
) {
@@ -2768,30 +3074,33 @@ export class Permission extends HeyApiClient {
[
{
args: [
+ { in: "path", key: "sessionID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
+ { in: "query", key: "messageID" },
],
},
],
)
- return (options?.client ?? this.client).get<PermissionListResponses, unknown, ThrowOnError>({
- url: "/permission",
+ return (options?.client ?? this.client).get<SessionDiffResponses, unknown, ThrowOnError>({
+ url: "/session/{sessionID}/diff",
...options,
...params,
})
}
-}
-export class Question extends HeyApiClient {
/**
- * List pending questions
+ * Get session messages
*
- * Get all pending question requests across all sessions.
+ * Retrieve all messages in a session, including user prompts and AI responses.
*/
- public list<ThrowOnError extends boolean = false>(
- parameters?: {
+ public messages<ThrowOnError extends boolean = false>(
+ parameters: {
+ sessionID: string
directory?: string
workspace?: string
+ limit?: number
+ before?: string
},
options?: Options<never, ThrowOnError>,
) {
@@ -2800,30 +3109,46 @@ export class Question extends HeyApiClient {
[
{
args: [
+ { in: "path", key: "sessionID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
+ { in: "query", key: "limit" },
+ { in: "query", key: "before" },
],
},
],
)
- return (options?.client ?? this.client).get<QuestionListResponses, unknown, ThrowOnError>({
- url: "/question",
+ return (options?.client ?? this.client).get<SessionMessagesResponses, SessionMessagesErrors, ThrowOnError>({
+ url: "/session/{sessionID}/message",
...options,
...params,
})
}
/**
- * Reply to question request
+ * Send message
*
- * Provide answers to a question request from the AI assistant.
+ * Create and send a new message to a session, streaming the AI response.
*/
- public reply<ThrowOnError extends boolean = false>(
+ public prompt<ThrowOnError extends boolean = false>(
parameters: {
- requestID: string
+ sessionID: string
directory?: string
workspace?: string
- answers?: Array<QuestionAnswer>
+ messageID?: string
+ model?: {
+ providerID: string
+ modelID: string
+ }
+ agent?: string
+ noReply?: boolean
+ tools?: {
+ [key: string]: boolean
+ }
+ format?: OutputFormat
+ system?: string
+ variant?: string
+ parts?: Array<TextPartInput | FilePartInput | AgentPartInput | SubtaskPartInput>
},
options?: Options<never, ThrowOnError>,
) {
@@ -2832,16 +3157,24 @@ export class Question extends HeyApiClient {
[
{
args: [
- { in: "path", key: "requestID" },
+ { in: "path", key: "sessionID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { in: "body", key: "answers" },
+ { in: "body", key: "messageID" },
+ { in: "body", key: "model" },
+ { in: "body", key: "agent" },
+ { in: "body", key: "noReply" },
+ { in: "body", key: "tools" },
+ { in: "body", key: "format" },
+ { in: "body", key: "system" },
+ { in: "body", key: "variant" },
+ { in: "body", key: "parts" },
],
},
],
)
- return (options?.client ?? this.client).post<QuestionReplyResponses, QuestionReplyErrors, ThrowOnError>({
- url: "/question/{requestID}/reply",
+ return (options?.client ?? this.client).post<SessionPromptResponses, SessionPromptErrors, ThrowOnError>({
+ url: "/session/{sessionID}/message",
...options,
...params,
headers: {
@@ -2853,13 +3186,14 @@ export class Question extends HeyApiClient {
}
/**
- * Reject question request
+ * Delete message
*
- * Reject a question request from the AI assistant.
+ * Permanently delete a specific message and all of its parts from a session without reverting file changes.
*/
- public reject<ThrowOnError extends boolean = false>(
+ public deleteMessage<ThrowOnError extends boolean = false>(
parameters: {
- requestID: string
+ sessionID: string
+ messageID: string
directory?: string
workspace?: string
},
@@ -2870,36 +3204,36 @@ export class Question extends HeyApiClient {
[
{
args: [
- { in: "path", key: "requestID" },
+ { in: "path", key: "sessionID" },
+ { in: "path", key: "messageID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
],
},
],
)
- return (options?.client ?? this.client).post<QuestionRejectResponses, QuestionRejectErrors, ThrowOnError>({
- url: "/question/{requestID}/reject",
+ return (options?.client ?? this.client).delete<
+ SessionDeleteMessageResponses,
+ SessionDeleteMessageErrors,
+ ThrowOnError
+ >({
+ url: "/session/{sessionID}/message/{messageID}",
...options,
...params,
})
}
-}
-export class Oauth extends HeyApiClient {
/**
- * OAuth authorize
+ * Get message
*
- * Initiate OAuth authorization for a specific AI provider to get an authorization URL.
+ * Retrieve a specific message from a session by its message ID.
*/
- public authorize<ThrowOnError extends boolean = false>(
+ public message<ThrowOnError extends boolean = false>(
parameters: {
- providerID: string
+ sessionID: string
+ messageID: string
directory?: string
workspace?: string
- method?: number
- inputs?: {
- [key: string]: string
- }
},
options?: Options<never, ThrowOnError>,
) {
@@ -2908,43 +3242,32 @@ export class Oauth extends HeyApiClient {
[
{
args: [
- { in: "path", key: "providerID" },
+ { in: "path", key: "sessionID" },
+ { in: "path", key: "messageID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { in: "body", key: "method" },
- { in: "body", key: "inputs" },
],
},
],
)
- return (options?.client ?? this.client).post<
- ProviderOauthAuthorizeResponses,
- ProviderOauthAuthorizeErrors,
- ThrowOnError
- >({
- url: "/provider/{providerID}/oauth/authorize",
+ return (options?.client ?? this.client).get<SessionMessageResponses, SessionMessageErrors, ThrowOnError>({
+ url: "/session/{sessionID}/message/{messageID}",
...options,
...params,
- headers: {
- "Content-Type": "application/json",
- ...options?.headers,
- ...params.headers,
- },
})
}
/**
- * OAuth callback
+ * Fork session
*
- * Handle the OAuth callback from a provider after user authorization.
+ * Create a new session by forking an existing session at a specific message point.
*/
- public callback<ThrowOnError extends boolean = false>(
+ public fork<ThrowOnError extends boolean = false>(
parameters: {
- providerID: string
+ sessionID: string
directory?: string
workspace?: string
- method?: number
- code?: string
+ messageID?: string
},
options?: Options<never, ThrowOnError>,
) {
@@ -2953,21 +3276,16 @@ export class Oauth extends HeyApiClient {
[
{
args: [
- { in: "path", key: "providerID" },
+ { in: "path", key: "sessionID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { in: "body", key: "method" },
- { in: "body", key: "code" },
+ { in: "body", key: "messageID" },
],
},
],
)
- return (options?.client ?? this.client).post<
- ProviderOauthCallbackResponses,
- ProviderOauthCallbackErrors,
- ThrowOnError
- >({
- url: "/provider/{providerID}/oauth/callback",
+ return (options?.client ?? this.client).post<SessionForkResponses, unknown, ThrowOnError>({
+ url: "/session/{sessionID}/fork",
...options,
...params,
headers: {
@@ -2977,16 +3295,15 @@ export class Oauth extends HeyApiClient {
},
})
}
-}
-export class Provider extends HeyApiClient {
/**
- * List providers
+ * Abort session
*
- * Get a list of all available AI providers, including both available and connected ones.
+ * Abort an active session and stop any ongoing AI processing or command execution.
*/
- public list<ThrowOnError extends boolean = false>(
- parameters?: {
+ public abort<ThrowOnError extends boolean = false>(
+ parameters: {
+ sessionID: string
directory?: string
workspace?: string
},
@@ -2997,28 +3314,33 @@ export class Provider extends HeyApiClient {
[
{
args: [
+ { in: "path", key: "sessionID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
],
},
],
)
- return (options?.client ?? this.client).get<ProviderListResponses, unknown, ThrowOnError>({
- url: "/provider",
+ return (options?.client ?? this.client).post<SessionAbortResponses, SessionAbortErrors, ThrowOnError>({
+ url: "/session/{sessionID}/abort",
...options,
...params,
})
}
/**
- * Get provider auth methods
+ * Initialize session
*
- * Retrieve available authentication methods for all AI providers.
+ * Analyze the current application and create an AGENTS.md file with project-specific agent configurations.
*/
- public auth<ThrowOnError extends boolean = false>(
- parameters?: {
+ public init<ThrowOnError extends boolean = false>(
+ parameters: {
+ sessionID: string
directory?: string
workspace?: string
+ modelID?: string
+ providerID?: string
+ messageID?: string
},
options?: Options<never, ThrowOnError>,
) {
@@ -3027,38 +3349,38 @@ export class Provider extends HeyApiClient {
[
{
args: [
+ { in: "path", key: "sessionID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
+ { in: "body", key: "modelID" },
+ { in: "body", key: "providerID" },
+ { in: "body", key: "messageID" },
],
},
],
)
- return (options?.client ?? this.client).get<ProviderAuthResponses, unknown, ThrowOnError>({
- url: "/provider/auth",
+ return (options?.client ?? this.client).post<SessionInitResponses, SessionInitErrors, ThrowOnError>({
+ url: "/session/{sessionID}/init",
...options,
...params,
+ headers: {
+ "Content-Type": "application/json",
+ ...options?.headers,
+ ...params.headers,
+ },
})
}
- private _oauth?: Oauth
- get oauth(): Oauth {
- return (this._oauth ??= new Oauth({ client: this.client }))
- }
-}
-
-export class History extends HeyApiClient {
/**
- * List sync events
+ * Unshare session
*
- * List sync events for all aggregates. Keys are aggregate IDs the client already knows about, values are the last known sequence ID. Events with seq > value are returned for those aggregates. Aggregates not listed in the input get their full history.
+ * Remove the shareable link for a session, making it private again.
*/
- public list<ThrowOnError extends boolean = false>(
- parameters?: {
+ public unshare<ThrowOnError extends boolean = false>(
+ parameters: {
+ sessionID: string
directory?: string
workspace?: string
- body?: {
- [key: string]: number
- }
},
options?: Options<never, ThrowOnError>,
) {
@@ -3067,34 +3389,28 @@ export class History extends HeyApiClient {
[
{
args: [
+ { in: "path", key: "sessionID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { key: "body", map: "body" },
],
},
],
)
- return (options?.client ?? this.client).post<SyncHistoryListResponses, SyncHistoryListErrors, ThrowOnError>({
- url: "/sync/history",
+ return (options?.client ?? this.client).delete<SessionUnshareResponses, SessionUnshareErrors, ThrowOnError>({
+ url: "/session/{sessionID}/share",
...options,
...params,
- headers: {
- "Content-Type": "application/json",
- ...options?.headers,
- ...params.headers,
- },
})
}
-}
-export class Sync extends HeyApiClient {
/**
- * Start workspace sync
+ * Share session
*
- * Start sync loops for workspaces in the current project that have active sessions.
+ * Create a shareable link for a session, allowing others to view the conversation.
*/
- public start<ThrowOnError extends boolean = false>(
- parameters?: {
+ public share<ThrowOnError extends boolean = false>(
+ parameters: {
+ sessionID: string
directory?: string
workspace?: string
},
@@ -3105,38 +3421,33 @@ export class Sync extends HeyApiClient {
[
{
args: [
+ { in: "path", key: "sessionID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
],
},
],
)
- return (options?.client ?? this.client).post<SyncStartResponses, unknown, ThrowOnError>({
- url: "/sync/start",
+ return (options?.client ?? this.client).post<SessionShareResponses, SessionShareErrors, ThrowOnError>({
+ url: "/session/{sessionID}/share",
...options,
...params,
})
}
/**
- * Replay sync events
+ * Summarize session
*
- * Validate and replay a complete sync event history.
+ * Generate a concise summary of the session using AI compaction to preserve key information.
*/
- public replay<ThrowOnError extends boolean = false>(
- parameters?: {
- query_directory?: string
+ public summarize<ThrowOnError extends boolean = false>(
+ parameters: {
+ sessionID: string
+ directory?: string
workspace?: string
- body_directory?: string
- events?: Array<{
- id: string
- aggregateID: string
- seq: number
- type: string
- data: {
- [key: string]: unknown
- }
- }>
+ providerID?: string
+ modelID?: string
+ auto?: boolean
},
options?: Options<never, ThrowOnError>,
) {
@@ -3145,24 +3456,18 @@ export class Sync extends HeyApiClient {
[
{
args: [
- {
- in: "query",
- key: "query_directory",
- map: "directory",
- },
+ { in: "path", key: "sessionID" },
+ { in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- {
- in: "body",
- key: "body_directory",
- map: "directory",
- },
- { in: "body", key: "events" },
+ { in: "body", key: "providerID" },
+ { in: "body", key: "modelID" },
+ { in: "body", key: "auto" },
],
},
],
)
- return (options?.client ?? this.client).post<SyncReplayResponses, SyncReplayErrors, ThrowOnError>({
- url: "/sync/replay",
+ return (options?.client ?? this.client).post<SessionSummarizeResponses, SessionSummarizeErrors, ThrowOnError>({
+ url: "/session/{sessionID}/summarize",
...options,
...params,
headers: {
@@ -3173,23 +3478,30 @@ export class Sync extends HeyApiClient {
})
}
- private _history?: History
- get history(): History {
- return (this._history ??= new History({ client: this.client }))
- }
-}
-
-export class Find extends HeyApiClient {
/**
- * Find text
+ * Send async message
*
- * Search for text patterns across files in the project using ripgrep.
+ * Create and send a new message to a session asynchronously, starting the session if needed and returning immediately.
*/
- public text<ThrowOnError extends boolean = false>(
+ public promptAsync<ThrowOnError extends boolean = false>(
parameters: {
+ sessionID: string
directory?: string
workspace?: string
- pattern: string
+ messageID?: string
+ model?: {
+ providerID: string
+ modelID: string
+ }
+ agent?: string
+ noReply?: boolean
+ tools?: {
+ [key: string]: boolean
+ }
+ format?: OutputFormat
+ system?: string
+ variant?: string
+ parts?: Array<TextPartInput | FilePartInput | AgentPartInput | SubtaskPartInput>
},
options?: Options<never, ThrowOnError>,
) {
@@ -3198,33 +3510,58 @@ export class Find extends HeyApiClient {
[
{
args: [
+ { in: "path", key: "sessionID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { in: "query", key: "pattern" },
+ { in: "body", key: "messageID" },
+ { in: "body", key: "model" },
+ { in: "body", key: "agent" },
+ { in: "body", key: "noReply" },
+ { in: "body", key: "tools" },
+ { in: "body", key: "format" },
+ { in: "body", key: "system" },
+ { in: "body", key: "variant" },
+ { in: "body", key: "parts" },
],
},
],
)
- return (options?.client ?? this.client).get<FindTextResponses, unknown, ThrowOnError>({
- url: "/find",
+ return (options?.client ?? this.client).post<SessionPromptAsyncResponses, SessionPromptAsyncErrors, ThrowOnError>({
+ url: "/session/{sessionID}/prompt_async",
...options,
...params,
+ headers: {
+ "Content-Type": "application/json",
+ ...options?.headers,
+ ...params.headers,
+ },
})
}
/**
- * Find files
+ * Send command
*
- * Search for files or directories by name or pattern in the project directory.
+ * Send a new command to a session for execution by the AI assistant.
*/
- public files<ThrowOnError extends boolean = false>(
+ public command<ThrowOnError extends boolean = false>(
parameters: {
+ sessionID: string
directory?: string
workspace?: string
- query: string
- dirs?: "true" | "false"
- type?: "file" | "directory"
- limit?: number
+ messageID?: string
+ agent?: string
+ model?: string
+ arguments?: string
+ command?: string
+ variant?: string
+ parts?: Array<{
+ id?: string
+ type: "file"
+ mime: string
+ filename?: string
+ url: string
+ source?: FilePartSource
+ }>
},
options?: Options<never, ThrowOnError>,
) {
@@ -3233,33 +3570,49 @@ export class Find extends HeyApiClient {
[
{
args: [
+ { in: "path", key: "sessionID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { in: "query", key: "query" },
- { in: "query", key: "dirs" },
- { in: "query", key: "type" },
- { in: "query", key: "limit" },
+ { in: "body", key: "messageID" },
+ { in: "body", key: "agent" },
+ { in: "body", key: "model" },
+ { in: "body", key: "arguments" },
+ { in: "body", key: "command" },
+ { in: "body", key: "variant" },
+ { in: "body", key: "parts" },
],
},
],
)
- return (options?.client ?? this.client).get<FindFilesResponses, unknown, ThrowOnError>({
- url: "/find/file",
+ return (options?.client ?? this.client).post<SessionCommandResponses, SessionCommandErrors, ThrowOnError>({
+ url: "/session/{sessionID}/command",
...options,
...params,
+ headers: {
+ "Content-Type": "application/json",
+ ...options?.headers,
+ ...params.headers,
+ },
})
}
/**
- * Find symbols
+ * Run shell command
*
- * Search for workspace symbols like functions, classes, and variables using LSP.
+ * Execute a shell command within the session context and return the AI's response.
*/
- public symbols<ThrowOnError extends boolean = false>(
+ public shell<ThrowOnError extends boolean = false>(
parameters: {
+ sessionID: string
directory?: string
workspace?: string
- query: string
+ messageID?: string
+ agent?: string
+ model?: {
+ providerID: string
+ modelID: string
+ }
+ command?: string
},
options?: Options<never, ThrowOnError>,
) {
@@ -3268,32 +3621,41 @@ export class Find extends HeyApiClient {
[
{
args: [
+ { in: "path", key: "sessionID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { in: "query", key: "query" },
+ { in: "body", key: "messageID" },
+ { in: "body", key: "agent" },
+ { in: "body", key: "model" },
+ { in: "body", key: "command" },
],
},
],
)
- return (options?.client ?? this.client).get<FindSymbolsResponses, unknown, ThrowOnError>({
- url: "/find/symbol",
+ return (options?.client ?? this.client).post<SessionShellResponses, SessionShellErrors, ThrowOnError>({
+ url: "/session/{sessionID}/shell",
...options,
...params,
+ headers: {
+ "Content-Type": "application/json",
+ ...options?.headers,
+ ...params.headers,
+ },
})
}
-}
-export class File extends HeyApiClient {
/**
- * List files
+ * Revert message
*
- * List files and directories in a specified path.
+ * Revert a specific message in a session, undoing its effects and restoring the previous state.
*/
- public list<ThrowOnError extends boolean = false>(
+ public revert<ThrowOnError extends boolean = false>(
parameters: {
+ sessionID: string
directory?: string
workspace?: string
- path: string
+ messageID?: string
+ partID?: string
},
options?: Options<never, ThrowOnError>,
) {
@@ -3302,30 +3664,37 @@ export class File extends HeyApiClient {
[
{
args: [
+ { in: "path", key: "sessionID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { in: "query", key: "path" },
+ { in: "body", key: "messageID" },
+ { in: "body", key: "partID" },
],
},
],
)
- return (options?.client ?? this.client).get<FileListResponses, unknown, ThrowOnError>({
- url: "/file",
+ return (options?.client ?? this.client).post<SessionRevertResponses, SessionRevertErrors, ThrowOnError>({
+ url: "/session/{sessionID}/revert",
...options,
...params,
+ headers: {
+ "Content-Type": "application/json",
+ ...options?.headers,
+ ...params.headers,
+ },
})
}
/**
- * Read file
+ * Restore reverted messages
*
- * Read the content of a specified file.
+ * Restore all previously reverted messages in a session.
*/
- public read<ThrowOnError extends boolean = false>(
+ public unrevert<ThrowOnError extends boolean = false>(
parameters: {
+ sessionID: string
directory?: string
workspace?: string
- path: string
},
options?: Options<never, ThrowOnError>,
) {
@@ -3334,27 +3703,30 @@ export class File extends HeyApiClient {
[
{
args: [
+ { in: "path", key: "sessionID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { in: "query", key: "path" },
],
},
],
)
- return (options?.client ?? this.client).get<FileReadResponses, unknown, ThrowOnError>({
- url: "/file/content",
+ return (options?.client ?? this.client).post<SessionUnrevertResponses, SessionUnrevertErrors, ThrowOnError>({
+ url: "/session/{sessionID}/unrevert",
...options,
...params,
})
}
+}
+export class Part extends HeyApiClient {
/**
- * Get file status
- *
- * Get the git status of all files in the project.
+ * Delete a part from a message.
*/
- public status<ThrowOnError extends boolean = false>(
- parameters?: {
+ public delete<ThrowOnError extends boolean = false>(
+ parameters: {
+ sessionID: string
+ messageID: string
+ partID: string
directory?: string
workspace?: string
},
@@ -3365,30 +3737,33 @@ export class File extends HeyApiClient {
[
{
args: [
+ { in: "path", key: "sessionID" },
+ { in: "path", key: "messageID" },
+ { in: "path", key: "partID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
],
},
],
)
- return (options?.client ?? this.client).get<FileStatusResponses, unknown, ThrowOnError>({
- url: "/file/status",
+ return (options?.client ?? this.client).delete<PartDeleteResponses, PartDeleteErrors, ThrowOnError>({
+ url: "/session/{sessionID}/message/{messageID}/part/{partID}",
...options,
...params,
})
}
-}
-export class Event extends HeyApiClient {
/**
- * Subscribe to events
- *
- * Get events
+ * Update a part in a message.
*/
- public subscribe<ThrowOnError extends boolean = false>(
- parameters?: {
+ public update<ThrowOnError extends boolean = false>(
+ parameters: {
+ sessionID: string
+ messageID: string
+ partID: string
directory?: string
workspace?: string
+ part?: Part2
},
options?: Options<never, ThrowOnError>,
) {
@@ -3397,31 +3772,42 @@ export class Event extends HeyApiClient {
[
{
args: [
+ { in: "path", key: "sessionID" },
+ { in: "path", key: "messageID" },
+ { in: "path", key: "partID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
+ { key: "part", map: "body" },
],
},
],
)
- return (options?.client ?? this.client).sse.get<EventSubscribeResponses, unknown, ThrowOnError>({
- url: "/event",
+ return (options?.client ?? this.client).patch<PartUpdateResponses, PartUpdateErrors, ThrowOnError>({
+ url: "/session/{sessionID}/message/{messageID}/part/{partID}",
...options,
...params,
+ headers: {
+ "Content-Type": "application/json",
+ ...options?.headers,
+ ...params.headers,
+ },
})
}
}
-export class Auth2 extends HeyApiClient {
+export class History extends HeyApiClient {
/**
- * Remove MCP OAuth
+ * List sync events
*
- * Remove OAuth credentials for an MCP server
+ * List sync events for all aggregates. Keys are aggregate IDs the client already knows about, values are the last known sequence ID. Events with seq > value are returned for those aggregates. Aggregates not listed in the input get their full history.
*/
- public remove<ThrowOnError extends boolean = false>(
- parameters: {
- name: string
+ public list<ThrowOnError extends boolean = false>(
+ parameters?: {
directory?: string
workspace?: string
+ body?: {
+ [key: string]: number
+ }
},
options?: Options<never, ThrowOnError>,
) {
@@ -3430,28 +3816,34 @@ export class Auth2 extends HeyApiClient {
[
{
args: [
- { in: "path", key: "name" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
+ { key: "body", map: "body" },
],
},
],
)
- return (options?.client ?? this.client).delete<McpAuthRemoveResponses, McpAuthRemoveErrors, ThrowOnError>({
- url: "/mcp/{name}/auth",
+ return (options?.client ?? this.client).post<SyncHistoryListResponses, SyncHistoryListErrors, ThrowOnError>({
+ url: "/sync/history",
...options,
...params,
+ headers: {
+ "Content-Type": "application/json",
+ ...options?.headers,
+ ...params.headers,
+ },
})
}
+}
+export class Sync extends HeyApiClient {
/**
- * Start MCP OAuth
+ * Start workspace sync
*
- * Start OAuth authentication flow for a Model Context Protocol (MCP) server.
+ * Start sync loops for workspaces in the current project that have active sessions.
*/
public start<ThrowOnError extends boolean = false>(
- parameters: {
- name: string
+ parameters?: {
directory?: string
workspace?: string
},
@@ -3462,31 +3854,38 @@ export class Auth2 extends HeyApiClient {
[
{
args: [
- { in: "path", key: "name" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
],
},
],
)
- return (options?.client ?? this.client).post<McpAuthStartResponses, McpAuthStartErrors, ThrowOnError>({
- url: "/mcp/{name}/auth",
+ return (options?.client ?? this.client).post<SyncStartResponses, unknown, ThrowOnError>({
+ url: "/sync/start",
...options,
...params,
})
}
/**
- * Complete MCP OAuth
+ * Replay sync events
*
- * Complete OAuth authentication for a Model Context Protocol (MCP) server using the authorization code.
+ * Validate and replay a complete sync event history.
*/
- public callback<ThrowOnError extends boolean = false>(
- parameters: {
- name: string
- directory?: string
+ public replay<ThrowOnError extends boolean = false>(
+ parameters?: {
+ query_directory?: string
workspace?: string
- code?: string
+ body_directory?: string
+ events?: Array<{
+ id: string
+ aggregateID: string
+ seq: number
+ type: string
+ data: {
+ [key: string]: unknown
+ }
+ }>
},
options?: Options<never, ThrowOnError>,
) {
@@ -3495,16 +3894,24 @@ export class Auth2 extends HeyApiClient {
[
{
args: [
- { in: "path", key: "name" },
- { in: "query", key: "directory" },
+ {
+ in: "query",
+ key: "query_directory",
+ map: "directory",
+ },
{ in: "query", key: "workspace" },
- { in: "body", key: "code" },
+ {
+ in: "body",
+ key: "body_directory",
+ map: "directory",
+ },
+ { in: "body", key: "events" },
],
},
],
)
- return (options?.client ?? this.client).post<McpAuthCallbackResponses, McpAuthCallbackErrors, ThrowOnError>({
- url: "/mcp/{name}/auth/callback",
+ return (options?.client ?? this.client).post<SyncReplayResponses, SyncReplayErrors, ThrowOnError>({
+ url: "/sync/replay",
...options,
...params,
headers: {
@@ -3515,16 +3922,55 @@ export class Auth2 extends HeyApiClient {
})
}
+ private _history?: History
+ get history(): History {
+ return (this._history ??= new History({ client: this.client }))
+ }
+}
+
+export class Session3 extends HeyApiClient {
/**
- * Authenticate MCP OAuth
+ * List v2 sessions
*
- * Start OAuth flow and wait for callback (opens browser)
+ * Retrieve sessions in the requested order. Items keep that order across pages; use cursor.next or cursor.previous to move through the ordered list.
*/
- public authenticate<ThrowOnError extends boolean = false>(
+ public list<ThrowOnError extends boolean = false>(
+ parameters?: {
+ directory?: string
+ workspace?: string
+ },
+ options?: Options<never, ThrowOnError>,
+ ) {
+ const params = buildClientParams(
+ [parameters],
+ [
+ {
+ args: [
+ { in: "query", key: "directory" },
+ { in: "query", key: "workspace" },
+ ],
+ },
+ ],
+ )
+ return (options?.client ?? this.client).get<V2SessionListResponses, V2SessionListErrors, ThrowOnError>({
+ url: "/api/session",
+ ...options,
+ ...params,
+ })
+ }
+
+ /**
+ * Send v2 message
+ *
+ * Create a v2 session message and queue it for the agent loop.
+ */
+ public prompt<ThrowOnError extends boolean = false>(
parameters: {
- name: string
+ sessionID: string
directory?: string
workspace?: string
+ prompt?: Prompt
+ delivery?: SessionDelivery
},
options?: Options<never, ThrowOnError>,
) {
@@ -3533,31 +3979,35 @@ export class Auth2 extends HeyApiClient {
[
{
args: [
- { in: "path", key: "name" },
+ { in: "path", key: "sessionID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
+ { in: "body", key: "prompt" },
+ { in: "body", key: "delivery" },
],
},
],
)
- return (options?.client ?? this.client).post<McpAuthAuthenticateResponses, McpAuthAuthenticateErrors, ThrowOnError>(
- {
- url: "/mcp/{name}/auth/authenticate",
- ...options,
- ...params,
+ return (options?.client ?? this.client).post<V2SessionPromptResponses, unknown, ThrowOnError>({
+ url: "/api/session/{sessionID}/prompt",
+ ...options,
+ ...params,
+ headers: {
+ "Content-Type": "application/json",
+ ...options?.headers,
+ ...params.headers,
},
- )
+ })
}
-}
-export class Mcp extends HeyApiClient {
/**
- * Get MCP status
+ * Compact v2 session
*
- * Get the status of all Model Context Protocol (MCP) servers.
+ * Compact a v2 session conversation.
*/
- public status<ThrowOnError extends boolean = false>(
- parameters?: {
+ public compact<ThrowOnError extends boolean = false>(
+ parameters: {
+ sessionID: string
directory?: string
workspace?: string
},
@@ -3568,30 +4018,30 @@ export class Mcp extends HeyApiClient {
[
{
args: [
+ { in: "path", key: "sessionID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
],
},
],
)
- return (options?.client ?? this.client).get<McpStatusResponses, unknown, ThrowOnError>({
- url: "/mcp",
+ return (options?.client ?? this.client).post<V2SessionCompactResponses, unknown, ThrowOnError>({
+ url: "/api/session/{sessionID}/compact",
...options,
...params,
})
}
/**
- * Add MCP server
+ * Wait for v2 session
*
- * Dynamically add a new Model Context Protocol (MCP) server to the system.
+ * Wait for a v2 session agent loop to become idle.
*/
- public add<ThrowOnError extends boolean = false>(
- parameters?: {
+ public wait<ThrowOnError extends boolean = false>(
+ parameters: {
+ sessionID: string
directory?: string
workspace?: string
- name?: string
- config?: McpLocalConfig | McpRemoteConfig
},
options?: Options<never, ThrowOnError>,
) {
@@ -3600,32 +4050,28 @@ export class Mcp extends HeyApiClient {
[
{
args: [
+ { in: "path", key: "sessionID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
- { in: "body", key: "name" },
- { in: "body", key: "config" },
],
},
],
)
- return (options?.client ?? this.client).post<McpAddResponses, McpAddErrors, ThrowOnError>({
- url: "/mcp",
+ return (options?.client ?? this.client).post<V2SessionWaitResponses, unknown, ThrowOnError>({
+ url: "/api/session/{sessionID}/wait",
...options,
...params,
- headers: {
- "Content-Type": "application/json",
- ...options?.headers,
- ...params.headers,
- },
})
}
/**
- * Connect an MCP server
+ * Get v2 session context
+ *
+ * Retrieve the active context messages for a v2 session (all messages after the last compaction).
*/
- public connect<ThrowOnError extends boolean = false>(
+ public context<ThrowOnError extends boolean = false>(
parameters: {
- name: string
+ sessionID: string
directory?: string
workspace?: string
},
@@ -3636,26 +4082,28 @@ export class Mcp extends HeyApiClient {
[
{
args: [
- { in: "path", key: "name" },
+ { in: "path", key: "sessionID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
],
},
],
)
- return (options?.client ?? this.client).post<McpConnectResponses, unknown, ThrowOnError>({
- url: "/mcp/{name}/connect",
+ return (options?.client ?? this.client).get<V2SessionContextResponses, unknown, ThrowOnError>({
+ url: "/api/session/{sessionID}/context",
...options,
...params,
})
}
/**
- * Disconnect an MCP server
+ * Get v2 session messages
+ *
+ * Retrieve projected v2 messages for a session. Items keep the requested order across pages; use cursor.next or cursor.previous to move through the ordered timeline.
*/
- public disconnect<ThrowOnError extends boolean = false>(
+ public messages<ThrowOnError extends boolean = false>(
parameters: {
- name: string
+ sessionID: string
directory?: string
workspace?: string
},
@@ -3666,23 +4114,25 @@ export class Mcp extends HeyApiClient {
[
{
args: [
- { in: "path", key: "name" },
+ { in: "path", key: "sessionID" },
{ in: "query", key: "directory" },
{ in: "query", key: "workspace" },
],
},
],
)
- return (options?.client ?? this.client).post<McpDisconnectResponses, unknown, ThrowOnError>({
- url: "/mcp/{name}/disconnect",
+ return (options?.client ?? this.client).get<V2SessionMessagesResponses, V2SessionMessagesErrors, ThrowOnError>({
+ url: "/api/session/{sessionID}/message",
...options,
...params,
})
}
+}
- private _auth?: Auth2
- get auth(): Auth2 {
- return (this._auth ??= new Auth2({ client: this.client }))
+export class V2 extends HeyApiClient {
+ private _session?: Session3
+ get session(): Session3 {
+ return (this._session ??= new Session3({ client: this.client }))
}
}
@@ -3690,7 +4140,7 @@ export class Control extends HeyApiClient {
/**
* Get next TUI request
*
- * Retrieve the next TUI (Terminal User Interface) request from the queue for processing.
+ * Retrieve the next TUI request from the queue for processing.
*/
public next<ThrowOnError extends boolean = false>(
parameters?: {
@@ -3759,7 +4209,7 @@ export class Tui extends HeyApiClient {
/**
* Append TUI prompt
*
- * Append prompt to the TUI
+ * Append prompt to the TUI.
*/
public appendPrompt<ThrowOnError extends boolean = false>(
parameters?: {
@@ -3826,7 +4276,7 @@ export class Tui extends HeyApiClient {
/**
* Open sessions dialog
*
- * Open the session dialog
+ * Open the session dialog.
*/
public openSessions<ThrowOnError extends boolean = false>(
parameters?: {
@@ -3856,7 +4306,7 @@ export class Tui extends HeyApiClient {
/**
* Open themes dialog
*
- * Open the theme dialog
+ * Open the theme dialog.
*/
public openThemes<ThrowOnError extends boolean = false>(
parameters?: {
@@ -3886,7 +4336,7 @@ export class Tui extends HeyApiClient {
/**
* Open models dialog
*
- * Open the model dialog
+ * Open the model dialog.
*/
public openModels<ThrowOnError extends boolean = false>(
parameters?: {
@@ -3916,7 +4366,7 @@ export class Tui extends HeyApiClient {
/**
* Submit TUI prompt
*
- * Submit the prompt
+ * Submit the prompt.
*/
public submitPrompt<ThrowOnError extends boolean = false>(
parameters?: {
@@ -3946,7 +4396,7 @@ export class Tui extends HeyApiClient {
/**
* Clear TUI prompt
*
- * Clear the prompt
+ * Clear the prompt.
*/
public clearPrompt<ThrowOnError extends boolean = false>(
parameters?: {
@@ -3976,7 +4426,7 @@ export class Tui extends HeyApiClient {
/**
* Execute TUI command
*
- * Execute a TUI command (e.g. agent_cycle)
+ * Execute a TUI command.
*/
public executeCommand<ThrowOnError extends boolean = false>(
parameters?: {
@@ -4013,7 +4463,7 @@ export class Tui extends HeyApiClient {
/**
* Show TUI toast
*
- * Show a toast notification in the TUI
+ * Show a toast notification in the TUI.
*/
public showToast<ThrowOnError extends boolean = false>(
parameters?: {
@@ -4056,13 +4506,13 @@ export class Tui extends HeyApiClient {
/**
* Publish TUI event
*
- * Publish a TUI event
+ * Publish a TUI event.
*/
public publish<ThrowOnError extends boolean = false>(
parameters?: {
directory?: string
workspace?: string
- body?: EventTuiPromptAppend | EventTuiCommandExecute | EventTuiToastShow | EventTuiSessionSelect
+ body?: EventTuiPromptAppend2 | EventTuiCommandExecute2 | EventTuiToastShow2 | EventTuiSessionSelect2
},
options?: Options<never, ThrowOnError>,
) {
@@ -4133,230 +4583,6 @@ export class Tui extends HeyApiClient {
}
}
-export class Instance extends HeyApiClient {
- /**
- * Dispose instance
- *
- * Clean up and dispose the current OpenCode instance, releasing all resources.
- */
- public dispose<ThrowOnError extends boolean = false>(
- parameters?: {
- directory?: string
- workspace?: string
- },
- options?: Options<never, ThrowOnError>,
- ) {
- const params = buildClientParams(
- [parameters],
- [
- {
- args: [
- { in: "query", key: "directory" },
- { in: "query", key: "workspace" },
- ],
- },
- ],
- )
- return (options?.client ?? this.client).post<InstanceDisposeResponses, unknown, ThrowOnError>({
- url: "/instance/dispose",
- ...options,
- ...params,
- })
- }
-}
-
-export class Path extends HeyApiClient {
- /**
- * Get paths
- *
- * Retrieve the current working directory and related path information for the OpenCode instance.
- */
- public get<ThrowOnError extends boolean = false>(
- parameters?: {
- directory?: string
- workspace?: string
- },
- options?: Options<never, ThrowOnError>,
- ) {
- const params = buildClientParams(
- [parameters],
- [
- {
- args: [
- { in: "query", key: "directory" },
- { in: "query", key: "workspace" },
- ],
- },
- ],
- )
- return (options?.client ?? this.client).get<PathGetResponses, unknown, ThrowOnError>({
- url: "/path",
- ...options,
- ...params,
- })
- }
-}
-
-export class Vcs extends HeyApiClient {
- /**
- * Get VCS info
- *
- * Retrieve version control system (VCS) information for the current project, such as git branch.
- */
- public get<ThrowOnError extends boolean = false>(
- parameters?: {
- directory?: string
- workspace?: string
- },
- options?: Options<never, ThrowOnError>,
- ) {
- const params = buildClientParams(
- [parameters],
- [
- {
- args: [
- { in: "query", key: "directory" },
- { in: "query", key: "workspace" },
- ],
- },
- ],
- )
- return (options?.client ?? this.client).get<VcsGetResponses, unknown, ThrowOnError>({
- url: "/vcs",
- ...options,
- ...params,
- })
- }
-
- /**
- * Get VCS diff
- *
- * Retrieve the current git diff for the working tree or against the default branch.
- */
- public diff<ThrowOnError extends boolean = false>(
- parameters: {
- directory?: string
- workspace?: string
- mode: "git" | "branch"
- },
- options?: Options<never, ThrowOnError>,
- ) {
- const params = buildClientParams(
- [parameters],
- [
- {
- args: [
- { in: "query", key: "directory" },
- { in: "query", key: "workspace" },
- { in: "query", key: "mode" },
- ],
- },
- ],
- )
- return (options?.client ?? this.client).get<VcsDiffResponses, unknown, ThrowOnError>({
- url: "/vcs/diff",
- ...options,
- ...params,
- })
- }
-}
-
-export class Command extends HeyApiClient {
- /**
- * List commands
- *
- * Get a list of all available commands in the OpenCode system.
- */
- public list<ThrowOnError extends boolean = false>(
- parameters?: {
- directory?: string
- workspace?: string
- },
- options?: Options<never, ThrowOnError>,
- ) {
- const params = buildClientParams(
- [parameters],
- [
- {
- args: [
- { in: "query", key: "directory" },
- { in: "query", key: "workspace" },
- ],
- },
- ],
- )
- return (options?.client ?? this.client).get<CommandListResponses, unknown, ThrowOnError>({
- url: "/command",
- ...options,
- ...params,
- })
- }
-}
-
-export class Lsp extends HeyApiClient {
- /**
- * Get LSP status
- *
- * Get LSP server status
- */
- public status<ThrowOnError extends boolean = false>(
- parameters?: {
- directory?: string
- workspace?: string
- },
- options?: Options<never, ThrowOnError>,
- ) {
- const params = buildClientParams(
- [parameters],
- [
- {
- args: [
- { in: "query", key: "directory" },
- { in: "query", key: "workspace" },
- ],
- },
- ],
- )
- return (options?.client ?? this.client).get<LspStatusResponses, unknown, ThrowOnError>({
- url: "/lsp",
- ...options,
- ...params,
- })
- }
-}
-
-export class Formatter extends HeyApiClient {
- /**
- * Get formatter status
- *
- * Get formatter status
- */
- public status<ThrowOnError extends boolean = false>(
- parameters?: {
- directory?: string
- workspace?: string
- },
- options?: Options<never, ThrowOnError>,
- ) {
- const params = buildClientParams(
- [parameters],
- [
- {
- args: [
- { in: "query", key: "directory" },
- { in: "query", key: "workspace" },
- ],
- },
- ],
- )
- return (options?.client ?? this.client).get<FormatterStatusResponses, unknown, ThrowOnError>({
- url: "/formatter",
- ...options,
- ...params,
- })
- }
-}
-
export class OpencodeClient extends HeyApiClient {
public static readonly __registry = new HeyApiRegistry<OpencodeClient>()
@@ -4365,11 +4591,6 @@ export class OpencodeClient extends HeyApiClient {
OpencodeClient.__registry.set(this, args?.key)
}
- private _global?: Global
- get global(): Global {
- return (this._global ??= new Global({ client: this.client }))
- }
-
private _auth?: Auth
get auth(): Auth {
return (this._auth ??= new Auth({ client: this.client }))
@@ -4380,19 +4601,14 @@ export class OpencodeClient extends HeyApiClient {
return (this._app ??= new App({ client: this.client }))
}
- private _experimental?: Experimental
- get experimental(): Experimental {
- return (this._experimental ??= new Experimental({ client: this.client }))
- }
-
- private _project?: Project
- get project(): Project {
- return (this._project ??= new Project({ client: this.client }))
+ private _global?: Global
+ get global(): Global {
+ return (this._global ??= new Global({ client: this.client }))
}
- private _pty?: Pty
- get pty(): Pty {
- return (this._pty ??= new Pty({ client: this.client }))
+ private _event?: Event
+ get event(): Event {
+ return (this._event ??= new Event({ client: this.client }))
}
private _config?: Config2
@@ -4400,6 +4616,11 @@ export class OpencodeClient extends HeyApiClient {
return (this._config ??= new Config2({ client: this.client }))
}
+ private _experimental?: Experimental
+ get experimental(): Experimental {
+ return (this._experimental ??= new Experimental({ client: this.client }))
+ }
+
private _tool?: Tool
get tool(): Tool {
return (this._tool ??= new Tool({ client: this.client }))
@@ -4410,36 +4631,6 @@ export class OpencodeClient extends HeyApiClient {
return (this._worktree ??= new Worktree({ client: this.client }))
}
- private _session?: Session2
- get session(): Session2 {
- return (this._session ??= new Session2({ client: this.client }))
- }
-
- private _part?: Part
- get part(): Part {
- return (this._part ??= new Part({ client: this.client }))
- }
-
- private _permission?: Permission
- get permission(): Permission {
- return (this._permission ??= new Permission({ client: this.client }))
- }
-
- private _question?: Question
- get question(): Question {
- return (this._question ??= new Question({ client: this.client }))
- }
-
- private _provider?: Provider
- get provider(): Provider {
- return (this._provider ??= new Provider({ client: this.client }))
- }
-
- private _sync?: Sync
- get sync(): Sync {
- return (this._sync ??= new Sync({ client: this.client }))
- }
-
private _find?: Find
get find(): Find {
return (this._find ??= new Find({ client: this.client }))
@@ -4450,21 +4641,6 @@ export class OpencodeClient extends HeyApiClient {
return (this._file ??= new File({ client: this.client }))
}
- private _event?: Event
- get event(): Event {
- return (this._event ??= new Event({ client: this.client }))
- }
-
- private _mcp?: Mcp
- get mcp(): Mcp {
- return (this._mcp ??= new Mcp({ client: this.client }))
- }
-
- private _tui?: Tui
- get tui(): Tui {
- return (this._tui ??= new Tui({ client: this.client }))
- }
-
private _instance?: Instance
get instance(): Instance {
return (this._instance ??= new Instance({ client: this.client }))
@@ -4494,4 +4670,59 @@ export class OpencodeClient extends HeyApiClient {
get formatter(): Formatter {
return (this._formatter ??= new Formatter({ client: this.client }))
}
+
+ private _mcp?: Mcp
+ get mcp(): Mcp {
+ return (this._mcp ??= new Mcp({ client: this.client }))
+ }
+
+ private _project?: Project
+ get project(): Project {
+ return (this._project ??= new Project({ client: this.client }))
+ }
+
+ private _pty?: Pty
+ get pty(): Pty {
+ return (this._pty ??= new Pty({ client: this.client }))
+ }
+
+ private _question?: Question
+ get question(): Question {
+ return (this._question ??= new Question({ client: this.client }))
+ }
+
+ private _permission?: Permission
+ get permission(): Permission {
+ return (this._permission ??= new Permission({ client: this.client }))
+ }
+
+ private _provider?: Provider
+ get provider(): Provider {
+ return (this._provider ??= new Provider({ client: this.client }))
+ }
+
+ private _session?: Session2
+ get session(): Session2 {
+ return (this._session ??= new Session2({ client: this.client }))
+ }
+
+ private _part?: Part
+ get part(): Part {
+ return (this._part ??= new Part({ client: this.client }))
+ }
+
+ private _sync?: Sync
+ get sync(): Sync {
+ return (this._sync ??= new Sync({ client: this.client }))
+ }
+
+ private _v2?: V2
+ get v2(): V2 {
+ return (this._v2 ??= new V2({ client: this.client }))
+ }
+
+ private _tui?: Tui
+ get tui(): Tui {
+ return (this._tui ??= new Tui({ client: this.client }))
+ }
}
diff --git a/packages/sdk/js/src/v2/gen/types.gen.ts b/packages/sdk/js/src/v2/gen/types.gen.ts
index 31bd40ab4..caa3d4c76 100644
--- a/packages/sdk/js/src/v2/gen/types.gen.ts
+++ b/packages/sdk/js/src/v2/gen/types.gen.ts
@@ -4,53 +4,104 @@ export type ClientOptions = {
baseUrl: `${string}://${string}` | (string & {})
}
-export type EventServerInstanceDisposed = {
- type: "server.instance.disposed"
- properties: {
- directory: string
- }
-}
-
-export type EventFileEdited = {
- type: "file.edited"
- properties: {
- file: string
- }
-}
+export type Event =
+ | EventServerInstanceDisposed
+ | EventFileEdited
+ | EventFileWatcherUpdated
+ | EventLspClientDiagnostics
+ | EventLspUpdated
+ | EventMessagePartDelta
+ | EventPermissionAsked
+ | EventPermissionReplied
+ | EventSessionDiff
+ | EventSessionError
+ | EventInstallationUpdated
+ | EventInstallationUpdateAvailable
+ | EventQuestionAsked
+ | EventQuestionReplied
+ | EventQuestionRejected
+ | EventTodoUpdated
+ | EventSessionStatus
+ | EventSessionIdle
+ | EventSessionCompacted
+ | EventTuiPromptAppend
+ | EventTuiCommandExecute
+ | EventTuiToastShow1
+ | EventTuiSessionSelect
+ | EventMcpToolsChanged
+ | EventMcpBrowserOpenFailed
+ | EventCommandExecuted
+ | EventProjectUpdated
+ | EventVcsBranchUpdated
+ | EventWorkspaceReady
+ | EventWorkspaceFailed
+ | EventWorkspaceRestore
+ | EventWorkspaceStatus
+ | EventWorktreeReady
+ | EventWorktreeFailed
+ | EventPtyCreated
+ | EventPtyUpdated
+ | EventPtyExited
+ | EventPtyDeleted
+ | EventMessageUpdated
+ | EventMessageRemoved
+ | EventMessagePartUpdated
+ | EventMessagePartRemoved
+ | EventSessionCreated
+ | EventSessionUpdated
+ | EventSessionDeleted
+ | EventSessionNextAgentSwitched
+ | EventSessionNextModelSwitched
+ | EventSessionNextPrompted
+ | EventSessionNextSynthetic
+ | EventSessionNextShellStarted
+ | EventSessionNextShellEnded
+ | EventSessionNextStepStarted
+ | EventSessionNextStepEnded
+ | EventSessionNextTextStarted
+ | EventSessionNextTextDelta
+ | EventSessionNextTextEnded
+ | EventSessionNextReasoningStarted
+ | EventSessionNextReasoningDelta
+ | EventSessionNextReasoningEnded
+ | EventSessionNextToolInputStarted
+ | EventSessionNextToolInputDelta
+ | EventSessionNextToolInputEnded
+ | EventSessionNextToolCalled
+ | EventSessionNextToolProgress
+ | EventSessionNextToolSuccess
+ | EventSessionNextToolError
+ | EventSessionNextRetried
+ | EventSessionNextCompactionStarted
+ | EventSessionNextCompactionDelta
+ | EventSessionNextCompactionEnded
+ | EventServerConnected
+ | EventGlobalDisposed
-export type EventFileWatcherUpdated = {
- type: "file.watcher.updated"
- properties: {
- file: string
- event: "add" | "change" | "unlink"
- }
+export type OAuth = {
+ type: "oauth"
+ refresh: string
+ access: string
+ expires: number
+ accountId?: string
+ enterpriseUrl?: string
}
-export type EventLspClientDiagnostics = {
- type: "lsp.client.diagnostics"
- properties: {
- serverID: string
- path: string
+export type ApiAuth = {
+ type: "api"
+ key: string
+ metadata?: {
+ [key: string]: string
}
}
-export type EventLspUpdated = {
- type: "lsp.updated"
- properties: {
- [key: string]: unknown
- }
+export type WellKnownAuth = {
+ type: "wellknown"
+ key: string
+ token: string
}
-export type EventMessagePartDelta = {
- type: "message.part.delta"
- properties: {
- sessionID: string
- messageID: string
- partID: string
- field: string
- delta: string
- }
-}
+export type Auth = OAuth | ApiAuth | WellKnownAuth
export type PermissionRequest = {
id: string
@@ -67,20 +118,6 @@ export type PermissionRequest = {
}
}
-export type EventPermissionAsked = {
- type: "permission.asked"
- properties: PermissionRequest
-}
-
-export type EventPermissionReplied = {
- type: "permission.replied"
- properties: {
- sessionID: string
- requestID: string
- reply: "once" | "always" | "reject"
- }
-}
-
export type SnapshotFileDiff = {
file: string
patch: string
@@ -89,14 +126,6 @@ export type SnapshotFileDiff = {
status?: "added" | "deleted" | "modified"
}
-export type EventSessionDiff = {
- type: "session.diff"
- properties: {
- sessionID: string
- diff: Array<SnapshotFileDiff>
- }
-}
-
export type ProviderAuthError = {
name: "ProviderAuthError"
data: {
@@ -158,35 +187,6 @@ export type ApiError = {
}
}
-export type EventSessionError = {
- type: "session.error"
- properties: {
- sessionID?: string
- error?:
- | ProviderAuthError
- | UnknownError
- | MessageOutputLengthError
- | MessageAbortedError
- | StructuredOutputError
- | ContextOverflowError
- | ApiError
- }
-}
-
-export type EventInstallationUpdated = {
- type: "installation.updated"
- properties: {
- version: string
- }
-}
-
-export type EventInstallationUpdateAvailable = {
- type: "installation.update-available"
- properties: {
- version: string
- }
-}
-
export type QuestionOption = {
/**
* Display text (1-5 words, concise)
@@ -211,13 +211,7 @@ export type QuestionInfo = {
* Available choices
*/
options: Array<QuestionOption>
- /**
- * Allow selecting multiple choices
- */
multiple?: boolean
- /**
- * Allow typing a custom answer (default: true)
- */
custom?: boolean
}
@@ -236,11 +230,6 @@ export type QuestionRequest = {
tool?: QuestionTool
}
-export type EventQuestionAsked = {
- type: "question.asked"
- properties: QuestionRequest
-}
-
export type QuestionAnswer = Array<string>
export type QuestionReplied = {
@@ -249,21 +238,11 @@ export type QuestionReplied = {
answers: Array<QuestionAnswer>
}
-export type EventQuestionReplied = {
- type: "question.replied"
- properties: QuestionReplied
-}
-
export type QuestionRejected = {
sessionID: string
requestID: string
}
-export type EventQuestionRejected = {
- type: "question.rejected"
- properties: QuestionRejected
-}
-
export type Todo = {
/**
* Brief description of the task
@@ -279,14 +258,6 @@ export type Todo = {
priority: string
}
-export type EventTodoUpdated = {
- type: "todo.updated"
- properties: {
- sessionID: string
- todos: Array<Todo>
- }
-}
-
export type SessionStatus =
| {
type: "idle"
@@ -301,29 +272,8 @@ export type SessionStatus =
type: "busy"
}
-export type EventSessionStatus = {
- type: "session.status"
- properties: {
- sessionID: string
- status: SessionStatus
- }
-}
-
-export type EventSessionIdle = {
- type: "session.idle"
- properties: {
- sessionID: string
- }
-}
-
-export type EventSessionCompacted = {
- type: "session.compacted"
- properties: {
- sessionID: string
- }
-}
-
export type EventTuiPromptAppend = {
+ id: string
type: "tui.prompt.append"
properties: {
text: string
@@ -331,6 +281,7 @@ export type EventTuiPromptAppend = {
}
export type EventTuiCommandExecute = {
+ id: string
type: "tui.command.execute"
properties: {
command:
@@ -355,19 +306,18 @@ export type EventTuiCommandExecute = {
}
export type EventTuiToastShow = {
+ id: string
type: "tui.toast.show"
properties: {
title?: string
message: string
variant: "info" | "success" | "warning" | "error"
- /**
- * Duration in milliseconds
- */
duration?: number
}
}
export type EventTuiSessionSelect = {
+ id: string
type: "tui.session.select"
properties: {
/**
@@ -377,31 +327,6 @@ export type EventTuiSessionSelect = {
}
}
-export type EventMcpToolsChanged = {
- type: "mcp.tools.changed"
- properties: {
- server: string
- }
-}
-
-export type EventMcpBrowserOpenFailed = {
- type: "mcp.browser.open.failed"
- properties: {
- mcpName: string
- url: string
- }
-}
-
-export type EventCommandExecuted = {
- type: "command.executed"
- properties: {
- name: string
- sessionID: string
- arguments: string
- messageID: string
- }
-}
-
export type Project = {
id: string
worktree: string
@@ -426,65 +351,6 @@ export type Project = {
sandboxes: Array<string>
}
-export type EventProjectUpdated = {
- type: "project.updated"
- properties: Project
-}
-
-export type EventVcsBranchUpdated = {
- type: "vcs.branch.updated"
- properties: {
- branch?: string
- }
-}
-
-export type EventWorkspaceReady = {
- type: "workspace.ready"
- properties: {
- name: string
- }
-}
-
-export type EventWorkspaceFailed = {
- type: "workspace.failed"
- properties: {
- message: string
- }
-}
-
-export type EventWorkspaceRestore = {
- type: "workspace.restore"
- properties: {
- workspaceID: string
- sessionID: string
- total: number
- step: number
- }
-}
-
-export type EventWorkspaceStatus = {
- type: "workspace.status"
- properties: {
- workspaceID: string
- status: "connected" | "connecting" | "disconnected" | "error"
- }
-}
-
-export type EventWorktreeReady = {
- type: "worktree.ready"
- properties: {
- name: string
- branch: string
- }
-}
-
-export type EventWorktreeFailed = {
- type: "worktree.failed"
- properties: {
- message: string
- }
-}
-
export type Pty = {
id: string
title: string
@@ -495,35 +361,6 @@ export type Pty = {
pid: number
}
-export type EventPtyCreated = {
- type: "pty.created"
- properties: {
- info: Pty
- }
-}
-
-export type EventPtyUpdated = {
- type: "pty.updated"
- properties: {
- info: Pty
- }
-}
-
-export type EventPtyExited = {
- type: "pty.exited"
- properties: {
- id: string
- exitCode: number
- }
-}
-
-export type EventPtyDeleted = {
- type: "pty.deleted"
- properties: {
- id: string
- }
-}
-
export type OutputFormatText = {
type: "text"
}
@@ -609,22 +446,6 @@ export type AssistantMessage = {
export type Message = UserMessage | AssistantMessage
-export type EventMessageUpdated = {
- type: "message.updated"
- properties: {
- sessionID: string
- info: Message
- }
-}
-
-export type EventMessageRemoved = {
- type: "message.removed"
- properties: {
- sessionID: string
- messageID: string
- }
-}
-
export type TextPart = {
id: string
sessionID: string
@@ -888,24 +709,6 @@ export type Part =
| RetryPart
| CompactionPart
-export type EventMessagePartUpdated = {
- type: "message.part.updated"
- properties: {
- sessionID: string
- part: Part
- time: number
- }
-}
-
-export type EventMessagePartRemoved = {
- type: "message.part.removed"
- properties: {
- sessionID: string
- messageID: string
- partID: string
- }
-}
-
export type PermissionAction = "allow" | "deny" | "ask"
export type PermissionRule = {
@@ -934,6 +737,12 @@ export type Session = {
url: string
}
title: string
+ agent?: string
+ model?: {
+ id: string
+ providerID: string
+ variant?: string
+ }
version: string
time: {
created: number
@@ -950,160 +759,10 @@ export type Session = {
}
}
-export type EventSessionCreated = {
- type: "session.created"
- properties: {
- sessionID: string
- info: Session
- }
-}
-
-export type EventSessionUpdated = {
- type: "session.updated"
- properties: {
- sessionID: string
- info: Session
- }
-}
-
-export type EventSessionDeleted = {
- type: "session.deleted"
- properties: {
- sessionID: string
- info: Session
- }
-}
-
-export type EventServerConnected = {
- type: "server.connected"
- properties: {
- [key: string]: unknown
- }
-}
-
-export type EventGlobalDisposed = {
- type: "global.disposed"
- properties: {
- [key: string]: unknown
- }
-}
-
-export type SyncEventMessageUpdated = {
- type: "sync"
- name: "message.updated.1"
- id: string
- seq: number
- aggregateID: "sessionID"
- data: {
- sessionID: string
- info: Message
- }
-}
-
-export type SyncEventMessageRemoved = {
- type: "sync"
- name: "message.removed.1"
- id: string
- seq: number
- aggregateID: "sessionID"
- data: {
- sessionID: string
- messageID: string
- }
-}
-
-export type SyncEventMessagePartUpdated = {
- type: "sync"
- name: "message.part.updated.1"
- id: string
- seq: number
- aggregateID: "sessionID"
- data: {
- sessionID: string
- part: Part
- time: number
- }
-}
-
-export type SyncEventMessagePartRemoved = {
- type: "sync"
- name: "message.part.removed.1"
- id: string
- seq: number
- aggregateID: "sessionID"
- data: {
- sessionID: string
- messageID: string
- partID: string
- }
-}
-
-export type SyncEventSessionCreated = {
- type: "sync"
- name: "session.created.1"
- id: string
- seq: number
- aggregateID: "sessionID"
- data: {
- sessionID: string
- info: Session
- }
-}
-
-export type SyncEventSessionUpdated = {
- type: "sync"
- name: "session.updated.1"
- id: string
- seq: number
- aggregateID: "sessionID"
- data: {
- sessionID: string
- info: {
- id?: string | null
- slug?: string | null
- projectID?: string | null
- workspaceID?: string | null
- directory?: string | null
- path?: string | null
- parentID?: string | null
- summary?: {
- additions: number
- deletions: number
- files: number
- diffs?: Array<SnapshotFileDiff>
- } | null
- share?: {
- url?: string | null
- }
- title?: string | null
- version?: string | null
- time?: {
- created?: number | null
- updated?: number | null
- compacting?: number | null
- archived?: number | null
- }
- permission?: PermissionRuleset | null
- revert?: {
- messageID: string
- partID?: string
- snapshot?: string
- diff?: string
- } | null
- }
- }
-}
-
-export type SyncEventSessionDeleted = {
- type: "sync"
- name: "session.deleted.1"
- id: string
- seq: number
- aggregateID: "sessionID"
- data: {
- sessionID: string
- info: Session
- }
+export type Prompt = {
+ text: string
+ files?: Array<PromptFileAttachment>
+ agents?: Array<PromptAgentAttachment>
}
export type GlobalEvent = {
@@ -1156,6 +815,31 @@ export type GlobalEvent = {
| EventSessionCreated
| EventSessionUpdated
| EventSessionDeleted
+ | EventSessionNextAgentSwitched
+ | EventSessionNextModelSwitched
+ | EventSessionNextPrompted
+ | EventSessionNextSynthetic
+ | EventSessionNextShellStarted
+ | EventSessionNextShellEnded
+ | EventSessionNextStepStarted
+ | EventSessionNextStepEnded
+ | EventSessionNextTextStarted
+ | EventSessionNextTextDelta
+ | EventSessionNextTextEnded
+ | EventSessionNextReasoningStarted
+ | EventSessionNextReasoningDelta
+ | EventSessionNextReasoningEnded
+ | EventSessionNextToolInputStarted
+ | EventSessionNextToolInputDelta
+ | EventSessionNextToolInputEnded
+ | EventSessionNextToolCalled
+ | EventSessionNextToolProgress
+ | EventSessionNextToolSuccess
+ | EventSessionNextToolError
+ | EventSessionNextRetried
+ | EventSessionNextCompactionStarted
+ | EventSessionNextCompactionDelta
+ | EventSessionNextCompactionEnded
| EventServerConnected
| EventGlobalDisposed
| SyncEventMessageUpdated
@@ -1165,6 +849,31 @@ export type GlobalEvent = {
| SyncEventSessionCreated
| SyncEventSessionUpdated
| SyncEventSessionDeleted
+ | SyncEventSessionNextAgentSwitched
+ | SyncEventSessionNextModelSwitched
+ | SyncEventSessionNextPrompted
+ | SyncEventSessionNextSynthetic
+ | SyncEventSessionNextShellStarted
+ | SyncEventSessionNextShellEnded
+ | SyncEventSessionNextStepStarted
+ | SyncEventSessionNextStepEnded
+ | SyncEventSessionNextTextStarted
+ | SyncEventSessionNextTextDelta
+ | SyncEventSessionNextTextEnded
+ | SyncEventSessionNextReasoningStarted
+ | SyncEventSessionNextReasoningDelta
+ | SyncEventSessionNextReasoningEnded
+ | SyncEventSessionNextToolInputStarted
+ | SyncEventSessionNextToolInputDelta
+ | SyncEventSessionNextToolInputEnded
+ | SyncEventSessionNextToolCalled
+ | SyncEventSessionNextToolProgress
+ | SyncEventSessionNextToolSuccess
+ | SyncEventSessionNextToolError
+ | SyncEventSessionNextRetried
+ | SyncEventSessionNextCompactionStarted
+ | SyncEventSessionNextCompactionDelta
+ | SyncEventSessionNextCompactionEnded
}
/**
@@ -1176,25 +885,10 @@ export type LogLevel = "DEBUG" | "INFO" | "WARN" | "ERROR"
* Server configuration for opencode serve and web commands
*/
export type ServerConfig = {
- /**
- * Port to listen on
- */
port?: number
- /**
- * Hostname to listen on
- */
hostname?: string
- /**
- * Enable mDNS service discovery
- */
mdns?: boolean
- /**
- * Custom domain name for mDNS service (default: opencode.local)
- */
mdnsDomain?: string
- /**
- * Additional domains to allow for CORS
- */
cors?: Array<string>
}
@@ -1229,28 +923,16 @@ export type PermissionConfig =
export type AgentConfig = {
model?: string
- /**
- * Default model variant for this agent (applies only when using the agent's configured model).
- */
variant?: string
temperature?: number
top_p?: number
prompt?: string
- /**
- * @deprecated Use 'permission' field instead
- */
tools?: {
[key: string]: boolean
}
disable?: boolean
- /**
- * Description of when to use the agent
- */
description?: string
mode?: "subagent" | "primary" | "all"
- /**
- * Hide this subagent from the @ autocomplete menu (default: false, only applies to mode: subagent)
- */
hidden?: boolean
options?: {
[key: string]: unknown
@@ -1259,13 +941,7 @@ export type AgentConfig = {
* Hex color code (e.g., #FF5733) or theme color (e.g., primary)
*/
color?: string | "primary" | "secondary" | "accent" | "success" | "warning" | "error" | "info"
- /**
- * Maximum number of agentic iterations before forcing text-only response
- */
steps?: number
- /**
- * @deprecated Use 'steps' field instead.
- */
maxSteps?: number
permission?: PermissionConfig
[key: string]:
@@ -1306,21 +982,12 @@ export type ProviderConfig = {
options?: {
apiKey?: string
baseURL?: string
- /**
- * GitHub Enterprise URL for copilot authentication
- */
enterpriseUrl?: string
- /**
- * Enable promptCacheKey for this provider (default false)
- */
setCacheKey?: boolean
/**
* Timeout in milliseconds for requests to this provider. Default is 300000 (5 minutes). Set to false to disable timeout.
*/
timeout?: number | false
- /**
- * Timeout in milliseconds between streamed SSE chunks for this provider. If no chunk arrives within this window, the request is aborted.
- */
chunkTimeout?: number
[key: string]: unknown | string | boolean | number | false | number | undefined
}
@@ -1377,9 +1044,6 @@ export type ProviderConfig = {
*/
variants?: {
[key: string]: {
- /**
- * Disable this variant for the model
- */
disabled?: boolean
[key: string]: unknown | boolean | undefined
}
@@ -1397,38 +1061,17 @@ export type McpLocalConfig = {
* Command and arguments to run the MCP server
*/
command: Array<string>
- /**
- * Environment variables to set when running the MCP server
- */
environment?: {
[key: string]: string
}
- /**
- * Enable or disable the MCP server on startup
- */
enabled?: boolean
- /**
- * Timeout in ms for MCP server requests. Defaults to 5000 (5 seconds) if not specified.
- */
timeout?: number
}
export type McpOAuthConfig = {
- /**
- * OAuth client ID. If not provided, dynamic client registration (RFC 7591) will be attempted.
- */
clientId?: string
- /**
- * OAuth client secret (if required by the authorization server)
- */
clientSecret?: string
- /**
- * OAuth scopes to request during authorization
- */
scope?: string
- /**
- * OAuth redirect URI (default: http://127.0.0.1:19876/mcp/oauth/callback).
- */
redirectUri?: string
}
@@ -1441,13 +1084,7 @@ export type McpRemoteConfig = {
* URL of the remote MCP server
*/
url: string
- /**
- * Enable or disable the MCP server on startup
- */
enabled?: boolean
- /**
- * Headers to send with the request
- */
headers?: {
[key: string]: string
}
@@ -1455,9 +1092,6 @@ export type McpRemoteConfig = {
* OAuth authentication configuration for the MCP server. Set to false to disable OAuth auto-detection.
*/
oauth?: McpOAuthConfig | false
- /**
- * Timeout in ms for MCP server requests. Defaults to 5000 (5 seconds) if not specified.
- */
timeout?: number
}
@@ -1467,19 +1101,10 @@ export type McpRemoteConfig = {
export type LayoutConfig = "auto" | "stretch"
export type Config = {
- /**
- * JSON schema reference for configuration validation
- */
$schema?: string
- /**
- * Default shell to use for terminal and bash tool
- */
shell?: string
logLevel?: LogLevel
server?: ServerConfig
- /**
- * Command configuration, see https://opencode.ai/docs/commands
- */
command?: {
[key: string]: {
template: string
@@ -1489,25 +1114,13 @@ export type Config = {
subtask?: boolean
}
}
- /**
- * Additional skill folder paths
- */
skills?: {
- /**
- * Additional paths to skill folders
- */
paths?: Array<string>
- /**
- * URLs to fetch skills from (e.g., https://example.com/.well-known/skills/)
- */
urls?: Array<string>
}
watcher?: {
ignore?: Array<string>
}
- /**
- * Enable or disable snapshot tracking. When false, filesystem snapshots are not recorded and undoing or reverting will not undo/redo file changes. Defaults to true.
- */
snapshot?: boolean
plugin?: Array<
| string
@@ -1518,53 +1131,23 @@ export type Config = {
},
]
>
- /**
- * Control sharing behavior:'manual' allows manual sharing via commands, 'auto' enables automatic sharing, 'disabled' disables all sharing
- */
share?: "manual" | "auto" | "disabled"
- /**
- * @deprecated Use 'share' field instead. Share newly created sessions automatically
- */
autoshare?: boolean
/**
* Automatically update to the latest version. Set to true to auto-update, false to disable, or 'notify' to show update notifications
*/
autoupdate?: boolean | "notify"
- /**
- * Disable providers that are loaded automatically
- */
disabled_providers?: Array<string>
- /**
- * When set, ONLY these providers will be enabled. All other providers will be ignored
- */
enabled_providers?: Array<string>
- /**
- * Model to use in the format of provider/model, eg anthropic/claude-2
- */
model?: string
- /**
- * Small model to use for tasks like title generation in the format of provider/model
- */
small_model?: string
- /**
- * Default agent to use when none is specified. Must be a primary agent. Falls back to 'build' if not set or if the specified agent is invalid.
- */
default_agent?: string
- /**
- * Custom username to display in conversations instead of system username
- */
username?: string
- /**
- * @deprecated Use `agent` field instead.
- */
mode?: {
build?: AgentConfig
plan?: AgentConfig
[key: string]: AgentConfig | undefined
}
- /**
- * Agent configuration, see https://opencode.ai/docs/agents
- */
agent?: {
plan?: AgentConfig
build?: AgentConfig
@@ -1575,15 +1158,9 @@ export type Config = {
compaction?: AgentConfig
[key: string]: AgentConfig | undefined
}
- /**
- * Custom provider configurations and model overrides
- */
provider?: {
[key: string]: ProviderConfig
}
- /**
- * MCP (Model Context Protocol) server configurations
- */
mcp?: {
[key: string]:
| McpLocalConfig
@@ -1629,9 +1206,6 @@ export type Config = {
}
}
}
- /**
- * Additional instruction files or patterns to include
- */
instructions?: Array<string>
layout?: LayoutConfig
permission?: PermissionConfig
@@ -1639,121 +1213,29 @@ export type Config = {
[key: string]: boolean
}
enterprise?: {
- /**
- * Enterprise URL
- */
url?: string
}
- /**
- * Thresholds for truncating tool output. When output exceeds either limit, the full text is written to the truncation directory and a preview is returned.
- */
tool_output?: {
- /**
- * Maximum lines of tool output before it is truncated and saved to disk (default: 2000)
- */
max_lines?: number
- /**
- * Maximum bytes of tool output before it is truncated and saved to disk (default: 51200)
- */
max_bytes?: number
}
compaction?: {
- /**
- * Enable automatic compaction when context is full (default: true)
- */
auto?: boolean
- /**
- * Enable pruning of old tool outputs (default: true)
- */
prune?: boolean
- /**
- * Number of recent user turns, including their following assistant/tool responses, to keep verbatim during compaction (default: 2)
- */
tail_turns?: number
- /**
- * Maximum number of tokens from recent turns to preserve verbatim after compaction
- */
preserve_recent_tokens?: number
- /**
- * Token buffer for compaction. Leaves enough window to avoid overflow during compaction.
- */
reserved?: number
}
experimental?: {
disable_paste_summary?: boolean
- /**
- * Enable the batch tool
- */
batch_tool?: boolean
- /**
- * Enable OpenTelemetry spans for AI SDK calls (using the 'experimental_telemetry' flag)
- */
openTelemetry?: boolean
- /**
- * Tools that should only be available to primary agents.
- */
primary_tools?: Array<string>
- /**
- * Continue the agent loop when a tool call is denied
- */
continue_loop_on_deny?: boolean
- /**
- * Timeout in milliseconds for model context protocol (MCP) requests
- */
mcp_timeout?: number
}
}
-export type BadRequestError = {
- data: unknown
- errors: Array<{
- [key: string]: unknown
- }>
- success: false
-}
-
-export type OAuth = {
- type: "oauth"
- refresh: string
- access: string
- expires: number
- accountId?: string
- enterpriseUrl?: string
-}
-
-export type ApiAuth = {
- type: "api"
- key: string
- metadata?: {
- [key: string]: string
- }
-}
-
-export type WellKnownAuth = {
- type: "wellknown"
- key: string
- token: string
-}
-
-export type Auth = OAuth | ApiAuth | WellKnownAuth
-
-export type Workspace = {
- id: string
- type: string
- name: string
- branch: string | null
- directory: string | null
- extra: unknown | null
- projectID: string
-}
-
-export type NotFoundError = {
- name: "NotFoundError"
- data: {
- message: string
- }
-}
-
export type Model = {
id: string
providerID: string
@@ -1845,8 +1327,6 @@ export type ConsoleState = {
switchableOrgCount: number
}
-export type ToolIds = Array<string>
-
export type ToolListItem = {
id: string
description: string
@@ -1855,11 +1335,7 @@ export type ToolListItem = {
export type ToolList = Array<ToolListItem>
-export type Worktree = {
- name: string
- branch: string
- directory: string
-}
+export type ToolIds = Array<string>
export type WorktreeCreateInput = {
name?: string
@@ -1869,6 +1345,12 @@ export type WorktreeCreateInput = {
startCommand?: string
}
+export type Worktree = {
+ name: string
+ branch: string
+ directory: string
+}
+
export type WorktreeRemoveInput = {
directory: string
}
@@ -1901,6 +1383,12 @@ export type GlobalSession = {
url: string
}
title: string
+ agent?: string
+ model?: {
+ id: string
+ providerID: string
+ variant?: string
+ }
version: string
time: {
created: number
@@ -1926,93 +1414,6 @@ export type McpResource = {
client: string
}
-export type TextPartInput = {
- id?: string
- type: "text"
- text: string
- synthetic?: boolean
- ignored?: boolean
- time?: {
- start: number
- end?: number
- }
- metadata?: {
- [key: string]: unknown
- }
-}
-
-export type FilePartInput = {
- id?: string
- type: "file"
- mime: string
- filename?: string
- url: string
- source?: FilePartSource
-}
-
-export type AgentPartInput = {
- id?: string
- type: "agent"
- name: string
- source?: {
- value: string
- start: number
- end: number
- }
-}
-
-export type SubtaskPartInput = {
- id?: string
- type: "subtask"
- prompt: string
- description: string
- agent: string
- model?: {
- providerID: string
- modelID: string
- }
- command?: string
-}
-
-export type ProviderAuthMethod = {
- type: "oauth" | "api"
- label: string
- prompts?: Array<
- | {
- type: "text"
- key: string
- message: string
- placeholder?: string
- when?: {
- key: string
- op: "eq" | "neq"
- value: string
- }
- }
- | {
- type: "select"
- key: string
- message: string
- options: Array<{
- label: string
- value: string
- hint?: string
- }>
- when?: {
- key: string
- op: "eq" | "neq"
- value: string
- }
- }
- >
-}
-
-export type ProviderAuthAuthorization = {
- url: string
- method: "auto" | "code"
- instructions: string
-}
-
export type Symbol = {
name: string
kind: number
@@ -2059,88 +1460,6 @@ export type File = {
status: "added" | "deleted" | "modified"
}
-export type Event =
- | EventServerInstanceDisposed
- | EventFileEdited
- | EventFileWatcherUpdated
- | EventLspClientDiagnostics
- | EventLspUpdated
- | EventMessagePartDelta
- | EventPermissionAsked
- | EventPermissionReplied
- | EventSessionDiff
- | EventSessionError
- | EventInstallationUpdated
- | EventInstallationUpdateAvailable
- | EventQuestionAsked
- | EventQuestionReplied
- | EventQuestionRejected
- | EventTodoUpdated
- | EventSessionStatus
- | EventSessionIdle
- | EventSessionCompacted
- | EventTuiPromptAppend
- | EventTuiCommandExecute
- | EventTuiToastShow
- | EventTuiSessionSelect
- | EventMcpToolsChanged
- | EventMcpBrowserOpenFailed
- | EventCommandExecuted
- | EventProjectUpdated
- | EventVcsBranchUpdated
- | EventWorkspaceReady
- | EventWorkspaceFailed
- | EventWorkspaceRestore
- | EventWorkspaceStatus
- | EventWorktreeReady
- | EventWorktreeFailed
- | EventPtyCreated
- | EventPtyUpdated
- | EventPtyExited
- | EventPtyDeleted
- | EventMessageUpdated
- | EventMessageRemoved
- | EventMessagePartUpdated
- | EventMessagePartRemoved
- | EventSessionCreated
- | EventSessionUpdated
- | EventSessionDeleted
- | EventServerConnected
- | EventGlobalDisposed
-
-export type McpStatusConnected = {
- status: "connected"
-}
-
-export type McpStatusDisabled = {
- status: "disabled"
-}
-
-export type McpStatusFailed = {
- status: "failed"
- error: string
-}
-
-export type McpStatusNeedsAuth = {
- status: "needs_auth"
-}
-
-export type McpStatusNeedsClientRegistration = {
- status: "needs_client_registration"
- error: string
-}
-
-export type McpStatus =
- | McpStatusConnected
- | McpStatusDisabled
- | McpStatusFailed
- | McpStatusNeedsAuth
- | McpStatusNeedsClientRegistration
-
-export type McpUnsupportedOAuthError = {
- error: string
-}
-
export type Path = {
home: string
state: string
@@ -2208,6 +1527,1791 @@ export type FormatterStatus = {
enabled: boolean
}
+export type McpStatusConnected = {
+ status: "connected"
+}
+
+export type McpStatusDisabled = {
+ status: "disabled"
+}
+
+export type McpStatusFailed = {
+ status: "failed"
+ error: string
+}
+
+export type McpStatusNeedsAuth = {
+ status: "needs_auth"
+}
+
+export type McpStatusNeedsClientRegistration = {
+ status: "needs_client_registration"
+ error: string
+}
+
+export type McpStatus =
+ | McpStatusConnected
+ | McpStatusDisabled
+ | McpStatusFailed
+ | McpStatusNeedsAuth
+ | McpStatusNeedsClientRegistration
+
+export type McpUnsupportedOAuthError = {
+ error: string
+}
+
+export type ProviderAuthMethod = {
+ type: "oauth" | "api"
+ label: string
+ prompts?: Array<
+ | {
+ type: "text"
+ key: string
+ message: string
+ placeholder?: string
+ when?: {
+ key: string
+ op: "eq" | "neq"
+ value: string
+ }
+ }
+ | {
+ type: "select"
+ key: string
+ message: string
+ options: Array<{
+ label: string
+ value: string
+ hint?: string
+ }>
+ when?: {
+ key: string
+ op: "eq" | "neq"
+ value: string
+ }
+ }
+ >
+}
+
+export type ProviderAuthAuthorization = {
+ url: string
+ method: "auto" | "code"
+ instructions: string
+}
+
+export type TextPartInput = {
+ id?: string
+ type: "text"
+ text: string
+ synthetic?: boolean
+ ignored?: boolean
+ time?: {
+ start: number
+ end?: number
+ }
+ metadata?: {
+ [key: string]: unknown
+ }
+}
+
+export type FilePartInput = {
+ id?: string
+ type: "file"
+ mime: string
+ filename?: string
+ url: string
+ source?: FilePartSource
+}
+
+export type AgentPartInput = {
+ id?: string
+ type: "agent"
+ name: string
+ source?: {
+ value: string
+ start: number
+ end: number
+ }
+}
+
+export type SubtaskPartInput = {
+ id?: string
+ type: "subtask"
+ prompt: string
+ description: string
+ agent: string
+ model?: {
+ providerID: string
+ modelID: string
+ }
+ command?: string
+}
+
+export type V2SessionsResponse = {
+ items: Array<SessionInfo>
+ cursor: {
+ previous?: string
+ next?: string
+ }
+}
+
+export type V2SessionMessagesResponse = {
+ items: Array<SessionMessage>
+ cursor: {
+ previous?: string
+ next?: string
+ }
+}
+
+export type EventTuiPromptAppend2 = {
+ type: "tui.prompt.append"
+ properties: {
+ text: string
+ }
+}
+
+export type EventTuiCommandExecute2 = {
+ type: "tui.command.execute"
+ properties: {
+ command:
+ | "session.list"
+ | "session.new"
+ | "session.share"
+ | "session.interrupt"
+ | "session.compact"
+ | "session.page.up"
+ | "session.page.down"
+ | "session.line.up"
+ | "session.line.down"
+ | "session.half.page.up"
+ | "session.half.page.down"
+ | "session.first"
+ | "session.last"
+ | "prompt.clear"
+ | "prompt.submit"
+ | "agent.cycle"
+ | string
+ }
+}
+
+export type EventTuiToastShow2 = {
+ type: "tui.toast.show"
+ properties: {
+ title?: string
+ message: string
+ variant: "info" | "success" | "warning" | "error"
+ duration?: number
+ }
+}
+
+export type EventTuiSessionSelect2 = {
+ type: "tui.session.select"
+ properties: {
+ /**
+ * Session ID to navigate to
+ */
+ sessionID: string
+ }
+}
+
+export type Workspace = {
+ id: string
+ type: string
+ name: string
+ branch: string | null
+ directory: string | null
+ extra: unknown | null
+ projectID: string
+}
+
+export type SyncEventMessageUpdated = {
+ type: "sync"
+ name: "message.updated.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
+ data: {
+ sessionID: string
+ info: Message
+ }
+}
+
+export type SyncEventMessageRemoved = {
+ type: "sync"
+ name: "message.removed.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
+ data: {
+ sessionID: string
+ messageID: string
+ }
+}
+
+export type SyncEventMessagePartUpdated = {
+ type: "sync"
+ name: "message.part.updated.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
+ data: {
+ sessionID: string
+ part: Part
+ time: number
+ }
+}
+
+export type SyncEventMessagePartRemoved = {
+ type: "sync"
+ name: "message.part.removed.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
+ data: {
+ sessionID: string
+ messageID: string
+ partID: string
+ }
+}
+
+export type SyncEventSessionCreated = {
+ type: "sync"
+ name: "session.created.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
+ data: {
+ sessionID: string
+ info: Session
+ }
+}
+
+export type SyncEventSessionUpdated = {
+ type: "sync"
+ name: "session.updated.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
+ data: {
+ sessionID: string
+ info: {
+ id?: string | null
+ slug?: string | null
+ projectID?: string | null
+ workspaceID?: string | null
+ directory?: string | null
+ path?: string | null
+ parentID?: string | null
+ summary?: {
+ additions: number
+ deletions: number
+ files: number
+ diffs?: Array<SnapshotFileDiff>
+ } | null
+ share?: {
+ url?: string | null
+ }
+ title?: string | null
+ agent?: string | null
+ model?: {
+ id: string
+ providerID: string
+ variant?: string
+ } | null
+ version?: string | null
+ time?: {
+ created?: number | null
+ updated?: number | null
+ compacting?: number | null
+ archived?: number | null
+ }
+ permission?: PermissionRuleset | null
+ revert?: {
+ messageID: string
+ partID?: string
+ snapshot?: string
+ diff?: string
+ } | null
+ }
+ }
+}
+
+export type SyncEventSessionDeleted = {
+ type: "sync"
+ name: "session.deleted.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
+ data: {
+ sessionID: string
+ info: Session
+ }
+}
+
+export type SyncEventSessionNextAgentSwitched = {
+ type: "sync"
+ name: "session.next.agent.switched.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
+ data: {
+ timestamp: number
+ sessionID: string
+ agent: string
+ }
+}
+
+export type SyncEventSessionNextModelSwitched = {
+ type: "sync"
+ name: "session.next.model.switched.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
+ data: {
+ timestamp: number
+ sessionID: string
+ id: string
+ providerID: string
+ variant?: string
+ }
+}
+
+export type SyncEventSessionNextPrompted = {
+ type: "sync"
+ name: "session.next.prompted.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
+ data: {
+ timestamp: number
+ sessionID: string
+ prompt: Prompt
+ }
+}
+
+export type SyncEventSessionNextSynthetic = {
+ type: "sync"
+ name: "session.next.synthetic.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
+ data: {
+ timestamp: number
+ sessionID: string
+ text: string
+ }
+}
+
+export type SyncEventSessionNextShellStarted = {
+ type: "sync"
+ name: "session.next.shell.started.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
+ data: {
+ timestamp: number
+ sessionID: string
+ callID: string
+ command: string
+ }
+}
+
+export type SyncEventSessionNextShellEnded = {
+ type: "sync"
+ name: "session.next.shell.ended.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
+ data: {
+ timestamp: number
+ sessionID: string
+ callID: string
+ output: string
+ }
+}
+
+export type SyncEventSessionNextStepStarted = {
+ type: "sync"
+ name: "session.next.step.started.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
+ data: {
+ timestamp: number
+ sessionID: string
+ agent: string
+ model: {
+ id: string
+ providerID: string
+ variant?: string
+ }
+ snapshot?: string
+ }
+}
+
+export type SyncEventSessionNextStepEnded = {
+ type: "sync"
+ name: "session.next.step.ended.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
+ data: {
+ timestamp: number
+ sessionID: string
+ finish: string
+ cost: number
+ tokens: {
+ input: number
+ output: number
+ reasoning: number
+ cache: {
+ read: number
+ write: number
+ }
+ }
+ snapshot?: string
+ }
+}
+
+export type SyncEventSessionNextTextStarted = {
+ type: "sync"
+ name: "session.next.text.started.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
+ data: {
+ timestamp: number
+ sessionID: string
+ }
+}
+
+export type SyncEventSessionNextTextDelta = {
+ type: "sync"
+ name: "session.next.text.delta.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
+ data: {
+ timestamp: number
+ sessionID: string
+ delta: string
+ }
+}
+
+export type SyncEventSessionNextTextEnded = {
+ type: "sync"
+ name: "session.next.text.ended.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
+ data: {
+ timestamp: number
+ sessionID: string
+ text: string
+ }
+}
+
+export type SyncEventSessionNextReasoningStarted = {
+ type: "sync"
+ name: "session.next.reasoning.started.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
+ data: {
+ timestamp: number
+ sessionID: string
+ reasoningID: string
+ }
+}
+
+export type SyncEventSessionNextReasoningDelta = {
+ type: "sync"
+ name: "session.next.reasoning.delta.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
+ data: {
+ timestamp: number
+ sessionID: string
+ reasoningID: string
+ delta: string
+ }
+}
+
+export type SyncEventSessionNextReasoningEnded = {
+ type: "sync"
+ name: "session.next.reasoning.ended.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
+ data: {
+ timestamp: number
+ sessionID: string
+ reasoningID: string
+ text: string
+ }
+}
+
+export type SyncEventSessionNextToolInputStarted = {
+ type: "sync"
+ name: "session.next.tool.input.started.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
+ data: {
+ timestamp: number
+ sessionID: string
+ callID: string
+ name: string
+ }
+}
+
+export type SyncEventSessionNextToolInputDelta = {
+ type: "sync"
+ name: "session.next.tool.input.delta.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
+ data: {
+ timestamp: number
+ sessionID: string
+ callID: string
+ delta: string
+ }
+}
+
+export type SyncEventSessionNextToolInputEnded = {
+ type: "sync"
+ name: "session.next.tool.input.ended.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
+ data: {
+ timestamp: number
+ sessionID: string
+ callID: string
+ text: string
+ }
+}
+
+export type SyncEventSessionNextToolCalled = {
+ type: "sync"
+ name: "session.next.tool.called.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
+ data: {
+ timestamp: number
+ sessionID: string
+ callID: string
+ tool: string
+ input: {
+ [key: string]: unknown
+ }
+ provider: {
+ executed: boolean
+ metadata?: {
+ [key: string]: unknown
+ }
+ }
+ }
+}
+
+export type SyncEventSessionNextToolProgress = {
+ type: "sync"
+ name: "session.next.tool.progress.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
+ data: {
+ timestamp: number
+ sessionID: string
+ callID: string
+ structured: {
+ [key: string]: unknown
+ }
+ content: Array<ToolTextContent | ToolFileContent>
+ }
+}
+
+export type SyncEventSessionNextToolSuccess = {
+ type: "sync"
+ name: "session.next.tool.success.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
+ data: {
+ timestamp: number
+ sessionID: string
+ callID: string
+ structured: {
+ [key: string]: unknown
+ }
+ content: Array<ToolTextContent | ToolFileContent>
+ provider: {
+ executed: boolean
+ metadata?: {
+ [key: string]: unknown
+ }
+ }
+ }
+}
+
+export type SyncEventSessionNextToolError = {
+ type: "sync"
+ name: "session.next.tool.error.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
+ data: {
+ timestamp: number
+ sessionID: string
+ callID: string
+ error: {
+ type: string
+ message: string
+ }
+ provider: {
+ executed: boolean
+ metadata?: {
+ [key: string]: unknown
+ }
+ }
+ }
+}
+
+export type SyncEventSessionNextRetried = {
+ type: "sync"
+ name: "session.next.retried.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
+ data: {
+ timestamp: number
+ sessionID: string
+ attempt: number
+ error: SessionNextRetryError
+ }
+}
+
+export type SyncEventSessionNextCompactionStarted = {
+ type: "sync"
+ name: "session.next.compaction.started.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
+ data: {
+ timestamp: number
+ sessionID: string
+ reason: "auto" | "manual"
+ }
+}
+
+export type SyncEventSessionNextCompactionDelta = {
+ type: "sync"
+ name: "session.next.compaction.delta.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
+ data: {
+ timestamp: number
+ sessionID: string
+ text: string
+ }
+}
+
+export type SyncEventSessionNextCompactionEnded = {
+ type: "sync"
+ name: "session.next.compaction.ended.1"
+ id: string
+ seq: number
+ aggregateID: "sessionID"
+ data: {
+ timestamp: number
+ sessionID: string
+ text: string
+ include?: string
+ }
+}
+
+export type EventServerInstanceDisposed = {
+ id: string
+ type: "server.instance.disposed"
+ properties: {
+ directory: string
+ }
+}
+
+export type EventFileEdited = {
+ id: string
+ type: "file.edited"
+ properties: {
+ file: string
+ }
+}
+
+export type EventFileWatcherUpdated = {
+ id: string
+ type: "file.watcher.updated"
+ properties: {
+ file: string
+ event: "add" | "change" | "unlink"
+ }
+}
+
+export type EventLspClientDiagnostics = {
+ id: string
+ type: "lsp.client.diagnostics"
+ properties: {
+ serverID: string
+ path: string
+ }
+}
+
+export type EventLspUpdated = {
+ id: string
+ type: "lsp.updated"
+ properties: {
+ [key: string]: unknown
+ }
+}
+
+export type EventMessagePartDelta = {
+ id: string
+ type: "message.part.delta"
+ properties: {
+ sessionID: string
+ messageID: string
+ partID: string
+ field: string
+ delta: string
+ }
+}
+
+export type EventPermissionAsked = {
+ id: string
+ type: "permission.asked"
+ properties: PermissionRequest
+}
+
+export type EventPermissionReplied = {
+ id: string
+ type: "permission.replied"
+ properties: {
+ sessionID: string
+ requestID: string
+ reply: "once" | "always" | "reject"
+ }
+}
+
+export type EventSessionDiff = {
+ id: string
+ type: "session.diff"
+ properties: {
+ sessionID: string
+ diff: Array<SnapshotFileDiff>
+ }
+}
+
+export type EventSessionError = {
+ id: string
+ type: "session.error"
+ properties: {
+ sessionID?: string
+ error?:
+ | ProviderAuthError
+ | UnknownError
+ | MessageOutputLengthError
+ | MessageAbortedError
+ | StructuredOutputError
+ | ContextOverflowError
+ | ApiError
+ }
+}
+
+export type EventInstallationUpdated = {
+ id: string
+ type: "installation.updated"
+ properties: {
+ version: string
+ }
+}
+
+export type EventInstallationUpdateAvailable = {
+ id: string
+ type: "installation.update-available"
+ properties: {
+ version: string
+ }
+}
+
+export type EventQuestionAsked = {
+ id: string
+ type: "question.asked"
+ properties: QuestionRequest
+}
+
+export type EventQuestionReplied = {
+ id: string
+ type: "question.replied"
+ properties: QuestionReplied
+}
+
+export type EventQuestionRejected = {
+ id: string
+ type: "question.rejected"
+ properties: QuestionRejected
+}
+
+export type EventTodoUpdated = {
+ id: string
+ type: "todo.updated"
+ properties: {
+ sessionID: string
+ todos: Array<Todo>
+ }
+}
+
+export type EventSessionStatus = {
+ id: string
+ type: "session.status"
+ properties: {
+ sessionID: string
+ status: SessionStatus
+ }
+}
+
+export type EventSessionIdle = {
+ id: string
+ type: "session.idle"
+ properties: {
+ sessionID: string
+ }
+}
+
+export type EventSessionCompacted = {
+ id: string
+ type: "session.compacted"
+ properties: {
+ sessionID: string
+ }
+}
+
+export type EventMcpToolsChanged = {
+ id: string
+ type: "mcp.tools.changed"
+ properties: {
+ server: string
+ }
+}
+
+export type EventMcpBrowserOpenFailed = {
+ id: string
+ type: "mcp.browser.open.failed"
+ properties: {
+ mcpName: string
+ url: string
+ }
+}
+
+export type EventCommandExecuted = {
+ id: string
+ type: "command.executed"
+ properties: {
+ name: string
+ sessionID: string
+ arguments: string
+ messageID: string
+ }
+}
+
+export type EventProjectUpdated = {
+ id: string
+ type: "project.updated"
+ properties: Project
+}
+
+export type EventVcsBranchUpdated = {
+ id: string
+ type: "vcs.branch.updated"
+ properties: {
+ branch?: string
+ }
+}
+
+export type EventWorkspaceReady = {
+ id: string
+ type: "workspace.ready"
+ properties: {
+ name: string
+ }
+}
+
+export type EventWorkspaceFailed = {
+ id: string
+ type: "workspace.failed"
+ properties: {
+ message: string
+ }
+}
+
+export type EventWorkspaceRestore = {
+ id: string
+ type: "workspace.restore"
+ properties: {
+ workspaceID: string
+ sessionID: string
+ total: number
+ step: number
+ }
+}
+
+export type EventWorkspaceStatus = {
+ id: string
+ type: "workspace.status"
+ properties: {
+ workspaceID: string
+ status: "connected" | "connecting" | "disconnected" | "error"
+ }
+}
+
+export type EventWorktreeReady = {
+ id: string
+ type: "worktree.ready"
+ properties: {
+ name: string
+ branch: string
+ }
+}
+
+export type EventWorktreeFailed = {
+ id: string
+ type: "worktree.failed"
+ properties: {
+ message: string
+ }
+}
+
+export type EventPtyCreated = {
+ id: string
+ type: "pty.created"
+ properties: {
+ info: Pty
+ }
+}
+
+export type EventPtyUpdated = {
+ id: string
+ type: "pty.updated"
+ properties: {
+ info: Pty
+ }
+}
+
+export type EventPtyExited = {
+ id: string
+ type: "pty.exited"
+ properties: {
+ id: string
+ exitCode: number
+ }
+}
+
+export type EventPtyDeleted = {
+ id: string
+ type: "pty.deleted"
+ properties: {
+ id: string
+ }
+}
+
+export type EventMessageUpdated = {
+ id: string
+ type: "message.updated"
+ properties: {
+ sessionID: string
+ info: Message
+ }
+}
+
+export type EventMessageRemoved = {
+ id: string
+ type: "message.removed"
+ properties: {
+ sessionID: string
+ messageID: string
+ }
+}
+
+export type EventMessagePartUpdated = {
+ id: string
+ type: "message.part.updated"
+ properties: {
+ sessionID: string
+ part: Part
+ time: number
+ }
+}
+
+export type EventMessagePartRemoved = {
+ id: string
+ type: "message.part.removed"
+ properties: {
+ sessionID: string
+ messageID: string
+ partID: string
+ }
+}
+
+export type EventSessionCreated = {
+ id: string
+ type: "session.created"
+ properties: {
+ sessionID: string
+ info: Session
+ }
+}
+
+export type EventSessionUpdated = {
+ id: string
+ type: "session.updated"
+ properties: {
+ sessionID: string
+ info: Session
+ }
+}
+
+export type EventSessionDeleted = {
+ id: string
+ type: "session.deleted"
+ properties: {
+ sessionID: string
+ info: Session
+ }
+}
+
+export type EventSessionNextAgentSwitched = {
+ id: string
+ type: "session.next.agent.switched"
+ properties: {
+ timestamp: number
+ sessionID: string
+ agent: string
+ }
+}
+
+export type EventSessionNextModelSwitched = {
+ id: string
+ type: "session.next.model.switched"
+ properties: {
+ timestamp: number
+ sessionID: string
+ id: string
+ providerID: string
+ variant?: string
+ }
+}
+
+export type PromptSource = {
+ start: number
+ end: number
+ text: string
+}
+
+export type PromptFileAttachment = {
+ uri: string
+ mime: string
+ name?: string
+ description?: string
+ source?: PromptSource
+}
+
+export type PromptAgentAttachment = {
+ name: string
+ source?: PromptSource
+}
+
+export type EventSessionNextPrompted = {
+ id: string
+ type: "session.next.prompted"
+ properties: {
+ timestamp: number
+ sessionID: string
+ prompt: Prompt
+ }
+}
+
+export type EventSessionNextSynthetic = {
+ id: string
+ type: "session.next.synthetic"
+ properties: {
+ timestamp: number
+ sessionID: string
+ text: string
+ }
+}
+
+export type EventSessionNextShellStarted = {
+ id: string
+ type: "session.next.shell.started"
+ properties: {
+ timestamp: number
+ sessionID: string
+ callID: string
+ command: string
+ }
+}
+
+export type EventSessionNextShellEnded = {
+ id: string
+ type: "session.next.shell.ended"
+ properties: {
+ timestamp: number
+ sessionID: string
+ callID: string
+ output: string
+ }
+}
+
+export type EventSessionNextStepStarted = {
+ id: string
+ type: "session.next.step.started"
+ properties: {
+ timestamp: number
+ sessionID: string
+ agent: string
+ model: {
+ id: string
+ providerID: string
+ variant?: string
+ }
+ snapshot?: string
+ }
+}
+
+export type EventSessionNextStepEnded = {
+ id: string
+ type: "session.next.step.ended"
+ properties: {
+ timestamp: number
+ sessionID: string
+ finish: string
+ cost: number
+ tokens: {
+ input: number
+ output: number
+ reasoning: number
+ cache: {
+ read: number
+ write: number
+ }
+ }
+ snapshot?: string
+ }
+}
+
+export type EventSessionNextTextStarted = {
+ id: string
+ type: "session.next.text.started"
+ properties: {
+ timestamp: number
+ sessionID: string
+ }
+}
+
+export type EventSessionNextTextDelta = {
+ id: string
+ type: "session.next.text.delta"
+ properties: {
+ timestamp: number
+ sessionID: string
+ delta: string
+ }
+}
+
+export type EventSessionNextTextEnded = {
+ id: string
+ type: "session.next.text.ended"
+ properties: {
+ timestamp: number
+ sessionID: string
+ text: string
+ }
+}
+
+export type EventSessionNextReasoningStarted = {
+ id: string
+ type: "session.next.reasoning.started"
+ properties: {
+ timestamp: number
+ sessionID: string
+ reasoningID: string
+ }
+}
+
+export type EventSessionNextReasoningDelta = {
+ id: string
+ type: "session.next.reasoning.delta"
+ properties: {
+ timestamp: number
+ sessionID: string
+ reasoningID: string
+ delta: string
+ }
+}
+
+export type EventSessionNextReasoningEnded = {
+ id: string
+ type: "session.next.reasoning.ended"
+ properties: {
+ timestamp: number
+ sessionID: string
+ reasoningID: string
+ text: string
+ }
+}
+
+export type EventSessionNextToolInputStarted = {
+ id: string
+ type: "session.next.tool.input.started"
+ properties: {
+ timestamp: number
+ sessionID: string
+ callID: string
+ name: string
+ }
+}
+
+export type EventSessionNextToolInputDelta = {
+ id: string
+ type: "session.next.tool.input.delta"
+ properties: {
+ timestamp: number
+ sessionID: string
+ callID: string
+ delta: string
+ }
+}
+
+export type EventSessionNextToolInputEnded = {
+ id: string
+ type: "session.next.tool.input.ended"
+ properties: {
+ timestamp: number
+ sessionID: string
+ callID: string
+ text: string
+ }
+}
+
+export type EventSessionNextToolCalled = {
+ id: string
+ type: "session.next.tool.called"
+ properties: {
+ timestamp: number
+ sessionID: string
+ callID: string
+ tool: string
+ input: {
+ [key: string]: unknown
+ }
+ provider: {
+ executed: boolean
+ metadata?: {
+ [key: string]: unknown
+ }
+ }
+ }
+}
+
+export type ToolTextContent = {
+ type: "text"
+ text: string
+}
+
+export type ToolFileContent = {
+ type: "file"
+ uri: string
+ mime: string
+ name?: string
+}
+
+export type EventSessionNextToolProgress = {
+ id: string
+ type: "session.next.tool.progress"
+ properties: {
+ timestamp: number
+ sessionID: string
+ callID: string
+ structured: {
+ [key: string]: unknown
+ }
+ content: Array<ToolTextContent | ToolFileContent>
+ }
+}
+
+export type EventSessionNextToolSuccess = {
+ id: string
+ type: "session.next.tool.success"
+ properties: {
+ timestamp: number
+ sessionID: string
+ callID: string
+ structured: {
+ [key: string]: unknown
+ }
+ content: Array<ToolTextContent | ToolFileContent>
+ provider: {
+ executed: boolean
+ metadata?: {
+ [key: string]: unknown
+ }
+ }
+ }
+}
+
+export type EventSessionNextToolError = {
+ id: string
+ type: "session.next.tool.error"
+ properties: {
+ timestamp: number
+ sessionID: string
+ callID: string
+ error: {
+ type: string
+ message: string
+ }
+ provider: {
+ executed: boolean
+ metadata?: {
+ [key: string]: unknown
+ }
+ }
+ }
+}
+
+export type SessionNextRetryError = {
+ message: string
+ statusCode?: number
+ isRetryable: boolean
+ responseHeaders?: {
+ [key: string]: string
+ }
+ responseBody?: string
+ metadata?: {
+ [key: string]: string
+ }
+}
+
+export type EventSessionNextRetried = {
+ id: string
+ type: "session.next.retried"
+ properties: {
+ timestamp: number
+ sessionID: string
+ attempt: number
+ error: SessionNextRetryError
+ }
+}
+
+export type EventSessionNextCompactionStarted = {
+ id: string
+ type: "session.next.compaction.started"
+ properties: {
+ timestamp: number
+ sessionID: string
+ reason: "auto" | "manual"
+ }
+}
+
+export type EventSessionNextCompactionDelta = {
+ id: string
+ type: "session.next.compaction.delta"
+ properties: {
+ timestamp: number
+ sessionID: string
+ text: string
+ }
+}
+
+export type EventSessionNextCompactionEnded = {
+ id: string
+ type: "session.next.compaction.ended"
+ properties: {
+ timestamp: number
+ sessionID: string
+ text: string
+ include?: string
+ }
+}
+
+export type EventServerConnected = {
+ id: string
+ type: "server.connected"
+ properties: {
+ [key: string]: unknown
+ }
+}
+
+export type EventGlobalDisposed = {
+ id: string
+ type: "global.disposed"
+ properties: {
+ [key: string]: unknown
+ }
+}
+
+export type SessionInfo = {
+ id: string
+ parentID?: string
+ projectID: string
+ workspaceID?: string
+ path?: string
+ agent?: string
+ model?: {
+ id: string
+ providerID: string
+ variant?: string
+ }
+ time: {
+ created: number
+ updated: number
+ archived?: number
+ }
+ title: string
+}
+
+export type SessionDelivery = "immediate" | "deferred"
+
+export type SessionMessageAgentSwitched = {
+ id: string
+ metadata?: {
+ [key: string]: unknown
+ }
+ time: {
+ created: number
+ }
+ type: "agent-switched"
+ agent: string
+}
+
+export type SessionMessageModelSwitched = {
+ id: string
+ metadata?: {
+ [key: string]: unknown
+ }
+ time: {
+ created: number
+ }
+ type: "model-switched"
+ model: {
+ id: string
+ providerID: string
+ variant?: string
+ }
+}
+
+export type SessionMessageUser = {
+ id: string
+ metadata?: {
+ [key: string]: unknown
+ }
+ time: {
+ created: number
+ }
+ text: string
+ files?: Array<PromptFileAttachment>
+ agents?: Array<PromptAgentAttachment>
+ type: "user"
+}
+
+export type SessionMessageSynthetic = {
+ id: string
+ metadata?: {
+ [key: string]: unknown
+ }
+ time: {
+ created: number
+ }
+ sessionID: string
+ text: string
+ type: "synthetic"
+}
+
+export type SessionMessageShell = {
+ id: string
+ metadata?: {
+ [key: string]: unknown
+ }
+ time: {
+ created: number
+ completed?: number
+ }
+ type: "shell"
+ callID: string
+ command: string
+ output: string
+}
+
+export type SessionMessageAssistantText = {
+ type: "text"
+ text: string
+}
+
+export type SessionMessageAssistantReasoning = {
+ type: "reasoning"
+ id: string
+ text: string
+}
+
+export type SessionMessageToolStatePending = {
+ status: "pending"
+ input: string
+}
+
+export type SessionMessageToolStateRunning = {
+ status: "running"
+ input: {
+ [key: string]: unknown
+ }
+ structured: {
+ [key: string]: unknown
+ }
+ content: Array<ToolTextContent | ToolFileContent>
+}
+
+export type SessionMessageToolStateCompleted = {
+ status: "completed"
+ input: {
+ [key: string]: unknown
+ }
+ attachments?: Array<PromptFileAttachment>
+ content: Array<ToolTextContent | ToolFileContent>
+ structured: {
+ [key: string]: unknown
+ }
+}
+
+export type SessionMessageToolStateError = {
+ status: "error"
+ input: {
+ [key: string]: unknown
+ }
+ content: Array<ToolTextContent | ToolFileContent>
+ structured: {
+ [key: string]: unknown
+ }
+ error: {
+ type: string
+ message: string
+ }
+}
+
+export type SessionMessageAssistantTool = {
+ type: "tool"
+ id: string
+ name: string
+ provider?: {
+ executed: boolean
+ metadata?: {
+ [key: string]: unknown
+ }
+ }
+ state:
+ | SessionMessageToolStatePending
+ | SessionMessageToolStateRunning
+ | SessionMessageToolStateCompleted
+ | SessionMessageToolStateError
+ time: {
+ created: number
+ ran?: number
+ completed?: number
+ pruned?: number
+ }
+}
+
+export type SessionMessageAssistant = {
+ id: string
+ metadata?: {
+ [key: string]: unknown
+ }
+ time: {
+ created: number
+ completed?: number
+ }
+ type: "assistant"
+ agent: string
+ model: {
+ id: string
+ providerID: string
+ variant?: string
+ }
+ content: Array<SessionMessageAssistantText | SessionMessageAssistantReasoning | SessionMessageAssistantTool>
+ snapshot?: {
+ start?: string
+ end?: string
+ }
+ finish?: string
+ cost?: number
+ tokens?: {
+ input: number
+ output: number
+ reasoning: number
+ cache: {
+ read: number
+ write: number
+ }
+ }
+ error?: string
+}
+
+export type SessionMessageCompaction = {
+ type: "compaction"
+ reason: "auto" | "manual"
+ summary: string
+ include?: string
+ id: string
+ metadata?: {
+ [key: string]: unknown
+ }
+ time: {
+ created: number
+ }
+}
+
+export type SessionMessage =
+ | SessionMessageAgentSwitched
+ | SessionMessageModelSwitched
+ | SessionMessageUser
+ | SessionMessageSynthetic
+ | SessionMessageShell
+ | SessionMessageAssistant
+ | SessionMessageCompaction
+
+export type EventTuiToastShow1 = {
+ id: string
+ type: "tui.toast.show"
+ properties: {
+ title?: string
+ message: string
+ variant: "info" | "success" | "warning" | "error"
+ duration?: number
+ }
+}
+
+export type BadRequestError = {
+ data: unknown
+ errors: Array<{
+ [key: string]: unknown
+ }>
+ success: false
+}
+
+export type NotFoundError = {
+ name: "NotFoundError"
+ data: {
+ message: string
+ }
+}
+
+export type AuthRemoveData = {
+ body?: never
+ path: {
+ providerID: string
+ }
+ query?: never
+ url: "/auth/{providerID}"
+}
+
+export type AuthRemoveErrors = {
+ /**
+ * Bad request
+ */
+ 400: BadRequestError
+}
+
+export type AuthRemoveError = AuthRemoveErrors[keyof AuthRemoveErrors]
+
+export type AuthRemoveResponses = {
+ /**
+ * Successfully removed authentication credentials
+ */
+ 200: boolean
+}
+
+export type AuthRemoveResponse = AuthRemoveResponses[keyof AuthRemoveResponses]
+
+export type AuthSetData = {
+ body?: Auth
+ path: {
+ providerID: string
+ }
+ query?: never
+ url: "/auth/{providerID}"
+}
+
+export type AuthSetErrors = {
+ /**
+ * Bad request
+ */
+ 400: BadRequestError
+}
+
+export type AuthSetError = AuthSetErrors[keyof AuthSetErrors]
+
+export type AuthSetResponses = {
+ /**
+ * Successfully set authentication credentials
+ */
+ 200: boolean
+}
+
+export type AuthSetResponse = AuthSetResponses[keyof AuthSetResponses]
+
+export type AppLogData = {
+ body?: {
+ /**
+ * Service name for the log entry
+ */
+ service: string
+ /**
+ * Log level
+ */
+ level: "debug" | "info" | "error" | "warn"
+ /**
+ * Log message
+ */
+ message: string
+ extra?: {
+ [key: string]: unknown
+ }
+ }
+ path?: never
+ query?: {
+ directory?: string
+ workspace?: string
+ }
+ url: "/log"
+}
+
+export type AppLogErrors = {
+ /**
+ * Bad request
+ */
+ 400: BadRequestError
+}
+
+export type AppLogError = AppLogErrors[keyof AppLogErrors]
+
+export type AppLogResponses = {
+ /**
+ * Log entry written successfully
+ */
+ 200: boolean
+}
+
+export type AppLogResponse = AppLogResponses[keyof AppLogResponses]
+
export type GlobalHealthData = {
body?: never
path?: never
@@ -2335,276 +3439,924 @@ export type GlobalUpgradeResponses = {
export type GlobalUpgradeResponse = GlobalUpgradeResponses[keyof GlobalUpgradeResponses]
-export type AuthRemoveData = {
+export type EventSubscribeData = {
body?: never
- path: {
- providerID: string
+ path?: never
+ query?: {
+ directory?: string
+ workspace?: string
}
- query?: never
- url: "/auth/{providerID}"
+ url: "/event"
}
-export type AuthRemoveErrors = {
+export type EventSubscribeResponses = {
+ /**
+ * Event stream
+ */
+ 200: Event
+}
+
+export type EventSubscribeResponse = EventSubscribeResponses[keyof EventSubscribeResponses]
+
+export type ConfigGetData = {
+ body?: never
+ path?: never
+ query?: {
+ directory?: string
+ workspace?: string
+ }
+ url: "/config"
+}
+
+export type ConfigGetResponses = {
+ /**
+ * Get config info
+ */
+ 200: Config
+}
+
+export type ConfigGetResponse = ConfigGetResponses[keyof ConfigGetResponses]
+
+export type ConfigUpdateData = {
+ body?: Config
+ path?: never
+ query?: {
+ directory?: string
+ workspace?: string
+ }
+ url: "/config"
+}
+
+export type ConfigUpdateErrors = {
/**
* Bad request
*/
400: BadRequestError
}
-export type AuthRemoveError = AuthRemoveErrors[keyof AuthRemoveErrors]
+export type ConfigUpdateError = ConfigUpdateErrors[keyof ConfigUpdateErrors]
-export type AuthRemoveResponses = {
+export type ConfigUpdateResponses = {
/**
- * Successfully removed authentication credentials
+ * Successfully updated config
+ */
+ 200: Config
+}
+
+export type ConfigUpdateResponse = ConfigUpdateResponses[keyof ConfigUpdateResponses]
+
+export type ConfigProvidersData = {
+ body?: never
+ path?: never
+ query?: {
+ directory?: string
+ workspace?: string
+ }
+ url: "/config/providers"
+}
+
+export type ConfigProvidersResponses = {
+ /**
+ * List of providers
+ */
+ 200: {
+ providers: Array<Provider>
+ default: {
+ [key: string]: string
+ }
+ }
+}
+
+export type ConfigProvidersResponse = ConfigProvidersResponses[keyof ConfigProvidersResponses]
+
+export type ExperimentalConsoleGetData = {
+ body?: never
+ path?: never
+ query?: {
+ directory?: string
+ workspace?: string
+ }
+ url: "/experimental/console"
+}
+
+export type ExperimentalConsoleGetResponses = {
+ /**
+ * Active Console provider metadata
+ */
+ 200: ConsoleState
+}
+
+export type ExperimentalConsoleGetResponse = ExperimentalConsoleGetResponses[keyof ExperimentalConsoleGetResponses]
+
+export type ExperimentalConsoleListOrgsData = {
+ body?: never
+ path?: never
+ query?: {
+ directory?: string
+ workspace?: string
+ }
+ url: "/experimental/console/orgs"
+}
+
+export type ExperimentalConsoleListOrgsResponses = {
+ /**
+ * Switchable Console orgs
+ */
+ 200: {
+ orgs: Array<{
+ accountID: string
+ accountEmail: string
+ accountUrl: string
+ orgID: string
+ orgName: string
+ active: boolean
+ }>
+ }
+}
+
+export type ExperimentalConsoleListOrgsResponse =
+ ExperimentalConsoleListOrgsResponses[keyof ExperimentalConsoleListOrgsResponses]
+
+export type ExperimentalConsoleSwitchOrgData = {
+ body?: {
+ accountID: string
+ orgID: string
+ }
+ path?: never
+ query?: {
+ directory?: string
+ workspace?: string
+ }
+ url: "/experimental/console/switch"
+}
+
+export type ExperimentalConsoleSwitchOrgResponses = {
+ /**
+ * Switch success
*/
200: boolean
}
-export type AuthRemoveResponse = AuthRemoveResponses[keyof AuthRemoveResponses]
+export type ExperimentalConsoleSwitchOrgResponse =
+ ExperimentalConsoleSwitchOrgResponses[keyof ExperimentalConsoleSwitchOrgResponses]
-export type AuthSetData = {
- body?: Auth
- path: {
- providerID: string
+export type ToolListData = {
+ body?: never
+ path?: never
+ query: {
+ directory?: string
+ workspace?: string
+ provider: string
+ model: string
}
- query?: never
- url: "/auth/{providerID}"
+ url: "/experimental/tool"
}
-export type AuthSetErrors = {
+export type ToolListErrors = {
/**
* Bad request
*/
400: BadRequestError
}
-export type AuthSetError = AuthSetErrors[keyof AuthSetErrors]
+export type ToolListError = ToolListErrors[keyof ToolListErrors]
-export type AuthSetResponses = {
+export type ToolListResponses = {
/**
- * Successfully set authentication credentials
+ * Tools
+ */
+ 200: ToolList
+}
+
+export type ToolListResponse = ToolListResponses[keyof ToolListResponses]
+
+export type ToolIdsData = {
+ body?: never
+ path?: never
+ query?: {
+ directory?: string
+ workspace?: string
+ }
+ url: "/experimental/tool/ids"
+}
+
+export type ToolIdsErrors = {
+ /**
+ * Bad request
+ */
+ 400: BadRequestError
+}
+
+export type ToolIdsError = ToolIdsErrors[keyof ToolIdsErrors]
+
+export type ToolIdsResponses = {
+ /**
+ * Tool IDs
+ */
+ 200: ToolIds
+}
+
+export type ToolIdsResponse = ToolIdsResponses[keyof ToolIdsResponses]
+
+export type WorktreeRemoveData = {
+ body?: WorktreeRemoveInput
+ path?: never
+ query?: {
+ directory?: string
+ workspace?: string
+ }
+ url: "/experimental/worktree"
+}
+
+export type WorktreeRemoveErrors = {
+ /**
+ * Bad request
+ */
+ 400: BadRequestError
+}
+
+export type WorktreeRemoveError = WorktreeRemoveErrors[keyof WorktreeRemoveErrors]
+
+export type WorktreeRemoveResponses = {
+ /**
+ * Worktree removed
*/
200: boolean
}
-export type AuthSetResponse = AuthSetResponses[keyof AuthSetResponses]
+export type WorktreeRemoveResponse = WorktreeRemoveResponses[keyof WorktreeRemoveResponses]
-export type AppLogData = {
- body?: {
- /**
- * Service name for the log entry
- */
- service: string
- /**
- * Log level
- */
- level: "debug" | "info" | "error" | "warn"
- /**
- * Log message
- */
- message: string
- /**
- * Additional metadata for the log entry
- */
- extra?: {
- [key: string]: unknown
- }
+export type WorktreeListData = {
+ body?: never
+ path?: never
+ query?: {
+ directory?: string
+ workspace?: string
}
+ url: "/experimental/worktree"
+}
+
+export type WorktreeListResponses = {
+ /**
+ * List of worktree directories
+ */
+ 200: Array<string>
+}
+
+export type WorktreeListResponse = WorktreeListResponses[keyof WorktreeListResponses]
+
+export type WorktreeCreateData = {
+ body?: WorktreeCreateInput
path?: never
query?: {
directory?: string
workspace?: string
}
- url: "/log"
+ url: "/experimental/worktree"
}
-export type AppLogErrors = {
+export type WorktreeCreateErrors = {
/**
* Bad request
*/
400: BadRequestError
}
-export type AppLogError = AppLogErrors[keyof AppLogErrors]
+export type WorktreeCreateError = WorktreeCreateErrors[keyof WorktreeCreateErrors]
-export type AppLogResponses = {
+export type WorktreeCreateResponses = {
/**
- * Log entry written successfully
+ * Worktree created
+ */
+ 200: Worktree
+}
+
+export type WorktreeCreateResponse = WorktreeCreateResponses[keyof WorktreeCreateResponses]
+
+export type WorktreeResetData = {
+ body?: WorktreeResetInput
+ path?: never
+ query?: {
+ directory?: string
+ workspace?: string
+ }
+ url: "/experimental/worktree/reset"
+}
+
+export type WorktreeResetErrors = {
+ /**
+ * Bad request
+ */
+ 400: BadRequestError
+}
+
+export type WorktreeResetError = WorktreeResetErrors[keyof WorktreeResetErrors]
+
+export type WorktreeResetResponses = {
+ /**
+ * Worktree reset
*/
200: boolean
}
-export type AppLogResponse = AppLogResponses[keyof AppLogResponses]
+export type WorktreeResetResponse = WorktreeResetResponses[keyof WorktreeResetResponses]
-export type ExperimentalWorkspaceAdapterListData = {
+export type ExperimentalSessionListData = {
+ body?: never
+ path?: never
+ query?: {
+ directory?: string
+ workspace?: string
+ roots?: boolean | "true" | "false"
+ start?: number
+ cursor?: number
+ search?: string
+ limit?: number
+ archived?: boolean | "true" | "false"
+ }
+ url: "/experimental/session"
+}
+
+export type ExperimentalSessionListResponses = {
+ /**
+ * List of sessions
+ */
+ 200: Array<GlobalSession>
+}
+
+export type ExperimentalSessionListResponse = ExperimentalSessionListResponses[keyof ExperimentalSessionListResponses]
+
+export type ExperimentalResourceListData = {
body?: never
path?: never
query?: {
directory?: string
workspace?: string
}
- url: "/experimental/workspace/adapter"
+ url: "/experimental/resource"
}
-export type ExperimentalWorkspaceAdapterListResponses = {
+export type ExperimentalResourceListResponses = {
/**
- * Workspace adapters
+ * MCP resources
+ */
+ 200: {
+ [key: string]: McpResource
+ }
+}
+
+export type ExperimentalResourceListResponse =
+ ExperimentalResourceListResponses[keyof ExperimentalResourceListResponses]
+
+export type FindTextData = {
+ body?: never
+ path?: never
+ query: {
+ directory?: string
+ workspace?: string
+ pattern: string
+ }
+ url: "/find"
+}
+
+export type FindTextResponses = {
+ /**
+ * Matches
+ */
+ 200: Array<{
+ path: {
+ text: string
+ }
+ lines: {
+ text: string
+ }
+ line_number: number
+ absolute_offset: number
+ submatches: Array<{
+ match: {
+ text: string
+ }
+ start: number
+ end: number
+ }>
+ }>
+}
+
+export type FindTextResponse = FindTextResponses[keyof FindTextResponses]
+
+export type FindFilesData = {
+ body?: never
+ path?: never
+ query: {
+ directory?: string
+ workspace?: string
+ query: string
+ dirs?: "true" | "false"
+ type?: "file" | "directory"
+ limit?: number
+ }
+ url: "/find/file"
+}
+
+export type FindFilesResponses = {
+ /**
+ * File paths
+ */
+ 200: Array<string>
+}
+
+export type FindFilesResponse = FindFilesResponses[keyof FindFilesResponses]
+
+export type FindSymbolsData = {
+ body?: never
+ path?: never
+ query: {
+ directory?: string
+ workspace?: string
+ query: string
+ }
+ url: "/find/symbol"
+}
+
+export type FindSymbolsResponses = {
+ /**
+ * Symbols
+ */
+ 200: Array<Symbol>
+}
+
+export type FindSymbolsResponse = FindSymbolsResponses[keyof FindSymbolsResponses]
+
+export type FileListData = {
+ body?: never
+ path?: never
+ query: {
+ directory?: string
+ workspace?: string
+ path: string
+ }
+ url: "/file"
+}
+
+export type FileListResponses = {
+ /**
+ * Files and directories
+ */
+ 200: Array<FileNode>
+}
+
+export type FileListResponse = FileListResponses[keyof FileListResponses]
+
+export type FileReadData = {
+ body?: never
+ path?: never
+ query: {
+ directory?: string
+ workspace?: string
+ path: string
+ }
+ url: "/file/content"
+}
+
+export type FileReadResponses = {
+ /**
+ * File content
+ */
+ 200: FileContent
+}
+
+export type FileReadResponse = FileReadResponses[keyof FileReadResponses]
+
+export type FileStatusData = {
+ body?: never
+ path?: never
+ query?: {
+ directory?: string
+ workspace?: string
+ }
+ url: "/file/status"
+}
+
+export type FileStatusResponses = {
+ /**
+ * File status
+ */
+ 200: Array<File>
+}
+
+export type FileStatusResponse = FileStatusResponses[keyof FileStatusResponses]
+
+export type InstanceDisposeData = {
+ body?: never
+ path?: never
+ query?: {
+ directory?: string
+ workspace?: string
+ }
+ url: "/instance/dispose"
+}
+
+export type InstanceDisposeResponses = {
+ /**
+ * Instance disposed
+ */
+ 200: boolean
+}
+
+export type InstanceDisposeResponse = InstanceDisposeResponses[keyof InstanceDisposeResponses]
+
+export type PathGetData = {
+ body?: never
+ path?: never
+ query?: {
+ directory?: string
+ workspace?: string
+ }
+ url: "/path"
+}
+
+export type PathGetResponses = {
+ /**
+ * Path
+ */
+ 200: Path
+}
+
+export type PathGetResponse = PathGetResponses[keyof PathGetResponses]
+
+export type VcsGetData = {
+ body?: never
+ path?: never
+ query?: {
+ directory?: string
+ workspace?: string
+ }
+ url: "/vcs"
+}
+
+export type VcsGetResponses = {
+ /**
+ * VCS info
+ */
+ 200: VcsInfo
+}
+
+export type VcsGetResponse = VcsGetResponses[keyof VcsGetResponses]
+
+export type VcsDiffData = {
+ body?: never
+ path?: never
+ query: {
+ directory?: string
+ workspace?: string
+ mode: "git" | "branch"
+ }
+ url: "/vcs/diff"
+}
+
+export type VcsDiffResponses = {
+ /**
+ * VCS diff
+ */
+ 200: Array<VcsFileDiff>
+}
+
+export type VcsDiffResponse = VcsDiffResponses[keyof VcsDiffResponses]
+
+export type CommandListData = {
+ body?: never
+ path?: never
+ query?: {
+ directory?: string
+ workspace?: string
+ }
+ url: "/command"
+}
+
+export type CommandListResponses = {
+ /**
+ * List of commands
+ */
+ 200: Array<Command>
+}
+
+export type CommandListResponse = CommandListResponses[keyof CommandListResponses]
+
+export type AppAgentsData = {
+ body?: never
+ path?: never
+ query?: {
+ directory?: string
+ workspace?: string
+ }
+ url: "/agent"
+}
+
+export type AppAgentsResponses = {
+ /**
+ * List of agents
+ */
+ 200: Array<Agent>
+}
+
+export type AppAgentsResponse = AppAgentsResponses[keyof AppAgentsResponses]
+
+export type AppSkillsData = {
+ body?: never
+ path?: never
+ query?: {
+ directory?: string
+ workspace?: string
+ }
+ url: "/skill"
+}
+
+export type AppSkillsResponses = {
+ /**
+ * List of skills
*/
200: Array<{
- type: string
name: string
description: string
+ location: string
+ content: string
}>
}
-export type ExperimentalWorkspaceAdapterListResponse =
- ExperimentalWorkspaceAdapterListResponses[keyof ExperimentalWorkspaceAdapterListResponses]
+export type AppSkillsResponse = AppSkillsResponses[keyof AppSkillsResponses]
-export type ExperimentalWorkspaceListData = {
+export type LspStatusData = {
body?: never
path?: never
query?: {
directory?: string
workspace?: string
}
- url: "/experimental/workspace"
+ url: "/lsp"
}
-export type ExperimentalWorkspaceListResponses = {
+export type LspStatusResponses = {
/**
- * Workspaces
+ * LSP server status
*/
- 200: Array<Workspace>
+ 200: Array<LspStatus>
}
-export type ExperimentalWorkspaceListResponse =
- ExperimentalWorkspaceListResponses[keyof ExperimentalWorkspaceListResponses]
+export type LspStatusResponse = LspStatusResponses[keyof LspStatusResponses]
-export type ExperimentalWorkspaceCreateData = {
+export type FormatterStatusData = {
+ body?: never
+ path?: never
+ query?: {
+ directory?: string
+ workspace?: string
+ }
+ url: "/formatter"
+}
+
+export type FormatterStatusResponses = {
+ /**
+ * Formatter status
+ */
+ 200: Array<FormatterStatus>
+}
+
+export type FormatterStatusResponse = FormatterStatusResponses[keyof FormatterStatusResponses]
+
+export type McpStatusData = {
+ body?: never
+ path?: never
+ query?: {
+ directory?: string
+ workspace?: string
+ }
+ url: "/mcp"
+}
+
+export type McpStatusResponses = {
+ /**
+ * MCP server status
+ */
+ 200: {
+ [key: string]: McpStatus
+ }
+}
+
+export type McpStatusResponse = McpStatusResponses[keyof McpStatusResponses]
+
+export type McpAddData = {
body?: {
- id?: string
- type: string
- branch: string | null
- extra: unknown | null
+ name: string
+ config: McpLocalConfig | McpRemoteConfig
}
path?: never
query?: {
directory?: string
workspace?: string
}
- url: "/experimental/workspace"
+ url: "/mcp"
}
-export type ExperimentalWorkspaceCreateErrors = {
+export type McpAddErrors = {
/**
* Bad request
*/
400: BadRequestError
}
-export type ExperimentalWorkspaceCreateError =
- ExperimentalWorkspaceCreateErrors[keyof ExperimentalWorkspaceCreateErrors]
+export type McpAddError = McpAddErrors[keyof McpAddErrors]
-export type ExperimentalWorkspaceCreateResponses = {
+export type McpAddResponses = {
/**
- * Workspace created
+ * MCP server added successfully
*/
- 200: Workspace
+ 200: {
+ [key: string]: McpStatus
+ }
}
-export type ExperimentalWorkspaceCreateResponse =
- ExperimentalWorkspaceCreateResponses[keyof ExperimentalWorkspaceCreateResponses]
+export type McpAddResponse = McpAddResponses[keyof McpAddResponses]
-export type ExperimentalWorkspaceStatusData = {
+export type McpAuthRemoveData = {
body?: never
- path?: never
+ path: {
+ name: string
+ }
query?: {
directory?: string
workspace?: string
}
- url: "/experimental/workspace/status"
+ url: "/mcp/{name}/auth"
}
-export type ExperimentalWorkspaceStatusResponses = {
+export type McpAuthRemoveErrors = {
/**
- * Workspace status
+ * Not found
*/
- 200: Array<{
- workspaceID: string
- status: "connected" | "connecting" | "disconnected" | "error"
- }>
+ 404: NotFoundError
}
-export type ExperimentalWorkspaceStatusResponse =
- ExperimentalWorkspaceStatusResponses[keyof ExperimentalWorkspaceStatusResponses]
+export type McpAuthRemoveError = McpAuthRemoveErrors[keyof McpAuthRemoveErrors]
-export type ExperimentalWorkspaceRemoveData = {
+export type McpAuthRemoveResponses = {
+ /**
+ * OAuth credentials removed
+ */
+ 200: {
+ success: true
+ }
+}
+
+export type McpAuthRemoveResponse = McpAuthRemoveResponses[keyof McpAuthRemoveResponses]
+
+export type McpAuthStartData = {
body?: never
path: {
- id: string
+ name: string
}
query?: {
directory?: string
workspace?: string
}
- url: "/experimental/workspace/{id}"
+ url: "/mcp/{name}/auth"
}
-export type ExperimentalWorkspaceRemoveErrors = {
+export type McpAuthStartErrors = {
/**
- * Bad request
+ * McpUnsupportedOAuthError
*/
- 400: BadRequestError
+ 400: McpUnsupportedOAuthError
+ /**
+ * Not found
+ */
+ 404: NotFoundError
}
-export type ExperimentalWorkspaceRemoveError =
- ExperimentalWorkspaceRemoveErrors[keyof ExperimentalWorkspaceRemoveErrors]
+export type McpAuthStartError = McpAuthStartErrors[keyof McpAuthStartErrors]
-export type ExperimentalWorkspaceRemoveResponses = {
+export type McpAuthStartResponses = {
/**
- * Workspace removed
+ * OAuth flow started
*/
- 200: Workspace
+ 200: {
+ authorizationUrl: string
+ oauthState: string
+ }
}
-export type ExperimentalWorkspaceRemoveResponse =
- ExperimentalWorkspaceRemoveResponses[keyof ExperimentalWorkspaceRemoveResponses]
+export type McpAuthStartResponse = McpAuthStartResponses[keyof McpAuthStartResponses]
-export type ExperimentalWorkspaceSessionRestoreData = {
+export type McpAuthCallbackData = {
body?: {
- sessionID: string
+ code: string
}
path: {
- id: string
+ name: string
}
query?: {
directory?: string
workspace?: string
}
- url: "/experimental/workspace/{id}/session-restore"
+ url: "/mcp/{name}/auth/callback"
}
-export type ExperimentalWorkspaceSessionRestoreErrors = {
+export type McpAuthCallbackErrors = {
/**
* Bad request
*/
400: BadRequestError
+ /**
+ * Not found
+ */
+ 404: NotFoundError
}
-export type ExperimentalWorkspaceSessionRestoreError =
- ExperimentalWorkspaceSessionRestoreErrors[keyof ExperimentalWorkspaceSessionRestoreErrors]
+export type McpAuthCallbackError = McpAuthCallbackErrors[keyof McpAuthCallbackErrors]
-export type ExperimentalWorkspaceSessionRestoreResponses = {
+export type McpAuthCallbackResponses = {
/**
- * Session replay started
+ * OAuth authentication completed
*/
- 200: {
- total: number
+ 200: McpStatus
+}
+
+export type McpAuthCallbackResponse = McpAuthCallbackResponses[keyof McpAuthCallbackResponses]
+
+export type McpAuthAuthenticateData = {
+ body?: never
+ path: {
+ name: string
+ }
+ query?: {
+ directory?: string
+ workspace?: string
}
+ url: "/mcp/{name}/auth/authenticate"
}
-export type ExperimentalWorkspaceSessionRestoreResponse =
- ExperimentalWorkspaceSessionRestoreResponses[keyof ExperimentalWorkspaceSessionRestoreResponses]
+export type McpAuthAuthenticateErrors = {
+ /**
+ * McpUnsupportedOAuthError
+ */
+ 400: McpUnsupportedOAuthError
+ /**
+ * Not found
+ */
+ 404: NotFoundError
+}
+
+export type McpAuthAuthenticateError = McpAuthAuthenticateErrors[keyof McpAuthAuthenticateErrors]
+
+export type McpAuthAuthenticateResponses = {
+ /**
+ * OAuth authentication completed
+ */
+ 200: McpStatus
+}
+
+export type McpAuthAuthenticateResponse = McpAuthAuthenticateResponses[keyof McpAuthAuthenticateResponses]
+
+export type McpConnectData = {
+ body?: never
+ path: {
+ name: string
+ }
+ query?: {
+ directory?: string
+ workspace?: string
+ }
+ url: "/mcp/{name}/connect"
+}
+
+export type McpConnectResponses = {
+ /**
+ * MCP server connected successfully
+ */
+ 200: boolean
+}
+
+export type McpConnectResponse = McpConnectResponses[keyof McpConnectResponses]
+
+export type McpDisconnectData = {
+ body?: never
+ path: {
+ name: string
+ }
+ query?: {
+ directory?: string
+ workspace?: string
+ }
+ url: "/mcp/{name}/disconnect"
+}
+
+export type McpDisconnectResponses = {
+ /**
+ * MCP server disconnected successfully
+ */
+ 200: boolean
+}
+
+export type McpDisconnectResponse = McpDisconnectResponses[keyof McpDisconnectResponses]
export type ProjectListData = {
body?: never
@@ -2884,439 +4636,285 @@ export type PtyUpdateResponses = {
export type PtyUpdateResponse = PtyUpdateResponses[keyof PtyUpdateResponses]
-export type PtyConnectData = {
- body?: never
- path: {
- ptyID: string
- }
- query?: {
- directory?: string
- workspace?: string
- }
- url: "/pty/{ptyID}/connect"
-}
-
-export type PtyConnectErrors = {
- /**
- * Not found
- */
- 404: NotFoundError
-}
-
-export type PtyConnectError = PtyConnectErrors[keyof PtyConnectErrors]
-
-export type PtyConnectResponses = {
- /**
- * Connected session
- */
- 200: boolean
-}
-
-export type PtyConnectResponse = PtyConnectResponses[keyof PtyConnectResponses]
-
-export type ConfigGetData = {
+export type QuestionListData = {
body?: never
path?: never
query?: {
directory?: string
workspace?: string
}
- url: "/config"
+ url: "/question"
}
-export type ConfigGetResponses = {
+export type QuestionListResponses = {
/**
- * Get config info
+ * List of pending questions
*/
- 200: Config
+ 200: Array<QuestionRequest>
}
-export type ConfigGetResponse = ConfigGetResponses[keyof ConfigGetResponses]
+export type QuestionListResponse = QuestionListResponses[keyof QuestionListResponses]
-export type ConfigUpdateData = {
- body?: Config
- path?: never
+export type QuestionReplyData = {
+ body?: {
+ /**
+ * User answers in order of questions (each answer is an array of selected labels)
+ */
+ answers: Array<QuestionAnswer>
+ }
+ path: {
+ requestID: string
+ }
query?: {
directory?: string
workspace?: string
}
- url: "/config"
+ url: "/question/{requestID}/reply"
}
-export type ConfigUpdateErrors = {
+export type QuestionReplyErrors = {
/**
* Bad request
*/
400: BadRequestError
-}
-
-export type ConfigUpdateError = ConfigUpdateErrors[keyof ConfigUpdateErrors]
-
-export type ConfigUpdateResponses = {
/**
- * Successfully updated config
+ * Not found
*/
- 200: Config
+ 404: NotFoundError
}
-export type ConfigUpdateResponse = ConfigUpdateResponses[keyof ConfigUpdateResponses]
-
-export type ConfigProvidersData = {
- body?: never
- path?: never
- query?: {
- directory?: string
- workspace?: string
- }
- url: "/config/providers"
-}
+export type QuestionReplyError = QuestionReplyErrors[keyof QuestionReplyErrors]
-export type ConfigProvidersResponses = {
+export type QuestionReplyResponses = {
/**
- * List of providers
+ * Question answered successfully
*/
- 200: {
- providers: Array<Provider>
- default: {
- [key: string]: string
- }
- }
+ 200: boolean
}
-export type ConfigProvidersResponse = ConfigProvidersResponses[keyof ConfigProvidersResponses]
+export type QuestionReplyResponse = QuestionReplyResponses[keyof QuestionReplyResponses]
-export type ExperimentalConsoleGetData = {
+export type QuestionRejectData = {
body?: never
- path?: never
+ path: {
+ requestID: string
+ }
query?: {
directory?: string
workspace?: string
}
- url: "/experimental/console"
+ url: "/question/{requestID}/reject"
}
-export type ExperimentalConsoleGetResponses = {
+export type QuestionRejectErrors = {
/**
- * Active Console provider metadata
+ * Bad request
*/
- 200: ConsoleState
-}
-
-export type ExperimentalConsoleGetResponse = ExperimentalConsoleGetResponses[keyof ExperimentalConsoleGetResponses]
-
-export type ExperimentalConsoleListOrgsData = {
- body?: never
- path?: never
- query?: {
- directory?: string
- workspace?: string
- }
- url: "/experimental/console/orgs"
-}
-
-export type ExperimentalConsoleListOrgsResponses = {
+ 400: BadRequestError
/**
- * Switchable Console orgs
+ * Not found
*/
- 200: {
- orgs: Array<{
- accountID: string
- accountEmail: string
- accountUrl: string
- orgID: string
- orgName: string
- active: boolean
- }>
- }
+ 404: NotFoundError
}
-export type ExperimentalConsoleListOrgsResponse =
- ExperimentalConsoleListOrgsResponses[keyof ExperimentalConsoleListOrgsResponses]
-
-export type ExperimentalConsoleSwitchOrgData = {
- body?: {
- accountID: string
- orgID: string
- }
- path?: never
- query?: {
- directory?: string
- workspace?: string
- }
- url: "/experimental/console/switch"
-}
+export type QuestionRejectError = QuestionRejectErrors[keyof QuestionRejectErrors]
-export type ExperimentalConsoleSwitchOrgResponses = {
+export type QuestionRejectResponses = {
/**
- * Switch success
+ * Question rejected successfully
*/
200: boolean
}
-export type ExperimentalConsoleSwitchOrgResponse =
- ExperimentalConsoleSwitchOrgResponses[keyof ExperimentalConsoleSwitchOrgResponses]
+export type QuestionRejectResponse = QuestionRejectResponses[keyof QuestionRejectResponses]
-export type ToolIdsData = {
+export type PermissionListData = {
body?: never
path?: never
query?: {
directory?: string
workspace?: string
}
- url: "/experimental/tool/ids"
-}
-
-export type ToolIdsErrors = {
- /**
- * Bad request
- */
- 400: BadRequestError
+ url: "/permission"
}
-export type ToolIdsError = ToolIdsErrors[keyof ToolIdsErrors]
-
-export type ToolIdsResponses = {
+export type PermissionListResponses = {
/**
- * Tool IDs
+ * List of pending permissions
*/
- 200: ToolIds
+ 200: Array<PermissionRequest>
}
-export type ToolIdsResponse = ToolIdsResponses[keyof ToolIdsResponses]
+export type PermissionListResponse = PermissionListResponses[keyof PermissionListResponses]
-export type ToolListData = {
- body?: never
- path?: never
- query: {
- directory?: string
- workspace?: string
- provider: string
- model: string
+export type PermissionReplyData = {
+ body?: {
+ reply: "once" | "always" | "reject"
+ message?: string
+ }
+ path: {
+ requestID: string
}
- url: "/experimental/tool"
-}
-
-export type ToolListErrors = {
- /**
- * Bad request
- */
- 400: BadRequestError
-}
-
-export type ToolListError = ToolListErrors[keyof ToolListErrors]
-
-export type ToolListResponses = {
- /**
- * Tools
- */
- 200: ToolList
-}
-
-export type ToolListResponse = ToolListResponses[keyof ToolListResponses]
-
-export type WorktreeRemoveData = {
- body?: WorktreeRemoveInput
- path?: never
query?: {
directory?: string
workspace?: string
}
- url: "/experimental/worktree"
+ url: "/permission/{requestID}/reply"
}
-export type WorktreeRemoveErrors = {
+export type PermissionReplyErrors = {
/**
* Bad request
*/
400: BadRequestError
+ /**
+ * Not found
+ */
+ 404: NotFoundError
}
-export type WorktreeRemoveError = WorktreeRemoveErrors[keyof WorktreeRemoveErrors]
+export type PermissionReplyError = PermissionReplyErrors[keyof PermissionReplyErrors]
-export type WorktreeRemoveResponses = {
+export type PermissionReplyResponses = {
/**
- * Worktree removed
+ * Permission processed successfully
*/
200: boolean
}
-export type WorktreeRemoveResponse = WorktreeRemoveResponses[keyof WorktreeRemoveResponses]
+export type PermissionReplyResponse = PermissionReplyResponses[keyof PermissionReplyResponses]
-export type WorktreeListData = {
+export type ProviderListData = {
body?: never
path?: never
query?: {
directory?: string
workspace?: string
}
- url: "/experimental/worktree"
+ url: "/provider"
}
-export type WorktreeListResponses = {
+export type ProviderListResponses = {
/**
- * List of worktree directories
+ * List of providers
*/
- 200: Array<string>
+ 200: {
+ all: Array<Provider>
+ default: {
+ [key: string]: string
+ }
+ connected: Array<string>
+ }
}
-export type WorktreeListResponse = WorktreeListResponses[keyof WorktreeListResponses]
+export type ProviderListResponse = ProviderListResponses[keyof ProviderListResponses]
-export type WorktreeCreateData = {
- body?: WorktreeCreateInput
+export type ProviderAuthData = {
+ body?: never
path?: never
query?: {
directory?: string
workspace?: string
}
- url: "/experimental/worktree"
-}
-
-export type WorktreeCreateErrors = {
- /**
- * Bad request
- */
- 400: BadRequestError
+ url: "/provider/auth"
}
-export type WorktreeCreateError = WorktreeCreateErrors[keyof WorktreeCreateErrors]
-
-export type WorktreeCreateResponses = {
+export type ProviderAuthResponses = {
/**
- * Worktree created
+ * Provider auth methods
*/
- 200: Worktree
+ 200: {
+ [key: string]: Array<ProviderAuthMethod>
+ }
}
-export type WorktreeCreateResponse = WorktreeCreateResponses[keyof WorktreeCreateResponses]
+export type ProviderAuthResponse = ProviderAuthResponses[keyof ProviderAuthResponses]
-export type WorktreeResetData = {
- body?: WorktreeResetInput
- path?: never
+export type ProviderOauthAuthorizeData = {
+ body?: {
+ /**
+ * Auth method index
+ */
+ method: number
+ inputs?: {
+ [key: string]: string
+ }
+ }
+ path: {
+ providerID: string
+ }
query?: {
directory?: string
workspace?: string
}
- url: "/experimental/worktree/reset"
+ url: "/provider/{providerID}/oauth/authorize"
}
-export type WorktreeResetErrors = {
+export type ProviderOauthAuthorizeErrors = {
/**
* Bad request
*/
400: BadRequestError
}
-export type WorktreeResetError = WorktreeResetErrors[keyof WorktreeResetErrors]
+export type ProviderOauthAuthorizeError = ProviderOauthAuthorizeErrors[keyof ProviderOauthAuthorizeErrors]
-export type WorktreeResetResponses = {
+export type ProviderOauthAuthorizeResponses = {
/**
- * Worktree reset
+ * Authorization URL and method
*/
- 200: boolean
+ 200: ProviderAuthAuthorization
}
-export type WorktreeResetResponse = WorktreeResetResponses[keyof WorktreeResetResponses]
+export type ProviderOauthAuthorizeResponse = ProviderOauthAuthorizeResponses[keyof ProviderOauthAuthorizeResponses]
-export type ExperimentalSessionListData = {
- body?: never
- path?: never
- query?: {
+export type ProviderOauthCallbackData = {
+ body?: {
/**
- * Filter sessions by project directory
+ * Auth method index
*/
+ method: number
+ code?: string
+ }
+ path: {
+ providerID: string
+ }
+ query?: {
directory?: string
workspace?: string
- /**
- * Only return root sessions (no parentID)
- */
- roots?: boolean | "true" | "false"
- /**
- * Filter sessions updated on or after this timestamp (milliseconds since epoch)
- */
- start?: number
- /**
- * Return sessions updated before this timestamp (milliseconds since epoch)
- */
- cursor?: number
- /**
- * Filter sessions by title (case-insensitive)
- */
- search?: string
- /**
- * Maximum number of sessions to return
- */
- limit?: number
- /**
- * Include archived sessions (default false)
- */
- archived?: boolean | "true" | "false"
}
- url: "/experimental/session"
+ url: "/provider/{providerID}/oauth/callback"
}
-export type ExperimentalSessionListResponses = {
+export type ProviderOauthCallbackErrors = {
/**
- * List of sessions
+ * Bad request
*/
- 200: Array<GlobalSession>
+ 400: BadRequestError
}
-export type ExperimentalSessionListResponse = ExperimentalSessionListResponses[keyof ExperimentalSessionListResponses]
-
-export type ExperimentalResourceListData = {
- body?: never
- path?: never
- query?: {
- directory?: string
- workspace?: string
- }
- url: "/experimental/resource"
-}
+export type ProviderOauthCallbackError = ProviderOauthCallbackErrors[keyof ProviderOauthCallbackErrors]
-export type ExperimentalResourceListResponses = {
+export type ProviderOauthCallbackResponses = {
/**
- * MCP resources
+ * OAuth callback processed successfully
*/
- 200: {
- [key: string]: McpResource
- }
+ 200: boolean
}
-export type ExperimentalResourceListResponse =
- ExperimentalResourceListResponses[keyof ExperimentalResourceListResponses]
+export type ProviderOauthCallbackResponse = ProviderOauthCallbackResponses[keyof ProviderOauthCallbackResponses]
export type SessionListData = {
body?: never
path?: never
query?: {
- /**
- * Filter sessions by directory
- */
directory?: string
workspace?: string
- /**
- * List all sessions for the current project
- */
scope?: "project"
- /**
- * Filter sessions by project-relative path
- */
path?: string
- /**
- * Only return root sessions (no parentID)
- */
roots?: boolean | "true" | "false"
- /**
- * Filter sessions updated on or after this timestamp (milliseconds since epoch)
- */
start?: number
- /**
- * Filter sessions by title (case-insensitive)
- */
search?: string
- /**
- * Maximum number of sessions to return
- */
limit?: number
}
url: "/session"
@@ -3335,6 +4933,12 @@ export type SessionCreateData = {
body?: {
parentID?: string
title?: string
+ agent?: string
+ model?: {
+ id: string
+ providerID: string
+ variant?: string
+ }
permission?: PermissionRuleset
workspaceID?: string
}
@@ -3570,68 +5174,29 @@ export type SessionTodoResponses = {
export type SessionTodoResponse = SessionTodoResponses[keyof SessionTodoResponses]
-export type SessionInitData = {
- body?: {
- modelID: string
- providerID: string
- messageID: string
- }
+export type SessionDiffData = {
+ body?: never
path: {
sessionID: string
}
query?: {
directory?: string
workspace?: string
- }
- url: "/session/{sessionID}/init"
-}
-
-export type SessionInitErrors = {
- /**
- * Bad request
- */
- 400: BadRequestError
- /**
- * Not found
- */
- 404: NotFoundError
-}
-
-export type SessionInitError = SessionInitErrors[keyof SessionInitErrors]
-
-export type SessionInitResponses = {
- /**
- * 200
- */
- 200: boolean
-}
-
-export type SessionInitResponse = SessionInitResponses[keyof SessionInitResponses]
-
-export type SessionForkData = {
- body?: {
messageID?: string
}
- path: {
- sessionID: string
- }
- query?: {
- directory?: string
- workspace?: string
- }
- url: "/session/{sessionID}/fork"
+ url: "/session/{sessionID}/diff"
}
-export type SessionForkResponses = {
+export type SessionDiffResponses = {
/**
- * 200
+ * Successfully retrieved diff
*/
- 200: Session
+ 200: Array<SnapshotFileDiff>
}
-export type SessionForkResponse = SessionForkResponses[keyof SessionForkResponses]
+export type SessionDiffResponse = SessionDiffResponses[keyof SessionDiffResponses]
-export type SessionAbortData = {
+export type SessionMessagesData = {
body?: never
path: {
sessionID: string
@@ -3639,11 +5204,13 @@ export type SessionAbortData = {
query?: {
directory?: string
workspace?: string
+ limit?: number
+ before?: string
}
- url: "/session/{sessionID}/abort"
+ url: "/session/{sessionID}/message"
}
-export type SessionAbortErrors = {
+export type SessionMessagesErrors = {
/**
* Bad request
*/
@@ -3654,19 +5221,37 @@ export type SessionAbortErrors = {
404: NotFoundError
}
-export type SessionAbortError = SessionAbortErrors[keyof SessionAbortErrors]
+export type SessionMessagesError = SessionMessagesErrors[keyof SessionMessagesErrors]
-export type SessionAbortResponses = {
+export type SessionMessagesResponses = {
/**
- * Aborted session
+ * List of messages
*/
- 200: boolean
+ 200: Array<{
+ info: Message
+ parts: Array<Part>
+ }>
}
-export type SessionAbortResponse = SessionAbortResponses[keyof SessionAbortResponses]
+export type SessionMessagesResponse = SessionMessagesResponses[keyof SessionMessagesResponses]
-export type SessionUnshareData = {
- body?: never
+export type SessionPromptData = {
+ body?: {
+ messageID?: string
+ model?: {
+ providerID: string
+ modelID: string
+ }
+ agent?: string
+ noReply?: boolean
+ tools?: {
+ [key: string]: boolean
+ }
+ format?: OutputFormat
+ system?: string
+ variant?: string
+ parts: Array<TextPartInput | FilePartInput | AgentPartInput | SubtaskPartInput>
+ }
path: {
sessionID: string
}
@@ -3674,10 +5259,10 @@ export type SessionUnshareData = {
directory?: string
workspace?: string
}
- url: "/session/{sessionID}/share"
+ url: "/session/{sessionID}/message"
}
-export type SessionUnshareErrors = {
+export type SessionPromptErrors = {
/**
* Bad request
*/
@@ -3688,30 +5273,34 @@ export type SessionUnshareErrors = {
404: NotFoundError
}
-export type SessionUnshareError = SessionUnshareErrors[keyof SessionUnshareErrors]
+export type SessionPromptError = SessionPromptErrors[keyof SessionPromptErrors]
-export type SessionUnshareResponses = {
+export type SessionPromptResponses = {
/**
- * Successfully unshared session
+ * Created message
*/
- 200: Session
+ 200: {
+ info: AssistantMessage
+ parts: Array<Part>
+ }
}
-export type SessionUnshareResponse = SessionUnshareResponses[keyof SessionUnshareResponses]
+export type SessionPromptResponse = SessionPromptResponses[keyof SessionPromptResponses]
-export type SessionShareData = {
+export type SessionDeleteMessageData = {
body?: never
path: {
sessionID: string
+ messageID: string
}
query?: {
directory?: string
workspace?: string
}
- url: "/session/{sessionID}/share"
+ url: "/session/{sessionID}/message/{messageID}"
}
-export type SessionShareErrors = {
+export type SessionDeleteMessageErrors = {
/**
* Bad request
*/
@@ -3722,56 +5311,31 @@ export type SessionShareErrors = {
404: NotFoundError
}
-export type SessionShareError = SessionShareErrors[keyof SessionShareErrors]
+export type SessionDeleteMessageError = SessionDeleteMessageErrors[keyof SessionDeleteMessageErrors]
-export type SessionShareResponses = {
+export type SessionDeleteMessageResponses = {
/**
- * Successfully shared session
+ * Successfully deleted message
*/
- 200: Session
+ 200: boolean
}
-export type SessionShareResponse = SessionShareResponses[keyof SessionShareResponses]
+export type SessionDeleteMessageResponse = SessionDeleteMessageResponses[keyof SessionDeleteMessageResponses]
-export type SessionDiffData = {
+export type SessionMessageData = {
body?: never
path: {
sessionID: string
- }
- query?: {
- directory?: string
- workspace?: string
- messageID?: string
- }
- url: "/session/{sessionID}/diff"
-}
-
-export type SessionDiffResponses = {
- /**
- * Successfully retrieved diff
- */
- 200: Array<SnapshotFileDiff>
-}
-
-export type SessionDiffResponse = SessionDiffResponses[keyof SessionDiffResponses]
-
-export type SessionSummarizeData = {
- body?: {
- providerID: string
- modelID: string
- auto?: boolean
- }
- path: {
- sessionID: string
+ messageID: string
}
query?: {
directory?: string
workspace?: string
}
- url: "/session/{sessionID}/summarize"
+ url: "/session/{sessionID}/message/{messageID}"
}
-export type SessionSummarizeErrors = {
+export type SessionMessageErrors = {
/**
* Bad request
*/
@@ -3782,79 +5346,45 @@ export type SessionSummarizeErrors = {
404: NotFoundError
}
-export type SessionSummarizeError = SessionSummarizeErrors[keyof SessionSummarizeErrors]
+export type SessionMessageError = SessionMessageErrors[keyof SessionMessageErrors]
-export type SessionSummarizeResponses = {
+export type SessionMessageResponses = {
/**
- * Summarized session
+ * Message
*/
- 200: boolean
+ 200: {
+ info: Message
+ parts: Array<Part>
+ }
}
-export type SessionSummarizeResponse = SessionSummarizeResponses[keyof SessionSummarizeResponses]
+export type SessionMessageResponse = SessionMessageResponses[keyof SessionMessageResponses]
-export type SessionMessagesData = {
- body?: never
+export type SessionForkData = {
+ body?: {
+ messageID?: string
+ }
path: {
sessionID: string
}
query?: {
directory?: string
workspace?: string
- /**
- * Maximum number of messages to return
- */
- limit?: number
- before?: string
}
- url: "/session/{sessionID}/message"
-}
-
-export type SessionMessagesErrors = {
- /**
- * Bad request
- */
- 400: BadRequestError
- /**
- * Not found
- */
- 404: NotFoundError
+ url: "/session/{sessionID}/fork"
}
-export type SessionMessagesError = SessionMessagesErrors[keyof SessionMessagesErrors]
-
-export type SessionMessagesResponses = {
+export type SessionForkResponses = {
/**
- * List of messages
+ * 200
*/
- 200: Array<{
- info: Message
- parts: Array<Part>
- }>
+ 200: Session
}
-export type SessionMessagesResponse = SessionMessagesResponses[keyof SessionMessagesResponses]
+export type SessionForkResponse = SessionForkResponses[keyof SessionForkResponses]
-export type SessionPromptData = {
- body?: {
- messageID?: string
- model?: {
- providerID: string
- modelID: string
- }
- agent?: string
- noReply?: boolean
- /**
- * @deprecated tools and permissions have been merged, you can set permissions on the session itself now
- */
- tools?: {
- [key: string]: boolean
- }
- format?: OutputFormat
- system?: string
- variant?: string
- parts: Array<TextPartInput | FilePartInput | AgentPartInput | SubtaskPartInput>
- }
+export type SessionAbortData = {
+ body?: never
path: {
sessionID: string
}
@@ -3862,10 +5392,10 @@ export type SessionPromptData = {
directory?: string
workspace?: string
}
- url: "/session/{sessionID}/message"
+ url: "/session/{sessionID}/abort"
}
-export type SessionPromptErrors = {
+export type SessionAbortErrors = {
/**
* Bad request
*/
@@ -3876,34 +5406,34 @@ export type SessionPromptErrors = {
404: NotFoundError
}
-export type SessionPromptError = SessionPromptErrors[keyof SessionPromptErrors]
+export type SessionAbortError = SessionAbortErrors[keyof SessionAbortErrors]
-export type SessionPromptResponses = {
+export type SessionAbortResponses = {
/**
- * Created message
+ * Aborted session
*/
- 200: {
- info: AssistantMessage
- parts: Array<Part>
- }
+ 200: boolean
}
-export type SessionPromptResponse = SessionPromptResponses[keyof SessionPromptResponses]
+export type SessionAbortResponse = SessionAbortResponses[keyof SessionAbortResponses]
-export type SessionDeleteMessageData = {
- body?: never
+export type SessionInitData = {
+ body?: {
+ modelID: string
+ providerID: string
+ messageID: string
+ }
path: {
sessionID: string
- messageID: string
}
query?: {
directory?: string
workspace?: string
}
- url: "/session/{sessionID}/message/{messageID}"
+ url: "/session/{sessionID}/init"
}
-export type SessionDeleteMessageErrors = {
+export type SessionInitErrors = {
/**
* Bad request
*/
@@ -3914,31 +5444,30 @@ export type SessionDeleteMessageErrors = {
404: NotFoundError
}
-export type SessionDeleteMessageError = SessionDeleteMessageErrors[keyof SessionDeleteMessageErrors]
+export type SessionInitError = SessionInitErrors[keyof SessionInitErrors]
-export type SessionDeleteMessageResponses = {
+export type SessionInitResponses = {
/**
- * Successfully deleted message
+ * 200
*/
200: boolean
}
-export type SessionDeleteMessageResponse = SessionDeleteMessageResponses[keyof SessionDeleteMessageResponses]
+export type SessionInitResponse = SessionInitResponses[keyof SessionInitResponses]
-export type SessionMessageData = {
+export type SessionUnshareData = {
body?: never
path: {
sessionID: string
- messageID: string
}
query?: {
directory?: string
workspace?: string
}
- url: "/session/{sessionID}/message/{messageID}"
+ url: "/session/{sessionID}/share"
}
-export type SessionMessageErrors = {
+export type SessionUnshareErrors = {
/**
* Bad request
*/
@@ -3949,35 +5478,30 @@ export type SessionMessageErrors = {
404: NotFoundError
}
-export type SessionMessageError = SessionMessageErrors[keyof SessionMessageErrors]
+export type SessionUnshareError = SessionUnshareErrors[keyof SessionUnshareErrors]
-export type SessionMessageResponses = {
+export type SessionUnshareResponses = {
/**
- * Message
+ * Successfully unshared session
*/
- 200: {
- info: Message
- parts: Array<Part>
- }
+ 200: Session
}
-export type SessionMessageResponse = SessionMessageResponses[keyof SessionMessageResponses]
+export type SessionUnshareResponse = SessionUnshareResponses[keyof SessionUnshareResponses]
-export type PartDeleteData = {
+export type SessionShareData = {
body?: never
path: {
sessionID: string
- messageID: string
- partID: string
}
query?: {
directory?: string
workspace?: string
}
- url: "/session/{sessionID}/message/{messageID}/part/{partID}"
+ url: "/session/{sessionID}/share"
}
-export type PartDeleteErrors = {
+export type SessionShareErrors = {
/**
* Bad request
*/
@@ -3988,32 +5512,34 @@ export type PartDeleteErrors = {
404: NotFoundError
}
-export type PartDeleteError = PartDeleteErrors[keyof PartDeleteErrors]
+export type SessionShareError = SessionShareErrors[keyof SessionShareErrors]
-export type PartDeleteResponses = {
+export type SessionShareResponses = {
/**
- * Successfully deleted part
+ * Successfully shared session
*/
- 200: boolean
+ 200: Session
}
-export type PartDeleteResponse = PartDeleteResponses[keyof PartDeleteResponses]
+export type SessionShareResponse = SessionShareResponses[keyof SessionShareResponses]
-export type PartUpdateData = {
- body?: Part
+export type SessionSummarizeData = {
+ body?: {
+ providerID: string
+ modelID: string
+ auto?: boolean
+ }
path: {
sessionID: string
- messageID: string
- partID: string
}
query?: {
directory?: string
workspace?: string
}
- url: "/session/{sessionID}/message/{messageID}/part/{partID}"
+ url: "/session/{sessionID}/summarize"
}
-export type PartUpdateErrors = {
+export type SessionSummarizeErrors = {
/**
* Bad request
*/
@@ -4024,16 +5550,16 @@ export type PartUpdateErrors = {
404: NotFoundError
}
-export type PartUpdateError = PartUpdateErrors[keyof PartUpdateErrors]
+export type SessionSummarizeError = SessionSummarizeErrors[keyof SessionSummarizeErrors]
-export type PartUpdateResponses = {
+export type SessionSummarizeResponses = {
/**
- * Successfully updated part
+ * Summarized session
*/
- 200: Part
+ 200: boolean
}
-export type PartUpdateResponse = PartUpdateResponses[keyof PartUpdateResponses]
+export type SessionSummarizeResponse = SessionSummarizeResponses[keyof SessionSummarizeResponses]
export type SessionPromptAsyncData = {
body?: {
@@ -4044,9 +5570,6 @@ export type SessionPromptAsyncData = {
}
agent?: string
noReply?: boolean
- /**
- * @deprecated tools and permissions have been merged, you can set permissions on the session itself now
- */
tools?: {
[key: string]: boolean
}
@@ -4292,99 +5815,21 @@ export type PermissionRespondResponses = {
export type PermissionRespondResponse = PermissionRespondResponses[keyof PermissionRespondResponses]
-export type PermissionReplyData = {
- body?: {
- reply: "once" | "always" | "reject"
- message?: string
- }
- path: {
- requestID: string
- }
- query?: {
- directory?: string
- workspace?: string
- }
- url: "/permission/{requestID}/reply"
-}
-
-export type PermissionReplyErrors = {
- /**
- * Bad request
- */
- 400: BadRequestError
- /**
- * Not found
- */
- 404: NotFoundError
-}
-
-export type PermissionReplyError = PermissionReplyErrors[keyof PermissionReplyErrors]
-
-export type PermissionReplyResponses = {
- /**
- * Permission processed successfully
- */
- 200: boolean
-}
-
-export type PermissionReplyResponse = PermissionReplyResponses[keyof PermissionReplyResponses]
-
-export type PermissionListData = {
- body?: never
- path?: never
- query?: {
- directory?: string
- workspace?: string
- }
- url: "/permission"
-}
-
-export type PermissionListResponses = {
- /**
- * List of pending permissions
- */
- 200: Array<PermissionRequest>
-}
-
-export type PermissionListResponse = PermissionListResponses[keyof PermissionListResponses]
-
-export type QuestionListData = {
+export type PartDeleteData = {
body?: never
- path?: never
- query?: {
- directory?: string
- workspace?: string
- }
- url: "/question"
-}
-
-export type QuestionListResponses = {
- /**
- * List of pending questions
- */
- 200: Array<QuestionRequest>
-}
-
-export type QuestionListResponse = QuestionListResponses[keyof QuestionListResponses]
-
-export type QuestionReplyData = {
- body?: {
- /**
- * User answers in order of questions (each answer is an array of selected labels)
- */
- answers: Array<QuestionAnswer>
- }
path: {
- requestID: string
+ sessionID: string
+ messageID: string
+ partID: string
}
query?: {
directory?: string
workspace?: string
}
- url: "/question/{requestID}/reply"
+ url: "/session/{sessionID}/message/{messageID}/part/{partID}"
}
-export type QuestionReplyErrors = {
+export type PartDeleteErrors = {
/**
* Bad request
*/
@@ -4395,30 +5840,32 @@ export type QuestionReplyErrors = {
404: NotFoundError
}
-export type QuestionReplyError = QuestionReplyErrors[keyof QuestionReplyErrors]
+export type PartDeleteError = PartDeleteErrors[keyof PartDeleteErrors]
-export type QuestionReplyResponses = {
+export type PartDeleteResponses = {
/**
- * Question answered successfully
+ * Successfully deleted part
*/
200: boolean
}
-export type QuestionReplyResponse = QuestionReplyResponses[keyof QuestionReplyResponses]
+export type PartDeleteResponse = PartDeleteResponses[keyof PartDeleteResponses]
-export type QuestionRejectData = {
- body?: never
+export type PartUpdateData = {
+ body?: Part
path: {
- requestID: string
+ sessionID: string
+ messageID: string
+ partID: string
}
query?: {
directory?: string
workspace?: string
}
- url: "/question/{requestID}/reject"
+ url: "/session/{sessionID}/message/{messageID}/part/{partID}"
}
-export type QuestionRejectErrors = {
+export type PartUpdateErrors = {
/**
* Bad request
*/
@@ -4429,148 +5876,16 @@ export type QuestionRejectErrors = {
404: NotFoundError
}
-export type QuestionRejectError = QuestionRejectErrors[keyof QuestionRejectErrors]
-
-export type QuestionRejectResponses = {
- /**
- * Question rejected successfully
- */
- 200: boolean
-}
-
-export type QuestionRejectResponse = QuestionRejectResponses[keyof QuestionRejectResponses]
-
-export type ProviderListData = {
- body?: never
- path?: never
- query?: {
- directory?: string
- workspace?: string
- }
- url: "/provider"
-}
-
-export type ProviderListResponses = {
- /**
- * List of providers
- */
- 200: {
- all: Array<Provider>
- default: {
- [key: string]: string
- }
- connected: Array<string>
- }
-}
-
-export type ProviderListResponse = ProviderListResponses[keyof ProviderListResponses]
-
-export type ProviderAuthData = {
- body?: never
- path?: never
- query?: {
- directory?: string
- workspace?: string
- }
- url: "/provider/auth"
-}
-
-export type ProviderAuthResponses = {
- /**
- * Provider auth methods
- */
- 200: {
- [key: string]: Array<ProviderAuthMethod>
- }
-}
-
-export type ProviderAuthResponse = ProviderAuthResponses[keyof ProviderAuthResponses]
-
-export type ProviderOauthAuthorizeData = {
- body?: {
- /**
- * Auth method index
- */
- method: number
- /**
- * Prompt inputs
- */
- inputs?: {
- [key: string]: string
- }
- }
- path: {
- /**
- * Provider ID
- */
- providerID: string
- }
- query?: {
- directory?: string
- workspace?: string
- }
- url: "/provider/{providerID}/oauth/authorize"
-}
-
-export type ProviderOauthAuthorizeErrors = {
- /**
- * Bad request
- */
- 400: BadRequestError
-}
-
-export type ProviderOauthAuthorizeError = ProviderOauthAuthorizeErrors[keyof ProviderOauthAuthorizeErrors]
-
-export type ProviderOauthAuthorizeResponses = {
- /**
- * Authorization URL and method
- */
- 200: ProviderAuthAuthorization
-}
-
-export type ProviderOauthAuthorizeResponse = ProviderOauthAuthorizeResponses[keyof ProviderOauthAuthorizeResponses]
-
-export type ProviderOauthCallbackData = {
- body?: {
- /**
- * Auth method index
- */
- method: number
- /**
- * OAuth authorization code
- */
- code?: string
- }
- path: {
- /**
- * Provider ID
- */
- providerID: string
- }
- query?: {
- directory?: string
- workspace?: string
- }
- url: "/provider/{providerID}/oauth/callback"
-}
-
-export type ProviderOauthCallbackErrors = {
- /**
- * Bad request
- */
- 400: BadRequestError
-}
-
-export type ProviderOauthCallbackError = ProviderOauthCallbackErrors[keyof ProviderOauthCallbackErrors]
+export type PartUpdateError = PartUpdateErrors[keyof PartUpdateErrors]
-export type ProviderOauthCallbackResponses = {
+export type PartUpdateResponses = {
/**
- * OAuth callback processed successfully
+ * Successfully updated part
*/
- 200: boolean
+ 200: Part
}
-export type ProviderOauthCallbackResponse = ProviderOauthCallbackResponses[keyof ProviderOauthCallbackResponses]
+export type PartUpdateResponse = PartUpdateResponses[keyof PartUpdateResponses]
export type SyncStartData = {
body?: never
@@ -4670,402 +5985,150 @@ export type SyncHistoryListResponses = {
export type SyncHistoryListResponse = SyncHistoryListResponses[keyof SyncHistoryListResponses]
-export type FindTextData = {
- body?: never
- path?: never
- query: {
- directory?: string
- workspace?: string
- pattern: string
- }
- url: "/find"
-}
-
-export type FindTextResponses = {
- /**
- * Matches
- */
- 200: Array<{
- path: {
- text: string
- }
- lines: {
- text: string
- }
- line_number: number
- absolute_offset: number
- submatches: Array<{
- match: {
- text: string
- }
- start: number
- end: number
- }>
- }>
-}
-
-export type FindTextResponse = FindTextResponses[keyof FindTextResponses]
-
-export type FindFilesData = {
- body?: never
- path?: never
- query: {
- directory?: string
- workspace?: string
- query: string
- dirs?: "true" | "false"
- type?: "file" | "directory"
- limit?: number
- }
- url: "/find/file"
-}
-
-export type FindFilesResponses = {
- /**
- * File paths
- */
- 200: Array<string>
-}
-
-export type FindFilesResponse = FindFilesResponses[keyof FindFilesResponses]
-
-export type FindSymbolsData = {
- body?: never
- path?: never
- query: {
- directory?: string
- workspace?: string
- query: string
- }
- url: "/find/symbol"
-}
-
-export type FindSymbolsResponses = {
- /**
- * Symbols
- */
- 200: Array<Symbol>
-}
-
-export type FindSymbolsResponse = FindSymbolsResponses[keyof FindSymbolsResponses]
-
-export type FileListData = {
- body?: never
- path?: never
- query: {
- directory?: string
- workspace?: string
- path: string
- }
- url: "/file"
-}
-
-export type FileListResponses = {
- /**
- * Files and directories
- */
- 200: Array<FileNode>
-}
-
-export type FileListResponse = FileListResponses[keyof FileListResponses]
-
-export type FileReadData = {
- body?: never
- path?: never
- query: {
- directory?: string
- workspace?: string
- path: string
- }
- url: "/file/content"
-}
-
-export type FileReadResponses = {
- /**
- * File content
- */
- 200: FileContent
-}
-
-export type FileReadResponse = FileReadResponses[keyof FileReadResponses]
-
-export type FileStatusData = {
- body?: never
- path?: never
- query?: {
- directory?: string
- workspace?: string
- }
- url: "/file/status"
-}
-
-export type FileStatusResponses = {
- /**
- * File status
- */
- 200: Array<File>
-}
-
-export type FileStatusResponse = FileStatusResponses[keyof FileStatusResponses]
-
-export type EventSubscribeData = {
+export type V2SessionListData = {
body?: never
path?: never
query?: {
directory?: string
workspace?: string
}
- url: "/event"
+ url: "/api/session"
}
-export type EventSubscribeResponses = {
- /**
- * Event stream
- */
- 200: Event
-}
-
-export type EventSubscribeResponse = EventSubscribeResponses[keyof EventSubscribeResponses]
-
-export type McpStatusData = {
- body?: never
- path?: never
- query?: {
- directory?: string
- workspace?: string
- }
- url: "/mcp"
-}
-
-export type McpStatusResponses = {
- /**
- * MCP server status
- */
- 200: {
- [key: string]: McpStatus
- }
-}
-
-export type McpStatusResponse = McpStatusResponses[keyof McpStatusResponses]
-
-export type McpAddData = {
- body?: {
- name: string
- config: McpLocalConfig | McpRemoteConfig
- }
- path?: never
- query?: {
- directory?: string
- workspace?: string
- }
- url: "/mcp"
-}
-
-export type McpAddErrors = {
+export type V2SessionListErrors = {
/**
* Bad request
*/
400: BadRequestError
}
-export type McpAddError = McpAddErrors[keyof McpAddErrors]
+export type V2SessionListError = V2SessionListErrors[keyof V2SessionListErrors]
-export type McpAddResponses = {
+export type V2SessionListResponses = {
/**
- * MCP server added successfully
+ * V2SessionsResponse
*/
- 200: {
- [key: string]: McpStatus
- }
+ 200: V2SessionsResponse
}
-export type McpAddResponse = McpAddResponses[keyof McpAddResponses]
+export type V2SessionListResponse = V2SessionListResponses[keyof V2SessionListResponses]
-export type McpAuthRemoveData = {
- body?: never
+export type V2SessionPromptData = {
+ body?: {
+ prompt: Prompt
+ delivery?: SessionDelivery
+ }
path: {
- name: string
+ sessionID: string
}
query?: {
directory?: string
workspace?: string
}
- url: "/mcp/{name}/auth"
-}
-
-export type McpAuthRemoveErrors = {
- /**
- * Not found
- */
- 404: NotFoundError
+ url: "/api/session/{sessionID}/prompt"
}
-export type McpAuthRemoveError = McpAuthRemoveErrors[keyof McpAuthRemoveErrors]
-
-export type McpAuthRemoveResponses = {
+export type V2SessionPromptResponses = {
/**
- * OAuth credentials removed
+ * Session.Message
*/
- 200: {
- success: true
- }
+ 200: SessionMessage
}
-export type McpAuthRemoveResponse = McpAuthRemoveResponses[keyof McpAuthRemoveResponses]
+export type V2SessionPromptResponse = V2SessionPromptResponses[keyof V2SessionPromptResponses]
-export type McpAuthStartData = {
+export type V2SessionCompactData = {
body?: never
path: {
- name: string
+ sessionID: string
}
query?: {
directory?: string
workspace?: string
}
- url: "/mcp/{name}/auth"
+ url: "/api/session/{sessionID}/compact"
}
-export type McpAuthStartErrors = {
+export type V2SessionCompactResponses = {
/**
- * MCP server does not support OAuth
+ * <No Content>
*/
- 400: McpUnsupportedOAuthError
- /**
- * Not found
- */
- 404: NotFoundError
-}
-
-export type McpAuthStartError = McpAuthStartErrors[keyof McpAuthStartErrors]
-
-export type McpAuthStartResponses = {
- /**
- * OAuth flow started
- */
- 200: {
- /**
- * URL to open in browser for authorization
- */
- authorizationUrl: string
- }
+ 204: void
}
-export type McpAuthStartResponse = McpAuthStartResponses[keyof McpAuthStartResponses]
+export type V2SessionCompactResponse = V2SessionCompactResponses[keyof V2SessionCompactResponses]
-export type McpAuthCallbackData = {
- body?: {
- /**
- * Authorization code from OAuth callback
- */
- code: string
- }
+export type V2SessionWaitData = {
+ body?: never
path: {
- name: string
+ sessionID: string
}
query?: {
directory?: string
workspace?: string
}
- url: "/mcp/{name}/auth/callback"
+ url: "/api/session/{sessionID}/wait"
}
-export type McpAuthCallbackErrors = {
+export type V2SessionWaitResponses = {
/**
- * Bad request
+ * <No Content>
*/
- 400: BadRequestError
- /**
- * Not found
- */
- 404: NotFoundError
-}
-
-export type McpAuthCallbackError = McpAuthCallbackErrors[keyof McpAuthCallbackErrors]
-
-export type McpAuthCallbackResponses = {
- /**
- * OAuth authentication completed
- */
- 200: McpStatus
+ 204: void
}
-export type McpAuthCallbackResponse = McpAuthCallbackResponses[keyof McpAuthCallbackResponses]
+export type V2SessionWaitResponse = V2SessionWaitResponses[keyof V2SessionWaitResponses]
-export type McpAuthAuthenticateData = {
+export type V2SessionContextData = {
body?: never
path: {
- name: string
+ sessionID: string
}
query?: {
directory?: string
workspace?: string
}
- url: "/mcp/{name}/auth/authenticate"
+ url: "/api/session/{sessionID}/context"
}
-export type McpAuthAuthenticateErrors = {
+export type V2SessionContextResponses = {
/**
- * MCP server does not support OAuth
- */
- 400: McpUnsupportedOAuthError
- /**
- * Not found
+ * Success
*/
- 404: NotFoundError
+ 200: Array<SessionMessage>
}
-export type McpAuthAuthenticateError = McpAuthAuthenticateErrors[keyof McpAuthAuthenticateErrors]
+export type V2SessionContextResponse = V2SessionContextResponses[keyof V2SessionContextResponses]
-export type McpAuthAuthenticateResponses = {
- /**
- * OAuth authentication completed
- */
- 200: McpStatus
-}
-
-export type McpAuthAuthenticateResponse = McpAuthAuthenticateResponses[keyof McpAuthAuthenticateResponses]
-
-export type McpConnectData = {
+export type V2SessionMessagesData = {
body?: never
path: {
- name: string
+ sessionID: string
}
query?: {
directory?: string
workspace?: string
}
- url: "/mcp/{name}/connect"
+ url: "/api/session/{sessionID}/message"
}
-export type McpConnectResponses = {
+export type V2SessionMessagesErrors = {
/**
- * MCP server connected successfully
+ * Bad request
*/
- 200: boolean
+ 400: BadRequestError
}
-export type McpConnectResponse = McpConnectResponses[keyof McpConnectResponses]
+export type V2SessionMessagesError = V2SessionMessagesErrors[keyof V2SessionMessagesErrors]
-export type McpDisconnectData = {
- body?: never
- path: {
- name: string
- }
- query?: {
- directory?: string
- workspace?: string
- }
- url: "/mcp/{name}/disconnect"
-}
-
-export type McpDisconnectResponses = {
+export type V2SessionMessagesResponses = {
/**
- * MCP server disconnected successfully
+ * V2SessionMessagesResponse
*/
- 200: boolean
+ 200: V2SessionMessagesResponse
}
-export type McpDisconnectResponse = McpDisconnectResponses[keyof McpDisconnectResponses]
+export type V2SessionMessagesResponse2 = V2SessionMessagesResponses[keyof V2SessionMessagesResponses]
export type TuiAppendPromptData = {
body?: {
@@ -5246,9 +6309,6 @@ export type TuiShowToastData = {
title?: string
message: string
variant: "info" | "success" | "warning" | "error"
- /**
- * Duration in milliseconds
- */
duration?: number
}
path?: never
@@ -5269,7 +6329,7 @@ export type TuiShowToastResponses = {
export type TuiShowToastResponse = TuiShowToastResponses[keyof TuiShowToastResponses]
export type TuiPublishData = {
- body?: EventTuiPromptAppend | EventTuiCommandExecute | EventTuiToastShow | EventTuiSessionSelect
+ body?: EventTuiPromptAppend2 | EventTuiCommandExecute2 | EventTuiToastShow2 | EventTuiSessionSelect2
path?: never
query?: {
directory?: string
@@ -5374,179 +6434,202 @@ export type TuiControlResponseResponses = {
export type TuiControlResponseResponse = TuiControlResponseResponses[keyof TuiControlResponseResponses]
-export type InstanceDisposeData = {
+export type ExperimentalWorkspaceAdapterListData = {
body?: never
path?: never
query?: {
directory?: string
workspace?: string
}
- url: "/instance/dispose"
+ url: "/experimental/workspace/adapter"
}
-export type InstanceDisposeResponses = {
+export type ExperimentalWorkspaceAdapterListResponses = {
/**
- * Instance disposed
+ * Workspace adapters
*/
- 200: boolean
+ 200: Array<{
+ type: string
+ name: string
+ description: string
+ }>
}
-export type InstanceDisposeResponse = InstanceDisposeResponses[keyof InstanceDisposeResponses]
+export type ExperimentalWorkspaceAdapterListResponse =
+ ExperimentalWorkspaceAdapterListResponses[keyof ExperimentalWorkspaceAdapterListResponses]
-export type PathGetData = {
+export type ExperimentalWorkspaceListData = {
body?: never
path?: never
query?: {
directory?: string
workspace?: string
}
- url: "/path"
+ url: "/experimental/workspace"
}
-export type PathGetResponses = {
+export type ExperimentalWorkspaceListResponses = {
/**
- * Path
+ * Workspaces
*/
- 200: Path
+ 200: Array<Workspace>
}
-export type PathGetResponse = PathGetResponses[keyof PathGetResponses]
+export type ExperimentalWorkspaceListResponse =
+ ExperimentalWorkspaceListResponses[keyof ExperimentalWorkspaceListResponses]
-export type VcsGetData = {
- body?: never
+export type ExperimentalWorkspaceCreateData = {
+ body?: {
+ id?: string
+ type: string
+ branch: string | null
+ extra?: unknown | null
+ }
path?: never
query?: {
directory?: string
workspace?: string
}
- url: "/vcs"
+ url: "/experimental/workspace"
}
-export type VcsGetResponses = {
+export type ExperimentalWorkspaceCreateErrors = {
/**
- * VCS info
+ * Bad request
*/
- 200: VcsInfo
+ 400: BadRequestError
}
-export type VcsGetResponse = VcsGetResponses[keyof VcsGetResponses]
-
-export type VcsDiffData = {
- body?: never
- path?: never
- query: {
- directory?: string
- workspace?: string
- mode: "git" | "branch"
- }
- url: "/vcs/diff"
-}
+export type ExperimentalWorkspaceCreateError =
+ ExperimentalWorkspaceCreateErrors[keyof ExperimentalWorkspaceCreateErrors]
-export type VcsDiffResponses = {
+export type ExperimentalWorkspaceCreateResponses = {
/**
- * VCS diff
+ * Workspace created
*/
- 200: Array<VcsFileDiff>
+ 200: Workspace
}
-export type VcsDiffResponse = VcsDiffResponses[keyof VcsDiffResponses]
+export type ExperimentalWorkspaceCreateResponse =
+ ExperimentalWorkspaceCreateResponses[keyof ExperimentalWorkspaceCreateResponses]
-export type CommandListData = {
+export type ExperimentalWorkspaceStatusData = {
body?: never
path?: never
query?: {
directory?: string
workspace?: string
}
- url: "/command"
+ url: "/experimental/workspace/status"
}
-export type CommandListResponses = {
+export type ExperimentalWorkspaceStatusResponses = {
/**
- * List of commands
+ * Workspace status
*/
- 200: Array<Command>
+ 200: Array<{
+ workspaceID: string
+ status: "connected" | "connecting" | "disconnected" | "error"
+ }>
}
-export type CommandListResponse = CommandListResponses[keyof CommandListResponses]
+export type ExperimentalWorkspaceStatusResponse =
+ ExperimentalWorkspaceStatusResponses[keyof ExperimentalWorkspaceStatusResponses]
-export type AppAgentsData = {
+export type ExperimentalWorkspaceRemoveData = {
body?: never
- path?: never
+ path: {
+ id: string
+ }
query?: {
directory?: string
workspace?: string
}
- url: "/agent"
+ url: "/experimental/workspace/{id}"
}
-export type AppAgentsResponses = {
+export type ExperimentalWorkspaceRemoveErrors = {
/**
- * List of agents
+ * Bad request
*/
- 200: Array<Agent>
+ 400: BadRequestError
}
-export type AppAgentsResponse = AppAgentsResponses[keyof AppAgentsResponses]
-
-export type AppSkillsData = {
- body?: never
- path?: never
- query?: {
- directory?: string
- workspace?: string
- }
- url: "/skill"
-}
+export type ExperimentalWorkspaceRemoveError =
+ ExperimentalWorkspaceRemoveErrors[keyof ExperimentalWorkspaceRemoveErrors]
-export type AppSkillsResponses = {
+export type ExperimentalWorkspaceRemoveResponses = {
/**
- * List of skills
+ * Workspace removed
*/
- 200: Array<{
- name: string
- description: string
- location: string
- content: string
- }>
+ 200: Workspace
}
-export type AppSkillsResponse = AppSkillsResponses[keyof AppSkillsResponses]
+export type ExperimentalWorkspaceRemoveResponse =
+ ExperimentalWorkspaceRemoveResponses[keyof ExperimentalWorkspaceRemoveResponses]
-export type LspStatusData = {
- body?: never
- path?: never
+export type ExperimentalWorkspaceSessionRestoreData = {
+ body?: {
+ sessionID: string
+ }
+ path: {
+ id: string
+ }
query?: {
directory?: string
workspace?: string
}
- url: "/lsp"
+ url: "/experimental/workspace/{id}/session-restore"
}
-export type LspStatusResponses = {
+export type ExperimentalWorkspaceSessionRestoreErrors = {
/**
- * LSP server status
+ * Bad request
*/
- 200: Array<LspStatus>
+ 400: BadRequestError
}
-export type LspStatusResponse = LspStatusResponses[keyof LspStatusResponses]
+export type ExperimentalWorkspaceSessionRestoreError =
+ ExperimentalWorkspaceSessionRestoreErrors[keyof ExperimentalWorkspaceSessionRestoreErrors]
-export type FormatterStatusData = {
+export type ExperimentalWorkspaceSessionRestoreResponses = {
+ /**
+ * Session replay started
+ */
+ 200: {
+ total: number
+ }
+}
+
+export type ExperimentalWorkspaceSessionRestoreResponse =
+ ExperimentalWorkspaceSessionRestoreResponses[keyof ExperimentalWorkspaceSessionRestoreResponses]
+
+export type PtyConnectData = {
body?: never
- path?: never
+ path: {
+ ptyID: string
+ }
query?: {
directory?: string
workspace?: string
}
- url: "/formatter"
+ url: "/pty/{ptyID}/connect"
}
-export type FormatterStatusResponses = {
+export type PtyConnectErrors = {
/**
- * Formatter status
+ * Not found
*/
- 200: Array<FormatterStatus>
+ 404: NotFoundError
}
-export type FormatterStatusResponse = FormatterStatusResponses[keyof FormatterStatusResponses]
+export type PtyConnectError = PtyConnectErrors[keyof PtyConnectErrors]
+
+export type PtyConnectResponses = {
+ /**
+ * Connected session
+ */
+ 200: boolean
+}
+
+export type PtyConnectResponse = PtyConnectResponses[keyof PtyConnectResponses]