@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.
- package/LICENSE +21 -0
- package/README.md +243 -0
- package/dist/analyzers/tech-stack-analyzer.d.ts +63 -0
- package/dist/analyzers/tech-stack-analyzer.d.ts.map +1 -0
- package/dist/analyzers/tech-stack-analyzer.js +401 -0
- package/dist/analyzers/tech-stack-analyzer.js.map +1 -0
- package/dist/cli/index.d.ts +9 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +347 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/collectors/evidence-collector.d.ts +57 -0
- package/dist/collectors/evidence-collector.d.ts.map +1 -0
- package/dist/collectors/evidence-collector.js +386 -0
- package/dist/collectors/evidence-collector.js.map +1 -0
- package/dist/core/assessment-engine.d.ts +76 -0
- package/dist/core/assessment-engine.d.ts.map +1 -0
- package/dist/core/assessment-engine.js +310 -0
- package/dist/core/assessment-engine.js.map +1 -0
- package/dist/generators/adr-generator.d.ts +35 -0
- package/dist/generators/adr-generator.d.ts.map +1 -0
- package/dist/generators/adr-generator.js +339 -0
- package/dist/generators/adr-generator.js.map +1 -0
- package/dist/generators-backup-phase-2/adr-generator.d.ts +31 -0
- package/dist/generators-backup-phase-2/adr-generator.d.ts.map +1 -0
- package/dist/generators-backup-phase-2/adr-generator.js +309 -0
- package/dist/generators-backup-phase-2/adr-generator.js.map +1 -0
- package/dist/llm/coalescer.d.ts +45 -0
- package/dist/llm/coalescer.d.ts.map +1 -0
- package/dist/llm/coalescer.js +258 -0
- package/dist/llm/coalescer.js.map +1 -0
- package/dist/llm/copilot-client.d.ts +53 -0
- package/dist/llm/copilot-client.d.ts.map +1 -0
- package/dist/llm/copilot-client.js +198 -0
- package/dist/llm/copilot-client.js.map +1 -0
- package/dist/llm/prompt-templates.d.ts +24 -0
- package/dist/llm/prompt-templates.d.ts.map +1 -0
- package/dist/llm/prompt-templates.js +255 -0
- package/dist/llm/prompt-templates.js.map +1 -0
- package/dist/llm/response-processor.d.ts +50 -0
- package/dist/llm/response-processor.d.ts.map +1 -0
- package/dist/llm/response-processor.js +321 -0
- package/dist/llm/response-processor.js.map +1 -0
- package/dist/llm/structured-types.d.ts +184 -0
- package/dist/llm/structured-types.d.ts.map +1 -0
- package/dist/llm/structured-types.js +61 -0
- package/dist/llm/structured-types.js.map +1 -0
- package/dist/llm/validation.d.ts +57 -0
- package/dist/llm/validation.d.ts.map +1 -0
- package/dist/llm/validation.js +273 -0
- package/dist/llm/validation.js.map +1 -0
- package/dist/llm-backup-phase-1/coalescer.d.ts +40 -0
- package/dist/llm-backup-phase-1/coalescer.d.ts.map +1 -0
- package/dist/llm-backup-phase-1/coalescer.js +209 -0
- package/dist/llm-backup-phase-1/coalescer.js.map +1 -0
- package/dist/llm-backup-phase-1/copilot-client.d.ts +53 -0
- package/dist/llm-backup-phase-1/copilot-client.d.ts.map +1 -0
- package/dist/llm-backup-phase-1/copilot-client.js +198 -0
- package/dist/llm-backup-phase-1/copilot-client.js.map +1 -0
- package/dist/llm-backup-phase-1/prompt-templates.d.ts +23 -0
- package/dist/llm-backup-phase-1/prompt-templates.d.ts.map +1 -0
- package/dist/llm-backup-phase-1/prompt-templates.js +197 -0
- package/dist/llm-backup-phase-1/prompt-templates.js.map +1 -0
- package/dist/llm-backup-phase-1/response-processor.d.ts +44 -0
- package/dist/llm-backup-phase-1/response-processor.d.ts.map +1 -0
- package/dist/llm-backup-phase-1/response-processor.js +200 -0
- package/dist/llm-backup-phase-1/response-processor.js.map +1 -0
- package/dist/llm-backup-phase-1/validation.d.ts +57 -0
- package/dist/llm-backup-phase-1/validation.d.ts.map +1 -0
- package/dist/llm-backup-phase-1/validation.js +273 -0
- package/dist/llm-backup-phase-1/validation.js.map +1 -0
- package/dist/personas/base-persona.d.ts +28 -0
- package/dist/personas/base-persona.d.ts.map +1 -0
- package/dist/personas/base-persona.js +140 -0
- package/dist/personas/base-persona.js.map +1 -0
- package/dist/personas/consultant-persona.d.ts +25 -0
- package/dist/personas/consultant-persona.d.ts.map +1 -0
- package/dist/personas/consultant-persona.js +288 -0
- package/dist/personas/consultant-persona.js.map +1 -0
- package/dist/personas/persona-factory.d.ts +17 -0
- package/dist/personas/persona-factory.d.ts.map +1 -0
- package/dist/personas/persona-factory.js +53 -0
- package/dist/personas/persona-factory.js.map +1 -0
- package/dist/personas/research-backed-consultant.d.ts +12 -0
- package/dist/personas/research-backed-consultant.d.ts.map +1 -0
- package/dist/personas/research-backed-consultant.js +100 -0
- package/dist/personas/research-backed-consultant.js.map +1 -0
- package/dist/personas-backup-phase-1/base-persona.d.ts +28 -0
- package/dist/personas-backup-phase-1/base-persona.d.ts.map +1 -0
- package/dist/personas-backup-phase-1/base-persona.js +140 -0
- package/dist/personas-backup-phase-1/base-persona.js.map +1 -0
- package/dist/personas-backup-phase-1/consultant-persona.d.ts +24 -0
- package/dist/personas-backup-phase-1/consultant-persona.d.ts.map +1 -0
- package/dist/personas-backup-phase-1/consultant-persona.js +197 -0
- package/dist/personas-backup-phase-1/consultant-persona.js.map +1 -0
- package/dist/personas-backup-phase-1/persona-factory.d.ts +17 -0
- package/dist/personas-backup-phase-1/persona-factory.d.ts.map +1 -0
- package/dist/personas-backup-phase-1/persona-factory.js +53 -0
- package/dist/personas-backup-phase-1/persona-factory.js.map +1 -0
- package/dist/scanners/copilot-feature-scanner.d.ts +55 -0
- package/dist/scanners/copilot-feature-scanner.d.ts.map +1 -0
- package/dist/scanners/copilot-feature-scanner.js +259 -0
- package/dist/scanners/copilot-feature-scanner.js.map +1 -0
- package/dist/scorers/readiness-scorer.d.ts +42 -0
- package/dist/scorers/readiness-scorer.d.ts.map +1 -0
- package/dist/scorers/readiness-scorer.js +279 -0
- package/dist/scorers/readiness-scorer.js.map +1 -0
- package/dist/types/persona.d.ts +69 -0
- package/dist/types/persona.d.ts.map +1 -0
- package/dist/types/persona.js +9 -0
- package/dist/types/persona.js.map +1 -0
- package/package.json +77 -0
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Core Assessment Engine - Spec-Driven AI Development
|
|
4
|
+
*
|
|
5
|
+
* This is the main orchestrator that combines:
|
|
6
|
+
* 1. Repository scanning (existing)
|
|
7
|
+
* 2. Tech stack analysis (existing)
|
|
8
|
+
* 3. AI readiness scoring (new)
|
|
9
|
+
* 4. Evidence-based recommendations (new)
|
|
10
|
+
* 5. ADR generation (existing)
|
|
11
|
+
*/
|
|
12
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
15
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
16
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
17
|
+
}
|
|
18
|
+
Object.defineProperty(o, k2, desc);
|
|
19
|
+
}) : (function(o, m, k, k2) {
|
|
20
|
+
if (k2 === undefined) k2 = k;
|
|
21
|
+
o[k2] = m[k];
|
|
22
|
+
}));
|
|
23
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
24
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
25
|
+
}) : function(o, v) {
|
|
26
|
+
o["default"] = v;
|
|
27
|
+
});
|
|
28
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
29
|
+
var ownKeys = function(o) {
|
|
30
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
31
|
+
var ar = [];
|
|
32
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
33
|
+
return ar;
|
|
34
|
+
};
|
|
35
|
+
return ownKeys(o);
|
|
36
|
+
};
|
|
37
|
+
return function (mod) {
|
|
38
|
+
if (mod && mod.__esModule) return mod;
|
|
39
|
+
var result = {};
|
|
40
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
41
|
+
__setModuleDefault(result, mod);
|
|
42
|
+
return result;
|
|
43
|
+
};
|
|
44
|
+
})();
|
|
45
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
|
+
exports.AssessmentEngine = void 0;
|
|
47
|
+
const tech_stack_analyzer_1 = require("../analyzers/tech-stack-analyzer");
|
|
48
|
+
const evidence_collector_1 = require("../collectors/evidence-collector");
|
|
49
|
+
const adr_generator_1 = require("../generators/adr-generator");
|
|
50
|
+
const persona_factory_1 = require("../personas/persona-factory");
|
|
51
|
+
const copilot_feature_scanner_1 = require("../scanners/copilot-feature-scanner");
|
|
52
|
+
const readiness_scorer_1 = require("../scorers/readiness-scorer");
|
|
53
|
+
class AssessmentEngine {
|
|
54
|
+
constructor(config) {
|
|
55
|
+
this.config = {
|
|
56
|
+
includeRecommendations: true,
|
|
57
|
+
generateADR: true,
|
|
58
|
+
outputFormat: "json",
|
|
59
|
+
persona: "consultant",
|
|
60
|
+
targetAudience: "organization",
|
|
61
|
+
enableLLMCoalescing: false,
|
|
62
|
+
enableAdversarialValidation: true,
|
|
63
|
+
...config,
|
|
64
|
+
};
|
|
65
|
+
this.scanner = new copilot_feature_scanner_1.CopilotFeatureScanner();
|
|
66
|
+
this.techAnalyzer = new tech_stack_analyzer_1.TechStackAnalyzer();
|
|
67
|
+
this.scorer = new readiness_scorer_1.ReadinessScorer();
|
|
68
|
+
this.adrGenerator = new adr_generator_1.ADRGenerator();
|
|
69
|
+
this.evidenceCollector = new evidence_collector_1.EvidenceCollector();
|
|
70
|
+
}
|
|
71
|
+
async execute() {
|
|
72
|
+
const startTime = Date.now();
|
|
73
|
+
console.log("🚀 Starting AI Enablement Assessment...");
|
|
74
|
+
try {
|
|
75
|
+
// Phase 1: Data Collection (parallel for performance)
|
|
76
|
+
const [copilotFeatures, techStack, evidence] = await Promise.all([
|
|
77
|
+
this.scanner.scan(this.config.repoPath),
|
|
78
|
+
this.techAnalyzer.analyze(this.config.repoPath),
|
|
79
|
+
this.evidenceCollector.collect(this.config.repoPath),
|
|
80
|
+
]);
|
|
81
|
+
console.log("📊 Analysis complete, calculating scores...");
|
|
82
|
+
// Phase 2: Deterministic Scoring
|
|
83
|
+
const scores = await this.scorer.calculate({
|
|
84
|
+
copilotFeatures,
|
|
85
|
+
techStack,
|
|
86
|
+
evidence,
|
|
87
|
+
});
|
|
88
|
+
console.log("🎯 Scoring complete, generating recommendations...");
|
|
89
|
+
// Phase 3: Evidence-Based Recommendations
|
|
90
|
+
const recommendations = this.config.includeRecommendations
|
|
91
|
+
? await this.generateRecommendations(scores, copilotFeatures, evidence)
|
|
92
|
+
: [];
|
|
93
|
+
// Phase 4: Persona Analysis (if requested)
|
|
94
|
+
let personaInsights;
|
|
95
|
+
if (this.config.persona) {
|
|
96
|
+
console.log("🤖 Generating persona insights...");
|
|
97
|
+
personaInsights = await this.generatePersonaInsights(scores, copilotFeatures, techStack, evidence);
|
|
98
|
+
}
|
|
99
|
+
// Phase 5: ADR Generation (if requested)
|
|
100
|
+
let adr;
|
|
101
|
+
if (this.config.generateADR) {
|
|
102
|
+
console.log("📝 Generating ADR...");
|
|
103
|
+
adr = await this.adrGenerator.generate({
|
|
104
|
+
scores,
|
|
105
|
+
copilotFeatures,
|
|
106
|
+
techStack,
|
|
107
|
+
evidence,
|
|
108
|
+
recommendations,
|
|
109
|
+
structuredInsights: personaInsights?.structuredInsights,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
const duration = Date.now() - startTime;
|
|
113
|
+
const result = {
|
|
114
|
+
metadata: {
|
|
115
|
+
timestamp: new Date().toISOString(),
|
|
116
|
+
repository: this.config.repoPath,
|
|
117
|
+
version: "1.0.0",
|
|
118
|
+
duration,
|
|
119
|
+
},
|
|
120
|
+
analysis: {
|
|
121
|
+
copilotFeatures,
|
|
122
|
+
techStack,
|
|
123
|
+
evidence,
|
|
124
|
+
},
|
|
125
|
+
scores,
|
|
126
|
+
recommendations,
|
|
127
|
+
};
|
|
128
|
+
if (personaInsights) {
|
|
129
|
+
result.personaInsights = personaInsights;
|
|
130
|
+
}
|
|
131
|
+
if (adr) {
|
|
132
|
+
result.adr = adr;
|
|
133
|
+
}
|
|
134
|
+
console.log(`✅ Assessment complete in ${duration}ms!`);
|
|
135
|
+
return result;
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
console.error("❌ Assessment failed:", error);
|
|
139
|
+
throw error;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
async generateRecommendations(scores, features, evidence) {
|
|
143
|
+
const recommendations = [];
|
|
144
|
+
// Foundation recommendations
|
|
145
|
+
if (scores.repoReadiness < 70) {
|
|
146
|
+
recommendations.push({
|
|
147
|
+
id: "found-001",
|
|
148
|
+
title: "Improve Repository Structure",
|
|
149
|
+
description: "Standardize repository structure and add essential configuration files",
|
|
150
|
+
priority: "high",
|
|
151
|
+
category: "foundation",
|
|
152
|
+
effort: "medium",
|
|
153
|
+
timeframe: "30 days",
|
|
154
|
+
dependencies: [],
|
|
155
|
+
evidence: this.extractEvidence(evidence, ["structure", "config"]),
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
// Security recommendations
|
|
159
|
+
if (!features.githubFeatures.codeowners.found) {
|
|
160
|
+
recommendations.push({
|
|
161
|
+
id: "sec-001",
|
|
162
|
+
title: "Add CODEOWNERS File",
|
|
163
|
+
description: "Define code ownership for better security and review processes",
|
|
164
|
+
priority: "high",
|
|
165
|
+
category: "security",
|
|
166
|
+
effort: "small",
|
|
167
|
+
timeframe: "7 days",
|
|
168
|
+
dependencies: [],
|
|
169
|
+
evidence: this.extractEvidence(evidence, ["codeowners"]),
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
// AI/Workflow recommendations
|
|
173
|
+
if (!features.githubFeatures.copilotInstructions.found) {
|
|
174
|
+
recommendations.push({
|
|
175
|
+
id: "ai-001",
|
|
176
|
+
title: "Add Copilot Instructions",
|
|
177
|
+
description: "Create Copilot instructions to guide AI assistance in your repository",
|
|
178
|
+
priority: "medium",
|
|
179
|
+
category: "ai",
|
|
180
|
+
effort: "small",
|
|
181
|
+
timeframe: "14 days",
|
|
182
|
+
dependencies: ["found-001"],
|
|
183
|
+
evidence: this.extractEvidence(evidence, ["copilot", "instructions"]),
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
// Governance recommendations
|
|
187
|
+
if (scores.orgReadiness < 60) {
|
|
188
|
+
recommendations.push({
|
|
189
|
+
id: "gov-001",
|
|
190
|
+
title: "Establish Governance Processes",
|
|
191
|
+
description: "Implement clear processes for code review, testing, and deployment",
|
|
192
|
+
priority: "medium",
|
|
193
|
+
category: "governance",
|
|
194
|
+
effort: "large",
|
|
195
|
+
timeframe: "60 days",
|
|
196
|
+
dependencies: ["found-001", "sec-001"],
|
|
197
|
+
evidence: this.extractEvidence(evidence, ["governance", "process"]),
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
return recommendations.sort((a, b) => {
|
|
201
|
+
const priorityOrder = { high: 3, medium: 2, low: 1 };
|
|
202
|
+
return priorityOrder[b.priority] - priorityOrder[a.priority];
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
extractEvidence(evidence, categories) {
|
|
206
|
+
// Extract relevant evidence based on categories
|
|
207
|
+
const evidenceItems = [];
|
|
208
|
+
for (const category of categories) {
|
|
209
|
+
if (evidence[category]) {
|
|
210
|
+
evidenceItems.push(...Object.keys(evidence[category]));
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return evidenceItems;
|
|
214
|
+
}
|
|
215
|
+
async generatePersonaInsights(scores, copilotFeatures, techStack, evidence) {
|
|
216
|
+
if (!this.config.persona) {
|
|
217
|
+
throw new Error("Persona type is required for persona insights");
|
|
218
|
+
}
|
|
219
|
+
const persona = persona_factory_1.PersonaFactory.createPersona(this.config.persona, this.config.enableLLMCoalescing);
|
|
220
|
+
const context = {
|
|
221
|
+
repository: this.config.repoPath,
|
|
222
|
+
assessmentResults: {
|
|
223
|
+
copilotFeatures,
|
|
224
|
+
techStack,
|
|
225
|
+
evidence,
|
|
226
|
+
scores,
|
|
227
|
+
},
|
|
228
|
+
scores,
|
|
229
|
+
recommendations: [], // Will be populated by persona
|
|
230
|
+
targetAudience: this.config.targetAudience || "organization",
|
|
231
|
+
};
|
|
232
|
+
return await persona.analyze(context);
|
|
233
|
+
}
|
|
234
|
+
async saveResults(result) {
|
|
235
|
+
if (!this.config.outputPath)
|
|
236
|
+
return;
|
|
237
|
+
const fs = await Promise.resolve().then(() => __importStar(require("fs/promises")));
|
|
238
|
+
const path = await Promise.resolve().then(() => __importStar(require("path")));
|
|
239
|
+
const outputFile = path.join(this.config.outputPath, `ai-enablement-assessment-${Date.now()}.${this.config.outputFormat}`);
|
|
240
|
+
let content;
|
|
241
|
+
switch (this.config.outputFormat) {
|
|
242
|
+
case "json":
|
|
243
|
+
content = JSON.stringify(result, null, 2);
|
|
244
|
+
break;
|
|
245
|
+
case "adr":
|
|
246
|
+
content = result.adr || "No ADR generated";
|
|
247
|
+
break;
|
|
248
|
+
case "markdown":
|
|
249
|
+
content = this.generateMarkdownReport(result);
|
|
250
|
+
break;
|
|
251
|
+
default:
|
|
252
|
+
content = JSON.stringify(result, null, 2);
|
|
253
|
+
}
|
|
254
|
+
await fs.writeFile(outputFile, content, "utf-8");
|
|
255
|
+
console.log(`📄 Results saved to: ${outputFile}`);
|
|
256
|
+
}
|
|
257
|
+
generateMarkdownReport(result) {
|
|
258
|
+
return `# AI Enablement Assessment Report
|
|
259
|
+
|
|
260
|
+
## Overview
|
|
261
|
+
- **Repository**: ${result.metadata.repository}
|
|
262
|
+
- **Assessed**: ${result.metadata.timestamp}
|
|
263
|
+
- **Duration**: ${result.metadata.duration}ms
|
|
264
|
+
|
|
265
|
+
## Readiness Scores
|
|
266
|
+
|
|
267
|
+
| Category | Score | Status |
|
|
268
|
+
|----------|-------|--------|
|
|
269
|
+
| Repository Readiness | ${result.scores.repoReadiness}/100 | ${this.getScoreStatus(result.scores.repoReadiness)} |
|
|
270
|
+
| Team Readiness | ${result.scores.teamReadiness}/100 | ${this.getScoreStatus(result.scores.teamReadiness)} |
|
|
271
|
+
| Organization Readiness | ${result.scores.orgReadiness}/100 | ${this.getScoreStatus(result.scores.orgReadiness)} |
|
|
272
|
+
| Overall Maturity | ${result.scores.overallMaturity}/8 | ${this.getMaturityStatus(result.scores.overallMaturity)} |
|
|
273
|
+
|
|
274
|
+
## Recommendations
|
|
275
|
+
|
|
276
|
+
${result.recommendations
|
|
277
|
+
.map((rec) => `
|
|
278
|
+
### ${rec.title} (${rec.priority})
|
|
279
|
+
**Category**: ${rec.category} | **Effort**: ${rec.effort} | **Timeframe**: ${rec.timeframe}
|
|
280
|
+
|
|
281
|
+
${rec.description}
|
|
282
|
+
|
|
283
|
+
**Dependencies**: ${rec.dependencies.length > 0 ? rec.dependencies.join(", ") : "None"}
|
|
284
|
+
`)
|
|
285
|
+
.join("\n")}
|
|
286
|
+
|
|
287
|
+
${result.adr ? `\n## Architecture Decision Record\n\n${result.adr}` : ""}
|
|
288
|
+
`;
|
|
289
|
+
}
|
|
290
|
+
getScoreStatus(score) {
|
|
291
|
+
if (score >= 80)
|
|
292
|
+
return "✅ Excellent";
|
|
293
|
+
if (score >= 60)
|
|
294
|
+
return "⚠️ Good";
|
|
295
|
+
if (score >= 40)
|
|
296
|
+
return "🔶 Fair";
|
|
297
|
+
return "❌ Poor";
|
|
298
|
+
}
|
|
299
|
+
getMaturityStatus(level) {
|
|
300
|
+
if (level >= 6)
|
|
301
|
+
return "✅ Advanced";
|
|
302
|
+
if (level >= 4)
|
|
303
|
+
return "⚠️ Developing";
|
|
304
|
+
if (level >= 2)
|
|
305
|
+
return "🔶 Basic";
|
|
306
|
+
return "❌ Initial";
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
exports.AssessmentEngine = AssessmentEngine;
|
|
310
|
+
//# sourceMappingURL=assessment-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assessment-engine.js","sourceRoot":"","sources":["../../src/core/assessment-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ADR Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates professional Architecture Decision Records for AI enablement
|
|
5
|
+
* based on analysis results and evidence
|
|
6
|
+
*/
|
|
7
|
+
import { TechStackAnalysis } from "../analyzers/tech-stack-analyzer";
|
|
8
|
+
import { EvidenceData } from "../collectors/evidence-collector";
|
|
9
|
+
import { Recommendation } from "../core/assessment-engine";
|
|
10
|
+
import { StructuredAdversarialResponse } from "../llm/structured-types";
|
|
11
|
+
import { CopilotFeatureAnalysis } from "../scanners/copilot-feature-scanner";
|
|
12
|
+
import { ReadinessScores } from "../scorers/readiness-scorer";
|
|
13
|
+
export interface ADRContext {
|
|
14
|
+
scores: ReadinessScores;
|
|
15
|
+
copilotFeatures: CopilotFeatureAnalysis;
|
|
16
|
+
techStack: TechStackAnalysis;
|
|
17
|
+
evidence: EvidenceData;
|
|
18
|
+
recommendations: Recommendation[];
|
|
19
|
+
structuredInsights?: StructuredAdversarialResponse | undefined;
|
|
20
|
+
}
|
|
21
|
+
export declare class ADRGenerator {
|
|
22
|
+
generate(context: ADRContext): Promise<string>;
|
|
23
|
+
private generateBaseADR;
|
|
24
|
+
private generateADRNumber;
|
|
25
|
+
private getScoreDescription;
|
|
26
|
+
private getMaturityDescription;
|
|
27
|
+
private generateRiskRationale;
|
|
28
|
+
private generateValueRationale;
|
|
29
|
+
private generatePhaseImplementation;
|
|
30
|
+
private generateKPIs;
|
|
31
|
+
private generateMitigationStrategies;
|
|
32
|
+
private calculateNextReviewDate;
|
|
33
|
+
private refineADRWithInsights;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=adr-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adr-generator.d.ts","sourceRoot":"","sources":["../../src/generators/adr-generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,eAAe,CAAC;IACxB,eAAe,EAAE,sBAAsB,CAAC;IACxC,SAAS,EAAE,iBAAiB,CAAC;IAC7B,QAAQ,EAAE,YAAY,CAAC;IACvB,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,kBAAkB,CAAC,EAAE,6BAA6B,GAAG,SAAS,CAAC;CAChE;AAED,qBAAa,YAAY;IACjB,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBpD,OAAO,CAAC,eAAe;IAuMvB,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,qBAAqB;IAmC7B,OAAO,CAAC,sBAAsB;IAmC9B,OAAO,CAAC,2BAA2B;IAenC,OAAO,CAAC,YAAY;IA8BpB,OAAO,CAAC,4BAA4B;IAwBpC,OAAO,CAAC,uBAAuB;IAM/B,OAAO,CAAC,qBAAqB;CAyB9B"}
|