fix: improve worker startup on fresh install

This fixes the issue where the worker service wouldn't start automatically
after installing the plugin, leaving users with confusing error messages.

Changes:
- Update worker-utils.ts to use local PM2 from node_modules instead of
  requiring it in PATH
- Improve error messages to suggest npx pm2 commands
- Add auto-start attempt in smart-install.js after fresh installation
- Fall back gracefully if worker can't start (will auto-start on first use)

Fixes issue where users with PM2 not in their PATH couldn't start the worker.
This commit is contained in:
Dmitry Guyvoronsky
2025-11-18 12:20:41 -08:00
parent 97d8bd3e62
commit 6c9a8d1dca
2 changed files with 30 additions and 6 deletions
+10 -3
View File
@@ -55,9 +55,13 @@ async function startWorker(): Promise<boolean> {
throw new Error(`Ecosystem config not found at ${ecosystemPath}`);
}
// Try to use local PM2 from node_modules first, fall back to global PM2
const localPm2 = path.join(pluginRoot, 'node_modules', '.bin', 'pm2');
const pm2Command = existsSync(localPm2) ? localPm2 : 'pm2';
// Start using PM2 with the ecosystem config
// CRITICAL: Must set cwd to pluginRoot so PM2 starts from marketplace directory
execSync(`pm2 start "${ecosystemPath}"`, {
execSync(`"${pm2Command}" start "${ecosystemPath}"`, {
cwd: pluginRoot,
stdio: 'pipe',
encoding: 'utf-8'
@@ -93,10 +97,13 @@ export async function ensureWorkerRunning(): Promise<void> {
if (!started) {
const port = getWorkerPort();
const pluginRoot = getPackageRoot();
throw new Error(
`Worker service failed to start on port ${port}.\n\n` +
`Try manually running: pm2 start ecosystem.config.cjs\n` +
`Or restart: pm2 restart claude-mem-worker`
`To start manually, run:\n` +
` cd ${pluginRoot}\n` +
` npx pm2 start ecosystem.config.cjs\n\n` +
`If already running, try: npx pm2 restart claude-mem-worker`
);
}
}