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,199 @@
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.utils = exports.backups = exports.sessions = exports.pendingApprovals = exports.chatHistory = void 0;
7
+ const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const fs_1 = __importDefault(require("fs"));
10
+ const DB_DIR = path_1.default.join(__dirname, '../../data');
11
+ const DB_PATH = path_1.default.join(DB_DIR, 'sidecar.db');
12
+ // Ensure data directory exists
13
+ if (!fs_1.default.existsSync(DB_DIR)) {
14
+ fs_1.default.mkdirSync(DB_DIR, { recursive: true });
15
+ }
16
+ const db = new better_sqlite3_1.default(DB_PATH);
17
+ // Enable WAL mode for better concurrency
18
+ db.pragma('journal_mode = WAL');
19
+ // Initialize database schema
20
+ db.exec(`
21
+ CREATE TABLE IF NOT EXISTS chat_history (
22
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
23
+ session_id TEXT NOT NULL,
24
+ role TEXT NOT NULL,
25
+ content TEXT NOT NULL,
26
+ timestamp INTEGER NOT NULL,
27
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP
28
+ );
29
+
30
+ CREATE TABLE IF NOT EXISTS pending_approvals (
31
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
32
+ session_id TEXT NOT NULL,
33
+ operation_type TEXT NOT NULL,
34
+ operation_data TEXT NOT NULL,
35
+ diff_content TEXT,
36
+ status TEXT DEFAULT 'pending',
37
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
38
+ resolved_at DATETIME
39
+ );
40
+
41
+ CREATE TABLE IF NOT EXISTS sessions (
42
+ id TEXT PRIMARY KEY,
43
+ project_path TEXT NOT NULL,
44
+ last_active INTEGER NOT NULL,
45
+ settings TEXT,
46
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP
47
+ );
48
+
49
+ CREATE TABLE IF NOT EXISTS backups (
50
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
51
+ session_id TEXT NOT NULL,
52
+ backup_name TEXT NOT NULL,
53
+ backup_path TEXT NOT NULL,
54
+ file_count INTEGER,
55
+ size_bytes INTEGER,
56
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP
57
+ );
58
+
59
+ CREATE INDEX IF NOT EXISTS idx_chat_session ON chat_history(session_id);
60
+ CREATE INDEX IF NOT EXISTS idx_approval_session ON pending_approvals(session_id);
61
+ CREATE INDEX IF NOT EXISTS idx_approval_status ON pending_approvals(status);
62
+ CREATE INDEX IF NOT EXISTS idx_backup_session ON backups(session_id);
63
+ `);
64
+ // Chat History Operations
65
+ exports.chatHistory = {
66
+ add: (sessionId, role, content) => {
67
+ const stmt = db.prepare('INSERT INTO chat_history (session_id, role, content, timestamp) VALUES (?, ?, ?, ?)');
68
+ return stmt.run(sessionId, role, content, Date.now());
69
+ },
70
+ getBySession: (sessionId, limit = 100) => {
71
+ const stmt = db.prepare('SELECT * FROM chat_history WHERE session_id = ? ORDER BY timestamp DESC LIMIT ?');
72
+ return stmt.all(sessionId, limit);
73
+ },
74
+ clear: (sessionId) => {
75
+ const stmt = db.prepare('DELETE FROM chat_history WHERE session_id = ?');
76
+ return stmt.run(sessionId);
77
+ },
78
+ deleteOlderThan: (days) => {
79
+ const cutoff = Date.now() - days * 24 * 60 * 60 * 1000;
80
+ const stmt = db.prepare('DELETE FROM chat_history WHERE timestamp < ?');
81
+ return stmt.run(cutoff);
82
+ }
83
+ };
84
+ // Pending Approvals Operations
85
+ exports.pendingApprovals = {
86
+ add: (sessionId, operationType, operationData, diffContent) => {
87
+ const stmt = db.prepare('INSERT INTO pending_approvals (session_id, operation_type, operation_data, diff_content) VALUES (?, ?, ?, ?)');
88
+ return stmt.run(sessionId, operationType, JSON.stringify(operationData), diffContent || null);
89
+ },
90
+ getBySession: (sessionId) => {
91
+ const stmt = db.prepare('SELECT * FROM pending_approvals WHERE session_id = ? AND status = ? ORDER BY created_at DESC');
92
+ const rows = stmt.all(sessionId, 'pending');
93
+ return rows.map(row => ({
94
+ ...row,
95
+ operation_data: JSON.parse(row.operation_data)
96
+ }));
97
+ },
98
+ getById: (id) => {
99
+ const stmt = db.prepare('SELECT * FROM pending_approvals WHERE id = ?');
100
+ const row = stmt.get(id);
101
+ if (row) {
102
+ row.operation_data = JSON.parse(row.operation_data);
103
+ }
104
+ return row;
105
+ },
106
+ resolve: (id, status) => {
107
+ const stmt = db.prepare('UPDATE pending_approvals SET status = ?, resolved_at = CURRENT_TIMESTAMP WHERE id = ?');
108
+ return stmt.run(status, id);
109
+ },
110
+ clear: (sessionId) => {
111
+ const stmt = db.prepare('DELETE FROM pending_approvals WHERE session_id = ?');
112
+ return stmt.run(sessionId);
113
+ }
114
+ };
115
+ // Session Operations
116
+ exports.sessions = {
117
+ create: (id, projectPath, settings) => {
118
+ const stmt = db.prepare('INSERT OR REPLACE INTO sessions (id, project_path, last_active, settings) VALUES (?, ?, ?, ?)');
119
+ return stmt.run(id, projectPath, Date.now(), settings ? JSON.stringify(settings) : null);
120
+ },
121
+ get: (id) => {
122
+ const stmt = db.prepare('SELECT * FROM sessions WHERE id = ?');
123
+ const row = stmt.get(id);
124
+ if (row && row.settings) {
125
+ row.settings = JSON.parse(row.settings);
126
+ }
127
+ return row;
128
+ },
129
+ updateActivity: (id) => {
130
+ const stmt = db.prepare('UPDATE sessions SET last_active = ? WHERE id = ?');
131
+ return stmt.run(Date.now(), id);
132
+ },
133
+ updateSettings: (id, settings) => {
134
+ const stmt = db.prepare('UPDATE sessions SET settings = ? WHERE id = ?');
135
+ return stmt.run(JSON.stringify(settings), id);
136
+ },
137
+ delete: (id) => {
138
+ const stmt = db.prepare('DELETE FROM sessions WHERE id = ?');
139
+ return stmt.run(id);
140
+ },
141
+ getAll: () => {
142
+ const stmt = db.prepare('SELECT * FROM sessions ORDER BY last_active DESC');
143
+ const rows = stmt.all();
144
+ return rows.map(row => {
145
+ if (row.settings) {
146
+ row.settings = JSON.parse(row.settings);
147
+ }
148
+ return row;
149
+ });
150
+ },
151
+ cleanupInactive: (daysInactive) => {
152
+ const cutoff = Date.now() - daysInactive * 24 * 60 * 60 * 1000;
153
+ const stmt = db.prepare('DELETE FROM sessions WHERE last_active < ?');
154
+ return stmt.run(cutoff);
155
+ }
156
+ };
157
+ // Backup Operations
158
+ exports.backups = {
159
+ add: (sessionId, backupName, backupPath, fileCount, sizeBytes) => {
160
+ const stmt = db.prepare('INSERT INTO backups (session_id, backup_name, backup_path, file_count, size_bytes) VALUES (?, ?, ?, ?, ?)');
161
+ return stmt.run(sessionId, backupName, backupPath, fileCount, sizeBytes);
162
+ },
163
+ getBySession: (sessionId) => {
164
+ const stmt = db.prepare('SELECT * FROM backups WHERE session_id = ? ORDER BY created_at DESC');
165
+ return stmt.all(sessionId);
166
+ },
167
+ delete: (id) => {
168
+ const stmt = db.prepare('DELETE FROM backups WHERE id = ?');
169
+ return stmt.run(id);
170
+ },
171
+ getAll: () => {
172
+ const stmt = db.prepare('SELECT * FROM backups ORDER BY created_at DESC');
173
+ return stmt.all();
174
+ }
175
+ };
176
+ // Utility functions
177
+ exports.utils = {
178
+ vacuum: () => {
179
+ db.exec('VACUUM');
180
+ },
181
+ getStats: () => {
182
+ const chatCount = db.prepare('SELECT COUNT(*) as count FROM chat_history').get();
183
+ const approvalCount = db.prepare('SELECT COUNT(*) as count FROM pending_approvals WHERE status = ?').get('pending');
184
+ const sessionCount = db.prepare('SELECT COUNT(*) as count FROM sessions').get();
185
+ const backupCount = db.prepare('SELECT COUNT(*) as count FROM backups').get();
186
+ return {
187
+ chatMessages: chatCount.count,
188
+ pendingApprovals: approvalCount.count,
189
+ activeSessions: sessionCount.count,
190
+ backups: backupCount.count
191
+ };
192
+ },
193
+ close: () => {
194
+ db.close();
195
+ }
196
+ };
197
+ exports.default = db;
198
+ // Made with Bob
199
+ //# sourceMappingURL=database.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=postinstall.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postinstall.d.ts","sourceRoot":"","sources":["../src/postinstall.ts"],"names":[],"mappings":""}
@@ -0,0 +1,48 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const COLORS = {
5
+ reset: '\x1b[0m',
6
+ bright: '\x1b[1m',
7
+ green: '\x1b[32m',
8
+ blue: '\x1b[34m',
9
+ cyan: '\x1b[36m',
10
+ };
11
+ function log(message, color = COLORS.reset) {
12
+ console.log(`${color}${message}${COLORS.reset}`);
13
+ }
14
+ function printWelcome() {
15
+ log('\n╔════════════════════════════════════════╗', COLORS.cyan);
16
+ log('║ 🎉 Bob AI Assistant Installed! 🎉 ║', COLORS.cyan);
17
+ log('╚════════════════════════════════════════╝\n', COLORS.cyan);
18
+ log('Thank you for installing Bob AI Assistant!', COLORS.bright);
19
+ log('An intelligent AI assistant that injects into any web application.\n', COLORS.reset);
20
+ log('🚀 Quick Start:', COLORS.bright);
21
+ log(' 1. Initialize in your project:', COLORS.cyan);
22
+ log(' npx BobAppAssistant init\n', COLORS.green);
23
+ log(' 2. Start the assistant server:', COLORS.cyan);
24
+ log(' npx BobAppAssistant start\n', COLORS.green);
25
+ log(' 3. Open your web app - AI Assistant will be injected automatically!\n', COLORS.cyan);
26
+ log('📚 Features:', COLORS.bright);
27
+ log(' • AI Chat Assistant', COLORS.reset);
28
+ log(' • Code Quality Analysis', COLORS.reset);
29
+ log(' • Security Scanning', COLORS.reset);
30
+ log(' • Dependency Management', COLORS.reset);
31
+ log(' • Documentation Generator', COLORS.reset);
32
+ log(' • Prompt Enhancer', COLORS.reset);
33
+ log(' • Testing Tools', COLORS.reset);
34
+ log(' • Diff Viewer', COLORS.reset);
35
+ log(' • Backup & Restore', COLORS.reset);
36
+ log(' • Permission Management\n', COLORS.reset);
37
+ log('📖 Documentation:', COLORS.bright);
38
+ log(' https://github.com/yourusername/BobAppAssistant\n', COLORS.blue);
39
+ log('💡 Need help?', COLORS.bright);
40
+ log(' npx BobAppAssistant help\n', COLORS.cyan);
41
+ }
42
+ // Check if we're in a project installation (not global)
43
+ const isProjectInstall = process.env.npm_config_global !== 'true';
44
+ if (isProjectInstall) {
45
+ printWelcome();
46
+ }
47
+ // Made with Bob
48
+ //# sourceMappingURL=postinstall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postinstall.js","sourceRoot":"","sources":["../src/postinstall.ts"],"names":[],"mappings":";;;AAKA,MAAM,MAAM,GAAG;IACb,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,UAAU;IACjB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,UAAU;CACjB,CAAC;AAEF,SAAS,GAAG,CAAC,OAAe,EAAE,QAAgB,MAAM,CAAC,KAAK;IACxD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,YAAY;IACnB,GAAG,CAAC,8CAA8C,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACjE,GAAG,CAAC,0CAA0C,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7D,GAAG,CAAC,8CAA8C,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAEjE,GAAG,CAAC,4CAA4C,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACjE,GAAG,CAAC,sEAAsE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAE1F,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACtC,GAAG,CAAC,kCAAkC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACrD,GAAG,CAAC,iCAAiC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAErD,GAAG,CAAC,kCAAkC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACrD,GAAG,CAAC,kCAAkC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAEtD,GAAG,CAAC,yEAAyE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAE5F,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACnC,GAAG,CAAC,uBAAuB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3C,GAAG,CAAC,2BAA2B,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/C,GAAG,CAAC,uBAAuB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3C,GAAG,CAAC,2BAA2B,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/C,GAAG,CAAC,6BAA6B,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACjD,GAAG,CAAC,qBAAqB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACzC,GAAG,CAAC,mBAAmB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACvC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACrC,GAAG,CAAC,sBAAsB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1C,GAAG,CAAC,6BAA6B,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAEjD,GAAG,CAAC,mBAAmB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACxC,GAAG,CAAC,qDAAqD,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAExE,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACpC,GAAG,CAAC,8BAA8B,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AACnD,CAAC;AAED,wDAAwD;AACxD,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,MAAM,CAAC;AAElE,IAAI,gBAAgB,EAAE,CAAC;IACrB,YAAY,EAAE,CAAC;AACjB,CAAC;AAED,gBAAgB"}
@@ -0,0 +1,3 @@
1
+ declare const router: import("express-serve-static-core").Router;
2
+ export default router;
3
+ //# sourceMappingURL=aiRoutes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aiRoutes.d.ts","sourceRoot":"","sources":["../../src/routes/aiRoutes.ts"],"names":[],"mappings":"AAcA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAi4CxB,eAAe,MAAM,CAAC"}