bobs-workshop 0.3.0 → 0.3.2
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 +30 -4
- package/README.md +2 -2
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/prompts/architect.js +6 -1
- package/dist/prompts/architect.js.map +1 -1
- package/dist/prompts/debugger.js +5 -0
- package/dist/prompts/debugger.js.map +1 -1
- package/dist/prompts/engineer.js +6 -1
- package/dist/prompts/engineer.js.map +1 -1
- package/dist/prompts/reviewer.js +6 -1
- package/dist/prompts/reviewer.js.map +1 -1
- package/dist/tools/searchTools.js +111 -18
- package/dist/tools/searchTools.js.map +1 -1
- package/dist/tools/structural/__tests__/orchestrator.test.js +61 -0
- package/dist/tools/structural/__tests__/orchestrator.test.js.map +1 -0
- package/dist/tools/structural/cache.js +226 -0
- package/dist/tools/structural/cache.js.map +1 -0
- package/dist/tools/structural/engines/python/index.js +118 -0
- package/dist/tools/structural/engines/python/index.js.map +1 -0
- package/dist/tools/structural/engines/typescript/__tests__/typescript-engine.test.js +97 -0
- package/dist/tools/structural/engines/typescript/__tests__/typescript-engine.test.js.map +1 -0
- package/dist/tools/structural/engines/typescript/analyzer.js +433 -0
- package/dist/tools/structural/engines/typescript/analyzer.js.map +1 -0
- package/dist/tools/structural/engines/typescript/index.js +381 -0
- package/dist/tools/structural/engines/typescript/index.js.map +1 -0
- package/dist/tools/structural/engines/typescript/utils.js +279 -0
- package/dist/tools/structural/engines/typescript/utils.js.map +1 -0
- package/dist/tools/structural/index.js +248 -0
- package/dist/tools/structural/index.js.map +1 -0
- package/dist/tools/structural/types.js +18 -0
- package/dist/tools/structural/types.js.map +1 -0
- package/package.json +7 -5
- package/public/.well-known/mcp/manifest.json +6 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../src/tools/structural/engines/typescript/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import * as fs from "fs";
|
|
2
|
+
import * as path from "path";
|
|
3
|
+
import { TypeScriptEngine } from "./engines/typescript/index.js";
|
|
4
|
+
import { ErrorCode, AnalysisError } from "./types.js";
|
|
5
|
+
/**
|
|
6
|
+
* Structural Search Orchestrator
|
|
7
|
+
*
|
|
8
|
+
* Coordinates AST-based structural searches across different languages.
|
|
9
|
+
* Routes queries to appropriate engines (TypeScript, Python, etc.)
|
|
10
|
+
*/
|
|
11
|
+
export class StructuralSearchOrchestrator {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.engines = new Map([
|
|
14
|
+
["typescript", new TypeScriptEngine()],
|
|
15
|
+
["javascript", new TypeScriptEngine()], // JS uses TS engine
|
|
16
|
+
["tsx", new TypeScriptEngine()],
|
|
17
|
+
["jsx", new TypeScriptEngine()],
|
|
18
|
+
// ["python", new PythonEngine()], // Disabled until Phase 2
|
|
19
|
+
]);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Main search method - analyzes query and routes to appropriate engine
|
|
23
|
+
*/
|
|
24
|
+
async search(query, options) {
|
|
25
|
+
const language = this.detectLanguage(options.scope || process.cwd());
|
|
26
|
+
const engine = this.selectEngine(language);
|
|
27
|
+
if (!engine) {
|
|
28
|
+
throw new AnalysisError({
|
|
29
|
+
code: ErrorCode.PARSE_ERROR,
|
|
30
|
+
message: `No structural search engine available for language: ${language}`,
|
|
31
|
+
details: {
|
|
32
|
+
suggestion: "Structural search currently supports TypeScript/JavaScript. Use lexical or semantic search for other languages."
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
const operation = this.parseOperation(query);
|
|
37
|
+
const scope = options.scope || process.cwd();
|
|
38
|
+
switch (operation.type) {
|
|
39
|
+
case "references":
|
|
40
|
+
if (!operation.symbol) {
|
|
41
|
+
throw new AnalysisError({
|
|
42
|
+
code: ErrorCode.INVALID_PATTERN,
|
|
43
|
+
message: "Symbol name is required for references search"
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
return engine.findReferences(operation.symbol, scope, options);
|
|
47
|
+
case "definition":
|
|
48
|
+
if (!operation.symbol) {
|
|
49
|
+
throw new AnalysisError({
|
|
50
|
+
code: ErrorCode.INVALID_PATTERN,
|
|
51
|
+
message: "Symbol name is required for definition search"
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
const def = await engine.findDefinition(operation.symbol, scope, options);
|
|
55
|
+
return def ? [def] : [];
|
|
56
|
+
case "dependencies":
|
|
57
|
+
// If a target file is specified in the query, resolve it relative to scope
|
|
58
|
+
const targetPath = operation.target
|
|
59
|
+
? (path.isAbsolute(operation.target) ? operation.target : path.join(scope, operation.target))
|
|
60
|
+
: scope;
|
|
61
|
+
return engine.getDependencies(targetPath, options);
|
|
62
|
+
case "architectural-issues":
|
|
63
|
+
// Architect-specific: find architectural problems
|
|
64
|
+
if (language === "typescript" || language === "javascript") {
|
|
65
|
+
const tsEngine = engine;
|
|
66
|
+
const issues = await tsEngine.findArchitecturalIssues(scope);
|
|
67
|
+
return issues.map(issue => ({
|
|
68
|
+
file: issue.location.file,
|
|
69
|
+
line: issue.location.position.line,
|
|
70
|
+
symbol: issue.type,
|
|
71
|
+
kind: "variable",
|
|
72
|
+
context: `${issue.severity.toUpperCase()}: ${issue.message}`,
|
|
73
|
+
relevance: issue.severity === "error" ? 1.0 : issue.severity === "warning" ? 0.7 : 0.5
|
|
74
|
+
}));
|
|
75
|
+
}
|
|
76
|
+
return [];
|
|
77
|
+
case "call-graph":
|
|
78
|
+
// Debugger-specific: show call relationships
|
|
79
|
+
if (!operation.symbol) {
|
|
80
|
+
throw new AnalysisError({
|
|
81
|
+
code: ErrorCode.INVALID_PATTERN,
|
|
82
|
+
message: "Symbol name is required for call graph analysis"
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
// For now, use references as a proxy for call graph
|
|
86
|
+
return engine.findReferences(operation.symbol, scope, options);
|
|
87
|
+
case "unused-exports":
|
|
88
|
+
// Engineer-specific: find unused exports
|
|
89
|
+
if (language === "typescript" || language === "javascript") {
|
|
90
|
+
const tsEngine = engine;
|
|
91
|
+
const unused = await tsEngine.findUnusedExports(scope);
|
|
92
|
+
return unused.map(item => ({
|
|
93
|
+
file: item.location.file,
|
|
94
|
+
line: item.location.position.line,
|
|
95
|
+
symbol: item.name,
|
|
96
|
+
kind: item.kind,
|
|
97
|
+
context: `Unused export from ${item.exportedFrom}`,
|
|
98
|
+
relevance: 0.8
|
|
99
|
+
}));
|
|
100
|
+
}
|
|
101
|
+
return [];
|
|
102
|
+
default:
|
|
103
|
+
throw new AnalysisError({
|
|
104
|
+
code: ErrorCode.INVALID_PATTERN,
|
|
105
|
+
message: `Unsupported operation type: ${operation.type}`
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Detect programming language from project structure
|
|
111
|
+
*/
|
|
112
|
+
detectLanguage(projectPath) {
|
|
113
|
+
// Check if path looks like a file (has extension), even if it doesn't exist
|
|
114
|
+
const ext = path.extname(projectPath).substring(1);
|
|
115
|
+
if (ext) {
|
|
116
|
+
// Normalize extensions to language names
|
|
117
|
+
if (ext === 'ts' || ext === 'tsx')
|
|
118
|
+
return 'typescript';
|
|
119
|
+
if (ext === 'js' || ext === 'jsx')
|
|
120
|
+
return 'javascript';
|
|
121
|
+
if (ext === 'py')
|
|
122
|
+
return 'python';
|
|
123
|
+
return ext || "typescript";
|
|
124
|
+
}
|
|
125
|
+
// If it's an existing file, use its extension
|
|
126
|
+
if (fs.existsSync(projectPath) && fs.statSync(projectPath).isFile()) {
|
|
127
|
+
return "typescript"; // Default for files without extension
|
|
128
|
+
}
|
|
129
|
+
// Check for project indicators
|
|
130
|
+
const indicators = [
|
|
131
|
+
{ file: "tsconfig.json", language: "typescript" },
|
|
132
|
+
{ file: "package.json", language: "typescript" }, // Assume TypeScript for Node projects
|
|
133
|
+
{ file: "requirements.txt", language: "python" },
|
|
134
|
+
{ file: "setup.py", language: "python" },
|
|
135
|
+
{ file: "pyproject.toml", language: "python" },
|
|
136
|
+
];
|
|
137
|
+
for (const { file, language } of indicators) {
|
|
138
|
+
if (fs.existsSync(path.join(projectPath, file))) {
|
|
139
|
+
return language;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// Default to TypeScript
|
|
143
|
+
return "typescript";
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Select appropriate engine for language
|
|
147
|
+
*/
|
|
148
|
+
selectEngine(language) {
|
|
149
|
+
return this.engines.get(language);
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Parse natural language query to extract operation intent
|
|
153
|
+
*
|
|
154
|
+
* Supported patterns (from spec):
|
|
155
|
+
* - US-1: "find references to UserService"
|
|
156
|
+
* - US-1: "show all usages of calculatePrice"
|
|
157
|
+
* - US-2: "go to definition of AuthToken"
|
|
158
|
+
* - US-2: "where is validateInput defined"
|
|
159
|
+
* - US-3: "show dependencies for user.ts"
|
|
160
|
+
* - US-3: "what does api/auth.ts import"
|
|
161
|
+
*/
|
|
162
|
+
parseOperation(query) {
|
|
163
|
+
const normalized = query.toLowerCase().trim();
|
|
164
|
+
const original = query.trim(); // Preserve original casing for symbol names
|
|
165
|
+
// Pattern 1: References
|
|
166
|
+
if (normalized.match(/find references (to|for|of)\s+(\w+)/) ||
|
|
167
|
+
normalized.match(/show (all )?usages? (of|for)\s+(\w+)/) ||
|
|
168
|
+
normalized.match(/where is (\w+) used/) ||
|
|
169
|
+
normalized.match(/who uses (\w+)/)) {
|
|
170
|
+
// Extract symbol from original query to preserve casing
|
|
171
|
+
const symbolMatch = original.match(/(?:to|for|of|used|uses)\s+(\w+)/) ||
|
|
172
|
+
original.match(/where is (\w+)/);
|
|
173
|
+
const symbol = symbolMatch ? symbolMatch[1] : undefined;
|
|
174
|
+
return {
|
|
175
|
+
type: "references",
|
|
176
|
+
symbol
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
// Pattern 2: Definition
|
|
180
|
+
if (normalized.match(/go to definition (of|for)\s+(\w+)/) ||
|
|
181
|
+
normalized.match(/where is (\w+) defined/) ||
|
|
182
|
+
normalized.match(/find definition (of|for)\s+(\w+)/) ||
|
|
183
|
+
normalized.match(/show (\w+) definition/)) {
|
|
184
|
+
// Extract symbol from original query to preserve casing
|
|
185
|
+
const symbolMatch = original.match(/(?:of|for|is)\s+(\w+)(?:\s+defined)?/) ||
|
|
186
|
+
original.match(/show (\w+)/);
|
|
187
|
+
const symbol = symbolMatch ? symbolMatch[1] : undefined;
|
|
188
|
+
return {
|
|
189
|
+
type: "definition",
|
|
190
|
+
symbol
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
// Pattern 3: Dependencies
|
|
194
|
+
if (normalized.match(/show dependencies (for|of)\s+(.+)/) ||
|
|
195
|
+
normalized.match(/what does (.+) import/) ||
|
|
196
|
+
normalized.match(/list imports (in|for)\s+(.+)/) ||
|
|
197
|
+
normalized.match(/dependencies (of|for)\s+(.+)/)) {
|
|
198
|
+
// Extract from original query to preserve casing
|
|
199
|
+
const targetMatch = original.match(/(?:for|of)\s+(.+)$/) ||
|
|
200
|
+
original.match(/what does (.+) import/) ||
|
|
201
|
+
original.match(/(?:in|for)\s+(.+)$/);
|
|
202
|
+
const target = targetMatch ? targetMatch[1].trim() : undefined;
|
|
203
|
+
return {
|
|
204
|
+
type: "dependencies",
|
|
205
|
+
target
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
// Pattern 4: Call graph
|
|
209
|
+
if (normalized.match(/call graph (for|of)\s+(\w+)/) ||
|
|
210
|
+
normalized.match(/what calls (\w+)/) ||
|
|
211
|
+
normalized.match(/show callers (of|for)\s+(\w+)/)) {
|
|
212
|
+
// Extract symbol from original query to preserve casing
|
|
213
|
+
const symbolMatch = original.match(/(?:for|of|calls)\s+(\w+)/) ||
|
|
214
|
+
original.match(/what calls (\w+)/);
|
|
215
|
+
const symbol = symbolMatch ? symbolMatch[1] : undefined;
|
|
216
|
+
return {
|
|
217
|
+
type: "call-graph",
|
|
218
|
+
symbol
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
// Pattern 5: Architectural issues
|
|
222
|
+
if (normalized.match(/find (circular|architectural) (dependencies|issues)/) ||
|
|
223
|
+
normalized.match(/check architecture/) ||
|
|
224
|
+
normalized.match(/analyze (architecture|structure)/) ||
|
|
225
|
+
normalized.match(/circular dependencies/)) {
|
|
226
|
+
return {
|
|
227
|
+
type: "architectural-issues"
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
// Pattern 6: Unused exports
|
|
231
|
+
if (normalized.match(/find unused exports/) ||
|
|
232
|
+
normalized.match(/show unused exports/) ||
|
|
233
|
+
normalized.match(/list unused exports/) ||
|
|
234
|
+
normalized.match(/unused (code|exports)/)) {
|
|
235
|
+
return {
|
|
236
|
+
type: "unused-exports"
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
// Default: Try to extract symbol name and assume references search
|
|
240
|
+
const words = original.split(/\s+/); // Use original to detect CamelCase
|
|
241
|
+
const potentialSymbol = words.find(w => /^[A-Z][a-zA-Z0-9]*$/.test(w)); // CamelCase
|
|
242
|
+
return {
|
|
243
|
+
type: "references",
|
|
244
|
+
symbol: potentialSymbol
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/structural/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export var ErrorCode;
|
|
2
|
+
(function (ErrorCode) {
|
|
3
|
+
ErrorCode["FILE_NOT_FOUND"] = "FILE_NOT_FOUND";
|
|
4
|
+
ErrorCode["PARSE_ERROR"] = "PARSE_ERROR";
|
|
5
|
+
ErrorCode["TIMEOUT"] = "TIMEOUT";
|
|
6
|
+
ErrorCode["MEMORY_LIMIT"] = "MEMORY_LIMIT";
|
|
7
|
+
ErrorCode["INVALID_PATTERN"] = "INVALID_PATTERN";
|
|
8
|
+
ErrorCode["SCOPE_ERROR"] = "SCOPE_ERROR";
|
|
9
|
+
})(ErrorCode || (ErrorCode = {}));
|
|
10
|
+
export class AnalysisError extends Error {
|
|
11
|
+
constructor(data) {
|
|
12
|
+
super(data.message);
|
|
13
|
+
this.code = data.code;
|
|
14
|
+
this.details = data.details;
|
|
15
|
+
this.name = "AnalysisError";
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/tools/structural/types.ts"],"names":[],"mappings":"AAwHA,MAAM,CAAN,IAAY,SAOX;AAPD,WAAY,SAAS;IACnB,8CAAiC,CAAA;IACjC,wCAA2B,CAAA;IAC3B,gCAAmB,CAAA;IACnB,0CAA6B,CAAA;IAC7B,gDAAmC,CAAA;IACnC,wCAA2B,CAAA;AAC7B,CAAC,EAPW,SAAS,KAAT,SAAS,QAOpB;AAUD,MAAM,OAAO,aAAc,SAAQ,KAAK;IAYtC,YAAY,IAYX;QACC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bobs-workshop",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"description": "Bob's Workshop — agentic development helper with observability, guard rails, research, and review capabilities",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -26,15 +26,17 @@
|
|
|
26
26
|
"chokidar": "^4.0.3",
|
|
27
27
|
"express": "^4.x",
|
|
28
28
|
"fs-extra": "^11.x",
|
|
29
|
+
"glob": "^10.3.10",
|
|
30
|
+
"lru-cache": "^10.1.0",
|
|
31
|
+
"minimatch": "^9.0.3",
|
|
29
32
|
"multer": "^2.0.2",
|
|
30
33
|
"simple-git": "^3.x",
|
|
34
|
+
"ts-morph": "^23.0.0",
|
|
31
35
|
"uuid": "^9.x",
|
|
32
|
-
"zod": "^3.x"
|
|
33
|
-
},
|
|
34
|
-
"optionalDependencies": {
|
|
36
|
+
"zod": "^3.x",
|
|
35
37
|
"@lvce-editor/ripgrep": "^2.4.0"
|
|
36
38
|
},
|
|
37
|
-
|
|
39
|
+
"devDependencies": {
|
|
38
40
|
"@types/chokidar": "^1.7.5",
|
|
39
41
|
"@types/express": "^5.0.3",
|
|
40
42
|
"@types/fs-extra": "^11.0.4",
|
|
@@ -173,14 +173,14 @@
|
|
|
173
173
|
"mcp__bobs-workshop__bob_code_search": {
|
|
174
174
|
"title": "Code Search",
|
|
175
175
|
"category": "search",
|
|
176
|
-
"description": "Phase-aware
|
|
177
|
-
"enhancements": ["mode_banner", "smart_query_routing", "summary_output", "phase_aware_analysis"],
|
|
176
|
+
"description": "Phase-aware hybrid search combining semantic (semgrep), lexical (ripgrep), and structural (AST-based) search. Automatically selects best mode based on query and phase context. Structural mode provides symbol references, definitions, and dependency analysis for TypeScript/JavaScript.",
|
|
177
|
+
"enhancements": ["mode_banner", "smart_query_routing", "summary_output", "phase_aware_analysis", "structural_ast_analysis"],
|
|
178
178
|
"permissions": { "file_read": true },
|
|
179
179
|
"rate_limits": { "rps": 6, "burst": 12 },
|
|
180
180
|
"timeouts": { "ms": 6000 },
|
|
181
181
|
"input_schema": {
|
|
182
|
-
"query": "string (REQUIRED) - search query or
|
|
183
|
-
"mode": "enum(auto,semantic,lexical)? - auto selects best mode based on query",
|
|
182
|
+
"query": "string (REQUIRED) - search query, pattern, or structural query (e.g., 'find references to UserService', 'show dependencies for api.ts')",
|
|
183
|
+
"mode": "enum(auto,semantic,lexical,structural)? - auto selects best mode based on query (structural for symbol/dependency queries)",
|
|
184
184
|
"phase": "enum(architect,engineer,debugger,reviewer)? - role context for specialized analysis rules",
|
|
185
185
|
"path": "string? - directory to search within (defaults to current directory)",
|
|
186
186
|
"includeHidden": "boolean? - include hidden files/folders",
|
|
@@ -198,7 +198,8 @@
|
|
|
198
198
|
},
|
|
199
199
|
"usage_guidelines": [
|
|
200
200
|
"Use phase parameter to get specialized analysis relevant to your role",
|
|
201
|
-
"mode=auto (default) automatically
|
|
201
|
+
"mode=auto (default) automatically routes to structural, semantic, or lexical based on query type",
|
|
202
|
+
"Structural mode: AST-based analysis for 'find references to X', 'show dependencies', 'go to definition' (TypeScript/JavaScript only)",
|
|
202
203
|
"Semantic mode: Best for finding patterns, similar code structures, or architectural analysis",
|
|
203
204
|
"Lexical mode: Best for exact matches, symbol lookups, or simple string searches",
|
|
204
205
|
"Combine with path parameter to scope searches to specific directories",
|