@benchcubed/today-cli 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 (210) hide show
  1. package/README.md +296 -0
  2. package/dist/ai/bedrock-client.d.ts +1 -0
  3. package/dist/ai/bedrock-client.d.ts.map +1 -0
  4. package/dist/ai/bedrock-client.js +2 -0
  5. package/dist/ai/bedrock-client.js.map +1 -0
  6. package/dist/ai/knowledge-processor.d.ts +1 -0
  7. package/dist/ai/knowledge-processor.d.ts.map +1 -0
  8. package/dist/ai/knowledge-processor.js +2 -0
  9. package/dist/ai/knowledge-processor.js.map +1 -0
  10. package/dist/cli.d.ts +3 -0
  11. package/dist/cli.d.ts.map +1 -0
  12. package/dist/cli.js +70 -0
  13. package/dist/cli.js.map +1 -0
  14. package/dist/commands/ask.d.ts +3 -0
  15. package/dist/commands/ask.d.ts.map +1 -0
  16. package/dist/commands/ask.js +217 -0
  17. package/dist/commands/ask.js.map +1 -0
  18. package/dist/commands/audit.d.ts +3 -0
  19. package/dist/commands/audit.d.ts.map +1 -0
  20. package/dist/commands/audit.js +153 -0
  21. package/dist/commands/audit.js.map +1 -0
  22. package/dist/commands/auth.d.ts +3 -0
  23. package/dist/commands/auth.d.ts.map +1 -0
  24. package/dist/commands/auth.js +114 -0
  25. package/dist/commands/auth.js.map +1 -0
  26. package/dist/commands/config.d.ts +3 -0
  27. package/dist/commands/config.d.ts.map +1 -0
  28. package/dist/commands/config.js +72 -0
  29. package/dist/commands/config.js.map +1 -0
  30. package/dist/commands/embeddings.d.ts +3 -0
  31. package/dist/commands/embeddings.d.ts.map +1 -0
  32. package/dist/commands/embeddings.js +118 -0
  33. package/dist/commands/embeddings.js.map +1 -0
  34. package/dist/commands/experts.d.ts +3 -0
  35. package/dist/commands/experts.d.ts.map +1 -0
  36. package/dist/commands/experts.js +129 -0
  37. package/dist/commands/experts.js.map +1 -0
  38. package/dist/commands/export-import.d.ts +4 -0
  39. package/dist/commands/export-import.d.ts.map +1 -0
  40. package/dist/commands/export-import.js +285 -0
  41. package/dist/commands/export-import.js.map +1 -0
  42. package/dist/commands/git.d.ts +4 -0
  43. package/dist/commands/git.d.ts.map +1 -0
  44. package/dist/commands/git.js +274 -0
  45. package/dist/commands/git.js.map +1 -0
  46. package/dist/commands/impact.d.ts +3 -0
  47. package/dist/commands/impact.d.ts.map +1 -0
  48. package/dist/commands/impact.js +121 -0
  49. package/dist/commands/impact.js.map +1 -0
  50. package/dist/commands/insights.d.ts +3 -0
  51. package/dist/commands/insights.d.ts.map +1 -0
  52. package/dist/commands/insights.js +113 -0
  53. package/dist/commands/insights.js.map +1 -0
  54. package/dist/commands/learned.d.ts +3 -0
  55. package/dist/commands/learned.d.ts.map +1 -0
  56. package/dist/commands/learned.js +355 -0
  57. package/dist/commands/learned.js.map +1 -0
  58. package/dist/commands/onboard.d.ts +3 -0
  59. package/dist/commands/onboard.d.ts.map +1 -0
  60. package/dist/commands/onboard.js +141 -0
  61. package/dist/commands/onboard.js.map +1 -0
  62. package/dist/commands/recent.d.ts +3 -0
  63. package/dist/commands/recent.d.ts.map +1 -0
  64. package/dist/commands/recent.js +83 -0
  65. package/dist/commands/recent.js.map +1 -0
  66. package/dist/commands/secrets.d.ts +3 -0
  67. package/dist/commands/secrets.d.ts.map +1 -0
  68. package/dist/commands/secrets.js +203 -0
  69. package/dist/commands/secrets.js.map +1 -0
  70. package/dist/commands/stats.d.ts +3 -0
  71. package/dist/commands/stats.d.ts.map +1 -0
  72. package/dist/commands/stats.js +120 -0
  73. package/dist/commands/stats.js.map +1 -0
  74. package/dist/config/index.d.ts +12 -0
  75. package/dist/config/index.d.ts.map +1 -0
  76. package/dist/config/index.js +46 -0
  77. package/dist/config/index.js.map +1 -0
  78. package/dist/database/migrations.d.ts +13 -0
  79. package/dist/database/migrations.d.ts.map +1 -0
  80. package/dist/database/migrations.js +190 -0
  81. package/dist/database/migrations.js.map +1 -0
  82. package/dist/database/postgresql.d.ts +92 -0
  83. package/dist/database/postgresql.d.ts.map +1 -0
  84. package/dist/database/postgresql.js +382 -0
  85. package/dist/database/postgresql.js.map +1 -0
  86. package/dist/database/sqlite.d.ts +54 -0
  87. package/dist/database/sqlite.d.ts.map +1 -0
  88. package/dist/database/sqlite.js +337 -0
  89. package/dist/database/sqlite.js.map +1 -0
  90. package/dist/lambda/admin.d.ts +3 -0
  91. package/dist/lambda/admin.d.ts.map +1 -0
  92. package/dist/lambda/admin.js +818 -0
  93. package/dist/lambda/admin.js.map +1 -0
  94. package/dist/lambda/ai-services.d.ts +6 -0
  95. package/dist/lambda/ai-services.d.ts.map +1 -0
  96. package/dist/lambda/ai-services.js +472 -0
  97. package/dist/lambda/ai-services.js.map +1 -0
  98. package/dist/lambda/analytics.d.ts +3 -0
  99. package/dist/lambda/analytics.d.ts.map +1 -0
  100. package/dist/lambda/analytics.js +481 -0
  101. package/dist/lambda/analytics.js.map +1 -0
  102. package/dist/lambda/api-router.d.ts +3 -0
  103. package/dist/lambda/api-router.d.ts.map +1 -0
  104. package/dist/lambda/api-router.js +162 -0
  105. package/dist/lambda/api-router.js.map +1 -0
  106. package/dist/lambda/custom-topics.d.ts +3 -0
  107. package/dist/lambda/custom-topics.d.ts.map +1 -0
  108. package/dist/lambda/custom-topics.js +425 -0
  109. package/dist/lambda/custom-topics.js.map +1 -0
  110. package/dist/lambda/graph-builder.d.ts +3 -0
  111. package/dist/lambda/graph-builder.d.ts.map +1 -0
  112. package/dist/lambda/graph-builder.js +442 -0
  113. package/dist/lambda/graph-builder.js.map +1 -0
  114. package/dist/lambda/knowledge-ai.d.ts +3 -0
  115. package/dist/lambda/knowledge-ai.d.ts.map +1 -0
  116. package/dist/lambda/knowledge-ai.js +849 -0
  117. package/dist/lambda/knowledge-ai.js.map +1 -0
  118. package/dist/lambda/post-confirmation.d.ts +8 -0
  119. package/dist/lambda/post-confirmation.d.ts.map +1 -0
  120. package/dist/lambda/post-confirmation.js +92 -0
  121. package/dist/lambda/post-confirmation.js.map +1 -0
  122. package/dist/lambda/teams.d.ts +3 -0
  123. package/dist/lambda/teams.d.ts.map +1 -0
  124. package/dist/lambda/teams.js +568 -0
  125. package/dist/lambda/teams.js.map +1 -0
  126. package/dist/lib/export-helpers.d.ts +5 -0
  127. package/dist/lib/export-helpers.d.ts.map +1 -0
  128. package/dist/lib/export-helpers.js +137 -0
  129. package/dist/lib/export-helpers.js.map +1 -0
  130. package/dist/lib/import-helpers.d.ts +5 -0
  131. package/dist/lib/import-helpers.d.ts.map +1 -0
  132. package/dist/lib/import-helpers.js +185 -0
  133. package/dist/lib/import-helpers.js.map +1 -0
  134. package/dist/lib/insights-helpers.d.ts +123 -0
  135. package/dist/lib/insights-helpers.d.ts.map +1 -0
  136. package/dist/lib/insights-helpers.js +374 -0
  137. package/dist/lib/insights-helpers.js.map +1 -0
  138. package/dist/lib/search-helpers.d.ts +4 -0
  139. package/dist/lib/search-helpers.d.ts.map +1 -0
  140. package/dist/lib/search-helpers.js +124 -0
  141. package/dist/lib/search-helpers.js.map +1 -0
  142. package/dist/lib/secret-helpers.d.ts +2 -0
  143. package/dist/lib/secret-helpers.d.ts.map +1 -0
  144. package/dist/lib/secret-helpers.js +85 -0
  145. package/dist/lib/secret-helpers.js.map +1 -0
  146. package/dist/lib/stats-helpers.d.ts +41 -0
  147. package/dist/lib/stats-helpers.d.ts.map +1 -0
  148. package/dist/lib/stats-helpers.js +263 -0
  149. package/dist/lib/stats-helpers.js.map +1 -0
  150. package/dist/services/aws-api.d.ts +81 -0
  151. package/dist/services/aws-api.d.ts.map +1 -0
  152. package/dist/services/aws-api.js +388 -0
  153. package/dist/services/aws-api.js.map +1 -0
  154. package/dist/services/bedrock.d.ts +83 -0
  155. package/dist/services/bedrock.d.ts.map +1 -0
  156. package/dist/services/bedrock.js +434 -0
  157. package/dist/services/bedrock.js.map +1 -0
  158. package/dist/services/commit-learnings.d.ts +25 -0
  159. package/dist/services/commit-learnings.d.ts.map +1 -0
  160. package/dist/services/commit-learnings.js +180 -0
  161. package/dist/services/commit-learnings.js.map +1 -0
  162. package/dist/services/embedding-storage.d.ts +42 -0
  163. package/dist/services/embedding-storage.d.ts.map +1 -0
  164. package/dist/services/embedding-storage.js +124 -0
  165. package/dist/services/embedding-storage.js.map +1 -0
  166. package/dist/services/expert-engine.d.ts +21 -0
  167. package/dist/services/expert-engine.d.ts.map +1 -0
  168. package/dist/services/expert-engine.js +58 -0
  169. package/dist/services/expert-engine.js.map +1 -0
  170. package/dist/services/onboarding-accelerator.d.ts +118 -0
  171. package/dist/services/onboarding-accelerator.d.ts.map +1 -0
  172. package/dist/services/onboarding-accelerator.js +403 -0
  173. package/dist/services/onboarding-accelerator.js.map +1 -0
  174. package/dist/services/secret-detection.d.ts +46 -0
  175. package/dist/services/secret-detection.d.ts.map +1 -0
  176. package/dist/services/secret-detection.js +75 -0
  177. package/dist/services/secret-detection.js.map +1 -0
  178. package/dist/services/secret-manager-simple.d.ts +51 -0
  179. package/dist/services/secret-manager-simple.d.ts.map +1 -0
  180. package/dist/services/secret-manager-simple.js +119 -0
  181. package/dist/services/secret-manager-simple.js.map +1 -0
  182. package/dist/services/secret-manager.d.ts +150 -0
  183. package/dist/services/secret-manager.d.ts.map +1 -0
  184. package/dist/services/secret-manager.js +287 -0
  185. package/dist/services/secret-manager.js.map +1 -0
  186. package/dist/services/vector-embeddings.d.ts +70 -0
  187. package/dist/services/vector-embeddings.d.ts.map +1 -0
  188. package/dist/services/vector-embeddings.js +167 -0
  189. package/dist/services/vector-embeddings.js.map +1 -0
  190. package/dist/services/vector-search.d.ts +28 -0
  191. package/dist/services/vector-search.d.ts.map +1 -0
  192. package/dist/services/vector-search.js +192 -0
  193. package/dist/services/vector-search.js.map +1 -0
  194. package/dist/types/index.d.ts +86 -0
  195. package/dist/types/index.d.ts.map +1 -0
  196. package/dist/types/index.js +4 -0
  197. package/dist/types/index.js.map +1 -0
  198. package/dist/utils/formatting.d.ts +10 -0
  199. package/dist/utils/formatting.d.ts.map +1 -0
  200. package/dist/utils/formatting.js +82 -0
  201. package/dist/utils/formatting.js.map +1 -0
  202. package/dist/utils/git.d.ts +52 -0
  203. package/dist/utils/git.d.ts.map +1 -0
  204. package/dist/utils/git.js +182 -0
  205. package/dist/utils/git.js.map +1 -0
  206. package/dist/utils/validation.d.ts +17 -0
  207. package/dist/utils/validation.d.ts.map +1 -0
  208. package/dist/utils/validation.js +187 -0
  209. package/dist/utils/validation.js.map +1 -0
  210. package/package.json +81 -0
@@ -0,0 +1,374 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.generateComprehensiveInsights = generateComprehensiveInsights;
7
+ exports.analyzeLearningPatterns = analyzeLearningPatterns;
8
+ exports.identifyKnowledgeGaps = identifyKnowledgeGaps;
9
+ exports.analyzeExpertiseDistribution = analyzeExpertiseDistribution;
10
+ exports.calculateLearningVelocity = calculateLearningVelocity;
11
+ exports.generateActionableRecommendations = generateActionableRecommendations;
12
+ exports.generateInsightsSummary = generateInsightsSummary;
13
+ exports.identifyTopicClusters = identifyTopicClusters;
14
+ exports.displayComprehensiveInsights = displayComprehensiveInsights;
15
+ const chalk_1 = __importDefault(require("chalk"));
16
+ // Comprehensive insights generation functions
17
+ async function generateComprehensiveInsights(entries, isTeam, _detailed) {
18
+ // Analyze learning patterns
19
+ const patterns = analyzeLearningPatterns(entries);
20
+ // Identify knowledge gaps
21
+ const gaps = identifyKnowledgeGaps(entries, patterns);
22
+ // Generate expertise analysis
23
+ const expertise = analyzeExpertiseDistribution(entries);
24
+ // Calculate learning velocity and trends
25
+ const velocity = calculateLearningVelocity(entries);
26
+ // Generate actionable recommendations
27
+ const recommendations = generateActionableRecommendations(patterns, gaps, expertise, velocity, isTeam);
28
+ return {
29
+ patterns,
30
+ gaps,
31
+ expertise,
32
+ velocity,
33
+ recommendations,
34
+ summary: generateInsightsSummary(patterns, gaps, expertise, velocity, isTeam)
35
+ };
36
+ }
37
+ function analyzeLearningPatterns(entries) {
38
+ // Topic frequency analysis
39
+ const topicFrequency = new Map();
40
+ const topicImpact = new Map();
41
+ const topicRecency = new Map();
42
+ entries.forEach(entry => {
43
+ const entryDate = new Date(entry.createdAt);
44
+ entry.aiTopics.forEach((topic) => {
45
+ topicFrequency.set(topic, (topicFrequency.get(topic) || 0) + 1);
46
+ topicImpact.set(topic, (topicImpact.get(topic) || 0) + entry.impactScore);
47
+ const currentRecent = topicRecency.get(topic);
48
+ if (!currentRecent || entryDate > currentRecent) {
49
+ topicRecency.set(topic, entryDate);
50
+ }
51
+ });
52
+ });
53
+ // Identify trending topics (high frequency + recent activity)
54
+ const trendingTopics = Array.from(topicFrequency.entries())
55
+ .map(([topic, frequency]) => ({
56
+ topic,
57
+ frequency,
58
+ avgImpact: (topicImpact.get(topic) || 0) / frequency,
59
+ lastActivity: topicRecency.get(topic),
60
+ trendScore: frequency * (topicImpact.get(topic) || 0) / frequency
61
+ }))
62
+ .sort((a, b) => b.trendScore - a.trendScore);
63
+ // Identify learning clusters (related topics)
64
+ const clusters = identifyTopicClusters(trendingTopics);
65
+ return {
66
+ trendingTopics: trendingTopics.slice(0, 10),
67
+ clusters,
68
+ totalTopics: topicFrequency.size,
69
+ avgTopicsPerEntry: Array.from(topicFrequency.values()).reduce((a, b) => a + b, 0) / entries.length
70
+ };
71
+ }
72
+ function identifyKnowledgeGaps(entries, patterns) {
73
+ const gaps = [];
74
+ // Identify topics with low impact scores (potential knowledge gaps)
75
+ const lowImpactTopics = patterns.trendingTopics
76
+ .filter((topic) => topic.avgImpact < 6)
77
+ .slice(0, 5);
78
+ if (lowImpactTopics.length > 0) {
79
+ gaps.push({
80
+ type: 'low_impact',
81
+ description: 'Topics with lower impact scores may need deeper exploration',
82
+ topics: lowImpactTopics.map((t) => t.topic),
83
+ severity: 'medium'
84
+ });
85
+ }
86
+ // Identify expertise level gaps
87
+ const expertiseDistribution = entries.reduce((acc, entry) => {
88
+ acc[entry.expertiseLevel] = (acc[entry.expertiseLevel] || 0) + 1;
89
+ return acc;
90
+ }, {});
91
+ const expertRatio = (expertiseDistribution.expert || 0) / entries.length;
92
+ if (expertRatio < 0.2) {
93
+ gaps.push({
94
+ type: 'expertise_gap',
95
+ description: 'Limited expert-level knowledge entries suggest need for advanced learning',
96
+ severity: 'high',
97
+ recommendation: 'Focus on advanced topics and expert-level content'
98
+ });
99
+ }
100
+ // Identify stale knowledge areas (no recent activity)
101
+ const staleThreshold = new Date(Date.now() - 30 * 24 * 60 * 60 * 1000); // 30 days ago
102
+ const staleTopics = patterns.trendingTopics
103
+ .filter((topic) => topic.lastActivity < staleThreshold)
104
+ .slice(0, 3);
105
+ if (staleTopics.length > 0) {
106
+ gaps.push({
107
+ type: 'stale_knowledge',
108
+ description: 'Some knowledge areas haven\'t been updated recently',
109
+ topics: staleTopics.map((t) => t.topic),
110
+ severity: 'low'
111
+ });
112
+ }
113
+ return gaps;
114
+ }
115
+ function analyzeExpertiseDistribution(entries) {
116
+ const distribution = entries.reduce((acc, entry) => {
117
+ acc[entry.expertiseLevel] = (acc[entry.expertiseLevel] || 0) + 1;
118
+ return acc;
119
+ }, {});
120
+ const total = entries.length;
121
+ const percentages = {
122
+ beginner: ((distribution.beginner || 0) / total) * 100,
123
+ intermediate: ((distribution.intermediate || 0) / total) * 100,
124
+ expert: ((distribution.expert || 0) / total) * 100
125
+ };
126
+ // Identify expertise trends by analyzing recent vs older entries
127
+ const recentThreshold = new Date(Date.now() - 14 * 24 * 60 * 60 * 1000); // 2 weeks ago
128
+ const recentEntries = entries.filter(entry => new Date(entry.createdAt) >= recentThreshold);
129
+ const olderEntries = entries.filter(entry => new Date(entry.createdAt) < recentThreshold);
130
+ const recentExpertRatio = recentEntries.length > 0
131
+ ? (recentEntries.filter((e) => e.expertiseLevel === 'expert').length / recentEntries.length)
132
+ : 0;
133
+ const olderExpertRatio = olderEntries.length > 0
134
+ ? (olderEntries.filter((e) => e.expertiseLevel === 'expert').length / olderEntries.length)
135
+ : 0;
136
+ const expertiseTrend = recentExpertRatio > olderExpertRatio ? 'improving' :
137
+ recentExpertRatio < olderExpertRatio ? 'declining' : 'stable';
138
+ return {
139
+ distribution,
140
+ percentages,
141
+ expertiseTrend,
142
+ recentExpertRatio,
143
+ totalEntries: total
144
+ };
145
+ }
146
+ function calculateLearningVelocity(entries) {
147
+ // Group entries by week
148
+ const weeklyData = new Map();
149
+ entries.forEach(entry => {
150
+ const date = new Date(entry.createdAt);
151
+ const weekStart = new Date(date.getFullYear(), date.getMonth(), date.getDate() - date.getDay());
152
+ const weekKey = weekStart.toISOString().split('T')[0];
153
+ weeklyData.set(weekKey, (weeklyData.get(weekKey) || 0) + 1);
154
+ });
155
+ const weeks = Array.from(weeklyData.entries())
156
+ .sort((a, b) => a[0].localeCompare(b[0]))
157
+ .map(([week, count]) => ({ week, count }));
158
+ // Calculate velocity trend
159
+ const recentWeeks = weeks.slice(-4); // Last 4 weeks
160
+ const avgRecentVelocity = recentWeeks.length > 0
161
+ ? recentWeeks.reduce((sum, w) => sum + w.count, 0) / recentWeeks.length
162
+ : 0;
163
+ const olderWeeks = weeks.slice(-8, -4); // 4 weeks before that
164
+ const avgOlderVelocity = olderWeeks.length > 0
165
+ ? olderWeeks.reduce((sum, w) => sum + w.count, 0) / olderWeeks.length
166
+ : 0;
167
+ const velocityTrend = avgRecentVelocity > avgOlderVelocity ? 'accelerating' :
168
+ avgRecentVelocity < avgOlderVelocity ? 'slowing' : 'stable';
169
+ return {
170
+ weeklyData: weeks,
171
+ avgRecentVelocity,
172
+ avgOlderVelocity,
173
+ velocityTrend,
174
+ totalWeeks: weeks.length
175
+ };
176
+ }
177
+ function generateActionableRecommendations(patterns, gaps, expertise, velocity, isTeam) {
178
+ const recommendations = [];
179
+ // Learning velocity recommendations
180
+ if (velocity.velocityTrend === 'slowing') {
181
+ recommendations.push({
182
+ category: 'velocity',
183
+ priority: 'high',
184
+ title: 'Boost Learning Momentum',
185
+ description: 'Learning velocity has decreased recently',
186
+ actions: [
187
+ 'Set daily learning goals (15-30 minutes)',
188
+ 'Create learning accountability partnerships',
189
+ 'Schedule regular knowledge sharing sessions'
190
+ ]
191
+ });
192
+ }
193
+ // Expertise development recommendations
194
+ if (expertise.percentages.expert < 20) {
195
+ recommendations.push({
196
+ category: 'expertise',
197
+ priority: 'high',
198
+ title: 'Develop Expert-Level Knowledge',
199
+ description: `Only ${expertise.percentages.expert.toFixed(1)}% of knowledge entries are expert-level`,
200
+ actions: [
201
+ 'Focus on advanced topics in your strongest areas',
202
+ 'Seek mentorship from senior team members',
203
+ 'Contribute to complex projects and document learnings'
204
+ ]
205
+ });
206
+ }
207
+ // Topic diversification recommendations
208
+ if (patterns.clusters.length < 3) {
209
+ recommendations.push({
210
+ category: 'diversification',
211
+ priority: 'medium',
212
+ title: 'Expand Knowledge Breadth',
213
+ description: 'Learning is concentrated in few topic areas',
214
+ actions: [
215
+ 'Explore adjacent technologies and concepts',
216
+ 'Cross-train in different domains',
217
+ 'Attend conferences or workshops in new areas'
218
+ ]
219
+ });
220
+ }
221
+ // Knowledge gap recommendations
222
+ gaps.forEach(gap => {
223
+ if (gap.severity === 'high') {
224
+ recommendations.push({
225
+ category: 'gaps',
226
+ priority: 'high',
227
+ title: `Address ${gap.type.replace('_', ' ')}`,
228
+ description: gap.description,
229
+ actions: gap.recommendation ? [gap.recommendation] : [
230
+ 'Schedule focused learning sessions',
231
+ 'Find relevant resources and tutorials',
232
+ 'Practice with hands-on projects'
233
+ ]
234
+ });
235
+ }
236
+ });
237
+ // Team-specific recommendations
238
+ if (isTeam) {
239
+ recommendations.push({
240
+ category: 'collaboration',
241
+ priority: 'medium',
242
+ title: 'Enhance Knowledge Sharing',
243
+ description: 'Improve team learning collaboration',
244
+ actions: [
245
+ 'Implement regular tech talks or lunch-and-learns',
246
+ 'Create internal documentation standards',
247
+ 'Establish peer review processes for learning content'
248
+ ]
249
+ });
250
+ }
251
+ return recommendations.slice(0, 6); // Top 6 recommendations
252
+ }
253
+ function generateInsightsSummary(patterns, gaps, expertise, velocity, isTeam) {
254
+ const scope = isTeam ? 'team' : 'personal';
255
+ const topTopic = patterns.trendingTopics[0]?.topic || 'various topics';
256
+ const expertiseLevel = expertise.percentages.expert > 30 ? 'advanced' :
257
+ expertise.percentages.intermediate > 50 ? 'intermediate' : 'developing';
258
+ return {
259
+ overview: `Your ${scope} learning shows ${expertiseLevel} expertise with strong focus on ${topTopic}`,
260
+ velocity: `Learning velocity is ${velocity.velocityTrend} with ${velocity.avgRecentVelocity.toFixed(1)} entries per week`,
261
+ strengths: [
262
+ `${patterns.trendingTopics.length} active learning topics`,
263
+ `${expertise.percentages.expert.toFixed(1)}% expert-level content`,
264
+ `${velocity.totalWeeks} weeks of consistent learning`
265
+ ],
266
+ opportunities: gaps.length > 0 ? gaps.map(g => g.description).slice(0, 2) : ['Continue current learning momentum']
267
+ };
268
+ }
269
+ function identifyTopicClusters(topics) {
270
+ // Simple clustering based on topic similarity (could be enhanced with ML)
271
+ const clusters = [];
272
+ const techClusters = {
273
+ 'Frontend': ['react', 'javascript', 'typescript', 'css', 'html', 'vue', 'angular'],
274
+ 'Backend': ['node', 'python', 'java', 'api', 'rest', 'graphql', 'microservices'],
275
+ 'Cloud': ['aws', 'azure', 'gcp', 'lambda', 'docker', 'kubernetes', 'terraform'],
276
+ 'Database': ['sql', 'mongodb', 'postgresql', 'redis', 'dynamodb', 'database'],
277
+ 'DevOps': ['ci/cd', 'jenkins', 'github', 'deployment', 'monitoring', 'testing']
278
+ };
279
+ Object.entries(techClusters).forEach(([clusterName, keywords]) => {
280
+ const clusterTopics = topics.filter(topic => keywords.some(keyword => topic.topic.toLowerCase().includes(keyword.toLowerCase())));
281
+ if (clusterTopics.length > 0) {
282
+ clusters.push({
283
+ name: clusterName,
284
+ topics: clusterTopics.slice(0, 5),
285
+ strength: clusterTopics.reduce((sum, t) => sum + t.frequency, 0)
286
+ });
287
+ }
288
+ });
289
+ return clusters.sort((a, b) => b.strength - a.strength);
290
+ }
291
+ function displayComprehensiveInsights(insights, aiEnhanced, isTeam, detailed, bedrockAvailable) {
292
+ const scope = isTeam ? 'Team' : 'Personal';
293
+ console.log(chalk_1.default.blue(`\n📊 ${scope} AI Knowledge Insights & Recommendations`));
294
+ console.log(chalk_1.default.green('☁️ Comprehensive analysis from AWS cloud infrastructure'));
295
+ console.log('');
296
+ if (bedrockAvailable && aiEnhanced) {
297
+ console.log(chalk_1.default.green('🤖 Enhanced with Amazon Bedrock AI'));
298
+ console.log('');
299
+ }
300
+ // Overview
301
+ console.log(chalk_1.default.green('📊 Learning Overview:'));
302
+ console.log(chalk_1.default.gray(` ${insights.summary.overview}`));
303
+ console.log(chalk_1.default.gray(` ${insights.summary.velocity}`));
304
+ console.log('');
305
+ // Top trending topics
306
+ console.log(chalk_1.default.green('🔥 Trending Knowledge Areas:'));
307
+ insights.patterns.trendingTopics.slice(0, 5).forEach((topic, index) => {
308
+ const trendIcon = topic.frequency > 2 ? '📈' : '📊';
309
+ console.log(chalk_1.default.gray(` ${index + 1}. ${trendIcon} ${topic.topic} (${topic.frequency} entries, ${topic.avgImpact.toFixed(1)} avg impact)`));
310
+ });
311
+ console.log('');
312
+ // Knowledge clusters
313
+ if (insights.patterns.clusters.length > 0) {
314
+ console.log(chalk_1.default.green('🎯 Knowledge Clusters:'));
315
+ insights.patterns.clusters.slice(0, 3).forEach((cluster) => {
316
+ console.log(chalk_1.default.gray(` ${cluster.name}: ${cluster.topics.map((t) => t.topic).join(', ')}`));
317
+ });
318
+ console.log('');
319
+ }
320
+ // Expertise analysis
321
+ console.log(chalk_1.default.green('🎓 Expertise Distribution:'));
322
+ console.log(chalk_1.default.gray(` Expert: ${insights.expertise.percentages.expert.toFixed(1)}%`));
323
+ console.log(chalk_1.default.gray(` Intermediate: ${insights.expertise.percentages.intermediate.toFixed(1)}%`));
324
+ console.log(chalk_1.default.gray(` Beginner: ${insights.expertise.percentages.beginner.toFixed(1)}%`));
325
+ console.log(chalk_1.default.gray(` Trend: ${insights.expertise.expertiseTrend}`));
326
+ console.log('');
327
+ // Knowledge gaps (if any)
328
+ if (insights.gaps.length > 0) {
329
+ console.log(chalk_1.default.yellow('⚠️ Knowledge Gaps Identified:'));
330
+ insights.gaps.forEach((gap) => {
331
+ const severityColor = gap.severity === 'high' ? chalk_1.default.red :
332
+ gap.severity === 'medium' ? chalk_1.default.yellow : chalk_1.default.gray;
333
+ console.log(severityColor(` • ${gap.description}`));
334
+ if (gap.topics) {
335
+ console.log(chalk_1.default.gray(` Topics: ${gap.topics.join(', ')}`));
336
+ }
337
+ });
338
+ console.log('');
339
+ }
340
+ // Actionable recommendations
341
+ console.log(chalk_1.default.cyan('💡 Actionable Recommendations:'));
342
+ insights.recommendations.forEach((rec, index) => {
343
+ const priorityIcon = rec.priority === 'high' ? '🚨' : rec.priority === 'medium' ? '⚡' : '💡';
344
+ console.log(chalk_1.default.cyan(` ${index + 1}. ${priorityIcon} ${rec.title}`));
345
+ console.log(chalk_1.default.gray(` ${rec.description}`));
346
+ if (detailed) {
347
+ rec.actions.forEach((action) => {
348
+ console.log(chalk_1.default.gray(` • ${action}`));
349
+ });
350
+ }
351
+ console.log('');
352
+ });
353
+ // AI-enhanced insights from Bedrock
354
+ if (aiEnhanced && aiEnhanced.length > 0) {
355
+ console.log(chalk_1.default.green('🤖 Amazon Bedrock AI Insights:'));
356
+ aiEnhanced.forEach((insight, index) => {
357
+ console.log(chalk_1.default.gray(` ${index + 1}. ${insight}`));
358
+ });
359
+ console.log('');
360
+ }
361
+ // Learning velocity
362
+ if (detailed) {
363
+ console.log(chalk_1.default.green('📈 Learning Velocity:'));
364
+ console.log(chalk_1.default.gray(` Recent average: ${insights.velocity.avgRecentVelocity.toFixed(1)} entries/week`));
365
+ console.log(chalk_1.default.gray(` Trend: ${insights.velocity.velocityTrend}`));
366
+ console.log(chalk_1.default.gray(` Active weeks: ${insights.velocity.totalWeeks}`));
367
+ console.log('');
368
+ }
369
+ // Footer
370
+ console.log(chalk_1.default.green('🌐 All insights generated from real-time AWS cloud data'));
371
+ console.log(chalk_1.default.gray('💡 Use --detailed flag for specific action items'));
372
+ console.log(chalk_1.default.gray('🎯 Perfect for identifying team efficiency improvements'));
373
+ }
374
+ //# sourceMappingURL=insights-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insights-helpers.js","sourceRoot":"","sources":["../../src/lib/insights-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function performClientSideSemanticSearch(entries: any[], queryEmbedding: number[], _query: string): Promise<any[]>;
2
+ export declare function performHybridSearch(query: string, queryEmbedding: number[], awsApiService: any): Promise<any[]>;
3
+ export declare function calculateKeywordRelevance(entry: any, query: string): number;
4
+ //# sourceMappingURL=search-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-helpers.d.ts","sourceRoot":"","sources":["../../src/lib/search-helpers.ts"],"names":[],"mappings":"AAEA,wBAAsB,+BAA+B,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAU9H;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAmDrH;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAoC3E"}
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ // Helper functions for vector search
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.performClientSideSemanticSearch = performClientSideSemanticSearch;
38
+ exports.performHybridSearch = performHybridSearch;
39
+ exports.calculateKeywordRelevance = calculateKeywordRelevance;
40
+ async function performClientSideSemanticSearch(entries, queryEmbedding, _query) {
41
+ // Use the vector search service which now supports S3 lazy-loading
42
+ const { vectorSearch } = await Promise.resolve().then(() => __importStar(require('../services/vector-search')));
43
+ const results = await vectorSearch(queryEmbedding, entries, 10, 0.6);
44
+ return results.map(r => ({
45
+ ...entries.find((e) => e.id === r.id),
46
+ similarity: r.similarity
47
+ }));
48
+ }
49
+ async function performHybridSearch(query, queryEmbedding, awsApiService) {
50
+ // Get all entries for hybrid analysis
51
+ const allEntries = await awsApiService.getKnowledgeEntries(1000);
52
+ // Perform keyword search (40% weight)
53
+ const keywordResults = allEntries.filter((entry) => entry.content.toLowerCase().includes(query.toLowerCase()) ||
54
+ entry.aiTopics.some((topic) => topic.toLowerCase().includes(query.toLowerCase())));
55
+ // Perform semantic search (60% weight)
56
+ const semanticResults = await performClientSideSemanticSearch(allEntries, queryEmbedding, query);
57
+ // Combine results with weighted scoring
58
+ const combinedResults = new Map();
59
+ // Add keyword results with keyword score
60
+ keywordResults.forEach((entry) => {
61
+ const keywordScore = calculateKeywordRelevance(entry, query);
62
+ combinedResults.set(entry.id, {
63
+ ...entry,
64
+ keywordScore,
65
+ semanticScore: 0,
66
+ combinedScore: keywordScore * 0.4
67
+ });
68
+ });
69
+ // Add or update with semantic scores
70
+ semanticResults.forEach((entry) => {
71
+ const existing = combinedResults.get(entry.id);
72
+ const semanticScore = entry.similarity || 0;
73
+ if (existing) {
74
+ // Update existing entry with semantic score
75
+ existing.semanticScore = semanticScore;
76
+ existing.combinedScore = existing.keywordScore * 0.4 + semanticScore * 0.6;
77
+ }
78
+ else {
79
+ // Add new semantic-only result
80
+ combinedResults.set(entry.id, {
81
+ ...entry,
82
+ keywordScore: 0,
83
+ semanticScore,
84
+ combinedScore: semanticScore * 0.6
85
+ });
86
+ }
87
+ });
88
+ // Sort by combined score and return top results
89
+ return Array.from(combinedResults.values())
90
+ .sort((a, b) => b.combinedScore - a.combinedScore)
91
+ .slice(0, 30);
92
+ }
93
+ function calculateKeywordRelevance(entry, query) {
94
+ const queryLower = query.toLowerCase();
95
+ const contentLower = entry.content.toLowerCase();
96
+ let score = 0;
97
+ // Exact phrase match (highest weight)
98
+ if (contentLower.includes(queryLower)) {
99
+ score += 10;
100
+ }
101
+ // Individual word matches
102
+ const queryWords = queryLower.split(/\s+/);
103
+ const contentWords = contentLower.split(/\s+/);
104
+ queryWords.forEach(queryWord => {
105
+ if (queryWord.length > 2) { // Skip very short words
106
+ const matches = contentWords.filter((word) => word.includes(queryWord)).length;
107
+ score += matches * 2;
108
+ }
109
+ });
110
+ // Topic matches
111
+ entry.aiTopics.forEach((topic) => {
112
+ if (topic.toLowerCase().includes(queryLower)) {
113
+ score += 5;
114
+ }
115
+ queryWords.forEach(queryWord => {
116
+ if (queryWord.length > 2 && topic.toLowerCase().includes(queryWord)) {
117
+ score += 3;
118
+ }
119
+ });
120
+ });
121
+ // Normalize score (0-10 scale)
122
+ return Math.min(score / 2, 10);
123
+ }
124
+ //# sourceMappingURL=search-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-helpers.js","sourceRoot":"","sources":["../../src/lib/search-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function searchSecretReferences(query: string): Promise<any[]>;
2
+ //# sourceMappingURL=secret-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secret-helpers.d.ts","sourceRoot":"","sources":["../../src/lib/secret-helpers.ts"],"names":[],"mappings":"AAEA,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAuF1E"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.searchSecretReferences = searchSecretReferences;
4
+ const config_1 = require("../config");
5
+ async function searchSecretReferences(query) {
6
+ try {
7
+ const config = config_1.configManager.getConfig();
8
+ const teamId = config.teamId || 'demo_team';
9
+ // Mock secret discoveries for demo
10
+ const mockDiscoveries = [
11
+ {
12
+ id: 'disc_1',
13
+ secretName: `${teamId}/production/api-key-123456`,
14
+ secretType: 'api_key',
15
+ environment: 'production',
16
+ status: 'discovered',
17
+ riskLevel: 'critical',
18
+ valuePreview: 'tui_***...s0t',
19
+ discoveredBy: 'alice-dev',
20
+ discoveredAt: '2025-01-15',
21
+ description: 'TUI production API key detected in knowledge entry',
22
+ tags: ['tui', 'api', 'production', 'authentication']
23
+ },
24
+ {
25
+ id: 'disc_2',
26
+ secretName: `${teamId}/staging/database-connection-789`,
27
+ secretType: 'connection_string',
28
+ environment: 'staging',
29
+ status: 'approved',
30
+ riskLevel: 'high',
31
+ valuePreview: 'postgres://***...@host',
32
+ discoveredBy: 'bob-dev',
33
+ discoveredAt: '2025-01-14',
34
+ description: 'Database connection string for staging environment',
35
+ tags: ['database', 'postgres', 'staging', 'connection']
36
+ }
37
+ ];
38
+ // Search for matching secrets based on query with intelligent matching
39
+ const lowerQuery = query.toLowerCase();
40
+ return mockDiscoveries.filter(discovery => {
41
+ // Direct matches
42
+ if (discovery.description.toLowerCase().includes(lowerQuery) ||
43
+ discovery.secretName.toLowerCase().includes(lowerQuery) ||
44
+ discovery.tags.some(tag => tag.toLowerCase().includes(lowerQuery)) ||
45
+ discovery.secretType.toLowerCase().includes(lowerQuery)) {
46
+ return true;
47
+ }
48
+ // Intelligent keyword matching for common developer queries
49
+ const queryWords = lowerQuery.split(/\s+/);
50
+ const searchableText = [
51
+ discovery.description,
52
+ discovery.secretName,
53
+ discovery.secretType,
54
+ discovery.environment,
55
+ ...discovery.tags
56
+ ].join(' ').toLowerCase();
57
+ // Check if query contains key terms that match this secret
58
+ const keyTermMatches = queryWords.some(word => {
59
+ // Remove common words that don't help with matching
60
+ if (['what', 'is', 'the', 'our', 'where', 'can', 'i', 'find', 'how', 'do', 'to', 'a', 'an'].includes(word)) {
61
+ return false;
62
+ }
63
+ // Match key terms
64
+ return searchableText.includes(word) ||
65
+ // Handle common variations
66
+ (word === 'key' && searchableText.includes('api')) ||
67
+ (word === 'keys' && searchableText.includes('api')) ||
68
+ (word === 'credential' && searchableText.includes('api')) ||
69
+ (word === 'credentials' && searchableText.includes('api')) ||
70
+ (word === 'password' && searchableText.includes('connection')) ||
71
+ (word === 'connection' && searchableText.includes('database')) ||
72
+ (word === 'connect' && searchableText.includes('database'));
73
+ });
74
+ // Also check for compound matches (e.g., "TUI API" should match TUI + API)
75
+ const hasMultipleMatches = queryWords.filter(word => !['what', 'is', 'the', 'our', 'where', 'can', 'i', 'find', 'how', 'do', 'to', 'a', 'an'].includes(word) &&
76
+ searchableText.includes(word)).length >= 2;
77
+ return keyTermMatches || hasMultipleMatches;
78
+ });
79
+ }
80
+ catch (error) {
81
+ console.warn('Failed to search secret references:', error);
82
+ return [];
83
+ }
84
+ }
85
+ //# sourceMappingURL=secret-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secret-helpers.js","sourceRoot":"","sources":["../../src/lib/secret-helpers.ts"],"names":[],"mappings":"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"}