@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,347 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * AI Enablement Platform CLI
5
+ *
6
+ * Command-line interface for analyzing repository AI enablement readiness
7
+ * and generating consultant-quality recommendations.
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ var __importDefault = (this && this.__importDefault) || function (mod) {
43
+ return (mod && mod.__esModule) ? mod : { "default": mod };
44
+ };
45
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ const chalk_1 = __importDefault(require("chalk"));
47
+ const commander_1 = require("commander");
48
+ const ora_1 = __importDefault(require("ora"));
49
+ const assessment_engine_1 = require("../core/assessment-engine");
50
+ const program = new commander_1.Command();
51
+ program
52
+ .name("ai-enablement")
53
+ .description("AI Enablement Platform - Analyze repository readiness for AI adoption")
54
+ .version("1.0.0");
55
+ program
56
+ .command("analyze")
57
+ .description("Analyze repository for AI enablement readiness")
58
+ .argument("<repo-path>", "Path to the repository to analyze")
59
+ .option("-o, --output <path>", "Output directory for results")
60
+ .option("-f, --format <format>", "Output format (json, adr, markdown)", "json")
61
+ .option("--no-recommendations", "Skip recommendations generation")
62
+ .option("--no-adr", "Skip ADR generation")
63
+ .option("--persona <type>", "Analysis persona (consultant, evangelist, team-lead)", "consultant")
64
+ .option("--llm-coalescing", "Enable LLM coalescing with adversarial validation")
65
+ .option("--adversarial-validation", "Enable adversarial validation (default: enabled with LLM)")
66
+ .action(async (repoPath, options) => {
67
+ try {
68
+ const spinner = (0, ora_1.default)("Initializing AI Enablement Assessment...").start();
69
+ const config = {
70
+ repoPath,
71
+ outputPath: options.output,
72
+ includeRecommendations: options.recommendations !== false,
73
+ generateADR: options.adr !== false,
74
+ outputFormat: options.format,
75
+ persona: options.persona,
76
+ enableLLMCoalescing: options.llmCoalescing || false,
77
+ enableAdversarialValidation: options.adversarialValidation || options.llmCoalescing,
78
+ };
79
+ const engine = new assessment_engine_1.AssessmentEngine(config);
80
+ spinner.text = "Analyzing repository...";
81
+ const result = await engine.execute();
82
+ spinner.succeed("Analysis complete!");
83
+ // Display results
84
+ displayResults(result, options.persona);
85
+ // Save results if output path specified
86
+ if (options.output) {
87
+ await engine.saveResults(result);
88
+ }
89
+ }
90
+ catch (error) {
91
+ console.error(chalk_1.default.red("❌ Analysis failed:"), error);
92
+ process.exit(1);
93
+ }
94
+ });
95
+ program
96
+ .command("score")
97
+ .description("Get readiness scores for a repository")
98
+ .argument("<repo-path>", "Path to the repository to score")
99
+ .option("--json", "Output scores as JSON")
100
+ .action(async (repoPath, options) => {
101
+ try {
102
+ const engine = new assessment_engine_1.AssessmentEngine({
103
+ repoPath,
104
+ includeRecommendations: false,
105
+ generateADR: false,
106
+ });
107
+ const spinner = (0, ora_1.default)("Calculating readiness scores...").start();
108
+ const result = await engine.execute();
109
+ spinner.succeed("Scoring complete!");
110
+ if (options.json) {
111
+ console.log(JSON.stringify(result.scores, null, 2));
112
+ }
113
+ else {
114
+ displayScores(result.scores);
115
+ }
116
+ }
117
+ catch (error) {
118
+ console.error(chalk_1.default.red("❌ Scoring failed:"), error);
119
+ process.exit(1);
120
+ }
121
+ });
122
+ program
123
+ .command("recommend")
124
+ .description("Generate recommendations for a repository")
125
+ .argument("<repo-path>", "Path to the repository to analyze")
126
+ .option("--priority <level>", "Filter by priority (high, medium, low)")
127
+ .option("--category <type>", "Filter by category (foundation, security, workflow, ai, governance)")
128
+ .action(async (repoPath, options) => {
129
+ try {
130
+ const engine = new assessment_engine_1.AssessmentEngine({
131
+ repoPath,
132
+ includeRecommendations: true,
133
+ generateADR: false,
134
+ });
135
+ const spinner = (0, ora_1.default)("Generating recommendations...").start();
136
+ const result = await engine.execute();
137
+ spinner.succeed("Recommendations generated!");
138
+ let recommendations = result.recommendations;
139
+ // Apply filters
140
+ if (options.priority) {
141
+ recommendations = recommendations.filter((r) => r.priority === options.priority);
142
+ }
143
+ if (options.category) {
144
+ recommendations = recommendations.filter((r) => r.category === options.category);
145
+ }
146
+ displayRecommendations(recommendations);
147
+ }
148
+ catch (error) {
149
+ console.error(chalk_1.default.red("❌ Recommendation generation failed:"), error);
150
+ process.exit(1);
151
+ }
152
+ });
153
+ program
154
+ .command("adr")
155
+ .description("Generate Architecture Decision Record for AI enablement")
156
+ .argument("<repo-path>", "Path to the repository to analyze")
157
+ .option("-o, --output <path>", "Output file for ADR")
158
+ .option("--persona <type>", "Analysis persona (consultant, evangelist, team-lead)", "consultant")
159
+ .action(async (repoPath, options) => {
160
+ try {
161
+ const engine = new assessment_engine_1.AssessmentEngine({
162
+ repoPath,
163
+ includeRecommendations: true,
164
+ generateADR: true,
165
+ outputFormat: "adr",
166
+ });
167
+ const spinner = (0, ora_1.default)("Generating Architecture Decision Record...").start();
168
+ const result = await engine.execute();
169
+ spinner.succeed("ADR generated!");
170
+ if (options.output) {
171
+ const fs = await Promise.resolve().then(() => __importStar(require("fs/promises")));
172
+ await fs.writeFile(options.output, result.adr || "", "utf-8");
173
+ console.log(chalk_1.default.green(`📄 ADR saved to: ${options.output}`));
174
+ }
175
+ else {
176
+ console.log(result.adr);
177
+ }
178
+ }
179
+ catch (error) {
180
+ console.error(chalk_1.default.red("❌ ADR generation failed:"), error);
181
+ process.exit(1);
182
+ }
183
+ });
184
+ function displayResults(result, persona) {
185
+ console.log(chalk_1.default.bold.blue("\n🎯 AI Enablement Assessment Results"));
186
+ console.log(chalk_1.default.gray(`Repository: ${result.metadata.repository}`));
187
+ console.log(chalk_1.default.gray(`Assessed: ${result.metadata.timestamp}`));
188
+ console.log(chalk_1.default.gray(`Duration: ${result.metadata.duration}ms`));
189
+ console.log(chalk_1.default.gray(`Persona: ${persona}\n`));
190
+ displayScores(result.scores);
191
+ displayRecommendations(result.recommendations);
192
+ // Display persona insights if available
193
+ if (result.personaInsights) {
194
+ displayPersonaInsights(result.personaInsights);
195
+ }
196
+ if (result.adr) {
197
+ console.log(chalk_1.default.bold.blue("\n📝 Architecture Decision Record"));
198
+ console.log(chalk_1.default.gray("ADR generated successfully - use --output to save to file\n"));
199
+ }
200
+ }
201
+ function displayScores(scores) {
202
+ console.log(chalk_1.default.bold.blue("📊 Readiness Scores"));
203
+ const scoreTable = [
204
+ [
205
+ "Repository Readiness",
206
+ scores.repoReadiness,
207
+ getScoreStatus(scores.repoReadiness),
208
+ ],
209
+ [
210
+ "Team Readiness",
211
+ scores.teamReadiness,
212
+ getScoreStatus(scores.teamReadiness),
213
+ ],
214
+ [
215
+ "Organization Readiness",
216
+ scores.orgReadiness,
217
+ getScoreStatus(scores.orgReadiness),
218
+ ],
219
+ [
220
+ "Overall Maturity",
221
+ scores.overallMaturity,
222
+ getMaturityStatus(scores.overallMaturity),
223
+ ],
224
+ ];
225
+ scoreTable.forEach(([label, score, status]) => {
226
+ const scoreColor = score >= 70 ? chalk_1.default.green : score >= 40 ? chalk_1.default.yellow : chalk_1.default.red;
227
+ console.log(`${chalk_1.default.bold(label)}: ${scoreColor(score + "/100")} ${status}`);
228
+ });
229
+ console.log(chalk_1.default.gray(`Confidence: ${scores.confidence}\n`));
230
+ }
231
+ function displayRecommendations(recommendations) {
232
+ if (recommendations.length === 0) {
233
+ console.log(chalk_1.default.green("✅ No recommendations needed - repository is well prepared!"));
234
+ return;
235
+ }
236
+ console.log(chalk_1.default.bold.blue("🎯 Recommendations"));
237
+ const groupedRecs = recommendations.reduce((groups, rec) => {
238
+ if (!groups[rec.priority])
239
+ groups[rec.priority] = [];
240
+ groups[rec.priority].push(rec);
241
+ return groups;
242
+ }, {});
243
+ ["high", "medium", "low"].forEach((priority) => {
244
+ const recs = groupedRecs[priority];
245
+ if (recs && recs.length > 0) {
246
+ const priorityColor = priority === "high"
247
+ ? chalk_1.default.red
248
+ : priority === "medium"
249
+ ? chalk_1.default.yellow
250
+ : chalk_1.default.gray;
251
+ console.log(chalk_1.default.bold(`\n${priorityColor(priority.toUpperCase())} PRIORITY:`));
252
+ recs.forEach((rec) => {
253
+ console.log(` ${chalk_1.default.bold(rec.title)} (${rec.category})`);
254
+ console.log(` ${chalk_1.default.gray(rec.description)}`);
255
+ console.log(` ${chalk_1.default.blue(`Effort: ${rec.effort} | Timeframe: ${rec.timeframe}`)}`);
256
+ if (rec.dependencies.length > 0) {
257
+ console.log(` ${chalk_1.default.yellow(`Dependencies: ${rec.dependencies.join(", ")}`)}`);
258
+ }
259
+ console.log("");
260
+ });
261
+ }
262
+ });
263
+ }
264
+ function displayPersonaInsights(personaInsights) {
265
+ console.log(chalk_1.default.bold.magenta("\n🤖 Persona Insights"));
266
+ console.log(chalk_1.default.gray(`Perspective: ${personaInsights.perspective}`));
267
+ console.log(chalk_1.default.gray(`Timeframe: ${personaInsights.timeframe}`));
268
+ console.log(chalk_1.default.gray(`Confidence: ${personaInsights.confidence}\n`));
269
+ if (personaInsights.summary) {
270
+ console.log(chalk_1.default.bold.magenta("📝 Summary"));
271
+ console.log(chalk_1.default.white(personaInsights.summary));
272
+ console.log("");
273
+ }
274
+ if (personaInsights.insights && personaInsights.insights.length > 0) {
275
+ console.log(chalk_1.default.bold.magenta("💡 Key Insights"));
276
+ const groupedInsights = personaInsights.insights.reduce((groups, insight) => {
277
+ if (!groups[insight.type])
278
+ groups[insight.type] = [];
279
+ groups[insight.type].push(insight);
280
+ return groups;
281
+ }, {});
282
+ Object.entries(groupedInsights).forEach(([type, insights]) => {
283
+ const typedInsights = insights;
284
+ const typeColor = type === "warning"
285
+ ? chalk_1.default.red
286
+ : type === "opportunity"
287
+ ? chalk_1.default.green
288
+ : type === "analysis"
289
+ ? chalk_1.default.blue
290
+ : chalk_1.default.gray;
291
+ console.log(chalk_1.default.bold(`\n${typeColor(type.toUpperCase())}:`));
292
+ typedInsights.forEach((insight) => {
293
+ const priorityIcon = insight.priority === "critical"
294
+ ? "🚨"
295
+ : insight.priority === "high"
296
+ ? "⚠️"
297
+ : insight.priority === "medium"
298
+ ? "🔸"
299
+ : "🔹";
300
+ console.log(` ${priorityIcon} ${chalk_1.default.bold(insight.title)}`);
301
+ console.log(` ${chalk_1.default.gray(insight.description)}`);
302
+ console.log(` ${chalk_1.default.blue(`Confidence: ${insight.confidence}% | Category: ${insight.category}`)}`);
303
+ if (insight.evidence && insight.evidence.length > 0) {
304
+ console.log(` ${chalk_1.default.yellow(`Evidence: ${insight.evidence.join(", ")}`)}`);
305
+ }
306
+ console.log("");
307
+ });
308
+ });
309
+ }
310
+ if (personaInsights.nextSteps && personaInsights.nextSteps.length > 0) {
311
+ console.log(chalk_1.default.bold.magenta("🎯 Next Steps"));
312
+ personaInsights.nextSteps.forEach((step, index) => {
313
+ console.log(` ${index + 1}. ${chalk_1.default.white(step)}`);
314
+ });
315
+ console.log("");
316
+ }
317
+ }
318
+ function getScoreStatus(score) {
319
+ if (score >= 80)
320
+ return chalk_1.default.green("✅ Excellent");
321
+ if (score >= 60)
322
+ return chalk_1.default.yellow("⚠️ Good");
323
+ if (score >= 40)
324
+ return chalk_1.default.hex("#FFA500")("🔶 Fair");
325
+ return chalk_1.default.red("❌ Poor");
326
+ }
327
+ function getMaturityStatus(level) {
328
+ if (level >= 6)
329
+ return chalk_1.default.green("✅ Advanced");
330
+ if (level >= 4)
331
+ return chalk_1.default.yellow("⚠️ Developing");
332
+ if (level >= 2)
333
+ return chalk_1.default.hex("#FFA500")("🔶 Basic");
334
+ return chalk_1.default.red("❌ Initial");
335
+ }
336
+ // Error handling
337
+ process.on("uncaughtException", (error) => {
338
+ console.error(chalk_1.default.red("❌ Uncaught exception:"), error);
339
+ process.exit(1);
340
+ });
341
+ process.on("unhandledRejection", (reason, promise) => {
342
+ console.error(chalk_1.default.red("❌ Unhandled rejection at:"), promise, "reason:", reason);
343
+ process.exit(1);
344
+ });
345
+ // Parse command line arguments
346
+ program.parse();
347
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
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
@@ -0,0 +1 @@
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"}