mindsim 0.1.7 → 0.1.8

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.
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AA8CA;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAAO,MAqBpC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAU,iBAAe,KAAG,OAAO,CAAC,IAAI,CAiCnE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,QAAa,OAAO,CAAC,IAAI,CAgC9C,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAsGA;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAAO,MAqBpC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAU,iBAAe,KAAG,OAAO,CAAC,IAAI,CAiCnE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,QAAa,OAAO,CAAC,IAAI,CAiC9C,CAAC"}
package/dist/version.js CHANGED
@@ -13,30 +13,76 @@ const semver_1 = __importDefault(require("semver"));
13
13
  const logger_1 = require("./logger");
14
14
  const execAsync = (0, node_util_1.promisify)(node_child_process_1.exec);
15
15
  /**
16
- * Detects the package manager used in the current project
16
+ * Detects the installation context (global vs local, and which package manager)
17
17
  */
18
- const detectPackageManager = () => {
19
- const cwd = process.cwd();
20
- // Check for lockfiles in order of preference
21
- if (node_fs_1.default.existsSync(node_path_1.default.join(cwd, "pnpm-lock.yaml"))) {
22
- return "pnpm";
18
+ const detectInstallContext = () => {
19
+ const home = process.env.HOME || "";
20
+ const appData = process.env.APPDATA || "";
21
+ // Global path patterns mapped to their package managers
22
+ const globalPatterns = [
23
+ // pnpm global paths
24
+ { pattern: node_path_1.default.join(home, "Library/pnpm"), pm: "pnpm" },
25
+ { pattern: node_path_1.default.join(home, ".local/share/pnpm"), pm: "pnpm" },
26
+ { pattern: node_path_1.default.join(appData, "pnpm"), pm: "pnpm" },
27
+ // yarn global paths
28
+ { pattern: node_path_1.default.join(home, ".yarn"), pm: "yarn" },
29
+ { pattern: node_path_1.default.join(home, ".config/yarn"), pm: "yarn" },
30
+ { pattern: node_path_1.default.join(appData, "Yarn"), pm: "yarn" },
31
+ // npm global paths (including nvm)
32
+ { pattern: "/usr/local/lib/node_modules", pm: "npm" },
33
+ { pattern: "/usr/lib/node_modules", pm: "npm" },
34
+ { pattern: node_path_1.default.join(home, ".nvm"), pm: "npm" },
35
+ { pattern: node_path_1.default.join(home, ".npm-global"), pm: "npm" },
36
+ { pattern: node_path_1.default.join(appData, "npm"), pm: "npm" },
37
+ ];
38
+ // Check if we're in a global installation path
39
+ for (const { pattern, pm } of globalPatterns) {
40
+ if (pattern && __dirname.startsWith(pattern)) {
41
+ return { isGlobal: true, packageManager: pm };
42
+ }
23
43
  }
24
- if (node_fs_1.default.existsSync(node_path_1.default.join(cwd, "yarn.lock"))) {
25
- return "yarn";
44
+ // Check if we're in a local project's node_modules
45
+ if (__dirname.includes("/node_modules/mindsim/")) {
46
+ // Detect local package manager from lockfiles
47
+ const cwd = process.cwd();
48
+ let pm = "npm";
49
+ if (node_fs_1.default.existsSync(node_path_1.default.join(cwd, "pnpm-lock.yaml"))) {
50
+ pm = "pnpm";
51
+ }
52
+ else if (node_fs_1.default.existsSync(node_path_1.default.join(cwd, "yarn.lock"))) {
53
+ pm = "yarn";
54
+ }
55
+ return { isGlobal: false, packageManager: pm };
26
56
  }
27
- return "npm";
57
+ // Default: assume global npm (safest default for CLI tools)
58
+ return { isGlobal: true, packageManager: "npm" };
28
59
  };
29
60
  /**
30
- * Gets the install command for a specific package manager
61
+ * Gets the update command for a specific package manager.
62
+ * Uses install/add with @latest to ensure we get the absolute latest version,
63
+ * not constrained by semver ranges in package.json.
31
64
  */
32
- const getInstallCommand = (packageManager, packageName) => {
65
+ const getUpdateCommand = (packageManager, packageName, global) => {
66
+ if (global) {
67
+ switch (packageManager) {
68
+ case "pnpm":
69
+ // pnpm add -g with @latest ensures latest version
70
+ return `pnpm add -g ${packageName}@latest`;
71
+ case "yarn":
72
+ // yarn global add with @latest ensures latest version
73
+ return `yarn global add ${packageName}@latest`;
74
+ case "npm":
75
+ // npm install -g with @latest is more reliable than npm update -g
76
+ return `npm install -g ${packageName}@latest`;
77
+ }
78
+ }
33
79
  switch (packageManager) {
34
80
  case "pnpm":
35
81
  return `pnpm add ${packageName}@latest`;
36
82
  case "yarn":
37
83
  return `yarn add ${packageName}@latest`;
38
84
  case "npm":
39
- return `npm install ${packageName}@latest --save`;
85
+ return `npm install ${packageName}@latest`;
40
86
  }
41
87
  };
42
88
  const PACKAGE_NAME = "mindsim";
@@ -107,7 +153,7 @@ exports.checkForUpdates = checkForUpdates;
107
153
  */
108
154
  const updateSdk = async () => {
109
155
  console.log(`Checking for updates for ${PACKAGE_NAME}...`);
110
- const packageManager = detectPackageManager();
156
+ const { isGlobal, packageManager } = detectInstallContext();
111
157
  try {
112
158
  const currentVersion = (0, exports.getPackageVersion)();
113
159
  const { data } = await axios_1.default.get(REGISTRY_URL);
@@ -116,15 +162,16 @@ const updateSdk = async () => {
116
162
  console.log(`You are already on the latest version (${currentVersion}).`);
117
163
  return;
118
164
  }
119
- const installCommand = getInstallCommand(packageManager, PACKAGE_NAME);
165
+ const updateCommand = getUpdateCommand(packageManager, PACKAGE_NAME, isGlobal);
120
166
  console.log(`Updating from ${currentVersion} to ${latestVersion}...`);
167
+ console.log(`Installation type: ${isGlobal ? "global" : "local"}`);
121
168
  console.log(`Detected package manager: ${packageManager}`);
122
- console.log(`Running: ${installCommand}`);
123
- await execAsync(installCommand);
169
+ console.log(`Running: ${updateCommand}`);
170
+ await execAsync(updateCommand);
124
171
  console.log("✅ Update complete! Please restart your application.");
125
172
  }
126
173
  catch (error) {
127
- const manualCommand = getInstallCommand(packageManager, PACKAGE_NAME);
174
+ const manualCommand = getUpdateCommand(packageManager, PACKAGE_NAME, isGlobal);
128
175
  console.error("❌ Failed to update MindSim SDK.");
129
176
  if (error instanceof Error) {
130
177
  console.error(error.message);
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mindsim",
3
- "version": "0.1.7",
3
+ "version": "0.1.8",
4
4
  "description": "The official MindSim typescript SDK allows you to programmatically create digital minds, populate them with conversational data, and run powerful simulations to get an accurate preview of how the person will think, feel, say, and act in any scenario.",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
package/src/version.ts CHANGED
@@ -8,36 +8,92 @@ import { getLogger } from "./logger";
8
8
 
9
9
  const execAsync = promisify(exec);
10
10
 
11
+ type PackageManager = "pnpm" | "yarn" | "npm";
12
+
13
+ interface InstallContext {
14
+ isGlobal: boolean;
15
+ packageManager: PackageManager;
16
+ }
17
+
11
18
  /**
12
- * Detects the package manager used in the current project
19
+ * Detects the installation context (global vs local, and which package manager)
13
20
  */
14
- const detectPackageManager = (): "pnpm" | "yarn" | "npm" => {
15
- const cwd = process.cwd();
16
-
17
- // Check for lockfiles in order of preference
18
- if (fs.existsSync(path.join(cwd, "pnpm-lock.yaml"))) {
19
- return "pnpm";
21
+ const detectInstallContext = (): InstallContext => {
22
+ const home = process.env.HOME || "";
23
+ const appData = process.env.APPDATA || "";
24
+
25
+ // Global path patterns mapped to their package managers
26
+ const globalPatterns: Array<{ pattern: string; pm: PackageManager }> = [
27
+ // pnpm global paths
28
+ { pattern: path.join(home, "Library/pnpm"), pm: "pnpm" },
29
+ { pattern: path.join(home, ".local/share/pnpm"), pm: "pnpm" },
30
+ { pattern: path.join(appData, "pnpm"), pm: "pnpm" },
31
+ // yarn global paths
32
+ { pattern: path.join(home, ".yarn"), pm: "yarn" },
33
+ { pattern: path.join(home, ".config/yarn"), pm: "yarn" },
34
+ { pattern: path.join(appData, "Yarn"), pm: "yarn" },
35
+ // npm global paths (including nvm)
36
+ { pattern: "/usr/local/lib/node_modules", pm: "npm" },
37
+ { pattern: "/usr/lib/node_modules", pm: "npm" },
38
+ { pattern: path.join(home, ".nvm"), pm: "npm" },
39
+ { pattern: path.join(home, ".npm-global"), pm: "npm" },
40
+ { pattern: path.join(appData, "npm"), pm: "npm" },
41
+ ];
42
+
43
+ // Check if we're in a global installation path
44
+ for (const { pattern, pm } of globalPatterns) {
45
+ if (pattern && __dirname.startsWith(pattern)) {
46
+ return { isGlobal: true, packageManager: pm };
47
+ }
20
48
  }
21
- if (fs.existsSync(path.join(cwd, "yarn.lock"))) {
22
- return "yarn";
49
+
50
+ // Check if we're in a local project's node_modules
51
+ if (__dirname.includes("/node_modules/mindsim/")) {
52
+ // Detect local package manager from lockfiles
53
+ const cwd = process.cwd();
54
+ let pm: PackageManager = "npm";
55
+ if (fs.existsSync(path.join(cwd, "pnpm-lock.yaml"))) {
56
+ pm = "pnpm";
57
+ } else if (fs.existsSync(path.join(cwd, "yarn.lock"))) {
58
+ pm = "yarn";
59
+ }
60
+ return { isGlobal: false, packageManager: pm };
23
61
  }
24
- return "npm";
62
+
63
+ // Default: assume global npm (safest default for CLI tools)
64
+ return { isGlobal: true, packageManager: "npm" };
25
65
  };
26
66
 
27
67
  /**
28
- * Gets the install command for a specific package manager
68
+ * Gets the update command for a specific package manager.
69
+ * Uses install/add with @latest to ensure we get the absolute latest version,
70
+ * not constrained by semver ranges in package.json.
29
71
  */
30
- const getInstallCommand = (
31
- packageManager: "pnpm" | "yarn" | "npm",
72
+ const getUpdateCommand = (
73
+ packageManager: PackageManager,
32
74
  packageName: string,
75
+ global: boolean,
33
76
  ): string => {
77
+ if (global) {
78
+ switch (packageManager) {
79
+ case "pnpm":
80
+ // pnpm add -g with @latest ensures latest version
81
+ return `pnpm add -g ${packageName}@latest`;
82
+ case "yarn":
83
+ // yarn global add with @latest ensures latest version
84
+ return `yarn global add ${packageName}@latest`;
85
+ case "npm":
86
+ // npm install -g with @latest is more reliable than npm update -g
87
+ return `npm install -g ${packageName}@latest`;
88
+ }
89
+ }
34
90
  switch (packageManager) {
35
91
  case "pnpm":
36
92
  return `pnpm add ${packageName}@latest`;
37
93
  case "yarn":
38
94
  return `yarn add ${packageName}@latest`;
39
95
  case "npm":
40
- return `npm install ${packageName}@latest --save`;
96
+ return `npm install ${packageName}@latest`;
41
97
  }
42
98
  };
43
99
 
@@ -116,7 +172,7 @@ export const checkForUpdates = async (verbose = false): Promise<void> => {
116
172
  export const updateSdk = async (): Promise<void> => {
117
173
  console.log(`Checking for updates for ${PACKAGE_NAME}...`);
118
174
 
119
- const packageManager = detectPackageManager();
175
+ const { isGlobal, packageManager } = detectInstallContext();
120
176
 
121
177
  try {
122
178
  const currentVersion = getPackageVersion();
@@ -128,17 +184,18 @@ export const updateSdk = async (): Promise<void> => {
128
184
  return;
129
185
  }
130
186
 
131
- const installCommand = getInstallCommand(packageManager, PACKAGE_NAME);
187
+ const updateCommand = getUpdateCommand(packageManager, PACKAGE_NAME, isGlobal);
132
188
 
133
189
  console.log(`Updating from ${currentVersion} to ${latestVersion}...`);
190
+ console.log(`Installation type: ${isGlobal ? "global" : "local"}`);
134
191
  console.log(`Detected package manager: ${packageManager}`);
135
- console.log(`Running: ${installCommand}`);
192
+ console.log(`Running: ${updateCommand}`);
136
193
 
137
- await execAsync(installCommand);
194
+ await execAsync(updateCommand);
138
195
 
139
196
  console.log("✅ Update complete! Please restart your application.");
140
197
  } catch (error) {
141
- const manualCommand = getInstallCommand(packageManager, PACKAGE_NAME);
198
+ const manualCommand = getUpdateCommand(packageManager, PACKAGE_NAME, isGlobal);
142
199
  console.error("❌ Failed to update MindSim SDK.");
143
200
  if (error instanceof Error) {
144
201
  console.error(error.message);