@ankh-studio/ai-enablement 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +243 -0
  3. package/dist/analyzers/tech-stack-analyzer.d.ts +63 -0
  4. package/dist/analyzers/tech-stack-analyzer.d.ts.map +1 -0
  5. package/dist/analyzers/tech-stack-analyzer.js +401 -0
  6. package/dist/analyzers/tech-stack-analyzer.js.map +1 -0
  7. package/dist/cli/index.d.ts +9 -0
  8. package/dist/cli/index.d.ts.map +1 -0
  9. package/dist/cli/index.js +347 -0
  10. package/dist/cli/index.js.map +1 -0
  11. package/dist/collectors/evidence-collector.d.ts +57 -0
  12. package/dist/collectors/evidence-collector.d.ts.map +1 -0
  13. package/dist/collectors/evidence-collector.js +386 -0
  14. package/dist/collectors/evidence-collector.js.map +1 -0
  15. package/dist/core/assessment-engine.d.ts +76 -0
  16. package/dist/core/assessment-engine.d.ts.map +1 -0
  17. package/dist/core/assessment-engine.js +310 -0
  18. package/dist/core/assessment-engine.js.map +1 -0
  19. package/dist/generators/adr-generator.d.ts +35 -0
  20. package/dist/generators/adr-generator.d.ts.map +1 -0
  21. package/dist/generators/adr-generator.js +339 -0
  22. package/dist/generators/adr-generator.js.map +1 -0
  23. package/dist/generators-backup-phase-2/adr-generator.d.ts +31 -0
  24. package/dist/generators-backup-phase-2/adr-generator.d.ts.map +1 -0
  25. package/dist/generators-backup-phase-2/adr-generator.js +309 -0
  26. package/dist/generators-backup-phase-2/adr-generator.js.map +1 -0
  27. package/dist/llm/coalescer.d.ts +45 -0
  28. package/dist/llm/coalescer.d.ts.map +1 -0
  29. package/dist/llm/coalescer.js +258 -0
  30. package/dist/llm/coalescer.js.map +1 -0
  31. package/dist/llm/copilot-client.d.ts +53 -0
  32. package/dist/llm/copilot-client.d.ts.map +1 -0
  33. package/dist/llm/copilot-client.js +198 -0
  34. package/dist/llm/copilot-client.js.map +1 -0
  35. package/dist/llm/prompt-templates.d.ts +24 -0
  36. package/dist/llm/prompt-templates.d.ts.map +1 -0
  37. package/dist/llm/prompt-templates.js +255 -0
  38. package/dist/llm/prompt-templates.js.map +1 -0
  39. package/dist/llm/response-processor.d.ts +50 -0
  40. package/dist/llm/response-processor.d.ts.map +1 -0
  41. package/dist/llm/response-processor.js +321 -0
  42. package/dist/llm/response-processor.js.map +1 -0
  43. package/dist/llm/structured-types.d.ts +184 -0
  44. package/dist/llm/structured-types.d.ts.map +1 -0
  45. package/dist/llm/structured-types.js +61 -0
  46. package/dist/llm/structured-types.js.map +1 -0
  47. package/dist/llm/validation.d.ts +57 -0
  48. package/dist/llm/validation.d.ts.map +1 -0
  49. package/dist/llm/validation.js +273 -0
  50. package/dist/llm/validation.js.map +1 -0
  51. package/dist/llm-backup-phase-1/coalescer.d.ts +40 -0
  52. package/dist/llm-backup-phase-1/coalescer.d.ts.map +1 -0
  53. package/dist/llm-backup-phase-1/coalescer.js +209 -0
  54. package/dist/llm-backup-phase-1/coalescer.js.map +1 -0
  55. package/dist/llm-backup-phase-1/copilot-client.d.ts +53 -0
  56. package/dist/llm-backup-phase-1/copilot-client.d.ts.map +1 -0
  57. package/dist/llm-backup-phase-1/copilot-client.js +198 -0
  58. package/dist/llm-backup-phase-1/copilot-client.js.map +1 -0
  59. package/dist/llm-backup-phase-1/prompt-templates.d.ts +23 -0
  60. package/dist/llm-backup-phase-1/prompt-templates.d.ts.map +1 -0
  61. package/dist/llm-backup-phase-1/prompt-templates.js +197 -0
  62. package/dist/llm-backup-phase-1/prompt-templates.js.map +1 -0
  63. package/dist/llm-backup-phase-1/response-processor.d.ts +44 -0
  64. package/dist/llm-backup-phase-1/response-processor.d.ts.map +1 -0
  65. package/dist/llm-backup-phase-1/response-processor.js +200 -0
  66. package/dist/llm-backup-phase-1/response-processor.js.map +1 -0
  67. package/dist/llm-backup-phase-1/validation.d.ts +57 -0
  68. package/dist/llm-backup-phase-1/validation.d.ts.map +1 -0
  69. package/dist/llm-backup-phase-1/validation.js +273 -0
  70. package/dist/llm-backup-phase-1/validation.js.map +1 -0
  71. package/dist/personas/base-persona.d.ts +28 -0
  72. package/dist/personas/base-persona.d.ts.map +1 -0
  73. package/dist/personas/base-persona.js +140 -0
  74. package/dist/personas/base-persona.js.map +1 -0
  75. package/dist/personas/consultant-persona.d.ts +25 -0
  76. package/dist/personas/consultant-persona.d.ts.map +1 -0
  77. package/dist/personas/consultant-persona.js +288 -0
  78. package/dist/personas/consultant-persona.js.map +1 -0
  79. package/dist/personas/persona-factory.d.ts +17 -0
  80. package/dist/personas/persona-factory.d.ts.map +1 -0
  81. package/dist/personas/persona-factory.js +53 -0
  82. package/dist/personas/persona-factory.js.map +1 -0
  83. package/dist/personas/research-backed-consultant.d.ts +12 -0
  84. package/dist/personas/research-backed-consultant.d.ts.map +1 -0
  85. package/dist/personas/research-backed-consultant.js +100 -0
  86. package/dist/personas/research-backed-consultant.js.map +1 -0
  87. package/dist/personas-backup-phase-1/base-persona.d.ts +28 -0
  88. package/dist/personas-backup-phase-1/base-persona.d.ts.map +1 -0
  89. package/dist/personas-backup-phase-1/base-persona.js +140 -0
  90. package/dist/personas-backup-phase-1/base-persona.js.map +1 -0
  91. package/dist/personas-backup-phase-1/consultant-persona.d.ts +24 -0
  92. package/dist/personas-backup-phase-1/consultant-persona.d.ts.map +1 -0
  93. package/dist/personas-backup-phase-1/consultant-persona.js +197 -0
  94. package/dist/personas-backup-phase-1/consultant-persona.js.map +1 -0
  95. package/dist/personas-backup-phase-1/persona-factory.d.ts +17 -0
  96. package/dist/personas-backup-phase-1/persona-factory.d.ts.map +1 -0
  97. package/dist/personas-backup-phase-1/persona-factory.js +53 -0
  98. package/dist/personas-backup-phase-1/persona-factory.js.map +1 -0
  99. package/dist/scanners/copilot-feature-scanner.d.ts +55 -0
  100. package/dist/scanners/copilot-feature-scanner.d.ts.map +1 -0
  101. package/dist/scanners/copilot-feature-scanner.js +259 -0
  102. package/dist/scanners/copilot-feature-scanner.js.map +1 -0
  103. package/dist/scorers/readiness-scorer.d.ts +42 -0
  104. package/dist/scorers/readiness-scorer.d.ts.map +1 -0
  105. package/dist/scorers/readiness-scorer.js +279 -0
  106. package/dist/scorers/readiness-scorer.js.map +1 -0
  107. package/dist/types/persona.d.ts +69 -0
  108. package/dist/types/persona.d.ts.map +1 -0
  109. package/dist/types/persona.js +9 -0
  110. package/dist/types/persona.js.map +1 -0
  111. package/package.json +77 -0
@@ -0,0 +1,386 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence-collector.js","sourceRoot":"","sources":["../../src/collectors/evidence-collector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
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
@@ -0,0 +1 @@
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"}