pi-gsd 1.6.5 → 1.6.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/package.json +4 -1
- package/scripts/postinstall.js +30 -9
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-gsd",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.6",
|
|
4
4
|
"description": "Get Shit Done - Unofficial port of the renowned AI-native project-planning spec-driven toolkit",
|
|
5
5
|
"main": "dist/pi-gsd-tools.js",
|
|
6
6
|
"bin": {
|
|
@@ -57,6 +57,9 @@
|
|
|
57
57
|
"registry": "https://registry.npmjs.org/"
|
|
58
58
|
},
|
|
59
59
|
"pi": {
|
|
60
|
+
"extensions": [
|
|
61
|
+
"./.gsd/extensions"
|
|
62
|
+
],
|
|
60
63
|
"skills": [
|
|
61
64
|
"./skills"
|
|
62
65
|
],
|
package/scripts/postinstall.js
CHANGED
|
@@ -219,14 +219,31 @@ function main() {
|
|
|
219
219
|
installed++;
|
|
220
220
|
}
|
|
221
221
|
|
|
222
|
-
// ── Pi extension
|
|
223
|
-
//
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
222
|
+
// ── Pi extension — served from npm package via pi.extensions in package.json ─────
|
|
223
|
+
// No local copying needed. Cleanup stale files from old install approach.
|
|
224
|
+
const extDir = path.join(PROJECT_ROOT, ".pi", "extensions");
|
|
225
|
+
const staleExts = ["gsd-hooks.ts", "pi-gsd-hooks.ts"];
|
|
226
|
+
for (const name of staleExts) {
|
|
227
|
+
const stale = path.join(extDir, name);
|
|
228
|
+
if (fs.existsSync(stale)) {
|
|
229
|
+
fs.rmSync(stale);
|
|
230
|
+
log("ok", `.pi/extensions/${name} (removed — extension now served from package)`);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
const settingsFile2 = path.join(PROJECT_ROOT, ".pi", "settings.json");
|
|
234
|
+
if (fs.existsSync(settingsFile2)) {
|
|
235
|
+
try {
|
|
236
|
+
const settings2 = JSON.parse(fs.readFileSync(settingsFile2, "utf8"));
|
|
237
|
+
if (Array.isArray(settings2.extensions)) {
|
|
238
|
+
const cleaned2 = settings2.extensions.filter((e) => !staleExts.some((n) => e.endsWith(n)));
|
|
239
|
+
if (cleaned2.length !== settings2.extensions.length) {
|
|
240
|
+
settings2.extensions = cleaned2;
|
|
241
|
+
fs.writeFileSync(settingsFile2, JSON.stringify(settings2, null, "\t"), "utf8");
|
|
242
|
+
log("ok", ".pi/settings.json (removed stale extension entries)");
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
} catch { /* ignore */ }
|
|
246
|
+
}
|
|
230
247
|
// ── Pi prompt templates — cleanup stale local copies ───────────────────────
|
|
231
248
|
// Prompts are served directly from the npm package (user scope).
|
|
232
249
|
// Local copies in .pi/prompts/ cause collision warnings on every pi update.
|
|
@@ -394,7 +411,11 @@ function installPiExtension(projectRoot, pkgDir, force, callback) {
|
|
|
394
411
|
} else if (cleaned.length !== extensions.length) {
|
|
395
412
|
// Removed stale entry but extDest already present
|
|
396
413
|
settings.extensions = cleaned;
|
|
397
|
-
fs.writeFileSync(
|
|
414
|
+
fs.writeFileSync(
|
|
415
|
+
settingsFile,
|
|
416
|
+
JSON.stringify(settings, null, "\t"),
|
|
417
|
+
"utf8",
|
|
418
|
+
);
|
|
398
419
|
log("ok", ".pi/settings.json (removed stale gsd-hooks.ts entry)");
|
|
399
420
|
}
|
|
400
421
|
} catch (e) {
|