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();
|
const extensionsResponse = await apiGetExtensions();
|
||||||
let extensions = extensionsResponse.data?.extensions || [];
|
let extensions = extensionsResponse.data?.extensions || [];
|
||||||
|
|
||||||
// If no bundled MCP extensions exist, seed config from bundled-extensions.json
|
// Always sync bundled extensions from bundled-extensions.json
|
||||||
// This ensures fresh installs get the default extensions (developer, computercontroller, etc.)
|
// 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
|
// Platform extensions (code_execution, todo, etc.) are handled by the backend
|
||||||
const hasBundledExtensions = extensions.some(
|
const addExtensionForSync = async (
|
||||||
(ext) => ext.type === 'builtin' && 'bundled' in ext && ext.bundled
|
name: string,
|
||||||
);
|
config: ExtensionConfig,
|
||||||
|
enabled: boolean
|
||||||
if (!hasBundledExtensions) {
|
) => {
|
||||||
console.log('No bundled extensions found, syncing from bundled-extensions.json');
|
const query: ExtensionQuery = { name, config, enabled };
|
||||||
const addExtensionForSync = async (
|
await apiAddExtension({ body: query });
|
||||||
name: string,
|
};
|
||||||
config: ExtensionConfig,
|
await syncBundledExtensions(extensions, addExtensionForSync);
|
||||||
enabled: boolean
|
// Reload extensions after sync
|
||||||
) => {
|
const refreshedResponse = await apiGetExtensions();
|
||||||
const query: ExtensionQuery = { name, config, enabled };
|
extensions = refreshedResponse.data?.extensions || [];
|
||||||
await apiAddExtension({ body: query });
|
|
||||||
};
|
|
||||||
await syncBundledExtensions(extensions, addExtensionForSync);
|
|
||||||
// Reload extensions after sync
|
|
||||||
const refreshedResponse = await apiGetExtensions();
|
|
||||||
extensions = refreshedResponse.data?.extensions || [];
|
|
||||||
}
|
|
||||||
|
|
||||||
setExtensionsList(extensions);
|
setExtensionsList(extensions);
|
||||||
setExtensionWarnings(extensionsResponse.data?.warnings || []);
|
setExtensionWarnings(extensionsResponse.data?.warnings || []);
|
||||||
|
|||||||
Reference in New Issue
Block a user