@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,309 @@
1
+ "use strict";
2
+ /**
3
+ * ADR Generator
4
+ *
5
+ * Generates professional Architecture Decision Records for AI enablement
6
+ * based on analysis results and evidence
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.ADRGenerator = void 0;
10
+ class ADRGenerator {
11
+ async generate(context) {
12
+ const { scores, copilotFeatures, techStack, evidence, recommendations } = context;
13
+ const timestamp = new Date().toISOString().split("T")[0];
14
+ const adrNumber = this.generateADRNumber();
15
+ const adr = `# ADR-${adrNumber}: AI Enablement Strategy
16
+
17
+ ## Status
18
+ Accepted
19
+
20
+ ## Context
21
+ This Architecture Decision Record outlines the strategic approach for AI enablement across the organization based on comprehensive repository analysis conducted on ${timestamp}.
22
+
23
+ ### Current State Assessment
24
+
25
+ **Readiness Scores:**
26
+ - Repository Readiness: ${scores.repoReadiness}/100 (${this.getScoreDescription(scores.repoReadiness)})
27
+ - Team Readiness: ${scores.teamReadiness}/100 (${this.getScoreDescription(scores.teamReadiness)})
28
+ - Organization Readiness: ${scores.orgReadiness}/100 (${this.getScoreDescription(scores.orgReadiness)})
29
+ - Overall Maturity Level: ${scores.overallMaturity}/8 (${this.getMaturityDescription(scores.overallMaturity)})
30
+
31
+ **Technology Stack:**
32
+ - Primary Language: ${techStack.languages.primary}
33
+ - Frameworks: ${techStack.languages.frameworks.join(", ") || "None detected"}
34
+ - AI Dependencies: ${techStack.dependencies.aiRelated.length} found
35
+ - Package Manager: ${techStack.infrastructure.packageManager}
36
+
37
+ **AI Integration Status:**
38
+ - Copilot Instructions: ${copilotFeatures.githubFeatures.copilotInstructions.found ? "✅ Present" : "❌ Missing"}
39
+ - Code Ownership: ${copilotFeatures.githubFeatures.codeowners.found ? "✅ Defined" : "❌ Undefined"}
40
+ - PR Templates: ${copilotFeatures.githubFeatures.prTemplates.found ? "✅ Present" : "❌ Missing"}
41
+ - Issue Templates: ${copilotFeatures.githubFeatures.issueTemplates.found ? "✅ Present" : "❌ Missing"}
42
+
43
+ ## Decision
44
+ We will implement a phased AI enablement strategy that prioritizes foundation improvements, security enhancements, and gradual AI tool adoption. This approach balances immediate value delivery with long-term sustainability.
45
+
46
+ ### Strategic Approach
47
+
48
+ 1. **Foundation First** (${scores.breakdown.foundation}/100)
49
+ - Establish robust development practices
50
+ - Implement comprehensive documentation
51
+ - Standardize tooling and configuration
52
+
53
+ 2. **Security by Design** (${scores.breakdown.security}/100)
54
+ - Define code ownership and review processes
55
+ - Implement security scanning and monitoring
56
+ - Establish governance frameworks
57
+
58
+ 3. **Workflow Optimization** (${scores.breakdown.workflow}/100)
59
+ - Automate repetitive tasks
60
+ - Enhance collaboration processes
61
+ - Improve code review efficiency
62
+
63
+ 4. **AI Integration** (${scores.breakdown.ai}/100)
64
+ - Adopt AI coding assistants strategically
65
+ - Implement AI-friendly development practices
66
+ - Monitor AI tool effectiveness
67
+
68
+ 5. **Governance Evolution** (${scores.breakdown.governance}/100)
69
+ - Establish clear decision-making processes
70
+ - Create feedback loops and improvement mechanisms
71
+ - Align AI adoption with business objectives
72
+
73
+ ## Rationale
74
+
75
+ ### Why This Approach
76
+
77
+ **Evidence-Based Decision Making:**
78
+ - Current maturity level (${scores.overallMaturity}/8) indicates ${this.getMaturityDescription(scores.overallMaturity)} readiness
79
+ - Repository readiness score of ${scores.repoReadiness}/100 suggests ${this.getScoreDescription(scores.repoReadiness)} foundation
80
+ - Team readiness of ${scores.teamReadiness}/100 shows ${this.getScoreDescription(scores.teamReadiness)} preparation for change
81
+
82
+ **Risk Mitigation:**
83
+ ${this.generateRiskRationale(scores, evidence)}
84
+
85
+ **Value Maximization:**
86
+ ${this.generateValueRationale(techStack, copilotFeatures)}
87
+
88
+ ### Alternative Approaches Considered
89
+
90
+ 1. **Aggressive AI Adoption**
91
+ - *Pros*: Faster AI benefits realization
92
+ - *Cons*: Higher risk of disruption, potential resistance
93
+ - *Rejected*: Current foundation (${scores.repoReadiness}/100) insufficient for aggressive approach
94
+
95
+ 2. **Minimal AI Integration**
96
+ - *Pros*: Lower risk, minimal disruption
97
+ - *Cons*: Slower value realization, competitive disadvantage
98
+ - *Rejected*: Team readiness (${scores.teamReadiness}/100) supports more comprehensive adoption
99
+
100
+ 3. **External Consultant-Led Transformation**
101
+ - *Pros*: Expert guidance, faster execution
102
+ - *Cons*: Higher cost, reduced internal capability building
103
+ - *Rejected*: Current team capabilities support internal-led approach
104
+
105
+ ## Implementation Plan
106
+
107
+ ### Phase 1: Foundation Strengthening (30 days)
108
+ ${this.generatePhaseImplementation(recommendations.filter((r) => r.category === "foundation"))}
109
+
110
+ ### Phase 2: Security & Governance (45 days)
111
+ ${this.generatePhaseImplementation(recommendations.filter((r) => r.category === "security" || r.category === "governance"))}
112
+
113
+ ### Phase 3: AI Tool Integration (60 days)
114
+ ${this.generatePhaseImplementation(recommendations.filter((r) => r.category === "ai" || r.category === "workflow"))}
115
+
116
+ ### Phase 4: Optimization & Scaling (90 days)
117
+ - Monitor AI tool effectiveness
118
+ - Refine processes based on feedback
119
+ - Scale successful practices across organization
120
+ - Establish continuous improvement cycles
121
+
122
+ ## Success Metrics
123
+
124
+ ### Technical Metrics
125
+ - Repository Readiness: Target ${Math.min(scores.repoReadiness + 20, 95)}/100
126
+ - Team Readiness: Target ${Math.min(scores.teamReadiness + 25, 95)}/100
127
+ - Organization Readiness: Target ${Math.min(scores.orgReadiness + 15, 95)}/100
128
+ - Overall Maturity: Target ${Math.min(scores.overallMaturity + 2, 8)}/8
129
+
130
+ ### Process Metrics
131
+ - Code review time reduction: Target 30%
132
+ - Developer satisfaction: Target 4.5/5
133
+ - AI tool adoption rate: Target 80%
134
+ - Documentation coverage: Target 75%
135
+
136
+ ### Business Metrics
137
+ - Development velocity: Target 25% improvement
138
+ - Code quality: Target 40% reduction in defects
139
+ - Onboarding time: Target 50% reduction
140
+ - Knowledge sharing: Target 60% improvement
141
+
142
+ ## Monitoring & Review
143
+
144
+ ### Key Performance Indicators
145
+ ${this.generateKPIs(scores, techStack)}
146
+
147
+ ### Review Cadence
148
+ - **Weekly**: Team readiness metrics and AI tool usage
149
+ - **Monthly**: Repository health and security posture
150
+ - **Quarterly**: Strategic alignment and business impact
151
+ - **Semi-annually**: Complete ADR review and strategy adjustment
152
+
153
+ ### Success Triggers
154
+ - Repository readiness exceeds 80/100
155
+ - Team readiness exceeds 75/100
156
+ - AI tool adoption rate exceeds 70%
157
+ - Developer satisfaction exceeds 4.0/5
158
+
159
+ ### Risk Indicators
160
+ - Repository readiness declines below 50/100
161
+ - Team readiness declines below 60/100
162
+ - AI tool resistance exceeds 30%
163
+ - Security incidents increase
164
+
165
+ ## Consequences
166
+
167
+ ### Positive Outcomes
168
+ - Improved development efficiency and quality
169
+ - Enhanced team collaboration and knowledge sharing
170
+ - Better alignment between technology and business objectives
171
+ - Increased competitive advantage through AI adoption
172
+
173
+ ### Negative Consequences
174
+ - Initial learning curve and productivity dip
175
+ - Required investment in tools and training
176
+ - Potential resistance to change
177
+ - Ongoing maintenance and governance requirements
178
+
179
+ ### Mitigation Strategies
180
+ ${this.generateMitigationStrategies(recommendations)}
181
+
182
+ ## References
183
+
184
+ ### Analysis Data
185
+ - Repository Analysis: ${evidence.structure.fileCount} files analyzed
186
+ - Technology Stack: ${techStack.dependencies.total} dependencies identified
187
+ - Evidence Collection: ${evidence.metrics.linesOfCode} lines of code reviewed
188
+
189
+ ### Best Practices
190
+ - [GitLab's AI Adoption Framework](https://docs.gitlab.com/ee/topics/ai/)
191
+ - [Microsoft's AI Development Guidelines](https://learn.microsoft.com/en-us/azure/architecture/ai-ml/guide/)
192
+ - [GitHub Copilot Best Practices](https://docs.github.com/en/copilot)
193
+
194
+ ### Industry Standards
195
+ - [Software Engineering Institute - AI Readiness](https://www.sei.cmu.edu/)
196
+ - [IEEE AI Ethics Standards](https://standards.ieee.org/)
197
+ - [OWASP AI Security Guidelines](https://owasp.org/)
198
+
199
+ ---
200
+
201
+ **Generated**: ${timestamp}
202
+ **Analysis Version**: 1.0.0
203
+ **Confidence Level**: ${scores.confidence}
204
+ **Next Review**: ${this.calculateNextReviewDate()}
205
+
206
+ *This ADR was generated automatically based on repository analysis and should be reviewed by the technical leadership team before implementation.*`;
207
+ return adr;
208
+ }
209
+ generateADRNumber() {
210
+ // Simple sequential numbering - in production this would track existing ADRs
211
+ return "001";
212
+ }
213
+ getScoreDescription(score) {
214
+ if (score >= 80)
215
+ return "Excellent";
216
+ if (score >= 60)
217
+ return "Good";
218
+ if (score >= 40)
219
+ return "Fair";
220
+ return "Needs Improvement";
221
+ }
222
+ getMaturityDescription(level) {
223
+ if (level >= 6)
224
+ return "Advanced";
225
+ if (level >= 4)
226
+ return "Developing";
227
+ if (level >= 2)
228
+ return "Basic";
229
+ return "Initial";
230
+ }
231
+ generateRiskRationale(scores, evidence) {
232
+ const risks = [];
233
+ if (scores.repoReadiness < 60) {
234
+ risks.push("- Repository foundation requires strengthening before AI adoption");
235
+ }
236
+ if (scores.breakdown.security < 70) {
237
+ risks.push("- Security posture needs enhancement to support AI tools safely");
238
+ }
239
+ if (evidence.patterns.codeComplexity === "high") {
240
+ risks.push("- High code complexity may slow AI tool adoption and effectiveness");
241
+ }
242
+ if (!evidence.configuration.hasTests) {
243
+ risks.push("- Lack of testing infrastructure increases risk of AI-generated code issues");
244
+ }
245
+ return risks.length > 0
246
+ ? risks.join("\n")
247
+ : "- Current risk profile supports measured AI adoption";
248
+ }
249
+ generateValueRationale(techStack, copilotFeatures) {
250
+ const values = [];
251
+ if (techStack.aiReadiness.typescriptUsage) {
252
+ values.push("- TypeScript usage enhances AI code understanding and generation");
253
+ }
254
+ if (techStack.aiReadiness.modernFramework) {
255
+ values.push("- Modern framework adoption aligns well with AI coding assistants");
256
+ }
257
+ if (techStack.dependencies.aiRelated.length > 0) {
258
+ values.push(`- Existing AI dependencies (${techStack.dependencies.aiRelated.length}) demonstrate team openness to AI tools`);
259
+ }
260
+ if (copilotFeatures.githubFeatures.copilotInstructions.found) {
261
+ values.push("- Existing Copilot instructions show team experience with AI assistance");
262
+ }
263
+ return values.length > 0
264
+ ? values.join("\n")
265
+ : "- Technology stack provides good foundation for AI enablement";
266
+ }
267
+ generatePhaseImplementation(recommendations) {
268
+ if (recommendations.length === 0) {
269
+ return "- No specific actions identified for this phase\n- Focus on monitoring and optimization";
270
+ }
271
+ return recommendations
272
+ .map((rec) => `- **${rec.title}** (${rec.effort} effort, ${rec.timeframe || "TBD"})\n - ${rec.description}`)
273
+ .join("\n");
274
+ }
275
+ generateKPIs(scores, techStack) {
276
+ const kpis = [];
277
+ if (scores.repoReadiness < 80) {
278
+ kpis.push(`- Repository readiness improvement: Current ${scores.repoReadiness}/100 → Target 80/100`);
279
+ }
280
+ if (scores.teamReadiness < 75) {
281
+ kpis.push(`- Team readiness enhancement: Current ${scores.teamReadiness}/100 → Target 75/100`);
282
+ }
283
+ if (techStack.aiReadiness.score < 70) {
284
+ kpis.push(`- AI readiness score improvement: Current ${Math.round(techStack.aiReadiness.score)}/100 → Target 70/100`);
285
+ }
286
+ kpis.push("- AI tool adoption and satisfaction metrics");
287
+ kpis.push("- Code quality and development velocity measurements");
288
+ return kpis.join("\n");
289
+ }
290
+ generateMitigationStrategies(recommendations) {
291
+ const strategies = [];
292
+ const highPriorityRecs = recommendations.filter((r) => r.priority === "high");
293
+ if (highPriorityRecs.length > 0) {
294
+ strategies.push(`- Address ${highPriorityRecs.length} high-priority foundation issues first`);
295
+ }
296
+ strategies.push("- Provide comprehensive training and support for AI tools");
297
+ strategies.push("- Implement gradual rollout with feedback collection");
298
+ strategies.push("- Establish clear success metrics and monitoring");
299
+ strategies.push("- Create channels for team feedback and concerns");
300
+ return strategies.join("\n");
301
+ }
302
+ calculateNextReviewDate() {
303
+ const nextReview = new Date();
304
+ nextReview.setMonth(nextReview.getMonth() + 3); // 3 months from now
305
+ return nextReview.toISOString().split("T")[0] || "";
306
+ }
307
+ }
308
+ exports.ADRGenerator = ADRGenerator;
309
+ //# sourceMappingURL=adr-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adr-generator.js","sourceRoot":"","sources":["../../src/generators-backup-phase-2/adr-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * LLM Coalescer - Adversarial Fuzzy Comprehension
3
+ *
4
+ * Orchestrates LLM-based coalescing of deterministic analysis results
5
+ * with adversarial validation to challenge and enhance insights
6
+ */
7
+ import { PersonaContext, PersonaInsight } from "../types/persona";
8
+ import { CopilotClient } from "./copilot-client";
9
+ export interface CoalescingConfig {
10
+ enableAdversarialValidation: boolean;
11
+ confidenceThreshold: number;
12
+ maxTokens: number;
13
+ temperature: number;
14
+ enableStructuredOutput?: boolean;
15
+ requireEvidenceGrounding?: boolean;
16
+ }
17
+ export interface CoalescingResult {
18
+ enhancedInsights: PersonaInsight[];
19
+ adversarialChallenges: string[];
20
+ confidenceScore: number;
21
+ processingTime: number;
22
+ tokensUsed: number;
23
+ }
24
+ export declare class LLMCoalescer {
25
+ private copilotClient;
26
+ private config;
27
+ constructor(copilotClient: CopilotClient, config?: Partial<CoalescingConfig>);
28
+ coalescePersonaInsights(deterministicInsights: PersonaInsight[], context: PersonaContext, personaType: string): Promise<CoalescingResult>;
29
+ private buildCoalescingPrompt;
30
+ private processLLMResponse;
31
+ private performAdversarialValidation;
32
+ private calculateEvidenceOverlap;
33
+ private calculateConfidenceInflation;
34
+ private calculatePriorityShifts;
35
+ private calculateConfidenceScore;
36
+ private processStructuredResponse;
37
+ private mapCategoryToPersona;
38
+ private createEvidenceReferences;
39
+ healthCheck(): Promise<boolean>;
40
+ getMetrics(): {
41
+ config: CoalescingConfig;
42
+ copilotMetrics: any;
43
+ };
44
+ }
45
+ //# sourceMappingURL=coalescer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coalescer.d.ts","sourceRoot":"","sources":["../../src/llm/coalescer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B,EAAE,OAAO,CAAC;IACrC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,EAAE,cAAc,EAAE,CAAC;IACnC,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,MAAM,CAAmB;gBAG/B,aAAa,EAAE,aAAa,EAC5B,MAAM,GAAE,OAAO,CAAC,gBAAgB,CAAM;IAclC,uBAAuB,CAC3B,qBAAqB,EAAE,cAAc,EAAE,EACvC,OAAO,EAAE,cAAc,EACvB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,gBAAgB,CAAC;IAmE5B,OAAO,CAAC,qBAAqB;IAqD7B,OAAO,CAAC,kBAAkB;IAkC1B,OAAO,CAAC,4BAA4B;IAiCpC,OAAO,CAAC,wBAAwB;IAUhC,OAAO,CAAC,4BAA4B;IAOpC,OAAO,CAAC,uBAAuB;IAe/B,OAAO,CAAC,wBAAwB;IAyBhC,OAAO,CAAC,yBAAyB;IA+BjC,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,wBAAwB;IAM1B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IASrC,UAAU,IAAI;QACZ,MAAM,EAAE,gBAAgB,CAAC;QACzB,cAAc,EAAE,GAAG,CAAC;KACrB;CAMF"}
@@ -0,0 +1,258 @@
1
+ "use strict";
2
+ /**
3
+ * LLM Coalescer - Adversarial Fuzzy Comprehension
4
+ *
5
+ * Orchestrates LLM-based coalescing of deterministic analysis results
6
+ * with adversarial validation to challenge and enhance insights
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.LLMCoalescer = void 0;
10
+ const response_processor_1 = require("./response-processor");
11
+ class LLMCoalescer {
12
+ constructor(copilotClient, config = {}) {
13
+ this.copilotClient = copilotClient;
14
+ this.config = {
15
+ enableAdversarialValidation: true,
16
+ confidenceThreshold: 0.7,
17
+ maxTokens: 500,
18
+ temperature: 0.3,
19
+ enableStructuredOutput: true,
20
+ requireEvidenceGrounding: true,
21
+ ...config,
22
+ };
23
+ }
24
+ async coalescePersonaInsights(deterministicInsights, context, personaType) {
25
+ const startTime = Date.now();
26
+ try {
27
+ console.log(`🧠 Coalescing ${personaType} insights with adversarial validation...`);
28
+ // Step 1: Generate coalescing prompt with adversarial elements
29
+ const prompt = this.buildCoalescingPrompt(deterministicInsights, context, personaType);
30
+ // Step 2: Get LLM response
31
+ const llmResponse = await this.copilotClient.analyze({
32
+ prompt,
33
+ context,
34
+ maxTokens: this.config.maxTokens,
35
+ temperature: this.config.temperature,
36
+ });
37
+ // Step 3: Process LLM response with structured parsing
38
+ const processedResponse = this.config.enableStructuredOutput
39
+ ? response_processor_1.ResponseProcessor.parseStructuredResponse(llmResponse.content)
40
+ : response_processor_1.ResponseProcessor.parseCoalescingResponse(llmResponse.content);
41
+ // Step 4: Extract enhanced insights and validate evidence grounding
42
+ const enhancedInsights = this.processStructuredResponse(processedResponse, deterministicInsights);
43
+ // Step 5: Adversarial validation
44
+ const adversarialChallenges = this.config.enableAdversarialValidation
45
+ ? this.performAdversarialValidation(enhancedInsights, deterministicInsights, context)
46
+ : [];
47
+ // Step 6: Calculate confidence score
48
+ const confidenceScore = this.calculateConfidenceScore(enhancedInsights, adversarialChallenges, llmResponse.confidence, processedResponse.structuredResponse);
49
+ const processingTime = Date.now() - startTime;
50
+ return {
51
+ enhancedInsights,
52
+ adversarialChallenges,
53
+ confidenceScore,
54
+ processingTime,
55
+ tokensUsed: llmResponse.tokensUsed,
56
+ };
57
+ }
58
+ catch (error) {
59
+ console.error("❌ LLM coalescing failed:", error);
60
+ // Fallback to deterministic insights
61
+ return {
62
+ enhancedInsights: deterministicInsights,
63
+ adversarialChallenges: [],
64
+ confidenceScore: 0.5,
65
+ processingTime: Date.now() - startTime,
66
+ tokensUsed: 0,
67
+ };
68
+ }
69
+ }
70
+ buildCoalescingPrompt(insights, context, personaType) {
71
+ const insightsText = insights
72
+ .map((insight, index) => `${index + 1}. ${insight.title} (${insight.priority}): ${insight.description}`)
73
+ .join("\n");
74
+ const scoresText = `
75
+ Repository Readiness: ${context.scores.repoReadiness}/100
76
+ Team Readiness: ${context.scores.teamReadiness}/100
77
+ Organization Readiness: ${context.scores.orgReadiness}/100
78
+ Overall Maturity: ${context.scores.overallMaturity}/8
79
+ `.trim();
80
+ return `As a ${personaType} AI expert, perform adversarial analysis on these deterministic insights:
81
+
82
+ DETERMINISTIC INSIGHTS:
83
+ ${insightsText}
84
+
85
+ ASSESSMENT SCORES:
86
+ ${scoresText}
87
+
88
+ ADVERSARIAL ANALYSIS TASK:
89
+ 1. Challenge these insights - what might be missing or incorrect?
90
+ 2. Identify hidden patterns or connections between insights
91
+ 3. Question the confidence levels and priorities
92
+ 4. Suggest alternative interpretations of the evidence
93
+ 5. Highlight potential risks not captured in the deterministic analysis
94
+
95
+ RESPONSE FORMAT:
96
+ Provide your analysis in this exact format:
97
+
98
+ ENHANCED_INSIGHTS:
99
+ - [Enhanced insight 1 with adversarial perspective]
100
+ - [Enhanced insight 2 with additional evidence]
101
+ - [Enhanced insight 3 with risk identification]
102
+
103
+ ADVERSARIAL_CHALLENGES:
104
+ - [Challenge to deterministic finding 1]
105
+ - [Challenge to deterministic finding 2]
106
+ - [Question about evidence or methodology]
107
+
108
+ CONFIDENCE_ASSESSMENT:
109
+ [Overall confidence in the enhanced analysis and key uncertainties]
110
+
111
+ Focus on being constructively critical while maintaining evidence-based reasoning. Do not hallucinate - base all challenges on the provided evidence.`;
112
+ }
113
+ processLLMResponse(llmContent, deterministicInsights) {
114
+ const enhancedInsights = [];
115
+ try {
116
+ // Parse enhanced insights section
117
+ const enhancedSection = llmContent.match(/ENHANCED_INSIGHTS:\s*\n([\s\S]*?)(?=\n\n|\n[A-Z_]+:|$)/);
118
+ if (enhancedSection && enhancedSection[1]) {
119
+ const insightLines = enhancedSection[1]
120
+ .split("\n")
121
+ .filter(line => line.trim().startsWith("-"))
122
+ .map(line => line.replace(/^-\s*/, "").trim());
123
+ insightLines.forEach((insightText, index) => {
124
+ if (index < deterministicInsights.length && deterministicInsights[index]) {
125
+ const original = deterministicInsights[index];
126
+ enhancedInsights.push({
127
+ ...original,
128
+ description: insightText,
129
+ confidence: Math.min(original.confidence + 10, 100), // Boost confidence slightly
130
+ });
131
+ }
132
+ });
133
+ }
134
+ }
135
+ catch (error) {
136
+ console.warn("⚠️ Failed to parse LLM response, using deterministic insights");
137
+ return deterministicInsights;
138
+ }
139
+ return enhancedInsights.length > 0 ? enhancedInsights : deterministicInsights;
140
+ }
141
+ performAdversarialValidation(enhancedInsights, deterministicInsights, context) {
142
+ const challenges = [];
143
+ // Challenge 1: Evidence consistency
144
+ const evidenceOverlap = this.calculateEvidenceOverlap(enhancedInsights, deterministicInsights);
145
+ if (evidenceOverlap < 0.8) {
146
+ challenges.push("Enhanced insights introduce evidence not present in deterministic analysis - potential hallucination risk");
147
+ }
148
+ // Challenge 2: Confidence inflation
149
+ const confidenceInflation = this.calculateConfidenceInflation(enhancedInsights, deterministicInsights);
150
+ if (confidenceInflation > 0.2) {
151
+ challenges.push("LLM may be overconfident - confidence scores appear inflated without additional evidence");
152
+ }
153
+ // Challenge 3: Priority consistency
154
+ const priorityShifts = this.calculatePriorityShifts(enhancedInsights, deterministicInsights);
155
+ if (priorityShifts > 0.3) {
156
+ challenges.push("Significant priority changes detected - verify if LLM interpretation is justified by evidence");
157
+ }
158
+ // Challenge 4: Contextual relevance
159
+ if (context.scores.orgReadiness < 30 && enhancedInsights.some(i => i.category === "strategy")) {
160
+ challenges.push("Strategic insights may be premature given low organizational readiness");
161
+ }
162
+ return challenges;
163
+ }
164
+ calculateEvidenceOverlap(enhanced, deterministic) {
165
+ const enhancedEvidence = new Set(enhanced.flatMap(i => i.evidence));
166
+ const deterministicEvidence = new Set(deterministic.flatMap(i => i.evidence));
167
+ if (deterministicEvidence.size === 0)
168
+ return 0;
169
+ const intersection = new Set([...enhancedEvidence].filter(x => deterministicEvidence.has(x)));
170
+ return intersection.size / deterministicEvidence.size;
171
+ }
172
+ calculateConfidenceInflation(enhanced, deterministic) {
173
+ const enhancedAvg = enhanced.reduce((sum, i) => sum + i.confidence, 0) / enhanced.length;
174
+ const deterministicAvg = deterministic.reduce((sum, i) => sum + i.confidence, 0) / deterministic.length;
175
+ return (enhancedAvg - deterministicAvg) / 100;
176
+ }
177
+ calculatePriorityShifts(enhanced, deterministic) {
178
+ const priorityOrder = { critical: 4, high: 3, medium: 2, low: 1 };
179
+ let shifts = 0;
180
+ for (let i = 0; i < Math.min(enhanced.length, deterministic.length); i++) {
181
+ const enhancedPriority = priorityOrder[enhanced[i]?.priority || 'medium'];
182
+ const deterministicPriority = priorityOrder[deterministic[i]?.priority || 'medium'];
183
+ if (enhancedPriority !== deterministicPriority) {
184
+ shifts++;
185
+ }
186
+ }
187
+ return deterministic.length > 0 ? shifts / deterministic.length : 0;
188
+ }
189
+ calculateConfidenceScore(enhancedInsights, adversarialChallenges, llmConfidence, structuredResponse) {
190
+ let score = llmConfidence;
191
+ // Reduce confidence based on adversarial challenges
192
+ score -= adversarialChallenges.length * 0.1;
193
+ // Boost confidence if enhanced insights are well-structured
194
+ if (enhancedInsights.every(i => i.confidence >= 70)) {
195
+ score += 0.1;
196
+ }
197
+ // Adjust based on evidence grounding if structured response available
198
+ if (structuredResponse && structuredResponse.evidenceValidation) {
199
+ const groundingScore = structuredResponse.evidenceValidation.groundingScore;
200
+ score = score * 0.7 + groundingScore * 0.3; // Weight evidence grounding
201
+ }
202
+ return Math.max(0, Math.min(1, score));
203
+ }
204
+ processStructuredResponse(processedResponse, deterministicInsights) {
205
+ if (!processedResponse.structuredResponse) {
206
+ // Fallback to original processing
207
+ return this.processLLMResponse(processedResponse.rawContent, deterministicInsights);
208
+ }
209
+ const structured = processedResponse.structuredResponse;
210
+ const enhancedInsights = [];
211
+ // Convert structured insights to PersonaInsight format
212
+ structured.insights.forEach((insight) => {
213
+ const personaInsight = {
214
+ id: `enhanced-${insight.id}`,
215
+ type: "analysis",
216
+ title: insight.title,
217
+ description: insight.description,
218
+ priority: insight.priority,
219
+ confidence: Math.round(insight.confidence * 100), // Convert to 0-100 scale
220
+ category: this.mapCategoryToPersona(insight.category),
221
+ evidence: insight.evidenceIds || [],
222
+ };
223
+ enhancedInsights.push(personaInsight);
224
+ });
225
+ return enhancedInsights;
226
+ }
227
+ mapCategoryToPersona(category) {
228
+ const categoryMap = {
229
+ strategy: "strategy",
230
+ risk: "risk",
231
+ opportunity: "strategy",
232
+ implementation: "technical",
233
+ };
234
+ return categoryMap[category] || "strategy";
235
+ }
236
+ createEvidenceReferences() {
237
+ // For now, return empty evidence references
238
+ // In a full implementation, this would extract evidence from the context
239
+ return [];
240
+ }
241
+ async healthCheck() {
242
+ try {
243
+ return await this.copilotClient.healthCheck();
244
+ }
245
+ catch (error) {
246
+ console.error("❌ LLM coalescer health check failed:", error);
247
+ return false;
248
+ }
249
+ }
250
+ getMetrics() {
251
+ return {
252
+ config: this.config,
253
+ copilotMetrics: this.copilotClient.getMetrics(),
254
+ };
255
+ }
256
+ }
257
+ exports.LLMCoalescer = LLMCoalescer;
258
+ //# sourceMappingURL=coalescer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coalescer.js","sourceRoot":"","sources":["../../src/llm/coalescer.ts"],"names":[],"mappings":"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"}