diff --git a/apps/memos-local-openclaw/install.ps1 b/apps/memos-local-openclaw/install.ps1 index 449831756..f4a9513c3 100644 --- a/apps/memos-local-openclaw/install.ps1 +++ b/apps/memos-local-openclaw/install.ps1 @@ -184,10 +184,13 @@ if (!config.plugins.allow.includes(pluginId)) { config.plugins.allow.push(pluginId); } -if (!config.plugins.slots || typeof config.plugins.slots !== "object") { - config.plugins.slots = {}; +// Clean up stale contextEngine slot from previous versions +if (config.plugins.slots && config.plugins.slots.contextEngine) { + delete config.plugins.slots.contextEngine; + if (Object.keys(config.plugins.slots).length === 0) { + delete config.plugins.slots; + } } -config.plugins.slots.contextEngine = "memos-local-openclaw-plugin"; fs.writeFileSync(configPath, `${JSON.stringify(config, null, 2)}\n`, "utf8"); '@ @@ -298,6 +301,20 @@ finally { Pop-Location } +$nodeModulesDir = Join-Path $ExtensionDir "node_modules" +if (-not (Test-Path $nodeModulesDir) -or @(Get-ChildItem -Path $nodeModulesDir -ErrorAction SilentlyContinue).Count -eq 0) { + Write-Warn "node_modules was cleaned by postinstall (version upgrade detected), re-installing..." + Push-Location $ExtensionDir + try { + $env:MEMOS_SKIP_SETUP = "1" + & npm install --omit=dev --no-fund --no-audit --loglevel=error 2>&1 + } + finally { + Remove-Item Env:\MEMOS_SKIP_SETUP -ErrorAction SilentlyContinue + Pop-Location + } +} + if (-not (Test-Path $ExtensionDir)) { Write-Err "Plugin directory not found after install: $ExtensionDir" exit 1 diff --git a/apps/memos-local-openclaw/install.sh b/apps/memos-local-openclaw/install.sh index b8229d17a..c69904d27 100644 --- a/apps/memos-local-openclaw/install.sh +++ b/apps/memos-local-openclaw/install.sh @@ -246,10 +246,13 @@ if (!config.plugins.allow.includes(pluginId)) { config.plugins.allow.push(pluginId); } -if (!config.plugins.slots || typeof config.plugins.slots !== 'object') { - config.plugins.slots = {}; +// Clean up stale contextEngine slot from previous versions +if (config.plugins.slots && config.plugins.slots.contextEngine) { + delete config.plugins.slots.contextEngine; + if (Object.keys(config.plugins.slots).length === 0) { + delete config.plugins.slots; + } } -config.plugins.slots.contextEngine = 'memos-local-openclaw-plugin'; fs.writeFileSync(configPath, `${JSON.stringify(config, null, 2)}\n`, 'utf8'); NODE @@ -305,6 +308,14 @@ info "Install dependencies, 安装依赖..." MEMOS_SKIP_SETUP=1 npm install --omit=dev --no-fund --no-audit --loglevel=error 2>&1 ) +if [[ ! -d "${EXTENSION_DIR}/node_modules" ]] || [[ -z "$(ls -A "${EXTENSION_DIR}/node_modules" 2>/dev/null)" ]]; then + warn "node_modules was cleaned by postinstall (version upgrade detected), re-installing..." + ( + cd "${EXTENSION_DIR}" + MEMOS_SKIP_SETUP=1 npm install --omit=dev --no-fund --no-audit --loglevel=error 2>&1 + ) +fi + if [[ ! -d "$EXTENSION_DIR" ]]; then error "Plugin directory not found after install, 安装后未找到插件目录: ${EXTENSION_DIR}" exit 1