bobs-workshop 0.2.6 → 0.3.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/Claude.md +19 -1
- package/dist/index.js +161 -5
- package/dist/index.js.map +1 -1
- package/dist/tools/searchTools.js +261 -117
- package/dist/tools/searchTools.js.map +1 -1
- package/dist/tools/semgrep-patterns.js +296 -0
- package/dist/tools/semgrep-patterns.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
// src/tools/semgrep-patterns.ts
|
|
2
|
+
import { spawn } from "child_process";
|
|
3
|
+
import fs from "fs-extra";
|
|
4
|
+
import path from "path";
|
|
5
|
+
/**
|
|
6
|
+
* Generates and executes multi-pattern semgrep searches
|
|
7
|
+
* Replaces the broken single-pattern approach with 7 core patterns
|
|
8
|
+
* covering function calls, definitions, classes, imports, and error handling
|
|
9
|
+
*/
|
|
10
|
+
export class SemgrepPatternGenerator {
|
|
11
|
+
/**
|
|
12
|
+
* Generate 7 core patterns for a given symbol/query
|
|
13
|
+
* Covers: calls, methods, definitions, classes, imports, assignments, error handling
|
|
14
|
+
*/
|
|
15
|
+
generateCorePatterns(symbol, language = 'auto') {
|
|
16
|
+
const patterns = [];
|
|
17
|
+
// Pattern 1: Function calls
|
|
18
|
+
patterns.push({
|
|
19
|
+
id: 'function-call',
|
|
20
|
+
patterns: [
|
|
21
|
+
`${symbol}(...)`,
|
|
22
|
+
`await ${symbol}(...)`
|
|
23
|
+
],
|
|
24
|
+
languages: this.getLanguages(language),
|
|
25
|
+
message: `Function call: ${symbol}`
|
|
26
|
+
});
|
|
27
|
+
// Pattern 2: Method calls
|
|
28
|
+
patterns.push({
|
|
29
|
+
id: 'method-call',
|
|
30
|
+
patterns: [`$OBJ.${symbol}(...)`],
|
|
31
|
+
languages: this.getLanguages(language),
|
|
32
|
+
message: `Method call: ${symbol}`
|
|
33
|
+
});
|
|
34
|
+
// Pattern 3: Function definitions (multi-language)
|
|
35
|
+
patterns.push({
|
|
36
|
+
id: 'function-def',
|
|
37
|
+
patterns: this.getFunctionDefPatterns(symbol, language),
|
|
38
|
+
languages: this.getLanguages(language),
|
|
39
|
+
message: `Function definition: ${symbol}`
|
|
40
|
+
});
|
|
41
|
+
// Pattern 4: Class patterns
|
|
42
|
+
patterns.push({
|
|
43
|
+
id: 'class-pattern',
|
|
44
|
+
patterns: [
|
|
45
|
+
`class ${symbol} { ... }`,
|
|
46
|
+
`class $X { ... ${symbol}(...) { ... } ... }`
|
|
47
|
+
],
|
|
48
|
+
languages: this.getLanguages(language),
|
|
49
|
+
message: `Class pattern: ${symbol}`
|
|
50
|
+
});
|
|
51
|
+
// Pattern 5: Imports (multi-language)
|
|
52
|
+
patterns.push({
|
|
53
|
+
id: 'imports',
|
|
54
|
+
patterns: this.getImportPatterns(symbol, language),
|
|
55
|
+
languages: this.getLanguages(language),
|
|
56
|
+
message: `Import statement: ${symbol}`
|
|
57
|
+
});
|
|
58
|
+
// Pattern 6: Variable assignment
|
|
59
|
+
patterns.push({
|
|
60
|
+
id: 'assignment',
|
|
61
|
+
patterns: [
|
|
62
|
+
`$VAR = ${symbol}`,
|
|
63
|
+
`const $VAR = ${symbol}`,
|
|
64
|
+
`return ${symbol}`
|
|
65
|
+
],
|
|
66
|
+
languages: this.getLanguages(language),
|
|
67
|
+
message: `Variable assignment: ${symbol}`
|
|
68
|
+
});
|
|
69
|
+
// Pattern 7: Error handling
|
|
70
|
+
patterns.push({
|
|
71
|
+
id: 'error-handling',
|
|
72
|
+
patterns: [
|
|
73
|
+
`try { ... ${symbol}(...) ... } catch ($E) { ... }`
|
|
74
|
+
],
|
|
75
|
+
languages: this.getLanguages(language),
|
|
76
|
+
message: `Error handling: ${symbol}`
|
|
77
|
+
});
|
|
78
|
+
return patterns;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Run all patterns in parallel (Promise.all)
|
|
82
|
+
* Returns aggregated results from all patterns
|
|
83
|
+
*/
|
|
84
|
+
async runPatterns(patterns, projectPath, timeoutMs = 4000) {
|
|
85
|
+
console.log(`[SEMGREP PATTERNS] Running ${patterns.length} patterns in parallel`);
|
|
86
|
+
// Run all patterns with individual timeouts
|
|
87
|
+
const results = await Promise.allSettled(patterns.map(pattern => this.runSinglePattern(pattern, projectPath, timeoutMs)));
|
|
88
|
+
// Collect successful results
|
|
89
|
+
const allResults = [];
|
|
90
|
+
let successCount = 0;
|
|
91
|
+
let failCount = 0;
|
|
92
|
+
results.forEach((result, index) => {
|
|
93
|
+
if (result.status === 'fulfilled') {
|
|
94
|
+
allResults.push(...result.value);
|
|
95
|
+
successCount++;
|
|
96
|
+
console.log(`[SEMGREP PATTERNS] Pattern ${patterns[index].id}: ${result.value.length} matches`);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
failCount++;
|
|
100
|
+
console.warn(`[SEMGREP PATTERNS] Pattern ${patterns[index].id} failed:`, result.reason?.message);
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
console.log(`[SEMGREP PATTERNS] Complete: ${successCount}/${patterns.length} patterns succeeded, ${allResults.length} total matches`);
|
|
104
|
+
return allResults;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Run a single semgrep pattern with timeout protection
|
|
108
|
+
*/
|
|
109
|
+
async runSinglePattern(pattern, projectPath, timeoutMs) {
|
|
110
|
+
return new Promise((resolve, reject) => {
|
|
111
|
+
const args = ['--json', '--quiet', '--metrics=off'];
|
|
112
|
+
// Add language filter
|
|
113
|
+
if (pattern.languages.length === 1 && pattern.languages[0] !== 'generic') {
|
|
114
|
+
args.push('--lang', pattern.languages[0]);
|
|
115
|
+
}
|
|
116
|
+
// Add patterns (use pattern-either for multiple)
|
|
117
|
+
if (pattern.patterns.length === 1) {
|
|
118
|
+
args.push('--pattern', pattern.patterns[0]);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
// For multiple patterns, we need to run them separately or use config
|
|
122
|
+
// For now, run first pattern (can enhance later)
|
|
123
|
+
args.push('--pattern', pattern.patterns[0]);
|
|
124
|
+
}
|
|
125
|
+
// Add target path
|
|
126
|
+
args.push(projectPath);
|
|
127
|
+
const child = spawn('semgrep', args, {
|
|
128
|
+
stdio: ['ignore', 'pipe', 'pipe']
|
|
129
|
+
});
|
|
130
|
+
let stdout = '';
|
|
131
|
+
let stderr = '';
|
|
132
|
+
let isResolved = false;
|
|
133
|
+
// Timeout handler
|
|
134
|
+
const timeoutId = setTimeout(() => {
|
|
135
|
+
if (!isResolved) {
|
|
136
|
+
isResolved = true;
|
|
137
|
+
child.kill('SIGTERM');
|
|
138
|
+
reject(new Error(`Pattern ${pattern.id} timed out after ${timeoutMs}ms`));
|
|
139
|
+
}
|
|
140
|
+
}, timeoutMs);
|
|
141
|
+
child.stdout?.on('data', (data) => {
|
|
142
|
+
stdout += data.toString();
|
|
143
|
+
});
|
|
144
|
+
child.stderr?.on('data', (data) => {
|
|
145
|
+
stderr += data.toString();
|
|
146
|
+
});
|
|
147
|
+
child.on('close', (code) => {
|
|
148
|
+
if (!isResolved) {
|
|
149
|
+
isResolved = true;
|
|
150
|
+
clearTimeout(timeoutId);
|
|
151
|
+
// Semgrep exit codes: 0 = no findings, 1 = error, 2 = findings
|
|
152
|
+
if (code === 0 || code === 2) {
|
|
153
|
+
try {
|
|
154
|
+
const results = this.parseSemgrepOutput(stdout, pattern);
|
|
155
|
+
resolve(results);
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
resolve([]); // Parse error - return empty
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
// Error code 1 or other - not findings
|
|
163
|
+
resolve([]);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
child.on('error', (err) => {
|
|
168
|
+
if (!isResolved) {
|
|
169
|
+
isResolved = true;
|
|
170
|
+
clearTimeout(timeoutId);
|
|
171
|
+
reject(err);
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Parse semgrep JSON output into normalized results
|
|
178
|
+
*/
|
|
179
|
+
parseSemgrepOutput(stdout, pattern) {
|
|
180
|
+
if (!stdout.trim()) {
|
|
181
|
+
return [];
|
|
182
|
+
}
|
|
183
|
+
const parsed = JSON.parse(stdout);
|
|
184
|
+
if (!parsed.results || !Array.isArray(parsed.results)) {
|
|
185
|
+
return [];
|
|
186
|
+
}
|
|
187
|
+
return parsed.results.map((result) => ({
|
|
188
|
+
file: result.path,
|
|
189
|
+
line: result.start?.line || 0,
|
|
190
|
+
ruleId: result.check_id || pattern.id,
|
|
191
|
+
message: result.extra?.message || pattern.message,
|
|
192
|
+
patternId: pattern.id
|
|
193
|
+
}));
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Detect project language from project files
|
|
197
|
+
*/
|
|
198
|
+
detectLanguageFromProject(projectPath = process.cwd()) {
|
|
199
|
+
// Check for package.json (JavaScript/TypeScript)
|
|
200
|
+
if (fs.existsSync(path.join(projectPath, 'package.json'))) {
|
|
201
|
+
return 'javascript';
|
|
202
|
+
}
|
|
203
|
+
// Check for requirements.txt or setup.py (Python)
|
|
204
|
+
if (fs.existsSync(path.join(projectPath, 'requirements.txt')) ||
|
|
205
|
+
fs.existsSync(path.join(projectPath, 'setup.py')) ||
|
|
206
|
+
fs.existsSync(path.join(projectPath, 'pyproject.toml'))) {
|
|
207
|
+
return 'python';
|
|
208
|
+
}
|
|
209
|
+
// Check for go.mod (Go)
|
|
210
|
+
if (fs.existsSync(path.join(projectPath, 'go.mod'))) {
|
|
211
|
+
return 'go';
|
|
212
|
+
}
|
|
213
|
+
// Check for pom.xml or build.gradle (Java)
|
|
214
|
+
if (fs.existsSync(path.join(projectPath, 'pom.xml')) ||
|
|
215
|
+
fs.existsSync(path.join(projectPath, 'build.gradle')) ||
|
|
216
|
+
fs.existsSync(path.join(projectPath, 'build.gradle.kts'))) {
|
|
217
|
+
return 'java';
|
|
218
|
+
}
|
|
219
|
+
// Check for Cargo.toml (Rust)
|
|
220
|
+
if (fs.existsSync(path.join(projectPath, 'Cargo.toml'))) {
|
|
221
|
+
return 'rust';
|
|
222
|
+
}
|
|
223
|
+
// Default: auto (all languages)
|
|
224
|
+
return 'auto';
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Get function definition patterns for different languages
|
|
228
|
+
*/
|
|
229
|
+
getFunctionDefPatterns(symbol, language) {
|
|
230
|
+
const patterns = [];
|
|
231
|
+
// JavaScript/TypeScript (always include)
|
|
232
|
+
patterns.push(`function ${symbol}(...) { ... }`);
|
|
233
|
+
patterns.push(`const ${symbol} = (...) => { ... }`);
|
|
234
|
+
patterns.push(`async function ${symbol}(...) { ... }`);
|
|
235
|
+
// Python
|
|
236
|
+
if (language === 'auto' || language === 'python') {
|
|
237
|
+
patterns.push(`def ${symbol}(...): ...`);
|
|
238
|
+
patterns.push(`async def ${symbol}(...): ...`);
|
|
239
|
+
}
|
|
240
|
+
// Go
|
|
241
|
+
if (language === 'auto' || language === 'go') {
|
|
242
|
+
patterns.push(`func ${symbol}(...) { ... }`);
|
|
243
|
+
}
|
|
244
|
+
// Java
|
|
245
|
+
if (language === 'auto' || language === 'java') {
|
|
246
|
+
patterns.push(`public $T ${symbol}(...) { ... }`);
|
|
247
|
+
patterns.push(`private $T ${symbol}(...) { ... }`);
|
|
248
|
+
}
|
|
249
|
+
return patterns;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Get import patterns for different languages
|
|
253
|
+
*/
|
|
254
|
+
getImportPatterns(symbol, language) {
|
|
255
|
+
const patterns = [];
|
|
256
|
+
// JavaScript/TypeScript
|
|
257
|
+
patterns.push(`import { ..., ${symbol}, ... } from "..."`);
|
|
258
|
+
patterns.push(`import ${symbol} from "..."`);
|
|
259
|
+
// Python
|
|
260
|
+
if (language === 'auto' || language === 'python') {
|
|
261
|
+
patterns.push(`from $MOD import ${symbol}`);
|
|
262
|
+
patterns.push(`import ${symbol}`);
|
|
263
|
+
}
|
|
264
|
+
// Go
|
|
265
|
+
if (language === 'auto' || language === 'go') {
|
|
266
|
+
patterns.push(`import "$MOD/${symbol}"`);
|
|
267
|
+
}
|
|
268
|
+
// Java
|
|
269
|
+
if (language === 'auto' || language === 'java') {
|
|
270
|
+
patterns.push(`import $PKG.${symbol}`);
|
|
271
|
+
}
|
|
272
|
+
return patterns;
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Get language list for semgrep
|
|
276
|
+
*/
|
|
277
|
+
getLanguages(language) {
|
|
278
|
+
if (language === 'auto') {
|
|
279
|
+
return ['javascript', 'typescript', 'python', 'go', 'java', 'generic'];
|
|
280
|
+
}
|
|
281
|
+
// Map friendly names to semgrep language names
|
|
282
|
+
const languageMap = {
|
|
283
|
+
'javascript': 'javascript',
|
|
284
|
+
'typescript': 'typescript',
|
|
285
|
+
'js': 'javascript',
|
|
286
|
+
'ts': 'typescript',
|
|
287
|
+
'python': 'python',
|
|
288
|
+
'py': 'python',
|
|
289
|
+
'go': 'go',
|
|
290
|
+
'java': 'java',
|
|
291
|
+
'rust': 'rust'
|
|
292
|
+
};
|
|
293
|
+
return [languageMap[language] || language];
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
//# sourceMappingURL=semgrep-patterns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semgrep-patterns.js","sourceRoot":"","sources":["../../src/tools/semgrep-patterns.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED