consolidate provider ACP methods onto inventory (#8710)

Signed-off-by: Bradley Axen <baxen@squareup.com>
This commit is contained in:
Bradley Axen
2026-04-21 09:19:20 -07:00
committed by GitHub
parent 2067a564ce
commit dfc5b0b803
15 changed files with 275 additions and 573 deletions
-22
View File
@@ -34,10 +34,6 @@ import type {
ExportSourceResponse,
GetExtensionsRequest,
GetExtensionsResponse,
GetProviderDetailsRequest,
GetProviderDetailsResponse,
GetProviderInventoryRequest,
GetProviderInventoryResponse,
GetSessionExtensionsRequest,
GetSessionExtensionsResponse,
GetToolsRequest,
@@ -76,8 +72,6 @@ import {
zExportSessionResponse,
zExportSourceResponse,
zGetExtensionsResponse,
zGetProviderDetailsResponse,
zGetProviderInventoryResponse,
zGetSessionExtensionsResponse,
zGetToolsResponse,
zImportSessionResponse,
@@ -144,22 +138,6 @@ export class GooseExtClient {
return zListProvidersResponse.parse(raw) as ListProvidersResponse;
}
async GooseProvidersDetails(
params: GetProviderDetailsRequest,
): Promise<GetProviderDetailsResponse> {
const raw = await this.conn.extMethod("_goose/providers/details", params);
return zGetProviderDetailsResponse.parse(raw) as GetProviderDetailsResponse;
}
async GooseProvidersInventory(
params: GetProviderInventoryRequest,
): Promise<GetProviderInventoryResponse> {
const raw = await this.conn.extMethod("_goose/providers/inventory", params);
return zGetProviderInventoryResponse.parse(
raw,
) as GetProviderInventoryResponse;
}
async GooseProvidersInventoryRefresh(
params: RefreshProviderInventoryRequest,
): Promise<RefreshProviderInventoryResponse> {
+1 -11
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, GetProviderDetailsRequest, GetProviderDetailsResponse, GetProviderInventoryRequest, GetProviderInventoryResponse, GetSessionExtensionsRequest, GetSessionExtensionsResponse, GetToolsRequest, GetToolsResponse, ImportSessionRequest, ImportSessionResponse, ImportSourcesRequest, ImportSourcesResponse, ListProvidersRequest, ListProvidersResponse, ListSourcesRequest, ListSourcesResponse, ModelEntry, ProviderConfigKey, ProviderDetailEntry, ProviderInventoryEntryDto, ProviderInventoryModelDto, ProviderListEntry, ReadConfigRequest, ReadConfigResponse, ReadResourceRequest, ReadResourceResponse, RefreshProviderInventoryRequest, RefreshProviderInventoryResponse, RefreshProviderInventorySkipDto, RefreshProviderInventorySkipReasonDto, RemoveConfigRequest, RemoveExtensionRequest, RemoveSecretRequest, SourceEntry, SourceType, UnarchiveSessionRequest, UpdateSourceRequest, UpdateSourceResponse, UpdateWorkingDirRequest, UpsertConfigRequest, UpsertSecretRequest } from './types.gen.js';
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, UpdateSourceRequest, UpdateSourceResponse, UpdateWorkingDirRequest, UpsertConfigRequest, UpsertSecretRequest } from './types.gen.js';
export const GOOSE_EXT_METHODS = [
{
@@ -48,16 +48,6 @@ export const GOOSE_EXT_METHODS = [
requestType: "ListProvidersRequest",
responseType: "ListProvidersResponse",
},
{
method: "_goose/providers/details",
requestType: "GetProviderDetailsRequest",
responseType: "GetProviderDetailsResponse",
},
{
method: "_goose/providers/inventory",
requestType: "GetProviderInventoryRequest",
responseType: "GetProviderInventoryResponse",
},
{
method: "_goose/providers/inventory/refresh",
requestType: "RefreshProviderInventoryRequest",
+35 -65
View File
@@ -105,69 +105,9 @@ export type GetSessionExtensionsResponse = {
};
/**
* List providers available through goose, including the config-default sentinel.
* List providers with setup metadata and the current model inventory snapshot.
*/
export type ListProvidersRequest = {
[key: string]: unknown;
};
/**
* Provider list response.
*/
export type ListProvidersResponse = {
providers: Array<ProviderListEntry>;
};
export type ProviderListEntry = {
id: string;
label: string;
};
/**
* List providers with full metadata (config keys, setup steps, etc.).
*/
export type GetProviderDetailsRequest = {
[key: string]: unknown;
};
/**
* Provider details response.
*/
export type GetProviderDetailsResponse = {
providers: Array<ProviderDetailEntry>;
};
export type ProviderDetailEntry = {
name: string;
displayName: string;
description: string;
defaultModel: string;
isConfigured: boolean;
providerType: string;
configKeys: Array<ProviderConfigKey>;
setupSteps?: Array<string>;
knownModels?: Array<ModelEntry>;
};
export type ProviderConfigKey = {
name: string;
required: boolean;
secret: boolean;
default?: string | null;
oauthFlow?: boolean;
deviceCodeFlow?: boolean;
primary?: boolean;
};
export type ModelEntry = {
name: string;
contextLimit: number;
};
/**
* Read per-provider inventory. Always returns immediately from stored state.
*/
export type GetProviderInventoryRequest = {
/**
* Only return entries for these providers. Empty means all.
*/
@@ -175,9 +115,9 @@ export type GetProviderInventoryRequest = {
};
/**
* Provider inventory response.
* Provider list response.
*/
export type GetProviderInventoryResponse = {
export type ListProvidersResponse = {
entries: Array<ProviderInventoryEntryDto>;
};
@@ -193,10 +133,30 @@ export type ProviderInventoryEntryDto = {
* Human-readable provider name.
*/
providerName: string;
/**
* Description of the provider's capabilities.
*/
description: string;
/**
* The default/recommended model for this provider.
*/
defaultModel: string;
/**
* Whether Goose has enough configuration to use this provider.
*/
configured: boolean;
/**
* Provider classification such as `Preferred`, `Builtin`, `Declarative`, or `Custom`.
*/
providerType: string;
/**
* Required configuration keys and setup metadata.
*/
configKeys: Array<ProviderConfigKey>;
/**
* Step-by-step setup instructions, when present.
*/
setupSteps: Array<string>;
/**
* Whether this provider supports background inventory refresh.
*/
@@ -231,6 +191,16 @@ export type ProviderInventoryEntryDto = {
modelSelectionHint?: string | null;
};
export type ProviderConfigKey = {
name: string;
required: boolean;
secret: boolean;
default?: string | null;
oauthFlow?: boolean;
deviceCodeFlow?: boolean;
primary?: boolean;
};
/**
* A single model in provider inventory.
*/
@@ -648,14 +618,14 @@ export type DictationModelSelectRequest = {
export type ExtRequest = {
id: string;
method: string;
params?: AddExtensionRequest | RemoveExtensionRequest | GetToolsRequest | ReadResourceRequest | UpdateWorkingDirRequest | DeleteSessionRequest | GetExtensionsRequest | GetSessionExtensionsRequest | ListProvidersRequest | GetProviderDetailsRequest | GetProviderInventoryRequest | RefreshProviderInventoryRequest | ReadConfigRequest | UpsertConfigRequest | RemoveConfigRequest | CheckSecretRequest | UpsertSecretRequest | RemoveSecretRequest | ExportSessionRequest | ImportSessionRequest | ArchiveSessionRequest | UnarchiveSessionRequest | CreateSourceRequest | ListSourcesRequest | UpdateSourceRequest | DeleteSourceRequest | ExportSourceRequest | ImportSourcesRequest | DictationTranscribeRequest | DictationConfigRequest | DictationModelsListRequest | DictationModelDownloadRequest | DictationModelDownloadProgressRequest | DictationModelCancelRequest | DictationModelDeleteRequest | DictationModelSelectRequest | {
params?: AddExtensionRequest | RemoveExtensionRequest | GetToolsRequest | ReadResourceRequest | UpdateWorkingDirRequest | DeleteSessionRequest | GetExtensionsRequest | GetSessionExtensionsRequest | ListProvidersRequest | RefreshProviderInventoryRequest | ReadConfigRequest | UpsertConfigRequest | RemoveConfigRequest | CheckSecretRequest | UpsertSecretRequest | RemoveSecretRequest | ExportSessionRequest | ImportSessionRequest | 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 | GetProviderDetailsResponse | GetProviderInventoryResponse | RefreshProviderInventoryResponse | ReadConfigResponse | CheckSecretResponse | ExportSessionResponse | ImportSessionResponse | CreateSourceResponse | ListSourcesResponse | UpdateSourceResponse | ExportSourceResponse | ImportSourcesResponse | DictationTranscribeResponse | DictationConfigResponse | DictationModelsListResponse | DictationModelDownloadProgressResponse | unknown;
result?: EmptyResponse | GetToolsResponse | ReadResourceResponse | GetExtensionsResponse | GetSessionExtensionsResponse | ListProvidersResponse | RefreshProviderInventoryResponse | ReadConfigResponse | CheckSecretResponse | ExportSessionResponse | ImportSessionResponse | CreateSourceResponse | ListSourcesResponse | UpdateSourceResponse | ExportSourceResponse | ImportSourcesResponse | DictationTranscribeResponse | DictationConfigResponse | DictationModelsListResponse | DictationModelDownloadProgressResponse | unknown;
} | {
error: {
code: number;
+10 -55
View File
@@ -90,27 +90,12 @@ export const zGetSessionExtensionsResponse = z.object({
});
/**
* List providers available through goose, including the config-default sentinel.
* List providers with setup metadata and the current model inventory snapshot.
*/
export const zListProvidersRequest = z.record(z.unknown());
export const zProviderListEntry = z.object({
id: z.string(),
label: z.string()
export const zListProvidersRequest = z.object({
providerIds: z.array(z.string()).optional().default([])
});
/**
* Provider list response.
*/
export const zListProvidersResponse = z.object({
providers: z.array(zProviderListEntry)
});
/**
* List providers with full metadata (config keys, setup steps, etc.).
*/
export const zGetProviderDetailsRequest = z.record(z.unknown());
export const zProviderConfigKey = z.object({
name: z.string(),
required: z.boolean(),
@@ -124,37 +109,6 @@ export const zProviderConfigKey = z.object({
primary: z.boolean().optional().default(false)
});
export const zModelEntry = z.object({
name: z.string(),
contextLimit: z.number().int().gte(0)
});
export const zProviderDetailEntry = z.object({
name: z.string(),
displayName: z.string(),
description: z.string(),
defaultModel: z.string(),
isConfigured: z.boolean(),
providerType: z.string(),
configKeys: z.array(zProviderConfigKey),
setupSteps: z.array(z.string()).optional().default([]),
knownModels: z.array(zModelEntry).optional().default([])
});
/**
* Provider details response.
*/
export const zGetProviderDetailsResponse = z.object({
providers: z.array(zProviderDetailEntry)
});
/**
* Read per-provider inventory. Always returns immediately from stored state.
*/
export const zGetProviderInventoryRequest = z.object({
providerIds: z.array(z.string()).optional().default([])
});
/**
* A single model in provider inventory.
*/
@@ -182,7 +136,12 @@ export const zProviderInventoryModelDto = z.object({
export const zProviderInventoryEntryDto = z.object({
providerId: z.string(),
providerName: z.string(),
description: z.string(),
defaultModel: z.string(),
configured: z.boolean(),
providerType: z.string(),
configKeys: z.array(zProviderConfigKey),
setupSteps: z.array(z.string()),
supportsRefresh: z.boolean(),
refreshing: z.boolean(),
models: z.array(zProviderInventoryModelDto),
@@ -206,9 +165,9 @@ export const zProviderInventoryEntryDto = z.object({
});
/**
* Provider inventory response.
* Provider list response.
*/
export const zGetProviderInventoryResponse = z.object({
export const zListProvidersResponse = z.object({
entries: z.array(zProviderInventoryEntryDto)
});
@@ -626,8 +585,6 @@ export const zExtRequest = z.object({
zGetExtensionsRequest,
zGetSessionExtensionsRequest,
zListProvidersRequest,
zGetProviderDetailsRequest,
zGetProviderInventoryRequest,
zRefreshProviderInventoryRequest,
zReadConfigRequest,
zUpsertConfigRequest,
@@ -672,8 +629,6 @@ export const zExtResponse = z.union([
zGetExtensionsResponse,
zGetSessionExtensionsResponse,
zListProvidersResponse,
zGetProviderDetailsResponse,
zGetProviderInventoryResponse,
zRefreshProviderInventoryResponse,
zReadConfigResponse,
zCheckSecretResponse,