bob-app-assistant 0.0.1

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.
Files changed (67) hide show
  1. package/README.md +292 -0
  2. package/dist/cli.d.ts +3 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +296 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/database.d.ts +42 -0
  7. package/dist/database.d.ts.map +1 -0
  8. package/dist/database.js +199 -0
  9. package/dist/database.js.map +1 -0
  10. package/dist/postinstall.d.ts +3 -0
  11. package/dist/postinstall.d.ts.map +1 -0
  12. package/dist/postinstall.js +48 -0
  13. package/dist/postinstall.js.map +1 -0
  14. package/dist/routes/aiRoutes.d.ts +3 -0
  15. package/dist/routes/aiRoutes.d.ts.map +1 -0
  16. package/dist/routes/aiRoutes.js +1277 -0
  17. package/dist/routes/aiRoutes.js.map +1 -0
  18. package/dist/server.d.ts +3 -0
  19. package/dist/server.d.ts.map +1 -0
  20. package/dist/server.js +120 -0
  21. package/dist/server.js.map +1 -0
  22. package/dist/services/apiTestingService.d.ts +90 -0
  23. package/dist/services/apiTestingService.d.ts.map +1 -0
  24. package/dist/services/apiTestingService.js +351 -0
  25. package/dist/services/apiTestingService.js.map +1 -0
  26. package/dist/services/backupService.d.ts +63 -0
  27. package/dist/services/backupService.d.ts.map +1 -0
  28. package/dist/services/backupService.js +235 -0
  29. package/dist/services/backupService.js.map +1 -0
  30. package/dist/services/bobShellService.d.ts +91 -0
  31. package/dist/services/bobShellService.d.ts.map +1 -0
  32. package/dist/services/bobShellService.js +534 -0
  33. package/dist/services/bobShellService.js.map +1 -0
  34. package/dist/services/codeQualityService.d.ts +105 -0
  35. package/dist/services/codeQualityService.d.ts.map +1 -0
  36. package/dist/services/codeQualityService.js +432 -0
  37. package/dist/services/codeQualityService.js.map +1 -0
  38. package/dist/services/dependencyService.d.ts +127 -0
  39. package/dist/services/dependencyService.d.ts.map +1 -0
  40. package/dist/services/dependencyService.js +499 -0
  41. package/dist/services/dependencyService.js.map +1 -0
  42. package/dist/services/diffService.d.ts +48 -0
  43. package/dist/services/diffService.d.ts.map +1 -0
  44. package/dist/services/diffService.js +175 -0
  45. package/dist/services/diffService.js.map +1 -0
  46. package/dist/services/documentationService.d.ts +124 -0
  47. package/dist/services/documentationService.d.ts.map +1 -0
  48. package/dist/services/documentationService.js +628 -0
  49. package/dist/services/documentationService.js.map +1 -0
  50. package/dist/services/promptEnhancerService.d.ts +92 -0
  51. package/dist/services/promptEnhancerService.d.ts.map +1 -0
  52. package/dist/services/promptEnhancerService.js +459 -0
  53. package/dist/services/promptEnhancerService.js.map +1 -0
  54. package/dist/services/securityService.d.ts +99 -0
  55. package/dist/services/securityService.d.ts.map +1 -0
  56. package/dist/services/securityService.js +467 -0
  57. package/dist/services/securityService.js.map +1 -0
  58. package/dist/websocket.d.ts +17 -0
  59. package/dist/websocket.d.ts.map +1 -0
  60. package/dist/websocket.js +242 -0
  61. package/dist/websocket.js.map +1 -0
  62. package/package.json +74 -0
  63. package/public/assistant-ui.html +211 -0
  64. package/public/dist/assets/index-BdGvFYpE.css +1 -0
  65. package/public/dist/assets/index-Dfe7xGmm.js +55 -0
  66. package/public/dist/index.html +13 -0
  67. package/public/inject.js +241 -0
@@ -0,0 +1,534 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.bobShellService = exports.BobShellService = void 0;
7
+ const child_process_1 = require("child_process");
8
+ const util_1 = require("util");
9
+ const path_1 = __importDefault(require("path"));
10
+ const promises_1 = __importDefault(require("fs/promises"));
11
+ const execAsync = (0, util_1.promisify)(child_process_1.exec);
12
+ class BobShellService {
13
+ constructor() {
14
+ this.previewCache = new Map();
15
+ this.bobShellPath = process.env.BOB_SHELL_PATH || 'bob';
16
+ // Use PROJECT_ROOT from environment (set by CLI) or fall back to process.cwd()
17
+ this.projectRoot = process.env.PROJECT_ROOT || process.cwd();
18
+ this.apiKey = process.env.BOB_API_KEY;
19
+ this.licenseAccepted = process.env.BOB_LICENSE_ACCEPTED === 'true';
20
+ console.log(`📁 Bob-Shell will operate in: ${this.projectRoot}`);
21
+ }
22
+ /**
23
+ * Build Bob-Shell command with API key and license acceptance
24
+ * SECURITY: Uses array-based command construction to prevent command injection
25
+ */
26
+ buildBobCommand(prompt) {
27
+ const args = [this.bobShellPath];
28
+ // Add license acceptance flag if configured
29
+ if (this.licenseAccepted) {
30
+ args.push('--accept-license');
31
+ }
32
+ // Add approval mode to auto-approve file edits
33
+ // This allows Bob-Shell to actually write files without interactive prompts
34
+ args.push('--approval-mode', 'auto_edit');
35
+ // Add prompt as separate argument (no shell escaping needed)
36
+ // SECURITY: Passing as array element prevents command injection
37
+ args.push('-p', prompt);
38
+ return args;
39
+ }
40
+ /**
41
+ * Build environment variables for Bob-Shell execution
42
+ */
43
+ buildEnvironment() {
44
+ const env = { ...process.env };
45
+ // Add API key to environment if configured
46
+ if (this.apiKey) {
47
+ env.BOB_API_KEY = this.apiKey;
48
+ }
49
+ return env;
50
+ }
51
+ /**
52
+ * Get list of tracked files that might be modified
53
+ */
54
+ async getTrackedFiles() {
55
+ try {
56
+ const { stdout } = await execAsync('git ls-files', {
57
+ cwd: this.projectRoot,
58
+ });
59
+ return stdout.trim().split('\n').filter(f => f.length > 0);
60
+ }
61
+ catch (error) {
62
+ console.warn('Could not get tracked files:', error);
63
+ return [];
64
+ }
65
+ }
66
+ /**
67
+ * Execute a Bob-Shell command with a prompt
68
+ * SECURITY: Uses spawn instead of exec to prevent command injection
69
+ */
70
+ async executePrompt(prompt) {
71
+ try {
72
+ // SECURITY: Validate prompt length to prevent DoS
73
+ if (prompt.length > 10000) {
74
+ throw new Error('Prompt exceeds maximum length of 10000 characters');
75
+ }
76
+ // SECURITY: Sanitize prompt - remove null bytes and control characters
77
+ const sanitizedPrompt = prompt.replace(/[\x00-\x08\x0B-\x0C\x0E-\x1F\x7F]/g, '');
78
+ console.log('🤖 Executing Bob-Shell with sanitized prompt');
79
+ // Build command and environment
80
+ const args = this.buildBobCommand(sanitizedPrompt);
81
+ const env = this.buildEnvironment();
82
+ // SECURITY: Use spawn with array arguments instead of shell string
83
+ const { spawn } = require('child_process');
84
+ const [command, ...commandArgs] = args;
85
+ return new Promise((resolve, reject) => {
86
+ const process = spawn(command, commandArgs, {
87
+ cwd: this.projectRoot,
88
+ env,
89
+ shell: false, // SECURITY: Disable shell to prevent injection
90
+ timeout: 300000, // 5 minutes timeout
91
+ });
92
+ let stdout = '';
93
+ let stderr = '';
94
+ process.stdout.on('data', (data) => {
95
+ stdout += data.toString();
96
+ });
97
+ process.stderr.on('data', (data) => {
98
+ stderr += data.toString();
99
+ });
100
+ process.on('close', (code) => {
101
+ if (code === 0) {
102
+ console.log('✅ Bob-Shell execution completed');
103
+ // Parse the output to detect file changes
104
+ const filesModified = this.parseModifiedFiles(stdout);
105
+ resolve({
106
+ success: true,
107
+ output: stdout,
108
+ filesModified,
109
+ });
110
+ }
111
+ else if (code === null) {
112
+ console.error('❌ Bob-Shell execution timed out or was killed');
113
+ resolve({
114
+ success: false,
115
+ output: stdout,
116
+ error: 'Bob-Shell execution timed out after 5 minutes. Try a simpler prompt or use native mode.',
117
+ filesModified: [],
118
+ });
119
+ }
120
+ else {
121
+ console.error('❌ Bob-Shell execution failed with code:', code);
122
+ resolve({
123
+ success: false,
124
+ output: stdout,
125
+ error: stderr || `Process exited with code ${code}`,
126
+ filesModified: [],
127
+ });
128
+ }
129
+ });
130
+ process.on('error', (error) => {
131
+ console.error('❌ Bob-Shell execution error:', error.message);
132
+ reject({
133
+ success: false,
134
+ output: stdout,
135
+ error: 'Failed to execute Bob-Shell',
136
+ filesModified: [],
137
+ });
138
+ });
139
+ });
140
+ }
141
+ catch (error) {
142
+ console.error('❌ Bob-Shell execution failed:', error.message);
143
+ return {
144
+ success: false,
145
+ output: '',
146
+ error: 'Failed to execute Bob-Shell',
147
+ filesModified: [],
148
+ };
149
+ }
150
+ }
151
+ /**
152
+ * Parse Bob-Shell output to detect modified files
153
+ */
154
+ parseModifiedFiles(output) {
155
+ const files = [];
156
+ // Look for tool usage patterns in Bob-Shell output
157
+ // Bob-Shell shows file paths in tool usage like: [using tool apply_diff: applying diff to /full/path/to/file.tsx]
158
+ const toolPattern = /applying diff to ([^\s]+)/gi;
159
+ const matches = output.matchAll(toolPattern);
160
+ for (const match of matches) {
161
+ if (match[1]) {
162
+ let filePath = match[1].trim();
163
+ // Remove trailing bracket if present
164
+ filePath = filePath.replace(/\]$/, '');
165
+ // Convert absolute path to relative path
166
+ if (filePath.startsWith(this.projectRoot)) {
167
+ filePath = filePath.substring(this.projectRoot.length + 1);
168
+ }
169
+ // Only add if it's a valid file path (not containing ...)
170
+ if (!filePath.includes('...') && filePath.length > 0) {
171
+ files.push(filePath);
172
+ }
173
+ }
174
+ }
175
+ return [...new Set(files)]; // Remove duplicates
176
+ }
177
+ /**
178
+ * Get the project root directory
179
+ */
180
+ getProjectRoot() {
181
+ return this.projectRoot;
182
+ }
183
+ /**
184
+ * Read file content
185
+ */
186
+ async readFile(filePath) {
187
+ const fullPath = path_1.default.resolve(this.projectRoot, filePath);
188
+ return await promises_1.default.readFile(fullPath, 'utf-8');
189
+ }
190
+ /**
191
+ * Write file content
192
+ */
193
+ async writeFile(filePath, content) {
194
+ const fullPath = path_1.default.resolve(this.projectRoot, filePath);
195
+ // Ensure directory exists
196
+ const dir = path_1.default.dirname(fullPath);
197
+ await promises_1.default.mkdir(dir, { recursive: true });
198
+ await promises_1.default.writeFile(fullPath, content, 'utf-8');
199
+ }
200
+ /**
201
+ * Check if file exists
202
+ */
203
+ async fileExists(filePath) {
204
+ try {
205
+ const fullPath = path_1.default.resolve(this.projectRoot, filePath);
206
+ await promises_1.default.access(fullPath);
207
+ return true;
208
+ }
209
+ catch {
210
+ return false;
211
+ }
212
+ }
213
+ /**
214
+ * Preview changes from a Bob-Shell prompt by actually applying them,
215
+ * then generating a git diff. Changes can be reverted if user rejects.
216
+ * Uses `bob --yolo` to auto-approve changes, then git diff to show them.
217
+ */
218
+ async previewPrompt(prompt) {
219
+ try {
220
+ // SECURITY: Validate prompt length
221
+ if (prompt.length > 10000) {
222
+ throw new Error('Prompt exceeds maximum length of 10000 characters');
223
+ }
224
+ // SECURITY: Sanitize prompt
225
+ const sanitizedPrompt = prompt.replace(/[\x00-\x08\x0B-\x0C\x0E-\x1F\x7F]/g, '');
226
+ console.log('👁️ Previewing Bob-Shell prompt (applying changes with --yolo)');
227
+ // Build command with --yolo to auto-approve changes
228
+ const args = [this.bobShellPath];
229
+ if (this.licenseAccepted) {
230
+ args.push('--accept-license');
231
+ }
232
+ // Use --yolo to auto-approve all changes
233
+ args.push('--yolo', '-p', sanitizedPrompt);
234
+ const env = this.buildEnvironment();
235
+ const { spawn } = require('child_process');
236
+ const [command, ...commandArgs] = args;
237
+ return new Promise((resolve) => {
238
+ const process = spawn(command, commandArgs, {
239
+ cwd: this.projectRoot,
240
+ env,
241
+ shell: false,
242
+ timeout: 300000, // 5 minutes
243
+ });
244
+ let stdout = '';
245
+ let stderr = '';
246
+ process.stdout.on('data', (data) => {
247
+ stdout += data.toString();
248
+ });
249
+ process.stderr.on('data', (data) => {
250
+ stderr += data.toString();
251
+ });
252
+ process.on('close', async (code) => {
253
+ if (code === 0) {
254
+ console.log('✅ Bob-Shell preview completed');
255
+ // Parse modified files from output
256
+ const filesModified = this.parseModifiedFiles(stdout);
257
+ // Generate git-style diffs for modified files ONLY
258
+ let gitDiff = '';
259
+ if (filesModified.length > 0) {
260
+ try {
261
+ gitDiff = await this.generateGitDiffs(filesModified);
262
+ console.log(`📊 Generated git diff for ${filesModified.length} file(s)`);
263
+ }
264
+ catch (error) {
265
+ console.error('Failed to generate git diffs:', error);
266
+ gitDiff = 'Error: Could not generate git diff. Files may not be tracked by git.';
267
+ }
268
+ }
269
+ else {
270
+ gitDiff = 'No files were modified in this preview.';
271
+ }
272
+ // Generate unique preview ID
273
+ const previewId = `preview_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
274
+ // Cache the original output and modified files for later application/revert
275
+ this.previewCache.set(previewId, {
276
+ diff: stdout, // Store full output for application
277
+ timestamp: Date.now(),
278
+ filesModified
279
+ });
280
+ // Clean up old previews (older than 1 hour)
281
+ this.cleanupOldPreviews();
282
+ resolve({
283
+ success: true,
284
+ diff: gitDiff, // ONLY return git diff, no Bob-Shell output
285
+ filesModified,
286
+ previewId,
287
+ });
288
+ }
289
+ else {
290
+ console.error('❌ Bob-Shell preview failed with code:', code);
291
+ resolve({
292
+ success: false,
293
+ error: stderr || `Preview failed with code ${code}`,
294
+ filesModified: [],
295
+ });
296
+ }
297
+ });
298
+ process.on('error', (error) => {
299
+ console.error('❌ Bob-Shell preview error:', error.message);
300
+ resolve({
301
+ success: false,
302
+ error: 'Failed to execute Bob-Shell preview',
303
+ filesModified: [],
304
+ });
305
+ });
306
+ });
307
+ }
308
+ catch (error) {
309
+ console.error('❌ Bob-Shell preview failed:', error.message);
310
+ return {
311
+ success: false,
312
+ output: '',
313
+ error: error.message || 'Failed to preview prompt',
314
+ filesModified: [],
315
+ };
316
+ }
317
+ }
318
+ /**
319
+ * Accept preview changes (they're already applied, just clean up cache)
320
+ */
321
+ async applyPreviewedDiff(previewId, diff) {
322
+ try {
323
+ console.log('✅ Accepting previewed changes:', previewId);
324
+ // Verify preview exists in cache
325
+ const cached = this.previewCache.get(previewId);
326
+ if (!cached) {
327
+ throw new Error('Preview not found or expired. Please generate a new preview.');
328
+ }
329
+ // Changes are already applied by bob --yolo, just clean up cache
330
+ this.previewCache.delete(previewId);
331
+ return {
332
+ success: true,
333
+ output: 'Preview changes accepted and kept',
334
+ filesModified: cached.filesModified || [],
335
+ };
336
+ }
337
+ catch (error) {
338
+ console.error('❌ Failed to accept preview:', error.message);
339
+ return {
340
+ success: false,
341
+ output: '',
342
+ error: error.message || 'Failed to accept preview',
343
+ filesModified: [],
344
+ };
345
+ }
346
+ }
347
+ /**
348
+ * Reject preview changes by reverting them using git
349
+ */
350
+ async rejectPreview(previewId) {
351
+ try {
352
+ console.log('❌ Rejecting previewed changes:', previewId);
353
+ // Verify preview exists in cache
354
+ const cached = this.previewCache.get(previewId);
355
+ if (!cached) {
356
+ throw new Error('Preview not found or expired.');
357
+ }
358
+ const filesModified = cached.filesModified || [];
359
+ if (filesModified.length === 0) {
360
+ this.previewCache.delete(previewId);
361
+ return {
362
+ success: true,
363
+ output: 'No files to revert',
364
+ filesModified: [],
365
+ };
366
+ }
367
+ // Revert each modified file using git checkout
368
+ console.log(`🔄 Reverting ${filesModified.length} file(s)...`);
369
+ for (const file of filesModified) {
370
+ try {
371
+ await execAsync(`git checkout HEAD -- "${file}"`, {
372
+ cwd: this.projectRoot
373
+ });
374
+ console.log(` ✓ Reverted: ${file}`);
375
+ }
376
+ catch (error) {
377
+ console.error(` ✗ Failed to revert ${file}:`, error.message);
378
+ }
379
+ }
380
+ // Clean up cache
381
+ this.previewCache.delete(previewId);
382
+ return {
383
+ success: true,
384
+ output: `Reverted ${filesModified.length} file(s)`,
385
+ filesModified,
386
+ };
387
+ }
388
+ catch (error) {
389
+ console.error('❌ Failed to reject preview:', error.message);
390
+ return {
391
+ success: false,
392
+ output: '',
393
+ error: error.message || 'Failed to reject preview',
394
+ filesModified: [],
395
+ };
396
+ }
397
+ }
398
+ /**
399
+ * Generate git-style diffs for modified files
400
+ */
401
+ async generateGitDiffs(files) {
402
+ if (files.length === 0) {
403
+ return '';
404
+ }
405
+ const { exec } = require('child_process');
406
+ const { promisify } = require('util');
407
+ const execAsync = promisify(exec);
408
+ let combinedDiff = '';
409
+ for (const file of files) {
410
+ try {
411
+ // Get git diff for the file (shows unstaged changes)
412
+ const { stdout } = await execAsync(`git diff HEAD -- "${file}"`, {
413
+ cwd: this.projectRoot,
414
+ maxBuffer: 10 * 1024 * 1024 // 10MB buffer
415
+ });
416
+ if (stdout) {
417
+ combinedDiff += stdout + '\n';
418
+ }
419
+ }
420
+ catch (error) {
421
+ console.error(`Failed to get git diff for ${file}:`, error.message);
422
+ // Continue with other files
423
+ }
424
+ }
425
+ return combinedDiff;
426
+ }
427
+ /**
428
+ * Extract diff content from Bob-Shell output
429
+ */
430
+ extractDiffFromOutput(output) {
431
+ // Strategy 1: Look for explicit diff blocks in markdown format
432
+ const diffPattern = /```diff\n([\s\S]*?)\n```/g;
433
+ const diffMatches = [...output.matchAll(diffPattern)];
434
+ if (diffMatches.length > 0) {
435
+ return diffMatches.map(m => m[1]).join('\n\n');
436
+ }
437
+ // Strategy 2: Extract from tool usage (write_to_file, apply_diff, etc.)
438
+ const toolUsagePattern = /<(write_to_file|apply_diff|insert_content)>([\s\S]*?)<\/\1>/g;
439
+ const toolMatches = [...output.matchAll(toolUsagePattern)];
440
+ if (toolMatches.length > 0) {
441
+ let extractedDiff = '';
442
+ for (const match of toolMatches) {
443
+ const toolName = match[1];
444
+ const toolContent = match[2];
445
+ // Extract file path
446
+ const pathMatch = toolContent.match(/<path>(.*?)<\/path>/);
447
+ const path = pathMatch ? pathMatch[1] : 'unknown';
448
+ // Extract content
449
+ const contentMatch = toolContent.match(/<content>([\s\S]*?)<\/content>/);
450
+ const content = contentMatch ? contentMatch[1] : '';
451
+ // Extract diff for apply_diff
452
+ const diffMatch = toolContent.match(/<diff>([\s\S]*?)<\/diff>/);
453
+ const diff = diffMatch ? diffMatch[1] : '';
454
+ if (toolName === 'apply_diff' && diff) {
455
+ extractedDiff += `\n=== ${path} ===\n${diff}\n`;
456
+ }
457
+ else if (toolName === 'write_to_file' && content) {
458
+ extractedDiff += `\n=== ${path} (new/rewrite) ===\n${content}\n`;
459
+ }
460
+ else if (toolName === 'insert_content' && content) {
461
+ const lineMatch = toolContent.match(/<line>(\d+)<\/line>/);
462
+ const line = lineMatch ? lineMatch[1] : '?';
463
+ extractedDiff += `\n=== ${path} (insert at line ${line}) ===\n${content}\n`;
464
+ }
465
+ }
466
+ if (extractedDiff) {
467
+ return extractedDiff;
468
+ }
469
+ }
470
+ // Strategy 3: Look for file modification indicators in output
471
+ const fileModPattern = /(?:Modified|Created|Updated):\s*([^\n]+)/gi;
472
+ const fileMatches = [...output.matchAll(fileModPattern)];
473
+ if (fileMatches.length > 0) {
474
+ let summary = '=== Files to be modified ===\n\n';
475
+ fileMatches.forEach(m => {
476
+ summary += `• ${m[1]}\n`;
477
+ });
478
+ summary += '\n' + output;
479
+ return summary;
480
+ }
481
+ // Fallback: Return full output with a note
482
+ return '=== Preview Output ===\n\nNote: Could not extract structured diff. Showing full Bob-Shell output:\n\n' + output;
483
+ }
484
+ /**
485
+ * Apply diff to actual files
486
+ */
487
+ async applyDiffToFiles(diff) {
488
+ const filesModified = [];
489
+ // Parse diff format and apply changes
490
+ // This is a simplified implementation - in production, use a proper diff parser
491
+ const fileBlocks = diff.split(/^diff --git /m).filter(b => b.trim());
492
+ for (const block of fileBlocks) {
493
+ try {
494
+ // Extract file path from diff header
495
+ const pathMatch = block.match(/^a\/(.+?) b\/(.+?)$/m);
496
+ if (!pathMatch)
497
+ continue;
498
+ const filePath = pathMatch[2];
499
+ const fullPath = path_1.default.resolve(this.projectRoot, filePath);
500
+ // Read current file content
501
+ let currentContent = '';
502
+ try {
503
+ currentContent = await promises_1.default.readFile(fullPath, 'utf-8');
504
+ }
505
+ catch {
506
+ // File doesn't exist, will be created
507
+ }
508
+ // Apply diff (simplified - in production use a proper diff library)
509
+ // For now, just track that the file was modified
510
+ filesModified.push(filePath);
511
+ }
512
+ catch (error) {
513
+ console.error('Error applying diff to file:', error);
514
+ }
515
+ }
516
+ return filesModified;
517
+ }
518
+ /**
519
+ * Clean up old preview cache entries (older than 1 hour)
520
+ */
521
+ cleanupOldPreviews() {
522
+ const oneHourAgo = Date.now() - (60 * 60 * 1000);
523
+ for (const [previewId, cached] of this.previewCache.entries()) {
524
+ if (cached.timestamp < oneHourAgo) {
525
+ this.previewCache.delete(previewId);
526
+ }
527
+ }
528
+ }
529
+ }
530
+ exports.BobShellService = BobShellService;
531
+ // Singleton instance
532
+ exports.bobShellService = new BobShellService();
533
+ // Made with Bob
534
+ //# sourceMappingURL=bobShellService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bobShellService.js","sourceRoot":"","sources":["../../src/services/bobShellService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ export interface QualityReport {
2
+ file: string;
3
+ score: number;
4
+ issues: Issue[];
5
+ metrics: QualityMetrics;
6
+ suggestions: Improvement[];
7
+ }
8
+ export interface Issue {
9
+ type: 'error' | 'warning' | 'info';
10
+ rule: string;
11
+ message: string;
12
+ line: number;
13
+ column: number;
14
+ severity: 'critical' | 'high' | 'medium' | 'low';
15
+ fixable: boolean;
16
+ }
17
+ export interface QualityMetrics {
18
+ complexity: number;
19
+ maintainability: number;
20
+ testCoverage: number;
21
+ linesOfCode: number;
22
+ commentRatio: number;
23
+ }
24
+ export interface Improvement {
25
+ title: string;
26
+ description: string;
27
+ impact: 'high' | 'medium' | 'low';
28
+ effort: 'high' | 'medium' | 'low';
29
+ category: 'performance' | 'security' | 'maintainability' | 'style';
30
+ }
31
+ export interface LintResults {
32
+ success: boolean;
33
+ errorCount: number;
34
+ warningCount: number;
35
+ fixableErrorCount: number;
36
+ fixableWarningCount: number;
37
+ files: LintFileResult[];
38
+ }
39
+ export interface LintFileResult {
40
+ filePath: string;
41
+ messages: Issue[];
42
+ errorCount: number;
43
+ warningCount: number;
44
+ }
45
+ export interface TypeScriptError {
46
+ file: string;
47
+ line: number;
48
+ column: number;
49
+ message: string;
50
+ code: number;
51
+ }
52
+ export interface FixResult {
53
+ success: boolean;
54
+ filesFixed: string[];
55
+ issuesFixed: number;
56
+ error?: string;
57
+ }
58
+ export declare class CodeQualityService {
59
+ private projectRoot;
60
+ private hasESLint;
61
+ private hasTypeScript;
62
+ constructor(projectRoot: string);
63
+ /**
64
+ * Initialize and detect available tools
65
+ */
66
+ initialize(): Promise<void>;
67
+ /**
68
+ * Analyze a file for code quality
69
+ */
70
+ analyzeFile(filePath: string): Promise<QualityReport>;
71
+ /**
72
+ * Run ESLint on the project
73
+ */
74
+ runLinter(pattern?: string): Promise<LintResults>;
75
+ /**
76
+ * Check TypeScript errors
77
+ */
78
+ checkTypeScript(): Promise<TypeScriptError[]>;
79
+ /**
80
+ * Suggest improvements for code
81
+ */
82
+ suggestImprovements(code: string): Promise<Improvement[]>;
83
+ /**
84
+ * Auto-fix issues
85
+ */
86
+ autoFix(issues: Issue[]): Promise<FixResult>;
87
+ /**
88
+ * Private helper methods
89
+ */
90
+ private collectIssues;
91
+ private calculateMetrics;
92
+ private calculateComplexity;
93
+ private generateImprovements;
94
+ private calculateScore;
95
+ private parseESLintOutput;
96
+ private parseTypeScriptErrors;
97
+ private fileExists;
98
+ private hasLongFunctions;
99
+ private hasDuplicateCode;
100
+ private hasHardcodedValues;
101
+ private hasPoorErrorHandling;
102
+ private hasPerformanceIssues;
103
+ }
104
+ export declare const codeQualityService: CodeQualityService;
105
+ //# sourceMappingURL=codeQualityService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codeQualityService.d.ts","sourceRoot":"","sources":["../../src/services/codeQualityService.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,OAAO,EAAE,cAAc,CAAC;IACxB,WAAW,EAAE,WAAW,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjD,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAClC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAClC,QAAQ,EAAE,aAAa,GAAG,UAAU,GAAG,iBAAiB,GAAG,OAAO,CAAC;CACpE;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,KAAK,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,aAAa,CAAkB;gBAE3B,WAAW,EAAE,MAAM;IAI/B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBjC;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAqB3D;;OAEG;IACG,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IA0BvD;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAsBnD;;OAEG;IACG,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAyD/D;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;IAuClD;;OAEG;YACW,aAAa;IAuC3B,OAAO,CAAC,gBAAgB;IAuBxB,OAAO,CAAC,mBAAmB;IA0B3B,OAAO,CAAC,oBAAoB;IAuC5B,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,iBAAiB;IAqDzB,OAAO,CAAC,qBAAqB;YAoBf,UAAU;IAUxB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,oBAAoB;CAM7B;AAGD,eAAO,MAAM,kBAAkB,oBAE9B,CAAC"}