specmem-hardwicksoftware 3.5.18 → 3.5.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of specmem-hardwicksoftware might be problematic. Click here for more details.
package/package.json
CHANGED
|
@@ -30,6 +30,40 @@ const isGlobalInstall = process.env.npm_config_global === 'true' ||
|
|
|
30
30
|
process.env.npm_lifecycle_event === 'postinstall' &&
|
|
31
31
|
!__dirname.includes(process.cwd());
|
|
32
32
|
|
|
33
|
+
// ============================================================================
|
|
34
|
+
// PLATFORM CHECK - Linux only for now
|
|
35
|
+
// ============================================================================
|
|
36
|
+
const currentPlatform = require('os').platform();
|
|
37
|
+
if (currentPlatform === 'win32') {
|
|
38
|
+
console.log('\n\x1b[31m╔════════════════════════════════════════════════════════════╗\x1b[0m');
|
|
39
|
+
console.log('\x1b[31m║\x1b[0m \x1b[1m\x1b[31m⚠ SPECMEM IS LINUX-ONLY (for now)\x1b[0m \x1b[31m║\x1b[0m');
|
|
40
|
+
console.log('\x1b[31m╠════════════════════════════════════════════════════════════╣\x1b[0m');
|
|
41
|
+
console.log('\x1b[31m║\x1b[0m \x1b[31m║\x1b[0m');
|
|
42
|
+
console.log('\x1b[31m║\x1b[0m Windows support coming soon! \x1b[31m║\x1b[0m');
|
|
43
|
+
console.log('\x1b[31m║\x1b[0m \x1b[31m║\x1b[0m');
|
|
44
|
+
console.log('\x1b[31m║\x1b[0m Options: \x1b[31m║\x1b[0m');
|
|
45
|
+
console.log('\x1b[31m║\x1b[0m • Use WSL2 (Windows Subsystem for Linux) \x1b[31m║\x1b[0m');
|
|
46
|
+
console.log('\x1b[31m║\x1b[0m • Use a Linux VM or Docker container \x1b[31m║\x1b[0m');
|
|
47
|
+
console.log('\x1b[31m║\x1b[0m • Use a Linux VPS \x1b[31m║\x1b[0m');
|
|
48
|
+
console.log('\x1b[31m║\x1b[0m \x1b[31m║\x1b[0m');
|
|
49
|
+
console.log('\x1b[31m╚════════════════════════════════════════════════════════════╝\x1b[0m\n');
|
|
50
|
+
process.exit(0);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (currentPlatform === 'darwin') {
|
|
54
|
+
console.log('\n\x1b[33m╔════════════════════════════════════════════════════════════╗\x1b[0m');
|
|
55
|
+
console.log('\x1b[33m║\x1b[0m \x1b[1m\x1b[33m⚠ MACOS SUPPORT IS EXPERIMENTAL\x1b[0m \x1b[33m║\x1b[0m');
|
|
56
|
+
console.log('\x1b[33m╠════════════════════════════════════════════════════════════╣\x1b[0m');
|
|
57
|
+
console.log('\x1b[33m║\x1b[0m \x1b[33m║\x1b[0m');
|
|
58
|
+
console.log('\x1b[33m║\x1b[0m SpecMem is primarily developed for Linux. \x1b[33m║\x1b[0m');
|
|
59
|
+
console.log('\x1b[33m║\x1b[0m Some features may not work correctly on macOS. \x1b[33m║\x1b[0m');
|
|
60
|
+
console.log('\x1b[33m║\x1b[0m \x1b[33m║\x1b[0m');
|
|
61
|
+
console.log('\x1b[33m║\x1b[0m Proceeding with installation... \x1b[33m║\x1b[0m');
|
|
62
|
+
console.log('\x1b[33m║\x1b[0m \x1b[33m║\x1b[0m');
|
|
63
|
+
console.log('\x1b[33m╚════════════════════════════════════════════════════════════╝\x1b[0m\n');
|
|
64
|
+
// Continue with install but warn
|
|
65
|
+
}
|
|
66
|
+
|
|
33
67
|
if (!isGlobalInstall) {
|
|
34
68
|
console.log('\n\x1b[33m╔════════════════════════════════════════════════════════════╗\x1b[0m');
|
|
35
69
|
console.log('\x1b[33m║\x1b[0m \x1b[1m\x1b[31m⚠ SPECMEM MUST BE INSTALLED GLOBALLY\x1b[0m \x1b[33m║\x1b[0m');
|
|
@@ -164,6 +198,40 @@ function ensureClaudeCode() {
|
|
|
164
198
|
}
|
|
165
199
|
}
|
|
166
200
|
|
|
201
|
+
/**
|
|
202
|
+
* Check if screen is installed, install if missing (needed for team members)
|
|
203
|
+
*/
|
|
204
|
+
function ensureScreen() {
|
|
205
|
+
log.header('Checking screen');
|
|
206
|
+
|
|
207
|
+
if (commandExists('screen')) {
|
|
208
|
+
log.success('screen found');
|
|
209
|
+
return true;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
log.warn('screen not found - installing...');
|
|
213
|
+
|
|
214
|
+
let result;
|
|
215
|
+
if (IS_MAC) {
|
|
216
|
+
result = run('brew install screen', { timeout: 120000 });
|
|
217
|
+
} else if (IS_LINUX) {
|
|
218
|
+
// Try apt first, then yum/dnf
|
|
219
|
+
result = run('apt-get update -qq && apt-get install -y screen', { timeout: 120000 });
|
|
220
|
+
if (!result.success) {
|
|
221
|
+
result = run('yum install -y screen || dnf install -y screen', { timeout: 120000 });
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
if (result?.success) {
|
|
226
|
+
log.success('screen installed successfully');
|
|
227
|
+
return true;
|
|
228
|
+
} else {
|
|
229
|
+
log.warn('Could not auto-install screen');
|
|
230
|
+
log.info('Install manually: apt install screen (Debian/Ubuntu) or brew install screen (Mac)');
|
|
231
|
+
return false;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
|
|
167
235
|
// ============================================================================
|
|
168
236
|
// POSTGRESQL INSTALLATION
|
|
169
237
|
// ============================================================================
|
|
@@ -1442,6 +1510,7 @@ ${c.reset}
|
|
|
1442
1510
|
|
|
1443
1511
|
const results = {
|
|
1444
1512
|
claudeCode: false,
|
|
1513
|
+
screen: false,
|
|
1445
1514
|
postgres: false,
|
|
1446
1515
|
pgvector: false,
|
|
1447
1516
|
database: false,
|
|
@@ -1454,13 +1523,16 @@ ${c.reset}
|
|
|
1454
1523
|
};
|
|
1455
1524
|
|
|
1456
1525
|
try {
|
|
1457
|
-
// Step
|
|
1526
|
+
// Step 0a: Claude Code (REQUIRED - install first)
|
|
1458
1527
|
results.claudeCode = ensureClaudeCode();
|
|
1459
1528
|
if (!results.claudeCode) {
|
|
1460
1529
|
log.warn('Claude Code not installed - SpecMem requires Claude Code to function');
|
|
1461
1530
|
log.info('Install manually: npm install -g @anthropic-ai/claude-code');
|
|
1462
1531
|
}
|
|
1463
1532
|
|
|
1533
|
+
// Step 0b: screen (needed for team members)
|
|
1534
|
+
results.screen = ensureScreen();
|
|
1535
|
+
|
|
1464
1536
|
// Step 1: PostgreSQL
|
|
1465
1537
|
const pgStatus = checkPostgres();
|
|
1466
1538
|
if (pgStatus === true) {
|