fix(tui): gate background shortcut by capability (#32837)

This commit is contained in:
Aiden Cline 2026-06-18 14:54:26 +02:00 committed by GitHub
commit 2892e97c57
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 148 additions and 20 deletions

View file

@ -29,6 +29,8 @@ import type {
EventTuiPromptAppend,
EventTuiSessionSelect,
EventTuiToastShow,
ExperimentalCapabilitiesGetErrors,
ExperimentalCapabilitiesGetResponses,
ExperimentalConsoleGetErrors,
ExperimentalConsoleGetResponses,
ExperimentalConsoleListOrgsErrors,
@ -627,6 +629,42 @@ export class ControlPlane extends HeyApiClient {
}
}
export class Capabilities extends HeyApiClient {
/**
* Get experimental capabilities
*
* Get experimental features enabled on the OpenCode server.
*/
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<
ExperimentalCapabilitiesGetResponses,
ExperimentalCapabilitiesGetErrors,
ThrowOnError
>({
url: "/experimental/capabilities",
...options,
...params,
})
}
}
export class Console extends HeyApiClient {
/**
* Get active Console provider metadata
@ -1180,6 +1218,11 @@ export class Experimental extends HeyApiClient {
return (this._controlPlane ??= new ControlPlane({ client: this.client }))
}
private _capabilities?: Capabilities
get capabilities(): Capabilities {
return (this._capabilities ??= new Capabilities({ client: this.client }))
}
private _console?: Console
get console(): Console {
return (this._console ??= new Console({ client: this.client }))

View file

@ -2144,6 +2144,10 @@ export type Provider = {
}
}
export type ExperimentalCapabilities = {
backgroundSubagents: boolean
}
export type ConsoleState = {
consoleManagedProviders: Array<string>
activeOrgName?: string
@ -5549,6 +5553,36 @@ export type ConfigProvidersResponses = {
export type ConfigProvidersResponse = ConfigProvidersResponses[keyof ConfigProvidersResponses]
export type ExperimentalCapabilitiesGetData = {
body?: never
path?: never
query?: {
directory?: string
workspace?: string
}
url: "/experimental/capabilities"
}
export type ExperimentalCapabilitiesGetErrors = {
/**
* Bad request
*/
400: BadRequestError
}
export type ExperimentalCapabilitiesGetError =
ExperimentalCapabilitiesGetErrors[keyof ExperimentalCapabilitiesGetErrors]
export type ExperimentalCapabilitiesGetResponses = {
/**
* Experimental capabilities
*/
200: ExperimentalCapabilities
}
export type ExperimentalCapabilitiesGetResponse =
ExperimentalCapabilitiesGetResponses[keyof ExperimentalCapabilitiesGetResponses]
export type ExperimentalConsoleGetData = {
body?: never
path?: never