@liendev/core 0.24.0 → 0.28.0
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/dist/frameworks/python/config.d.ts +6 -0
- package/dist/frameworks/python/config.d.ts.map +1 -0
- package/dist/frameworks/python/config.js +73 -0
- package/dist/frameworks/python/config.js.map +1 -0
- package/dist/frameworks/python/detector.d.ts +7 -0
- package/dist/frameworks/python/detector.d.ts.map +1 -0
- package/dist/frameworks/python/detector.js +129 -0
- package/dist/frameworks/python/detector.js.map +1 -0
- package/dist/frameworks/registry.d.ts +1 -1
- package/dist/frameworks/registry.d.ts.map +1 -1
- package/dist/frameworks/registry.js +3 -1
- package/dist/frameworks/registry.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/indexer/ast/chunker.d.ts.map +1 -1
- package/dist/indexer/ast/chunker.js +86 -50
- package/dist/indexer/ast/chunker.js.map +1 -1
- package/dist/indexer/ast/extractors/index.d.ts +25 -0
- package/dist/indexer/ast/extractors/index.d.ts.map +1 -0
- package/dist/indexer/ast/extractors/index.js +49 -0
- package/dist/indexer/ast/extractors/index.js.map +1 -0
- package/dist/indexer/ast/extractors/javascript.d.ts +32 -0
- package/dist/indexer/ast/extractors/javascript.d.ts.map +1 -0
- package/dist/indexer/ast/extractors/javascript.js +97 -0
- package/dist/indexer/ast/extractors/javascript.js.map +1 -0
- package/dist/indexer/ast/extractors/php.d.ts +34 -0
- package/dist/indexer/ast/extractors/php.d.ts.map +1 -0
- package/dist/indexer/ast/extractors/php.js +79 -0
- package/dist/indexer/ast/extractors/php.js.map +1 -0
- package/dist/indexer/ast/extractors/python.d.ts +22 -0
- package/dist/indexer/ast/extractors/python.d.ts.map +1 -0
- package/dist/indexer/ast/extractors/python.js +57 -0
- package/dist/indexer/ast/extractors/python.js.map +1 -0
- package/dist/indexer/ast/extractors/types.d.ts +52 -0
- package/dist/indexer/ast/extractors/types.d.ts.map +1 -0
- package/dist/indexer/ast/extractors/types.js +2 -0
- package/dist/indexer/ast/extractors/types.js.map +1 -0
- package/dist/indexer/ast/symbols.d.ts +72 -1
- package/dist/indexer/ast/symbols.d.ts.map +1 -1
- package/dist/indexer/ast/symbols.js +520 -0
- package/dist/indexer/ast/symbols.js.map +1 -1
- package/dist/indexer/chunk-batch-processor.d.ts +3 -1
- package/dist/indexer/chunk-batch-processor.d.ts.map +1 -1
- package/dist/indexer/chunk-batch-processor.js +3 -1
- package/dist/indexer/chunk-batch-processor.js.map +1 -1
- package/dist/indexer/content-hash.d.ts +20 -0
- package/dist/indexer/content-hash.d.ts.map +1 -0
- package/dist/indexer/content-hash.js +91 -0
- package/dist/indexer/content-hash.js.map +1 -0
- package/dist/indexer/incremental.d.ts.map +1 -1
- package/dist/indexer/incremental.js +78 -56
- package/dist/indexer/incremental.js.map +1 -1
- package/dist/indexer/index.d.ts.map +1 -1
- package/dist/indexer/index.js +52 -37
- package/dist/indexer/index.js.map +1 -1
- package/dist/indexer/manifest.d.ts +35 -2
- package/dist/indexer/manifest.d.ts.map +1 -1
- package/dist/indexer/manifest.js +114 -18
- package/dist/indexer/manifest.js.map +1 -1
- package/dist/indexer/types.d.ts +18 -0
- package/dist/indexer/types.d.ts.map +1 -1
- package/dist/vectordb/batch-insert.d.ts.map +1 -1
- package/dist/vectordb/batch-insert.js +97 -23
- package/dist/vectordb/batch-insert.js.map +1 -1
- package/dist/vectordb/qdrant-payload-mapper.d.ts +11 -0
- package/dist/vectordb/qdrant-payload-mapper.d.ts.map +1 -1
- package/dist/vectordb/qdrant-payload-mapper.js +33 -0
- package/dist/vectordb/qdrant-payload-mapper.js.map +1 -1
- package/dist/vectordb/query.d.ts.map +1 -1
- package/dist/vectordb/query.js +107 -10
- package/dist/vectordb/query.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/frameworks/python/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,eAAe,CAAC,CA4E1B"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate Python framework configuration
|
|
3
|
+
*/
|
|
4
|
+
export async function generatePythonConfig(_rootDir, _relativePath) {
|
|
5
|
+
return {
|
|
6
|
+
include: [
|
|
7
|
+
// Python source code - broad patterns
|
|
8
|
+
'**/*.py',
|
|
9
|
+
// Documentation
|
|
10
|
+
'**/*.md',
|
|
11
|
+
'**/*.mdx',
|
|
12
|
+
'docs/**/*.md',
|
|
13
|
+
'README.md',
|
|
14
|
+
'CHANGELOG.md',
|
|
15
|
+
],
|
|
16
|
+
exclude: [
|
|
17
|
+
// Virtual environments (CRITICAL)
|
|
18
|
+
'**/venv/**',
|
|
19
|
+
'venv/**',
|
|
20
|
+
'**/.venv/**',
|
|
21
|
+
'.venv/**',
|
|
22
|
+
'**/env/**',
|
|
23
|
+
'env/**',
|
|
24
|
+
'**/.env/**', // .env directory (virtual environment)
|
|
25
|
+
'.env', // .env file (environment variables)
|
|
26
|
+
'**/virtualenv/**',
|
|
27
|
+
'virtualenv/**',
|
|
28
|
+
// Python build artifacts
|
|
29
|
+
'**/__pycache__/**',
|
|
30
|
+
'__pycache__/**',
|
|
31
|
+
'**/*.pyc',
|
|
32
|
+
'**/*.pyo',
|
|
33
|
+
'**/*.pyd',
|
|
34
|
+
'**/*.egg-info/**',
|
|
35
|
+
'*.egg-info/**',
|
|
36
|
+
'**/dist/**',
|
|
37
|
+
'dist/**',
|
|
38
|
+
'**/build/**',
|
|
39
|
+
'build/**',
|
|
40
|
+
'**/eggs/**',
|
|
41
|
+
'eggs/**',
|
|
42
|
+
'**/*.egg/**',
|
|
43
|
+
// Test artifacts
|
|
44
|
+
'**/.tox/**',
|
|
45
|
+
'.tox/**',
|
|
46
|
+
'**/.pytest_cache/**',
|
|
47
|
+
'.pytest_cache/**',
|
|
48
|
+
'**/.coverage/**',
|
|
49
|
+
'.coverage/**',
|
|
50
|
+
'**/htmlcov/**',
|
|
51
|
+
'htmlcov/**',
|
|
52
|
+
'**/.mypy_cache/**',
|
|
53
|
+
'.mypy_cache/**',
|
|
54
|
+
// Documentation build
|
|
55
|
+
'**/docs/_build/**',
|
|
56
|
+
'docs/_build/**',
|
|
57
|
+
// Node.js dependencies (for mixed projects)
|
|
58
|
+
'**/node_modules/**',
|
|
59
|
+
'node_modules/**',
|
|
60
|
+
// Vendor directories
|
|
61
|
+
'**/vendor/**',
|
|
62
|
+
'vendor/**',
|
|
63
|
+
// IDE
|
|
64
|
+
'**/.idea/**',
|
|
65
|
+
'.idea/**',
|
|
66
|
+
'**/.vscode/**',
|
|
67
|
+
'.vscode/**',
|
|
68
|
+
// Migrations (often auto-generated)
|
|
69
|
+
'**/migrations/**',
|
|
70
|
+
],
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/frameworks/python/config.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,QAAgB,EAChB,aAAqB;IAErB,OAAO;QACL,OAAO,EAAE;YACP,sCAAsC;YACtC,SAAS;YAET,gBAAgB;YAChB,SAAS;YACT,UAAU;YACV,cAAc;YACd,WAAW;YACX,cAAc;SACf;QACD,OAAO,EAAE;YACP,kCAAkC;YAClC,YAAY;YACZ,SAAS;YACT,aAAa;YACb,UAAU;YACV,WAAW;YACX,QAAQ;YACR,YAAY,EAAK,uCAAuC;YACxD,MAAM,EAAW,oCAAoC;YACrD,kBAAkB;YAClB,eAAe;YAEf,yBAAyB;YACzB,mBAAmB;YACnB,gBAAgB;YAChB,UAAU;YACV,UAAU;YACV,UAAU;YACV,kBAAkB;YAClB,eAAe;YACf,YAAY;YACZ,SAAS;YACT,aAAa;YACb,UAAU;YACV,YAAY;YACZ,SAAS;YACT,aAAa;YAEb,iBAAiB;YACjB,YAAY;YACZ,SAAS;YACT,qBAAqB;YACrB,kBAAkB;YAClB,iBAAiB;YACjB,cAAc;YACd,eAAe;YACf,YAAY;YACZ,mBAAmB;YACnB,gBAAgB;YAEhB,sBAAsB;YACtB,mBAAmB;YACnB,gBAAgB;YAEhB,4CAA4C;YAC5C,oBAAoB;YACpB,iBAAiB;YAEjB,qBAAqB;YACrB,cAAc;YACd,WAAW;YAEX,MAAM;YACN,aAAa;YACb,UAAU;YACV,eAAe;YACf,YAAY;YAEZ,oCAAoC;YACpC,kBAAkB;SACnB;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { FrameworkDetector } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Python framework detector
|
|
4
|
+
* Detects Python projects via requirements.txt, pyproject.toml, setup.py, or Pipfile
|
|
5
|
+
*/
|
|
6
|
+
export declare const pythonDetector: FrameworkDetector;
|
|
7
|
+
//# sourceMappingURL=detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../../src/frameworks/python/detector.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAmB,MAAM,aAAa,CAAC;AAGjE;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,iBAsI5B,CAAC"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import fs from 'fs/promises';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { generatePythonConfig } from './config.js';
|
|
4
|
+
/**
|
|
5
|
+
* Python framework detector
|
|
6
|
+
* Detects Python projects via requirements.txt, pyproject.toml, setup.py, or Pipfile
|
|
7
|
+
*/
|
|
8
|
+
export const pythonDetector = {
|
|
9
|
+
name: 'python',
|
|
10
|
+
priority: 50, // Generic, yields to specific frameworks like Django
|
|
11
|
+
async detect(rootDir, relativePath) {
|
|
12
|
+
const fullPath = path.join(rootDir, relativePath);
|
|
13
|
+
const result = {
|
|
14
|
+
detected: false,
|
|
15
|
+
name: 'python',
|
|
16
|
+
path: relativePath,
|
|
17
|
+
confidence: 'low',
|
|
18
|
+
evidence: [],
|
|
19
|
+
};
|
|
20
|
+
// Check for Python project indicators
|
|
21
|
+
const indicators = [
|
|
22
|
+
{ file: 'requirements.txt', display: 'requirements.txt' },
|
|
23
|
+
{ file: 'pyproject.toml', display: 'pyproject.toml' },
|
|
24
|
+
{ file: 'setup.py', display: 'setup.py' },
|
|
25
|
+
{ file: 'Pipfile', display: 'Pipfile' },
|
|
26
|
+
{ file: 'setup.cfg', display: 'setup.cfg' },
|
|
27
|
+
];
|
|
28
|
+
let foundIndicator = false;
|
|
29
|
+
// Check all indicators to provide complete evidence
|
|
30
|
+
for (const indicator of indicators) {
|
|
31
|
+
try {
|
|
32
|
+
const filePath = path.join(fullPath, indicator.file);
|
|
33
|
+
await fs.access(filePath);
|
|
34
|
+
result.evidence.push(`Found ${indicator.display}`);
|
|
35
|
+
foundIndicator = true;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// File doesn't exist, continue checking
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (!foundIndicator) {
|
|
42
|
+
// No Python project indicators found
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
// At this point, we know it's a Python project
|
|
46
|
+
result.detected = true;
|
|
47
|
+
result.confidence = 'high';
|
|
48
|
+
// Check for Django (manage.py is a strong indicator)
|
|
49
|
+
const managePyPath = path.join(fullPath, 'manage.py');
|
|
50
|
+
try {
|
|
51
|
+
const content = await fs.readFile(managePyPath, 'utf-8');
|
|
52
|
+
if (content.includes('django.core.management') || content.includes('DJANGO_SETTINGS_MODULE')) {
|
|
53
|
+
result.evidence.push('Django project detected (manage.py)');
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
// No manage.py
|
|
58
|
+
}
|
|
59
|
+
// Check for common Python directories
|
|
60
|
+
const pythonDirs = ['src', 'lib', 'app', 'tests', 'test'];
|
|
61
|
+
let foundDirs = 0;
|
|
62
|
+
for (const dir of pythonDirs) {
|
|
63
|
+
try {
|
|
64
|
+
const dirPath = path.join(fullPath, dir);
|
|
65
|
+
const stats = await fs.stat(dirPath);
|
|
66
|
+
if (stats.isDirectory()) {
|
|
67
|
+
foundDirs++;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
// Directory doesn't exist
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (foundDirs > 0) {
|
|
75
|
+
result.evidence.push(`Found Python project structure (${foundDirs} directories)`);
|
|
76
|
+
}
|
|
77
|
+
// Try to detect Python version from pyproject.toml
|
|
78
|
+
try {
|
|
79
|
+
const pyprojectPath = path.join(fullPath, 'pyproject.toml');
|
|
80
|
+
const content = await fs.readFile(pyprojectPath, 'utf-8');
|
|
81
|
+
// Look for python version requirement
|
|
82
|
+
const versionMatch = content.match(/python\s*[>=<]+\s*["']?(\d+\.\d+)/i);
|
|
83
|
+
if (versionMatch) {
|
|
84
|
+
result.version = versionMatch[1];
|
|
85
|
+
result.evidence.push(`Python ${versionMatch[1]}+`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
// No pyproject.toml or couldn't parse
|
|
90
|
+
}
|
|
91
|
+
// Check for testing frameworks in requirements.txt
|
|
92
|
+
try {
|
|
93
|
+
const requirementsPath = path.join(fullPath, 'requirements.txt');
|
|
94
|
+
const content = await fs.readFile(requirementsPath, 'utf-8');
|
|
95
|
+
const testFrameworks = [
|
|
96
|
+
{ pattern: /pytest/i, display: 'pytest' },
|
|
97
|
+
{ pattern: /unittest/i, display: 'unittest' },
|
|
98
|
+
{ pattern: /nose/i, display: 'nose' },
|
|
99
|
+
];
|
|
100
|
+
for (const framework of testFrameworks) {
|
|
101
|
+
if (framework.pattern.test(content)) {
|
|
102
|
+
result.evidence.push(`${framework.display} test framework detected`);
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// Check for common frameworks - collect all detected frameworks
|
|
107
|
+
const frameworks = [
|
|
108
|
+
{ pattern: /django/i, display: 'Django' },
|
|
109
|
+
{ pattern: /flask/i, display: 'Flask' },
|
|
110
|
+
{ pattern: /fastapi/i, display: 'FastAPI' },
|
|
111
|
+
{ pattern: /tornado/i, display: 'Tornado' },
|
|
112
|
+
{ pattern: /celery/i, display: 'Celery' },
|
|
113
|
+
];
|
|
114
|
+
for (const framework of frameworks) {
|
|
115
|
+
if (framework.pattern.test(content)) {
|
|
116
|
+
result.evidence.push(`${framework.display} detected`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
// No requirements.txt
|
|
122
|
+
}
|
|
123
|
+
return result;
|
|
124
|
+
},
|
|
125
|
+
async generateConfig(rootDir, relativePath) {
|
|
126
|
+
return generatePythonConfig(rootDir, relativePath);
|
|
127
|
+
},
|
|
128
|
+
};
|
|
129
|
+
//# sourceMappingURL=detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detector.js","sourceRoot":"","sources":["../../../src/frameworks/python/detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { FrameworkDetector } from './types.js';
|
|
|
5
5
|
*
|
|
6
6
|
* Order doesn't matter for detection as priority system handles conflicts,
|
|
7
7
|
* but listed here in order from generic to specific for clarity:
|
|
8
|
-
* - Generic language detectors (Node.js, PHP)
|
|
8
|
+
* - Generic language detectors (Node.js, PHP, Python)
|
|
9
9
|
* - Specific framework detectors (Laravel, Shopify)
|
|
10
10
|
*/
|
|
11
11
|
export declare const frameworkDetectors: FrameworkDetector[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/frameworks/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/frameworks/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAO/C;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,EAAE,iBAAiB,EAMjD,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CASnE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAEhF"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { nodejsDetector } from './nodejs/detector.js';
|
|
2
2
|
import { phpDetector } from './php/detector.js';
|
|
3
|
+
import { pythonDetector } from './python/detector.js';
|
|
3
4
|
import { laravelDetector } from './laravel/detector.js';
|
|
4
5
|
import { shopifyDetector } from './shopify/detector.js';
|
|
5
6
|
/**
|
|
@@ -8,12 +9,13 @@ import { shopifyDetector } from './shopify/detector.js';
|
|
|
8
9
|
*
|
|
9
10
|
* Order doesn't matter for detection as priority system handles conflicts,
|
|
10
11
|
* but listed here in order from generic to specific for clarity:
|
|
11
|
-
* - Generic language detectors (Node.js, PHP)
|
|
12
|
+
* - Generic language detectors (Node.js, PHP, Python)
|
|
12
13
|
* - Specific framework detectors (Laravel, Shopify)
|
|
13
14
|
*/
|
|
14
15
|
export const frameworkDetectors = [
|
|
15
16
|
nodejsDetector,
|
|
16
17
|
phpDetector,
|
|
18
|
+
pythonDetector,
|
|
17
19
|
laravelDetector,
|
|
18
20
|
shopifyDetector,
|
|
19
21
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/frameworks/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAwB;IACrD,cAAc;IACd,WAAW;IACX,eAAe;IACf,eAAe;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAA2B;IAC3D,8BAA8B;IAC9B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxE,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,uBAAuB,QAAQ,CAAC,IAAI,mCAAmC,CAAC,CAAC;QACtF,OAAO;IACT,CAAC;IAED,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACvD,CAAC"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/frameworks/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAwB;IACrD,cAAc;IACd,WAAW;IACX,cAAc;IACd,eAAe;IACf,eAAe;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAA2B;IAC3D,8BAA8B;IAC9B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxE,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,uBAAuB,QAAQ,CAAC,IAAI,mCAAmC,CAAC,CAAC;QACtF,OAAO;IACT,CAAC;IAED,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACvD,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -32,6 +32,7 @@ export { chunkFile } from './indexer/chunker.js';
|
|
|
32
32
|
export { scanCodebase, scanCodebaseWithFrameworks, detectLanguage } from './indexer/scanner.js';
|
|
33
33
|
export { indexSingleFile, indexMultipleFiles, normalizeToRelativePath } from './indexer/incremental.js';
|
|
34
34
|
export { extractSymbols } from './indexer/symbol-extractor.js';
|
|
35
|
+
export { computeContentHash, isHashAlgorithmCompatible } from './indexer/content-hash.js';
|
|
35
36
|
export { LocalEmbeddings } from './embeddings/local.js';
|
|
36
37
|
export { CachedEmbeddings } from './embeddings/cache.js';
|
|
37
38
|
export type { EmbeddingService } from './embeddings/types.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAMH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,0BAA0B,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACxG,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -33,6 +33,7 @@ export { chunkFile } from './indexer/chunker.js';
|
|
|
33
33
|
export { scanCodebase, scanCodebaseWithFrameworks, detectLanguage } from './indexer/scanner.js';
|
|
34
34
|
export { indexSingleFile, indexMultipleFiles, normalizeToRelativePath } from './indexer/incremental.js';
|
|
35
35
|
export { extractSymbols } from './indexer/symbol-extractor.js';
|
|
36
|
+
export { computeContentHash, isHashAlgorithmCompatible } from './indexer/content-hash.js';
|
|
36
37
|
// =============================================================================
|
|
37
38
|
// EMBEDDINGS
|
|
38
39
|
// =============================================================================
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,gFAAgF;AAChF,WAAW;AACX,gFAAgF;AAEhF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,0BAA0B,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACxG,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunker.d.ts","sourceRoot":"","sources":["../../../src/indexer/ast/chunker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"chunker.d.ts","sourceRoot":"","sources":["../../../src/indexer/ast/chunker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAqB,MAAM,YAAY,CAAC;AAM9D,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAwGD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,eAAoB,GAC5B,QAAQ,EAAE,CAyCZ;AAmSD;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEtD"}
|
|
@@ -1,7 +1,59 @@
|
|
|
1
1
|
import { parseAST, detectLanguage, isASTSupported } from './parser.js';
|
|
2
|
-
import { extractSymbolInfo, extractImports } from './symbols.js';
|
|
2
|
+
import { extractSymbolInfo, extractImports, extractImportedSymbols, extractExports, extractCallSites } from './symbols.js';
|
|
3
3
|
import { calculateCognitiveComplexity, calculateHalstead } from './complexity/index.js';
|
|
4
4
|
import { getTraverser } from './traversers/index.js';
|
|
5
|
+
/**
|
|
6
|
+
* Validate language support and parse the file.
|
|
7
|
+
* @throws Error if language not supported or parsing fails
|
|
8
|
+
*/
|
|
9
|
+
function parseAndValidate(filepath, content) {
|
|
10
|
+
const language = detectLanguage(filepath);
|
|
11
|
+
if (!language) {
|
|
12
|
+
throw new Error(`Unsupported language for file: ${filepath}`);
|
|
13
|
+
}
|
|
14
|
+
const parseResult = parseAST(content, language);
|
|
15
|
+
if (!parseResult.tree) {
|
|
16
|
+
throw new Error(`Failed to parse ${filepath}: ${parseResult.error}`);
|
|
17
|
+
}
|
|
18
|
+
return { language, rootNode: parseResult.tree.rootNode };
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Prepare AST context by extracting imports, exports, and symbols.
|
|
22
|
+
*/
|
|
23
|
+
function prepareASTContext(content, rootNode, language) {
|
|
24
|
+
return {
|
|
25
|
+
lines: content.split('\n'),
|
|
26
|
+
fileImports: extractImports(rootNode),
|
|
27
|
+
importedSymbols: extractImportedSymbols(rootNode),
|
|
28
|
+
fileExports: extractExports(rootNode, language),
|
|
29
|
+
traverser: getTraverser(language),
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Process a single top-level node into a chunk.
|
|
34
|
+
*/
|
|
35
|
+
function processTopLevelNode(node, filepath, content, context, language, tenantContext) {
|
|
36
|
+
const { lines, fileImports, fileExports, importedSymbols, traverser } = context;
|
|
37
|
+
// For variable declarations, try to find the function inside
|
|
38
|
+
let actualNode = node;
|
|
39
|
+
if (traverser.isDeclarationWithFunction(node)) {
|
|
40
|
+
const declInfo = traverser.findFunctionInDeclaration(node);
|
|
41
|
+
if (declInfo.functionNode) {
|
|
42
|
+
actualNode = declInfo.functionNode;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// For methods, find the parent container name (e.g., class name)
|
|
46
|
+
const parentClassName = traverser.findParentContainerName(actualNode);
|
|
47
|
+
const symbolInfo = extractSymbolInfo(actualNode, content, parentClassName, language);
|
|
48
|
+
const nodeContent = getNodeContent(node, lines);
|
|
49
|
+
return createChunk(filepath, node, nodeContent, symbolInfo, fileImports, language, tenantContext, fileExports, importedSymbols);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Process all top-level nodes into chunks.
|
|
53
|
+
*/
|
|
54
|
+
function processTopLevelNodes(topLevelNodes, filepath, content, context, language, tenantContext) {
|
|
55
|
+
return topLevelNodes.map(node => processTopLevelNode(node, filepath, content, context, language, tenantContext));
|
|
56
|
+
}
|
|
5
57
|
/**
|
|
6
58
|
* Chunk a file using AST-based semantic boundaries
|
|
7
59
|
*
|
|
@@ -21,55 +73,23 @@ import { getTraverser } from './traversers/index.js';
|
|
|
21
73
|
*/
|
|
22
74
|
export function chunkByAST(filepath, content, options = {}) {
|
|
23
75
|
const { minChunkSize = 5, repoId, orgId } = options;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
//
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
throw new Error(`Failed to parse ${filepath}: ${parseResult.error}`);
|
|
34
|
-
}
|
|
35
|
-
const chunks = [];
|
|
36
|
-
const lines = content.split('\n');
|
|
37
|
-
const rootNode = parseResult.tree.rootNode;
|
|
38
|
-
// Get language-specific traverser
|
|
39
|
-
const traverser = getTraverser(language);
|
|
40
|
-
// Extract file-level imports once
|
|
41
|
-
const fileImports = extractImports(rootNode);
|
|
42
|
-
// Find all top-level function and class declarations
|
|
43
|
-
const topLevelNodes = findTopLevelNodes(rootNode, traverser);
|
|
44
|
-
for (const node of topLevelNodes) {
|
|
45
|
-
// For variable declarations, try to find the function inside
|
|
46
|
-
let actualNode = node;
|
|
47
|
-
if (traverser.isDeclarationWithFunction(node)) {
|
|
48
|
-
const declInfo = traverser.findFunctionInDeclaration(node);
|
|
49
|
-
if (declInfo.functionNode) {
|
|
50
|
-
actualNode = declInfo.functionNode;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
// For methods, find the parent container name (e.g., class name)
|
|
54
|
-
const parentClassName = traverser.findParentContainerName(actualNode);
|
|
55
|
-
const symbolInfo = extractSymbolInfo(actualNode, content, parentClassName, language);
|
|
56
|
-
// Extract the code for this node (use original node for full declaration)
|
|
57
|
-
const nodeContent = getNodeContent(node, lines);
|
|
58
|
-
// Create a chunk for this semantic unit
|
|
59
|
-
// Note: Large functions are kept as single chunks (may exceed maxChunkSize)
|
|
60
|
-
// This preserves semantic boundaries - better than splitting mid-function
|
|
61
|
-
chunks.push(createChunk(filepath, node, nodeContent, symbolInfo, fileImports, language, { repoId, orgId }));
|
|
62
|
-
}
|
|
63
|
-
// Handle remaining code (imports, exports, top-level statements)
|
|
76
|
+
const tenantContext = { repoId, orgId };
|
|
77
|
+
// Parse and validate
|
|
78
|
+
const { language, rootNode } = parseAndValidate(filepath, content);
|
|
79
|
+
// Prepare context
|
|
80
|
+
const context = prepareASTContext(content, rootNode, language);
|
|
81
|
+
// Find and process top-level nodes
|
|
82
|
+
const topLevelNodes = findTopLevelNodes(rootNode, context.traverser);
|
|
83
|
+
const topLevelChunks = processTopLevelNodes(topLevelNodes, filepath, content, context, language, tenantContext);
|
|
84
|
+
// Extract uncovered code (imports, exports, top-level statements)
|
|
64
85
|
const coveredRanges = topLevelNodes.map(n => ({
|
|
65
86
|
start: n.startPosition.row,
|
|
66
87
|
end: n.endPosition.row,
|
|
67
88
|
}));
|
|
68
|
-
const uncoveredChunks = extractUncoveredCode(lines, coveredRanges, filepath, minChunkSize, fileImports, language,
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
return chunks;
|
|
89
|
+
const uncoveredChunks = extractUncoveredCode(context.lines, coveredRanges, filepath, minChunkSize, context.fileImports, language, tenantContext, context.fileExports, context.importedSymbols);
|
|
90
|
+
// Combine and sort by line number
|
|
91
|
+
return [...topLevelChunks, ...uncoveredChunks]
|
|
92
|
+
.sort((a, b) => a.metadata.startLine - b.metadata.startLine);
|
|
73
93
|
}
|
|
74
94
|
/** Check if node is a function-containing declaration at top level */
|
|
75
95
|
function isFunctionDeclaration(node, depth, traverser) {
|
|
@@ -159,7 +179,7 @@ function getChunkType(symbolInfo) {
|
|
|
159
179
|
/**
|
|
160
180
|
* Create a chunk from an AST node
|
|
161
181
|
*/
|
|
162
|
-
function createChunk(filepath, node, content, symbolInfo, imports, language, tenantContext) {
|
|
182
|
+
function createChunk(filepath, node, content, symbolInfo, imports, language, tenantContext, fileExports, importedSymbols) {
|
|
163
183
|
const symbols = buildLegacySymbols(symbolInfo);
|
|
164
184
|
const shouldCalcComplexity = symbolInfo?.type && COMPLEXITY_SYMBOL_TYPES.has(symbolInfo.type);
|
|
165
185
|
// Calculate complexity metrics only for functions and methods
|
|
@@ -170,6 +190,10 @@ function createChunk(filepath, node, content, symbolInfo, imports, language, ten
|
|
|
170
190
|
const halstead = shouldCalcComplexity
|
|
171
191
|
? calculateHalstead(node, language)
|
|
172
192
|
: undefined;
|
|
193
|
+
// Extract call sites for functions and methods
|
|
194
|
+
const callSites = shouldCalcComplexity
|
|
195
|
+
? extractCallSites(node)
|
|
196
|
+
: undefined;
|
|
173
197
|
return {
|
|
174
198
|
content,
|
|
175
199
|
metadata: {
|
|
@@ -187,6 +211,15 @@ function createChunk(filepath, node, content, symbolInfo, imports, language, ten
|
|
|
187
211
|
parameters: symbolInfo?.parameters,
|
|
188
212
|
signature: symbolInfo?.signature,
|
|
189
213
|
imports,
|
|
214
|
+
// Symbol-level dependency tracking
|
|
215
|
+
// NOTE: `exports` and `importedSymbols` are file-level concepts, but we deliberately
|
|
216
|
+
// attach them to every chunk from the same file (including "uncovered" chunks).
|
|
217
|
+
// This duplicates some metadata, but greatly simplifies dependency analysis,
|
|
218
|
+
// since consumers can inspect a single chunk in isolation without additional lookups.
|
|
219
|
+
// This increases storage overhead but is acceptable given typical file sizes and chunk counts.
|
|
220
|
+
...(fileExports && fileExports.length > 0 && { exports: fileExports }),
|
|
221
|
+
...(importedSymbols && Object.keys(importedSymbols).length > 0 && { importedSymbols }),
|
|
222
|
+
...(callSites && callSites.length > 0 && { callSites }),
|
|
190
223
|
// Halstead metrics
|
|
191
224
|
halsteadVolume: halstead?.volume,
|
|
192
225
|
halsteadDifficulty: halstead?.difficulty,
|
|
@@ -228,7 +261,7 @@ function findUncoveredRanges(coveredRanges, totalLines) {
|
|
|
228
261
|
/**
|
|
229
262
|
* Create a chunk from a line range
|
|
230
263
|
*/
|
|
231
|
-
function createChunkFromRange(range, lines, filepath, language, imports, tenantContext) {
|
|
264
|
+
function createChunkFromRange(range, lines, filepath, language, imports, tenantContext, fileExports, importedSymbols) {
|
|
232
265
|
const uncoveredLines = lines.slice(range.start, range.end + 1);
|
|
233
266
|
const content = uncoveredLines.join('\n').trim();
|
|
234
267
|
return {
|
|
@@ -242,6 +275,9 @@ function createChunkFromRange(range, lines, filepath, language, imports, tenantC
|
|
|
242
275
|
// Empty symbols for uncovered code (imports, exports, etc.)
|
|
243
276
|
symbols: { functions: [], classes: [], interfaces: [] },
|
|
244
277
|
imports,
|
|
278
|
+
// Symbol-level dependency tracking
|
|
279
|
+
...(fileExports && fileExports.length > 0 && { exports: fileExports }),
|
|
280
|
+
...(importedSymbols && Object.keys(importedSymbols).length > 0 && { importedSymbols }),
|
|
245
281
|
// Multi-tenant fields
|
|
246
282
|
...(tenantContext?.repoId && { repoId: tenantContext.repoId }),
|
|
247
283
|
...(tenantContext?.orgId && { orgId: tenantContext.orgId }),
|
|
@@ -259,10 +295,10 @@ function isValidChunk(chunk, minChunkSize) {
|
|
|
259
295
|
* Extract code that wasn't covered by function/class chunks
|
|
260
296
|
* (imports, exports, top-level statements)
|
|
261
297
|
*/
|
|
262
|
-
function extractUncoveredCode(lines, coveredRanges, filepath, minChunkSize, imports, language, tenantContext) {
|
|
298
|
+
function extractUncoveredCode(lines, coveredRanges, filepath, minChunkSize, imports, language, tenantContext, fileExports, importedSymbols) {
|
|
263
299
|
const uncoveredRanges = findUncoveredRanges(coveredRanges, lines.length);
|
|
264
300
|
return uncoveredRanges
|
|
265
|
-
.map(range => createChunkFromRange(range, lines, filepath, language, imports, tenantContext))
|
|
301
|
+
.map(range => createChunkFromRange(range, lines, filepath, language, imports, tenantContext, fileExports, importedSymbols))
|
|
266
302
|
.filter(chunk => isValidChunk(chunk, minChunkSize));
|
|
267
303
|
}
|
|
268
304
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunker.js","sourceRoot":"","sources":["../../../src/indexer/ast/chunker.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"chunker.js","sourceRoot":"","sources":["../../../src/indexer/ast/chunker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { SupportedLanguage } from '../types.js';
|
|
2
|
+
import type { LanguageExportExtractor } from './types.js';
|
|
3
|
+
export type { LanguageExportExtractor } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Get the export extractor for a specific language
|
|
6
|
+
*
|
|
7
|
+
* @param language - Programming language
|
|
8
|
+
* @returns Language-specific export extractor
|
|
9
|
+
* @throws Error if language is not supported (defensive check for runtime safety)
|
|
10
|
+
*
|
|
11
|
+
* Note: While TypeScript's type system guarantees all SupportedLanguage values
|
|
12
|
+
* have corresponding extractors, this runtime check provides defense against:
|
|
13
|
+
* - Type system bypasses (e.g., `as any` casting elsewhere)
|
|
14
|
+
* - JavaScript consumers without type checking
|
|
15
|
+
* - Future refactoring errors during registry modifications
|
|
16
|
+
*/
|
|
17
|
+
export declare function getExtractor(language: SupportedLanguage): LanguageExportExtractor;
|
|
18
|
+
/**
|
|
19
|
+
* Check if a language has an export extractor implementation
|
|
20
|
+
*
|
|
21
|
+
* @param language - Programming language
|
|
22
|
+
* @returns True if extractor exists
|
|
23
|
+
*/
|
|
24
|
+
export declare function hasExtractor(language: SupportedLanguage): boolean;
|
|
25
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/indexer/ast/extractors/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAK1D,YAAY,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAkB1D;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,iBAAiB,GAAG,uBAAuB,CASjF;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAEjE"}
|