feature: provider & model config (#8515)

This commit is contained in:
Alex Hancock
2026-04-14 10:55:21 -04:00
committed by GitHub
parent 482f1962c1
commit 3fe750c01d
12 changed files with 770 additions and 14 deletions
+10
View File
@@ -19,6 +19,8 @@ import type {
GetExtensionsResponse,
GetProviderDetailsRequest,
GetProviderDetailsResponse,
GetProviderModelsRequest,
GetProviderModelsResponse,
GetToolsRequest,
GetToolsResponse,
ImportSessionRequest,
@@ -44,6 +46,7 @@ import {
zExportSessionResponse,
zGetExtensionsResponse,
zGetProviderDetailsResponse,
zGetProviderModelsResponse,
zGetToolsResponse,
zImportSessionResponse,
zListProvidersResponse,
@@ -114,6 +117,13 @@ export class GooseExtClient {
return zGetProviderDetailsResponse.parse(raw) as GetProviderDetailsResponse;
}
async GooseProvidersModels(
params: GetProviderModelsRequest,
): Promise<GetProviderModelsResponse> {
const raw = await this.conn.extMethod("_goose/providers/models", params);
return zGetProviderModelsResponse.parse(raw) as GetProviderModelsResponse;
}
async GooseConfigRead(
params: ReadConfigRequest,
): Promise<ReadConfigResponse> {
+6 -1
View File
@@ -1,6 +1,6 @@
// This file is auto-generated by @hey-api/openapi-ts
export type { AddExtensionRequest, ArchiveSessionRequest, CheckSecretRequest, CheckSecretResponse, DeleteSessionRequest, EmptyResponse, ExportSessionRequest, ExportSessionResponse, ExtRequest, ExtResponse, GetExtensionsRequest, GetExtensionsResponse, GetProviderDetailsRequest, GetProviderDetailsResponse, GetToolsRequest, GetToolsResponse, ImportSessionRequest, ImportSessionResponse, ListProvidersRequest, ListProvidersResponse, ProviderConfigKey, ProviderDetailEntry, ProviderListEntry, ReadConfigRequest, ReadConfigResponse, ReadResourceRequest, ReadResourceResponse, RemoveConfigRequest, RemoveExtensionRequest, RemoveSecretRequest, UnarchiveSessionRequest, UpdateProviderRequest, UpdateProviderResponse, UpdateWorkingDirRequest, UpsertConfigRequest, UpsertSecretRequest } from './types.gen.js';
export type { AddExtensionRequest, ArchiveSessionRequest, CheckSecretRequest, CheckSecretResponse, DeleteSessionRequest, EmptyResponse, ExportSessionRequest, ExportSessionResponse, ExtRequest, ExtResponse, GetExtensionsRequest, GetExtensionsResponse, GetProviderDetailsRequest, GetProviderDetailsResponse, GetProviderModelsRequest, GetProviderModelsResponse, GetToolsRequest, GetToolsResponse, ImportSessionRequest, ImportSessionResponse, ListProvidersRequest, ListProvidersResponse, ModelEntry, ProviderConfigKey, ProviderDetailEntry, ProviderListEntry, ReadConfigRequest, ReadConfigResponse, ReadResourceRequest, ReadResourceResponse, RemoveConfigRequest, RemoveExtensionRequest, RemoveSecretRequest, UnarchiveSessionRequest, UpdateProviderRequest, UpdateProviderResponse, UpdateWorkingDirRequest, UpsertConfigRequest, UpsertSecretRequest } from './types.gen.js';
export const GOOSE_EXT_METHODS = [
{
@@ -53,6 +53,11 @@ export const GOOSE_EXT_METHODS = [
requestType: "GetProviderDetailsRequest",
responseType: "GetProviderDetailsResponse",
},
{
method: "_goose/providers/models",
requestType: "GetProviderModelsRequest",
responseType: "GetProviderModelsResponse",
},
{
method: "_goose/config/read",
requestType: "ReadConfigRequest",
+22 -2
View File
@@ -161,6 +161,7 @@ export type ProviderDetailEntry = {
providerType: string;
configKeys: Array<ProviderConfigKey>;
setupSteps?: Array<string>;
knownModels?: Array<ModelEntry>;
};
export type ProviderConfigKey = {
@@ -173,6 +174,25 @@ export type ProviderConfigKey = {
primary?: boolean;
};
export type ModelEntry = {
name: string;
contextLimit: number;
};
/**
* Fetch the full list of models available for a specific provider.
*/
export type GetProviderModelsRequest = {
providerName: string;
};
/**
* Provider models response.
*/
export type GetProviderModelsResponse = {
models: Array<string>;
};
/**
* Read a single non-secret config value.
*/
@@ -279,14 +299,14 @@ export type UnarchiveSessionRequest = {
export type ExtRequest = {
id: string;
method: string;
params?: AddExtensionRequest | RemoveExtensionRequest | GetToolsRequest | ReadResourceRequest | UpdateWorkingDirRequest | DeleteSessionRequest | GetExtensionsRequest | UpdateProviderRequest | ListProvidersRequest | GetProviderDetailsRequest | ReadConfigRequest | UpsertConfigRequest | RemoveConfigRequest | CheckSecretRequest | UpsertSecretRequest | RemoveSecretRequest | ExportSessionRequest | ImportSessionRequest | ArchiveSessionRequest | UnarchiveSessionRequest | {
params?: AddExtensionRequest | RemoveExtensionRequest | GetToolsRequest | ReadResourceRequest | UpdateWorkingDirRequest | DeleteSessionRequest | GetExtensionsRequest | UpdateProviderRequest | ListProvidersRequest | GetProviderDetailsRequest | GetProviderModelsRequest | ReadConfigRequest | UpsertConfigRequest | RemoveConfigRequest | CheckSecretRequest | UpsertSecretRequest | RemoveSecretRequest | ExportSessionRequest | ImportSessionRequest | ArchiveSessionRequest | UnarchiveSessionRequest | {
[key: string]: unknown;
} | null;
};
export type ExtResponse = {
id: string;
result?: EmptyResponse | GetToolsResponse | ReadResourceResponse | GetExtensionsResponse | UpdateProviderResponse | ListProvidersResponse | GetProviderDetailsResponse | ReadConfigResponse | CheckSecretResponse | ExportSessionResponse | ImportSessionResponse | unknown;
result?: EmptyResponse | GetToolsResponse | ReadResourceResponse | GetExtensionsResponse | UpdateProviderResponse | ListProvidersResponse | GetProviderDetailsResponse | GetProviderModelsResponse | ReadConfigResponse | CheckSecretResponse | ExportSessionResponse | ImportSessionResponse | unknown;
} | {
error: {
code: number;
+23 -1
View File
@@ -143,6 +143,11 @@ 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(),
@@ -151,7 +156,8 @@ export const zProviderDetailEntry = z.object({
isConfigured: z.boolean(),
providerType: z.string(),
configKeys: z.array(zProviderConfigKey),
setupSteps: z.array(z.string()).optional().default([])
setupSteps: z.array(z.string()).optional().default([]),
knownModels: z.array(zModelEntry).optional().default([])
});
/**
@@ -161,6 +167,20 @@ export const zGetProviderDetailsResponse = z.object({
providers: z.array(zProviderDetailEntry)
});
/**
* Fetch the full list of models available for a specific provider.
*/
export const zGetProviderModelsRequest = z.object({
providerName: z.string()
});
/**
* Provider models response.
*/
export const zGetProviderModelsResponse = z.object({
models: z.array(z.string())
});
/**
* Read a single non-secret config value.
*/
@@ -285,6 +305,7 @@ export const zExtRequest = z.object({
zUpdateProviderRequest,
zListProvidersRequest,
zGetProviderDetailsRequest,
zGetProviderModelsRequest,
zReadConfigRequest,
zUpsertConfigRequest,
zRemoveConfigRequest,
@@ -315,6 +336,7 @@ export const zExtResponse = z.union([
zUpdateProviderResponse,
zListProvidersResponse,
zGetProviderDetailsResponse,
zGetProviderModelsResponse,
zReadConfigResponse,
zCheckSecretResponse,
zExportSessionResponse,