@liendev/core 0.19.5
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/README.md +336 -0
- package/dist/config/loader.d.ts +12 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +46 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/merge.d.ts +20 -0
- package/dist/config/merge.d.ts.map +1 -0
- package/dist/config/merge.js +71 -0
- package/dist/config/merge.js.map +1 -0
- package/dist/config/migration-manager.d.ts +46 -0
- package/dist/config/migration-manager.d.ts.map +1 -0
- package/dist/config/migration-manager.js +119 -0
- package/dist/config/migration-manager.js.map +1 -0
- package/dist/config/migration.d.ts +20 -0
- package/dist/config/migration.d.ts.map +1 -0
- package/dist/config/migration.js +155 -0
- package/dist/config/migration.js.map +1 -0
- package/dist/config/schema.d.ts +101 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +58 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/service.d.ts +122 -0
- package/dist/config/service.d.ts.map +1 -0
- package/dist/config/service.js +477 -0
- package/dist/config/service.js.map +1 -0
- package/dist/constants.d.ts +20 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +43 -0
- package/dist/constants.js.map +1 -0
- package/dist/embeddings/cache.d.ts +45 -0
- package/dist/embeddings/cache.d.ts.map +1 -0
- package/dist/embeddings/cache.js +109 -0
- package/dist/embeddings/cache.js.map +1 -0
- package/dist/embeddings/local.d.ts +10 -0
- package/dist/embeddings/local.d.ts.map +1 -0
- package/dist/embeddings/local.js +63 -0
- package/dist/embeddings/local.js.map +1 -0
- package/dist/embeddings/types.d.ts +9 -0
- package/dist/embeddings/types.d.ts.map +1 -0
- package/dist/embeddings/types.js +5 -0
- package/dist/embeddings/types.js.map +1 -0
- package/dist/errors/codes.d.ts +18 -0
- package/dist/errors/codes.d.ts.map +1 -0
- package/dist/errors/codes.js +25 -0
- package/dist/errors/codes.js.map +1 -0
- package/dist/errors/index.d.ts +85 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +134 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/frameworks/detector-service.d.ts +59 -0
- package/dist/frameworks/detector-service.d.ts.map +1 -0
- package/dist/frameworks/detector-service.js +219 -0
- package/dist/frameworks/detector-service.js.map +1 -0
- package/dist/frameworks/laravel/config.d.ts +6 -0
- package/dist/frameworks/laravel/config.d.ts.map +1 -0
- package/dist/frameworks/laravel/config.js +68 -0
- package/dist/frameworks/laravel/config.js.map +1 -0
- package/dist/frameworks/laravel/detector.d.ts +6 -0
- package/dist/frameworks/laravel/detector.d.ts.map +1 -0
- package/dist/frameworks/laravel/detector.js +96 -0
- package/dist/frameworks/laravel/detector.js.map +1 -0
- package/dist/frameworks/nodejs/config.d.ts +6 -0
- package/dist/frameworks/nodejs/config.d.ts.map +1 -0
- package/dist/frameworks/nodejs/config.js +57 -0
- package/dist/frameworks/nodejs/config.js.map +1 -0
- package/dist/frameworks/nodejs/detector.d.ts +6 -0
- package/dist/frameworks/nodejs/detector.d.ts.map +1 -0
- package/dist/frameworks/nodejs/detector.js +77 -0
- package/dist/frameworks/nodejs/detector.js.map +1 -0
- package/dist/frameworks/php/config.d.ts +6 -0
- package/dist/frameworks/php/config.d.ts.map +1 -0
- package/dist/frameworks/php/config.js +53 -0
- package/dist/frameworks/php/config.js.map +1 -0
- package/dist/frameworks/php/detector.d.ts +7 -0
- package/dist/frameworks/php/detector.d.ts.map +1 -0
- package/dist/frameworks/php/detector.js +101 -0
- package/dist/frameworks/php/detector.js.map +1 -0
- package/dist/frameworks/registry.d.ts +20 -0
- package/dist/frameworks/registry.d.ts.map +1 -0
- package/dist/frameworks/registry.js +38 -0
- package/dist/frameworks/registry.js.map +1 -0
- package/dist/frameworks/shopify/config.d.ts +6 -0
- package/dist/frameworks/shopify/config.d.ts.map +1 -0
- package/dist/frameworks/shopify/config.js +50 -0
- package/dist/frameworks/shopify/config.js.map +1 -0
- package/dist/frameworks/shopify/detector.d.ts +6 -0
- package/dist/frameworks/shopify/detector.d.ts.map +1 -0
- package/dist/frameworks/shopify/detector.js +103 -0
- package/dist/frameworks/shopify/detector.js.map +1 -0
- package/dist/frameworks/types.d.ts +51 -0
- package/dist/frameworks/types.d.ts.map +1 -0
- package/dist/frameworks/types.js +21 -0
- package/dist/frameworks/types.js.map +1 -0
- package/dist/git/tracker.d.ts +56 -0
- package/dist/git/tracker.d.ts.map +1 -0
- package/dist/git/tracker.js +189 -0
- package/dist/git/tracker.js.map +1 -0
- package/dist/git/utils.d.ts +60 -0
- package/dist/git/utils.d.ts.map +1 -0
- package/dist/git/utils.js +152 -0
- package/dist/git/utils.js.map +1 -0
- package/dist/index.d.ts +77 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +95 -0
- package/dist/index.js.map +1 -0
- package/dist/indexer/ast/chunker.d.ts +28 -0
- package/dist/indexer/ast/chunker.d.ts.map +1 -0
- package/dist/indexer/ast/chunker.js +268 -0
- package/dist/indexer/ast/chunker.js.map +1 -0
- package/dist/indexer/ast/complexity/cognitive.d.ts +16 -0
- package/dist/indexer/ast/complexity/cognitive.d.ts.map +1 -0
- package/dist/indexer/ast/complexity/cognitive.js +106 -0
- package/dist/indexer/ast/complexity/cognitive.js.map +1 -0
- package/dist/indexer/ast/complexity/cyclomatic.d.ts +12 -0
- package/dist/indexer/ast/complexity/cyclomatic.d.ts.map +1 -0
- package/dist/indexer/ast/complexity/cyclomatic.js +61 -0
- package/dist/indexer/ast/complexity/cyclomatic.js.map +1 -0
- package/dist/indexer/ast/complexity/halstead.d.ts +55 -0
- package/dist/indexer/ast/complexity/halstead.d.ts.map +1 -0
- package/dist/indexer/ast/complexity/halstead.js +290 -0
- package/dist/indexer/ast/complexity/halstead.js.map +1 -0
- package/dist/indexer/ast/complexity/index.d.ts +13 -0
- package/dist/indexer/ast/complexity/index.d.ts.map +1 -0
- package/dist/indexer/ast/complexity/index.js +12 -0
- package/dist/indexer/ast/complexity/index.js.map +1 -0
- package/dist/indexer/ast/parser.d.ts +27 -0
- package/dist/indexer/ast/parser.d.ts.map +1 -0
- package/dist/indexer/ast/parser.js +103 -0
- package/dist/indexer/ast/parser.js.map +1 -0
- package/dist/indexer/ast/symbols.d.ts +17 -0
- package/dist/indexer/ast/symbols.d.ts.map +1 -0
- package/dist/indexer/ast/symbols.js +265 -0
- package/dist/indexer/ast/symbols.js.map +1 -0
- package/dist/indexer/ast/traversers/index.d.ts +19 -0
- package/dist/indexer/ast/traversers/index.d.ts.map +1 -0
- package/dist/indexer/ast/traversers/index.js +42 -0
- package/dist/indexer/ast/traversers/index.js.map +1 -0
- package/dist/indexer/ast/traversers/php.d.ts +21 -0
- package/dist/indexer/ast/traversers/php.d.ts.map +1 -0
- package/dist/indexer/ast/traversers/php.js +67 -0
- package/dist/indexer/ast/traversers/php.js.map +1 -0
- package/dist/indexer/ast/traversers/python.d.ts +28 -0
- package/dist/indexer/ast/traversers/python.d.ts.map +1 -0
- package/dist/indexer/ast/traversers/python.js +67 -0
- package/dist/indexer/ast/traversers/python.js.map +1 -0
- package/dist/indexer/ast/traversers/types.d.ts +98 -0
- package/dist/indexer/ast/traversers/types.d.ts.map +1 -0
- package/dist/indexer/ast/traversers/types.js +2 -0
- package/dist/indexer/ast/traversers/types.js.map +1 -0
- package/dist/indexer/ast/traversers/typescript.d.ts +29 -0
- package/dist/indexer/ast/traversers/typescript.d.ts.map +1 -0
- package/dist/indexer/ast/traversers/typescript.js +88 -0
- package/dist/indexer/ast/traversers/typescript.js.map +1 -0
- package/dist/indexer/ast/types.d.ts +59 -0
- package/dist/indexer/ast/types.d.ts.map +1 -0
- package/dist/indexer/ast/types.js +2 -0
- package/dist/indexer/ast/types.js.map +1 -0
- package/dist/indexer/change-detector.d.ts +17 -0
- package/dist/indexer/change-detector.d.ts.map +1 -0
- package/dist/indexer/change-detector.js +207 -0
- package/dist/indexer/change-detector.js.map +1 -0
- package/dist/indexer/chunk-batch-processor.d.ts +103 -0
- package/dist/indexer/chunk-batch-processor.d.ts.map +1 -0
- package/dist/indexer/chunk-batch-processor.js +179 -0
- package/dist/indexer/chunk-batch-processor.js.map +1 -0
- package/dist/indexer/chunker.d.ts +10 -0
- package/dist/indexer/chunker.d.ts.map +1 -0
- package/dist/indexer/chunker.js +96 -0
- package/dist/indexer/chunker.js.map +1 -0
- package/dist/indexer/dependency-analyzer.d.ts +60 -0
- package/dist/indexer/dependency-analyzer.d.ts.map +1 -0
- package/dist/indexer/dependency-analyzer.js +261 -0
- package/dist/indexer/dependency-analyzer.js.map +1 -0
- package/dist/indexer/incremental.d.ts +47 -0
- package/dist/indexer/incremental.d.ts.map +1 -0
- package/dist/indexer/incremental.js +284 -0
- package/dist/indexer/incremental.js.map +1 -0
- package/dist/indexer/index.d.ts +80 -0
- package/dist/indexer/index.d.ts.map +1 -0
- package/dist/indexer/index.js +364 -0
- package/dist/indexer/index.js.map +1 -0
- package/dist/indexer/json-template-chunker.d.ts +9 -0
- package/dist/indexer/json-template-chunker.d.ts.map +1 -0
- package/dist/indexer/json-template-chunker.js +83 -0
- package/dist/indexer/json-template-chunker.js.map +1 -0
- package/dist/indexer/liquid-chunker.d.ts +13 -0
- package/dist/indexer/liquid-chunker.d.ts.map +1 -0
- package/dist/indexer/liquid-chunker.js +272 -0
- package/dist/indexer/liquid-chunker.js.map +1 -0
- package/dist/indexer/manifest.d.ts +122 -0
- package/dist/indexer/manifest.d.ts.map +1 -0
- package/dist/indexer/manifest.js +262 -0
- package/dist/indexer/manifest.js.map +1 -0
- package/dist/indexer/progress-tracker.d.ts +35 -0
- package/dist/indexer/progress-tracker.d.ts.map +1 -0
- package/dist/indexer/progress-tracker.js +33 -0
- package/dist/indexer/progress-tracker.js.map +1 -0
- package/dist/indexer/scanner.d.ts +16 -0
- package/dist/indexer/scanner.d.ts.map +1 -0
- package/dist/indexer/scanner.js +159 -0
- package/dist/indexer/scanner.js.map +1 -0
- package/dist/indexer/symbol-extractor.d.ts +18 -0
- package/dist/indexer/symbol-extractor.d.ts.map +1 -0
- package/dist/indexer/symbol-extractor.js +351 -0
- package/dist/indexer/symbol-extractor.js.map +1 -0
- package/dist/indexer/types.d.ts +34 -0
- package/dist/indexer/types.d.ts.map +1 -0
- package/dist/indexer/types.js +2 -0
- package/dist/indexer/types.js.map +1 -0
- package/dist/insights/complexity-analyzer.d.ts +82 -0
- package/dist/insights/complexity-analyzer.d.ts.map +1 -0
- package/dist/insights/complexity-analyzer.js +356 -0
- package/dist/insights/complexity-analyzer.js.map +1 -0
- package/dist/insights/formatters/index.d.ts +11 -0
- package/dist/insights/formatters/index.d.ts.map +1 -0
- package/dist/insights/formatters/index.js +20 -0
- package/dist/insights/formatters/index.js.map +1 -0
- package/dist/insights/formatters/json.d.ts +7 -0
- package/dist/insights/formatters/json.d.ts.map +1 -0
- package/dist/insights/formatters/json.js +14 -0
- package/dist/insights/formatters/json.js.map +1 -0
- package/dist/insights/formatters/sarif.d.ts +6 -0
- package/dist/insights/formatters/sarif.d.ts.map +1 -0
- package/dist/insights/formatters/sarif.js +113 -0
- package/dist/insights/formatters/sarif.js.map +1 -0
- package/dist/insights/formatters/text.d.ts +6 -0
- package/dist/insights/formatters/text.d.ts.map +1 -0
- package/dist/insights/formatters/text.js +154 -0
- package/dist/insights/formatters/text.js.map +1 -0
- package/dist/insights/types.d.ts +73 -0
- package/dist/insights/types.d.ts.map +1 -0
- package/dist/insights/types.js +9 -0
- package/dist/insights/types.js.map +1 -0
- package/dist/types/index.d.ts +14 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/path-matching.d.ts +69 -0
- package/dist/utils/path-matching.d.ts.map +1 -0
- package/dist/utils/path-matching.js +123 -0
- package/dist/utils/path-matching.js.map +1 -0
- package/dist/utils/result.d.ts +65 -0
- package/dist/utils/result.d.ts.map +1 -0
- package/dist/utils/result.js +67 -0
- package/dist/utils/result.js.map +1 -0
- package/dist/utils/version.d.ts +22 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +28 -0
- package/dist/utils/version.js.map +1 -0
- package/dist/vectordb/batch-insert.d.ts +14 -0
- package/dist/vectordb/batch-insert.d.ts.map +1 -0
- package/dist/vectordb/batch-insert.js +185 -0
- package/dist/vectordb/batch-insert.js.map +1 -0
- package/dist/vectordb/boosting/composer.d.ts +51 -0
- package/dist/vectordb/boosting/composer.d.ts.map +1 -0
- package/dist/vectordb/boosting/composer.js +65 -0
- package/dist/vectordb/boosting/composer.js.map +1 -0
- package/dist/vectordb/boosting/index.d.ts +22 -0
- package/dist/vectordb/boosting/index.d.ts.map +1 -0
- package/dist/vectordb/boosting/index.js +22 -0
- package/dist/vectordb/boosting/index.js.map +1 -0
- package/dist/vectordb/boosting/strategies.d.ts +40 -0
- package/dist/vectordb/boosting/strategies.d.ts.map +1 -0
- package/dist/vectordb/boosting/strategies.js +174 -0
- package/dist/vectordb/boosting/strategies.js.map +1 -0
- package/dist/vectordb/boosting/types.d.ts +20 -0
- package/dist/vectordb/boosting/types.d.ts.map +1 -0
- package/dist/vectordb/boosting/types.js +2 -0
- package/dist/vectordb/boosting/types.js.map +1 -0
- package/dist/vectordb/intent-classifier.d.ts +99 -0
- package/dist/vectordb/intent-classifier.d.ts.map +1 -0
- package/dist/vectordb/intent-classifier.js +193 -0
- package/dist/vectordb/intent-classifier.js.map +1 -0
- package/dist/vectordb/lancedb.d.ts +45 -0
- package/dist/vectordb/lancedb.d.ts.map +1 -0
- package/dist/vectordb/lancedb.js +203 -0
- package/dist/vectordb/lancedb.js.map +1 -0
- package/dist/vectordb/maintenance.d.ts +18 -0
- package/dist/vectordb/maintenance.d.ts.map +1 -0
- package/dist/vectordb/maintenance.js +87 -0
- package/dist/vectordb/maintenance.js.map +1 -0
- package/dist/vectordb/query.d.ts +34 -0
- package/dist/vectordb/query.d.ts.map +1 -0
- package/dist/vectordb/query.js +303 -0
- package/dist/vectordb/query.js.map +1 -0
- package/dist/vectordb/relevance.d.ts +15 -0
- package/dist/vectordb/relevance.d.ts.map +1 -0
- package/dist/vectordb/relevance.js +19 -0
- package/dist/vectordb/relevance.js.map +1 -0
- package/dist/vectordb/types.d.ts +29 -0
- package/dist/vectordb/types.d.ts.map +1 -0
- package/dist/vectordb/types.js +2 -0
- package/dist/vectordb/types.js.map +1 -0
- package/dist/vectordb/version.d.ts +16 -0
- package/dist/vectordb/version.d.ts.map +1 -0
- package/dist/vectordb/version.js +40 -0
- package/dist/vectordb/version.js.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { LienConfig, LegacyLienConfig } from './schema.js';
|
|
2
|
+
/**
|
|
3
|
+
* Checks if a config object needs migration from v0.2.0 to v0.3.0
|
|
4
|
+
*/
|
|
5
|
+
export declare function needsMigration(config: any): boolean;
|
|
6
|
+
/**
|
|
7
|
+
* Migrates a v0.2.0 config to v0.3.0+ format
|
|
8
|
+
* @param oldConfig - The old config to migrate
|
|
9
|
+
* @param targetVersion - The version to set in the migrated config (defaults to CURRENT_CONFIG_VERSION)
|
|
10
|
+
*/
|
|
11
|
+
export declare function migrateConfig(oldConfig: Partial<LegacyLienConfig | LienConfig>, targetVersion?: string): LienConfig;
|
|
12
|
+
/**
|
|
13
|
+
* Migrates config file and creates backup
|
|
14
|
+
*/
|
|
15
|
+
export declare function migrateConfigFile(rootDir?: string): Promise<{
|
|
16
|
+
migrated: boolean;
|
|
17
|
+
backupPath?: string;
|
|
18
|
+
config: LienConfig;
|
|
19
|
+
}>;
|
|
20
|
+
//# sourceMappingURL=migration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../../src/config/migration.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAoC,MAAM,aAAa,CAAC;AAG7F;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CA+BnD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,GAAG,UAAU,CAAC,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,UAAU,CA6EnH;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,MAAsB,GAAG,OAAO,CAAC;IAChF,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,UAAU,CAAC;CACpB,CAAC,CAyCD"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import fs from 'fs/promises';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { defaultConfig } from './schema.js';
|
|
4
|
+
import { CURRENT_CONFIG_VERSION } from '../constants.js';
|
|
5
|
+
/**
|
|
6
|
+
* Checks if a config object needs migration from v0.2.0 to v0.3.0
|
|
7
|
+
*/
|
|
8
|
+
export function needsMigration(config) {
|
|
9
|
+
// Check if config uses old structure:
|
|
10
|
+
// - Has 'indexing' field instead of 'core' and 'frameworks'
|
|
11
|
+
// - Or has no 'frameworks' field at all
|
|
12
|
+
// - Or version is explicitly set to something < 0.3.0
|
|
13
|
+
// - Or missing 'chunking' field (v0.13.0)
|
|
14
|
+
if (!config) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
// If missing chunking config, needs migration to v0.13.0
|
|
18
|
+
if (config.frameworks !== undefined && !config.chunking) {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
// If it has frameworks array and chunking, it's already in new format
|
|
22
|
+
if (config.frameworks !== undefined && config.chunking !== undefined) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
// If it has 'indexing' field, it's the old format
|
|
26
|
+
if (config.indexing !== undefined) {
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
// If version is explicitly < 0.3.0
|
|
30
|
+
if (config.version && config.version.startsWith('0.2')) {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Migrates a v0.2.0 config to v0.3.0+ format
|
|
37
|
+
* @param oldConfig - The old config to migrate
|
|
38
|
+
* @param targetVersion - The version to set in the migrated config (defaults to CURRENT_CONFIG_VERSION)
|
|
39
|
+
*/
|
|
40
|
+
export function migrateConfig(oldConfig, targetVersion) {
|
|
41
|
+
// Start with default config structure
|
|
42
|
+
const newConfig = {
|
|
43
|
+
version: targetVersion ?? CURRENT_CONFIG_VERSION,
|
|
44
|
+
core: {
|
|
45
|
+
chunkSize: oldConfig.indexing?.chunkSize ?? oldConfig.core?.chunkSize ?? defaultConfig.core.chunkSize,
|
|
46
|
+
chunkOverlap: oldConfig.indexing?.chunkOverlap ?? oldConfig.core?.chunkOverlap ?? defaultConfig.core.chunkOverlap,
|
|
47
|
+
concurrency: oldConfig.indexing?.concurrency ?? oldConfig.core?.concurrency ?? defaultConfig.core.concurrency,
|
|
48
|
+
embeddingBatchSize: oldConfig.indexing?.embeddingBatchSize ?? oldConfig.core?.embeddingBatchSize ?? defaultConfig.core.embeddingBatchSize,
|
|
49
|
+
},
|
|
50
|
+
chunking: {
|
|
51
|
+
useAST: oldConfig.chunking?.useAST ?? defaultConfig.chunking.useAST,
|
|
52
|
+
astFallback: oldConfig.chunking?.astFallback ?? defaultConfig.chunking.astFallback,
|
|
53
|
+
},
|
|
54
|
+
mcp: {
|
|
55
|
+
port: oldConfig.mcp?.port ?? defaultConfig.mcp.port,
|
|
56
|
+
transport: oldConfig.mcp?.transport ?? defaultConfig.mcp.transport,
|
|
57
|
+
autoIndexOnFirstRun: oldConfig.mcp?.autoIndexOnFirstRun ?? defaultConfig.mcp.autoIndexOnFirstRun,
|
|
58
|
+
},
|
|
59
|
+
gitDetection: {
|
|
60
|
+
enabled: oldConfig.gitDetection?.enabled ?? defaultConfig.gitDetection.enabled,
|
|
61
|
+
pollIntervalMs: oldConfig.gitDetection?.pollIntervalMs ?? defaultConfig.gitDetection.pollIntervalMs,
|
|
62
|
+
},
|
|
63
|
+
fileWatching: {
|
|
64
|
+
enabled: oldConfig.fileWatching?.enabled ?? defaultConfig.fileWatching.enabled,
|
|
65
|
+
debounceMs: oldConfig.fileWatching?.debounceMs ?? defaultConfig.fileWatching.debounceMs,
|
|
66
|
+
},
|
|
67
|
+
frameworks: oldConfig.frameworks ?? [],
|
|
68
|
+
};
|
|
69
|
+
// Convert old indexing config to a single "generic" framework (only for legacy configs)
|
|
70
|
+
if (oldConfig.indexing && newConfig.frameworks.length === 0) {
|
|
71
|
+
const genericFramework = {
|
|
72
|
+
name: 'generic',
|
|
73
|
+
path: '.',
|
|
74
|
+
enabled: true,
|
|
75
|
+
config: {
|
|
76
|
+
include: oldConfig.indexing.include ?? ['**/*.{ts,tsx,js,jsx,py,php,go,rs,java,c,cpp,cs}'],
|
|
77
|
+
exclude: oldConfig.indexing.exclude ?? [
|
|
78
|
+
'**/node_modules/**',
|
|
79
|
+
'**/dist/**',
|
|
80
|
+
'**/build/**',
|
|
81
|
+
'**/.git/**',
|
|
82
|
+
'**/coverage/**',
|
|
83
|
+
'**/.next/**',
|
|
84
|
+
'**/.nuxt/**',
|
|
85
|
+
'**/vendor/**',
|
|
86
|
+
],
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
newConfig.frameworks.push(genericFramework);
|
|
90
|
+
}
|
|
91
|
+
else if (newConfig.frameworks.length === 0) {
|
|
92
|
+
// No indexing config and no frameworks present, use defaults for generic framework
|
|
93
|
+
const genericFramework = {
|
|
94
|
+
name: 'generic',
|
|
95
|
+
path: '.',
|
|
96
|
+
enabled: true,
|
|
97
|
+
config: {
|
|
98
|
+
include: ['**/*.{ts,tsx,js,jsx,py,php,go,rs,java,c,cpp,cs}'],
|
|
99
|
+
exclude: [
|
|
100
|
+
'**/node_modules/**',
|
|
101
|
+
'**/dist/**',
|
|
102
|
+
'**/build/**',
|
|
103
|
+
'**/.git/**',
|
|
104
|
+
'**/coverage/**',
|
|
105
|
+
'**/.next/**',
|
|
106
|
+
'**/.nuxt/**',
|
|
107
|
+
'**/vendor/**',
|
|
108
|
+
],
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
newConfig.frameworks.push(genericFramework);
|
|
112
|
+
}
|
|
113
|
+
return newConfig;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Migrates config file and creates backup
|
|
117
|
+
*/
|
|
118
|
+
export async function migrateConfigFile(rootDir = process.cwd()) {
|
|
119
|
+
const configPath = path.join(rootDir, '.lien.config.json');
|
|
120
|
+
try {
|
|
121
|
+
// Read existing config
|
|
122
|
+
const configContent = await fs.readFile(configPath, 'utf-8');
|
|
123
|
+
const oldConfig = JSON.parse(configContent);
|
|
124
|
+
// Check if migration is needed
|
|
125
|
+
if (!needsMigration(oldConfig)) {
|
|
126
|
+
return {
|
|
127
|
+
migrated: false,
|
|
128
|
+
config: oldConfig,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
// Perform migration
|
|
132
|
+
const newConfig = migrateConfig(oldConfig);
|
|
133
|
+
// Create backup
|
|
134
|
+
const backupPath = `${configPath}.v0.2.0.backup`;
|
|
135
|
+
await fs.copyFile(configPath, backupPath);
|
|
136
|
+
// Write migrated config
|
|
137
|
+
await fs.writeFile(configPath, JSON.stringify(newConfig, null, 2) + '\n', 'utf-8');
|
|
138
|
+
return {
|
|
139
|
+
migrated: true,
|
|
140
|
+
backupPath,
|
|
141
|
+
config: newConfig,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
// If config doesn't exist, return default
|
|
146
|
+
if (error.code === 'ENOENT') {
|
|
147
|
+
return {
|
|
148
|
+
migrated: false,
|
|
149
|
+
config: defaultConfig,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
throw error;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=migration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration.js","sourceRoot":"","sources":["../../src/config/migration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAmD,aAAa,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAEzD;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAW;IACxC,sCAAsC;IACtC,4DAA4D;IAC5D,wCAAwC;IACxC,sDAAsD;IACtD,0CAA0C;IAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yDAAyD;IACzD,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sEAAsE;IACtE,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACrE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,kDAAkD;IAClD,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mCAAmC;IACnC,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACvD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,SAAiD,EAAE,aAAsB;IACrG,sCAAsC;IACtC,MAAM,SAAS,GAAe;QAC5B,OAAO,EAAE,aAAa,IAAI,sBAAsB;QAChD,IAAI,EAAE;YACJ,SAAS,EAAG,SAAiB,CAAC,QAAQ,EAAE,SAAS,IAAK,SAAiB,CAAC,IAAI,EAAE,SAAS,IAAI,aAAa,CAAC,IAAI,CAAC,SAAS;YACvH,YAAY,EAAG,SAAiB,CAAC,QAAQ,EAAE,YAAY,IAAK,SAAiB,CAAC,IAAI,EAAE,YAAY,IAAI,aAAa,CAAC,IAAI,CAAC,YAAY;YACnI,WAAW,EAAG,SAAiB,CAAC,QAAQ,EAAE,WAAW,IAAK,SAAiB,CAAC,IAAI,EAAE,WAAW,IAAI,aAAa,CAAC,IAAI,CAAC,WAAW;YAC/H,kBAAkB,EAAG,SAAiB,CAAC,QAAQ,EAAE,kBAAkB,IAAK,SAAiB,CAAC,IAAI,EAAE,kBAAkB,IAAI,aAAa,CAAC,IAAI,CAAC,kBAAkB;SAC5J;QACD,QAAQ,EAAE;YACR,MAAM,EAAG,SAAiB,CAAC,QAAQ,EAAE,MAAM,IAAI,aAAa,CAAC,QAAQ,CAAC,MAAM;YAC5E,WAAW,EAAG,SAAiB,CAAC,QAAQ,EAAE,WAAW,IAAI,aAAa,CAAC,QAAQ,CAAC,WAAW;SAC5F;QACD,GAAG,EAAE;YACH,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,IAAI,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI;YACnD,SAAS,EAAE,SAAS,CAAC,GAAG,EAAE,SAAS,IAAI,aAAa,CAAC,GAAG,CAAC,SAAS;YAClE,mBAAmB,EAAE,SAAS,CAAC,GAAG,EAAE,mBAAmB,IAAI,aAAa,CAAC,GAAG,CAAC,mBAAmB;SACjG;QACD,YAAY,EAAE;YACZ,OAAO,EAAE,SAAS,CAAC,YAAY,EAAE,OAAO,IAAI,aAAa,CAAC,YAAY,CAAC,OAAO;YAC9E,cAAc,EAAE,SAAS,CAAC,YAAY,EAAE,cAAc,IAAI,aAAa,CAAC,YAAY,CAAC,cAAc;SACpG;QACD,YAAY,EAAE;YACZ,OAAO,EAAE,SAAS,CAAC,YAAY,EAAE,OAAO,IAAI,aAAa,CAAC,YAAY,CAAC,OAAO;YAC9E,UAAU,EAAE,SAAS,CAAC,YAAY,EAAE,UAAU,IAAI,aAAa,CAAC,YAAY,CAAC,UAAU;SACxF;QACD,UAAU,EAAG,SAAiB,CAAC,UAAU,IAAI,EAAE;KAChD,CAAC;IAEF,wFAAwF;IACxF,IAAK,SAAiB,CAAC,QAAQ,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrE,MAAM,gBAAgB,GAAsB;YAC1C,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,IAAI;YACb,MAAM,EAAE;gBACN,OAAO,EAAG,SAAiB,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,iDAAiD,CAAC;gBACnG,OAAO,EAAG,SAAiB,CAAC,QAAQ,CAAC,OAAO,IAAI;oBAC9C,oBAAoB;oBACpB,YAAY;oBACZ,aAAa;oBACb,YAAY;oBACZ,gBAAgB;oBAChB,aAAa;oBACb,aAAa;oBACb,cAAc;iBACf;aACF;SACF,CAAC;QAEF,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC9C,CAAC;SAAM,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7C,mFAAmF;QACnF,MAAM,gBAAgB,GAAsB;YAC1C,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,IAAI;YACb,MAAM,EAAE;gBACN,OAAO,EAAE,CAAC,iDAAiD,CAAC;gBAC5D,OAAO,EAAE;oBACP,oBAAoB;oBACpB,YAAY;oBACZ,aAAa;oBACb,YAAY;oBACZ,gBAAgB;oBAChB,aAAa;oBACb,aAAa;oBACb,cAAc;iBACf;aACF;SACF,CAAC;QAEF,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,UAAkB,OAAO,CAAC,GAAG,EAAE;IAKrE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;IAE3D,IAAI,CAAC;QACH,uBAAuB;QACvB,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAE5C,+BAA+B;QAC/B,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/B,OAAO;gBACL,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,SAAuB;aAChC,CAAC;QACJ,CAAC;QAED,oBAAoB;QACpB,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QAE3C,gBAAgB;QAChB,MAAM,UAAU,GAAG,GAAG,UAAU,gBAAgB,CAAC;QACjD,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAE1C,wBAAwB;QACxB,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;QAEnF,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,UAAU;YACV,MAAM,EAAE,SAAS;SAClB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,0CAA0C;QAC1C,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,OAAO;gBACL,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,aAAa;aACtB,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Framework-specific configuration
|
|
3
|
+
*/
|
|
4
|
+
export interface FrameworkConfig {
|
|
5
|
+
include: string[];
|
|
6
|
+
exclude: string[];
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Framework instance in a monorepo
|
|
10
|
+
*/
|
|
11
|
+
export interface FrameworkInstance {
|
|
12
|
+
name: string;
|
|
13
|
+
path: string;
|
|
14
|
+
enabled: boolean;
|
|
15
|
+
config: FrameworkConfig;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Main Lien configuration supporting monorepo setups
|
|
19
|
+
*/
|
|
20
|
+
export interface LienConfig {
|
|
21
|
+
version: string;
|
|
22
|
+
core: {
|
|
23
|
+
chunkSize: number;
|
|
24
|
+
chunkOverlap: number;
|
|
25
|
+
concurrency: number;
|
|
26
|
+
embeddingBatchSize: number;
|
|
27
|
+
};
|
|
28
|
+
chunking: {
|
|
29
|
+
useAST: boolean;
|
|
30
|
+
astFallback: 'line-based' | 'error';
|
|
31
|
+
};
|
|
32
|
+
mcp: {
|
|
33
|
+
port: number;
|
|
34
|
+
transport: 'stdio' | 'socket';
|
|
35
|
+
autoIndexOnFirstRun: boolean;
|
|
36
|
+
};
|
|
37
|
+
gitDetection: {
|
|
38
|
+
enabled: boolean;
|
|
39
|
+
pollIntervalMs: number;
|
|
40
|
+
};
|
|
41
|
+
fileWatching: {
|
|
42
|
+
enabled: boolean;
|
|
43
|
+
debounceMs: number;
|
|
44
|
+
};
|
|
45
|
+
complexity?: {
|
|
46
|
+
enabled: boolean;
|
|
47
|
+
thresholds: {
|
|
48
|
+
testPaths: number;
|
|
49
|
+
mentalLoad: number;
|
|
50
|
+
timeToUnderstandMinutes?: number;
|
|
51
|
+
estimatedBugs?: number;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
frameworks: FrameworkInstance[];
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Legacy config format for backwards compatibility
|
|
58
|
+
* @deprecated Use LienConfig with frameworks array instead
|
|
59
|
+
*/
|
|
60
|
+
export interface LegacyLienConfig {
|
|
61
|
+
version: string;
|
|
62
|
+
indexing: {
|
|
63
|
+
exclude: string[];
|
|
64
|
+
include: string[];
|
|
65
|
+
chunkSize: number;
|
|
66
|
+
chunkOverlap: number;
|
|
67
|
+
concurrency: number;
|
|
68
|
+
embeddingBatchSize: number;
|
|
69
|
+
};
|
|
70
|
+
mcp: {
|
|
71
|
+
port: number;
|
|
72
|
+
transport: 'stdio' | 'socket';
|
|
73
|
+
autoIndexOnFirstRun: boolean;
|
|
74
|
+
};
|
|
75
|
+
gitDetection: {
|
|
76
|
+
enabled: boolean;
|
|
77
|
+
pollIntervalMs: number;
|
|
78
|
+
};
|
|
79
|
+
fileWatching: {
|
|
80
|
+
enabled: boolean;
|
|
81
|
+
debounceMs: number;
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Type guard to check if a config is the legacy format
|
|
86
|
+
* @param config - Config object to check
|
|
87
|
+
* @returns True if config is LegacyLienConfig
|
|
88
|
+
*/
|
|
89
|
+
export declare function isLegacyConfig(config: LienConfig | LegacyLienConfig): config is LegacyLienConfig;
|
|
90
|
+
/**
|
|
91
|
+
* Type guard to check if a config is the modern format
|
|
92
|
+
* @param config - Config object to check
|
|
93
|
+
* @returns True if config is LienConfig
|
|
94
|
+
*/
|
|
95
|
+
export declare function isModernConfig(config: LienConfig | LegacyLienConfig): config is LienConfig;
|
|
96
|
+
/**
|
|
97
|
+
* Default configuration with empty frameworks array
|
|
98
|
+
* Frameworks should be detected and added via lien init
|
|
99
|
+
*/
|
|
100
|
+
export declare const defaultConfig: LienConfig;
|
|
101
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,eAAe,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE;QACJ,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,QAAQ,EAAE;QACR,MAAM,EAAE,OAAO,CAAC;QAChB,WAAW,EAAE,YAAY,GAAG,OAAO,CAAC;KACrC,CAAC;IACF,GAAG,EAAE;QACH,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,OAAO,GAAG,QAAQ,CAAC;QAC9B,mBAAmB,EAAE,OAAO,CAAC;KAC9B,CAAC;IACF,YAAY,EAAE;QACZ,OAAO,EAAE,OAAO,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,YAAY,EAAE;QACZ,OAAO,EAAE,OAAO,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,UAAU,CAAC,EAAE;QACX,OAAO,EAAE,OAAO,CAAC;QACjB,UAAU,EAAE;YACV,SAAS,EAAE,MAAM,CAAC;YAClB,UAAU,EAAE,MAAM,CAAC;YACnB,uBAAuB,CAAC,EAAE,MAAM,CAAC;YACjC,aAAa,CAAC,EAAE,MAAM,CAAC;SACxB,CAAC;KAEH,CAAC;IACF,UAAU,EAAE,iBAAiB,EAAE,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE;QACR,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,GAAG,EAAE;QACH,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,OAAO,GAAG,QAAQ,CAAC;QAC9B,mBAAmB,EAAE,OAAO,CAAC;KAC9B,CAAC;IACF,YAAY,EAAE;QACZ,OAAO,EAAE,OAAO,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,YAAY,EAAE;QACZ,OAAO,EAAE,OAAO,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,UAAU,GAAG,gBAAgB,GACpC,MAAM,IAAI,gBAAgB,CAE5B;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,UAAU,GAAG,gBAAgB,GACpC,MAAM,IAAI,UAAU,CAEtB;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,UAmC3B,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { DEFAULT_CHUNK_SIZE, DEFAULT_CHUNK_OVERLAP, DEFAULT_CONCURRENCY, DEFAULT_EMBEDDING_BATCH_SIZE, DEFAULT_PORT, DEFAULT_GIT_POLL_INTERVAL_MS, DEFAULT_DEBOUNCE_MS, CURRENT_CONFIG_VERSION, } from '../constants.js';
|
|
2
|
+
/**
|
|
3
|
+
* Type guard to check if a config is the legacy format
|
|
4
|
+
* @param config - Config object to check
|
|
5
|
+
* @returns True if config is LegacyLienConfig
|
|
6
|
+
*/
|
|
7
|
+
export function isLegacyConfig(config) {
|
|
8
|
+
return 'indexing' in config && !('frameworks' in config);
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Type guard to check if a config is the modern format
|
|
12
|
+
* @param config - Config object to check
|
|
13
|
+
* @returns True if config is LienConfig
|
|
14
|
+
*/
|
|
15
|
+
export function isModernConfig(config) {
|
|
16
|
+
return 'frameworks' in config;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Default configuration with empty frameworks array
|
|
20
|
+
* Frameworks should be detected and added via lien init
|
|
21
|
+
*/
|
|
22
|
+
export const defaultConfig = {
|
|
23
|
+
version: CURRENT_CONFIG_VERSION,
|
|
24
|
+
core: {
|
|
25
|
+
chunkSize: DEFAULT_CHUNK_SIZE,
|
|
26
|
+
chunkOverlap: DEFAULT_CHUNK_OVERLAP,
|
|
27
|
+
concurrency: DEFAULT_CONCURRENCY,
|
|
28
|
+
embeddingBatchSize: DEFAULT_EMBEDDING_BATCH_SIZE,
|
|
29
|
+
},
|
|
30
|
+
chunking: {
|
|
31
|
+
useAST: true, // AST-based chunking enabled by default (v0.13.0)
|
|
32
|
+
astFallback: 'line-based', // Fallback to line-based on errors
|
|
33
|
+
},
|
|
34
|
+
mcp: {
|
|
35
|
+
port: DEFAULT_PORT,
|
|
36
|
+
transport: 'stdio',
|
|
37
|
+
autoIndexOnFirstRun: true,
|
|
38
|
+
},
|
|
39
|
+
gitDetection: {
|
|
40
|
+
enabled: true,
|
|
41
|
+
pollIntervalMs: DEFAULT_GIT_POLL_INTERVAL_MS,
|
|
42
|
+
},
|
|
43
|
+
fileWatching: {
|
|
44
|
+
enabled: true, // Enabled by default (fast with incremental indexing!)
|
|
45
|
+
debounceMs: DEFAULT_DEBOUNCE_MS,
|
|
46
|
+
},
|
|
47
|
+
complexity: {
|
|
48
|
+
enabled: true,
|
|
49
|
+
thresholds: {
|
|
50
|
+
testPaths: 15, // 🔀 Max test paths per function
|
|
51
|
+
mentalLoad: 15, // 🧠 Max mental load score
|
|
52
|
+
timeToUnderstandMinutes: 60, // ⏱️ Functions taking >1 hour to understand
|
|
53
|
+
estimatedBugs: 1.5, // 🐛 Functions estimated to have >1.5 bugs
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
frameworks: [], // Will be populated by lien init via framework detection
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,4BAA4B,EAC5B,YAAY,EACZ,4BAA4B,EAC5B,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AA0FzB;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAqC;IAErC,OAAO,UAAU,IAAI,MAAM,IAAI,CAAC,CAAC,YAAY,IAAI,MAAM,CAAC,CAAC;AAC3D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAqC;IAErC,OAAO,YAAY,IAAI,MAAM,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAe;IACvC,OAAO,EAAE,sBAAsB;IAC/B,IAAI,EAAE;QACJ,SAAS,EAAE,kBAAkB;QAC7B,YAAY,EAAE,qBAAqB;QACnC,WAAW,EAAE,mBAAmB;QAChC,kBAAkB,EAAE,4BAA4B;KACjD;IACD,QAAQ,EAAE;QACR,MAAM,EAAE,IAAI,EAAe,kDAAkD;QAC7E,WAAW,EAAE,YAAY,EAAE,mCAAmC;KAC/D;IACD,GAAG,EAAE;QACH,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE,OAAO;QAClB,mBAAmB,EAAE,IAAI;KAC1B;IACD,YAAY,EAAE;QACZ,OAAO,EAAE,IAAI;QACb,cAAc,EAAE,4BAA4B;KAC7C;IACD,YAAY,EAAE;QACZ,OAAO,EAAE,IAAI,EAAE,uDAAuD;QACtE,UAAU,EAAE,mBAAmB;KAChC;IACD,UAAU,EAAE;QACV,OAAO,EAAE,IAAI;QACb,UAAU,EAAE;YACV,SAAS,EAAE,EAAE,EAAa,iCAAiC;YAC3D,UAAU,EAAE,EAAE,EAAY,2BAA2B;YACrD,uBAAuB,EAAE,EAAE,EAAG,4CAA4C;YAC1E,aAAa,EAAE,GAAG,EAAY,2CAA2C;SAC1E;KACF;IACD,UAAU,EAAE,EAAE,EAAE,yDAAyD;CAC1E,CAAC"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { LienConfig } from './schema.js';
|
|
2
|
+
/**
|
|
3
|
+
* Validation result with errors and warnings
|
|
4
|
+
*/
|
|
5
|
+
export interface ValidationResult {
|
|
6
|
+
valid: boolean;
|
|
7
|
+
errors: string[];
|
|
8
|
+
warnings: string[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Migration result with status and config
|
|
12
|
+
*/
|
|
13
|
+
export interface MigrationResult {
|
|
14
|
+
migrated: boolean;
|
|
15
|
+
backupPath?: string;
|
|
16
|
+
config: LienConfig;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* ConfigService encapsulates all configuration operations including
|
|
20
|
+
* loading, saving, migration, and validation.
|
|
21
|
+
*
|
|
22
|
+
* This service provides a single point of truth for config management
|
|
23
|
+
* with comprehensive error handling and validation.
|
|
24
|
+
*/
|
|
25
|
+
export declare class ConfigService {
|
|
26
|
+
private static readonly CONFIG_FILENAME;
|
|
27
|
+
/**
|
|
28
|
+
* Load configuration from the specified directory.
|
|
29
|
+
* Automatically handles migration if needed.
|
|
30
|
+
*
|
|
31
|
+
* @param rootDir - Root directory containing the config file
|
|
32
|
+
* @returns Loaded and validated configuration
|
|
33
|
+
* @throws {ConfigError} If config is invalid or cannot be loaded
|
|
34
|
+
*/
|
|
35
|
+
load(rootDir?: string): Promise<LienConfig>;
|
|
36
|
+
/**
|
|
37
|
+
* Save configuration to the specified directory.
|
|
38
|
+
* Validates the config before saving.
|
|
39
|
+
*
|
|
40
|
+
* @param rootDir - Root directory to save the config file
|
|
41
|
+
* @param config - Configuration to save
|
|
42
|
+
* @throws {ConfigError} If config is invalid or cannot be saved
|
|
43
|
+
*/
|
|
44
|
+
save(rootDir: string, config: LienConfig): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Check if a configuration file exists in the specified directory.
|
|
47
|
+
*
|
|
48
|
+
* @param rootDir - Root directory to check
|
|
49
|
+
* @returns True if config file exists
|
|
50
|
+
*/
|
|
51
|
+
exists(rootDir?: string): Promise<boolean>;
|
|
52
|
+
/**
|
|
53
|
+
* Migrate configuration from v0.2.0 to v0.3.0 format.
|
|
54
|
+
* Creates a backup of the original config file.
|
|
55
|
+
*
|
|
56
|
+
* @param rootDir - Root directory containing the config file
|
|
57
|
+
* @returns Migration result with status and new config
|
|
58
|
+
* @throws {ConfigError} If migration fails
|
|
59
|
+
*/
|
|
60
|
+
migrate(rootDir?: string): Promise<MigrationResult>;
|
|
61
|
+
/**
|
|
62
|
+
* Check if a config object needs migration from v0.2.0 to v0.3.0.
|
|
63
|
+
*
|
|
64
|
+
* @param config - Config object to check
|
|
65
|
+
* @returns True if migration is needed
|
|
66
|
+
*/
|
|
67
|
+
needsMigration(config: unknown): boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Validate a configuration object.
|
|
70
|
+
* Checks all constraints and returns detailed validation results.
|
|
71
|
+
*
|
|
72
|
+
* @param config - Configuration to validate
|
|
73
|
+
* @returns Validation result with errors and warnings
|
|
74
|
+
*/
|
|
75
|
+
validate(config: unknown): ValidationResult;
|
|
76
|
+
/**
|
|
77
|
+
* Validate a partial configuration object.
|
|
78
|
+
* Useful for validating user input before merging with defaults.
|
|
79
|
+
*
|
|
80
|
+
* @param config - Partial configuration to validate
|
|
81
|
+
* @returns Validation result with errors and warnings
|
|
82
|
+
*/
|
|
83
|
+
validatePartial(config: Partial<LienConfig>): ValidationResult;
|
|
84
|
+
/**
|
|
85
|
+
* Get the full path to the config file
|
|
86
|
+
*/
|
|
87
|
+
private getConfigPath;
|
|
88
|
+
/**
|
|
89
|
+
* Validate modern (v0.3.0+) configuration
|
|
90
|
+
*/
|
|
91
|
+
private validateModernConfig;
|
|
92
|
+
/**
|
|
93
|
+
* Validate legacy (v0.2.0) configuration
|
|
94
|
+
*/
|
|
95
|
+
private validateLegacyConfig;
|
|
96
|
+
/**
|
|
97
|
+
* Validate core configuration settings
|
|
98
|
+
*/
|
|
99
|
+
private validateCoreConfig;
|
|
100
|
+
/**
|
|
101
|
+
* Validate MCP configuration settings
|
|
102
|
+
*/
|
|
103
|
+
private validateMCPConfig;
|
|
104
|
+
/**
|
|
105
|
+
* Validate git detection configuration settings
|
|
106
|
+
*/
|
|
107
|
+
private validateGitDetectionConfig;
|
|
108
|
+
/**
|
|
109
|
+
* Validate file watching configuration settings
|
|
110
|
+
*/
|
|
111
|
+
private validateFileWatchingConfig;
|
|
112
|
+
/**
|
|
113
|
+
* Validate frameworks configuration
|
|
114
|
+
*/
|
|
115
|
+
private validateFrameworks;
|
|
116
|
+
/**
|
|
117
|
+
* Validate framework-specific configuration
|
|
118
|
+
*/
|
|
119
|
+
private validateFrameworkConfig;
|
|
120
|
+
}
|
|
121
|
+
export declare const configService: ConfigService;
|
|
122
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/config/service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAmE,MAAM,aAAa,CAAC;AAK1G;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,UAAU,CAAC;CACpB;AAED;;;;;;GAMG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAuB;IAE9D;;;;;;;OAOG;IACG,IAAI,CAAC,OAAO,GAAE,MAAsB,GAAG,OAAO,CAAC,UAAU,CAAC;IA8DhE;;;;;;;OAOG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB9D;;;;;OAKG;IACG,MAAM,CAAC,OAAO,GAAE,MAAsB,GAAG,OAAO,CAAC,OAAO,CAAC;IAU/D;;;;;;;OAOG;IACG,OAAO,CAAC,OAAO,GAAE,MAAsB,GAAG,OAAO,CAAC,eAAe,CAAC;IAwDxE;;;;;OAKG;IACH,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO;IAIxC;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,gBAAgB;IAoC3C;;;;;;OAMG;IACH,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,gBAAgB;IAoC9D;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAyC5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAqC5B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAoC1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAwBzB;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAoBlC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAoBlC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA6C1B;;OAEG;IACH,OAAO,CAAC,uBAAuB;CAiChC;AAGD,eAAO,MAAM,aAAa,eAAsB,CAAC"}
|