rhachet 1.13.7 → 1.13.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.
|
@@ -22,6 +22,32 @@ const countFilesInDirectory = (dirPath) => {
|
|
|
22
22
|
}
|
|
23
23
|
return count;
|
|
24
24
|
};
|
|
25
|
+
/**
|
|
26
|
+
* .what = recursively sets all files and directories to readonly
|
|
27
|
+
* .why = prevents agents from accidentally or maliciously overwriting linked resources from node_modules
|
|
28
|
+
*/
|
|
29
|
+
const setDirectoryReadonly = (dirPath) => {
|
|
30
|
+
const entries = (0, node_fs_1.readdirSync)(dirPath);
|
|
31
|
+
for (const entry of entries) {
|
|
32
|
+
const fullPath = (0, node_path_1.resolve)(dirPath, entry);
|
|
33
|
+
const lstats = (0, node_fs_1.lstatSync)(fullPath);
|
|
34
|
+
// skip nested symlinks to avoid infinite loops
|
|
35
|
+
if (lstats.isSymbolicLink())
|
|
36
|
+
continue;
|
|
37
|
+
if (lstats.isDirectory()) {
|
|
38
|
+
// recurse first, then set directory permissions
|
|
39
|
+
setDirectoryReadonly(fullPath);
|
|
40
|
+
// r-x for directories (need execute to traverse)
|
|
41
|
+
(0, node_fs_1.chmodSync)(fullPath, 0o555);
|
|
42
|
+
}
|
|
43
|
+
else if (lstats.isFile()) {
|
|
44
|
+
// r-- for files
|
|
45
|
+
(0, node_fs_1.chmodSync)(fullPath, 0o444);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// set the root directory itself to readonly after processing contents
|
|
49
|
+
(0, node_fs_1.chmodSync)(dirPath, 0o555);
|
|
50
|
+
};
|
|
25
51
|
/**
|
|
26
52
|
* .what = creates symlinks for resource directories to a target directory
|
|
27
53
|
* .why = enables role resources (briefs, skills, etc.) to be linked from node_modules or other sources
|
|
@@ -62,7 +88,9 @@ const symlinkResourceDirectories = (options) => {
|
|
|
62
88
|
const relativeSource = (0, node_path_1.relative)(targetDir, sourcePath);
|
|
63
89
|
try {
|
|
64
90
|
(0, node_fs_1.symlinkSync)(relativeSource, targetPath, 'dir');
|
|
65
|
-
//
|
|
91
|
+
// set all files and directories to readonly to prevent accidental or malicious overwrites
|
|
92
|
+
setDirectoryReadonly(sourcePath);
|
|
93
|
+
// count the files in the source directory
|
|
66
94
|
const fileCount = countFilesInDirectory(sourcePath);
|
|
67
95
|
totalFileCount += fileCount;
|
|
68
96
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symlinkResourceDirectories.js","sourceRoot":"","sources":["../../../../src/domain.operations/invoke/link/symlinkResourceDirectories.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"symlinkResourceDirectories.js","sourceRoot":"","sources":["../../../../src/domain.operations/invoke/link/symlinkResourceDirectories.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "rhachet",
|
|
3
3
|
"author": "ehmpathy",
|
|
4
4
|
"description": "A framework for reliable, thorough thought. Weave threads of thought via stitches.",
|
|
5
|
-
"version": "1.13.
|
|
5
|
+
"version": "1.13.8",
|
|
6
6
|
"repository": "ehmpathy/rhachet",
|
|
7
7
|
"homepage": "https://github.com/ehmpathy/rhachet",
|
|
8
8
|
"keywords": [
|