add provider-first onboarding (#9039)

Signed-off-by: tulsi <tulsi@block.xyz>
This commit is contained in:
tulsi
2026-05-06 07:08:31 -07:00
committed by GitHub
parent f9d0c6416d
commit 6fc44bf0ed
51 changed files with 3589 additions and 37 deletions
+51
View File
@@ -23,6 +23,7 @@ import type {
CustomProviderUpdateResponse,
DefaultsReadRequest,
DefaultsReadResponse,
DefaultsSaveRequest,
DeleteSessionRequest,
DeleteSourceRequest,
DictationConfigRequest,
@@ -59,6 +60,10 @@ import type {
ListProvidersResponse,
ListSourcesRequest,
ListSourcesResponse,
OnboardingImportApplyRequest,
OnboardingImportApplyResponse,
OnboardingImportScanRequest,
OnboardingImportScanResponse,
PreferencesReadRequest,
PreferencesReadResponse,
PreferencesRemoveRequest,
@@ -67,6 +72,7 @@ import type {
ProviderCatalogListResponse,
ProviderCatalogTemplateRequest,
ProviderCatalogTemplateResponse,
ProviderConfigAuthenticateRequest,
ProviderConfigChangeResponse,
ProviderConfigDeleteRequest,
ProviderConfigReadRequest,
@@ -111,6 +117,8 @@ import {
zImportSourcesResponse,
zListProvidersResponse,
zListSourcesResponse,
zOnboardingImportApplyResponse,
zOnboardingImportScanResponse,
zPreferencesReadResponse,
zProviderCatalogListResponse,
zProviderCatalogTemplateResponse,
@@ -342,6 +350,18 @@ export class GooseExtClient {
) as ProviderConfigChangeResponse;
}
async GooseProvidersConfigAuthenticate(
params: ProviderConfigAuthenticateRequest,
): Promise<ProviderConfigChangeResponse> {
const raw = await this.conn.extMethod(
"_goose/providers/config/authenticate",
params,
);
return zProviderConfigChangeResponse.parse(
raw,
) as ProviderConfigChangeResponse;
}
async GoosePreferencesRead(
params: PreferencesReadRequest,
): Promise<PreferencesReadResponse> {
@@ -366,6 +386,37 @@ export class GooseExtClient {
return zDefaultsReadResponse.parse(raw) as DefaultsReadResponse;
}
async GooseDefaultsSave(
params: DefaultsSaveRequest,
): Promise<DefaultsReadResponse> {
const raw = await this.conn.extMethod("_goose/defaults/save", params);
return zDefaultsReadResponse.parse(raw) as DefaultsReadResponse;
}
async GooseOnboardingImportScan(
params: OnboardingImportScanRequest,
): Promise<OnboardingImportScanResponse> {
const raw = await this.conn.extMethod(
"_goose/onboarding/import/scan",
params,
);
return zOnboardingImportScanResponse.parse(
raw,
) as OnboardingImportScanResponse;
}
async GooseOnboardingImportApply(
params: OnboardingImportApplyRequest,
): Promise<OnboardingImportApplyResponse> {
const raw = await this.conn.extMethod(
"_goose/onboarding/import/apply",
params,
);
return zOnboardingImportApplyResponse.parse(
raw,
) as OnboardingImportApplyResponse;
}
async GooseSessionExport(
params: ExportSessionRequest,
): Promise<ExportSessionResponse> {
+21 -1
View File
@@ -1,6 +1,6 @@
// This file is auto-generated by @hey-api/openapi-ts
export type { AddConfigExtensionRequest, AddExtensionRequest, ArchiveSessionRequest, CreateSourceRequest, CreateSourceResponse, CustomProviderConfigDto, CustomProviderCreateRequest, CustomProviderCreateResponse, CustomProviderDeleteRequest, CustomProviderDeleteResponse, CustomProviderReadRequest, CustomProviderReadResponse, CustomProviderUpdateRequest, CustomProviderUpdateResponse, DefaultsReadRequest, DefaultsReadResponse, DeleteSessionRequest, DeleteSourceRequest, DictationConfigRequest, DictationConfigResponse, DictationDownloadProgress, DictationLocalModelStatus, DictationModelCancelRequest, DictationModelDeleteRequest, DictationModelDownloadProgressRequest, DictationModelDownloadProgressResponse, DictationModelDownloadRequest, DictationModelOption, DictationModelSelectRequest, DictationModelsListRequest, DictationModelsListResponse, DictationProviderStatusEntry, DictationSecretDeleteRequest, DictationSecretSaveRequest, DictationTranscribeRequest, DictationTranscribeResponse, EmptyResponse, ExportSessionRequest, ExportSessionResponse, ExportSourceRequest, ExportSourceResponse, ExtRequest, ExtResponse, GetExtensionsRequest, GetExtensionsResponse, GetSessionExtensionsRequest, GetSessionExtensionsResponse, GetToolsRequest, GetToolsResponse, GooseToolCallRequest, GooseToolCallResponse, ImportSessionRequest, ImportSessionResponse, ImportSourcesRequest, ImportSourcesResponse, ListProvidersRequest, ListProvidersResponse, ListSourcesRequest, ListSourcesResponse, PreferenceKey, PreferencesReadRequest, PreferencesReadResponse, PreferencesRemoveRequest, PreferencesSaveRequest, PreferenceValue, ProviderCatalogListRequest, ProviderCatalogListResponse, ProviderCatalogTemplateRequest, ProviderCatalogTemplateResponse, ProviderConfigChangeResponse, ProviderConfigDeleteRequest, ProviderConfigFieldUpdate, ProviderConfigFieldValueDto, ProviderConfigKey, ProviderConfigReadRequest, ProviderConfigReadResponse, ProviderConfigSaveRequest, ProviderConfigStatusDto, ProviderConfigStatusRequest, ProviderConfigStatusResponse, ProviderInventoryEntryDto, ProviderInventoryModelDto, ProviderSetupCatalogEntryDto, ProviderSetupCatalogListRequest, ProviderSetupCatalogListResponse, ProviderSetupCategoryDto, ProviderSetupFieldDto, ProviderSetupGroupDto, ProviderSetupMethodDto, ProviderTemplateCapabilitiesDto, ProviderTemplateCatalogEntryDto, ProviderTemplateDto, ProviderTemplateModelDto, ReadResourceRequest, ReadResourceResponse, RefreshProviderInventoryRequest, RefreshProviderInventoryResponse, RefreshProviderInventorySkipDto, RefreshProviderInventorySkipReasonDto, RemoveConfigExtensionRequest, RemoveExtensionRequest, RenameSessionRequest, SourceEntry, SourceType, ToggleConfigExtensionRequest, UnarchiveSessionRequest, UpdateSessionProjectRequest, UpdateSourceRequest, UpdateSourceResponse, UpdateWorkingDirRequest } from './types.gen.js';
export type { AddConfigExtensionRequest, AddExtensionRequest, ArchiveSessionRequest, CreateSourceRequest, CreateSourceResponse, CustomProviderConfigDto, CustomProviderCreateRequest, CustomProviderCreateResponse, CustomProviderDeleteRequest, CustomProviderDeleteResponse, CustomProviderReadRequest, CustomProviderReadResponse, CustomProviderUpdateRequest, CustomProviderUpdateResponse, DefaultsReadRequest, DefaultsReadResponse, DefaultsSaveRequest, DeleteSessionRequest, DeleteSourceRequest, DictationConfigRequest, DictationConfigResponse, DictationDownloadProgress, DictationLocalModelStatus, DictationModelCancelRequest, DictationModelDeleteRequest, DictationModelDownloadProgressRequest, DictationModelDownloadProgressResponse, DictationModelDownloadRequest, DictationModelOption, DictationModelSelectRequest, DictationModelsListRequest, DictationModelsListResponse, DictationProviderStatusEntry, DictationSecretDeleteRequest, DictationSecretSaveRequest, DictationTranscribeRequest, DictationTranscribeResponse, EmptyResponse, ExportSessionRequest, ExportSessionResponse, ExportSourceRequest, ExportSourceResponse, ExtRequest, ExtResponse, GetExtensionsRequest, GetExtensionsResponse, GetSessionExtensionsRequest, GetSessionExtensionsResponse, GetToolsRequest, GetToolsResponse, GooseToolCallRequest, GooseToolCallResponse, ImportSessionRequest, ImportSessionResponse, ImportSourcesRequest, ImportSourcesResponse, ListProvidersRequest, ListProvidersResponse, ListSourcesRequest, ListSourcesResponse, OnboardingImportApplyRequest, OnboardingImportApplyResponse, OnboardingImportCandidate, OnboardingImportCounts, OnboardingImportScanRequest, OnboardingImportScanResponse, OnboardingImportSourceKind, PreferenceKey, PreferencesReadRequest, PreferencesReadResponse, PreferencesRemoveRequest, PreferencesSaveRequest, PreferenceValue, ProviderCatalogListRequest, ProviderCatalogListResponse, ProviderCatalogTemplateRequest, ProviderCatalogTemplateResponse, ProviderConfigAuthenticateRequest, ProviderConfigChangeResponse, ProviderConfigDeleteRequest, ProviderConfigFieldUpdate, ProviderConfigFieldValueDto, ProviderConfigKey, ProviderConfigReadRequest, ProviderConfigReadResponse, ProviderConfigSaveRequest, ProviderConfigStatusDto, ProviderConfigStatusRequest, ProviderConfigStatusResponse, ProviderInventoryEntryDto, ProviderInventoryModelDto, ProviderSetupCatalogEntryDto, ProviderSetupCatalogListRequest, ProviderSetupCatalogListResponse, ProviderSetupCategoryDto, ProviderSetupFieldDto, ProviderSetupGroupDto, ProviderSetupMethodDto, ProviderTemplateCapabilitiesDto, ProviderTemplateCatalogEntryDto, ProviderTemplateDto, ProviderTemplateModelDto, ReadResourceRequest, ReadResourceResponse, RefreshProviderInventoryRequest, RefreshProviderInventoryResponse, RefreshProviderInventorySkipDto, RefreshProviderInventorySkipReasonDto, RemoveConfigExtensionRequest, RemoveExtensionRequest, RenameSessionRequest, SourceEntry, SourceType, ToggleConfigExtensionRequest, UnarchiveSessionRequest, UpdateSessionProjectRequest, UpdateSourceRequest, UpdateSourceResponse, UpdateWorkingDirRequest } from './types.gen.js';
export const GOOSE_EXT_METHODS = [
{
@@ -128,6 +128,11 @@ export const GOOSE_EXT_METHODS = [
requestType: "ProviderConfigDeleteRequest",
responseType: "ProviderConfigChangeResponse",
},
{
method: "_goose/providers/config/authenticate",
requestType: "ProviderConfigAuthenticateRequest",
responseType: "ProviderConfigChangeResponse",
},
{
method: "_goose/preferences/read",
requestType: "PreferencesReadRequest",
@@ -148,6 +153,21 @@ export const GOOSE_EXT_METHODS = [
requestType: "DefaultsReadRequest",
responseType: "DefaultsReadResponse",
},
{
method: "_goose/defaults/save",
requestType: "DefaultsSaveRequest",
responseType: "DefaultsReadResponse",
},
{
method: "_goose/onboarding/import/scan",
requestType: "OnboardingImportScanRequest",
responseType: "OnboardingImportScanResponse",
},
{
method: "_goose/onboarding/import/apply",
requestType: "OnboardingImportApplyRequest",
responseType: "OnboardingImportApplyResponse",
},
{
method: "_goose/session/export",
requestType: "ExportSessionRequest",
+69 -2
View File
@@ -567,6 +567,13 @@ export type ProviderConfigDeleteRequest = {
providerId: string;
};
/**
* Run a provider-owned native authentication flow and start an inventory refresh when supported.
*/
export type ProviderConfigAuthenticateRequest = {
providerId: string;
};
/**
* Read allowlisted user preferences. Empty `keys` means all supported preferences.
*/
@@ -611,6 +618,66 @@ export type DefaultsReadResponse = {
modelId?: string | null;
};
/**
* Save Goose default provider and model configuration.
*/
export type DefaultsSaveRequest = {
providerId: string;
modelId?: string | null;
};
/**
* Scan for existing Goose and compatible app data that onboarding can import.
*/
export type OnboardingImportScanRequest = {
/**
* Empty means all supported import sources.
*/
sources?: Array<OnboardingImportSourceKind>;
};
/**
* Sources that onboarding knows how to discover and import.
*/
export type OnboardingImportSourceKind = 'goose_config' | 'claude_desktop';
export type OnboardingImportScanResponse = {
candidates: Array<OnboardingImportCandidate>;
};
export type OnboardingImportCandidate = {
id: string;
sourceKind: OnboardingImportSourceKind;
displayName: string;
path: string;
counts: OnboardingImportCounts;
warnings?: Array<string>;
};
export type OnboardingImportCounts = {
providers: number;
extensions: number;
sessions: number;
skills: number;
projects: number;
preferences: number;
};
/**
* Import selected onboarding candidates.
*/
export type OnboardingImportApplyRequest = {
candidateIds?: Array<string>;
enableImportedExtensions?: boolean;
};
export type OnboardingImportApplyResponse = {
imported: OnboardingImportCounts;
skipped: OnboardingImportCounts;
warnings?: Array<string>;
providerDefaults?: DefaultsReadResponse | null;
};
/**
* Export a session as a JSON string.
*/
@@ -944,14 +1011,14 @@ export type DictationModelSelectRequest = {
export type ExtRequest = {
id: string;
method: string;
params?: AddExtensionRequest | RemoveExtensionRequest | GetToolsRequest | GooseToolCallRequest | ReadResourceRequest | UpdateWorkingDirRequest | DeleteSessionRequest | GetExtensionsRequest | AddConfigExtensionRequest | RemoveConfigExtensionRequest | ToggleConfigExtensionRequest | GetSessionExtensionsRequest | ListProvidersRequest | ProviderCatalogListRequest | ProviderSetupCatalogListRequest | ProviderCatalogTemplateRequest | CustomProviderCreateRequest | CustomProviderReadRequest | CustomProviderUpdateRequest | CustomProviderDeleteRequest | RefreshProviderInventoryRequest | ProviderConfigReadRequest | ProviderConfigStatusRequest | ProviderConfigSaveRequest | ProviderConfigDeleteRequest | PreferencesReadRequest | PreferencesSaveRequest | PreferencesRemoveRequest | DefaultsReadRequest | ExportSessionRequest | ImportSessionRequest | UpdateSessionProjectRequest | RenameSessionRequest | ArchiveSessionRequest | UnarchiveSessionRequest | CreateSourceRequest | ListSourcesRequest | UpdateSourceRequest | DeleteSourceRequest | ExportSourceRequest | ImportSourcesRequest | DictationTranscribeRequest | DictationConfigRequest | DictationSecretSaveRequest | DictationSecretDeleteRequest | DictationModelsListRequest | DictationModelDownloadRequest | DictationModelDownloadProgressRequest | DictationModelCancelRequest | DictationModelDeleteRequest | DictationModelSelectRequest | {
params?: AddExtensionRequest | RemoveExtensionRequest | GetToolsRequest | GooseToolCallRequest | ReadResourceRequest | UpdateWorkingDirRequest | DeleteSessionRequest | GetExtensionsRequest | AddConfigExtensionRequest | RemoveConfigExtensionRequest | ToggleConfigExtensionRequest | GetSessionExtensionsRequest | ListProvidersRequest | ProviderCatalogListRequest | ProviderSetupCatalogListRequest | ProviderCatalogTemplateRequest | CustomProviderCreateRequest | CustomProviderReadRequest | CustomProviderUpdateRequest | CustomProviderDeleteRequest | RefreshProviderInventoryRequest | ProviderConfigReadRequest | ProviderConfigStatusRequest | ProviderConfigSaveRequest | ProviderConfigDeleteRequest | ProviderConfigAuthenticateRequest | PreferencesReadRequest | PreferencesSaveRequest | PreferencesRemoveRequest | DefaultsReadRequest | DefaultsSaveRequest | OnboardingImportScanRequest | OnboardingImportApplyRequest | ExportSessionRequest | ImportSessionRequest | UpdateSessionProjectRequest | RenameSessionRequest | ArchiveSessionRequest | UnarchiveSessionRequest | CreateSourceRequest | ListSourcesRequest | UpdateSourceRequest | DeleteSourceRequest | ExportSourceRequest | ImportSourcesRequest | DictationTranscribeRequest | DictationConfigRequest | DictationSecretSaveRequest | DictationSecretDeleteRequest | DictationModelsListRequest | DictationModelDownloadRequest | DictationModelDownloadProgressRequest | DictationModelCancelRequest | DictationModelDeleteRequest | DictationModelSelectRequest | {
[key: string]: unknown;
} | null;
};
export type ExtResponse = {
id: string;
result?: EmptyResponse | GetToolsResponse | GooseToolCallResponse | ReadResourceResponse | GetExtensionsResponse | GetSessionExtensionsResponse | ListProvidersResponse | ProviderCatalogListResponse | ProviderSetupCatalogListResponse | ProviderCatalogTemplateResponse | CustomProviderCreateResponse | CustomProviderReadResponse | CustomProviderUpdateResponse | CustomProviderDeleteResponse | RefreshProviderInventoryResponse | ProviderConfigReadResponse | ProviderConfigStatusResponse | ProviderConfigChangeResponse | PreferencesReadResponse | DefaultsReadResponse | ExportSessionResponse | ImportSessionResponse | CreateSourceResponse | ListSourcesResponse | UpdateSourceResponse | ExportSourceResponse | ImportSourcesResponse | DictationTranscribeResponse | DictationConfigResponse | DictationModelsListResponse | DictationModelDownloadProgressResponse | unknown;
result?: EmptyResponse | GetToolsResponse | GooseToolCallResponse | ReadResourceResponse | GetExtensionsResponse | GetSessionExtensionsResponse | ListProvidersResponse | ProviderCatalogListResponse | ProviderSetupCatalogListResponse | ProviderCatalogTemplateResponse | CustomProviderCreateResponse | CustomProviderReadResponse | CustomProviderUpdateResponse | CustomProviderDeleteResponse | RefreshProviderInventoryResponse | ProviderConfigReadResponse | ProviderConfigStatusResponse | ProviderConfigChangeResponse | PreferencesReadResponse | DefaultsReadResponse | OnboardingImportScanResponse | OnboardingImportApplyResponse | ExportSessionResponse | ImportSessionResponse | CreateSourceResponse | ListSourcesResponse | UpdateSourceResponse | ExportSourceResponse | ImportSourcesResponse | DictationTranscribeResponse | DictationConfigResponse | DictationModelsListResponse | DictationModelDownloadProgressResponse | unknown;
} | {
error: {
code: number;
+76
View File
@@ -554,6 +554,13 @@ export const zProviderConfigDeleteRequest = z.object({
providerId: z.string()
});
/**
* Run a provider-owned native authentication flow and start an inventory refresh when supported.
*/
export const zProviderConfigAuthenticateRequest = z.object({
providerId: z.string()
});
export const zPreferenceKey = z.enum([
'autoCompactThreshold',
'voiceAutoSubmitPhrases',
@@ -607,6 +614,69 @@ export const zDefaultsReadResponse = z.object({
]).optional()
});
/**
* Save Goose default provider and model configuration.
*/
export const zDefaultsSaveRequest = z.object({
providerId: z.string(),
modelId: z.union([
z.string(),
z.null()
]).optional()
});
/**
* Sources that onboarding knows how to discover and import.
*/
export const zOnboardingImportSourceKind = z.enum(['goose_config', 'claude_desktop']);
/**
* Scan for existing Goose and compatible app data that onboarding can import.
*/
export const zOnboardingImportScanRequest = z.object({
sources: z.array(zOnboardingImportSourceKind).optional().default([])
});
export const zOnboardingImportCounts = z.object({
providers: z.number().int().gte(0),
extensions: z.number().int().gte(0),
sessions: z.number().int().gte(0),
skills: z.number().int().gte(0),
projects: z.number().int().gte(0),
preferences: z.number().int().gte(0)
});
export const zOnboardingImportCandidate = z.object({
id: z.string(),
sourceKind: zOnboardingImportSourceKind,
displayName: z.string(),
path: z.string(),
counts: zOnboardingImportCounts,
warnings: z.array(z.string()).optional().default([])
});
export const zOnboardingImportScanResponse = z.object({
candidates: z.array(zOnboardingImportCandidate)
});
/**
* Import selected onboarding candidates.
*/
export const zOnboardingImportApplyRequest = z.object({
candidateIds: z.array(z.string()).optional().default([]),
enableImportedExtensions: z.boolean().optional().default(false)
});
export const zOnboardingImportApplyResponse = z.object({
imported: zOnboardingImportCounts,
skipped: zOnboardingImportCounts,
warnings: z.array(z.string()).optional().default([]),
providerDefaults: z.union([
zDefaultsReadResponse,
z.null()
]).optional()
});
/**
* Export a session as a JSON string.
*/
@@ -982,10 +1052,14 @@ export const zExtRequest = z.object({
zProviderConfigStatusRequest,
zProviderConfigSaveRequest,
zProviderConfigDeleteRequest,
zProviderConfigAuthenticateRequest,
zPreferencesReadRequest,
zPreferencesSaveRequest,
zPreferencesRemoveRequest,
zDefaultsReadRequest,
zDefaultsSaveRequest,
zOnboardingImportScanRequest,
zOnboardingImportApplyRequest,
zExportSessionRequest,
zImportSessionRequest,
zUpdateSessionProjectRequest,
@@ -1041,6 +1115,8 @@ export const zExtResponse = z.union([
zProviderConfigChangeResponse,
zPreferencesReadResponse,
zDefaultsReadResponse,
zOnboardingImportScanResponse,
zOnboardingImportApplyResponse,
zExportSessionResponse,
zImportSessionResponse,
zCreateSourceResponse,