feat: extensions read config (#1637)

This commit is contained in:
Lily Delalande
2025-03-12 18:41:31 -07:00
committed by GitHub
parent 68b3b3f9cc
commit 4537264387
15 changed files with 756 additions and 190 deletions
+21 -11
View File
@@ -1,7 +1,7 @@
// This file is auto-generated by @hey-api/openapi-ts
import type { Options as ClientOptions, TDataShape, Client } from '@hey-api/client-fetch';
import type { ReadAllConfigData, ReadAllConfigResponse, RemoveExtensionData, RemoveExtensionResponse, AddExtensionData, AddExtensionResponse, UpdateExtensionData, UpdateExtensionResponse, ProvidersData, ProvidersResponse2, ReadConfigData, RemoveConfigData, RemoveConfigResponse, UpsertConfigData, UpsertConfigResponse } from './types.gen';
import type { ReadAllConfigData, ReadAllConfigResponse, GetExtensionsData, GetExtensionsResponse, AddExtensionData, AddExtensionResponse, RemoveExtensionData, RemoveExtensionResponse, UpdateExtensionData, UpdateExtensionResponse, ProvidersData, ProvidersResponse2, ReadConfigData, RemoveConfigData, RemoveConfigResponse, UpsertConfigData, UpsertConfigResponse, ToggleExtensionData, ToggleExtensionResponse } from './types.gen';
import { client as _heyApiClient } from './client.gen';
export type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean> = ClientOptions<TData, ThrowOnError> & {
@@ -25,20 +25,16 @@ export const readAllConfig = <ThrowOnError extends boolean = false>(options?: Op
});
};
export const removeExtension = <ThrowOnError extends boolean = false>(options: Options<RemoveExtensionData, ThrowOnError>) => {
return (options.client ?? _heyApiClient).delete<RemoveExtensionResponse, unknown, ThrowOnError>({
url: '/config/extension',
...options,
headers: {
'Content-Type': 'application/json',
...options?.headers
}
export const getExtensions = <ThrowOnError extends boolean = false>(options?: Options<GetExtensionsData, ThrowOnError>) => {
return (options?.client ?? _heyApiClient).get<GetExtensionsResponse, unknown, ThrowOnError>({
url: '/config/extensions',
...options
});
};
export const addExtension = <ThrowOnError extends boolean = false>(options: Options<AddExtensionData, ThrowOnError>) => {
return (options.client ?? _heyApiClient).post<AddExtensionResponse, unknown, ThrowOnError>({
url: '/config/extension',
url: '/config/extensions',
...options,
headers: {
'Content-Type': 'application/json',
@@ -47,9 +43,16 @@ export const addExtension = <ThrowOnError extends boolean = false>(options: Opti
});
};
export const removeExtension = <ThrowOnError extends boolean = false>(options: Options<RemoveExtensionData, ThrowOnError>) => {
return (options.client ?? _heyApiClient).delete<RemoveExtensionResponse, unknown, ThrowOnError>({
url: '/config/extensions/{name}',
...options
});
};
export const updateExtension = <ThrowOnError extends boolean = false>(options: Options<UpdateExtensionData, ThrowOnError>) => {
return (options.client ?? _heyApiClient).put<UpdateExtensionResponse, unknown, ThrowOnError>({
url: '/config/extension',
url: '/config/extensions/{name}',
...options,
headers: {
'Content-Type': 'application/json',
@@ -96,4 +99,11 @@ export const upsertConfig = <ThrowOnError extends boolean = false>(options: Opti
...options?.headers
}
});
};
export const toggleExtension = <ThrowOnError extends boolean = false>(options: Options<ToggleExtensionData, ThrowOnError>) => {
return (options.client ?? _heyApiClient).post<ToggleExtensionResponse, unknown, ThrowOnError>({
url: '/extensions/{name}/toggle',
...options
});
};
+120 -18
View File
@@ -16,9 +16,55 @@ export type ConfigResponse = {
config: {};
};
export type ExtensionQuery = {
config: unknown;
export type Envs = {
[key: string]: string;
};
/**
* Represents the different types of MCP extensions that can be added to the manager
*/
export type ExtensionConfig = {
envs?: Envs;
/**
* The name used to identify this extension
*/
name: string;
timeout?: number | null;
type: 'sse';
uri: string;
} | {
args: Array<string>;
cmd: string;
envs?: Envs;
/**
* The name used to identify this extension
*/
name: string;
timeout?: number | null;
type: 'stdio';
} | {
/**
* The name used to identify this extension
*/
name: string;
timeout?: number | null;
type: 'builtin';
};
export type ExtensionEntry = ExtensionConfig & {
type?: 'ExtensionEntry';
} & {
enabled: boolean;
};
export type ExtensionQuery = {
config: ExtensionConfig;
enabled: boolean;
name: string;
};
export type ExtensionResponse = {
extensions: Array<ExtensionEntry>;
};
export type ProviderDetails = {
@@ -94,38 +140,34 @@ export type ReadAllConfigResponses = {
export type ReadAllConfigResponse = ReadAllConfigResponses[keyof ReadAllConfigResponses];
export type RemoveExtensionData = {
body: ConfigKeyQuery;
export type GetExtensionsData = {
body?: never;
path?: never;
query?: never;
url: '/config/extension';
url: '/config/extensions';
};
export type RemoveExtensionErrors = {
/**
* Extension not found
*/
404: unknown;
export type GetExtensionsErrors = {
/**
* Internal server error
*/
500: unknown;
};
export type RemoveExtensionResponses = {
export type GetExtensionsResponses = {
/**
* Extension removed successfully
* All extensions retrieved successfully
*/
200: string;
200: ExtensionResponse;
};
export type RemoveExtensionResponse = RemoveExtensionResponses[keyof RemoveExtensionResponses];
export type GetExtensionsResponse = GetExtensionsResponses[keyof GetExtensionsResponses];
export type AddExtensionData = {
body: ExtensionQuery;
path?: never;
query?: never;
url: '/config/extension';
url: '/config/extensions';
};
export type AddExtensionErrors = {
@@ -148,11 +190,42 @@ export type AddExtensionResponses = {
export type AddExtensionResponse = AddExtensionResponses[keyof AddExtensionResponses];
export type RemoveExtensionData = {
body?: never;
path: {
name: string;
};
query?: never;
url: '/config/extensions/{name}';
};
export type RemoveExtensionErrors = {
/**
* Extension not found
*/
404: unknown;
/**
* Internal server error
*/
500: unknown;
};
export type RemoveExtensionResponses = {
/**
* Extension removed successfully
*/
200: string;
};
export type RemoveExtensionResponse = RemoveExtensionResponses[keyof RemoveExtensionResponses];
export type UpdateExtensionData = {
body: ExtensionQuery;
path?: never;
path: {
name: string;
};
query?: never;
url: '/config/extension';
url: '/config/extensions/{name}';
};
export type UpdateExtensionErrors = {
@@ -168,7 +241,7 @@ export type UpdateExtensionErrors = {
export type UpdateExtensionResponses = {
/**
* Extension configuration updated successfully
* Extension updated successfully
*/
200: string;
};
@@ -262,6 +335,35 @@ export type UpsertConfigResponses = {
export type UpsertConfigResponse = UpsertConfigResponses[keyof UpsertConfigResponses];
export type ToggleExtensionData = {
body?: never;
path: {
name: string;
};
query?: never;
url: '/extensions/{name}/toggle';
};
export type ToggleExtensionErrors = {
/**
* Extension not found
*/
404: unknown;
/**
* Internal server error
*/
500: unknown;
};
export type ToggleExtensionResponses = {
/**
* Extension toggled successfully
*/
200: string;
};
export type ToggleExtensionResponse = ToggleExtensionResponses[keyof ToggleExtensionResponses];
export type ClientOptions = {
baseUrl: `${string}://${string}` | (string & {});
};