refactor: update goose2 credential management behind provider-scoped ACP/core API (#8887)

Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
Co-authored-by: morgmart <98432065+morgmart@users.noreply.github.com>
This commit is contained in:
Kalvin C
2026-04-29 09:05:32 -07:00
committed by GitHub
parent 503ad20494
commit 899762a422
39 changed files with 3079 additions and 1118 deletions
+56
View File
@@ -47,6 +47,13 @@ import type {
ListProvidersResponse,
ListSourcesRequest,
ListSourcesResponse,
ProviderConfigChangeResponse,
ProviderConfigDeleteRequest,
ProviderConfigReadRequest,
ProviderConfigReadResponse,
ProviderConfigSaveRequest,
ProviderConfigStatusRequest,
ProviderConfigStatusResponse,
ReadConfigRequest,
ReadConfigResponse,
ReadResourceRequest,
@@ -83,6 +90,9 @@ import {
zImportSourcesResponse,
zListProvidersResponse,
zListSourcesResponse,
zProviderConfigChangeResponse,
zProviderConfigReadResponse,
zProviderConfigStatusResponse,
zReadConfigResponse,
zReadResourceResponse,
zRefreshProviderInventoryResponse,
@@ -173,6 +183,52 @@ export class GooseExtClient {
) as RefreshProviderInventoryResponse;
}
async GooseProvidersConfigRead(
params: ProviderConfigReadRequest,
): Promise<ProviderConfigReadResponse> {
const raw = await this.conn.extMethod(
"_goose/providers/config/read",
params,
);
return zProviderConfigReadResponse.parse(raw) as ProviderConfigReadResponse;
}
async GooseProvidersConfigStatus(
params: ProviderConfigStatusRequest,
): Promise<ProviderConfigStatusResponse> {
const raw = await this.conn.extMethod(
"_goose/providers/config/status",
params,
);
return zProviderConfigStatusResponse.parse(
raw,
) as ProviderConfigStatusResponse;
}
async GooseProvidersConfigSave(
params: ProviderConfigSaveRequest,
): Promise<ProviderConfigChangeResponse> {
const raw = await this.conn.extMethod(
"_goose/providers/config/save",
params,
);
return zProviderConfigChangeResponse.parse(
raw,
) as ProviderConfigChangeResponse;
}
async GooseProvidersConfigDelete(
params: ProviderConfigDeleteRequest,
): Promise<ProviderConfigChangeResponse> {
const raw = await this.conn.extMethod(
"_goose/providers/config/delete",
params,
);
return zProviderConfigChangeResponse.parse(
raw,
) as ProviderConfigChangeResponse;
}
async GooseConfigRead(
params: ReadConfigRequest,
): Promise<ReadConfigResponse> {
+21 -1
View File
@@ -1,6 +1,6 @@
// This file is auto-generated by @hey-api/openapi-ts
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, RenameSessionRequest, SourceEntry, SourceType, ToggleConfigExtensionRequest, 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, ProviderConfigChangeResponse, ProviderConfigDeleteRequest, ProviderConfigFieldUpdate, ProviderConfigFieldValueDto, ProviderConfigKey, ProviderConfigReadRequest, ProviderConfigReadResponse, ProviderConfigSaveRequest, ProviderConfigStatusDto, ProviderConfigStatusRequest, ProviderConfigStatusResponse, ProviderInventoryEntryDto, ProviderInventoryModelDto, ReadConfigRequest, ReadConfigResponse, ReadResourceRequest, ReadResourceResponse, RefreshProviderInventoryRequest, RefreshProviderInventoryResponse, RefreshProviderInventorySkipDto, RefreshProviderInventorySkipReasonDto, RemoveConfigExtensionRequest, RemoveConfigRequest, RemoveExtensionRequest, RemoveSecretRequest, RenameSessionRequest, SourceEntry, SourceType, ToggleConfigExtensionRequest, UnarchiveSessionRequest, UpdateSessionProjectRequest, UpdateSourceRequest, UpdateSourceResponse, UpdateWorkingDirRequest, UpsertConfigRequest, UpsertSecretRequest } from './types.gen.js';
export const GOOSE_EXT_METHODS = [
{
@@ -68,6 +68,26 @@ export const GOOSE_EXT_METHODS = [
requestType: "RefreshProviderInventoryRequest",
responseType: "RefreshProviderInventoryResponse",
},
{
method: "_goose/providers/config/read",
requestType: "ProviderConfigReadRequest",
responseType: "ProviderConfigReadResponse",
},
{
method: "_goose/providers/config/status",
requestType: "ProviderConfigStatusRequest",
responseType: "ProviderConfigStatusResponse",
},
{
method: "_goose/providers/config/save",
requestType: "ProviderConfigSaveRequest",
responseType: "ProviderConfigChangeResponse",
},
{
method: "_goose/providers/config/delete",
requestType: "ProviderConfigDeleteRequest",
responseType: "ProviderConfigChangeResponse",
},
{
method: "_goose/config/read",
requestType: "ReadConfigRequest",
+62 -2
View File
@@ -291,6 +291,66 @@ export type RefreshProviderInventorySkipDto = {
export type RefreshProviderInventorySkipReasonDto = 'unknown_provider' | 'not_configured' | 'does_not_support_refresh' | 'already_refreshing';
/**
* Read saved configuration field values for one provider.
*/
export type ProviderConfigReadRequest = {
providerId: string;
};
export type ProviderConfigReadResponse = {
fields: Array<ProviderConfigFieldValueDto>;
};
export type ProviderConfigFieldValueDto = {
key: string;
value?: string | null;
isSet: boolean;
isSecret: boolean;
required: boolean;
};
/**
* Return provider configured statuses. Empty provider_ids means all providers.
*/
export type ProviderConfigStatusRequest = {
providerIds?: Array<string>;
};
export type ProviderConfigStatusResponse = {
statuses: Array<ProviderConfigStatusDto>;
};
export type ProviderConfigStatusDto = {
providerId: string;
isConfigured: boolean;
};
/**
* Save provider configuration fields and start an inventory refresh when supported.
*/
export type ProviderConfigSaveRequest = {
providerId: string;
fields: Array<ProviderConfigFieldUpdate>;
};
export type ProviderConfigFieldUpdate = {
key: string;
value: string;
};
export type ProviderConfigChangeResponse = {
status: ProviderConfigStatusDto;
refresh: RefreshProviderInventoryResponse;
};
/**
* Delete provider configuration fields and start an inventory refresh when supported.
*/
export type ProviderConfigDeleteRequest = {
providerId: string;
};
/**
* Read a single non-secret config value.
*/
@@ -667,14 +727,14 @@ export type DictationModelSelectRequest = {
export type ExtRequest = {
id: string;
method: string;
params?: AddExtensionRequest | RemoveExtensionRequest | GetToolsRequest | ReadResourceRequest | UpdateWorkingDirRequest | DeleteSessionRequest | GetExtensionsRequest | AddConfigExtensionRequest | RemoveConfigExtensionRequest | ToggleConfigExtensionRequest | GetSessionExtensionsRequest | ListProvidersRequest | RefreshProviderInventoryRequest | ReadConfigRequest | UpsertConfigRequest | RemoveConfigRequest | CheckSecretRequest | UpsertSecretRequest | RemoveSecretRequest | ExportSessionRequest | ImportSessionRequest | UpdateSessionProjectRequest | RenameSessionRequest | 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 | ProviderConfigReadRequest | ProviderConfigStatusRequest | ProviderConfigSaveRequest | ProviderConfigDeleteRequest | ReadConfigRequest | UpsertConfigRequest | RemoveConfigRequest | CheckSecretRequest | UpsertSecretRequest | RemoveSecretRequest | ExportSessionRequest | ImportSessionRequest | UpdateSessionProjectRequest | RenameSessionRequest | ArchiveSessionRequest | UnarchiveSessionRequest | CreateSourceRequest | ListSourcesRequest | UpdateSourceRequest | DeleteSourceRequest | ExportSourceRequest | ImportSourcesRequest | DictationTranscribeRequest | DictationConfigRequest | DictationModelsListRequest | DictationModelDownloadRequest | DictationModelDownloadProgressRequest | DictationModelCancelRequest | DictationModelDeleteRequest | DictationModelSelectRequest | {
[key: string]: unknown;
} | null;
};
export type ExtResponse = {
id: string;
result?: EmptyResponse | GetToolsResponse | ReadResourceResponse | GetExtensionsResponse | GetSessionExtensionsResponse | ListProvidersResponse | RefreshProviderInventoryResponse | ReadConfigResponse | CheckSecretResponse | ExportSessionResponse | ImportSessionResponse | CreateSourceResponse | ListSourcesResponse | UpdateSourceResponse | ExportSourceResponse | ImportSourcesResponse | DictationTranscribeResponse | DictationConfigResponse | DictationModelsListResponse | DictationModelDownloadProgressResponse | unknown;
result?: EmptyResponse | GetToolsResponse | ReadResourceResponse | GetExtensionsResponse | GetSessionExtensionsResponse | ListProvidersResponse | RefreshProviderInventoryResponse | ProviderConfigReadResponse | ProviderConfigStatusResponse | ProviderConfigChangeResponse | ReadConfigResponse | CheckSecretResponse | ExportSessionResponse | ImportSessionResponse | CreateSourceResponse | ListSourcesResponse | UpdateSourceResponse | ExportSourceResponse | ImportSourcesResponse | DictationTranscribeResponse | DictationConfigResponse | DictationModelsListResponse | DictationModelDownloadProgressResponse | unknown;
} | {
error: {
code: number;
+70
View File
@@ -222,6 +222,69 @@ export const zRefreshProviderInventoryResponse = z.object({
skipped: z.array(zRefreshProviderInventorySkipDto).optional().default([])
});
/**
* Read saved configuration field values for one provider.
*/
export const zProviderConfigReadRequest = z.object({
providerId: z.string()
});
export const zProviderConfigFieldValueDto = z.object({
key: z.string(),
value: z.union([
z.string(),
z.null()
]).optional().default(null),
isSet: z.boolean(),
isSecret: z.boolean(),
required: z.boolean()
});
export const zProviderConfigReadResponse = z.object({
fields: z.array(zProviderConfigFieldValueDto)
});
/**
* Return provider configured statuses. Empty provider_ids means all providers.
*/
export const zProviderConfigStatusRequest = z.object({
providerIds: z.array(z.string()).optional().default([])
});
export const zProviderConfigStatusDto = z.object({
providerId: z.string(),
isConfigured: z.boolean()
});
export const zProviderConfigStatusResponse = z.object({
statuses: z.array(zProviderConfigStatusDto)
});
export const zProviderConfigFieldUpdate = z.object({
key: z.string(),
value: z.string()
});
/**
* Save provider configuration fields and start an inventory refresh when supported.
*/
export const zProviderConfigSaveRequest = z.object({
providerId: z.string(),
fields: z.array(zProviderConfigFieldUpdate)
});
export const zProviderConfigChangeResponse = z.object({
status: zProviderConfigStatusDto,
refresh: zRefreshProviderInventoryResponse
});
/**
* Delete provider configuration fields and start an inventory refresh when supported.
*/
export const zProviderConfigDeleteRequest = z.object({
providerId: z.string()
});
/**
* Read a single non-secret config value.
*/
@@ -628,6 +691,10 @@ export const zExtRequest = z.object({
zGetSessionExtensionsRequest,
zListProvidersRequest,
zRefreshProviderInventoryRequest,
zProviderConfigReadRequest,
zProviderConfigStatusRequest,
zProviderConfigSaveRequest,
zProviderConfigDeleteRequest,
zReadConfigRequest,
zUpsertConfigRequest,
zRemoveConfigRequest,
@@ -674,6 +741,9 @@ export const zExtResponse = z.union([
zGetSessionExtensionsResponse,
zListProvidersResponse,
zRefreshProviderInventoryResponse,
zProviderConfigReadResponse,
zProviderConfigStatusResponse,
zProviderConfigChangeResponse,
zReadConfigResponse,
zCheckSecretResponse,
zExportSessionResponse,