@ankh-studio/ai-enablement 1.0.0 → 1.0.3
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/LICENSE +1 -1
- package/README.md +40 -10
- package/dist/cli/index.js +21239 -312
- package/dist/index.js +5 -0
- package/package.json +35 -35
- package/dist/analyzers/tech-stack-analyzer.d.ts +0 -63
- package/dist/analyzers/tech-stack-analyzer.d.ts.map +0 -1
- package/dist/analyzers/tech-stack-analyzer.js +0 -401
- package/dist/analyzers/tech-stack-analyzer.js.map +0 -1
- package/dist/cli/index.d.ts +0 -9
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js.map +0 -1
- package/dist/collectors/evidence-collector.d.ts +0 -57
- package/dist/collectors/evidence-collector.d.ts.map +0 -1
- package/dist/collectors/evidence-collector.js +0 -386
- package/dist/collectors/evidence-collector.js.map +0 -1
- package/dist/core/assessment-engine.d.ts +0 -76
- package/dist/core/assessment-engine.d.ts.map +0 -1
- package/dist/core/assessment-engine.js +0 -310
- package/dist/core/assessment-engine.js.map +0 -1
- package/dist/generators/adr-generator.d.ts +0 -35
- package/dist/generators/adr-generator.d.ts.map +0 -1
- package/dist/generators/adr-generator.js +0 -339
- package/dist/generators/adr-generator.js.map +0 -1
- package/dist/generators-backup-phase-2/adr-generator.d.ts +0 -31
- package/dist/generators-backup-phase-2/adr-generator.d.ts.map +0 -1
- package/dist/generators-backup-phase-2/adr-generator.js +0 -309
- package/dist/generators-backup-phase-2/adr-generator.js.map +0 -1
- package/dist/llm/coalescer.d.ts +0 -45
- package/dist/llm/coalescer.d.ts.map +0 -1
- package/dist/llm/coalescer.js +0 -258
- package/dist/llm/coalescer.js.map +0 -1
- package/dist/llm/copilot-client.d.ts +0 -53
- package/dist/llm/copilot-client.d.ts.map +0 -1
- package/dist/llm/copilot-client.js +0 -198
- package/dist/llm/copilot-client.js.map +0 -1
- package/dist/llm/prompt-templates.d.ts +0 -24
- package/dist/llm/prompt-templates.d.ts.map +0 -1
- package/dist/llm/prompt-templates.js +0 -255
- package/dist/llm/prompt-templates.js.map +0 -1
- package/dist/llm/response-processor.d.ts +0 -50
- package/dist/llm/response-processor.d.ts.map +0 -1
- package/dist/llm/response-processor.js +0 -321
- package/dist/llm/response-processor.js.map +0 -1
- package/dist/llm/structured-types.d.ts +0 -184
- package/dist/llm/structured-types.d.ts.map +0 -1
- package/dist/llm/structured-types.js +0 -61
- package/dist/llm/structured-types.js.map +0 -1
- package/dist/llm/validation.d.ts +0 -57
- package/dist/llm/validation.d.ts.map +0 -1
- package/dist/llm/validation.js +0 -273
- package/dist/llm/validation.js.map +0 -1
- package/dist/llm-backup-phase-1/coalescer.d.ts +0 -40
- package/dist/llm-backup-phase-1/coalescer.d.ts.map +0 -1
- package/dist/llm-backup-phase-1/coalescer.js +0 -209
- package/dist/llm-backup-phase-1/coalescer.js.map +0 -1
- package/dist/llm-backup-phase-1/copilot-client.d.ts +0 -53
- package/dist/llm-backup-phase-1/copilot-client.d.ts.map +0 -1
- package/dist/llm-backup-phase-1/copilot-client.js +0 -198
- package/dist/llm-backup-phase-1/copilot-client.js.map +0 -1
- package/dist/llm-backup-phase-1/prompt-templates.d.ts +0 -23
- package/dist/llm-backup-phase-1/prompt-templates.d.ts.map +0 -1
- package/dist/llm-backup-phase-1/prompt-templates.js +0 -197
- package/dist/llm-backup-phase-1/prompt-templates.js.map +0 -1
- package/dist/llm-backup-phase-1/response-processor.d.ts +0 -44
- package/dist/llm-backup-phase-1/response-processor.d.ts.map +0 -1
- package/dist/llm-backup-phase-1/response-processor.js +0 -200
- package/dist/llm-backup-phase-1/response-processor.js.map +0 -1
- package/dist/llm-backup-phase-1/validation.d.ts +0 -57
- package/dist/llm-backup-phase-1/validation.d.ts.map +0 -1
- package/dist/llm-backup-phase-1/validation.js +0 -273
- package/dist/llm-backup-phase-1/validation.js.map +0 -1
- package/dist/personas/base-persona.d.ts +0 -28
- package/dist/personas/base-persona.d.ts.map +0 -1
- package/dist/personas/base-persona.js +0 -140
- package/dist/personas/base-persona.js.map +0 -1
- package/dist/personas/consultant-persona.d.ts +0 -25
- package/dist/personas/consultant-persona.d.ts.map +0 -1
- package/dist/personas/consultant-persona.js +0 -288
- package/dist/personas/consultant-persona.js.map +0 -1
- package/dist/personas/persona-factory.d.ts +0 -17
- package/dist/personas/persona-factory.d.ts.map +0 -1
- package/dist/personas/persona-factory.js +0 -53
- package/dist/personas/persona-factory.js.map +0 -1
- package/dist/personas/research-backed-consultant.d.ts +0 -12
- package/dist/personas/research-backed-consultant.d.ts.map +0 -1
- package/dist/personas/research-backed-consultant.js +0 -100
- package/dist/personas/research-backed-consultant.js.map +0 -1
- package/dist/personas-backup-phase-1/base-persona.d.ts +0 -28
- package/dist/personas-backup-phase-1/base-persona.d.ts.map +0 -1
- package/dist/personas-backup-phase-1/base-persona.js +0 -140
- package/dist/personas-backup-phase-1/base-persona.js.map +0 -1
- package/dist/personas-backup-phase-1/consultant-persona.d.ts +0 -24
- package/dist/personas-backup-phase-1/consultant-persona.d.ts.map +0 -1
- package/dist/personas-backup-phase-1/consultant-persona.js +0 -197
- package/dist/personas-backup-phase-1/consultant-persona.js.map +0 -1
- package/dist/personas-backup-phase-1/persona-factory.d.ts +0 -17
- package/dist/personas-backup-phase-1/persona-factory.d.ts.map +0 -1
- package/dist/personas-backup-phase-1/persona-factory.js +0 -53
- package/dist/personas-backup-phase-1/persona-factory.js.map +0 -1
- package/dist/scanners/copilot-feature-scanner.d.ts +0 -55
- package/dist/scanners/copilot-feature-scanner.d.ts.map +0 -1
- package/dist/scanners/copilot-feature-scanner.js +0 -259
- package/dist/scanners/copilot-feature-scanner.js.map +0 -1
- package/dist/scorers/readiness-scorer.d.ts +0 -42
- package/dist/scorers/readiness-scorer.d.ts.map +0 -1
- package/dist/scorers/readiness-scorer.js +0 -279
- package/dist/scorers/readiness-scorer.js.map +0 -1
- package/dist/types/persona.d.ts +0 -69
- package/dist/types/persona.d.ts.map +0 -1
- package/dist/types/persona.js +0 -9
- package/dist/types/persona.js.map +0 -1
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Evidence Collector
|
|
3
|
-
*
|
|
4
|
-
* Collects structured evidence from repository for AI readiness assessment
|
|
5
|
-
* including metrics, patterns, and contextual information
|
|
6
|
-
*/
|
|
7
|
-
export interface EvidenceData {
|
|
8
|
-
structure: {
|
|
9
|
-
hasReadme: boolean;
|
|
10
|
-
hasLicense: boolean;
|
|
11
|
-
hasChangelog: boolean;
|
|
12
|
-
hasContributing: boolean;
|
|
13
|
-
hasDocs: boolean;
|
|
14
|
-
directoryDepth: number;
|
|
15
|
-
fileCount: number;
|
|
16
|
-
};
|
|
17
|
-
configuration: {
|
|
18
|
-
hasGitignore: boolean;
|
|
19
|
-
hasEditorconfig: boolean;
|
|
20
|
-
hasPrettier: boolean;
|
|
21
|
-
hasEslint: boolean;
|
|
22
|
-
hasTypeScript: boolean;
|
|
23
|
-
hasTests: boolean;
|
|
24
|
-
hasCi: boolean;
|
|
25
|
-
};
|
|
26
|
-
patterns: {
|
|
27
|
-
commitMessageQuality: "excellent" | "good" | "basic" | "none";
|
|
28
|
-
branchProtection: boolean;
|
|
29
|
-
prTemplates: boolean;
|
|
30
|
-
issueTemplates: boolean;
|
|
31
|
-
documentationCoverage: number;
|
|
32
|
-
codeComplexity: "low" | "medium" | "high" | "unknown";
|
|
33
|
-
};
|
|
34
|
-
metrics: {
|
|
35
|
-
linesOfCode: number;
|
|
36
|
-
testCoverage: number;
|
|
37
|
-
documentationRatio: number;
|
|
38
|
-
dependencyHealth: "excellent" | "good" | "fair" | "poor";
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
export declare class EvidenceCollector {
|
|
42
|
-
collect(repoPath: string): Promise<EvidenceData>;
|
|
43
|
-
private collectStructureEvidence;
|
|
44
|
-
private collectConfigurationEvidence;
|
|
45
|
-
private collectPatternEvidence;
|
|
46
|
-
private collectMetricsEvidence;
|
|
47
|
-
private analyzeDirectoryStructure;
|
|
48
|
-
private calculateDocumentationCoverage;
|
|
49
|
-
private estimateCodeComplexity;
|
|
50
|
-
private countLinesOfCode;
|
|
51
|
-
private countDocumentationFiles;
|
|
52
|
-
private access;
|
|
53
|
-
private readFile;
|
|
54
|
-
private readdir;
|
|
55
|
-
private exists;
|
|
56
|
-
}
|
|
57
|
-
//# sourceMappingURL=evidence-collector.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"evidence-collector.d.ts","sourceRoot":"","sources":["../../src/collectors/evidence-collector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE;QACT,SAAS,EAAE,OAAO,CAAC;QACnB,UAAU,EAAE,OAAO,CAAC;QACpB,YAAY,EAAE,OAAO,CAAC;QACtB,eAAe,EAAE,OAAO,CAAC;QACzB,OAAO,EAAE,OAAO,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,aAAa,EAAE;QACb,YAAY,EAAE,OAAO,CAAC;QACtB,eAAe,EAAE,OAAO,CAAC;QACzB,WAAW,EAAE,OAAO,CAAC;QACrB,SAAS,EAAE,OAAO,CAAC;QACnB,aAAa,EAAE,OAAO,CAAC;QACvB,QAAQ,EAAE,OAAO,CAAC;QAClB,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;IACF,QAAQ,EAAE;QACR,oBAAoB,EAAE,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;QAC9D,gBAAgB,EAAE,OAAO,CAAC;QAC1B,WAAW,EAAE,OAAO,CAAC;QACrB,cAAc,EAAE,OAAO,CAAC;QACxB,qBAAqB,EAAE,MAAM,CAAC;QAC9B,cAAc,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;KACvD,CAAC;IACF,OAAO,EAAE;QACP,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,gBAAgB,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;KAC1D,CAAC;CACH;AAED,qBAAa,iBAAiB;IACtB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;YAuDxC,wBAAwB;YAqCxB,4BAA4B;YAmC5B,sBAAsB;YAkDtB,sBAAsB;YAoBtB,yBAAyB;YAqCzB,8BAA8B;YAyD9B,sBAAsB;YAiCtB,gBAAgB;YAmDhB,uBAAuB;YAqCvB,MAAM;YAIN,QAAQ;YAIR,OAAO;YAWP,MAAM;CAQrB"}
|
|
@@ -1,386 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Evidence Collector
|
|
4
|
-
*
|
|
5
|
-
* Collects structured evidence from repository for AI readiness assessment
|
|
6
|
-
* including metrics, patterns, and contextual information
|
|
7
|
-
*/
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.EvidenceCollector = void 0;
|
|
10
|
-
const promises_1 = require("fs/promises");
|
|
11
|
-
const path_1 = require("path");
|
|
12
|
-
class EvidenceCollector {
|
|
13
|
-
async collect(repoPath) {
|
|
14
|
-
const evidence = {
|
|
15
|
-
structure: {
|
|
16
|
-
hasReadme: false,
|
|
17
|
-
hasLicense: false,
|
|
18
|
-
hasChangelog: false,
|
|
19
|
-
hasContributing: false,
|
|
20
|
-
hasDocs: false,
|
|
21
|
-
directoryDepth: 0,
|
|
22
|
-
fileCount: 0,
|
|
23
|
-
},
|
|
24
|
-
configuration: {
|
|
25
|
-
hasGitignore: false,
|
|
26
|
-
hasEditorconfig: false,
|
|
27
|
-
hasPrettier: false,
|
|
28
|
-
hasEslint: false,
|
|
29
|
-
hasTypeScript: false,
|
|
30
|
-
hasTests: false,
|
|
31
|
-
hasCi: false,
|
|
32
|
-
},
|
|
33
|
-
patterns: {
|
|
34
|
-
commitMessageQuality: "none",
|
|
35
|
-
branchProtection: false,
|
|
36
|
-
prTemplates: false,
|
|
37
|
-
issueTemplates: false,
|
|
38
|
-
documentationCoverage: 0,
|
|
39
|
-
codeComplexity: "unknown",
|
|
40
|
-
},
|
|
41
|
-
metrics: {
|
|
42
|
-
linesOfCode: 0,
|
|
43
|
-
testCoverage: 0,
|
|
44
|
-
documentationRatio: 0,
|
|
45
|
-
dependencyHealth: "fair",
|
|
46
|
-
},
|
|
47
|
-
};
|
|
48
|
-
try {
|
|
49
|
-
// Collect structure evidence
|
|
50
|
-
await this.collectStructureEvidence(repoPath, evidence);
|
|
51
|
-
// Collect configuration evidence
|
|
52
|
-
await this.collectConfigurationEvidence(repoPath, evidence);
|
|
53
|
-
// Collect pattern evidence
|
|
54
|
-
await this.collectPatternEvidence(repoPath, evidence);
|
|
55
|
-
// Collect metrics evidence
|
|
56
|
-
await this.collectMetricsEvidence(repoPath, evidence);
|
|
57
|
-
}
|
|
58
|
-
catch (error) {
|
|
59
|
-
console.warn(`Warning: Could not complete evidence collection: ${error}`);
|
|
60
|
-
}
|
|
61
|
-
return evidence;
|
|
62
|
-
}
|
|
63
|
-
async collectStructureEvidence(repoPath, evidence) {
|
|
64
|
-
const structureFiles = [
|
|
65
|
-
{ path: "README.md", prop: "hasReadme" },
|
|
66
|
-
{ path: "README", prop: "hasReadme" },
|
|
67
|
-
{ path: "LICENSE", prop: "hasLicense" },
|
|
68
|
-
{ path: "CHANGELOG.md", prop: "hasChangelog" },
|
|
69
|
-
{ path: "CONTRIBUTING.md", prop: "hasContributing" },
|
|
70
|
-
{ path: "docs/", prop: "hasDocs" },
|
|
71
|
-
{ path: "doc/", prop: "hasDocs" },
|
|
72
|
-
];
|
|
73
|
-
for (const { path, prop } of structureFiles) {
|
|
74
|
-
const fullPath = (0, path_1.join)(repoPath, path);
|
|
75
|
-
try {
|
|
76
|
-
if (path.endsWith("/")) {
|
|
77
|
-
// Directory check
|
|
78
|
-
await this.access(fullPath, promises_1.constants.F_OK);
|
|
79
|
-
evidence.structure[prop] = true;
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
// File check
|
|
83
|
-
await this.access(fullPath, promises_1.constants.R_OK);
|
|
84
|
-
evidence.structure[prop] = true;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
catch {
|
|
88
|
-
// File doesn't exist, keep default false
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
// Calculate directory depth and file count
|
|
92
|
-
const { depth, count } = await this.analyzeDirectoryStructure(repoPath);
|
|
93
|
-
evidence.structure.directoryDepth = depth;
|
|
94
|
-
evidence.structure.fileCount = count;
|
|
95
|
-
}
|
|
96
|
-
async collectConfigurationEvidence(repoPath, evidence) {
|
|
97
|
-
const configFiles = [
|
|
98
|
-
{ path: ".gitignore", prop: "hasGitignore" },
|
|
99
|
-
{ path: ".editorconfig", prop: "hasEditorconfig" },
|
|
100
|
-
{ path: ".prettierrc", prop: "hasPrettier" },
|
|
101
|
-
{ path: "prettier.config.js", prop: "hasPrettier" },
|
|
102
|
-
{ path: ".eslintrc.json", prop: "hasEslint" },
|
|
103
|
-
{ path: ".eslintrc.js", prop: "hasEslint" },
|
|
104
|
-
{ path: "tsconfig.json", prop: "hasTypeScript" },
|
|
105
|
-
{ path: "jest.config.js", prop: "hasTests" },
|
|
106
|
-
{ path: "jest.config.json", prop: "hasTests" },
|
|
107
|
-
{ path: "vitest.config.ts", prop: "hasTests" },
|
|
108
|
-
{ path: ".github/workflows/", prop: "hasCi" },
|
|
109
|
-
{ path: ".gitlab-ci.yml", prop: "hasCi" },
|
|
110
|
-
];
|
|
111
|
-
for (const { path, prop } of configFiles) {
|
|
112
|
-
const fullPath = (0, path_1.join)(repoPath, path);
|
|
113
|
-
try {
|
|
114
|
-
if (path.endsWith("/")) {
|
|
115
|
-
await this.access(fullPath, promises_1.constants.F_OK);
|
|
116
|
-
evidence.configuration[prop] = true;
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
await this.access(fullPath, promises_1.constants.R_OK);
|
|
120
|
-
evidence.configuration[prop] = true;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
catch {
|
|
124
|
-
// File doesn't exist, keep default false
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
async collectPatternEvidence(repoPath, evidence) {
|
|
129
|
-
const githubDir = (0, path_1.join)(repoPath, ".github");
|
|
130
|
-
try {
|
|
131
|
-
// Check for GitHub patterns
|
|
132
|
-
await this.access(githubDir, promises_1.constants.F_OK);
|
|
133
|
-
// PR templates
|
|
134
|
-
const prTemplatePaths = [
|
|
135
|
-
(0, path_1.join)(githubDir, "pull_request_template.md"),
|
|
136
|
-
(0, path_1.join)(githubDir, "PULL_REQUEST_TEMPLATE.md"),
|
|
137
|
-
];
|
|
138
|
-
for (const path of prTemplatePaths) {
|
|
139
|
-
try {
|
|
140
|
-
await this.access(path, promises_1.constants.R_OK);
|
|
141
|
-
evidence.patterns.prTemplates = true;
|
|
142
|
-
break;
|
|
143
|
-
}
|
|
144
|
-
catch {
|
|
145
|
-
// Template doesn't exist
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
// Issue templates
|
|
149
|
-
const issueTemplateDir = (0, path_1.join)(githubDir, "ISSUE_TEMPLATE");
|
|
150
|
-
try {
|
|
151
|
-
const files = await this.readdir(issueTemplateDir);
|
|
152
|
-
evidence.patterns.issueTemplates = files.length > 0;
|
|
153
|
-
}
|
|
154
|
-
catch {
|
|
155
|
-
// Directory doesn't exist
|
|
156
|
-
}
|
|
157
|
-
// Branch protection (would require git API, set default)
|
|
158
|
-
evidence.patterns.branchProtection = false;
|
|
159
|
-
// Documentation coverage estimation
|
|
160
|
-
evidence.patterns.documentationCoverage =
|
|
161
|
-
await this.calculateDocumentationCoverage(repoPath);
|
|
162
|
-
// Code complexity estimation
|
|
163
|
-
evidence.patterns.codeComplexity =
|
|
164
|
-
await this.estimateCodeComplexity(repoPath);
|
|
165
|
-
}
|
|
166
|
-
catch (error) {
|
|
167
|
-
console.warn(`Warning: Could not analyze GitHub patterns: ${error}`);
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
async collectMetricsEvidence(repoPath, evidence) {
|
|
171
|
-
// Lines of code estimation
|
|
172
|
-
evidence.metrics.linesOfCode = await this.countLinesOfCode(repoPath);
|
|
173
|
-
// Test coverage estimation (would need test runner integration)
|
|
174
|
-
evidence.metrics.testCoverage = evidence.configuration.hasTests ? 50 : 0; // Placeholder
|
|
175
|
-
// Documentation ratio
|
|
176
|
-
const docFiles = await this.countDocumentationFiles(repoPath);
|
|
177
|
-
const totalFiles = evidence.structure.fileCount;
|
|
178
|
-
evidence.metrics.documentationRatio =
|
|
179
|
-
totalFiles > 0 ? (docFiles / totalFiles) * 100 : 0;
|
|
180
|
-
// Dependency health (would need security audit)
|
|
181
|
-
evidence.metrics.dependencyHealth = "fair"; // Placeholder
|
|
182
|
-
}
|
|
183
|
-
async analyzeDirectoryStructure(repoPath) {
|
|
184
|
-
let maxDepth = 0;
|
|
185
|
-
let fileCount = 0;
|
|
186
|
-
const scanDirectory = async (dir, currentDepth) => {
|
|
187
|
-
maxDepth = Math.max(maxDepth, currentDepth);
|
|
188
|
-
try {
|
|
189
|
-
const entries = await this.readdir(dir, { withFileTypes: true });
|
|
190
|
-
for (const entry of entries) {
|
|
191
|
-
const fullPath = (0, path_1.join)(dir, entry.name);
|
|
192
|
-
if (entry.isDirectory() &&
|
|
193
|
-
!entry.name.startsWith(".") &&
|
|
194
|
-
entry.name !== "node_modules") {
|
|
195
|
-
await scanDirectory(fullPath, currentDepth + 1);
|
|
196
|
-
}
|
|
197
|
-
else if (entry.isFile()) {
|
|
198
|
-
fileCount++;
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
catch (error) {
|
|
203
|
-
// Directory access denied, skip
|
|
204
|
-
}
|
|
205
|
-
};
|
|
206
|
-
await scanDirectory(repoPath, 0);
|
|
207
|
-
return { depth: maxDepth, count: fileCount };
|
|
208
|
-
}
|
|
209
|
-
async calculateDocumentationCoverage(repoPath) {
|
|
210
|
-
let docFiles = 0;
|
|
211
|
-
let codeFiles = 0;
|
|
212
|
-
const scanFiles = async (dir) => {
|
|
213
|
-
try {
|
|
214
|
-
const entries = await this.readdir(dir, { withFileTypes: true });
|
|
215
|
-
for (const entry of entries) {
|
|
216
|
-
const fullPath = (0, path_1.join)(dir, entry.name);
|
|
217
|
-
if (entry.isDirectory() &&
|
|
218
|
-
!entry.name.startsWith(".") &&
|
|
219
|
-
entry.name !== "node_modules") {
|
|
220
|
-
await scanFiles(fullPath);
|
|
221
|
-
}
|
|
222
|
-
else if (entry.isFile()) {
|
|
223
|
-
const ext = (0, path_1.extname)(entry.name).toLowerCase();
|
|
224
|
-
const name = entry.name.toLowerCase();
|
|
225
|
-
if ([".md", ".txt", ".rst", ".adoc"].includes(ext) ||
|
|
226
|
-
name.includes("readme")) {
|
|
227
|
-
docFiles++;
|
|
228
|
-
}
|
|
229
|
-
else if ([
|
|
230
|
-
".js",
|
|
231
|
-
".ts",
|
|
232
|
-
".jsx",
|
|
233
|
-
".tsx",
|
|
234
|
-
".py",
|
|
235
|
-
".java",
|
|
236
|
-
".cpp",
|
|
237
|
-
".c",
|
|
238
|
-
".go",
|
|
239
|
-
".rs",
|
|
240
|
-
].includes(ext)) {
|
|
241
|
-
codeFiles++;
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
catch (error) {
|
|
247
|
-
// Directory access denied, skip
|
|
248
|
-
}
|
|
249
|
-
};
|
|
250
|
-
await scanFiles(repoPath);
|
|
251
|
-
if (codeFiles === 0)
|
|
252
|
-
return 0;
|
|
253
|
-
return Math.min((docFiles / codeFiles) * 100, 100);
|
|
254
|
-
}
|
|
255
|
-
async estimateCodeComplexity(repoPath) {
|
|
256
|
-
// Simple heuristic based on file structure and dependencies
|
|
257
|
-
let complexityScore = 0;
|
|
258
|
-
try {
|
|
259
|
-
const packageJsonPath = (0, path_1.join)(repoPath, "package.json");
|
|
260
|
-
await this.access(packageJsonPath, promises_1.constants.R_OK);
|
|
261
|
-
const content = await this.readFile(packageJsonPath, "utf-8");
|
|
262
|
-
const packageJson = JSON.parse(content);
|
|
263
|
-
const depCount = Object.keys({
|
|
264
|
-
...packageJson.dependencies,
|
|
265
|
-
...packageJson.devDependencies,
|
|
266
|
-
}).length;
|
|
267
|
-
if (depCount > 50)
|
|
268
|
-
complexityScore += 2;
|
|
269
|
-
else if (depCount > 20)
|
|
270
|
-
complexityScore += 1;
|
|
271
|
-
// Check for complex patterns
|
|
272
|
-
if (await this.exists((0, path_1.join)(repoPath, "src/")))
|
|
273
|
-
complexityScore += 1;
|
|
274
|
-
if (await this.exists((0, path_1.join)(repoPath, "lib/")))
|
|
275
|
-
complexityScore += 1;
|
|
276
|
-
if (await this.exists((0, path_1.join)(repoPath, "packages/")))
|
|
277
|
-
complexityScore += 2; // Monorepo
|
|
278
|
-
}
|
|
279
|
-
catch (error) {
|
|
280
|
-
return "unknown";
|
|
281
|
-
}
|
|
282
|
-
if (complexityScore >= 4)
|
|
283
|
-
return "high";
|
|
284
|
-
if (complexityScore >= 2)
|
|
285
|
-
return "medium";
|
|
286
|
-
return "low";
|
|
287
|
-
}
|
|
288
|
-
async countLinesOfCode(repoPath) {
|
|
289
|
-
let totalLines = 0;
|
|
290
|
-
const countLines = async (dir) => {
|
|
291
|
-
try {
|
|
292
|
-
const entries = await this.readdir(dir, { withFileTypes: true });
|
|
293
|
-
for (const entry of entries) {
|
|
294
|
-
const fullPath = (0, path_1.join)(dir, entry.name);
|
|
295
|
-
if (entry.isDirectory() &&
|
|
296
|
-
!entry.name.startsWith(".") &&
|
|
297
|
-
entry.name !== "node_modules") {
|
|
298
|
-
await countLines(fullPath);
|
|
299
|
-
}
|
|
300
|
-
else if (entry.isFile()) {
|
|
301
|
-
const ext = (0, path_1.extname)(entry.name).toLowerCase();
|
|
302
|
-
if ([
|
|
303
|
-
".js",
|
|
304
|
-
".ts",
|
|
305
|
-
".jsx",
|
|
306
|
-
".tsx",
|
|
307
|
-
".py",
|
|
308
|
-
".java",
|
|
309
|
-
".cpp",
|
|
310
|
-
".c",
|
|
311
|
-
".go",
|
|
312
|
-
".rs",
|
|
313
|
-
].includes(ext)) {
|
|
314
|
-
try {
|
|
315
|
-
const content = await this.readFile(fullPath, "utf-8");
|
|
316
|
-
totalLines += content.split("\n").length;
|
|
317
|
-
}
|
|
318
|
-
catch {
|
|
319
|
-
// File read error, skip
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
catch (error) {
|
|
326
|
-
// Directory access denied, skip
|
|
327
|
-
}
|
|
328
|
-
};
|
|
329
|
-
await countLines(repoPath);
|
|
330
|
-
return totalLines;
|
|
331
|
-
}
|
|
332
|
-
async countDocumentationFiles(repoPath) {
|
|
333
|
-
let count = 0;
|
|
334
|
-
const countDocs = async (dir) => {
|
|
335
|
-
try {
|
|
336
|
-
const entries = await this.readdir(dir, { withFileTypes: true });
|
|
337
|
-
for (const entry of entries) {
|
|
338
|
-
const fullPath = (0, path_1.join)(dir, entry.name);
|
|
339
|
-
if (entry.isDirectory() &&
|
|
340
|
-
!entry.name.startsWith(".") &&
|
|
341
|
-
entry.name !== "node_modules") {
|
|
342
|
-
await countDocs(fullPath);
|
|
343
|
-
}
|
|
344
|
-
else if (entry.isFile()) {
|
|
345
|
-
const ext = (0, path_1.extname)(entry.name).toLowerCase();
|
|
346
|
-
const name = entry.name.toLowerCase();
|
|
347
|
-
if ([".md", ".txt", ".rst", ".adoc"].includes(ext) ||
|
|
348
|
-
name.includes("readme")) {
|
|
349
|
-
count++;
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
catch (error) {
|
|
355
|
-
// Directory access denied, skip
|
|
356
|
-
}
|
|
357
|
-
};
|
|
358
|
-
await countDocs(repoPath);
|
|
359
|
-
return count;
|
|
360
|
-
}
|
|
361
|
-
async access(path, mode) {
|
|
362
|
-
return (0, promises_1.access)(path, mode || promises_1.constants.R_OK);
|
|
363
|
-
}
|
|
364
|
-
async readFile(path, encoding) {
|
|
365
|
-
return (0, promises_1.readFile)(path, { encoding: encoding });
|
|
366
|
-
}
|
|
367
|
-
async readdir(path, options) {
|
|
368
|
-
if (options) {
|
|
369
|
-
return (0, promises_1.readdir)(path, options);
|
|
370
|
-
}
|
|
371
|
-
else {
|
|
372
|
-
return (0, promises_1.readdir)(path);
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
async exists(path) {
|
|
376
|
-
try {
|
|
377
|
-
await this.access(path, promises_1.constants.F_OK);
|
|
378
|
-
return true;
|
|
379
|
-
}
|
|
380
|
-
catch {
|
|
381
|
-
return false;
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
}
|
|
385
|
-
exports.EvidenceCollector = EvidenceCollector;
|
|
386
|
-
//# sourceMappingURL=evidence-collector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"evidence-collector.js","sourceRoot":"","sources":["../../src/collectors/evidence-collector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Core Assessment Engine - Spec-Driven AI Development
|
|
3
|
-
*
|
|
4
|
-
* This is the main orchestrator that combines:
|
|
5
|
-
* 1. Repository scanning (existing)
|
|
6
|
-
* 2. Tech stack analysis (existing)
|
|
7
|
-
* 3. AI readiness scoring (new)
|
|
8
|
-
* 4. Evidence-based recommendations (new)
|
|
9
|
-
* 5. ADR generation (existing)
|
|
10
|
-
*/
|
|
11
|
-
import { CopilotFeatureAnalysis } from "../scanners/copilot-feature-scanner";
|
|
12
|
-
import { PersonaResponse, PersonaType } from "../types/persona";
|
|
13
|
-
export interface AssessmentConfig {
|
|
14
|
-
repoPath: string;
|
|
15
|
-
githubUrl?: string;
|
|
16
|
-
outputPath?: string;
|
|
17
|
-
includeRecommendations?: boolean;
|
|
18
|
-
generateADR?: boolean;
|
|
19
|
-
outputFormat?: "json" | "adr" | "markdown";
|
|
20
|
-
persona?: PersonaType;
|
|
21
|
-
targetAudience?: "individual" | "team" | "organization";
|
|
22
|
-
enableLLMCoalescing?: boolean;
|
|
23
|
-
enableAdversarialValidation?: boolean;
|
|
24
|
-
}
|
|
25
|
-
export interface AssessmentResult {
|
|
26
|
-
metadata: {
|
|
27
|
-
timestamp: string;
|
|
28
|
-
repository: string;
|
|
29
|
-
version: string;
|
|
30
|
-
duration: number;
|
|
31
|
-
};
|
|
32
|
-
analysis: {
|
|
33
|
-
copilotFeatures: CopilotFeatureAnalysis;
|
|
34
|
-
techStack: any;
|
|
35
|
-
evidence: any;
|
|
36
|
-
};
|
|
37
|
-
scores: {
|
|
38
|
-
repoReadiness: number;
|
|
39
|
-
teamReadiness: number;
|
|
40
|
-
orgReadiness: number;
|
|
41
|
-
overallMaturity: number;
|
|
42
|
-
confidence: "high" | "medium" | "low";
|
|
43
|
-
};
|
|
44
|
-
recommendations: Recommendation[];
|
|
45
|
-
personaInsights?: PersonaResponse;
|
|
46
|
-
adr?: string;
|
|
47
|
-
}
|
|
48
|
-
export interface Recommendation {
|
|
49
|
-
id: string;
|
|
50
|
-
title: string;
|
|
51
|
-
description: string;
|
|
52
|
-
priority: "high" | "medium" | "low";
|
|
53
|
-
category: "foundation" | "security" | "workflow" | "ai" | "governance";
|
|
54
|
-
effort: "small" | "medium" | "large";
|
|
55
|
-
timeframe: string;
|
|
56
|
-
dependencies: string[];
|
|
57
|
-
evidence: string[];
|
|
58
|
-
}
|
|
59
|
-
export declare class AssessmentEngine {
|
|
60
|
-
private scanner;
|
|
61
|
-
private techAnalyzer;
|
|
62
|
-
private scorer;
|
|
63
|
-
private adrGenerator;
|
|
64
|
-
private evidenceCollector;
|
|
65
|
-
private config;
|
|
66
|
-
constructor(config: AssessmentConfig);
|
|
67
|
-
execute(): Promise<AssessmentResult>;
|
|
68
|
-
private generateRecommendations;
|
|
69
|
-
private extractEvidence;
|
|
70
|
-
private generatePersonaInsights;
|
|
71
|
-
saveResults(result: AssessmentResult): Promise<void>;
|
|
72
|
-
private generateMarkdownReport;
|
|
73
|
-
private getScoreStatus;
|
|
74
|
-
private getMaturityStatus;
|
|
75
|
-
}
|
|
76
|
-
//# sourceMappingURL=assessment-engine.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"assessment-engine.d.ts","sourceRoot":"","sources":["../../src/core/assessment-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,EACL,sBAAsB,EAEvB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAAkB,eAAe,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEhF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC;IAC3C,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,cAAc,CAAC,EAAE,YAAY,GAAG,MAAM,GAAG,cAAc,CAAC;IACxD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,2BAA2B,CAAC,EAAE,OAAO,CAAC;CACvC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE;QACR,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,QAAQ,EAAE;QACR,eAAe,EAAE,sBAAsB,CAAC;QACxC,SAAS,EAAE,GAAG,CAAC;QACf,QAAQ,EAAE,GAAG,CAAC;KACf,CAAC;IACF,MAAM,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;QACxB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;KACvC,CAAC;IACF,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACpC,QAAQ,EAAE,YAAY,GAAG,UAAU,GAAG,UAAU,GAAG,IAAI,GAAG,YAAY,CAAC;IACvE,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,MAAM,CAAmB;gBAErB,MAAM,EAAE,gBAAgB;IAmB9B,OAAO,IAAI,OAAO,CAAC,gBAAgB,CAAC;YAuF5B,uBAAuB;IA6ErC,OAAO,CAAC,eAAe;YAaT,uBAAuB;IA+B/B,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B1D,OAAO,CAAC,sBAAsB;IAoC9B,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,iBAAiB;CAM1B"}
|