@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,321 @@
1
+ "use strict";
2
+ /**
3
+ * LLM Response Processor
4
+ *
5
+ * Handles structured parsing and validation of LLM responses
6
+ * for adversarial coalescing with deterministic analysis
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.ResponseProcessor = void 0;
10
+ class ResponseProcessor {
11
+ static parseCoalescingResponse(llmContent) {
12
+ const enhancedInsights = this.extractSection(llmContent, this.SECTION_PATTERNS.enhancedInsights);
13
+ const adversarialChallenges = this.extractSection(llmContent, this.SECTION_PATTERNS.adversarialChallenges);
14
+ const confidenceAssessment = this.extractSection(llmContent, this.SECTION_PATTERNS.confidenceAssessment);
15
+ return {
16
+ enhancedInsights,
17
+ adversarialChallenges,
18
+ confidenceAssessment: confidenceAssessment[0] || "",
19
+ rawContent: llmContent,
20
+ };
21
+ }
22
+ static parseValidationResponse(llmContent) {
23
+ const resultMatch = llmContent.match(this.VALIDATION_RESULT_PATTERN);
24
+ const notesMatch = llmContent.match(this.VALIDATION_NOTES_PATTERN);
25
+ const isValid = resultMatch ? resultMatch[1]?.toUpperCase() === "PASS" : false;
26
+ const notes = notesMatch ? notesMatch[1]?.trim() || "" : "";
27
+ const issues = this.extractIssues(notes);
28
+ const suggestions = this.extractSuggestions(notes);
29
+ const confidence = this.calculateValidationConfidence(isValid, issues.length);
30
+ return {
31
+ isValid,
32
+ confidence,
33
+ issues,
34
+ suggestions,
35
+ };
36
+ }
37
+ static processEnhancedInsights(enhancedTexts, deterministicInsights) {
38
+ const processedInsights = [];
39
+ enhancedTexts.forEach((enhancedText, index) => {
40
+ if (index < deterministicInsights.length && deterministicInsights[index]) {
41
+ const original = deterministicInsights[index];
42
+ const enhanced = this.createEnhancedInsight(original, enhancedText);
43
+ processedInsights.push(enhanced);
44
+ }
45
+ else {
46
+ // Create new insight from enhanced text
47
+ const newInsight = this.createNewInsight(enhancedText, index);
48
+ processedInsights.push(newInsight);
49
+ }
50
+ });
51
+ return processedInsights;
52
+ }
53
+ static validateResponseStructure(parsed) {
54
+ const issues = [];
55
+ const suggestions = [];
56
+ // Check required sections
57
+ if (parsed.enhancedInsights.length === 0) {
58
+ issues.push("No enhanced insights found");
59
+ suggestions.push("Add at least one enhanced insight");
60
+ }
61
+ if (parsed.adversarialChallenges.length === 0) {
62
+ issues.push("No adversarial challenges found");
63
+ suggestions.push("Add at least one adversarial challenge");
64
+ }
65
+ if (!parsed.confidenceAssessment) {
66
+ issues.push("No confidence assessment provided");
67
+ suggestions.push("Add confidence assessment section");
68
+ }
69
+ // Check content quality
70
+ if (parsed.enhancedInsights.some(insight => insight.length < 20)) {
71
+ issues.push("Some enhanced insights are too brief");
72
+ suggestions.push("Provide more detailed insights");
73
+ }
74
+ if (parsed.adversarialChallenges.some(challenge => challenge.length < 15)) {
75
+ issues.push("Some adversarial challenges are too brief");
76
+ suggestions.push("Provide more substantive challenges");
77
+ }
78
+ const confidence = this.calculateValidationConfidence(issues.length === 0, issues.length);
79
+ return {
80
+ isValid: issues.length === 0,
81
+ confidence,
82
+ issues,
83
+ suggestions,
84
+ };
85
+ }
86
+ static extractSection(content, pattern) {
87
+ const match = content.match(pattern);
88
+ if (!match || !match[1])
89
+ return [];
90
+ return match[1]
91
+ .split("\n")
92
+ .filter(line => line.trim().startsWith("-"))
93
+ .map(line => line.replace(/^-\s*/, "").trim())
94
+ .filter(line => line.length > 0);
95
+ }
96
+ static extractIssues(notes) {
97
+ if (!notes)
98
+ return [];
99
+ const issuePatterns = [
100
+ /missing/gi,
101
+ /not found/gi,
102
+ /incomplete/gi,
103
+ /unclear/gi,
104
+ /vague/gi,
105
+ /insufficient/gi,
106
+ ];
107
+ const issues = [];
108
+ issuePatterns.forEach(pattern => {
109
+ if (pattern.test(notes)) {
110
+ issues.push(notes);
111
+ }
112
+ });
113
+ return issues.length > 0 ? issues : [notes];
114
+ }
115
+ static extractSuggestions(notes) {
116
+ const suggestionPatterns = [
117
+ /should/gi,
118
+ /recommend/gi,
119
+ /consider/gi,
120
+ /add/gi,
121
+ /include/gi,
122
+ /provide/gi,
123
+ ];
124
+ const suggestions = [];
125
+ suggestionPatterns.forEach(pattern => {
126
+ if (pattern.test(notes)) {
127
+ suggestions.push(notes);
128
+ }
129
+ });
130
+ return suggestions.length > 0 ? suggestions : ["Review response structure"];
131
+ }
132
+ static calculateValidationConfidence(isValid, issueCount) {
133
+ let confidence = isValid ? 0.9 : 0.5;
134
+ confidence -= issueCount * 0.1;
135
+ return Math.max(0, Math.min(1, confidence));
136
+ }
137
+ static createEnhancedInsight(original, enhancedText) {
138
+ return {
139
+ ...original,
140
+ description: enhancedText,
141
+ confidence: Math.min(original.confidence + 5, 100), // Slight confidence boost
142
+ };
143
+ }
144
+ static createNewInsight(enhancedText, index) {
145
+ return {
146
+ id: `llm-enhanced-${Date.now()}-${index}`,
147
+ type: "analysis",
148
+ title: this.extractTitleFromText(enhancedText),
149
+ description: enhancedText,
150
+ evidence: [], // LLM should not add new evidence
151
+ confidence: 70, // Default confidence for new insights
152
+ priority: "medium",
153
+ category: "strategy",
154
+ };
155
+ }
156
+ static extractTitleFromText(text) {
157
+ // Extract first sentence or create title from first 50 characters
158
+ const sentences = text.split(/[.!?]/);
159
+ const firstSentence = sentences[0]?.trim() || "";
160
+ if (firstSentence.length <= 50) {
161
+ return firstSentence;
162
+ }
163
+ return text.substring(0, 50).trim() + "...";
164
+ }
165
+ static sanitizeResponse(content) {
166
+ // Remove any potentially harmful content
167
+ return content
168
+ .replace(/<script[^>]*>.*?<\/script>/gis, "")
169
+ .replace(/javascript:/gi, "")
170
+ .replace(/on\w+\s*=/gi, "")
171
+ .trim();
172
+ }
173
+ static extractMetrics(parsed) {
174
+ const insightCount = parsed.enhancedInsights.length;
175
+ const challengeCount = parsed.adversarialChallenges.length;
176
+ const averageInsightLength = insightCount > 0
177
+ ? parsed.enhancedInsights.reduce((sum, insight) => sum + insight.length, 0) / insightCount
178
+ : 0;
179
+ const averageChallengeLength = challengeCount > 0
180
+ ? parsed.adversarialChallenges.reduce((sum, challenge) => sum + challenge.length, 0) / challengeCount
181
+ : 0;
182
+ const hasConfidenceAssessment = parsed.confidenceAssessment.length > 0;
183
+ return {
184
+ insightCount,
185
+ challengeCount,
186
+ averageInsightLength,
187
+ averageChallengeLength,
188
+ hasConfidenceAssessment,
189
+ };
190
+ }
191
+ // Structured JSON parsing methods
192
+ static parseStructuredResponse(llmContent) {
193
+ try {
194
+ // Try to parse as JSON first
195
+ const jsonMatch = llmContent.match(/\{[\s\S]*\}/);
196
+ if (jsonMatch) {
197
+ const structuredResponse = JSON.parse(jsonMatch[0]);
198
+ return {
199
+ enhancedInsights: structuredResponse.insights.map(i => i.description),
200
+ adversarialChallenges: structuredResponse.insights.map(i => i.adversarialChallenge),
201
+ confidenceAssessment: `Confidence: ${(structuredResponse.confidence * 100).toFixed(1)}%`,
202
+ rawContent: llmContent,
203
+ structuredResponse,
204
+ };
205
+ }
206
+ }
207
+ catch (error) {
208
+ console.warn('Failed to parse structured JSON response:', error);
209
+ }
210
+ // Fallback to original parsing
211
+ return this.parseCoalescingResponse(llmContent);
212
+ }
213
+ static validateStructuredResponse(response) {
214
+ const issues = [];
215
+ // Validate basic structure
216
+ if (!response.insights || !Array.isArray(response.insights)) {
217
+ issues.push({
218
+ type: 'structure_invalid',
219
+ severity: 'error',
220
+ message: 'Missing or invalid insights array'
221
+ });
222
+ }
223
+ if (typeof response.confidence !== 'number' || response.confidence < 0 || response.confidence > 1) {
224
+ issues.push({
225
+ type: 'structure_invalid',
226
+ severity: 'error',
227
+ message: 'Invalid confidence value'
228
+ });
229
+ }
230
+ // Validate evidence grounding
231
+ if (response.evidenceValidation) {
232
+ const groundingScore = response.evidenceValidation.groundingScore;
233
+ if (groundingScore < 0.7) {
234
+ issues.push({
235
+ type: 'evidence_missing',
236
+ severity: 'warning',
237
+ message: `Low evidence grounding score: ${(groundingScore * 100).toFixed(1)}%`
238
+ });
239
+ }
240
+ }
241
+ // Validate individual insights
242
+ response.insights?.forEach((insight, index) => {
243
+ if (!insight.evidenceIds || insight.evidenceIds.length === 0) {
244
+ issues.push({
245
+ type: 'evidence_missing',
246
+ severity: 'warning',
247
+ message: `Insight ${index + 1} has no evidence citations`,
248
+ insightId: insight.id
249
+ });
250
+ }
251
+ if (insight.confidence < 0.5) {
252
+ issues.push({
253
+ type: 'confidence_low',
254
+ severity: 'info',
255
+ message: `Insight ${index + 1} has low confidence: ${(insight.confidence * 100).toFixed(1)}%`,
256
+ insightId: insight.id
257
+ });
258
+ }
259
+ });
260
+ const isValid = issues.filter(i => i.severity === 'error').length === 0;
261
+ const confidence = isValid ? response.confidence : Math.max(0, response.confidence - 0.2);
262
+ return {
263
+ isValid,
264
+ confidence,
265
+ issues,
266
+ suggestions: this.generateSuggestions(issues),
267
+ processingTime: 0
268
+ };
269
+ }
270
+ static validateEvidenceGrounding(insights, availableEvidence) {
271
+ const totalInsights = insights.length;
272
+ const missingEvidence = [];
273
+ const invalidEvidence = [];
274
+ let groundedInsights = 0;
275
+ const evidenceSet = new Set(availableEvidence.map(e => e.id));
276
+ insights.forEach(insight => {
277
+ const hasValidEvidence = insight.evidenceIds.some((evidenceId) => {
278
+ if (!evidenceSet.has(evidenceId)) {
279
+ if (!missingEvidence.includes(evidenceId)) {
280
+ missingEvidence.push(evidenceId);
281
+ }
282
+ return false;
283
+ }
284
+ return true;
285
+ });
286
+ if (hasValidEvidence) {
287
+ groundedInsights++;
288
+ }
289
+ });
290
+ const groundingScore = totalInsights > 0 ? groundedInsights / totalInsights : 0;
291
+ return {
292
+ totalInsights,
293
+ groundedInsights,
294
+ missingEvidence,
295
+ invalidEvidence,
296
+ groundingScore
297
+ };
298
+ }
299
+ static generateSuggestions(issues) {
300
+ const suggestions = [];
301
+ if (issues.some(i => i.type === 'evidence_missing')) {
302
+ suggestions.push('Ensure all insights cite valid evidence IDs');
303
+ }
304
+ if (issues.some(i => i.type === 'confidence_low')) {
305
+ suggestions.push('Consider strengthening insights with more evidence');
306
+ }
307
+ if (issues.some(i => i.type === 'structure_invalid')) {
308
+ suggestions.push('Review JSON structure and required fields');
309
+ }
310
+ return suggestions;
311
+ }
312
+ }
313
+ exports.ResponseProcessor = ResponseProcessor;
314
+ ResponseProcessor.SECTION_PATTERNS = {
315
+ enhancedInsights: /ENHANCED_INSIGHTS:\s*\n([\s\S]*?)(?=\n\n|\n[A-Z_]+:|$)/,
316
+ adversarialChallenges: /ADVERSARIAL_CHALLENGES:\s*\n([\s\S]*?)(?=\n\n|\n[A-Z_]+:|$)/,
317
+ confidenceAssessment: /CONFIDENCE_ASSESSMENT:\s*\n([\s\S]*?)(?=\n\n|\n[A-Z_]+:|$)/,
318
+ };
319
+ ResponseProcessor.VALIDATION_RESULT_PATTERN = /VALIDATION_RESULT:\s*(PASS|FAIL)/i;
320
+ ResponseProcessor.VALIDATION_NOTES_PATTERN = /VALIDATION_NOTES:\s*\n([\s\S]*?)(?=\n\n|\n[A-Z_]+:|$)/;
321
+ //# sourceMappingURL=response-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-processor.js","sourceRoot":"","sources":["../../src/llm/response-processor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,184 @@
1
+ /**
2
+ * Structured Coalescing Types
3
+ *
4
+ * JSON schema definitions for structured LLM coalescing with evidence grounding
5
+ */
6
+ export interface StructuredAdversarialResponse {
7
+ insights: AdversarialInsight[];
8
+ confidence: number;
9
+ evidenceValidation: EvidenceValidation;
10
+ processingTime: number;
11
+ metadata: ResponseMetadata;
12
+ }
13
+ export interface AdversarialInsight {
14
+ id: string;
15
+ title: string;
16
+ description: string;
17
+ priority: 'critical' | 'high' | 'medium' | 'low';
18
+ confidence: number;
19
+ evidenceIds: string[];
20
+ adversarialChallenge: string;
21
+ strategicImplication: string;
22
+ category: 'strategy' | 'risk' | 'opportunity' | 'implementation';
23
+ timeframe: string;
24
+ effort: 'small' | 'medium' | 'large';
25
+ }
26
+ export interface EvidenceValidation {
27
+ totalInsights: number;
28
+ groundedInsights: number;
29
+ missingEvidence: string[];
30
+ invalidEvidence: string[];
31
+ groundingScore: number;
32
+ }
33
+ export interface ResponseMetadata {
34
+ model: string;
35
+ tokensUsed: number;
36
+ temperature: number;
37
+ reasoningEffort: string;
38
+ sessionId: string;
39
+ timestamp: number;
40
+ }
41
+ export interface StructuredCoalescingConfig {
42
+ enableStrictValidation: boolean;
43
+ requireEvidenceGrounding: boolean;
44
+ minGroundingScore: number;
45
+ maxInsights: number;
46
+ confidenceThreshold: number;
47
+ evidenceCategories: string[];
48
+ }
49
+ export interface CoalescingValidationResult {
50
+ isValid: boolean;
51
+ confidence: number;
52
+ issues: ValidationIssue[];
53
+ suggestions: string[];
54
+ processingTime: number;
55
+ }
56
+ export interface ValidationIssue {
57
+ type: 'evidence_missing' | 'evidence_invalid' | 'malformed_json' | 'confidence_low' | 'structure_invalid';
58
+ severity: 'error' | 'warning' | 'info';
59
+ message: string;
60
+ insightId?: string;
61
+ evidenceId?: string;
62
+ }
63
+ export interface EvidenceReference {
64
+ id: string;
65
+ content: string;
66
+ category: string;
67
+ confidence: number;
68
+ relevanceScore: number;
69
+ }
70
+ export declare const STRUCTURED_RESPONSE_SCHEMA: {
71
+ type: string;
72
+ required: string[];
73
+ properties: {
74
+ insights: {
75
+ type: string;
76
+ items: {
77
+ type: string;
78
+ required: string[];
79
+ properties: {
80
+ id: {
81
+ type: string;
82
+ };
83
+ title: {
84
+ type: string;
85
+ };
86
+ description: {
87
+ type: string;
88
+ };
89
+ priority: {
90
+ enum: string[];
91
+ };
92
+ confidence: {
93
+ type: string;
94
+ minimum: number;
95
+ maximum: number;
96
+ };
97
+ evidenceIds: {
98
+ type: string;
99
+ items: {
100
+ type: string;
101
+ };
102
+ };
103
+ adversarialChallenge: {
104
+ type: string;
105
+ };
106
+ strategicImplication: {
107
+ type: string;
108
+ };
109
+ category: {
110
+ enum: string[];
111
+ };
112
+ timeframe: {
113
+ type: string;
114
+ };
115
+ effort: {
116
+ enum: string[];
117
+ };
118
+ };
119
+ };
120
+ };
121
+ confidence: {
122
+ type: string;
123
+ minimum: number;
124
+ maximum: number;
125
+ };
126
+ evidenceValidation: {
127
+ type: string;
128
+ required: string[];
129
+ properties: {
130
+ totalInsights: {
131
+ type: string;
132
+ };
133
+ groundedInsights: {
134
+ type: string;
135
+ };
136
+ missingEvidence: {
137
+ type: string;
138
+ items: {
139
+ type: string;
140
+ };
141
+ };
142
+ invalidEvidence: {
143
+ type: string;
144
+ items: {
145
+ type: string;
146
+ };
147
+ };
148
+ groundingScore: {
149
+ type: string;
150
+ minimum: number;
151
+ maximum: number;
152
+ };
153
+ };
154
+ };
155
+ processingTime: {
156
+ type: string;
157
+ };
158
+ metadata: {
159
+ type: string;
160
+ required: string[];
161
+ properties: {
162
+ model: {
163
+ type: string;
164
+ };
165
+ tokensUsed: {
166
+ type: string;
167
+ };
168
+ temperature: {
169
+ type: string;
170
+ };
171
+ reasoningEffort: {
172
+ type: string;
173
+ };
174
+ sessionId: {
175
+ type: string;
176
+ };
177
+ timestamp: {
178
+ type: string;
179
+ };
180
+ };
181
+ };
182
+ };
183
+ };
184
+ //# sourceMappingURL=structured-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structured-types.d.ts","sourceRoot":"","sources":["../../src/llm/structured-types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,aAAa,GAAG,gBAAgB,CAAC;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;CACtC;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,0BAA0B;IACzC,sBAAsB,EAAE,OAAO,CAAC;IAChC,wBAAwB,EAAE,OAAO,CAAC;IAClC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,kBAAkB,GAAG,kBAAkB,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,mBAAmB,CAAC;IAC1G,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAGD,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDtC,CAAC"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ /**
3
+ * Structured Coalescing Types
4
+ *
5
+ * JSON schema definitions for structured LLM coalescing with evidence grounding
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.STRUCTURED_RESPONSE_SCHEMA = void 0;
9
+ // JSON Schema for validation
10
+ exports.STRUCTURED_RESPONSE_SCHEMA = {
11
+ type: 'object',
12
+ required: ['insights', 'confidence', 'evidenceValidation', 'processingTime', 'metadata'],
13
+ properties: {
14
+ insights: {
15
+ type: 'array',
16
+ items: {
17
+ type: 'object',
18
+ required: ['id', 'title', 'description', 'priority', 'confidence', 'evidenceIds', 'adversarialChallenge', 'strategicImplication', 'category', 'timeframe', 'effort'],
19
+ properties: {
20
+ id: { type: 'string' },
21
+ title: { type: 'string' },
22
+ description: { type: 'string' },
23
+ priority: { enum: ['critical', 'high', 'medium', 'low'] },
24
+ confidence: { type: 'number', minimum: 0, maximum: 1 },
25
+ evidenceIds: { type: 'array', items: { type: 'string' } },
26
+ adversarialChallenge: { type: 'string' },
27
+ strategicImplication: { type: 'string' },
28
+ category: { enum: ['strategy', 'risk', 'opportunity', 'implementation'] },
29
+ timeframe: { type: 'string' },
30
+ effort: { enum: ['small', 'medium', 'large'] }
31
+ }
32
+ }
33
+ },
34
+ confidence: { type: 'number', minimum: 0, maximum: 1 },
35
+ evidenceValidation: {
36
+ type: 'object',
37
+ required: ['totalInsights', 'groundedInsights', 'missingEvidence', 'invalidEvidence', 'groundingScore'],
38
+ properties: {
39
+ totalInsights: { type: 'number' },
40
+ groundedInsights: { type: 'number' },
41
+ missingEvidence: { type: 'array', items: { type: 'string' } },
42
+ invalidEvidence: { type: 'array', items: { type: 'string' } },
43
+ groundingScore: { type: 'number', minimum: 0, maximum: 1 }
44
+ }
45
+ },
46
+ processingTime: { type: 'number' },
47
+ metadata: {
48
+ type: 'object',
49
+ required: ['model', 'tokensUsed', 'temperature', 'reasoningEffort', 'sessionId', 'timestamp'],
50
+ properties: {
51
+ model: { type: 'string' },
52
+ tokensUsed: { type: 'number' },
53
+ temperature: { type: 'number' },
54
+ reasoningEffort: { type: 'string' },
55
+ sessionId: { type: 'string' },
56
+ timestamp: { type: 'number' }
57
+ }
58
+ }
59
+ }
60
+ };
61
+ //# sourceMappingURL=structured-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structured-types.js","sourceRoot":"","sources":["../../src/llm/structured-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Evidence-Based Validation Layer
3
+ *
4
+ * Ensures LLM responses remain grounded in deterministic findings
5
+ * and prevents hallucination while maintaining adversarial value
6
+ */
7
+ import { PersonaInsight } from "../types/persona";
8
+ import { ParsedLLMResponse } from "./response-processor";
9
+ export interface ValidationConfig {
10
+ evidenceThreshold: number;
11
+ confidenceThreshold: number;
12
+ maxNewInsights: number;
13
+ requireEvidenceGrounding: boolean;
14
+ }
15
+ export interface ValidationReport {
16
+ isValid: boolean;
17
+ score: number;
18
+ issues: ValidationIssue[];
19
+ metrics: ValidationMetrics;
20
+ recommendations: string[];
21
+ }
22
+ export interface ValidationIssue {
23
+ type: "evidence_drift" | "confidence_inflation" | "hallucination" | "priority_mismatch";
24
+ severity: "low" | "medium" | "high" | "critical";
25
+ description: string;
26
+ affectedInsights: string[];
27
+ suggestion: string;
28
+ }
29
+ export interface ValidationMetrics {
30
+ evidenceOverlap: number;
31
+ confidenceInflation: number;
32
+ priorityAlignment: number;
33
+ newInsightCount: number;
34
+ hallucinationRisk: number;
35
+ }
36
+ export declare class EvidenceValidator {
37
+ private config;
38
+ constructor(config?: Partial<ValidationConfig>);
39
+ validateLLMResponse(parsedResponse: ParsedLLMResponse, deterministicInsights: PersonaInsight[]): ValidationReport;
40
+ private validateEvidenceGrounding;
41
+ private validateConfidenceLevels;
42
+ private validatePriorityAlignment;
43
+ private detectHallucination;
44
+ private validateNewInsights;
45
+ private calculateMetrics;
46
+ private calculateEvidenceOverlap;
47
+ private calculateConfidenceInflation;
48
+ private calculatePriorityAlignment;
49
+ private calculateHallucinationRisk;
50
+ private calculateValidationScore;
51
+ private generateRecommendations;
52
+ private extractEvidenceFromText;
53
+ private parseConfidenceFromAssessment;
54
+ private countPriorityShifts;
55
+ private findContradictions;
56
+ }
57
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/llm/validation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,WAAW,gBAAgB;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,wBAAwB,EAAE,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,gBAAgB,GAAG,sBAAsB,GAAG,eAAe,GAAG,mBAAmB,CAAC;IACxF,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAmB;gBAErB,MAAM,GAAE,OAAO,CAAC,gBAAgB,CAAM;IAUlD,mBAAmB,CACjB,cAAc,EAAE,iBAAiB,EACjC,qBAAqB,EAAE,cAAc,EAAE,GACtC,gBAAgB;IAsDnB,OAAO,CAAC,yBAAyB;IA+BjC,OAAO,CAAC,wBAAwB;IA4BhC,OAAO,CAAC,yBAAyB;IAsBjC,OAAO,CAAC,mBAAmB;IAyB3B,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,gBAAgB;IAmCxB,OAAO,CAAC,wBAAwB;IAsBhC,OAAO,CAAC,4BAA4B;IAapC,OAAO,CAAC,0BAA0B;IAKlC,OAAO,CAAC,0BAA0B;IAwBlC,OAAO,CAAC,wBAAwB;IAgChC,OAAO,CAAC,uBAAuB;IA4B/B,OAAO,CAAC,uBAAuB;IAmB/B,OAAO,CAAC,6BAA6B;IAiBrC,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,kBAAkB;CAkB3B"}