@aiready/context-analyzer 0.9.4 → 0.9.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/.turbo/turbo-build.log +10 -10
- package/.turbo/turbo-test.log +21 -9
- package/README.md +8 -0
- package/dist/__tests__/analyzer.test.d.ts +2 -0
- package/dist/__tests__/analyzer.test.d.ts.map +1 -0
- package/dist/__tests__/analyzer.test.js +157 -0
- package/dist/__tests__/analyzer.test.js.map +1 -0
- package/dist/__tests__/auto-detection.test.d.ts +2 -0
- package/dist/__tests__/auto-detection.test.d.ts.map +1 -0
- package/dist/__tests__/auto-detection.test.js +132 -0
- package/dist/__tests__/auto-detection.test.js.map +1 -0
- package/dist/__tests__/enhanced-cohesion.test.d.ts +2 -0
- package/dist/__tests__/enhanced-cohesion.test.d.ts.map +1 -0
- package/dist/__tests__/enhanced-cohesion.test.js +109 -0
- package/dist/__tests__/enhanced-cohesion.test.js.map +1 -0
- package/dist/__tests__/fragmentation-advanced.test.d.ts +2 -0
- package/dist/__tests__/fragmentation-advanced.test.d.ts.map +1 -0
- package/dist/__tests__/fragmentation-advanced.test.js +50 -0
- package/dist/__tests__/fragmentation-advanced.test.js.map +1 -0
- package/dist/__tests__/fragmentation-coupling.test.d.ts +2 -0
- package/dist/__tests__/fragmentation-coupling.test.d.ts.map +1 -0
- package/dist/__tests__/fragmentation-coupling.test.js +52 -0
- package/dist/__tests__/fragmentation-coupling.test.js.map +1 -0
- package/dist/__tests__/fragmentation-log.test.d.ts +2 -0
- package/dist/__tests__/fragmentation-log.test.d.ts.map +1 -0
- package/dist/__tests__/fragmentation-log.test.js +33 -0
- package/dist/__tests__/fragmentation-log.test.js.map +1 -0
- package/dist/__tests__/scoring.test.d.ts +2 -0
- package/dist/__tests__/scoring.test.d.ts.map +1 -0
- package/dist/__tests__/scoring.test.js +118 -0
- package/dist/__tests__/scoring.test.js.map +1 -0
- package/dist/__tests__/structural-cohesion.test.d.ts +2 -0
- package/dist/__tests__/structural-cohesion.test.d.ts.map +1 -0
- package/dist/__tests__/structural-cohesion.test.js +29 -0
- package/dist/__tests__/structural-cohesion.test.js.map +1 -0
- package/dist/analyzer.d.ts +100 -0
- package/dist/analyzer.d.ts.map +1 -0
- package/dist/analyzer.js +701 -0
- package/dist/analyzer.js.map +1 -0
- package/dist/analyzers/python-context.d.ts +38 -0
- package/dist/analyzers/python-context.d.ts.map +1 -0
- package/dist/analyzers/python-context.js +232 -0
- package/dist/analyzers/python-context.js.map +1 -0
- package/dist/chunk-BD4NWUVG.mjs +1242 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +139 -13
- package/dist/cli.js.map +1 -0
- package/dist/cli.mjs +1 -1
- package/dist/index.d.mts +3 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +139 -13
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1 -1
- package/dist/scoring.d.ts +13 -0
- package/dist/scoring.d.ts.map +1 -0
- package/dist/scoring.js +133 -0
- package/dist/scoring.js.map +1 -0
- package/dist/semantic-analysis.d.ts +44 -0
- package/dist/semantic-analysis.d.ts.map +1 -0
- package/dist/semantic-analysis.js +241 -0
- package/dist/semantic-analysis.js.map +1 -0
- package/dist/types.d.ts +117 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +2 -2
- package/src/__tests__/fragmentation-advanced.test.ts +60 -0
- package/src/__tests__/fragmentation-coupling.test.ts +62 -0
- package/src/__tests__/fragmentation-log.test.ts +38 -0
- package/src/__tests__/structural-cohesion.test.ts +32 -0
- package/src/analyzer.ts +193 -18
- package/src/index.ts +34 -2
- package/src/types.ts +3 -0
- package/tsconfig.tsbuildinfo +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
CHANGED
|
@@ -538,19 +538,72 @@ function detectCircularDependencies(graph) {
|
|
|
538
538
|
}
|
|
539
539
|
return cycles;
|
|
540
540
|
}
|
|
541
|
-
function calculateCohesion(exports2, filePath) {
|
|
542
|
-
return calculateEnhancedCohesion(exports2, filePath);
|
|
541
|
+
function calculateCohesion(exports2, filePath, options) {
|
|
542
|
+
return calculateEnhancedCohesion(exports2, filePath, options);
|
|
543
543
|
}
|
|
544
544
|
function isTestFile(filePath) {
|
|
545
545
|
const lower = filePath.toLowerCase();
|
|
546
546
|
return lower.includes("test") || lower.includes("spec") || lower.includes("mock") || lower.includes("fixture") || lower.includes("__tests__") || lower.includes(".test.") || lower.includes(".spec.");
|
|
547
547
|
}
|
|
548
|
-
function calculateFragmentation(files, domain) {
|
|
548
|
+
function calculateFragmentation(files, domain, options) {
|
|
549
549
|
if (files.length <= 1) return 0;
|
|
550
550
|
const directories = new Set(files.map((f) => f.split("/").slice(0, -1).join("/")));
|
|
551
|
-
|
|
551
|
+
const uniqueDirs = directories.size;
|
|
552
|
+
if (options?.useLogScale) {
|
|
553
|
+
if (uniqueDirs <= 1) return 0;
|
|
554
|
+
const total = files.length;
|
|
555
|
+
const base = options.logBase || Math.E;
|
|
556
|
+
const num = Math.log(uniqueDirs) / Math.log(base);
|
|
557
|
+
const den = Math.log(total) / Math.log(base);
|
|
558
|
+
return den > 0 ? num / den : 0;
|
|
559
|
+
}
|
|
560
|
+
return (uniqueDirs - 1) / (files.length - 1);
|
|
552
561
|
}
|
|
553
|
-
function
|
|
562
|
+
function calculatePathEntropy(files) {
|
|
563
|
+
if (!files || files.length === 0) return 0;
|
|
564
|
+
const dirCounts = /* @__PURE__ */ new Map();
|
|
565
|
+
for (const f of files) {
|
|
566
|
+
const dir = f.split("/").slice(0, -1).join("/") || ".";
|
|
567
|
+
dirCounts.set(dir, (dirCounts.get(dir) || 0) + 1);
|
|
568
|
+
}
|
|
569
|
+
const counts = Array.from(dirCounts.values());
|
|
570
|
+
if (counts.length <= 1) return 0;
|
|
571
|
+
const total = counts.reduce((s, v) => s + v, 0);
|
|
572
|
+
let entropy = 0;
|
|
573
|
+
for (const c of counts) {
|
|
574
|
+
const p = c / total;
|
|
575
|
+
entropy -= p * Math.log2(p);
|
|
576
|
+
}
|
|
577
|
+
const maxEntropy = Math.log2(counts.length);
|
|
578
|
+
return maxEntropy > 0 ? entropy / maxEntropy : 0;
|
|
579
|
+
}
|
|
580
|
+
function calculateDirectoryDistance(files) {
|
|
581
|
+
if (!files || files.length <= 1) return 0;
|
|
582
|
+
function pathSegments(p) {
|
|
583
|
+
return p.split("/").filter(Boolean);
|
|
584
|
+
}
|
|
585
|
+
function commonAncestorDepth(a, b) {
|
|
586
|
+
const minLen = Math.min(a.length, b.length);
|
|
587
|
+
let i = 0;
|
|
588
|
+
while (i < minLen && a[i] === b[i]) i++;
|
|
589
|
+
return i;
|
|
590
|
+
}
|
|
591
|
+
let totalNormalized = 0;
|
|
592
|
+
let comparisons = 0;
|
|
593
|
+
for (let i = 0; i < files.length; i++) {
|
|
594
|
+
for (let j = i + 1; j < files.length; j++) {
|
|
595
|
+
const segA = pathSegments(files[i]);
|
|
596
|
+
const segB = pathSegments(files[j]);
|
|
597
|
+
const shared = commonAncestorDepth(segA, segB);
|
|
598
|
+
const maxDepth = Math.max(segA.length, segB.length);
|
|
599
|
+
const normalizedShared = maxDepth > 0 ? shared / maxDepth : 0;
|
|
600
|
+
totalNormalized += 1 - normalizedShared;
|
|
601
|
+
comparisons++;
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
return comparisons > 0 ? totalNormalized / comparisons : 0;
|
|
605
|
+
}
|
|
606
|
+
function detectModuleClusters(graph, options) {
|
|
554
607
|
const domainMap = /* @__PURE__ */ new Map();
|
|
555
608
|
for (const [file, node] of graph.nodes.entries()) {
|
|
556
609
|
const domains = node.exports.map((e) => e.inferredDomain || "unknown");
|
|
@@ -567,10 +620,28 @@ function detectModuleClusters(graph) {
|
|
|
567
620
|
const node = graph.nodes.get(file);
|
|
568
621
|
return sum + (node?.tokenCost || 0);
|
|
569
622
|
}, 0);
|
|
570
|
-
const
|
|
623
|
+
const baseFragmentation = calculateFragmentation(files, domain, { useLogScale: !!options?.useLogScale });
|
|
624
|
+
let importSimilarityTotal = 0;
|
|
625
|
+
let importComparisons = 0;
|
|
626
|
+
for (let i = 0; i < files.length; i++) {
|
|
627
|
+
for (let j = i + 1; j < files.length; j++) {
|
|
628
|
+
const f1 = files[i];
|
|
629
|
+
const f2 = files[j];
|
|
630
|
+
const n1 = graph.nodes.get(f1)?.imports || [];
|
|
631
|
+
const n2 = graph.nodes.get(f2)?.imports || [];
|
|
632
|
+
const similarity = n1.length === 0 && n2.length === 0 ? 0 : calculateJaccardSimilarity(n1, n2);
|
|
633
|
+
importSimilarityTotal += similarity;
|
|
634
|
+
importComparisons++;
|
|
635
|
+
}
|
|
636
|
+
}
|
|
637
|
+
const importCohesion = importComparisons > 0 ? importSimilarityTotal / importComparisons : 0;
|
|
638
|
+
const couplingDiscountFactor = 1 - 0.2 * importCohesion;
|
|
639
|
+
const fragmentationScore = baseFragmentation * couplingDiscountFactor;
|
|
640
|
+
const pathEntropy = calculatePathEntropy(files);
|
|
641
|
+
const directoryDistance = calculateDirectoryDistance(files);
|
|
571
642
|
const avgCohesion = files.reduce((sum, file) => {
|
|
572
643
|
const node = graph.nodes.get(file);
|
|
573
|
-
return sum + (node ? calculateCohesion(node.exports, file) : 0);
|
|
644
|
+
return sum + (node ? calculateCohesion(node.exports, file, { coUsageMatrix: graph.coUsageMatrix }) : 0);
|
|
574
645
|
}, 0) / files.length;
|
|
575
646
|
const targetFiles = Math.max(1, Math.ceil(files.length / 3));
|
|
576
647
|
const consolidationPlan = generateConsolidationPlan(
|
|
@@ -583,6 +654,9 @@ function detectModuleClusters(graph) {
|
|
|
583
654
|
files,
|
|
584
655
|
totalTokens,
|
|
585
656
|
fragmentationScore,
|
|
657
|
+
pathEntropy,
|
|
658
|
+
directoryDistance,
|
|
659
|
+
importCohesion,
|
|
586
660
|
avgCohesion,
|
|
587
661
|
suggestedStructure: {
|
|
588
662
|
targetFiles,
|
|
@@ -731,7 +805,7 @@ function extractExportsWithAST(content, filePath, domainOptions, fileImports) {
|
|
|
731
805
|
return extractExports(content, filePath, domainOptions, fileImports);
|
|
732
806
|
}
|
|
733
807
|
}
|
|
734
|
-
function calculateEnhancedCohesion(exports2, filePath) {
|
|
808
|
+
function calculateEnhancedCohesion(exports2, filePath, options) {
|
|
735
809
|
if (exports2.length === 0) return 1;
|
|
736
810
|
if (exports2.length === 1) return 1;
|
|
737
811
|
if (filePath && isTestFile(filePath)) {
|
|
@@ -739,11 +813,38 @@ function calculateEnhancedCohesion(exports2, filePath) {
|
|
|
739
813
|
}
|
|
740
814
|
const domainCohesion = calculateDomainCohesion(exports2);
|
|
741
815
|
const hasImportData = exports2.some((e) => e.imports && e.imports.length > 0);
|
|
742
|
-
|
|
743
|
-
|
|
816
|
+
const importCohesion = hasImportData ? calculateImportBasedCohesion(exports2) : void 0;
|
|
817
|
+
const coUsageMatrix = options?.coUsageMatrix;
|
|
818
|
+
const structuralCohesion = filePath && coUsageMatrix ? calculateStructuralCohesionFromCoUsage(filePath, coUsageMatrix) : void 0;
|
|
819
|
+
const defaultWeights = { importBased: 0.5, structural: 0.3, domainBased: 0.2 };
|
|
820
|
+
const weights = { ...defaultWeights, ...options?.weights || {} };
|
|
821
|
+
const signals = [];
|
|
822
|
+
if (importCohesion !== void 0) signals.push({ score: importCohesion, weight: weights.importBased });
|
|
823
|
+
if (structuralCohesion !== void 0) signals.push({ score: structuralCohesion, weight: weights.structural });
|
|
824
|
+
signals.push({ score: domainCohesion, weight: weights.domainBased });
|
|
825
|
+
const totalWeight = signals.reduce((s, el) => s + el.weight, 0);
|
|
826
|
+
if (totalWeight === 0) return domainCohesion;
|
|
827
|
+
const combined = signals.reduce((sum, el) => sum + el.score * (el.weight / totalWeight), 0);
|
|
828
|
+
return combined;
|
|
829
|
+
}
|
|
830
|
+
function calculateStructuralCohesionFromCoUsage(file, coUsageMatrix) {
|
|
831
|
+
if (!coUsageMatrix) return 1;
|
|
832
|
+
const coUsages = coUsageMatrix.get(file);
|
|
833
|
+
if (!coUsages || coUsages.size === 0) return 1;
|
|
834
|
+
let total = 0;
|
|
835
|
+
for (const count of coUsages.values()) total += count;
|
|
836
|
+
if (total === 0) return 1;
|
|
837
|
+
const probs = [];
|
|
838
|
+
for (const count of coUsages.values()) {
|
|
839
|
+
if (count > 0) probs.push(count / total);
|
|
840
|
+
}
|
|
841
|
+
if (probs.length <= 1) return 1;
|
|
842
|
+
let entropy = 0;
|
|
843
|
+
for (const p of probs) {
|
|
844
|
+
entropy -= p * Math.log2(p);
|
|
744
845
|
}
|
|
745
|
-
const
|
|
746
|
-
return
|
|
846
|
+
const maxEntropy = Math.log2(probs.length);
|
|
847
|
+
return maxEntropy > 0 ? 1 - entropy / maxEntropy : 1;
|
|
747
848
|
}
|
|
748
849
|
function calculateImportBasedCohesion(exports2) {
|
|
749
850
|
const exportsWithImports = exports2.filter((e) => e.imports && e.imports.length > 0);
|
|
@@ -859,7 +960,8 @@ async function analyzeContext(options) {
|
|
|
859
960
|
});
|
|
860
961
|
}
|
|
861
962
|
const circularDeps = detectCircularDependencies(graph);
|
|
862
|
-
const
|
|
963
|
+
const useLogScale = files.length >= 500;
|
|
964
|
+
const clusters = detectModuleClusters(graph, { useLogScale });
|
|
863
965
|
const fragmentationMap = /* @__PURE__ */ new Map();
|
|
864
966
|
for (const cluster of clusters) {
|
|
865
967
|
for (const file of cluster.files) {
|
|
@@ -971,17 +1073,41 @@ function generateSummary(results) {
|
|
|
971
1073
|
}
|
|
972
1074
|
const fragmentedModules = [];
|
|
973
1075
|
for (const [domain, files] of moduleMap.entries()) {
|
|
1076
|
+
let jaccard2 = function(a, b) {
|
|
1077
|
+
const s1 = new Set(a || []);
|
|
1078
|
+
const s2 = new Set(b || []);
|
|
1079
|
+
if (s1.size === 0 && s2.size === 0) return 0;
|
|
1080
|
+
const inter = new Set([...s1].filter((x) => s2.has(x)));
|
|
1081
|
+
const uni = /* @__PURE__ */ new Set([...s1, ...s2]);
|
|
1082
|
+
return uni.size === 0 ? 0 : inter.size / uni.size;
|
|
1083
|
+
};
|
|
1084
|
+
var jaccard = jaccard2;
|
|
974
1085
|
if (files.length < 2) continue;
|
|
975
1086
|
const fragmentationScore = files.reduce((sum, f) => sum + f.fragmentationScore, 0) / files.length;
|
|
976
1087
|
if (fragmentationScore < 0.3) continue;
|
|
977
1088
|
const totalTokens2 = files.reduce((sum, f) => sum + f.tokenCost, 0);
|
|
978
1089
|
const avgCohesion2 = files.reduce((sum, f) => sum + f.cohesionScore, 0) / files.length;
|
|
979
1090
|
const targetFiles = Math.max(1, Math.ceil(files.length / 3));
|
|
1091
|
+
const filePaths = files.map((f) => f.file);
|
|
1092
|
+
const pathEntropy = calculatePathEntropy(filePaths);
|
|
1093
|
+
const directoryDistance = calculateDirectoryDistance(filePaths);
|
|
1094
|
+
let importSimTotal = 0;
|
|
1095
|
+
let importPairs = 0;
|
|
1096
|
+
for (let i = 0; i < files.length; i++) {
|
|
1097
|
+
for (let j = i + 1; j < files.length; j++) {
|
|
1098
|
+
importSimTotal += jaccard2(files[i].dependencyList || [], files[j].dependencyList || []);
|
|
1099
|
+
importPairs++;
|
|
1100
|
+
}
|
|
1101
|
+
}
|
|
1102
|
+
const importCohesion = importPairs > 0 ? importSimTotal / importPairs : 0;
|
|
980
1103
|
fragmentedModules.push({
|
|
981
1104
|
domain,
|
|
982
1105
|
files: files.map((f) => f.file),
|
|
983
1106
|
totalTokens: totalTokens2,
|
|
984
1107
|
fragmentationScore,
|
|
1108
|
+
pathEntropy,
|
|
1109
|
+
directoryDistance,
|
|
1110
|
+
importCohesion,
|
|
985
1111
|
avgCohesion: avgCohesion2,
|
|
986
1112
|
suggestedStructure: {
|
|
987
1113
|
targetFiles,
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.mjs
CHANGED
package/dist/index.d.mts
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,KAAK,EACV,sBAAsB,EACtB,qBAAqB,EACrB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,cAAc,EACf,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,yBAAyB,EACzB,wBAAwB,EACxB,cAAc,EACd,2BAA2B,EAC5B,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACV,sBAAsB,EACtB,qBAAqB,EACrB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,cAAc,GACf,CAAC;AAEF,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,yBAAyB,EACzB,wBAAwB,EACxB,cAAc,EACd,2BAA2B,GAC5B,CAAC;AAEF;;;GAGG;AACH,iBAAe,gBAAgB,CAC7B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,OAAO,CAAC,sBAAsB,CAAC,GAC3C,OAAO,CAAC,sBAAsB,CAAC,CAuDjC;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,EAAE,CAAC,CA8LlC;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,qBAAqB,EAAE,GAC/B,cAAc,CAgKhB;AAkHD,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAgC5B,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -611,19 +611,72 @@ function detectCircularDependencies(graph) {
|
|
|
611
611
|
}
|
|
612
612
|
return cycles;
|
|
613
613
|
}
|
|
614
|
-
function calculateCohesion(exports2, filePath) {
|
|
615
|
-
return calculateEnhancedCohesion(exports2, filePath);
|
|
614
|
+
function calculateCohesion(exports2, filePath, options) {
|
|
615
|
+
return calculateEnhancedCohesion(exports2, filePath, options);
|
|
616
616
|
}
|
|
617
617
|
function isTestFile(filePath) {
|
|
618
618
|
const lower = filePath.toLowerCase();
|
|
619
619
|
return lower.includes("test") || lower.includes("spec") || lower.includes("mock") || lower.includes("fixture") || lower.includes("__tests__") || lower.includes(".test.") || lower.includes(".spec.");
|
|
620
620
|
}
|
|
621
|
-
function calculateFragmentation(files, domain) {
|
|
621
|
+
function calculateFragmentation(files, domain, options) {
|
|
622
622
|
if (files.length <= 1) return 0;
|
|
623
623
|
const directories = new Set(files.map((f) => f.split("/").slice(0, -1).join("/")));
|
|
624
|
-
|
|
624
|
+
const uniqueDirs = directories.size;
|
|
625
|
+
if (options?.useLogScale) {
|
|
626
|
+
if (uniqueDirs <= 1) return 0;
|
|
627
|
+
const total = files.length;
|
|
628
|
+
const base = options.logBase || Math.E;
|
|
629
|
+
const num = Math.log(uniqueDirs) / Math.log(base);
|
|
630
|
+
const den = Math.log(total) / Math.log(base);
|
|
631
|
+
return den > 0 ? num / den : 0;
|
|
632
|
+
}
|
|
633
|
+
return (uniqueDirs - 1) / (files.length - 1);
|
|
625
634
|
}
|
|
626
|
-
function
|
|
635
|
+
function calculatePathEntropy(files) {
|
|
636
|
+
if (!files || files.length === 0) return 0;
|
|
637
|
+
const dirCounts = /* @__PURE__ */ new Map();
|
|
638
|
+
for (const f of files) {
|
|
639
|
+
const dir = f.split("/").slice(0, -1).join("/") || ".";
|
|
640
|
+
dirCounts.set(dir, (dirCounts.get(dir) || 0) + 1);
|
|
641
|
+
}
|
|
642
|
+
const counts = Array.from(dirCounts.values());
|
|
643
|
+
if (counts.length <= 1) return 0;
|
|
644
|
+
const total = counts.reduce((s, v) => s + v, 0);
|
|
645
|
+
let entropy = 0;
|
|
646
|
+
for (const c of counts) {
|
|
647
|
+
const p = c / total;
|
|
648
|
+
entropy -= p * Math.log2(p);
|
|
649
|
+
}
|
|
650
|
+
const maxEntropy = Math.log2(counts.length);
|
|
651
|
+
return maxEntropy > 0 ? entropy / maxEntropy : 0;
|
|
652
|
+
}
|
|
653
|
+
function calculateDirectoryDistance(files) {
|
|
654
|
+
if (!files || files.length <= 1) return 0;
|
|
655
|
+
function pathSegments(p) {
|
|
656
|
+
return p.split("/").filter(Boolean);
|
|
657
|
+
}
|
|
658
|
+
function commonAncestorDepth(a, b) {
|
|
659
|
+
const minLen = Math.min(a.length, b.length);
|
|
660
|
+
let i = 0;
|
|
661
|
+
while (i < minLen && a[i] === b[i]) i++;
|
|
662
|
+
return i;
|
|
663
|
+
}
|
|
664
|
+
let totalNormalized = 0;
|
|
665
|
+
let comparisons = 0;
|
|
666
|
+
for (let i = 0; i < files.length; i++) {
|
|
667
|
+
for (let j = i + 1; j < files.length; j++) {
|
|
668
|
+
const segA = pathSegments(files[i]);
|
|
669
|
+
const segB = pathSegments(files[j]);
|
|
670
|
+
const shared = commonAncestorDepth(segA, segB);
|
|
671
|
+
const maxDepth = Math.max(segA.length, segB.length);
|
|
672
|
+
const normalizedShared = maxDepth > 0 ? shared / maxDepth : 0;
|
|
673
|
+
totalNormalized += 1 - normalizedShared;
|
|
674
|
+
comparisons++;
|
|
675
|
+
}
|
|
676
|
+
}
|
|
677
|
+
return comparisons > 0 ? totalNormalized / comparisons : 0;
|
|
678
|
+
}
|
|
679
|
+
function detectModuleClusters(graph, options) {
|
|
627
680
|
const domainMap = /* @__PURE__ */ new Map();
|
|
628
681
|
for (const [file, node] of graph.nodes.entries()) {
|
|
629
682
|
const domains = node.exports.map((e) => e.inferredDomain || "unknown");
|
|
@@ -640,10 +693,28 @@ function detectModuleClusters(graph) {
|
|
|
640
693
|
const node = graph.nodes.get(file);
|
|
641
694
|
return sum + (node?.tokenCost || 0);
|
|
642
695
|
}, 0);
|
|
643
|
-
const
|
|
696
|
+
const baseFragmentation = calculateFragmentation(files, domain, { useLogScale: !!options?.useLogScale });
|
|
697
|
+
let importSimilarityTotal = 0;
|
|
698
|
+
let importComparisons = 0;
|
|
699
|
+
for (let i = 0; i < files.length; i++) {
|
|
700
|
+
for (let j = i + 1; j < files.length; j++) {
|
|
701
|
+
const f1 = files[i];
|
|
702
|
+
const f2 = files[j];
|
|
703
|
+
const n1 = graph.nodes.get(f1)?.imports || [];
|
|
704
|
+
const n2 = graph.nodes.get(f2)?.imports || [];
|
|
705
|
+
const similarity = n1.length === 0 && n2.length === 0 ? 0 : calculateJaccardSimilarity(n1, n2);
|
|
706
|
+
importSimilarityTotal += similarity;
|
|
707
|
+
importComparisons++;
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
const importCohesion = importComparisons > 0 ? importSimilarityTotal / importComparisons : 0;
|
|
711
|
+
const couplingDiscountFactor = 1 - 0.2 * importCohesion;
|
|
712
|
+
const fragmentationScore = baseFragmentation * couplingDiscountFactor;
|
|
713
|
+
const pathEntropy = calculatePathEntropy(files);
|
|
714
|
+
const directoryDistance = calculateDirectoryDistance(files);
|
|
644
715
|
const avgCohesion = files.reduce((sum, file) => {
|
|
645
716
|
const node = graph.nodes.get(file);
|
|
646
|
-
return sum + (node ? calculateCohesion(node.exports, file) : 0);
|
|
717
|
+
return sum + (node ? calculateCohesion(node.exports, file, { coUsageMatrix: graph.coUsageMatrix }) : 0);
|
|
647
718
|
}, 0) / files.length;
|
|
648
719
|
const targetFiles = Math.max(1, Math.ceil(files.length / 3));
|
|
649
720
|
const consolidationPlan = generateConsolidationPlan(
|
|
@@ -656,6 +727,9 @@ function detectModuleClusters(graph) {
|
|
|
656
727
|
files,
|
|
657
728
|
totalTokens,
|
|
658
729
|
fragmentationScore,
|
|
730
|
+
pathEntropy,
|
|
731
|
+
directoryDistance,
|
|
732
|
+
importCohesion,
|
|
659
733
|
avgCohesion,
|
|
660
734
|
suggestedStructure: {
|
|
661
735
|
targetFiles,
|
|
@@ -804,7 +878,7 @@ function extractExportsWithAST(content, filePath, domainOptions, fileImports) {
|
|
|
804
878
|
return extractExports(content, filePath, domainOptions, fileImports);
|
|
805
879
|
}
|
|
806
880
|
}
|
|
807
|
-
function calculateEnhancedCohesion(exports2, filePath) {
|
|
881
|
+
function calculateEnhancedCohesion(exports2, filePath, options) {
|
|
808
882
|
if (exports2.length === 0) return 1;
|
|
809
883
|
if (exports2.length === 1) return 1;
|
|
810
884
|
if (filePath && isTestFile(filePath)) {
|
|
@@ -812,11 +886,38 @@ function calculateEnhancedCohesion(exports2, filePath) {
|
|
|
812
886
|
}
|
|
813
887
|
const domainCohesion = calculateDomainCohesion(exports2);
|
|
814
888
|
const hasImportData = exports2.some((e) => e.imports && e.imports.length > 0);
|
|
815
|
-
|
|
816
|
-
|
|
889
|
+
const importCohesion = hasImportData ? calculateImportBasedCohesion(exports2) : void 0;
|
|
890
|
+
const coUsageMatrix = options?.coUsageMatrix;
|
|
891
|
+
const structuralCohesion = filePath && coUsageMatrix ? calculateStructuralCohesionFromCoUsage(filePath, coUsageMatrix) : void 0;
|
|
892
|
+
const defaultWeights = { importBased: 0.5, structural: 0.3, domainBased: 0.2 };
|
|
893
|
+
const weights = { ...defaultWeights, ...options?.weights || {} };
|
|
894
|
+
const signals = [];
|
|
895
|
+
if (importCohesion !== void 0) signals.push({ score: importCohesion, weight: weights.importBased });
|
|
896
|
+
if (structuralCohesion !== void 0) signals.push({ score: structuralCohesion, weight: weights.structural });
|
|
897
|
+
signals.push({ score: domainCohesion, weight: weights.domainBased });
|
|
898
|
+
const totalWeight = signals.reduce((s, el) => s + el.weight, 0);
|
|
899
|
+
if (totalWeight === 0) return domainCohesion;
|
|
900
|
+
const combined = signals.reduce((sum, el) => sum + el.score * (el.weight / totalWeight), 0);
|
|
901
|
+
return combined;
|
|
902
|
+
}
|
|
903
|
+
function calculateStructuralCohesionFromCoUsage(file, coUsageMatrix) {
|
|
904
|
+
if (!coUsageMatrix) return 1;
|
|
905
|
+
const coUsages = coUsageMatrix.get(file);
|
|
906
|
+
if (!coUsages || coUsages.size === 0) return 1;
|
|
907
|
+
let total = 0;
|
|
908
|
+
for (const count of coUsages.values()) total += count;
|
|
909
|
+
if (total === 0) return 1;
|
|
910
|
+
const probs = [];
|
|
911
|
+
for (const count of coUsages.values()) {
|
|
912
|
+
if (count > 0) probs.push(count / total);
|
|
913
|
+
}
|
|
914
|
+
if (probs.length <= 1) return 1;
|
|
915
|
+
let entropy = 0;
|
|
916
|
+
for (const p of probs) {
|
|
917
|
+
entropy -= p * Math.log2(p);
|
|
817
918
|
}
|
|
818
|
-
const
|
|
819
|
-
return
|
|
919
|
+
const maxEntropy = Math.log2(probs.length);
|
|
920
|
+
return maxEntropy > 0 ? 1 - entropy / maxEntropy : 1;
|
|
820
921
|
}
|
|
821
922
|
function calculateImportBasedCohesion(exports2) {
|
|
822
923
|
const exportsWithImports = exports2.filter((e) => e.imports && e.imports.length > 0);
|
|
@@ -1083,7 +1184,8 @@ async function analyzeContext(options) {
|
|
|
1083
1184
|
});
|
|
1084
1185
|
}
|
|
1085
1186
|
const circularDeps = detectCircularDependencies(graph);
|
|
1086
|
-
const
|
|
1187
|
+
const useLogScale = files.length >= 500;
|
|
1188
|
+
const clusters = detectModuleClusters(graph, { useLogScale });
|
|
1087
1189
|
const fragmentationMap = /* @__PURE__ */ new Map();
|
|
1088
1190
|
for (const cluster of clusters) {
|
|
1089
1191
|
for (const file of cluster.files) {
|
|
@@ -1195,17 +1297,41 @@ function generateSummary(results) {
|
|
|
1195
1297
|
}
|
|
1196
1298
|
const fragmentedModules = [];
|
|
1197
1299
|
for (const [domain, files] of moduleMap.entries()) {
|
|
1300
|
+
let jaccard2 = function(a, b) {
|
|
1301
|
+
const s1 = new Set(a || []);
|
|
1302
|
+
const s2 = new Set(b || []);
|
|
1303
|
+
if (s1.size === 0 && s2.size === 0) return 0;
|
|
1304
|
+
const inter = new Set([...s1].filter((x) => s2.has(x)));
|
|
1305
|
+
const uni = /* @__PURE__ */ new Set([...s1, ...s2]);
|
|
1306
|
+
return uni.size === 0 ? 0 : inter.size / uni.size;
|
|
1307
|
+
};
|
|
1308
|
+
var jaccard = jaccard2;
|
|
1198
1309
|
if (files.length < 2) continue;
|
|
1199
1310
|
const fragmentationScore = files.reduce((sum, f) => sum + f.fragmentationScore, 0) / files.length;
|
|
1200
1311
|
if (fragmentationScore < 0.3) continue;
|
|
1201
1312
|
const totalTokens2 = files.reduce((sum, f) => sum + f.tokenCost, 0);
|
|
1202
1313
|
const avgCohesion2 = files.reduce((sum, f) => sum + f.cohesionScore, 0) / files.length;
|
|
1203
1314
|
const targetFiles = Math.max(1, Math.ceil(files.length / 3));
|
|
1315
|
+
const filePaths = files.map((f) => f.file);
|
|
1316
|
+
const pathEntropy = calculatePathEntropy(filePaths);
|
|
1317
|
+
const directoryDistance = calculateDirectoryDistance(filePaths);
|
|
1318
|
+
let importSimTotal = 0;
|
|
1319
|
+
let importPairs = 0;
|
|
1320
|
+
for (let i = 0; i < files.length; i++) {
|
|
1321
|
+
for (let j = i + 1; j < files.length; j++) {
|
|
1322
|
+
importSimTotal += jaccard2(files[i].dependencyList || [], files[j].dependencyList || []);
|
|
1323
|
+
importPairs++;
|
|
1324
|
+
}
|
|
1325
|
+
}
|
|
1326
|
+
const importCohesion = importPairs > 0 ? importSimTotal / importPairs : 0;
|
|
1204
1327
|
fragmentedModules.push({
|
|
1205
1328
|
domain,
|
|
1206
1329
|
files: files.map((f) => f.file),
|
|
1207
1330
|
totalTokens: totalTokens2,
|
|
1208
1331
|
fragmentationScore,
|
|
1332
|
+
pathEntropy,
|
|
1333
|
+
directoryDistance,
|
|
1334
|
+
importCohesion,
|
|
1209
1335
|
avgCohesion: avgCohesion2,
|
|
1210
1336
|
suggestedStructure: {
|
|
1211
1337
|
targetFiles,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ToolScoringOutput } from '@aiready/core';
|
|
2
|
+
import type { ContextSummary } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Calculate AI Readiness Score for context efficiency (0-100)
|
|
5
|
+
*
|
|
6
|
+
* Based on:
|
|
7
|
+
* - Average context budget (tokens needed to understand files)
|
|
8
|
+
* - Import depth (dependency chain length)
|
|
9
|
+
* - Fragmentation score (code organization)
|
|
10
|
+
* - Critical/major issues
|
|
11
|
+
*/
|
|
12
|
+
export declare function calculateContextScore(summary: ContextSummary): ToolScoringOutput;
|
|
13
|
+
//# sourceMappingURL=scoring.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scoring.d.ts","sourceRoot":"","sources":["../src/scoring.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,cAAc,GACtB,iBAAiB,CAmJnB"}
|