commands to acp+ migration: extensions management (#8733)

This commit is contained in:
Alex Hancock
2026-04-22 15:23:02 -04:00
committed by GitHub
parent ee46794b18
commit e7e50320a1
13 changed files with 303 additions and 204 deletions
+21
View File
@@ -8,6 +8,7 @@ export interface ExtMethodProvider {
}
import type {
AddConfigExtensionRequest,
AddExtensionRequest,
ArchiveSessionRequest,
CheckSecretRequest,
@@ -52,9 +53,11 @@ import type {
ReadResourceResponse,
RefreshProviderInventoryRequest,
RefreshProviderInventoryResponse,
RemoveConfigExtensionRequest,
RemoveConfigRequest,
RemoveExtensionRequest,
RemoveSecretRequest,
ToggleConfigExtensionRequest,
UnarchiveSessionRequest,
UpdateSessionProjectRequest,
UpdateSourceRequest,
@@ -123,6 +126,24 @@ export class GooseExtClient {
return zGetExtensionsResponse.parse(raw) as GetExtensionsResponse;
}
async GooseConfigExtensionsAdd(
params: AddConfigExtensionRequest,
): Promise<void> {
await this.conn.extMethod("_goose/config/extensions/add", params);
}
async GooseConfigExtensionsRemove(
params: RemoveConfigExtensionRequest,
): Promise<void> {
await this.conn.extMethod("_goose/config/extensions/remove", params);
}
async GooseConfigExtensionsToggle(
params: ToggleConfigExtensionRequest,
): Promise<void> {
await this.conn.extMethod("_goose/config/extensions/toggle", params);
}
async GooseSessionExtensions(
params: GetSessionExtensionsRequest,
): Promise<GetSessionExtensionsResponse> {
+16 -1
View File
@@ -1,6 +1,6 @@
// This file is auto-generated by @hey-api/openapi-ts
export type { AddExtensionRequest, ArchiveSessionRequest, CheckSecretRequest, CheckSecretResponse, CreateSourceRequest, CreateSourceResponse, DeleteSessionRequest, DeleteSourceRequest, DictationConfigRequest, DictationConfigResponse, DictationDownloadProgress, DictationLocalModelStatus, DictationModelCancelRequest, DictationModelDeleteRequest, DictationModelDownloadProgressRequest, DictationModelDownloadProgressResponse, DictationModelDownloadRequest, DictationModelOption, DictationModelSelectRequest, DictationModelsListRequest, DictationModelsListResponse, DictationProviderStatusEntry, DictationTranscribeRequest, DictationTranscribeResponse, EmptyResponse, ExportSessionRequest, ExportSessionResponse, ExportSourceRequest, ExportSourceResponse, ExtRequest, ExtResponse, GetExtensionsRequest, GetExtensionsResponse, GetSessionExtensionsRequest, GetSessionExtensionsResponse, GetToolsRequest, GetToolsResponse, ImportSessionRequest, ImportSessionResponse, ImportSourcesRequest, ImportSourcesResponse, ListProvidersRequest, ListProvidersResponse, ListSourcesRequest, ListSourcesResponse, ProviderConfigKey, ProviderInventoryEntryDto, ProviderInventoryModelDto, ReadConfigRequest, ReadConfigResponse, ReadResourceRequest, ReadResourceResponse, RefreshProviderInventoryRequest, RefreshProviderInventoryResponse, RefreshProviderInventorySkipDto, RefreshProviderInventorySkipReasonDto, RemoveConfigRequest, RemoveExtensionRequest, RemoveSecretRequest, SourceEntry, SourceType, UnarchiveSessionRequest, UpdateSessionProjectRequest, UpdateSourceRequest, UpdateSourceResponse, UpdateWorkingDirRequest, UpsertConfigRequest, UpsertSecretRequest } from './types.gen.js';
export type { AddConfigExtensionRequest, AddExtensionRequest, ArchiveSessionRequest, CheckSecretRequest, CheckSecretResponse, CreateSourceRequest, CreateSourceResponse, DeleteSessionRequest, DeleteSourceRequest, DictationConfigRequest, DictationConfigResponse, DictationDownloadProgress, DictationLocalModelStatus, DictationModelCancelRequest, DictationModelDeleteRequest, DictationModelDownloadProgressRequest, DictationModelDownloadProgressResponse, DictationModelDownloadRequest, DictationModelOption, DictationModelSelectRequest, DictationModelsListRequest, DictationModelsListResponse, DictationProviderStatusEntry, DictationTranscribeRequest, DictationTranscribeResponse, EmptyResponse, ExportSessionRequest, ExportSessionResponse, ExportSourceRequest, ExportSourceResponse, ExtRequest, ExtResponse, GetExtensionsRequest, GetExtensionsResponse, GetSessionExtensionsRequest, GetSessionExtensionsResponse, GetToolsRequest, GetToolsResponse, ImportSessionRequest, ImportSessionResponse, ImportSourcesRequest, ImportSourcesResponse, ListProvidersRequest, ListProvidersResponse, ListSourcesRequest, ListSourcesResponse, ProviderConfigKey, ProviderInventoryEntryDto, ProviderInventoryModelDto, ReadConfigRequest, ReadConfigResponse, ReadResourceRequest, ReadResourceResponse, RefreshProviderInventoryRequest, RefreshProviderInventoryResponse, RefreshProviderInventorySkipDto, RefreshProviderInventorySkipReasonDto, RemoveConfigExtensionRequest, RemoveConfigRequest, RemoveExtensionRequest, RemoveSecretRequest, SourceEntry, SourceType, ToggleConfigExtensionRequest, UnarchiveSessionRequest, UpdateSessionProjectRequest, UpdateSourceRequest, UpdateSourceResponse, UpdateWorkingDirRequest, UpsertConfigRequest, UpsertSecretRequest } from './types.gen.js';
export const GOOSE_EXT_METHODS = [
{
@@ -38,6 +38,21 @@ export const GOOSE_EXT_METHODS = [
requestType: "GetExtensionsRequest",
responseType: "GetExtensionsResponse",
},
{
method: "_goose/config/extensions/add",
requestType: "AddConfigExtensionRequest",
responseType: "EmptyResponse",
},
{
method: "_goose/config/extensions/remove",
requestType: "RemoveConfigExtensionRequest",
responseType: "EmptyResponse",
},
{
method: "_goose/config/extensions/toggle",
requestType: "ToggleConfigExtensionRequest",
responseType: "EmptyResponse",
},
{
method: "_goose/session/extensions",
requestType: "GetSessionExtensionsRequest",
+31 -2
View File
@@ -90,12 +90,41 @@ export type GetExtensionsRequest = {
*/
export type GetExtensionsResponse = {
/**
* Array of ExtensionEntry objects with `enabled` flag and config details.
* Array of ExtensionEntry objects with `enabled` flag, `configKey`, and flattened config details.
*/
extensions: Array<unknown>;
warnings: Array<string>;
};
/**
* Persist a new extension to the user's global goose config.
*/
export type AddConfigExtensionRequest = {
name: string;
/**
* Extension configuration. Must be a JSON object matching one of the
* `ExtensionConfig` variants (e.g. `stdio`, `streamable_http`, `builtin`).
* `name` and `enabled` are injected server-side.
*/
extensionConfig?: unknown;
enabled?: boolean;
};
/**
* Remove a persisted extension from the user's global goose config.
*/
export type RemoveConfigExtensionRequest = {
configKey: string;
};
/**
* Toggle the `enabled` flag for a persisted extension in the user's global goose config.
*/
export type ToggleConfigExtensionRequest = {
configKey: string;
enabled: boolean;
};
export type GetSessionExtensionsRequest = {
sessionId: string;
};
@@ -626,7 +655,7 @@ export type DictationModelSelectRequest = {
export type ExtRequest = {
id: string;
method: string;
params?: AddExtensionRequest | RemoveExtensionRequest | GetToolsRequest | ReadResourceRequest | UpdateWorkingDirRequest | DeleteSessionRequest | GetExtensionsRequest | GetSessionExtensionsRequest | ListProvidersRequest | RefreshProviderInventoryRequest | ReadConfigRequest | UpsertConfigRequest | RemoveConfigRequest | CheckSecretRequest | UpsertSecretRequest | RemoveSecretRequest | ExportSessionRequest | ImportSessionRequest | UpdateSessionProjectRequest | ArchiveSessionRequest | UnarchiveSessionRequest | CreateSourceRequest | ListSourcesRequest | UpdateSourceRequest | DeleteSourceRequest | ExportSourceRequest | ImportSourcesRequest | DictationTranscribeRequest | DictationConfigRequest | DictationModelsListRequest | DictationModelDownloadRequest | DictationModelDownloadProgressRequest | DictationModelCancelRequest | DictationModelDeleteRequest | DictationModelSelectRequest | {
params?: AddExtensionRequest | RemoveExtensionRequest | GetToolsRequest | ReadResourceRequest | UpdateWorkingDirRequest | DeleteSessionRequest | GetExtensionsRequest | AddConfigExtensionRequest | RemoveConfigExtensionRequest | ToggleConfigExtensionRequest | GetSessionExtensionsRequest | ListProvidersRequest | RefreshProviderInventoryRequest | ReadConfigRequest | UpsertConfigRequest | RemoveConfigRequest | CheckSecretRequest | UpsertSecretRequest | RemoveSecretRequest | ExportSessionRequest | ImportSessionRequest | UpdateSessionProjectRequest | ArchiveSessionRequest | UnarchiveSessionRequest | CreateSourceRequest | ListSourcesRequest | UpdateSourceRequest | DeleteSourceRequest | ExportSourceRequest | ImportSourcesRequest | DictationTranscribeRequest | DictationConfigRequest | DictationModelsListRequest | DictationModelDownloadRequest | DictationModelDownloadProgressRequest | DictationModelCancelRequest | DictationModelDeleteRequest | DictationModelSelectRequest | {
[key: string]: unknown;
} | null;
};
+27
View File
@@ -81,6 +81,30 @@ export const zGetExtensionsResponse = z.object({
warnings: z.array(z.string())
});
/**
* Persist a new extension to the user's global goose config.
*/
export const zAddConfigExtensionRequest = z.object({
name: z.string(),
extensionConfig: z.unknown().optional().default(null),
enabled: z.boolean().optional().default(false)
});
/**
* Remove a persisted extension from the user's global goose config.
*/
export const zRemoveConfigExtensionRequest = z.object({
configKey: z.string()
});
/**
* Toggle the `enabled` flag for a persisted extension in the user's global goose config.
*/
export const zToggleConfigExtensionRequest = z.object({
configKey: z.string(),
enabled: z.boolean()
});
export const zGetSessionExtensionsRequest = z.object({
sessionId: z.string()
});
@@ -594,6 +618,9 @@ export const zExtRequest = z.object({
zUpdateWorkingDirRequest,
zDeleteSessionRequest,
zGetExtensionsRequest,
zAddConfigExtensionRequest,
zRemoveConfigExtensionRequest,
zToggleConfigExtensionRequest,
zGetSessionExtensionsRequest,
zListProvidersRequest,
zRefreshProviderInventoryRequest,