@remcp/remcp 0.2.235 → 0.2.236

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remcp/remcp",
3
- "version": "0.2.235",
3
+ "version": "0.2.236",
4
4
  "description": "ReMCP device client: pair a computer with ReMCP and run the outbound-only agent that hosts the local MCP runtime.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -4,6 +4,14 @@ import path from 'node:path';
4
4
  const CLIENT_PACKAGE = '@remcp/remcp';
5
5
  const MAX_HISTORY = 32;
6
6
 
7
+ function isExplicitCliAlias(cliPath) {
8
+ // A symlink in an ancestor directory (e.g. macOS /var -> /private/var)
9
+ // changes realpath but does not make the final CLI entry itself an alias.
10
+ // lstat checks the final path component without following that entry.
11
+ try { return fs.lstatSync(cliPath).isSymbolicLink(); }
12
+ catch { return false; } // A concurrently removed entry cannot be trusted.
13
+ }
14
+
7
15
  // Inventory only paths previously recorded by this owner and the two current CLI
8
16
  // entrypoints. Never crawl npm/node directories or infer running processes.
9
17
  function installedPackageAt(cliPath) {
@@ -52,7 +60,7 @@ export function auditKnownInstallations(config, { currentCliPath, serviceCliPath
52
60
  }
53
61
  copy.sources.add(candidate.source);
54
62
  copy.cliPaths.add(candidate.path);
55
- if (candidate.path !== installed.resolved && !aliases.some(a => a.path === candidate.path)) {
63
+ if (isExplicitCliAlias(candidate.path) && !aliases.some(a => a.path === candidate.path)) {
56
64
  aliases.push({ path:candidate.path, resolvesTo:installed.resolved });
57
65
  }
58
66
  }