@devflow-tools/sdk 0.14.4 → 0.15.0

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/index.d.ts CHANGED
@@ -6,6 +6,7 @@ export * from "./utils/token-counter.js";
6
6
  export * from "./utils/config.js";
7
7
  export * from "./utils/paths.js";
8
8
  export * from "./utils/logger.js";
9
+ export * from "./utils/project-scanner.js";
9
10
  export * from "./data/LocalDataProvider.js";
10
11
  export * from "./plugin-loader.js";
11
12
  export { DevFlowApiClient } from "./api-client.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -6,6 +6,7 @@ export * from "./utils/token-counter.js";
6
6
  export * from "./utils/config.js";
7
7
  export * from "./utils/paths.js";
8
8
  export * from "./utils/logger.js";
9
+ export * from "./utils/project-scanner.js";
9
10
  export * from "./data/LocalDataProvider.js";
10
11
  export * from "./plugin-loader.js";
11
12
  export { DevFlowApiClient } from "./api-client.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,20 @@
1
+ export interface ProjectScannerOptions {
2
+ root: string;
3
+ extensions?: string[];
4
+ ignore?: string[];
5
+ maxFiles?: number;
6
+ maxDepth?: number;
7
+ targetFile?: string;
8
+ targetComponent?: string;
9
+ stackTrace?: string;
10
+ errorMessage?: string;
11
+ }
12
+ export interface ProjectScannerResult {
13
+ files: string[];
14
+ truncated: boolean;
15
+ truncatedReason?: string;
16
+ stackTraceFiles?: string[];
17
+ errorKeywords?: string[];
18
+ }
19
+ export declare function scanProject(options: ProjectScannerOptions): ProjectScannerResult;
20
+ //# sourceMappingURL=project-scanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-scanner.d.ts","sourceRoot":"","sources":["../../src/utils/project-scanner.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AA8BD,wBAAgB,WAAW,CAAC,OAAO,EAAE,qBAAqB,GAAG,oBAAoB,CAwDhF"}
@@ -0,0 +1,300 @@
1
+ import { readdirSync, statSync } from 'node:fs';
2
+ import { join, extname, relative, basename } from 'node:path';
3
+ const DEFAULT_IGNORE = [
4
+ 'node_modules',
5
+ 'dist',
6
+ 'build',
7
+ '.git',
8
+ '.next',
9
+ 'coverage',
10
+ '.claude',
11
+ '.devflow',
12
+ '.turbo',
13
+ '.cache',
14
+ '.vite',
15
+ '.nuxt',
16
+ 'storybook-static',
17
+ '.output',
18
+ '.vercel',
19
+ ];
20
+ const TEST_PATTERNS = [
21
+ /[\\/]__tests__[\\/]/,
22
+ /\.test\.\w+$/,
23
+ /\.spec\.\w+$/,
24
+ /\.config\.\w+$/,
25
+ /\.d\.ts$/,
26
+ ];
27
+ const DEFAULT_EXTENSIONS = ['.tsx', '.ts', '.jsx', '.js', '.vue'];
28
+ export function scanProject(options) {
29
+ const { root, extensions = DEFAULT_EXTENSIONS, ignore: extraIgnore = [], maxFiles = 200, maxDepth = 12, targetFile, stackTrace, errorMessage, } = options;
30
+ const ignore = [...DEFAULT_IGNORE, ...extraIgnore];
31
+ const stackTraceFiles = stackTrace ? extractProjectFilesFromStack(stackTrace, root) : [];
32
+ const errorKeywords = errorMessage ? extractKeywords(errorMessage) : [];
33
+ // Priority: stackTrace files > targetFile > error keywords > full scan
34
+ let candidateFiles;
35
+ if (stackTraceFiles.length > 0) {
36
+ candidateFiles = collectFilesInDirs(root, stackTraceFiles, extensions, ignore, maxDepth);
37
+ }
38
+ else if (targetFile) {
39
+ const matched = matchTargetFile(root, targetFile, extensions, ignore, maxDepth);
40
+ candidateFiles = matched.length > 0 ? matched : [];
41
+ }
42
+ else if (errorKeywords.length > 0) {
43
+ candidateFiles = scanWithLimit(root, extensions, ignore, maxFiles, maxDepth, (filePath) => {
44
+ const rel = normalizePath(relative(root, filePath), root);
45
+ return errorKeywords.some((kw) => rel.toLowerCase().includes(kw.toLowerCase()));
46
+ });
47
+ }
48
+ else {
49
+ candidateFiles = scanWithLimit(root, extensions, ignore, maxFiles, maxDepth);
50
+ }
51
+ // Filter test/config/declaration files
52
+ const filtered = candidateFiles.filter((file) => {
53
+ const rel = normalizePath(relative(root, file), root);
54
+ return !TEST_PATTERNS.some((p) => p.test(file) || p.test(rel));
55
+ });
56
+ const truncated = candidateFiles.length >= maxFiles;
57
+ return {
58
+ files: filtered,
59
+ truncated,
60
+ truncatedReason: truncated ? `文件数量达到上限 ${maxFiles},扫描已截断` : undefined,
61
+ stackTraceFiles: stackTraceFiles.length > 0 ? stackTraceFiles : undefined,
62
+ errorKeywords: errorKeywords.length > 0 ? errorKeywords : undefined,
63
+ };
64
+ }
65
+ function matchTargetFile(root, targetFile, extensions, ignore, maxDepth) {
66
+ const normalized = normalizePath(targetFile, root);
67
+ // Try exact path match first
68
+ const fullPath = join(root, normalized);
69
+ try {
70
+ const stat = statSync(fullPath);
71
+ if (stat.isFile())
72
+ return [fullPath];
73
+ }
74
+ catch {
75
+ // File doesn't exist at exact path, fall through to fuzzy matching
76
+ }
77
+ // Try adding extensions
78
+ for (const ext of extensions) {
79
+ const withExt = fullPath + ext;
80
+ try {
81
+ const stat = statSync(withExt);
82
+ if (stat.isFile())
83
+ return [withExt];
84
+ }
85
+ catch {
86
+ // Continue
87
+ }
88
+ }
89
+ // Fuzzy match by scanning with base name filter
90
+ const targetBase = basename(normalized).toLowerCase();
91
+ const targetDir = normalized.replace(/\/+$/, '').toLowerCase();
92
+ const scored = [];
93
+ const baseExtensions = new Set(extensions);
94
+ function walk(dir, depth) {
95
+ if (depth > maxDepth)
96
+ return;
97
+ let entries;
98
+ try {
99
+ entries = readdirSync(dir);
100
+ }
101
+ catch {
102
+ return;
103
+ }
104
+ for (const entry of entries) {
105
+ if (ignore.includes(entry))
106
+ continue;
107
+ const full = join(dir, entry);
108
+ let s;
109
+ try {
110
+ s = statSync(full);
111
+ }
112
+ catch {
113
+ continue;
114
+ }
115
+ if (s.isDirectory()) {
116
+ walk(full, depth + 1);
117
+ }
118
+ else if (baseExtensions.has(extname(entry))) {
119
+ const rel = normalizePath(relative(root, full), root);
120
+ const relLower = rel.toLowerCase();
121
+ const fileBase = basename(relLower).replace(/\.[^.]+$/, '');
122
+ let score = 0;
123
+ if (relLower.replace(/\.[^.]+$/, '') === targetDir)
124
+ score += 5;
125
+ if (relLower.startsWith(targetDir + '/'))
126
+ score += 3;
127
+ if (fileBase === targetBase)
128
+ score += 2;
129
+ if (score > 0)
130
+ scored.push({ file: full, score });
131
+ }
132
+ }
133
+ }
134
+ walk(root, 0);
135
+ return scored
136
+ .sort((a, b) => b.score - a.score || a.file.localeCompare(b.file))
137
+ .map((item) => item.file)
138
+ .slice(0, 20);
139
+ }
140
+ function scanWithLimit(root, extensions, ignore, maxFiles, maxDepth, additionalFilter) {
141
+ const files = [];
142
+ const extSet = new Set(extensions);
143
+ function walk(dir, depth) {
144
+ if (depth > maxDepth || files.length >= maxFiles)
145
+ return;
146
+ let entries;
147
+ try {
148
+ entries = readdirSync(dir);
149
+ }
150
+ catch {
151
+ return;
152
+ }
153
+ for (const entry of entries) {
154
+ if (files.length >= maxFiles)
155
+ return;
156
+ if (ignore.includes(entry))
157
+ continue;
158
+ const fullPath = join(dir, entry);
159
+ let stat;
160
+ try {
161
+ stat = statSync(fullPath);
162
+ }
163
+ catch {
164
+ continue;
165
+ }
166
+ if (stat.isDirectory()) {
167
+ walk(fullPath, depth + 1);
168
+ }
169
+ else if (extSet.has(extname(entry))) {
170
+ if (!additionalFilter || additionalFilter(fullPath)) {
171
+ files.push(fullPath);
172
+ }
173
+ }
174
+ }
175
+ }
176
+ walk(root, 0);
177
+ return files.slice(0, maxFiles);
178
+ }
179
+ function collectFilesInDirs(root, filePaths, extensions, ignore, maxDepth) {
180
+ const extSet = new Set(extensions);
181
+ const collected = new Set();
182
+ // First add exact stack trace files if they exist
183
+ for (const fp of filePaths) {
184
+ const fullPath = join(root, fp);
185
+ try {
186
+ const s = statSync(fullPath);
187
+ if (s.isFile()) {
188
+ collected.add(fullPath);
189
+ }
190
+ }
191
+ catch {
192
+ // File doesn't exist
193
+ }
194
+ // Also try adding common extensions
195
+ for (const ext of extensions) {
196
+ try {
197
+ const withExt = fullPath + ext;
198
+ const s = statSync(withExt);
199
+ if (s.isFile()) {
200
+ collected.add(withExt);
201
+ }
202
+ }
203
+ catch {
204
+ // Continue
205
+ }
206
+ }
207
+ }
208
+ // Also collect files in the same directories as stack trace files
209
+ const dirs = new Set();
210
+ for (const fp of filePaths) {
211
+ const dir = join(root, fp);
212
+ const parent = dir.substring(0, dir.lastIndexOf('/'));
213
+ if (parent.startsWith(root)) {
214
+ dirs.add(parent);
215
+ }
216
+ }
217
+ for (const dir of dirs) {
218
+ if (collected.size >= 20)
219
+ break;
220
+ try {
221
+ const entries = readdirSync(dir);
222
+ for (const entry of entries) {
223
+ if (collected.size >= 20)
224
+ break;
225
+ if (ignore.includes(entry))
226
+ continue;
227
+ const fullPath = join(dir, entry);
228
+ try {
229
+ const s = statSync(fullPath);
230
+ if (s.isFile() && extSet.has(extname(entry))) {
231
+ collected.add(fullPath);
232
+ }
233
+ }
234
+ catch {
235
+ // Skip
236
+ }
237
+ }
238
+ }
239
+ catch {
240
+ // Directory doesn't exist
241
+ }
242
+ }
243
+ return Array.from(collected).slice(0, 20);
244
+ }
245
+ function extractProjectFilesFromStack(stackTrace, root) {
246
+ const lines = stackTrace.split('\n');
247
+ const files = [];
248
+ // Match patterns like:
249
+ // at ComponentName (src/components/Foo.tsx:42:15)
250
+ // at src/components/Foo.tsx:42:15
251
+ // (/Users/.../src/components/Foo.tsx:42)
252
+ const filePatterns = [
253
+ /\(([^(]+\.(?:tsx?|jsx?|vue)):\d+:\d+\)/g,
254
+ /at\s+(?:[^\s]+\s+)?\(?([^(]+\.(?:tsx?|jsx?|vue)):\d+:\d*\)?/g,
255
+ /([^\s(]+\.(?:tsx?|jsx?|vue)):\d+:\d+/g,
256
+ ];
257
+ for (const line of lines) {
258
+ for (const pattern of filePatterns) {
259
+ let match;
260
+ // Reset regex
261
+ pattern.lastIndex = 0;
262
+ while ((match = pattern.exec(line)) !== null) {
263
+ let filePath = match[1].trim();
264
+ // Remove webpack:// or other prefixes
265
+ filePath = filePath.replace(/^(webpack:\/\/|file:\/\/)/, '');
266
+ // Convert absolute path to relative if it contains root
267
+ if (filePath.startsWith(root)) {
268
+ filePath = relative(root, filePath);
269
+ }
270
+ // Only keep paths that look like project files (not node_modules)
271
+ if (!filePath.includes('node_modules') && !/^[a-zA-Z]:/.test(filePath)) {
272
+ files.push(filePath);
273
+ }
274
+ }
275
+ }
276
+ }
277
+ // Deduplicate and limit
278
+ return [...new Set(files)].slice(0, 10);
279
+ }
280
+ function extractKeywords(message) {
281
+ // Extract PascalCase component names
282
+ const pascalCase = message.match(/\b([A-Z][a-zA-Z0-9]*)\b/g) ?? [];
283
+ // Extract kebab-case and camelCase identifiers
284
+ const identifiers = message.match(/\b([a-z][a-zA-Z0-9]*(?:[.-][a-zA-Z0-9]+)*)\b/g) ?? [];
285
+ const keywords = [...pascalCase, ...identifiers]
286
+ .filter((kw) => kw.length >= 3)
287
+ .filter((kw) => !COMMON_WORDS.has(kw.toLowerCase()));
288
+ return [...new Set(keywords)].slice(0, 10);
289
+ }
290
+ const COMMON_WORDS = new Set([
291
+ 'the', 'and', 'for', 'not', 'you', 'but', 'was', 'are',
292
+ 'cannot', 'read', 'type', 'error', 'failed', 'undefined',
293
+ 'null', 'true', 'false', 'this', 'that', 'with', 'from',
294
+ 'have', 'been', 'will', 'would', 'could', 'should', 'can',
295
+ 'does', 'must', 'should',
296
+ ]);
297
+ function normalizePath(filePath, projectRoot) {
298
+ return filePath.replace(projectRoot, '').replace(/\\/g, '/').replace(/^\/+/, '').replace(/\/+$/, '');
299
+ }
300
+ //# sourceMappingURL=project-scanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-scanner.js","sourceRoot":"","sources":["../../src/utils/project-scanner.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devflow-tools/sdk",
3
- "version": "0.14.4",
3
+ "version": "0.15.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -34,5 +34,5 @@
34
34
  "files": [
35
35
  "dist"
36
36
  ],
37
- "gitHead": "54c8815398c8f60461caee19802afa3827ea3100"
37
+ "gitHead": "716b2355d8bea1138f4b7551758044c3663fad0e"
38
38
  }