repoburg 1.0.53 → 1.0.55

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.
@@ -0,0 +1 @@
1
+ export declare function fuzzySearch(query: string, items: string[]): string[];
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fuzzySearch = fuzzySearch;
4
+ function fuzzySearch(query, items) {
5
+ if (!query) {
6
+ return items;
7
+ }
8
+ const lowerCaseQuery = query.toLowerCase();
9
+ const rankedItems = items
10
+ .map((item) => {
11
+ const lowerCaseItem = item.toLowerCase();
12
+ let score = 0;
13
+ let consecutiveMatches = 0;
14
+ let lastMatchIndex = -1;
15
+ for (let i = 0; i < lowerCaseQuery.length; i++) {
16
+ const char = lowerCaseQuery[i];
17
+ const foundIndex = lowerCaseItem.indexOf(char, lastMatchIndex + 1);
18
+ if (foundIndex === -1) {
19
+ return null;
20
+ }
21
+ if (foundIndex === 0 ||
22
+ ['/', '\\', '_', '-', '.'].includes(lowerCaseItem[foundIndex - 1])) {
23
+ score += 15;
24
+ }
25
+ if (item[foundIndex] === query[i]) {
26
+ score += 5;
27
+ }
28
+ if (lastMatchIndex === foundIndex - 1) {
29
+ consecutiveMatches++;
30
+ score += 20 * consecutiveMatches;
31
+ }
32
+ else {
33
+ consecutiveMatches = 0;
34
+ }
35
+ score -= foundIndex - (lastMatchIndex + 1);
36
+ lastMatchIndex = foundIndex;
37
+ }
38
+ score -= item.length * 0.1;
39
+ return { item, score };
40
+ })
41
+ .filter((result) => result !== null);
42
+ rankedItems.sort((a, b) => b.score - a.score);
43
+ return rankedItems.map((result) => result.item);
44
+ }
45
+ //# sourceMappingURL=fuzzy-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fuzzy-search.js","sourceRoot":"","sources":["../../src/utils/fuzzy-search.ts"],"names":[],"mappings":";;AAAA,kCA8DC;AA9DD,SAAgB,WAAW,CAAC,KAAa,EAAE,KAAe;IACxD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAE3C,MAAM,WAAW,GAAG,KAAK;SACtB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACzC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAC3B,IAAI,cAAc,GAAG,CAAC,CAAC,CAAC;QAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/C,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC;YAEnE,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;gBACtB,OAAO,IAAI,CAAC;YACd,CAAC;YAGD,IACE,UAAU,KAAK,CAAC;gBAChB,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAClE,CAAC;gBACD,KAAK,IAAI,EAAE,CAAC;YACd,CAAC;YAGD,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClC,KAAK,IAAI,CAAC,CAAC;YACb,CAAC;YAGD,IAAI,cAAc,KAAK,UAAU,GAAG,CAAC,EAAE,CAAC;gBACtC,kBAAkB,EAAE,CAAC;gBACrB,KAAK,IAAI,EAAE,GAAG,kBAAkB,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACN,kBAAkB,GAAG,CAAC,CAAC;YACzB,CAAC;YAGD,KAAK,IAAI,UAAU,GAAG,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;YAE3C,cAAc,GAAG,UAAU,CAAC;QAC9B,CAAC;QAGD,KAAK,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QAE3B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACzB,CAAC,CAAC;SACD,MAAM,CACL,CAAC,MAAM,EAA6C,EAAE,CAAC,MAAM,KAAK,IAAI,CACvE,CAAC;IAGJ,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAE9C,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAClD,CAAC"}
@@ -0,0 +1 @@
1
+ export * from './fuzzy-search';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./fuzzy-search"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B"}
@@ -12,6 +12,7 @@ export declare class WorkspaceService {
12
12
  private fileTreeCacheTimestamp;
13
13
  private readonly CACHE_TTL_MS;
14
14
  constructor(contextGenerationService: ContextGenerationService);
15
+ private getFilesFromRg;
15
16
  private resolveAndValidatePath;
16
17
  validatePaths(paths: {
17
18
  files?: string[];
@@ -12,10 +12,13 @@ var WorkspaceService_1;
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  exports.WorkspaceService = void 0;
14
14
  const common_1 = require("@nestjs/common");
15
- const glob_1 = require("glob");
16
15
  const context_generation_service_1 = require("../context-generation/context-generation.service");
17
16
  const fs = require("fs/promises");
18
17
  const path = require("path");
18
+ const utils_1 = require("../utils");
19
+ const child_process_1 = require("child_process");
20
+ const util_1 = require("util");
21
+ const execAsync = (0, util_1.promisify)(child_process_1.exec);
19
22
  let WorkspaceService = WorkspaceService_1 = class WorkspaceService {
20
23
  constructor(contextGenerationService) {
21
24
  this.contextGenerationService = contextGenerationService;
@@ -25,6 +28,27 @@ let WorkspaceService = WorkspaceService_1 = class WorkspaceService {
25
28
  this.fileTreeCacheTimestamp = null;
26
29
  this.CACHE_TTL_MS = 5 * 60 * 1000;
27
30
  }
31
+ async getFilesFromRg() {
32
+ const rgCommand = await this.contextGenerationService.getCommandPath('rg');
33
+ const command = `${rgCommand} --files --hidden --glob '!.git'`;
34
+ try {
35
+ this.logger.log(`Executing for file list: ${command}`);
36
+ const { stdout } = await execAsync(command, {
37
+ cwd: this.projectRoot,
38
+ maxBuffer: 256 * 1024 * 1024,
39
+ timeout: 10000,
40
+ });
41
+ return stdout.trim().split('\n').filter(Boolean);
42
+ }
43
+ catch (error) {
44
+ if (error.code === 1 && error.stdout === '' && error.stderr === '') {
45
+ this.logger.log('rg --files returned no files.');
46
+ return [];
47
+ }
48
+ this.logger.error(`Failed to get file list from rg: ${error.message}`, error.stack);
49
+ throw new Error(`Could not retrieve file list from RipGrep. Is 'rg' installed and in your PATH?`);
50
+ }
51
+ }
28
52
  resolveAndValidatePath(unsafePath) {
29
53
  const normalizedPath = path.normalize(unsafePath);
30
54
  if (path.isAbsolute(normalizedPath)) {
@@ -62,28 +86,17 @@ let WorkspaceService = WorkspaceService_1 = class WorkspaceService {
62
86
  this.logger.log('Returning file tree from cache.');
63
87
  return this.fileTreeCache;
64
88
  }
65
- this.logger.log(`Scanning project root for file tree: ${this.projectRoot}`);
89
+ this.logger.log(`Scanning project root for file tree with rg: ${this.projectRoot}`);
66
90
  try {
67
- const ignorePatterns = [
68
- '**/node_modules/**',
69
- '**/.git/**',
70
- '**/dist/**',
71
- '**/coverage/**',
72
- '**/.next/**',
73
- '**/data.json',
74
- ];
75
- const files = await (0, glob_1.glob)('**/*', {
76
- cwd: this.projectRoot,
77
- nodir: true,
78
- ignore: ignorePatterns,
79
- dot: true,
91
+ const files = await this.getFilesFromRg();
92
+ const folderSet = new Set();
93
+ files.forEach((file) => {
94
+ const parts = file.split(path.sep);
95
+ for (let i = 1; i < parts.length; i++) {
96
+ folderSet.add(parts.slice(0, i).join(path.sep));
97
+ }
80
98
  });
81
- const allDirs = await (0, glob_1.glob)('**/', {
82
- cwd: this.projectRoot,
83
- ignore: ignorePatterns,
84
- dot: true,
85
- });
86
- const folders = allDirs.map((d) => d.replace(/\/$/, '')).filter((d) => d);
99
+ const folders = Array.from(folderSet);
87
100
  this.logger.log(`Found ${files.length} files and ${folders.length} folders.`);
88
101
  this.fileTreeCache = { files, folders };
89
102
  this.fileTreeCacheTimestamp = now;
@@ -101,54 +114,31 @@ let WorkspaceService = WorkspaceService_1 = class WorkspaceService {
101
114
  }
102
115
  async search(query, type, page, limit) {
103
116
  this.logger.log(`Searching for "${query}" (type: ${type})`);
104
- const ignorePatterns = [
105
- '**/node_modules/**',
106
- '**/.git/**',
107
- '**/dist/**',
108
- '**/coverage/**',
109
- '**/.next/**',
110
- '**/data.json',
111
- ];
112
- const globOptions = {
113
- cwd: this.projectRoot,
114
- ignore: ignorePatterns,
115
- dot: true,
116
- };
117
- const globPattern = `**/*${query}*`;
118
- const allMatches = await (0, glob_1.glob)(globPattern, {
119
- ...globOptions,
120
- mark: true,
121
- nocase: true,
122
- });
123
- let results = [];
117
+ const { files, folders } = await this.getFileTree();
118
+ let searchPool = [];
124
119
  if (type === 'all') {
125
- results = allMatches.map((p) => ({
126
- type: p.endsWith('/') ? 'folder' : 'file',
127
- path: p.endsWith('/') ? p.slice(0, -1) : p,
128
- }));
120
+ searchPool = [
121
+ ...files.map((p) => ({ path: p, type: 'file' })),
122
+ ...folders.map((p) => ({ path: p, type: 'folder' })),
123
+ ];
129
124
  }
130
125
  else if (type === 'files') {
131
- results = allMatches
132
- .filter((p) => !p.endsWith('/'))
133
- .map((p) => ({ type: 'file', path: p }));
126
+ searchPool = files.map((p) => ({ path: p, type: 'file' }));
134
127
  }
135
128
  else if (type === 'folders') {
136
- results = allMatches
137
- .filter((p) => p.endsWith('/'))
138
- .map((p) => ({ type: 'folder', path: p.slice(0, -1) }));
129
+ searchPool = folders.map((p) => ({ path: p, type: 'folder' }));
139
130
  }
140
- results.sort((a, b) => {
141
- if (a.type === 'folder' && b.type === 'file')
142
- return -1;
143
- if (a.type === 'file' && b.type === 'folder')
144
- return 1;
145
- return a.path.localeCompare(b.path);
146
- });
131
+ const searchPoolStrings = searchPool.map((item) => item.path);
132
+ const matchedPaths = (0, utils_1.fuzzySearch)(query, searchPoolStrings);
133
+ const matchedPathSet = new Set(matchedPaths);
134
+ const results = searchPool
135
+ .filter((item) => matchedPathSet.has(item.path))
136
+ .sort((a, b) => matchedPaths.indexOf(a.path) - matchedPaths.indexOf(b.path));
147
137
  const total = results.length;
148
138
  const startIndex = (page - 1) * limit;
149
139
  const endIndex = page * limit;
150
140
  const paginatedResults = results.slice(startIndex, endIndex);
151
- this.logger.log(`Search for "${query}" (type: ${type}) with glob found ${total} total results. Returning page ${page} with ${paginatedResults.length} items.`);
141
+ this.logger.log(`Search for "${query}" (type: ${type}) found ${total} total results. Returning page ${page} with ${paginatedResults.length} items.`);
152
142
  return {
153
143
  results: paginatedResults,
154
144
  total,
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.service.js","sourceRoot":"","sources":["../../src/workspace/workspace.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace.service.js","sourceRoot":"","sources":["../../src/workspace/workspace.service.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@
9
9
  "build": "nest build",
10
10
  "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
11
11
  "start": "nest start",
12
+ "start2": "NODE_ENV=production nest start",
12
13
  "start:dev": "nest start --watch",
13
14
  "start:debug": "nest start --debug --watch",
14
15
  "start:prod": "NODE_ENV=production node dist/main",
@@ -29,7 +30,6 @@
29
30
  "@nestjs/schematics": "^10.0.0",
30
31
  "@nestjs/testing": "^10.0.0",
31
32
  "@types/express": "^4.17.17",
32
- "@types/glob": "^8.1.0",
33
33
  "@types/jest": "^29.5.2",
34
34
  "@types/multer": "^1.4.11",
35
35
  "@types/node": "^20.3.1",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "repoburg",
3
- "version": "1.0.53",
3
+ "version": "1.0.55",
4
4
  "description": "A local AI-powered software developer assistant that runs on your own machine.",
5
5
  "author": "Celal Ertug",
6
6
  "license": "SEE LICENSE IN LICENSE",
package/platform-cli.js CHANGED
@@ -178,42 +178,43 @@ program
178
178
  authResponse = await axios.get(`${DAEMON_BASE_URL}/auth/status`);
179
179
  } catch (error) {
180
180
  if (error.request && !error.response) {
181
- console.log(chalk.yellow('Daemon not reachable. Attempting to start it now...'));
182
-
183
- await startDaemon();
184
-
185
- const pollForDaemonHealth = (timeout = 30000) => {
186
- const spinner = ora('Waiting for daemon to become healthy...').start();
187
- return new Promise((resolve, reject) => {
188
- const startTime = Date.now();
189
- const pollInterval = setInterval(async () => {
190
- if (Date.now() - startTime > timeout) {
191
- clearInterval(pollInterval);
192
- spinner.fail('Daemon health check timed out.');
193
- return reject(new Error('Daemon health check timed out. Check logs with `repoburg daemon logs`.'));
194
- }
195
- try {
196
- await axios.get(`${DAEMON_BASE_URL}/health`);
197
- clearInterval(pollInterval);
198
- spinner.succeed('Daemon is healthy.');
199
- resolve();
200
- } catch (e) {
201
- // ignore until timeout
202
- }
203
- }, 1000)
204
- });
205
- };
206
-
207
- await pollForDaemonHealth();
208
-
209
- try {
210
- authResponse = await axios.get(`${DAEMON_BASE_URL}/auth/status`);
211
- } catch (retryError) {
212
- console.error(chalk.red('Daemon started but is not responding correctly.'));
213
- return handleApiError(retryError);
214
- }
181
+ // console.log(chalk.yellow('Daemon not reachable. Attempting to start it now...'));
182
+
183
+ // TODO restore here once pm2 daemon bug is fixed
184
+ // await startDaemon();
185
+ //
186
+ // const pollForDaemonHealth = (timeout = 30000) => {
187
+ // const spinner = ora('Waiting for daemon to become healthy...').start();
188
+ // return new Promise((resolve, reject) => {
189
+ // const startTime = Date.now();
190
+ // const pollInterval = setInterval(async () => {
191
+ // if (Date.now() - startTime > timeout) {
192
+ // clearInterval(pollInterval);
193
+ // spinner.fail('Daemon health check timed out.');
194
+ // return reject(new Error('Daemon health check timed out. Check logs with `repoburg daemon logs`.'));
195
+ // }
196
+ // try {
197
+ // await axios.get(`${DAEMON_BASE_URL}/health`);
198
+ // clearInterval(pollInterval);
199
+ // spinner.succeed('Daemon is healthy.');
200
+ // resolve();
201
+ // } catch (e) {
202
+ // // ignore until timeout
203
+ // }
204
+ // }, 1000)
205
+ // });
206
+ // };
207
+ //
208
+ // await pollForDaemonHealth();
209
+
210
+ // try {
211
+ // authResponse = await axios.get(`${DAEMON_BASE_URL}/auth/status`);
212
+ // } catch (retryError) {
213
+ // console.error(chalk.red('Daemon started but is not responding correctly.'));
214
+ // return handleApiError(retryError);
215
+ // }
215
216
  } else {
216
- return handleApiError(error);
217
+ // return handleApiError(error);
217
218
  }
218
219
  }
219
220
 
@@ -314,7 +315,7 @@ program
314
315
  }
315
316
 
316
317
  console.log(chalk.green('✓ All services processed:'));
317
-
318
+
318
319
  const Table = require('cli-table3');
319
320
  const table = new Table({
320
321
  head: ['NAME', 'RESULT'].map(h => chalk.cyan(h)),
@@ -405,7 +406,7 @@ program
405
406
  .action(async () => {
406
407
  const { default: chalk } = await import('chalk');
407
408
  const { default: ora } = await import('ora');
408
-
409
+
409
410
  const runCommand = (command, args) => {
410
411
  return new Promise((resolve, reject) => {
411
412
  const spinner = ora(`Running \`${command} ${args.join(' ')}\`...`).start();
@@ -572,7 +573,7 @@ daemon
572
573
  pm2.disconnect();
573
574
  process.exit(1);
574
575
  }
575
-
576
+
576
577
  const daemonProcess = list.find(p => p.name === DAEMON_PM2_NAME);
577
578
  if (!daemonProcess) {
578
579
  console.log(chalk.yellow(`Daemon process "${DAEMON_PM2_NAME}" is not running or not managed by pm2.`));
@@ -657,7 +658,7 @@ daemon
657
658
  process.exit(1);
658
659
  }
659
660
  });
660
-
661
+
661
662
  daemon
662
663
  .command('delete')
663
664
  .alias('rm')
@@ -730,7 +731,7 @@ daemon
730
731
 
731
732
  await readAndPrint(outLogPath, 'Output');
732
733
  await readAndPrint(errLogPath, 'Error');
733
-
734
+
734
735
  pm2.disconnect();
735
736
  });
736
737
  } catch (error) {
@@ -739,4 +740,4 @@ daemon
739
740
  }
740
741
  });
741
742
 
742
- program.parse(process.argv);
743
+ program.parse(process.argv);