fix: trying this approach to undo regressions for extension loading (#6568)

This commit is contained in:
Michael Neale
2026-01-19 11:55:09 +11:00
committed by GitHub
parent 21d63f4984
commit f3c2f8e803
2 changed files with 42 additions and 16 deletions
+27 -1
View File
@@ -10,6 +10,7 @@ import {
providers,
getProviderModels as apiGetProviderModels,
} from '../api';
import { syncBundledExtensions } from './settings/extensions';
import type {
ConfigResponse,
UpsertConfigQuery,
@@ -218,7 +219,32 @@ export const ConfigProvider: React.FC<ConfigProviderProps> = ({ children }) => {
// Load extensions
try {
const extensionsResponse = await apiGetExtensions();
setExtensionsList(extensionsResponse.data?.extensions || []);
let extensions = extensionsResponse.data?.extensions || [];
// If no bundled MCP extensions exist, seed config from bundled-extensions.json
// This ensures fresh installs get the default extensions (developer, computercontroller, etc.)
// Platform extensions (code_execution, todo, etc.) are handled by the backend
const hasBundledExtensions = extensions.some(
(ext) => ext.type === 'builtin' && 'bundled' in ext && ext.bundled
);
if (!hasBundledExtensions) {
console.log('No bundled extensions found, syncing from bundled-extensions.json');
const addExtensionForSync = async (
name: string,
config: ExtensionConfig,
enabled: boolean
) => {
const query: ExtensionQuery = { name, config, enabled };
await apiAddExtension({ body: query });
};
await syncBundledExtensions(extensions, addExtensionForSync);
// Reload extensions after sync
const refreshedResponse = await apiGetExtensions();
extensions = refreshedResponse.data?.extensions || [];
}
setExtensionsList(extensions);
setExtensionWarnings(extensionsResponse.data?.warnings || []);
} catch (error) {
console.error('Failed to load extensions:', error);