feat(tui): add extension management screen (#8536)

This commit is contained in:
Alex Hancock
2026-04-15 13:39:01 -04:00
committed by GitHub
parent c9507ba672
commit ea236ab664
13 changed files with 753 additions and 141 deletions
+12
View File
@@ -21,6 +21,8 @@ import type {
GetProviderDetailsResponse,
GetProviderModelsRequest,
GetProviderModelsResponse,
GetSessionExtensionsRequest,
GetSessionExtensionsResponse,
GetToolsRequest,
GetToolsResponse,
ImportSessionRequest,
@@ -47,6 +49,7 @@ import {
zGetExtensionsResponse,
zGetProviderDetailsResponse,
zGetProviderModelsResponse,
zGetSessionExtensionsResponse,
zGetToolsResponse,
zImportSessionResponse,
zListProvidersResponse,
@@ -93,6 +96,15 @@ export class GooseExtClient {
return zGetExtensionsResponse.parse(raw) as GetExtensionsResponse;
}
async GooseSessionExtensions(
params: GetSessionExtensionsRequest,
): Promise<GetSessionExtensionsResponse> {
const raw = await this.conn.extMethod("_goose/session/extensions", params);
return zGetSessionExtensionsResponse.parse(
raw,
) as GetSessionExtensionsResponse;
}
async GooseSessionProviderUpdate(
params: UpdateProviderRequest,
): Promise<UpdateProviderResponse> {
+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, 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 type { AddExtensionRequest, ArchiveSessionRequest, CheckSecretRequest, CheckSecretResponse, DeleteSessionRequest, EmptyResponse, ExportSessionRequest, ExportSessionResponse, ExtRequest, ExtResponse, GetExtensionsRequest, GetExtensionsResponse, GetProviderDetailsRequest, GetProviderDetailsResponse, GetProviderModelsRequest, GetProviderModelsResponse, GetSessionExtensionsRequest, GetSessionExtensionsResponse, 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 = [
{
@@ -38,6 +38,11 @@ export const GOOSE_EXT_METHODS = [
requestType: "GetExtensionsRequest",
responseType: "GetExtensionsResponse",
},
{
method: "_goose/session/extensions",
requestType: "GetSessionExtensionsRequest",
responseType: "GetSessionExtensionsResponse",
},
{
method: "_goose/session/provider/update",
requestType: "UpdateProviderRequest",
+10 -2
View File
@@ -96,6 +96,14 @@ export type GetExtensionsResponse = {
warnings: Array<string>;
};
export type GetSessionExtensionsRequest = {
sessionId: string;
};
export type GetSessionExtensionsResponse = {
extensions: Array<unknown>;
};
/**
* Atomically update the provider for a live session.
*/
@@ -299,14 +307,14 @@ export type UnarchiveSessionRequest = {
export type ExtRequest = {
id: string;
method: string;
params?: AddExtensionRequest | RemoveExtensionRequest | GetToolsRequest | ReadResourceRequest | UpdateWorkingDirRequest | DeleteSessionRequest | GetExtensionsRequest | UpdateProviderRequest | ListProvidersRequest | GetProviderDetailsRequest | GetProviderModelsRequest | ReadConfigRequest | UpsertConfigRequest | RemoveConfigRequest | CheckSecretRequest | UpsertSecretRequest | RemoveSecretRequest | ExportSessionRequest | ImportSessionRequest | ArchiveSessionRequest | UnarchiveSessionRequest | {
params?: AddExtensionRequest | RemoveExtensionRequest | GetToolsRequest | ReadResourceRequest | UpdateWorkingDirRequest | DeleteSessionRequest | GetExtensionsRequest | GetSessionExtensionsRequest | 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 | GetProviderModelsResponse | ReadConfigResponse | CheckSecretResponse | ExportSessionResponse | ImportSessionResponse | unknown;
result?: EmptyResponse | GetToolsResponse | ReadResourceResponse | GetExtensionsResponse | GetSessionExtensionsResponse | UpdateProviderResponse | ListProvidersResponse | GetProviderDetailsResponse | GetProviderModelsResponse | ReadConfigResponse | CheckSecretResponse | ExportSessionResponse | ImportSessionResponse | unknown;
} | {
error: {
code: number;
+10
View File
@@ -81,6 +81,14 @@ export const zGetExtensionsResponse = z.object({
warnings: z.array(z.string())
});
export const zGetSessionExtensionsRequest = z.object({
sessionId: z.string()
});
export const zGetSessionExtensionsResponse = z.object({
extensions: z.array(z.unknown())
});
/**
* Atomically update the provider for a live session.
*/
@@ -302,6 +310,7 @@ export const zExtRequest = z.object({
zUpdateWorkingDirRequest,
zDeleteSessionRequest,
zGetExtensionsRequest,
zGetSessionExtensionsRequest,
zUpdateProviderRequest,
zListProvidersRequest,
zGetProviderDetailsRequest,
@@ -333,6 +342,7 @@ export const zExtResponse = z.union([
zGetToolsResponse,
zReadResourceResponse,
zGetExtensionsResponse,
zGetSessionExtensionsResponse,
zUpdateProviderResponse,
zListProvidersResponse,
zGetProviderDetailsResponse,