Always sync bundled extensions (#7057)
This commit is contained in:
@@ -207,28 +207,24 @@ export const ConfigProvider: React.FC<ConfigProviderProps> = ({ children }) => {
|
||||
const extensionsResponse = await apiGetExtensions();
|
||||
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.)
|
||||
// Always sync bundled extensions from bundled-extensions.json
|
||||
// This ensures:
|
||||
// 1. Fresh installs get the default extensions (developer, computercontroller, etc.)
|
||||
// 2. Existing users get NEW bundled extensions added in subsequent releases
|
||||
// The syncBundledExtensions function skips extensions that already exist and are marked as bundled
|
||||
// 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 || [];
|
||||
}
|
||||
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 || []);
|
||||
|
||||
Reference in New Issue
Block a user