@roarpeng/graphflow 1.3.3 → 1.3.4
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/CHANGELOG.md +9 -0
- package/README.md +1 -1
- package/dist/config/discover-workspace.d.ts +10 -0
- package/dist/config/discover-workspace.d.ts.map +1 -1
- package/dist/config/discover-workspace.js +77 -1
- package/dist/config/discover-workspace.js.map +1 -1
- package/dist/config/workspace-root.d.ts.map +1 -1
- package/dist/config/workspace-root.js +11 -1
- package/dist/config/workspace-root.js.map +1 -1
- package/dist/graph/file-indexer-walker.d.ts.map +1 -1
- package/dist/graph/file-indexer-walker.js +9 -6
- package/dist/graph/file-indexer-walker.js.map +1 -1
- package/dist/graph/file-watcher.d.ts.map +1 -1
- package/dist/graph/file-watcher.js +2 -1
- package/dist/graph/file-watcher.js.map +1 -1
- package/dist/utils/safe-fs.d.ts +6 -0
- package/dist/utils/safe-fs.d.ts.map +1 -0
- package/dist/utils/safe-fs.js +37 -0
- package/dist/utils/safe-fs.js.map +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,15 @@ All notable changes to this project are documented in this file.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [1.3.4] - 2026-07-03
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- **MCP / Windows EPERM**:修复 MCP 在 `AppData\Local` 等系统目录启动时误将系统路径当作工作区并扫描 `ElevatedDiagnostics` 导致 `EPERM` 的问题。
|
|
12
|
+
- 目录遍历对 `EPERM`/`EACCES` 静默跳过(`safe-fs`)
|
|
13
|
+
- 忽略 `ElevatedDiagnostics` 等 Windows 受保护目录
|
|
14
|
+
- `ensureMcpWorkspaceEnv` 不再将 `LOCALAPPDATA` 根目录当作隐式工作区;优先使用 IDE 环境变量(`VSCODE_CWD` 等)
|
|
15
|
+
|
|
7
16
|
## [1.3.3] - 2026-07-03
|
|
8
17
|
|
|
9
18
|
### Fixed
|
package/README.md
CHANGED
|
@@ -114,7 +114,7 @@ npx @roarpeng/graphflow context preview "orchestrator" --json
|
|
|
114
114
|
|
|
115
115
|
### 发布信息
|
|
116
116
|
|
|
117
|
-
- 最新版本:**v1.3.
|
|
117
|
+
- 最新版本:**v1.3.4**(root + vscode-extension);npm:`@roarpeng/graphflow@1.3.4`
|
|
118
118
|
- **GitHub Release**:push 到 `main` 且 CI 通过后自动发布 VSIX(见 [Actions](https://github.com/Roarpeng/GraphFlow/actions))
|
|
119
119
|
- 变更日志:`CHANGELOG.md`
|
|
120
120
|
|
|
@@ -3,6 +3,14 @@ declare function isWsl(): boolean;
|
|
|
3
3
|
export declare function isGraphFlowRuntimeDirectory(dir: string): boolean;
|
|
4
4
|
/** True when a directory looks like a user project workspace for GraphFlow. */
|
|
5
5
|
export declare function hasProjectWorkspaceMarkers(dir: string): boolean;
|
|
6
|
+
/** Common manifest files that indicate a dev project root (without .git). */
|
|
7
|
+
export declare function hasDevProjectMarkers(dir: string): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Paths that must not be used as implicit workspace roots (e.g. MCP spawn cwd on Windows).
|
|
10
|
+
* Indexing here causes EPERM on protected folders like ElevatedDiagnostics.
|
|
11
|
+
*/
|
|
12
|
+
export declare function isUnsafeWorkspaceFallback(dir: string): boolean;
|
|
13
|
+
export declare function isUsableWorkspaceFallback(dir: string): boolean;
|
|
6
14
|
/**
|
|
7
15
|
* Walk upward from `fromDir` to find the nearest user project root.
|
|
8
16
|
* Skips GraphFlow runtime directories (extension vendor, global npm package).
|
|
@@ -14,5 +22,7 @@ export declare function hasProjectWorkspaceMarkers(dir: string): boolean;
|
|
|
14
22
|
export declare function discoverWorkspaceRoot(fromDir?: string): string | undefined;
|
|
15
23
|
/** Apply discovered workspace to process.env when MCP starts without an explicit root. */
|
|
16
24
|
export declare function ensureMcpWorkspaceEnv(fromDir?: string): string | undefined;
|
|
25
|
+
/** IDE-provided workspace when process cwd is unsafe or a GraphFlow runtime directory. */
|
|
26
|
+
export declare function tryResolveIdeWorkspaceHint(): string | undefined;
|
|
17
27
|
export { isWsl };
|
|
18
28
|
//# sourceMappingURL=discover-workspace.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover-workspace.d.ts","sourceRoot":"","sources":["../../src/config/discover-workspace.ts"],"names":[],"mappings":"AAsBA,iBAAS,KAAK,IAAI,OAAO,CAuBxB;AAED,8GAA8G;AAC9G,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGhE;AAED,+EAA+E;AAC/E,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAoB/D;AAoCD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,MAAsB,GAAG,MAAM,GAAG,SAAS,CAoBzF;AAED,0FAA0F;AAC1F,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,MAAsB,GAAG,MAAM,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"discover-workspace.d.ts","sourceRoot":"","sources":["../../src/config/discover-workspace.ts"],"names":[],"mappings":"AAsBA,iBAAS,KAAK,IAAI,OAAO,CAuBxB;AAED,8GAA8G;AAC9G,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGhE;AAED,+EAA+E;AAC/E,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAoB/D;AAYD,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGzD;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CA6B9D;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAM9D;AAoCD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,MAAsB,GAAG,MAAM,GAAG,SAAS,CAoBzF;AAED,0FAA0F;AAC1F,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,MAAsB,GAAG,MAAM,GAAG,SAAS,CAmCzF;AAED,0FAA0F;AAC1F,wBAAgB,0BAA0B,IAAI,MAAM,GAAG,SAAS,CAM/D;AAED,OAAO,EAAE,KAAK,EAAE,CAAC"}
|
|
@@ -2,8 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.isGraphFlowRuntimeDirectory = isGraphFlowRuntimeDirectory;
|
|
4
4
|
exports.hasProjectWorkspaceMarkers = hasProjectWorkspaceMarkers;
|
|
5
|
+
exports.hasDevProjectMarkers = hasDevProjectMarkers;
|
|
6
|
+
exports.isUnsafeWorkspaceFallback = isUnsafeWorkspaceFallback;
|
|
7
|
+
exports.isUsableWorkspaceFallback = isUsableWorkspaceFallback;
|
|
5
8
|
exports.discoverWorkspaceRoot = discoverWorkspaceRoot;
|
|
6
9
|
exports.ensureMcpWorkspaceEnv = ensureMcpWorkspaceEnv;
|
|
10
|
+
exports.tryResolveIdeWorkspaceHint = tryResolveIdeWorkspaceHint;
|
|
7
11
|
exports.isWsl = isWsl;
|
|
8
12
|
const node_fs_1 = require("node:fs");
|
|
9
13
|
const node_path_1 = require("node:path");
|
|
@@ -77,6 +81,57 @@ function hasProjectWorkspaceMarkers(dir) {
|
|
|
77
81
|
return false;
|
|
78
82
|
}
|
|
79
83
|
}
|
|
84
|
+
const DEV_PROJECT_MARKERS = [
|
|
85
|
+
"package.json",
|
|
86
|
+
"pyproject.toml",
|
|
87
|
+
"Cargo.toml",
|
|
88
|
+
"go.mod",
|
|
89
|
+
"pom.xml",
|
|
90
|
+
"build.gradle",
|
|
91
|
+
"build.gradle.kts",
|
|
92
|
+
];
|
|
93
|
+
/** Common manifest files that indicate a dev project root (without .git). */
|
|
94
|
+
function hasDevProjectMarkers(dir) {
|
|
95
|
+
const root = (0, node_path_1.resolve)(dir);
|
|
96
|
+
return DEV_PROJECT_MARKERS.some((marker) => (0, node_fs_1.existsSync)((0, node_path_1.join)(root, marker)));
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Paths that must not be used as implicit workspace roots (e.g. MCP spawn cwd on Windows).
|
|
100
|
+
* Indexing here causes EPERM on protected folders like ElevatedDiagnostics.
|
|
101
|
+
*/
|
|
102
|
+
function isUnsafeWorkspaceFallback(dir) {
|
|
103
|
+
const normalized = (0, node_path_1.resolve)(dir).replace(/\\/g, "/").toLowerCase();
|
|
104
|
+
const home = (0, node_os_1.homedir)().replace(/\\/g, "/").toLowerCase();
|
|
105
|
+
if (normalized === home) {
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
const localAppData = process.env.LOCALAPPDATA?.replace(/\\/g, "/").toLowerCase();
|
|
109
|
+
if (localAppData && normalized === localAppData) {
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
const roamingAppData = process.env.APPDATA?.replace(/\\/g, "/").toLowerCase();
|
|
113
|
+
if (roamingAppData && normalized === roamingAppData) {
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
const protectedSegments = new Set([
|
|
117
|
+
"elevateddiagnostics",
|
|
118
|
+
"system volume information",
|
|
119
|
+
"$recycle.bin",
|
|
120
|
+
]);
|
|
121
|
+
const segments = normalized.split("/").filter(Boolean);
|
|
122
|
+
if (segments.some((segment) => protectedSegments.has(segment))) {
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
const unsafeRoots = ["/program files/", "/program files (x86)/", "/windows/"];
|
|
126
|
+
return unsafeRoots.some((marker) => normalized.includes(marker));
|
|
127
|
+
}
|
|
128
|
+
function isUsableWorkspaceFallback(dir) {
|
|
129
|
+
const root = (0, node_path_1.resolve)(dir);
|
|
130
|
+
if (isGraphFlowRuntimeDirectory(root) || isUnsafeWorkspaceFallback(root)) {
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
return hasProjectWorkspaceMarkers(root) || hasDevProjectMarkers(root);
|
|
134
|
+
}
|
|
80
135
|
function resolveIdeWorkspaceHint() {
|
|
81
136
|
const wsl = isWsl();
|
|
82
137
|
for (const key of IDE_WORKSPACE_ENV_KEYS) {
|
|
@@ -148,10 +203,31 @@ function ensureMcpWorkspaceEnv(fromDir = process.cwd()) {
|
|
|
148
203
|
return discovered;
|
|
149
204
|
}
|
|
150
205
|
const cwd = (0, node_path_1.resolve)(fromDir);
|
|
151
|
-
if (
|
|
206
|
+
if (isGraphFlowRuntimeDirectory(cwd)) {
|
|
207
|
+
const hinted = resolveIdeWorkspaceHint();
|
|
208
|
+
if (hinted && !isUnsafeWorkspaceFallback(hinted)) {
|
|
209
|
+
process.env.GRAPHFLOW_WORKSPACE_ROOT = hinted;
|
|
210
|
+
return hinted;
|
|
211
|
+
}
|
|
212
|
+
return undefined;
|
|
213
|
+
}
|
|
214
|
+
if (isUsableWorkspaceFallback(cwd)) {
|
|
152
215
|
process.env.GRAPHFLOW_WORKSPACE_ROOT = cwd;
|
|
153
216
|
return cwd;
|
|
154
217
|
}
|
|
218
|
+
const hinted = resolveIdeWorkspaceHint();
|
|
219
|
+
if (hinted && !isUnsafeWorkspaceFallback(hinted)) {
|
|
220
|
+
process.env.GRAPHFLOW_WORKSPACE_ROOT = hinted;
|
|
221
|
+
return hinted;
|
|
222
|
+
}
|
|
223
|
+
return undefined;
|
|
224
|
+
}
|
|
225
|
+
/** IDE-provided workspace when process cwd is unsafe or a GraphFlow runtime directory. */
|
|
226
|
+
function tryResolveIdeWorkspaceHint() {
|
|
227
|
+
const hinted = resolveIdeWorkspaceHint();
|
|
228
|
+
if (hinted && !isUnsafeWorkspaceFallback(hinted)) {
|
|
229
|
+
return hinted;
|
|
230
|
+
}
|
|
155
231
|
return undefined;
|
|
156
232
|
}
|
|
157
233
|
//# sourceMappingURL=discover-workspace.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover-workspace.js","sourceRoot":"","sources":["../../src/config/discover-workspace.ts"],"names":[],"mappings":";;AAgDA,kEAGC;AAGD,gEAoBC;AA4CD,sDAoBC;AAGD,
|
|
1
|
+
{"version":3,"file":"discover-workspace.js","sourceRoot":"","sources":["../../src/config/discover-workspace.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-root.d.ts","sourceRoot":"","sources":["../../src/config/workspace-root.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"workspace-root.d.ts","sourceRoot":"","sources":["../../src/config/workspace-root.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAShD;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,CAAC,EAAE;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,GAAG,MAAM,CAsCT;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,eAAe,EACvB,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,GACA,eAAe,CASjB;AAED,wEAAwE;AACxE,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,CAM3F"}
|
|
@@ -33,9 +33,19 @@ function resolveRuntimeWorkspaceRoot(options) {
|
|
|
33
33
|
return discovered;
|
|
34
34
|
}
|
|
35
35
|
const cwd = (0, node_path_1.resolve)(process.cwd());
|
|
36
|
-
if (
|
|
36
|
+
if ((0, discover_workspace_1.isUsableWorkspaceFallback)(cwd)) {
|
|
37
37
|
return cwd;
|
|
38
38
|
}
|
|
39
|
+
if ((0, discover_workspace_1.isGraphFlowRuntimeDirectory)(cwd) || (0, discover_workspace_1.isUnsafeWorkspaceFallback)(cwd)) {
|
|
40
|
+
const hinted = (0, discover_workspace_1.tryResolveIdeWorkspaceHint)();
|
|
41
|
+
if (hinted) {
|
|
42
|
+
return hinted;
|
|
43
|
+
}
|
|
44
|
+
if ((0, discover_workspace_1.isGraphFlowRuntimeDirectory)(cwd)) {
|
|
45
|
+
return cwd;
|
|
46
|
+
}
|
|
47
|
+
throw new Error(`Refusing to index unsafe workspace root: ${cwd}. Set GRAPHFLOW_WORKSPACE_ROOT to your project directory.`);
|
|
48
|
+
}
|
|
39
49
|
return cwd;
|
|
40
50
|
}
|
|
41
51
|
function bindRuntimeWorkspaceRoot(config, options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-root.js","sourceRoot":"","sources":["../../src/config/workspace-root.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"workspace-root.js","sourceRoot":"","sources":["../../src/config/workspace-root.ts"],"names":[],"mappings":";;AAsBA,kEAyCC;AAED,4DAeC;AAGD,gFAMC;AAzFD,yCAAoC;AAEpC,6DAM8B;AAE9B;;;;;;;;;;;GAWG;AACH,SAAgB,2BAA2B,CAAC,OAG3C;IACC,IAAI,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;QAC7B,OAAO,IAAA,mBAAO,EAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,IAAI,EAAE,CAAC;IAC7D,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,IAAA,mBAAO,EAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,EAAE,CAAC;QAC1C,OAAO,IAAA,mBAAO,EAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,UAAU,GAAG,IAAA,0CAAqB,EAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACxD,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,GAAG,GAAG,IAAA,mBAAO,EAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACnC,IAAI,IAAA,8CAAyB,EAAC,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,IAAA,gDAA2B,EAAC,GAAG,CAAC,IAAI,IAAA,8CAAyB,EAAC,GAAG,CAAC,EAAE,CAAC;QACvE,MAAM,MAAM,GAAG,IAAA,+CAA0B,GAAE,CAAC;QAC5C,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,IAAI,IAAA,gDAA2B,EAAC,GAAG,CAAC,EAAE,CAAC;YACrC,OAAO,GAAG,CAAC;QACb,CAAC;QACD,MAAM,IAAI,KAAK,CACb,4CAA4C,GAAG,2DAA2D,CAC3G,CAAC;IACJ,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAgB,wBAAwB,CACtC,MAAuB,EACvB,OAGC;IAED,MAAM,aAAa,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;IAC3D,OAAO;QACL,GAAG,MAAM;QACT,WAAW,EAAE;YACX,GAAG,MAAM,CAAC,WAAW;YACrB,aAAa;SACd;KACF,CAAC;AACJ,CAAC;AAED,wEAAwE;AACxE,SAAgB,kCAAkC,CAAC,MAAuB;IACxE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC;IACvE,OAAO;QACL,GAAG,MAAM;QACT,WAAW,EAAE,WAA6C;KAC3D,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-indexer-walker.d.ts","sourceRoot":"","sources":["../../src/graph/file-indexer-walker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,kBAAkB;IACjC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,+DAA+D;IAC/D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAGD,eAAO,MAAM,kBAAkB,UAE9B,CAAC;AACF,eAAO,MAAM,qBAAqB,SAAU,CAAC;AAE7C,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"file-indexer-walker.d.ts","sourceRoot":"","sources":["../../src/graph/file-indexer-walker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,kBAAkB;IACjC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,+DAA+D;IAC/D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAGD,eAAO,MAAM,kBAAkB,UAE9B,CAAC;AACF,eAAO,MAAM,qBAAqB,SAAU,CAAC;AAE7C,eAAO,MAAM,YAAY,aAOvB,CAAC;AAEH;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,iBAAiB,EAAE,MAAM,EAAE,EAC3B,gBAAgB,EAAE,MAAM,GACvB,WAAW,EAAE,CAkBf;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAwBhF;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAM7C"}
|
|
@@ -11,9 +11,9 @@ exports.walkScannableFiles = walkScannableFiles;
|
|
|
11
11
|
exports.walkFiles = walkFiles;
|
|
12
12
|
exports.normalizePath = normalizePath;
|
|
13
13
|
exports.extOf = extOf;
|
|
14
|
-
const node_fs_1 = require("node:fs");
|
|
15
14
|
const node_path_1 = require("node:path");
|
|
16
15
|
const index_js_1 = require("./language-indexers/index.js");
|
|
16
|
+
const safe_fs_js_1 = require("../utils/safe-fs.js");
|
|
17
17
|
const BASE_EXTENSIONS = [".md", ".json"];
|
|
18
18
|
exports.DEFAULT_EXTENSIONS = Array.from(new Set([...index_js_1.ALL_LANGUAGE_EXTENSIONS, ...BASE_EXTENSIONS]));
|
|
19
19
|
exports.DEFAULT_MAX_FILE_SIZE = 200_000;
|
|
@@ -21,6 +21,9 @@ exports.IGNORED_DIRS = new Set([
|
|
|
21
21
|
".git", "node_modules", "dist", "coverage", "tmp", "venv", ".venv", "env", ".env",
|
|
22
22
|
"__pycache__", ".vscode", ".idea", ".next", "build", "install", "log",
|
|
23
23
|
".graphflow-cache", "graphflow-out",
|
|
24
|
+
// Windows protected / system-heavy directories (EPERM when scanned)
|
|
25
|
+
"ElevatedDiagnostics", "Application Data", "Packages", "Microsoft", "Temp", "Temporary Internet Files",
|
|
26
|
+
"System Volume Information", "$Recycle.Bin",
|
|
24
27
|
]);
|
|
25
28
|
/**
|
|
26
29
|
* Walk the workspace and return scannable files with metadata.
|
|
@@ -29,15 +32,15 @@ function walkScannableFiles(rootDir, includeExtensions, maxFileSizeBytes) {
|
|
|
29
32
|
const files = walkFiles(rootDir, includeExtensions);
|
|
30
33
|
const scanned = [];
|
|
31
34
|
for (const absPath of files) {
|
|
32
|
-
const stat = (0,
|
|
33
|
-
if (stat.size > maxFileSizeBytes) {
|
|
35
|
+
const stat = (0, safe_fs_js_1.safeStatSync)(absPath);
|
|
36
|
+
if (!stat || stat.size > maxFileSizeBytes) {
|
|
34
37
|
continue;
|
|
35
38
|
}
|
|
36
39
|
scanned.push({
|
|
37
40
|
absPath,
|
|
38
41
|
relPath: normalizePath((0, node_path_1.relative)(rootDir, absPath)),
|
|
39
|
-
size: stat.size,
|
|
40
|
-
mtimeMs: stat.mtimeMs,
|
|
42
|
+
size: Number(stat.size),
|
|
43
|
+
mtimeMs: Number(stat.mtimeMs),
|
|
41
44
|
});
|
|
42
45
|
}
|
|
43
46
|
return scanned;
|
|
@@ -47,7 +50,7 @@ function walkScannableFiles(rootDir, includeExtensions, maxFileSizeBytes) {
|
|
|
47
50
|
* whose extension matches `includeExtensions`.
|
|
48
51
|
*/
|
|
49
52
|
function walkFiles(rootDir, includeExtensions) {
|
|
50
|
-
const entries = (0,
|
|
53
|
+
const entries = (0, safe_fs_js_1.safeReaddirSync)(rootDir);
|
|
51
54
|
const files = [];
|
|
52
55
|
for (const entry of entries) {
|
|
53
56
|
const full = (0, node_path_1.join)(rootDir, entry.name);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-indexer-walker.js","sourceRoot":"","sources":["../../src/graph/file-indexer-walker.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;
|
|
1
|
+
{"version":3,"file":"file-indexer-walker.js","sourceRoot":"","sources":["../../src/graph/file-indexer-walker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-watcher.d.ts","sourceRoot":"","sources":["../../src/graph/file-watcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"file-watcher.d.ts","sourceRoot":"","sources":["../../src/graph/file-watcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiCH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,aAAa,CAA8C;IACnE,OAAO,CAAC,eAAe,CAAwC;IAC/D,OAAO,CAAC,iBAAiB,CAAgB;IACzC,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;IAMrE,KAAK,IAAI,IAAI;IAkBb,IAAI,IAAI,IAAI;IAoBZ,eAAe,IAAI,MAAM,EAAE;IAI3B,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,GAAG,IAAI;IAInD,OAAO,CAAC,aAAa;IAkDrB,OAAO,CAAC,WAAW;IAsDnB,OAAO,CAAC,KAAK;CAmBd"}
|
|
@@ -14,6 +14,7 @@ const node_fs_1 = require("node:fs");
|
|
|
14
14
|
const node_path_1 = require("node:path");
|
|
15
15
|
const resolve_js_1 = require("../config/resolve.js");
|
|
16
16
|
const include_extensions_js_1 = require("../config/include-extensions.js");
|
|
17
|
+
const safe_fs_js_1 = require("../utils/safe-fs.js");
|
|
17
18
|
const logger_js_1 = require("../utils/logger.js");
|
|
18
19
|
const DEFAULT_DEBOUNCE_MS = 2000;
|
|
19
20
|
const WATCH_IGNORED_DIRS = new Set([
|
|
@@ -119,7 +120,7 @@ class GraphFileWatcher {
|
|
|
119
120
|
return;
|
|
120
121
|
}
|
|
121
122
|
try {
|
|
122
|
-
const entries = (0,
|
|
123
|
+
const entries = (0, safe_fs_js_1.safeReaddirSync)(dir);
|
|
123
124
|
for (const entry of entries) {
|
|
124
125
|
if (!entry.isDirectory() || entry.isSymbolicLink()) {
|
|
125
126
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-watcher.js","sourceRoot":"","sources":["../../src/graph/file-watcher.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAEH,
|
|
1
|
+
{"version":3,"file":"file-watcher.js","sourceRoot":"","sources":["../../src/graph/file-watcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { statSync, type Dirent } from "node:fs";
|
|
2
|
+
/** True for permission denied / missing path errors that should skip a directory, not abort indexing. */
|
|
3
|
+
export declare function isIgnorableFsError(error: unknown): boolean;
|
|
4
|
+
export declare function safeReaddirSync(dir: string): Dirent[];
|
|
5
|
+
export declare function safeStatSync(path: string): ReturnType<typeof statSync> | undefined;
|
|
6
|
+
//# sourceMappingURL=safe-fs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safe-fs.d.ts","sourceRoot":"","sources":["../../src/utils/safe-fs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,QAAQ,EAAE,KAAK,MAAM,EAAE,MAAM,SAAS,CAAC;AAI7D,yGAAyG;AACzG,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAM1D;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CASrD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,GAAG,SAAS,CASlF"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isIgnorableFsError = isIgnorableFsError;
|
|
4
|
+
exports.safeReaddirSync = safeReaddirSync;
|
|
5
|
+
exports.safeStatSync = safeStatSync;
|
|
6
|
+
const node_fs_1 = require("node:fs");
|
|
7
|
+
/** True for permission denied / missing path errors that should skip a directory, not abort indexing. */
|
|
8
|
+
function isIgnorableFsError(error) {
|
|
9
|
+
if (!error || typeof error !== "object") {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
const code = error.code;
|
|
13
|
+
return code === "EPERM" || code === "EACCES" || code === "ENOENT";
|
|
14
|
+
}
|
|
15
|
+
function safeReaddirSync(dir) {
|
|
16
|
+
try {
|
|
17
|
+
return (0, node_fs_1.readdirSync)(dir, { withFileTypes: true });
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
if (isIgnorableFsError(error)) {
|
|
21
|
+
return [];
|
|
22
|
+
}
|
|
23
|
+
throw error;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function safeStatSync(path) {
|
|
27
|
+
try {
|
|
28
|
+
return (0, node_fs_1.statSync)(path);
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
if (isIgnorableFsError(error)) {
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
throw error;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=safe-fs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safe-fs.js","sourceRoot":"","sources":["../../src/utils/safe-fs.ts"],"names":[],"mappings":";;AAKA,gDAMC;AAED,0CASC;AAED,oCASC;AAjCD,qCAA6D;AAI7D,yGAAyG;AACzG,SAAgB,kBAAkB,CAAC,KAAc;IAC/C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,IAAI,GAAI,KAAqB,CAAC,IAAI,CAAC;IACzC,OAAO,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,CAAC;AACpE,CAAC;AAED,SAAgB,eAAe,CAAC,GAAW;IACzC,IAAI,CAAC;QACH,OAAO,IAAA,qBAAW,EAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,YAAY,CAAC,IAAY;IACvC,IAAI,CAAC;QACH,OAAO,IAAA,kBAAQ,EAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|