@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,442 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handler = void 0;
4
+ const client_dynamodb_1 = require("@aws-sdk/client-dynamodb");
5
+ const client_s3_1 = require("@aws-sdk/client-s3");
6
+ const client_cognito_identity_provider_1 = require("@aws-sdk/client-cognito-identity-provider");
7
+ // Initialize AWS clients
8
+ const dynamoClient = new client_dynamodb_1.DynamoDBClient({});
9
+ const s3Client = new client_s3_1.S3Client({});
10
+ const cognitoClient = new client_cognito_identity_provider_1.CognitoIdentityProviderClient({});
11
+ // Cache for user names to avoid repeated Cognito calls
12
+ const userNameCache = new Map();
13
+ // Helper function to decode JWT token (without verification for simplicity)
14
+ function decodeJWT(token) {
15
+ try {
16
+ const parts = token.split('.');
17
+ if (parts.length !== 3)
18
+ return null;
19
+ const payload = Buffer.from(parts[1], 'base64').toString('utf8');
20
+ return JSON.parse(payload);
21
+ }
22
+ catch (error) {
23
+ console.error('Failed to decode JWT:', error);
24
+ return null;
25
+ }
26
+ }
27
+ // Extract user info from Authorization header
28
+ function getUserFromAuth(event) {
29
+ const authHeader = event.headers?.Authorization || event.headers?.authorization;
30
+ if (!authHeader)
31
+ return null;
32
+ const token = authHeader.replace('Bearer ', '');
33
+ const decoded = decodeJWT(token);
34
+ if (!decoded || !decoded.sub)
35
+ return null;
36
+ return {
37
+ userId: decoded.sub,
38
+ teamId: decoded['custom:team_id'] || 'default'
39
+ };
40
+ }
41
+ // Fetch user name from Cognito with caching
42
+ async function getUserName(userId) {
43
+ // Check cache first
44
+ if (userNameCache.has(userId)) {
45
+ return userNameCache.get(userId);
46
+ }
47
+ try {
48
+ const response = await cognitoClient.send(new client_cognito_identity_provider_1.AdminGetUserCommand({
49
+ UserPoolId: process.env.USER_POOL_ID,
50
+ Username: userId,
51
+ }));
52
+ // Use the username from Cognito
53
+ const userName = response.Username || userId;
54
+ userNameCache.set(userId, userName);
55
+ return userName;
56
+ }
57
+ catch (error) {
58
+ console.warn(`Failed to fetch user name for ${userId}:`, error);
59
+ userNameCache.set(userId, userId);
60
+ return userId;
61
+ }
62
+ }
63
+ const handler = async (event) => {
64
+ const headers = {
65
+ 'Content-Type': 'application/json',
66
+ 'Access-Control-Allow-Origin': '*',
67
+ 'Access-Control-Allow-Headers': '*',
68
+ 'Access-Control-Allow-Methods': 'GET,POST,PUT,DELETE,OPTIONS',
69
+ };
70
+ try {
71
+ const { httpMethod, path, queryStringParameters } = event;
72
+ // Handle CORS preflight
73
+ if (httpMethod === 'OPTIONS') {
74
+ return {
75
+ statusCode: 200,
76
+ headers,
77
+ body: '',
78
+ };
79
+ }
80
+ // For non-OPTIONS requests, extract user from token if available
81
+ const userInfo = getUserFromAuth(event);
82
+ // Allow unauthenticated access for demo purposes (competition demo)
83
+ const effectiveTeamId = userInfo?.teamId || 'default';
84
+ const userId = userInfo?.userId;
85
+ console.log('Request context:', {
86
+ httpMethod,
87
+ path,
88
+ resource: event.resource,
89
+ pathParameters: event.pathParameters,
90
+ hasAuthorizer: !!event.requestContext.authorizer,
91
+ userId,
92
+ effectiveTeamId
93
+ });
94
+ switch (httpMethod) {
95
+ case 'GET':
96
+ // Handle GET requests to /graph resource
97
+ const format = queryStringParameters?.format || 'json';
98
+ const filter = queryStringParameters?.filter;
99
+ return await buildKnowledgeGraph(effectiveTeamId, format, filter);
100
+ case 'POST':
101
+ // Handle POST requests for rebuild operations
102
+ if (event.resource === '/graph/rebuild' || path.endsWith('/rebuild')) {
103
+ // For rebuild operations, we can still allow demo access for competition purposes
104
+ return await rebuildKnowledgeGraph(effectiveTeamId);
105
+ }
106
+ return {
107
+ statusCode: 404,
108
+ headers,
109
+ body: JSON.stringify({ error: 'Not found' }),
110
+ };
111
+ default:
112
+ return {
113
+ statusCode: 405,
114
+ headers,
115
+ body: JSON.stringify({ error: 'Method not allowed' }),
116
+ };
117
+ }
118
+ return {
119
+ statusCode: 404,
120
+ headers,
121
+ body: JSON.stringify({ error: 'Not found' }),
122
+ };
123
+ }
124
+ catch (error) {
125
+ console.error('Graph Builder Lambda error:', error);
126
+ return {
127
+ statusCode: 500,
128
+ headers,
129
+ body: JSON.stringify({
130
+ error: 'Internal server error',
131
+ message: error instanceof Error ? error.message : 'Unknown error'
132
+ }),
133
+ };
134
+ }
135
+ };
136
+ exports.handler = handler;
137
+ async function buildKnowledgeGraph(teamId, format = 'json', filter) {
138
+ const headers = {
139
+ 'Content-Type': 'application/json',
140
+ 'Access-Control-Allow-Origin': '*',
141
+ };
142
+ try {
143
+ // Query all knowledge entries and relationships for the team
144
+ // Try team-specific data first, fallback to default if empty
145
+ let entriesResult = await dynamoClient.send(new client_dynamodb_1.QueryCommand({
146
+ TableName: process.env.KNOWLEDGE_GRAPH_TABLE,
147
+ KeyConditionExpression: 'team_id = :teamId',
148
+ ExpressionAttributeValues: {
149
+ ':teamId': { S: teamId },
150
+ },
151
+ }));
152
+ // If no results and not querying default, try default team
153
+ if ((!entriesResult.Items || entriesResult.Items.length === 0) && teamId !== 'default') {
154
+ console.log(`No data for team ${teamId}, falling back to default team`);
155
+ entriesResult = await dynamoClient.send(new client_dynamodb_1.QueryCommand({
156
+ TableName: process.env.KNOWLEDGE_GRAPH_TABLE,
157
+ KeyConditionExpression: 'team_id = :teamId',
158
+ ExpressionAttributeValues: {
159
+ ':teamId': { S: 'default' },
160
+ },
161
+ }));
162
+ }
163
+ const nodes = [];
164
+ const edges = [];
165
+ const topicMap = new Map();
166
+ const authorMap = new Map();
167
+ if (entriesResult.Items) {
168
+ for (const item of entriesResult.Items) {
169
+ const relationshipId = item.relationship_id?.S || '';
170
+ if (relationshipId.startsWith('entry-')) {
171
+ // Process knowledge entry
172
+ const entryData = item.entry_data?.S;
173
+ if (entryData) {
174
+ try {
175
+ const entry = JSON.parse(entryData);
176
+ // Create entry node
177
+ const entryNode = {
178
+ id: entry.id,
179
+ type: 'entry',
180
+ label: entry.content.substring(0, 50) + '...',
181
+ properties: {
182
+ content: entry.content,
183
+ authorId: entry.authorId,
184
+ createdAt: entry.createdAt,
185
+ topics: entry.aiTopics,
186
+ impactScore: entry.impactScore,
187
+ expertiseLevel: entry.expertiseLevel,
188
+ },
189
+ };
190
+ // Apply filter if specified
191
+ if (!filter || passesFilter(entryNode, filter)) {
192
+ nodes.push(entryNode);
193
+ // Track author
194
+ if (!authorMap.has(entry.authorId)) {
195
+ const userName = await getUserName(entry.authorId);
196
+ authorMap.set(entry.authorId, {
197
+ name: userName,
198
+ entryCount: 0,
199
+ });
200
+ }
201
+ authorMap.get(entry.authorId).entryCount++;
202
+ // Create author edge
203
+ edges.push({
204
+ id: `author-${entry.authorId}-${entry.id}`,
205
+ source: entry.authorId,
206
+ target: entry.id,
207
+ type: 'authored_by',
208
+ strength: 1.0,
209
+ properties: {
210
+ createdAt: entry.createdAt,
211
+ },
212
+ });
213
+ // Process topics
214
+ for (const topic of entry.aiTopics) {
215
+ if (!topicMap.has(topic)) {
216
+ topicMap.set(topic, { entryCount: 0, experts: new Set() });
217
+ }
218
+ const topicData = topicMap.get(topic);
219
+ topicData.entryCount++;
220
+ topicData.experts.add(entry.authorId);
221
+ // Create topic edge
222
+ edges.push({
223
+ id: `topic-${topic}-${entry.id}`,
224
+ source: entry.id,
225
+ target: topic,
226
+ type: 'tagged_with',
227
+ strength: entry.impactScore / 10,
228
+ properties: {
229
+ expertiseLevel: entry.expertiseLevel,
230
+ },
231
+ });
232
+ }
233
+ }
234
+ }
235
+ catch (e) {
236
+ console.warn('Failed to parse entry data:', e);
237
+ }
238
+ }
239
+ }
240
+ }
241
+ }
242
+ // Create author nodes
243
+ for (const [authorId, authorData] of authorMap.entries()) {
244
+ nodes.push({
245
+ id: authorId,
246
+ type: 'person',
247
+ label: authorData.name,
248
+ properties: {
249
+ entryCount: authorData.entryCount,
250
+ expertise: Array.from(topicMap.entries())
251
+ .filter(([_, data]) => data.experts.has(authorId))
252
+ .map(([topic, _]) => topic),
253
+ },
254
+ });
255
+ }
256
+ // Create topic nodes
257
+ for (const [topic, topicData] of topicMap.entries()) {
258
+ nodes.push({
259
+ id: topic,
260
+ type: 'topic',
261
+ label: topic.charAt(0).toUpperCase() + topic.slice(1),
262
+ properties: {
263
+ entryCount: topicData.entryCount,
264
+ expertCount: topicData.experts.size,
265
+ experts: Array.from(topicData.experts),
266
+ },
267
+ });
268
+ }
269
+ // Create relationships between related entries
270
+ const entryNodes = nodes.filter(n => n.type === 'entry');
271
+ for (let i = 0; i < entryNodes.length; i++) {
272
+ for (let j = i + 1; j < entryNodes.length; j++) {
273
+ const entry1 = entryNodes[i];
274
+ const entry2 = entryNodes[j];
275
+ // Calculate relatedness based on shared topics
276
+ const topics1 = new Set(entry1.properties.topics);
277
+ const topics2 = new Set(entry2.properties.topics);
278
+ const sharedTopics = Array.from(topics1).filter(t => topics2.has(t));
279
+ if (sharedTopics.length > 0) {
280
+ const strength = sharedTopics.length / Math.max(topics1.size, topics2.size);
281
+ if (strength > 0.3) { // Only create edge if sufficiently related
282
+ edges.push({
283
+ id: `relates-${entry1.id}-${entry2.id}`,
284
+ source: entry1.id,
285
+ target: entry2.id,
286
+ type: 'relates_to',
287
+ strength,
288
+ properties: {
289
+ sharedTopics,
290
+ relationshipType: 'topic_similarity',
291
+ },
292
+ });
293
+ }
294
+ }
295
+ }
296
+ }
297
+ // Generate metadata
298
+ const topTopics = Array.from(topicMap.entries())
299
+ .sort((a, b) => b[1].entryCount - a[1].entryCount)
300
+ .slice(0, 10)
301
+ .map(([topic, _]) => topic);
302
+ const expertiseAreas = Array.from(topicMap.entries())
303
+ .map(([topic, data]) => ({
304
+ topic,
305
+ expertCount: data.experts.size,
306
+ entryCount: data.entryCount,
307
+ }))
308
+ .sort((a, b) => b.entryCount - a.entryCount);
309
+ const knowledgeGraph = {
310
+ nodes,
311
+ edges,
312
+ metadata: {
313
+ teamId,
314
+ generatedAt: new Date().toISOString(),
315
+ totalNodes: nodes.length,
316
+ totalEdges: edges.length,
317
+ topTopics,
318
+ expertiseAreas,
319
+ },
320
+ };
321
+ // Store graph in S3 for caching
322
+ await s3Client.send(new client_s3_1.PutObjectCommand({
323
+ Bucket: process.env.WEB_BUCKET,
324
+ Key: `graphs/${teamId}/knowledge-graph.json`,
325
+ Body: JSON.stringify(knowledgeGraph, null, 2),
326
+ ContentType: 'application/json',
327
+ }));
328
+ // Return appropriate format
329
+ if (format === 'cytoscape') {
330
+ const cytoscapeFormat = {
331
+ elements: [
332
+ ...nodes.map(node => ({
333
+ data: {
334
+ id: node.id,
335
+ label: node.label,
336
+ type: node.type,
337
+ ...node.properties,
338
+ },
339
+ })),
340
+ ...edges.map(edge => ({
341
+ data: {
342
+ id: edge.id,
343
+ source: edge.source,
344
+ target: edge.target,
345
+ type: edge.type,
346
+ strength: edge.strength,
347
+ ...edge.properties,
348
+ },
349
+ })),
350
+ ],
351
+ metadata: knowledgeGraph.metadata,
352
+ };
353
+ return {
354
+ statusCode: 200,
355
+ headers,
356
+ body: JSON.stringify({
357
+ success: true,
358
+ graph: cytoscapeFormat,
359
+ format: 'cytoscape',
360
+ }),
361
+ };
362
+ }
363
+ return {
364
+ statusCode: 200,
365
+ headers,
366
+ body: JSON.stringify({
367
+ success: true,
368
+ graph: knowledgeGraph,
369
+ format: 'json',
370
+ }),
371
+ };
372
+ }
373
+ catch (error) {
374
+ console.error('Error building knowledge graph:', error);
375
+ return {
376
+ statusCode: 500,
377
+ headers,
378
+ body: JSON.stringify({
379
+ error: 'Failed to build knowledge graph',
380
+ message: error instanceof Error ? error.message : 'Unknown error',
381
+ }),
382
+ };
383
+ }
384
+ }
385
+ async function rebuildKnowledgeGraph(teamId) {
386
+ const headers = {
387
+ 'Content-Type': 'application/json',
388
+ 'Access-Control-Allow-Origin': '*',
389
+ };
390
+ try {
391
+ // Trigger a full rebuild of the knowledge graph
392
+ const result = await buildKnowledgeGraph(teamId, 'json');
393
+ if (result.statusCode === 200) {
394
+ return {
395
+ statusCode: 200,
396
+ headers,
397
+ body: JSON.stringify({
398
+ success: true,
399
+ message: 'Knowledge graph rebuilt successfully',
400
+ rebuiltAt: new Date().toISOString(),
401
+ }),
402
+ };
403
+ }
404
+ else {
405
+ return result;
406
+ }
407
+ }
408
+ catch (error) {
409
+ console.error('Error rebuilding knowledge graph:', error);
410
+ return {
411
+ statusCode: 500,
412
+ headers,
413
+ body: JSON.stringify({
414
+ error: 'Failed to rebuild knowledge graph',
415
+ message: error instanceof Error ? error.message : 'Unknown error',
416
+ }),
417
+ };
418
+ }
419
+ }
420
+ function passesFilter(node, filter) {
421
+ const filterLower = filter.toLowerCase();
422
+ // Check node label
423
+ if (node.label.toLowerCase().includes(filterLower)) {
424
+ return true;
425
+ }
426
+ // Check node properties
427
+ if (node.type === 'entry') {
428
+ const content = node.properties.content?.toLowerCase() || '';
429
+ const topics = node.properties.topics || [];
430
+ if (content.includes(filterLower)) {
431
+ return true;
432
+ }
433
+ if (topics.some((topic) => topic.toLowerCase().includes(filterLower))) {
434
+ return true;
435
+ }
436
+ }
437
+ if (node.type === 'topic') {
438
+ return node.id.toLowerCase().includes(filterLower);
439
+ }
440
+ return false;
441
+ }
442
+ //# sourceMappingURL=graph-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph-builder.js","sourceRoot":"","sources":["../../src/lambda/graph-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { APIGatewayProxyEvent, APIGatewayProxyResult } from 'aws-lambda';
2
+ export declare const handler: (event: APIGatewayProxyEvent) => Promise<APIGatewayProxyResult>;
3
+ //# sourceMappingURL=knowledge-ai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-ai.d.ts","sourceRoot":"","sources":["../../src/lambda/knowledge-ai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AA6SzE,eAAO,MAAM,OAAO,GAClB,OAAO,oBAAoB,KAC1B,OAAO,CAAC,qBAAqB,CAsE/B,CAAC"}