@softerist/heuristic-mcp 3.0.14 → 3.0.16

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 (49) hide show
  1. package/README.md +90 -82
  2. package/config.jsonc +173 -173
  3. package/features/ann-config.js +131 -0
  4. package/features/clear-cache.js +84 -0
  5. package/features/find-similar-code.js +291 -0
  6. package/features/hybrid-search.js +544 -0
  7. package/features/index-codebase.js +3268 -0
  8. package/features/lifecycle.js +1189 -0
  9. package/features/package-version.js +302 -0
  10. package/features/register.js +408 -0
  11. package/features/resources.js +156 -0
  12. package/features/set-workspace.js +265 -0
  13. package/index.js +136 -69
  14. package/lib/cache-ops.js +22 -22
  15. package/lib/cache-utils.js +565 -565
  16. package/lib/cache.js +1870 -1870
  17. package/lib/call-graph.js +396 -396
  18. package/lib/cli.js +1 -1
  19. package/lib/config.js +487 -427
  20. package/lib/constants.js +31 -0
  21. package/lib/embed-query-process.js +7 -7
  22. package/lib/embedding-process.js +7 -7
  23. package/lib/embedding-worker.js +299 -299
  24. package/lib/ignore-patterns.js +316 -316
  25. package/lib/json-worker.js +14 -14
  26. package/lib/json-writer.js +337 -337
  27. package/lib/logging.js +164 -164
  28. package/lib/memory-logger.js +13 -13
  29. package/lib/onnx-backend.js +193 -193
  30. package/lib/project-detector.js +84 -84
  31. package/lib/server-lifecycle.js +165 -165
  32. package/lib/settings-editor.js +754 -638
  33. package/lib/tokenizer.js +256 -256
  34. package/lib/utils.js +428 -428
  35. package/lib/vector-store-binary.js +627 -627
  36. package/lib/vector-store-sqlite.js +95 -95
  37. package/lib/workspace-env.js +28 -0
  38. package/mcp_config.json +9 -9
  39. package/package.json +86 -75
  40. package/scripts/clear-cache.js +20 -0
  41. package/scripts/download-model.js +43 -0
  42. package/scripts/mcp-launcher.js +49 -0
  43. package/scripts/postinstall.js +12 -0
  44. package/search-configs.js +36 -36
  45. package/.prettierrc +0 -7
  46. package/debug-pids.js +0 -30
  47. package/eslint.config.js +0 -36
  48. package/specs/plan.md +0 -23
  49. package/vitest.config.js +0 -39
@@ -1,316 +1,316 @@
1
- // Comprehensive ignore patterns based on industry best practices
2
- // Researched from gitignore templates and development community standards
3
-
4
- export const IGNORE_PATTERNS = {
5
- // JavaScript/Node.js
6
- javascript: [
7
- '**/node_modules/**',
8
- '**/.next/**',
9
- '**/dist/**',
10
- '**/build/**',
11
- '**/.nuxt/**',
12
- '**/.output/**',
13
- '**/.vercel/**',
14
- '**/.netlify/**',
15
- '**/out/**',
16
- '**/coverage/**',
17
- '**/.nyc_output/**',
18
- '**/npm-debug.log*',
19
- '**/yarn-debug.log*',
20
- '**/yarn-error.log*',
21
- '**/.pnpm-store/**',
22
- '**/.turbo/**',
23
- '**/package-lock.json',
24
- '**/pnpm-lock.yaml',
25
- '**/bun.lockb',
26
- '**/yarn.lock',
27
- ],
28
-
29
- // Python
30
- python: [
31
- '**/__pycache__/**',
32
- '**/*.pyc',
33
- '**/*.pyd',
34
- '**/.Python',
35
- '**/build/**',
36
- '**/develop-eggs/**',
37
- '**/dist/**',
38
- '**/downloads/**',
39
- '**/eggs/**',
40
- '**/.eggs/**',
41
- '**/lib/**',
42
- '**/lib64/**',
43
- '**/parts/**',
44
- '**/sdist/**',
45
- '**/var/**',
46
- '**/*.egg-info/**',
47
- '**/.installed.cfg',
48
- '**/*.egg',
49
- '**/.venv/**',
50
- '**/venv/**',
51
- '**/env/**',
52
- '**/ENV/**',
53
- '**/.pytest_cache/**',
54
- '**/htmlcov/**',
55
- '**/.tox/**',
56
- '**/.coverage',
57
- '**/.hypothesis/**',
58
- '**/.mypy_cache/**',
59
- '**/.ruff_cache/**',
60
- ],
61
-
62
- // Java/Maven
63
- java: [
64
- '**/target/**',
65
- '**/.gradle/**',
66
- '**/build/**',
67
- '**/.idea/**',
68
- '**/*.iml',
69
- '**/out/**',
70
- '**/gen/**',
71
- '**/classes/**',
72
- '**/.classpath',
73
- '**/.project',
74
- '**/.settings/**',
75
- '**/.m2/**',
76
- '**/*.class',
77
- '**/*.jar',
78
- '**/*.war',
79
- '**/*.ear',
80
- ],
81
-
82
- // Android
83
- android: [
84
- '**/.gradle/**',
85
- '**/build/**',
86
- '**/.idea/**',
87
- '**/*.iml',
88
- '**/local.properties',
89
- '**/captures/**',
90
- '**/.externalNativeBuild/**',
91
- '**/.cxx/**',
92
- '**/*.apk',
93
- '**/*.aar',
94
- '**/*.ap_',
95
- '**/*.dex',
96
- '**/google-services.json',
97
- '**/gradle-app.setting',
98
- '**/.navigation/**',
99
- ],
100
-
101
- // iOS/Swift
102
- ios: [
103
- '**/Pods/**',
104
- '**/DerivedData/**',
105
- '**/xcuserdata/**',
106
- '**/*.xcarchive',
107
- '**/build/**',
108
- '**/.build/**',
109
- '**/Packages/**',
110
- '**/.swiftpm/**',
111
- '**/Carthage/Build/**',
112
- '**/fastlane/report.xml',
113
- '**/fastlane/Preview.html',
114
- '**/fastlane/screenshots/**',
115
- '**/fastlane/test_output/**',
116
- '**/*.moved-aside',
117
- '**/*.xcuserstate',
118
- '**/*.hmap',
119
- '**/*.ipa',
120
- ],
121
-
122
- // Go
123
- go: ['**/vendor/**', '**/bin/**', '**/pkg/**', '**/*.exe', '**/*.test', '**/*.prof'],
124
-
125
- // PHP
126
- php: ['**/vendor/**', '**/composer.phar', '**/composer.lock', '**/.phpunit.result.cache'],
127
-
128
- // Rust
129
- rust: ['**/target/**', '**/Cargo.lock', '**/*.rs.bk'],
130
-
131
- // Ruby
132
- ruby: ['**/vendor/bundle/**', '**/.bundle/**', '**/Gemfile.lock', '**/.byebug_history'],
133
-
134
- // .NET/C#
135
- dotnet: [
136
- '**/bin/**',
137
- '**/obj/**',
138
- '**/packages/**',
139
- '**/*.user',
140
- '**/*.suo',
141
- '**/.vs/**',
142
- '**/node_modules/**',
143
- ],
144
-
145
- // Common (IDE, OS, Build tools)
146
- common: [
147
- // Version control
148
- '**/.git/**',
149
- '**/.svn/**',
150
- '**/.hg/**',
151
- '**/.bzr/**',
152
-
153
- // OS files
154
- '**/.DS_Store',
155
- '**/Thumbs.db',
156
- '**/desktop.ini',
157
- '**/$RECYCLE.BIN/**',
158
-
159
- // Backup files
160
- '**/*.bak',
161
- '**/*.backup',
162
- '**/*~',
163
- '**/*.swp',
164
- '**/*.swo',
165
- '**/*.swn',
166
- '**/#*#',
167
- '**/.#*',
168
-
169
- // Lock files (editor/runtime, not package managers)
170
- '**/*.lock',
171
- '**/.~lock*',
172
-
173
- // Logs
174
- '**/*.log',
175
- '**/logs/**',
176
- '**/*.log.*',
177
-
178
- // IDEs and Editors
179
- '**/.vscode/**',
180
- '**/.idea/**',
181
- '**/.sublime-project',
182
- '**/.sublime-workspace',
183
- '**/nbproject/**',
184
- '**/.settings/**',
185
- '**/.metadata/**',
186
- '**/.classpath',
187
- '**/.project',
188
- '**/.c9/**',
189
- '**/*.launch',
190
- '**/*.tmproj',
191
- '**/*.tmproject',
192
- '**/tmtags',
193
-
194
- // Vim
195
- '**/*~',
196
- '**/*.swp',
197
- '**/*.swo',
198
- '**/.*.sw?',
199
- '**/Session.vim',
200
-
201
- // Emacs
202
- '**/*~',
203
- '**/#*#',
204
- '**/.#*',
205
-
206
- // Environment files (secrets)
207
- '**/.env',
208
- '**/.env.local',
209
- '**/.env.*.local',
210
- '**/.env.production',
211
- '**/.env.development',
212
- '**/.env.test',
213
- '**/secrets.json',
214
- '**/secrets.yaml',
215
- '**/secrets.yml',
216
- '**/*.key',
217
- '**/*.pem',
218
- '**/*.crt',
219
- '**/*.cer',
220
- '**/*.p12',
221
- '**/*.pfx',
222
-
223
- // Temporary files
224
- '**/tmp/**',
225
- '**/temp/**',
226
- '**/*.tmp',
227
- '**/*.temp',
228
- '**/.cache/**',
229
-
230
- // Session & runtime
231
- '**/.sass-cache/**',
232
- '**/connect.lock',
233
- '**/*.pid',
234
- '**/*.seed',
235
- '**/*.pid.lock',
236
-
237
- // Coverage & test output
238
- '**/coverage/**',
239
- '**/.nyc_output/**',
240
- '**/test-results/**',
241
- '**/*.cover',
242
- '**/*.coverage',
243
- '**/htmlcov/**',
244
-
245
- // Documentation builds
246
- '**/docs/_build/**',
247
- '**/site/**',
248
-
249
- // Misc
250
- '**/*.orig',
251
- '**/core',
252
- '**/*.core',
253
- ],
254
- };
255
-
256
- // Map marker files to project types
257
- export const FILE_TYPE_MAP = {
258
- // JavaScript/Node
259
- 'package.json': 'javascript',
260
- 'package-lock.json': 'javascript',
261
- 'yarn.lock': 'javascript',
262
- 'pnpm-lock.yaml': 'javascript',
263
-
264
- // Python
265
- 'requirements.txt': 'python',
266
- Pipfile: 'python',
267
- 'pyproject.toml': 'python',
268
- 'setup.py': 'python',
269
-
270
- // Android
271
- 'build.gradle': 'android',
272
- 'build.gradle.kts': 'android',
273
- 'settings.gradle': 'android',
274
-
275
- // Java
276
- 'pom.xml': 'java',
277
-
278
- // iOS
279
- Podfile: 'ios',
280
- 'Package.swift': 'ios',
281
-
282
- // Go
283
- 'go.mod': 'go',
284
-
285
- // PHP
286
- 'composer.json': 'php',
287
-
288
- // Rust
289
- 'Cargo.toml': 'rust',
290
-
291
- // Ruby
292
- Gemfile: 'ruby',
293
-
294
- // .NET
295
- '*.csproj': 'dotnet',
296
- '*.sln': 'dotnet',
297
- };
298
-
299
- // Directories to skip during project detection (recursion)
300
- export const SKIP_DIRECTORIES = [
301
- 'node_modules',
302
- 'dist',
303
- 'build',
304
- 'target',
305
- 'vendor',
306
- 'coverage',
307
- 'htmlcov',
308
- 'typings',
309
- 'nltk_data',
310
- 'secrets',
311
- 'venv',
312
- 'env',
313
- '__pycache__',
314
- 'eggs',
315
- '.eggs',
316
- ];
1
+ // Comprehensive ignore patterns based on industry best practices
2
+ // Researched from gitignore templates and development community standards
3
+
4
+ export const IGNORE_PATTERNS = {
5
+ // JavaScript/Node.js
6
+ javascript: [
7
+ '**/node_modules/**',
8
+ '**/.next/**',
9
+ '**/dist/**',
10
+ '**/build/**',
11
+ '**/.nuxt/**',
12
+ '**/.output/**',
13
+ '**/.vercel/**',
14
+ '**/.netlify/**',
15
+ '**/out/**',
16
+ '**/coverage/**',
17
+ '**/.nyc_output/**',
18
+ '**/npm-debug.log*',
19
+ '**/yarn-debug.log*',
20
+ '**/yarn-error.log*',
21
+ '**/.pnpm-store/**',
22
+ '**/.turbo/**',
23
+ '**/package-lock.json',
24
+ '**/pnpm-lock.yaml',
25
+ '**/bun.lockb',
26
+ '**/yarn.lock',
27
+ ],
28
+
29
+ // Python
30
+ python: [
31
+ '**/__pycache__/**',
32
+ '**/*.pyc',
33
+ '**/*.pyd',
34
+ '**/.Python',
35
+ '**/build/**',
36
+ '**/develop-eggs/**',
37
+ '**/dist/**',
38
+ '**/downloads/**',
39
+ '**/eggs/**',
40
+ '**/.eggs/**',
41
+ '**/lib/**',
42
+ '**/lib64/**',
43
+ '**/parts/**',
44
+ '**/sdist/**',
45
+ '**/var/**',
46
+ '**/*.egg-info/**',
47
+ '**/.installed.cfg',
48
+ '**/*.egg',
49
+ '**/.venv/**',
50
+ '**/venv/**',
51
+ '**/env/**',
52
+ '**/ENV/**',
53
+ '**/.pytest_cache/**',
54
+ '**/htmlcov/**',
55
+ '**/.tox/**',
56
+ '**/.coverage',
57
+ '**/.hypothesis/**',
58
+ '**/.mypy_cache/**',
59
+ '**/.ruff_cache/**',
60
+ ],
61
+
62
+ // Java/Maven
63
+ java: [
64
+ '**/target/**',
65
+ '**/.gradle/**',
66
+ '**/build/**',
67
+ '**/.idea/**',
68
+ '**/*.iml',
69
+ '**/out/**',
70
+ '**/gen/**',
71
+ '**/classes/**',
72
+ '**/.classpath',
73
+ '**/.project',
74
+ '**/.settings/**',
75
+ '**/.m2/**',
76
+ '**/*.class',
77
+ '**/*.jar',
78
+ '**/*.war',
79
+ '**/*.ear',
80
+ ],
81
+
82
+ // Android
83
+ android: [
84
+ '**/.gradle/**',
85
+ '**/build/**',
86
+ '**/.idea/**',
87
+ '**/*.iml',
88
+ '**/local.properties',
89
+ '**/captures/**',
90
+ '**/.externalNativeBuild/**',
91
+ '**/.cxx/**',
92
+ '**/*.apk',
93
+ '**/*.aar',
94
+ '**/*.ap_',
95
+ '**/*.dex',
96
+ '**/google-services.json',
97
+ '**/gradle-app.setting',
98
+ '**/.navigation/**',
99
+ ],
100
+
101
+ // iOS/Swift
102
+ ios: [
103
+ '**/Pods/**',
104
+ '**/DerivedData/**',
105
+ '**/xcuserdata/**',
106
+ '**/*.xcarchive',
107
+ '**/build/**',
108
+ '**/.build/**',
109
+ '**/Packages/**',
110
+ '**/.swiftpm/**',
111
+ '**/Carthage/Build/**',
112
+ '**/fastlane/report.xml',
113
+ '**/fastlane/Preview.html',
114
+ '**/fastlane/screenshots/**',
115
+ '**/fastlane/test_output/**',
116
+ '**/*.moved-aside',
117
+ '**/*.xcuserstate',
118
+ '**/*.hmap',
119
+ '**/*.ipa',
120
+ ],
121
+
122
+ // Go
123
+ go: ['**/vendor/**', '**/bin/**', '**/pkg/**', '**/*.exe', '**/*.test', '**/*.prof'],
124
+
125
+ // PHP
126
+ php: ['**/vendor/**', '**/composer.phar', '**/composer.lock', '**/.phpunit.result.cache'],
127
+
128
+ // Rust
129
+ rust: ['**/target/**', '**/Cargo.lock', '**/*.rs.bk'],
130
+
131
+ // Ruby
132
+ ruby: ['**/vendor/bundle/**', '**/.bundle/**', '**/Gemfile.lock', '**/.byebug_history'],
133
+
134
+ // .NET/C#
135
+ dotnet: [
136
+ '**/bin/**',
137
+ '**/obj/**',
138
+ '**/packages/**',
139
+ '**/*.user',
140
+ '**/*.suo',
141
+ '**/.vs/**',
142
+ '**/node_modules/**',
143
+ ],
144
+
145
+ // Common (IDE, OS, Build tools)
146
+ common: [
147
+ // Version control
148
+ '**/.git/**',
149
+ '**/.svn/**',
150
+ '**/.hg/**',
151
+ '**/.bzr/**',
152
+
153
+ // OS files
154
+ '**/.DS_Store',
155
+ '**/Thumbs.db',
156
+ '**/desktop.ini',
157
+ '**/$RECYCLE.BIN/**',
158
+
159
+ // Backup files
160
+ '**/*.bak',
161
+ '**/*.backup',
162
+ '**/*~',
163
+ '**/*.swp',
164
+ '**/*.swo',
165
+ '**/*.swn',
166
+ '**/#*#',
167
+ '**/.#*',
168
+
169
+ // Lock files (editor/runtime, not package managers)
170
+ '**/*.lock',
171
+ '**/.~lock*',
172
+
173
+ // Logs
174
+ '**/*.log',
175
+ '**/logs/**',
176
+ '**/*.log.*',
177
+
178
+ // IDEs and Editors
179
+ '**/.vscode/**',
180
+ '**/.idea/**',
181
+ '**/.sublime-project',
182
+ '**/.sublime-workspace',
183
+ '**/nbproject/**',
184
+ '**/.settings/**',
185
+ '**/.metadata/**',
186
+ '**/.classpath',
187
+ '**/.project',
188
+ '**/.c9/**',
189
+ '**/*.launch',
190
+ '**/*.tmproj',
191
+ '**/*.tmproject',
192
+ '**/tmtags',
193
+
194
+ // Vim
195
+ '**/*~',
196
+ '**/*.swp',
197
+ '**/*.swo',
198
+ '**/.*.sw?',
199
+ '**/Session.vim',
200
+
201
+ // Emacs
202
+ '**/*~',
203
+ '**/#*#',
204
+ '**/.#*',
205
+
206
+ // Environment files (secrets)
207
+ '**/.env',
208
+ '**/.env.local',
209
+ '**/.env.*.local',
210
+ '**/.env.production',
211
+ '**/.env.development',
212
+ '**/.env.test',
213
+ '**/secrets.json',
214
+ '**/secrets.yaml',
215
+ '**/secrets.yml',
216
+ '**/*.key',
217
+ '**/*.pem',
218
+ '**/*.crt',
219
+ '**/*.cer',
220
+ '**/*.p12',
221
+ '**/*.pfx',
222
+
223
+ // Temporary files
224
+ '**/tmp/**',
225
+ '**/temp/**',
226
+ '**/*.tmp',
227
+ '**/*.temp',
228
+ '**/.cache/**',
229
+
230
+ // Session & runtime
231
+ '**/.sass-cache/**',
232
+ '**/connect.lock',
233
+ '**/*.pid',
234
+ '**/*.seed',
235
+ '**/*.pid.lock',
236
+
237
+ // Coverage & test output
238
+ '**/coverage/**',
239
+ '**/.nyc_output/**',
240
+ '**/test-results/**',
241
+ '**/*.cover',
242
+ '**/*.coverage',
243
+ '**/htmlcov/**',
244
+
245
+ // Documentation builds
246
+ '**/docs/_build/**',
247
+ '**/site/**',
248
+
249
+ // Misc
250
+ '**/*.orig',
251
+ '**/core',
252
+ '**/*.core',
253
+ ],
254
+ };
255
+
256
+ // Map marker files to project types
257
+ export const FILE_TYPE_MAP = {
258
+ // JavaScript/Node
259
+ 'package.json': 'javascript',
260
+ 'package-lock.json': 'javascript',
261
+ 'yarn.lock': 'javascript',
262
+ 'pnpm-lock.yaml': 'javascript',
263
+
264
+ // Python
265
+ 'requirements.txt': 'python',
266
+ Pipfile: 'python',
267
+ 'pyproject.toml': 'python',
268
+ 'setup.py': 'python',
269
+
270
+ // Android
271
+ 'build.gradle': 'android',
272
+ 'build.gradle.kts': 'android',
273
+ 'settings.gradle': 'android',
274
+
275
+ // Java
276
+ 'pom.xml': 'java',
277
+
278
+ // iOS
279
+ Podfile: 'ios',
280
+ 'Package.swift': 'ios',
281
+
282
+ // Go
283
+ 'go.mod': 'go',
284
+
285
+ // PHP
286
+ 'composer.json': 'php',
287
+
288
+ // Rust
289
+ 'Cargo.toml': 'rust',
290
+
291
+ // Ruby
292
+ Gemfile: 'ruby',
293
+
294
+ // .NET
295
+ '*.csproj': 'dotnet',
296
+ '*.sln': 'dotnet',
297
+ };
298
+
299
+ // Directories to skip during project detection (recursion)
300
+ export const SKIP_DIRECTORIES = [
301
+ 'node_modules',
302
+ 'dist',
303
+ 'build',
304
+ 'target',
305
+ 'vendor',
306
+ 'coverage',
307
+ 'htmlcov',
308
+ 'typings',
309
+ 'nltk_data',
310
+ 'secrets',
311
+ 'venv',
312
+ 'env',
313
+ '__pycache__',
314
+ 'eggs',
315
+ '.eggs',
316
+ ];
@@ -1,14 +1,14 @@
1
- import fs from 'fs/promises';
2
- import { parentPort, workerData } from 'worker_threads';
3
-
4
- async function loadJson() {
5
- try {
6
- const data = await fs.readFile(workerData.filePath, 'utf-8');
7
- const parsed = JSON.parse(data);
8
- parentPort?.postMessage({ ok: true, data: parsed });
9
- } catch (error) {
10
- parentPort?.postMessage({ ok: false, error: error.message });
11
- }
12
- }
13
-
14
- void loadJson();
1
+ import fs from 'fs/promises';
2
+ import { parentPort, workerData } from 'worker_threads';
3
+
4
+ async function loadJson() {
5
+ try {
6
+ const data = await fs.readFile(workerData.filePath, 'utf-8');
7
+ const parsed = JSON.parse(data);
8
+ parentPort?.postMessage({ ok: true, data: parsed });
9
+ } catch (error) {
10
+ parentPort?.postMessage({ ok: false, error: error.message });
11
+ }
12
+ }
13
+
14
+ void loadJson();