mindsim 0.1.5 → 0.1.6
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/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +35 -5
- package/dist/version.js.map +1 -1
- package/package.json +1 -1
- package/src/version.ts +43 -5
- package/tests/version.test.ts +63 -4
package/dist/version.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export declare const getPackageVersion: () => string;
|
|
|
9
9
|
*/
|
|
10
10
|
export declare const checkForUpdates: (verbose?: boolean) => Promise<void>;
|
|
11
11
|
/**
|
|
12
|
-
* Auto-updates the SDK using
|
|
12
|
+
* Auto-updates the SDK using the detected package manager
|
|
13
13
|
*/
|
|
14
14
|
export declare const updateSdk: () => Promise<void>;
|
|
15
15
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AA6CA;;;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"}
|
package/dist/version.js
CHANGED
|
@@ -11,6 +11,33 @@ const node_util_1 = require("node:util");
|
|
|
11
11
|
const axios_1 = __importDefault(require("axios"));
|
|
12
12
|
const semver_1 = __importDefault(require("semver"));
|
|
13
13
|
const execAsync = (0, node_util_1.promisify)(node_child_process_1.exec);
|
|
14
|
+
/**
|
|
15
|
+
* Detects the package manager used in the current project
|
|
16
|
+
*/
|
|
17
|
+
const detectPackageManager = () => {
|
|
18
|
+
const cwd = process.cwd();
|
|
19
|
+
// Check for lockfiles in order of preference
|
|
20
|
+
if (node_fs_1.default.existsSync(node_path_1.default.join(cwd, "pnpm-lock.yaml"))) {
|
|
21
|
+
return "pnpm";
|
|
22
|
+
}
|
|
23
|
+
if (node_fs_1.default.existsSync(node_path_1.default.join(cwd, "yarn.lock"))) {
|
|
24
|
+
return "yarn";
|
|
25
|
+
}
|
|
26
|
+
return "npm";
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Gets the install command for a specific package manager
|
|
30
|
+
*/
|
|
31
|
+
const getInstallCommand = (packageManager, packageName) => {
|
|
32
|
+
switch (packageManager) {
|
|
33
|
+
case "pnpm":
|
|
34
|
+
return `pnpm add ${packageName}@latest`;
|
|
35
|
+
case "yarn":
|
|
36
|
+
return `yarn add ${packageName}@latest`;
|
|
37
|
+
case "npm":
|
|
38
|
+
return `npm install ${packageName}@latest --save`;
|
|
39
|
+
}
|
|
40
|
+
};
|
|
14
41
|
const PACKAGE_NAME = "mindsim";
|
|
15
42
|
const REGISTRY_URL = `https://registry.npmjs.org/${PACKAGE_NAME}`;
|
|
16
43
|
/**
|
|
@@ -75,10 +102,11 @@ const checkForUpdates = async (verbose = false) => {
|
|
|
75
102
|
};
|
|
76
103
|
exports.checkForUpdates = checkForUpdates;
|
|
77
104
|
/**
|
|
78
|
-
* Auto-updates the SDK using
|
|
105
|
+
* Auto-updates the SDK using the detected package manager
|
|
79
106
|
*/
|
|
80
107
|
const updateSdk = async () => {
|
|
81
108
|
console.log(`Checking for updates for ${PACKAGE_NAME}...`);
|
|
109
|
+
const packageManager = detectPackageManager();
|
|
82
110
|
try {
|
|
83
111
|
const currentVersion = (0, exports.getPackageVersion)();
|
|
84
112
|
const { data } = await axios_1.default.get(REGISTRY_URL);
|
|
@@ -87,18 +115,20 @@ const updateSdk = async () => {
|
|
|
87
115
|
console.log(`You are already on the latest version (${currentVersion}).`);
|
|
88
116
|
return;
|
|
89
117
|
}
|
|
118
|
+
const installCommand = getInstallCommand(packageManager, PACKAGE_NAME);
|
|
90
119
|
console.log(`Updating from ${currentVersion} to ${latestVersion}...`);
|
|
91
|
-
console.log(`
|
|
92
|
-
|
|
93
|
-
await execAsync(
|
|
120
|
+
console.log(`Detected package manager: ${packageManager}`);
|
|
121
|
+
console.log(`Running: ${installCommand}`);
|
|
122
|
+
await execAsync(installCommand);
|
|
94
123
|
console.log("✅ Update complete! Please restart your application.");
|
|
95
124
|
}
|
|
96
125
|
catch (error) {
|
|
126
|
+
const manualCommand = getInstallCommand(packageManager, PACKAGE_NAME);
|
|
97
127
|
console.error("❌ Failed to update MindSim SDK.");
|
|
98
128
|
if (error instanceof Error) {
|
|
99
129
|
console.error(error.message);
|
|
100
130
|
}
|
|
101
|
-
console.error(
|
|
131
|
+
console.error(`Please try running manually: ${manualCommand}`);
|
|
102
132
|
}
|
|
103
133
|
};
|
|
104
134
|
exports.updateSdk = updateSdk;
|
package/dist/version.js.map
CHANGED
|
@@ -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.
|
|
3
|
+
"version": "0.1.6",
|
|
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
|
@@ -7,6 +7,39 @@ import semver from "semver";
|
|
|
7
7
|
|
|
8
8
|
const execAsync = promisify(exec);
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* Detects the package manager used in the current project
|
|
12
|
+
*/
|
|
13
|
+
const detectPackageManager = (): "pnpm" | "yarn" | "npm" => {
|
|
14
|
+
const cwd = process.cwd();
|
|
15
|
+
|
|
16
|
+
// Check for lockfiles in order of preference
|
|
17
|
+
if (fs.existsSync(path.join(cwd, "pnpm-lock.yaml"))) {
|
|
18
|
+
return "pnpm";
|
|
19
|
+
}
|
|
20
|
+
if (fs.existsSync(path.join(cwd, "yarn.lock"))) {
|
|
21
|
+
return "yarn";
|
|
22
|
+
}
|
|
23
|
+
return "npm";
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Gets the install command for a specific package manager
|
|
28
|
+
*/
|
|
29
|
+
const getInstallCommand = (
|
|
30
|
+
packageManager: "pnpm" | "yarn" | "npm",
|
|
31
|
+
packageName: string,
|
|
32
|
+
): string => {
|
|
33
|
+
switch (packageManager) {
|
|
34
|
+
case "pnpm":
|
|
35
|
+
return `pnpm add ${packageName}@latest`;
|
|
36
|
+
case "yarn":
|
|
37
|
+
return `yarn add ${packageName}@latest`;
|
|
38
|
+
case "npm":
|
|
39
|
+
return `npm install ${packageName}@latest --save`;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
|
|
10
43
|
const PACKAGE_NAME = "mindsim";
|
|
11
44
|
const REGISTRY_URL = `https://registry.npmjs.org/${PACKAGE_NAME}`;
|
|
12
45
|
|
|
@@ -77,11 +110,13 @@ export const checkForUpdates = async (verbose = false): Promise<void> => {
|
|
|
77
110
|
};
|
|
78
111
|
|
|
79
112
|
/**
|
|
80
|
-
* Auto-updates the SDK using
|
|
113
|
+
* Auto-updates the SDK using the detected package manager
|
|
81
114
|
*/
|
|
82
115
|
export const updateSdk = async (): Promise<void> => {
|
|
83
116
|
console.log(`Checking for updates for ${PACKAGE_NAME}...`);
|
|
84
117
|
|
|
118
|
+
const packageManager = detectPackageManager();
|
|
119
|
+
|
|
85
120
|
try {
|
|
86
121
|
const currentVersion = getPackageVersion();
|
|
87
122
|
const { data } = await axios.get(REGISTRY_URL);
|
|
@@ -92,18 +127,21 @@ export const updateSdk = async (): Promise<void> => {
|
|
|
92
127
|
return;
|
|
93
128
|
}
|
|
94
129
|
|
|
130
|
+
const installCommand = getInstallCommand(packageManager, PACKAGE_NAME);
|
|
131
|
+
|
|
95
132
|
console.log(`Updating from ${currentVersion} to ${latestVersion}...`);
|
|
96
|
-
console.log(`
|
|
133
|
+
console.log(`Detected package manager: ${packageManager}`);
|
|
134
|
+
console.log(`Running: ${installCommand}`);
|
|
97
135
|
|
|
98
|
-
|
|
99
|
-
await execAsync(`npm install ${PACKAGE_NAME}@latest --save`);
|
|
136
|
+
await execAsync(installCommand);
|
|
100
137
|
|
|
101
138
|
console.log("✅ Update complete! Please restart your application.");
|
|
102
139
|
} catch (error) {
|
|
140
|
+
const manualCommand = getInstallCommand(packageManager, PACKAGE_NAME);
|
|
103
141
|
console.error("❌ Failed to update MindSim SDK.");
|
|
104
142
|
if (error instanceof Error) {
|
|
105
143
|
console.error(error.message);
|
|
106
144
|
}
|
|
107
|
-
console.error(
|
|
145
|
+
console.error(`Please try running manually: ${manualCommand}`);
|
|
108
146
|
}
|
|
109
147
|
};
|
package/tests/version.test.ts
CHANGED
|
@@ -165,17 +165,27 @@ describe("Version Module", () => {
|
|
|
165
165
|
});
|
|
166
166
|
|
|
167
167
|
describe("updateSdk", () => {
|
|
168
|
+
const MOCK_CWD = "/mock/project";
|
|
169
|
+
|
|
168
170
|
beforeEach(() => {
|
|
169
171
|
// Default local version
|
|
170
172
|
mockedFs.existsSync.mockReturnValue(true);
|
|
171
173
|
mockedFs.readFileSync.mockReturnValue(JSON.stringify({ version: "1.0.0" }));
|
|
174
|
+
// Mock process.cwd for package manager detection
|
|
175
|
+
vi.spyOn(process, "cwd").mockReturnValue(MOCK_CWD);
|
|
176
|
+
// Mock path.join to return predictable paths for lockfile checks
|
|
177
|
+
mockedPath.join.mockImplementation((...args) => args.join("/"));
|
|
172
178
|
});
|
|
173
179
|
|
|
174
|
-
it("should
|
|
180
|
+
it("should use npm install when no lockfile is found", async () => {
|
|
181
|
+
// No lockfiles found - defaults to npm
|
|
182
|
+
mockedFs.existsSync.mockImplementation((p) => {
|
|
183
|
+
if (p === MOCK_PACKAGE_PATH) return true; // package.json exists
|
|
184
|
+
return false; // no lockfiles
|
|
185
|
+
});
|
|
175
186
|
mockedAxios.get.mockResolvedValue({
|
|
176
187
|
data: { "dist-tags": { latest: "2.0.0" } },
|
|
177
188
|
});
|
|
178
|
-
// Mock the execAsync resolution
|
|
179
189
|
mockExecAsync.mockResolvedValue({ stdout: "ok", stderr: "" });
|
|
180
190
|
|
|
181
191
|
const consoleLogSpy = vi.spyOn(console, "log").mockImplementation(() => {});
|
|
@@ -186,7 +196,49 @@ describe("Version Module", () => {
|
|
|
186
196
|
expect(consoleLogSpy).toHaveBeenCalledWith(expect.stringContaining("Update complete"));
|
|
187
197
|
});
|
|
188
198
|
|
|
199
|
+
it("should use pnpm add when pnpm-lock.yaml is found", async () => {
|
|
200
|
+
mockedFs.existsSync.mockImplementation((p) => {
|
|
201
|
+
if (p === MOCK_PACKAGE_PATH) return true;
|
|
202
|
+
if (p === `${MOCK_CWD}/pnpm-lock.yaml`) return true;
|
|
203
|
+
return false;
|
|
204
|
+
});
|
|
205
|
+
mockedAxios.get.mockResolvedValue({
|
|
206
|
+
data: { "dist-tags": { latest: "2.0.0" } },
|
|
207
|
+
});
|
|
208
|
+
mockExecAsync.mockResolvedValue({ stdout: "ok", stderr: "" });
|
|
209
|
+
|
|
210
|
+
const consoleLogSpy = vi.spyOn(console, "log").mockImplementation(() => {});
|
|
211
|
+
|
|
212
|
+
await updateSdk();
|
|
213
|
+
|
|
214
|
+
expect(mockExecAsync).toHaveBeenCalledWith("pnpm add mindsim@latest");
|
|
215
|
+
expect(consoleLogSpy).toHaveBeenCalledWith(expect.stringContaining("Update complete"));
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
it("should use yarn add when yarn.lock is found", async () => {
|
|
219
|
+
mockedFs.existsSync.mockImplementation((p) => {
|
|
220
|
+
if (p === MOCK_PACKAGE_PATH) return true;
|
|
221
|
+
if (p === `${MOCK_CWD}/yarn.lock`) return true;
|
|
222
|
+
return false;
|
|
223
|
+
});
|
|
224
|
+
mockedAxios.get.mockResolvedValue({
|
|
225
|
+
data: { "dist-tags": { latest: "2.0.0" } },
|
|
226
|
+
});
|
|
227
|
+
mockExecAsync.mockResolvedValue({ stdout: "ok", stderr: "" });
|
|
228
|
+
|
|
229
|
+
const consoleLogSpy = vi.spyOn(console, "log").mockImplementation(() => {});
|
|
230
|
+
|
|
231
|
+
await updateSdk();
|
|
232
|
+
|
|
233
|
+
expect(mockExecAsync).toHaveBeenCalledWith("yarn add mindsim@latest");
|
|
234
|
+
expect(consoleLogSpy).toHaveBeenCalledWith(expect.stringContaining("Update complete"));
|
|
235
|
+
});
|
|
236
|
+
|
|
189
237
|
it("should do nothing if already on latest", async () => {
|
|
238
|
+
mockedFs.existsSync.mockImplementation((p) => {
|
|
239
|
+
if (p === MOCK_PACKAGE_PATH) return true;
|
|
240
|
+
return false;
|
|
241
|
+
});
|
|
190
242
|
mockedAxios.get.mockResolvedValue({
|
|
191
243
|
data: { "dist-tags": { latest: "1.0.0" } },
|
|
192
244
|
});
|
|
@@ -201,11 +253,15 @@ describe("Version Module", () => {
|
|
|
201
253
|
);
|
|
202
254
|
});
|
|
203
255
|
|
|
204
|
-
it("should handle exec errors", async () => {
|
|
256
|
+
it("should handle exec errors and show correct manual command", async () => {
|
|
257
|
+
mockedFs.existsSync.mockImplementation((p) => {
|
|
258
|
+
if (p === MOCK_PACKAGE_PATH) return true;
|
|
259
|
+
if (p === `${MOCK_CWD}/pnpm-lock.yaml`) return true;
|
|
260
|
+
return false;
|
|
261
|
+
});
|
|
205
262
|
mockedAxios.get.mockResolvedValue({
|
|
206
263
|
data: { "dist-tags": { latest: "2.0.0" } },
|
|
207
264
|
});
|
|
208
|
-
// Mock execAsync rejection
|
|
209
265
|
mockExecAsync.mockRejectedValue(new Error("Permission denied"));
|
|
210
266
|
|
|
211
267
|
const consoleErrorSpy = vi.spyOn(console, "error").mockImplementation(() => {});
|
|
@@ -214,6 +270,9 @@ describe("Version Module", () => {
|
|
|
214
270
|
|
|
215
271
|
expect(consoleErrorSpy).toHaveBeenCalledWith("❌ Failed to update MindSim SDK.");
|
|
216
272
|
expect(consoleErrorSpy).toHaveBeenCalledWith("Permission denied");
|
|
273
|
+
expect(consoleErrorSpy).toHaveBeenCalledWith(
|
|
274
|
+
"Please try running manually: pnpm add mindsim@latest",
|
|
275
|
+
);
|
|
217
276
|
});
|
|
218
277
|
});
|
|
219
278
|
});
|