faf-cli 2.4.3 ā 2.4.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 +20 -11
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +13 -4
- package/dist/cli.js.map +1 -1
- package/dist/commands/enhance-real.d.ts.map +1 -1
- package/dist/commands/enhance-real.js +12 -1
- package/dist/commands/enhance-real.js.map +1 -1
- package/dist/commands/formats.d.ts.map +1 -1
- package/dist/commands/formats.js +3 -4
- package/dist/commands/formats.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +3 -7
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/tsa.d.ts +9 -0
- package/dist/commands/tsa.d.ts.map +1 -0
- package/dist/commands/tsa.js +60 -0
- package/dist/commands/tsa.js.map +1 -0
- package/dist/commands/version.d.ts.map +1 -1
- package/dist/commands/version.js +3 -4
- package/dist/commands/version.js.map +1 -1
- package/dist/commands/welcome.js +1 -1
- package/dist/commands/welcome.js.map +1 -1
- package/dist/engines/dependency-tsa.d.ts +89 -0
- package/dist/engines/dependency-tsa.d.ts.map +1 -0
- package/dist/engines/dependency-tsa.js +365 -0
- package/dist/engines/dependency-tsa.js.map +1 -0
- package/dist/utils/markdown-to-context.d.ts +28 -0
- package/dist/utils/markdown-to-context.d.ts.map +1 -0
- package/dist/utils/markdown-to-context.js +195 -0
- package/dist/utils/markdown-to-context.js.map +1 -0
- package/dist/utils/yaml-generator.d.ts +2 -0
- package/dist/utils/yaml-generator.d.ts.map +1 -1
- package/dist/utils/yaml-generator.js +30 -13
- package/dist/utils/yaml-generator.js.map +1 -1
- package/package.json +4 -5
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* š faf tsa - Dependency Intelligence
|
|
3
|
+
* Understanding your project through its dependencies
|
|
4
|
+
*/
|
|
5
|
+
export declare function tsaCommand(options: {
|
|
6
|
+
detailed?: boolean;
|
|
7
|
+
}): Promise<void>;
|
|
8
|
+
export declare function tsaQuickCheck(): Promise<number>;
|
|
9
|
+
//# sourceMappingURL=tsa.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tsa.d.ts","sourceRoot":"","sources":["../../src/commands/tsa.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,wBAAsB,UAAU,CAAC,OAAO,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsC/E;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAWrD"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* š faf tsa - Dependency Intelligence
|
|
4
|
+
* Understanding your project through its dependencies
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.tsaCommand = tsaCommand;
|
|
8
|
+
exports.tsaQuickCheck = tsaQuickCheck;
|
|
9
|
+
const dependency_tsa_1 = require("../engines/dependency-tsa");
|
|
10
|
+
const championship_style_1 = require("../utils/championship-style");
|
|
11
|
+
async function tsaCommand(options) {
|
|
12
|
+
try {
|
|
13
|
+
console.log();
|
|
14
|
+
console.log(championship_style_1.FAF_COLORS.fafCyan('š FAF TSA - Dependency Intelligence'));
|
|
15
|
+
console.log(championship_style_1.FAF_COLORS.fafWhite('Analyzing your dependencies for context insights...'));
|
|
16
|
+
console.log();
|
|
17
|
+
const inspector = new dependency_tsa_1.DependencyTSA();
|
|
18
|
+
const report = await inspector.inspect();
|
|
19
|
+
// Display report
|
|
20
|
+
dependency_tsa_1.DependencyTSA.displayReport(report);
|
|
21
|
+
// Add to .faf context
|
|
22
|
+
if (report.contextScore < 70) {
|
|
23
|
+
console.log(championship_style_1.FAF_COLORS.fafOrange('š Your dependency story is complex'));
|
|
24
|
+
console.log(championship_style_1.FAF_COLORS.fafWhite('Run: faf tsa --detailed for full analysis'));
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
console.log(championship_style_1.FAF_COLORS.fafGreen('⨠Clear dependency architecture detected!'));
|
|
28
|
+
}
|
|
29
|
+
// Show the secret sauce hint
|
|
30
|
+
if (options.detailed) {
|
|
31
|
+
console.log();
|
|
32
|
+
console.log(championship_style_1.FAF_COLORS.fafCyan('š How FAF TSA Works:'));
|
|
33
|
+
console.log(championship_style_1.FAF_COLORS.fafWhite(' 1. Scans actual usage patterns'));
|
|
34
|
+
console.log(championship_style_1.FAF_COLORS.fafWhite(' 2. Ranks dependencies by importance'));
|
|
35
|
+
console.log(championship_style_1.FAF_COLORS.fafWhite(' 3. Detects architectural patterns'));
|
|
36
|
+
console.log(championship_style_1.FAF_COLORS.fafWhite(' 4. Identifies migration/experimentation'));
|
|
37
|
+
console.log(championship_style_1.FAF_COLORS.fafWhite(' 5. Provides context insights for AI'));
|
|
38
|
+
console.log();
|
|
39
|
+
console.log(championship_style_1.FAF_COLORS.fafOrange('Context intelligence nobody else provides!'));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
console.error('TSA Inspection failed:', error);
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
async function tsaQuickCheck() {
|
|
48
|
+
/**
|
|
49
|
+
* Quick TSA score for inclusion in .faf
|
|
50
|
+
*/
|
|
51
|
+
try {
|
|
52
|
+
const inspector = new dependency_tsa_1.DependencyTSA();
|
|
53
|
+
const report = await inspector.inspect();
|
|
54
|
+
return report.contextScore;
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return 0;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=tsa.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tsa.js","sourceRoot":"","sources":["../../src/commands/tsa.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAKH,gCAsCC;AAED,sCAWC;AAtDD,8DAA0D;AAC1D,oEAAoE;AAE7D,KAAK,UAAU,UAAU,CAAC,OAA+B;IAC9D,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,qDAAqD,CAAC,CAAC,CAAC;QACxF,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,MAAM,SAAS,GAAG,IAAI,8BAAa,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;QAEzC,iBAAiB;QACjB,8BAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAEpC,sBAAsB;QACtB,IAAI,MAAM,CAAC,YAAY,GAAG,EAAE,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,SAAS,CAAC,qCAAqC,CAAC,CAAC,CAAC;YACzE,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,2CAA2C,CAAC,CAAC,CAAC;QAChF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,2CAA2C,CAAC,CAAC,CAAC;QAChF,CAAC;QAED,6BAA6B;QAC7B,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,kCAAkC,CAAC,CAAC,CAAC;YACrE,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,uCAAuC,CAAC,CAAC,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,qCAAqC,CAAC,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,2CAA2C,CAAC,CAAC,CAAC;YAC9E,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,uCAAuC,CAAC,CAAC,CAAC;YAC1E,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,SAAS,CAAC,4CAA4C,CAAC,CAAC,CAAC;QAClF,CAAC;IAEH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,aAAa;IACjC;;OAEG;IACH,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,8BAAa,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;QACzC,OAAO,MAAM,CAAC,YAAY,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,wBAAsB,cAAc,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,wBAAsB,cAAc,kBAoBnC"}
|
package/dist/commands/version.js
CHANGED
|
@@ -10,12 +10,11 @@ exports.versionCommand = versionCommand;
|
|
|
10
10
|
const chalk_1 = __importDefault(require("chalk"));
|
|
11
11
|
const championship_style_1 = require("../utils/championship-style");
|
|
12
12
|
async function versionCommand() {
|
|
13
|
-
//
|
|
14
|
-
console.log((0, championship_style_1.generateFAFHeader)());
|
|
13
|
+
// FAF banner is now shown by cli.ts - removed duplicate
|
|
15
14
|
const version = require('../../package.json').version;
|
|
16
15
|
console.log();
|
|
17
|
-
console.log(championship_style_1.FAF_COLORS.fafCyan(`š FAF
|
|
18
|
-
console.log(championship_style_1.FAF_COLORS.fafCyan(
|
|
16
|
+
console.log(championship_style_1.FAF_COLORS.fafCyan(`š FAF Podium Edition š`));
|
|
17
|
+
console.log(championship_style_1.FAF_COLORS.fafCyan(`āāāāāāāāāāāāāāāāāāāāāāāāāā`));
|
|
19
18
|
console.log();
|
|
20
19
|
console.log(championship_style_1.FAF_COLORS.fafOrange(` Version: ${version}`));
|
|
21
20
|
console.log(championship_style_1.FAF_COLORS.fafGreen(` Engine: MK2 ā”ļø`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;AAKH,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;AAKH,wCAoBC;AAvBD,kDAA0B;AAC1B,oEAA4E;AAErE,KAAK,UAAU,cAAc;IAClC,wDAAwD;IACxD,MAAM,OAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC;IAEtD,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,SAAS,CAAC,eAAe,OAAO,EAAE,CAAC,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
|
package/dist/commands/welcome.js
CHANGED
|
@@ -51,7 +51,7 @@ async function welcomeCommand() {
|
|
|
51
51
|
console.log();
|
|
52
52
|
console.log(championship_style_1.FAF_COLORS.fafCyan('ā'.repeat(50)));
|
|
53
53
|
console.log();
|
|
54
|
-
console.log(championship_style_1.FAF_COLORS.fafOrange(` š Welcome to FAF -
|
|
54
|
+
console.log(championship_style_1.FAF_COLORS.fafOrange(` š Welcome to FAF - Project DNA for AIāØ`));
|
|
55
55
|
console.log();
|
|
56
56
|
console.log(championship_style_1.FAF_COLORS.fafCyan('ā'.repeat(50)));
|
|
57
57
|
console.log();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"welcome.js","sourceRoot":"","sources":["../../src/commands/welcome.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQH,wCA+DC;AAKD,8CAeC;AAzFD,kDAA0B;AAC1B,oEAAoE;AACpE,oDAAiD;AACjD,2CAA6B;AAC7B,2BAAoC;AAE7B,KAAK,UAAU,cAAc;IAClC,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"welcome.js","sourceRoot":"","sources":["../../src/commands/welcome.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQH,wCA+DC;AAKD,8CAeC;AAzFD,kDAA0B;AAC1B,oEAAoE;AACpE,oDAAiD;AACjD,2CAA6B;AAC7B,2BAAoC;AAE7B,KAAK,UAAU,cAAc;IAClC,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,SAAS,CAAC,2CAA2C,CAAC,CAAC,CAAC;IAC/E,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC,CAAC;IACvF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,yCAAyC,CAAC,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,6DAA6D;IAC7D,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;IACxC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IAE5D,IAAI,CAAC,MAAM,IAAA,uBAAU,EAAC,aAAa,CAAC,EAAE,CAAC;QACrC,mBAAmB;QACnB,MAAM,aAAE,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC;YAC/C,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACnC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAEb,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,GAAG,8BAAS,CAAC,KAAK,iDAAiD,CAAC,CAAC,CAAC;IACxG,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,QAAQ,CAAC,GAAG,8BAAS,CAAC,MAAM,gCAAgC,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,+BAAU,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,iBAAiB;IACrC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;IACxC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;IAE5D,mCAAmC;IACnC,IAAI,CAAC,MAAM,IAAA,uBAAU,EAAC,aAAa,CAAC,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mCAAmC;IACnC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,UAAU,GAAG,MAAM,IAAA,uBAAU,EAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACxC,MAAM,IAAA,uBAAU,EAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC;IAEnE,OAAO,CAAC,UAAU,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* š FAF TSA - Dependency Intelligence
|
|
3
|
+
* Context enrichment through dependency analysis
|
|
4
|
+
*
|
|
5
|
+
* "We're INSPECTORS, not trash collectors"
|
|
6
|
+
* We ignore the trash and focus on the important stuff
|
|
7
|
+
* Understanding your project's story through its dependencies
|
|
8
|
+
* NEVER delete - just provide intelligence about what matters
|
|
9
|
+
*/
|
|
10
|
+
export interface DependencyInspection {
|
|
11
|
+
package: string;
|
|
12
|
+
version: string;
|
|
13
|
+
status: 'CORE' | 'ACTIVE' | 'DORMANT' | 'LEGACY';
|
|
14
|
+
usage: {
|
|
15
|
+
importCount: number;
|
|
16
|
+
fileCount: number;
|
|
17
|
+
locations: string[];
|
|
18
|
+
};
|
|
19
|
+
intelligence: {
|
|
20
|
+
category?: string;
|
|
21
|
+
purpose?: string;
|
|
22
|
+
alternatives?: string[];
|
|
23
|
+
bloatScore?: number;
|
|
24
|
+
pattern?: string;
|
|
25
|
+
};
|
|
26
|
+
insight: string;
|
|
27
|
+
}
|
|
28
|
+
export interface TSAReport {
|
|
29
|
+
totalPackages: number;
|
|
30
|
+
core: number;
|
|
31
|
+
active: number;
|
|
32
|
+
dormant: number;
|
|
33
|
+
legacy: number;
|
|
34
|
+
patterns: Record<string, string[]>;
|
|
35
|
+
contextScore: number;
|
|
36
|
+
insights: string[];
|
|
37
|
+
inspections: DependencyInspection[];
|
|
38
|
+
}
|
|
39
|
+
export declare class DependencyTSA {
|
|
40
|
+
private projectRoot;
|
|
41
|
+
private packageJson;
|
|
42
|
+
private inspectionResults;
|
|
43
|
+
constructor(projectRoot?: string);
|
|
44
|
+
/**
|
|
45
|
+
* š Full TSA Inspection
|
|
46
|
+
*/
|
|
47
|
+
inspect(): Promise<TSAReport>;
|
|
48
|
+
/**
|
|
49
|
+
* š Inspect individual package
|
|
50
|
+
*/
|
|
51
|
+
private inspectPackage;
|
|
52
|
+
/**
|
|
53
|
+
* š Analyze actual usage in codebase
|
|
54
|
+
*/
|
|
55
|
+
private analyzeUsage;
|
|
56
|
+
/**
|
|
57
|
+
* šµļø Gather intelligence about package
|
|
58
|
+
*/
|
|
59
|
+
private gatherIntelligence;
|
|
60
|
+
/**
|
|
61
|
+
* š Detect duplicate functionality
|
|
62
|
+
*/
|
|
63
|
+
private detectDuplicates;
|
|
64
|
+
/**
|
|
65
|
+
* š” Find known alternatives
|
|
66
|
+
*/
|
|
67
|
+
private findAlternatives;
|
|
68
|
+
/**
|
|
69
|
+
* š Check if package is duplicate
|
|
70
|
+
*/
|
|
71
|
+
private isDuplicate;
|
|
72
|
+
/**
|
|
73
|
+
* š Get usage pattern description
|
|
74
|
+
*/
|
|
75
|
+
private getUsagePattern;
|
|
76
|
+
/**
|
|
77
|
+
* š·ļø Get package category
|
|
78
|
+
*/
|
|
79
|
+
private getPackageCategory;
|
|
80
|
+
/**
|
|
81
|
+
* š Generate final TSA report
|
|
82
|
+
*/
|
|
83
|
+
private generateReport;
|
|
84
|
+
/**
|
|
85
|
+
* š Display TSA Report
|
|
86
|
+
*/
|
|
87
|
+
static displayReport(report: TSAReport): void;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=dependency-tsa.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-tsa.d.ts","sourceRoot":"","sources":["../../src/engines/dependency-tsa.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IACjD,KAAK,EAAE;QACL,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,YAAY,EAAE;QACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,oBAAoB,EAAE,CAAC;CACrC;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,iBAAiB,CAA8B;gBAE3C,WAAW,GAAE,MAAsB;IAW/C;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC;IAsBnC;;OAEG;YACW,cAAc;IAwC5B;;OAEG;YACW,YAAY;IAiD1B;;OAEG;YACW,kBAAkB;IAsBhC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA4BxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAaxB;;OAEG;IACH,OAAO,CAAC,WAAW;IAkBnB;;OAEG;IACH,OAAO,CAAC,eAAe;IAOvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAmB1B;;OAEG;IACH,OAAO,CAAC,cAAc;IAuDtB;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;CA0C9C"}
|
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* š FAF TSA - Dependency Intelligence
|
|
4
|
+
* Context enrichment through dependency analysis
|
|
5
|
+
*
|
|
6
|
+
* "We're INSPECTORS, not trash collectors"
|
|
7
|
+
* We ignore the trash and focus on the important stuff
|
|
8
|
+
* Understanding your project's story through its dependencies
|
|
9
|
+
* NEVER delete - just provide intelligence about what matters
|
|
10
|
+
*/
|
|
11
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
14
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
15
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
16
|
+
}
|
|
17
|
+
Object.defineProperty(o, k2, desc);
|
|
18
|
+
}) : (function(o, m, k, k2) {
|
|
19
|
+
if (k2 === undefined) k2 = k;
|
|
20
|
+
o[k2] = m[k];
|
|
21
|
+
}));
|
|
22
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
23
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
24
|
+
}) : function(o, v) {
|
|
25
|
+
o["default"] = v;
|
|
26
|
+
});
|
|
27
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
28
|
+
var ownKeys = function(o) {
|
|
29
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
30
|
+
var ar = [];
|
|
31
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
32
|
+
return ar;
|
|
33
|
+
};
|
|
34
|
+
return ownKeys(o);
|
|
35
|
+
};
|
|
36
|
+
return function (mod) {
|
|
37
|
+
if (mod && mod.__esModule) return mod;
|
|
38
|
+
var result = {};
|
|
39
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
40
|
+
__setModuleDefault(result, mod);
|
|
41
|
+
return result;
|
|
42
|
+
};
|
|
43
|
+
})();
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
exports.DependencyTSA = void 0;
|
|
46
|
+
const fs = __importStar(require("fs"));
|
|
47
|
+
const path = __importStar(require("path"));
|
|
48
|
+
const glob_1 = require("glob");
|
|
49
|
+
class DependencyTSA {
|
|
50
|
+
projectRoot;
|
|
51
|
+
packageJson;
|
|
52
|
+
inspectionResults = [];
|
|
53
|
+
constructor(projectRoot = process.cwd()) {
|
|
54
|
+
this.projectRoot = projectRoot;
|
|
55
|
+
const packageJsonPath = path.join(projectRoot, 'package.json');
|
|
56
|
+
if (!fs.existsSync(packageJsonPath)) {
|
|
57
|
+
throw new Error('No package.json found - nothing to inspect!');
|
|
58
|
+
}
|
|
59
|
+
this.packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* š Full TSA Inspection
|
|
63
|
+
*/
|
|
64
|
+
async inspect() {
|
|
65
|
+
console.log('š FAF TSA - Beginning dependency inspection...');
|
|
66
|
+
const allDeps = {
|
|
67
|
+
...this.packageJson.dependencies || {},
|
|
68
|
+
...this.packageJson.devDependencies || {}
|
|
69
|
+
};
|
|
70
|
+
// Phase 1: Scan each dependency
|
|
71
|
+
for (const [pkg, version] of Object.entries(allDeps)) {
|
|
72
|
+
await this.inspectPackage(pkg, version);
|
|
73
|
+
}
|
|
74
|
+
// Phase 2: Detect duplicates and patterns
|
|
75
|
+
const patterns = this.detectDuplicates();
|
|
76
|
+
// Phase 3: Calculate scores
|
|
77
|
+
const report = this.generateReport(patterns);
|
|
78
|
+
return report;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* š Inspect individual package
|
|
82
|
+
*/
|
|
83
|
+
async inspectPackage(pkg, version) {
|
|
84
|
+
console.log(` Inspecting ${pkg}...`);
|
|
85
|
+
const usage = await this.analyzeUsage(pkg);
|
|
86
|
+
const intelligence = await this.gatherIntelligence(pkg);
|
|
87
|
+
// Determine status based on inspection
|
|
88
|
+
let status = 'ACTIVE';
|
|
89
|
+
// TSA Context Engine - Understanding, not judging
|
|
90
|
+
let insight = '';
|
|
91
|
+
if (usage.importCount === 0) {
|
|
92
|
+
status = 'DORMANT';
|
|
93
|
+
insight = `Not imported but configured - possibly for tooling/scripts`;
|
|
94
|
+
}
|
|
95
|
+
else if (usage.importCount > 10) {
|
|
96
|
+
status = 'CORE';
|
|
97
|
+
insight = `Core dependency - used ${usage.importCount} times in ${usage.fileCount} files`;
|
|
98
|
+
}
|
|
99
|
+
else if (usage.importCount === 1 && usage.fileCount === 1) {
|
|
100
|
+
status = 'ACTIVE';
|
|
101
|
+
insight = `Single-purpose - used in ${usage.locations[0] || 'one location'}`;
|
|
102
|
+
}
|
|
103
|
+
else if (this.isDuplicate(pkg)) {
|
|
104
|
+
status = 'ACTIVE';
|
|
105
|
+
const category = this.getPackageCategory(pkg);
|
|
106
|
+
insight = `Part of ${category} pattern - multiple solutions present`;
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
status = 'ACTIVE';
|
|
110
|
+
insight = `Active in ${usage.fileCount} files - ${this.getUsagePattern(usage)}`;
|
|
111
|
+
}
|
|
112
|
+
this.inspectionResults.push({
|
|
113
|
+
package: pkg,
|
|
114
|
+
version,
|
|
115
|
+
status,
|
|
116
|
+
usage,
|
|
117
|
+
intelligence,
|
|
118
|
+
insight
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* š Analyze actual usage in codebase
|
|
123
|
+
*/
|
|
124
|
+
async analyzeUsage(pkg) {
|
|
125
|
+
const patterns = [
|
|
126
|
+
`**/*.{js,jsx,ts,tsx}`, // Source files
|
|
127
|
+
`!node_modules/**`, // Exclude node_modules
|
|
128
|
+
`!dist/**`, // Exclude build
|
|
129
|
+
`!build/**` // Exclude build
|
|
130
|
+
];
|
|
131
|
+
const files = await (0, glob_1.glob)(patterns[0], {
|
|
132
|
+
cwd: this.projectRoot,
|
|
133
|
+
ignore: patterns.slice(1).map(p => p.substring(1))
|
|
134
|
+
});
|
|
135
|
+
const locations = [];
|
|
136
|
+
let importCount = 0;
|
|
137
|
+
for (const file of files) {
|
|
138
|
+
const filePath = path.join(this.projectRoot, file);
|
|
139
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
140
|
+
// Check for various import patterns
|
|
141
|
+
const importPatterns = [
|
|
142
|
+
`require\\(['"\`]${pkg}['"\`]\\)`,
|
|
143
|
+
`require\\(['"\`]${pkg}/`,
|
|
144
|
+
`from ['"\`]${pkg}['"\`]`,
|
|
145
|
+
`from ['"\`]${pkg}/`,
|
|
146
|
+
`import\\(['"\`]${pkg}['"\`]\\)`,
|
|
147
|
+
`import\\(['"\`]${pkg}/`
|
|
148
|
+
];
|
|
149
|
+
for (const pattern of importPatterns) {
|
|
150
|
+
const regex = new RegExp(pattern, 'g');
|
|
151
|
+
const matches = content.match(regex);
|
|
152
|
+
if (matches) {
|
|
153
|
+
importCount += matches.length;
|
|
154
|
+
if (!locations.includes(file)) {
|
|
155
|
+
locations.push(file);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return {
|
|
161
|
+
importCount,
|
|
162
|
+
fileCount: locations.length,
|
|
163
|
+
locations
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* šµļø Gather intelligence about package
|
|
168
|
+
*/
|
|
169
|
+
async gatherIntelligence(pkg) {
|
|
170
|
+
const intelligence = {};
|
|
171
|
+
// Skip npm view for now - it's too slow
|
|
172
|
+
// In production, this would be cached/batched
|
|
173
|
+
// Check for known alternatives
|
|
174
|
+
intelligence.alternatives = this.findAlternatives(pkg);
|
|
175
|
+
// Simple bloat score based on known heavy packages
|
|
176
|
+
const heavyPackages = {
|
|
177
|
+
'moment': 50,
|
|
178
|
+
'lodash': 30,
|
|
179
|
+
'inquirer': 40,
|
|
180
|
+
'webpack': 60,
|
|
181
|
+
'react': 35
|
|
182
|
+
};
|
|
183
|
+
intelligence.bloatScore = heavyPackages[pkg] || 10;
|
|
184
|
+
return intelligence;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* š Detect duplicate functionality
|
|
188
|
+
*/
|
|
189
|
+
detectDuplicates() {
|
|
190
|
+
const duplicates = {};
|
|
191
|
+
// Known duplicate patterns
|
|
192
|
+
const duplicatePatterns = {
|
|
193
|
+
'http_clients': ['axios', 'request', 'node-fetch', 'got', 'superagent'],
|
|
194
|
+
'date_libraries': ['moment', 'dayjs', 'date-fns', 'luxon'],
|
|
195
|
+
'promise_libraries': ['bluebird', 'q', 'when', 'async'],
|
|
196
|
+
'test_frameworks': ['mocha', 'jest', 'jasmine', 'ava', 'tape'],
|
|
197
|
+
'bundlers': ['webpack', 'parcel', 'rollup', 'esbuild', 'vite'],
|
|
198
|
+
'utility_libraries': ['lodash', 'underscore', 'ramda']
|
|
199
|
+
};
|
|
200
|
+
const deps = Object.keys({
|
|
201
|
+
...this.packageJson.dependencies || {},
|
|
202
|
+
...this.packageJson.devDependencies || {}
|
|
203
|
+
});
|
|
204
|
+
for (const [category, packages] of Object.entries(duplicatePatterns)) {
|
|
205
|
+
const found = packages.filter(pkg => deps.includes(pkg));
|
|
206
|
+
if (found.length > 1) {
|
|
207
|
+
duplicates[category] = found;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
return duplicates;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* š” Find known alternatives
|
|
214
|
+
*/
|
|
215
|
+
findAlternatives(pkg) {
|
|
216
|
+
const alternatives = {
|
|
217
|
+
'request': ['axios', 'node-fetch', 'native fetch'],
|
|
218
|
+
'moment': ['dayjs', 'date-fns', 'Intl.DateTimeFormat'],
|
|
219
|
+
'lodash': ['native methods', 'ramda'],
|
|
220
|
+
'underscore': ['lodash', 'native methods'],
|
|
221
|
+
'body-parser': ['express built-in'],
|
|
222
|
+
'async': ['native promises', 'async/await']
|
|
223
|
+
};
|
|
224
|
+
return alternatives[pkg] || [];
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* š Check if package is duplicate
|
|
228
|
+
*/
|
|
229
|
+
isDuplicate(pkg) {
|
|
230
|
+
const duplicateGroups = [
|
|
231
|
+
['axios', 'request', 'node-fetch', 'got'],
|
|
232
|
+
['moment', 'dayjs', 'date-fns'],
|
|
233
|
+
['lodash', 'underscore', 'ramda']
|
|
234
|
+
];
|
|
235
|
+
for (const group of duplicateGroups) {
|
|
236
|
+
if (group.includes(pkg)) {
|
|
237
|
+
const deps = Object.keys(this.packageJson.dependencies || {});
|
|
238
|
+
const count = group.filter(p => deps.includes(p)).length;
|
|
239
|
+
if (count > 1)
|
|
240
|
+
return true;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return false;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* š Get usage pattern description
|
|
247
|
+
*/
|
|
248
|
+
getUsagePattern(usage) {
|
|
249
|
+
if (usage.fileCount > 10)
|
|
250
|
+
return 'widely distributed';
|
|
251
|
+
if (usage.fileCount > 5)
|
|
252
|
+
return 'moderately distributed';
|
|
253
|
+
if (usage.fileCount > 1)
|
|
254
|
+
return 'limited distribution';
|
|
255
|
+
return 'single location';
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* š·ļø Get package category
|
|
259
|
+
*/
|
|
260
|
+
getPackageCategory(pkg) {
|
|
261
|
+
const categories = {
|
|
262
|
+
'HTTP libraries': ['axios', 'request', 'node-fetch', 'got'],
|
|
263
|
+
'date handling': ['moment', 'dayjs', 'date-fns'],
|
|
264
|
+
'utility libraries': ['lodash', 'underscore', 'ramda'],
|
|
265
|
+
'testing': ['jest', 'mocha', 'jasmine'],
|
|
266
|
+
'build tools': ['webpack', 'vite', 'rollup'],
|
|
267
|
+
'type checking': ['@types/*', 'typescript'],
|
|
268
|
+
'linting': ['eslint', 'prettier', 'tslint']
|
|
269
|
+
};
|
|
270
|
+
for (const [category, packages] of Object.entries(categories)) {
|
|
271
|
+
if (packages.some(p => pkg.includes(p.replace('*', '')))) {
|
|
272
|
+
return category;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
return 'general';
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* š Generate final TSA report
|
|
279
|
+
*/
|
|
280
|
+
generateReport(patterns) {
|
|
281
|
+
const core = this.inspectionResults.filter(r => r.status === 'CORE').length;
|
|
282
|
+
const active = this.inspectionResults.filter(r => r.status === 'ACTIVE').length;
|
|
283
|
+
const dormant = this.inspectionResults.filter(r => r.status === 'DORMANT').length;
|
|
284
|
+
const legacy = this.inspectionResults.filter(r => r.status === 'LEGACY').length;
|
|
285
|
+
const totalPackages = this.inspectionResults.length;
|
|
286
|
+
const contextScore = Math.round((core + active) / totalPackages * 100);
|
|
287
|
+
const insights = [];
|
|
288
|
+
// Generate insights about the project
|
|
289
|
+
if (core > 0) {
|
|
290
|
+
const corePackages = this.inspectionResults.filter(r => r.status === 'CORE').map(r => r.package);
|
|
291
|
+
insights.push(`Core stack: ${corePackages.slice(0, 3).join(', ')}`);
|
|
292
|
+
}
|
|
293
|
+
if (dormant > 0) {
|
|
294
|
+
insights.push(`${dormant} configured packages not actively used - possibly for tooling/CI`);
|
|
295
|
+
}
|
|
296
|
+
if (Object.keys(patterns).length > 0) {
|
|
297
|
+
for (const [category, packages] of Object.entries(patterns)) {
|
|
298
|
+
insights.push(`Multiple ${category}: ${packages.join(' + ')} - possible migration or experimentation`);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
// Detect interesting patterns
|
|
302
|
+
const hasStripe = this.inspectionResults.some(r => r.package.includes('stripe'));
|
|
303
|
+
const hasAuth = this.inspectionResults.some(r => r.package.includes('auth') || r.package.includes('passport') || r.package.includes('jwt'));
|
|
304
|
+
if (hasStripe && !hasAuth) {
|
|
305
|
+
insights.push('Has Stripe but no auth packages - interesting payment architecture');
|
|
306
|
+
}
|
|
307
|
+
const hasLint = this.inspectionResults.some(r => r.package.includes('eslint'));
|
|
308
|
+
const lintUsage = this.inspectionResults.find(r => r.package.includes('eslint'));
|
|
309
|
+
if (hasLint && lintUsage?.status === 'DORMANT') {
|
|
310
|
+
insights.push('ESLint configured but not imported - aspirational code quality?');
|
|
311
|
+
}
|
|
312
|
+
return {
|
|
313
|
+
totalPackages,
|
|
314
|
+
core,
|
|
315
|
+
active,
|
|
316
|
+
dormant,
|
|
317
|
+
legacy,
|
|
318
|
+
patterns,
|
|
319
|
+
contextScore,
|
|
320
|
+
insights,
|
|
321
|
+
inspections: this.inspectionResults
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* š Display TSA Report
|
|
326
|
+
*/
|
|
327
|
+
static displayReport(report) {
|
|
328
|
+
console.log('\nš āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā');
|
|
329
|
+
console.log(' FAF TSA - DEPENDENCY INTELLIGENCE REPORT');
|
|
330
|
+
console.log('āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā\n');
|
|
331
|
+
console.log(`š¦ Total Packages Analyzed: ${report.totalPackages}`);
|
|
332
|
+
console.log(`ā CORE: ${report.core} (heavily used)`);
|
|
333
|
+
console.log(`ā
ACTIVE: ${report.active} (in use)`);
|
|
334
|
+
console.log(`š¤ DORMANT: ${report.dormant} (configured but not imported)`);
|
|
335
|
+
console.log(`šļø LEGACY: ${report.legacy} (historical)`);
|
|
336
|
+
console.log();
|
|
337
|
+
console.log(`š Context Score: ${report.contextScore}% (understanding of project)`);
|
|
338
|
+
console.log();
|
|
339
|
+
if (Object.keys(report.patterns).length > 0) {
|
|
340
|
+
console.log('š Patterns Detected:');
|
|
341
|
+
for (const [category, packages] of Object.entries(report.patterns)) {
|
|
342
|
+
console.log(` ${category}: ${packages.join(' + ')}`);
|
|
343
|
+
}
|
|
344
|
+
console.log();
|
|
345
|
+
}
|
|
346
|
+
if (report.insights.length > 0) {
|
|
347
|
+
console.log('š” Project Insights:');
|
|
348
|
+
report.insights.forEach(insight => {
|
|
349
|
+
console.log(` ⢠${insight}`);
|
|
350
|
+
});
|
|
351
|
+
console.log();
|
|
352
|
+
}
|
|
353
|
+
// Show dormant details for context
|
|
354
|
+
const dormantPackages = report.inspections.filter(i => i.status === 'DORMANT');
|
|
355
|
+
if (dormantPackages.length > 0) {
|
|
356
|
+
console.log('š¤ Dormant Packages (configured but not imported):');
|
|
357
|
+
dormantPackages.forEach(pkg => {
|
|
358
|
+
console.log(` ⢠${pkg.package}: ${pkg.insight}`);
|
|
359
|
+
});
|
|
360
|
+
}
|
|
361
|
+
console.log('\nš Use --detailed flag for complete dependency breakdown');
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
exports.DependencyTSA = DependencyTSA;
|
|
365
|
+
//# sourceMappingURL=dependency-tsa.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-tsa.js","sourceRoot":"","sources":["../../src/engines/dependency-tsa.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Markdown to Context Extractor
|
|
3
|
+
* Converts ANY markdown to structured YAML and extracts relevant context
|
|
4
|
+
*/
|
|
5
|
+
interface ExtractedContext {
|
|
6
|
+
title?: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
techStack?: string[];
|
|
9
|
+
goals?: string[];
|
|
10
|
+
features?: string[];
|
|
11
|
+
commands?: Record<string, string>;
|
|
12
|
+
dependencies?: string[];
|
|
13
|
+
raw?: Record<string, any>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Parse markdown and extract structured context
|
|
17
|
+
*/
|
|
18
|
+
export declare function markdownToContext(markdown: string): ExtractedContext;
|
|
19
|
+
/**
|
|
20
|
+
* Convert extracted context to FAF-compatible structure
|
|
21
|
+
*/
|
|
22
|
+
export declare function contextToFafData(context: ExtractedContext): Partial<any>;
|
|
23
|
+
/**
|
|
24
|
+
* Smart README ingestion - extract only valuable context
|
|
25
|
+
*/
|
|
26
|
+
export declare function ingestReadme(readmePath: string): Promise<Partial<any>>;
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=markdown-to-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-to-context.d.ts","sourceRoot":"","sources":["../../src/utils/markdown-to-context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,UAAU,gBAAgB;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAiFpE;AA2BD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,CAUxE;AAqBD;;GAEG;AACH,wBAAsB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAK5E"}
|