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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "specmem-hardwicksoftware",
3
- "version": "3.5.18",
3
+ "version": "3.5.20",
4
4
  "type": "module",
5
5
  "description": "SpecMem - Speculative Memory for Claude Code. Auto-configures hooks, docker, embeddings. https://justcalljon.pro",
6
6
  "main": "dist/index.js",
@@ -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 0: Claude Code (REQUIRED - install first)
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) {