1f2e5f1a9c
This PR addresses issue #193 affecting Windows installations of claude-mem. ## Bug 1: Missing ecosystem.config.cjs in packaged plugin **Problem**: The ecosystem.config.cjs file was not included in the plugin package, causing PM2 to fail when trying to start the worker from cache. **Fix**: Added `plugin/ecosystem.config.cjs` with correct path for packaged structure (`./scripts/worker-service.cjs` instead of `./plugin/scripts/`). ## Bug 2: Incorrect MCP Server Path (src/services/worker-service.ts) **Problem**: Path `__dirname, '..', '..', 'plugin', 'scripts', 'mcp-server.cjs'` only worked in dev structure, failed in packaged plugin. **Error produced**: ``` Error: Cannot find module 'C:\Users\...\claude-mem\plugin\scripts\mcp-server.cjs' [ERROR] [SYSTEM] Background initialization failed MCP error -32000: Connection closed ``` **Fix**: Changed to `path.join(__dirname, 'mcp-server.cjs')` since mcp-server.cjs is in the same directory as worker-service.cjs after bundling. ## Bug 3: Missing smart-install.js in plugin package **Problem**: smart-install.js was referenced in hooks.json but not included in the plugin/ directory for cache deployment. **Fix**: Added `plugin/scripts/smart-install.js` that uses `createRequire()` to resolve modules from MARKETPLACE_ROOT. ## Bug 4: hooks.json incorrect path **Problem**: Referenced `/../scripts/smart-install.js` but CLAUDE_PLUGIN_ROOT points to the plugin/ directory. **Fix**: Changed to `/scripts/smart-install.js`. ## Bug 5: Windows Worker Startup - Visible Console Windows **Problem**: PM2 ignores windowsHide option on Windows, opening visible console windows when starting the worker service. **Fix**: Use PowerShell `Start-Process -WindowStyle Hidden` on Windows while keeping PM2 for Unix systems (src/shared/worker-utils.ts). ## Additional Improvements - Increased worker startup timeouts for Windows (500ms health check, 1000ms wait between retries, 15 retries = 15s total vs previous 5s) - Added `windowsHide: true` to root ecosystem.config.cjs for PM2 ## Note on Assertion Failure The Windows libuv assertion failure `!(handle->flags & UV_HANDLE_CLOSING)` at `src\win\async.c:76` is a known upstream issue in Claude Code (Issue #7579), triggered by fetch() calls on Windows. This is NOT caused by worker spawning and cannot be fixed in claude-mem. Tested on Windows 11 with Node.js v24. Fixes #193 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
41 lines
1.1 KiB
JavaScript
41 lines
1.1 KiB
JavaScript
/**
|
|
* PM2 Ecosystem Configuration for claude-mem Worker Service
|
|
*
|
|
* Usage:
|
|
* pm2 start ecosystem.config.cjs
|
|
* pm2 stop claude-mem-worker
|
|
* pm2 restart claude-mem-worker
|
|
* pm2 logs claude-mem-worker
|
|
* pm2 status
|
|
*/
|
|
|
|
module.exports = {
|
|
apps: [
|
|
{
|
|
name: 'claude-mem-worker',
|
|
script: './plugin/scripts/worker-service.cjs',
|
|
// Windows: prevent visible console windows
|
|
windowsHide: true,
|
|
// INTENTIONAL: Watch mode enables auto-restart on plugin updates
|
|
//
|
|
// Why this is enabled:
|
|
// - When you run `npm run sync-marketplace` or rebuild the plugin,
|
|
// files in ~/.claude/plugins/marketplaces/thedotmack/ change
|
|
// - Watch mode detects these changes and auto-restarts the worker
|
|
// - Users get the latest code without manually running `pm2 restart`
|
|
//
|
|
// This is a feature, not a bug - it ensures users always run the
|
|
// latest version after plugin updates.
|
|
watch: true,
|
|
ignore_watch: [
|
|
'node_modules',
|
|
'logs',
|
|
'*.log',
|
|
'*.db',
|
|
'*.db-*',
|
|
'.git'
|
|
]
|
|
}
|
|
]
|
|
};
|