@equilateral_ai/mindmeld 3.5.2 → 4.0.1

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 (140) hide show
  1. package/hooks/session-end.js +25 -0
  2. package/hooks/session-start.js +363 -83
  3. package/hooks/session-watcher.js +585 -0
  4. package/package.json +19 -13
  5. package/scripts/init-project.js +9 -23
  6. package/src/client/dbShim.js +16 -0
  7. package/src/core/AuthManager.js +3 -2
  8. package/src/handlers/helpers/dbOperations.js +9 -46
  9. package/src/index.js +2 -217
  10. package/src/utils/piiMask.js +16 -0
  11. package/scripts/harvest.js +0 -601
  12. package/scripts/inject.js +0 -409
  13. package/scripts/mcp-bridge.js +0 -220
  14. package/scripts/repo-analyzer.js +0 -870
  15. package/src/collaboration/CollaborationPrompt.js +0 -460
  16. package/src/core/AlertEngine.js +0 -813
  17. package/src/core/AlertNotifier.js +0 -363
  18. package/src/core/CorrelationAnalyzer.js +0 -931
  19. package/src/core/CrossReferenceEngine.js +0 -624
  20. package/src/core/CurationEngine.js +0 -688
  21. package/src/core/DeprecationScheduler.js +0 -183
  22. package/src/core/LoadBearingDetector.js +0 -242
  23. package/src/core/NotificationService.js +0 -1032
  24. package/src/core/RapportOrchestrator.js +0 -632
  25. package/src/core/RelevanceDetector.js +0 -694
  26. package/src/core/StandardLifecycle.js +0 -244
  27. package/src/core/StandardsIngestion.js +0 -991
  28. package/src/core/TeamLoadBearingDetector.js +0 -431
  29. package/src/core/parsers/adrParser.js +0 -479
  30. package/src/core/parsers/cursorRulesParser.js +0 -564
  31. package/src/core/parsers/eslintParser.js +0 -439
  32. package/src/database/dbOperations.js +0 -105
  33. package/src/handlers/activity/activityGetMe.js +0 -98
  34. package/src/handlers/activity/activityGetTeam.js +0 -175
  35. package/src/handlers/admin/adminSetup.js +0 -216
  36. package/src/handlers/alerts/alertsAcknowledge.js +0 -92
  37. package/src/handlers/alerts/alertsGet.js +0 -250
  38. package/src/handlers/analytics/activitySummaryGet.js +0 -234
  39. package/src/handlers/analytics/coachingGet.js +0 -361
  40. package/src/handlers/analytics/convergenceGet.js +0 -236
  41. package/src/handlers/analytics/developerScoreGet.js +0 -137
  42. package/src/handlers/collaborators/collaboratorAdd.js +0 -200
  43. package/src/handlers/collaborators/collaboratorInvite.js +0 -219
  44. package/src/handlers/collaborators/collaboratorList.js +0 -82
  45. package/src/handlers/collaborators/collaboratorRemove.js +0 -128
  46. package/src/handlers/collaborators/inviteAccept.js +0 -122
  47. package/src/handlers/company/companyUsersDelete.js +0 -141
  48. package/src/handlers/company/companyUsersGet.js +0 -90
  49. package/src/handlers/company/companyUsersPost.js +0 -267
  50. package/src/handlers/company/companyUsersPut.js +0 -76
  51. package/src/handlers/context/contextGet.js +0 -57
  52. package/src/handlers/context/invariantsGet.js +0 -74
  53. package/src/handlers/context/loopsGet.js +0 -82
  54. package/src/handlers/context/notesCreate.js +0 -74
  55. package/src/handlers/context/purposeGet.js +0 -78
  56. package/src/handlers/correlations/correlationsDeveloperGet.js +0 -227
  57. package/src/handlers/correlations/correlationsGet.js +0 -93
  58. package/src/handlers/correlations/correlationsProjectGet.js +0 -153
  59. package/src/handlers/enterprise/controlTowerGet.js +0 -224
  60. package/src/handlers/enterprise/enterpriseAuditGet.js +0 -108
  61. package/src/handlers/enterprise/enterpriseContributorsGet.js +0 -85
  62. package/src/handlers/enterprise/enterpriseKnowledgeCategoriesGet.js +0 -53
  63. package/src/handlers/enterprise/enterpriseKnowledgeCreate.js +0 -77
  64. package/src/handlers/enterprise/enterpriseKnowledgeDelete.js +0 -71
  65. package/src/handlers/enterprise/enterpriseKnowledgeGet.js +0 -87
  66. package/src/handlers/enterprise/enterpriseKnowledgeUpdate.js +0 -122
  67. package/src/handlers/enterprise/enterpriseOnboardingComplete.js +0 -77
  68. package/src/handlers/enterprise/enterpriseOnboardingInvite.js +0 -138
  69. package/src/handlers/enterprise/enterpriseOnboardingSetup.js +0 -128
  70. package/src/handlers/enterprise/enterpriseOnboardingStatus.js +0 -88
  71. package/src/handlers/github/githubConnectionStatus.js +0 -49
  72. package/src/handlers/github/githubDiscoverPatterns.js +0 -621
  73. package/src/handlers/github/githubOAuthCallback.js +0 -178
  74. package/src/handlers/github/githubOAuthStart.js +0 -59
  75. package/src/handlers/github/githubPatternsReview.js +0 -76
  76. package/src/handlers/github/githubReposList.js +0 -105
  77. package/src/handlers/health/healthGet.js +0 -55
  78. package/src/handlers/helpers/auditLogger.js +0 -201
  79. package/src/handlers/helpers/checkSuperAdmin.js +0 -84
  80. package/src/handlers/helpers/decisionFrames.js +0 -29
  81. package/src/handlers/helpers/errorHandler.js +0 -49
  82. package/src/handlers/helpers/index.js +0 -138
  83. package/src/handlers/helpers/lambdaWrapper.js +0 -60
  84. package/src/handlers/helpers/mindmeldMcpCore.js +0 -1103
  85. package/src/handlers/helpers/predictiveCache.js +0 -51
  86. package/src/handlers/helpers/projectAccess.js +0 -88
  87. package/src/handlers/helpers/responseUtil.js +0 -55
  88. package/src/handlers/helpers/subscriptionTiers.js +0 -1168
  89. package/src/handlers/mcp/mcpHandler.js +0 -569
  90. package/src/handlers/mcp/mindmeldMcpHandler.js +0 -124
  91. package/src/handlers/mcp/mindmeldMcpStreamHandler.js +0 -342
  92. package/src/handlers/notifications/getPreferences.js +0 -84
  93. package/src/handlers/notifications/sendNotification.js +0 -170
  94. package/src/handlers/notifications/updatePreferences.js +0 -316
  95. package/src/handlers/patterns/patternEvaluatePromotionPost.js +0 -173
  96. package/src/handlers/patterns/patternUsagePost.js +0 -182
  97. package/src/handlers/patterns/patternViolationPost.js +0 -185
  98. package/src/handlers/projects/projectCreate.js +0 -248
  99. package/src/handlers/projects/projectDelete.js +0 -82
  100. package/src/handlers/projects/projectGet.js +0 -95
  101. package/src/handlers/projects/projectUpdate.js +0 -117
  102. package/src/handlers/reports/aiLeverage.js +0 -210
  103. package/src/handlers/reports/engineeringInvestment.js +0 -132
  104. package/src/handlers/reports/riskForecast.js +0 -206
  105. package/src/handlers/reports/standardsRoi.js +0 -254
  106. package/src/handlers/scheduled/analyzeCorrelations.js +0 -178
  107. package/src/handlers/scheduled/analyzeGitHistory.js +0 -510
  108. package/src/handlers/scheduled/generateAlerts.js +0 -135
  109. package/src/handlers/scheduled/maturityUpdateJob.js +0 -166
  110. package/src/handlers/scheduled/refreshActivity.js +0 -21
  111. package/src/handlers/scheduled/scanCompliance.js +0 -334
  112. package/src/handlers/sessions/sessionEndPost.js +0 -180
  113. package/src/handlers/sessions/sessionStandardsPost.js +0 -171
  114. package/src/handlers/standards/catalogGet.js +0 -185
  115. package/src/handlers/standards/catalogSync.js +0 -120
  116. package/src/handlers/standards/discoveriesGet.js +0 -89
  117. package/src/handlers/standards/projectStandardsGet.js +0 -129
  118. package/src/handlers/standards/projectStandardsPut.js +0 -151
  119. package/src/handlers/standards/standardsAuditGet.js +0 -65
  120. package/src/handlers/standards/standardsParseUpload.js +0 -149
  121. package/src/handlers/standards/standardsRelevantPost.js +0 -405
  122. package/src/handlers/standards/standardsTransition.js +0 -161
  123. package/src/handlers/stripe/addonManagePost.js +0 -240
  124. package/src/handlers/stripe/billingPortalPost.js +0 -93
  125. package/src/handlers/stripe/enterpriseCheckoutPost.js +0 -272
  126. package/src/handlers/stripe/seatsUpdatePost.js +0 -185
  127. package/src/handlers/stripe/subscriptionCancelDelete.js +0 -169
  128. package/src/handlers/stripe/subscriptionCreatePost.js +0 -221
  129. package/src/handlers/stripe/subscriptionUpdatePut.js +0 -163
  130. package/src/handlers/stripe/webhookPost.js +0 -482
  131. package/src/handlers/user/apiTokenCreate.js +0 -71
  132. package/src/handlers/user/apiTokenList.js +0 -64
  133. package/src/handlers/user/userSplashAck.js +0 -91
  134. package/src/handlers/user/userSplashGet.js +0 -211
  135. package/src/handlers/users/cognitoPostConfirmation.js +0 -186
  136. package/src/handlers/users/cognitoPreSignUp.js +0 -114
  137. package/src/handlers/users/userEntitlementsGet.js +0 -89
  138. package/src/handlers/users/userGet.js +0 -118
  139. package/src/handlers/users/userProfilePut.js +0 -77
  140. package/src/handlers/webhooks/githubWebhook.js +0 -215
@@ -1,51 +0,0 @@
1
- const { executeQuery } = require('./index');
2
-
3
- /**
4
- * Get standards that are consistently relevant for a project (>80% activation rate over 30 days)
5
- */
6
- async function getPredictedStandards(projectId) {
7
- const result = await executeQuery(`
8
- WITH activation_stats AS (
9
- SELECT
10
- standard_id,
11
- COUNT(*) as activation_count,
12
- COUNT(DISTINCT DATE(activated_at)) as active_days
13
- FROM rapport.standards_activation_log
14
- WHERE project_id = $1
15
- AND activated_at > NOW() - INTERVAL '30 days'
16
- GROUP BY standard_id
17
- ),
18
- total_sessions AS (
19
- SELECT COUNT(DISTINCT DATE(activated_at)) as total_days
20
- FROM rapport.standards_activation_log
21
- WHERE project_id = $1
22
- AND activated_at > NOW() - INTERVAL '30 days'
23
- )
24
- SELECT a.standard_id,
25
- a.activation_count,
26
- a.active_days,
27
- t.total_days,
28
- CASE WHEN t.total_days > 0
29
- THEN ROUND(a.active_days::numeric / t.total_days * 100, 1)
30
- ELSE 0 END as activation_rate
31
- FROM activation_stats a, total_sessions t
32
- WHERE t.total_days >= 5
33
- AND a.active_days::numeric / GREATEST(t.total_days, 1) > 0.8
34
- ORDER BY activation_rate DESC
35
- `, [projectId]);
36
- return result.rows;
37
- }
38
-
39
- /**
40
- * Log which standards were activated for a project
41
- */
42
- async function logStandardsActivation(projectId, standardIds) {
43
- if (!standardIds || standardIds.length === 0) return;
44
- const values = standardIds.map((id, i) => `($1, $${i + 2})`).join(', ');
45
- await executeQuery(
46
- `INSERT INTO rapport.standards_activation_log (project_id, standard_id) VALUES ${values}`,
47
- [projectId, ...standardIds]
48
- );
49
- }
50
-
51
- module.exports = { getPredictedStandards, logStandardsActivation };
@@ -1,88 +0,0 @@
1
- /**
2
- * Project Access Verification
3
- *
4
- * Centralizes the "can this user access this project?" check.
5
- * Grants access if the user is either:
6
- * 1. A direct project collaborator (rapport.project_collaborators)
7
- * 2. A member of the company that owns the project (rapport.user_entitlements)
8
- *
9
- * Returns the project row (project_id, project_name, company_id) on success,
10
- * or null if the user has no access.
11
- */
12
-
13
- const { executeQuery } = require('./dbOperations');
14
-
15
- /**
16
- * Verify a user has access to a project via collaborator role or company membership.
17
- * @param {string} projectId - Project ID to check
18
- * @param {string} email - User's email address
19
- * @returns {Promise<{project_id: string, project_name: string, company_id: string, access_type: string}|null>}
20
- * Project row with access_type ('collaborator' or 'company_member'), or null if no access.
21
- */
22
- async function verifyProjectAccess(projectId, email) {
23
- const result = await executeQuery(`
24
- SELECT
25
- p.project_id,
26
- p.project_name,
27
- p.company_id,
28
- CASE
29
- WHEN pc.email_address IS NOT NULL THEN 'collaborator'
30
- WHEN ue.email_address IS NOT NULL THEN 'company_member'
31
- END as access_type
32
- FROM rapport.projects p
33
- LEFT JOIN rapport.project_collaborators pc
34
- ON p.project_id = pc.project_id
35
- AND pc.email_address = $2
36
- LEFT JOIN rapport.user_entitlements ue
37
- ON p.company_id = ue.company_id
38
- AND ue.email_address = $2
39
- WHERE p.project_id = $1
40
- AND (pc.email_address IS NOT NULL OR ue.email_address IS NOT NULL)
41
- LIMIT 1
42
- `, [projectId, email]);
43
-
44
- return result.rows.length > 0 ? result.rows[0] : null;
45
- }
46
-
47
- /**
48
- * Verify a user has a specific collaborator role on a project,
49
- * OR is a company admin (which grants equivalent access).
50
- * @param {string} projectId - Project ID to check
51
- * @param {string} email - User's email address
52
- * @param {string[]} allowedRoles - Collaborator roles that grant access (e.g. ['owner', 'admin'])
53
- * @returns {Promise<{project_id: string, project_name: string, company_id: string, role: string|null, company_admin: boolean}|null>}
54
- */
55
- async function verifyProjectRole(projectId, email, allowedRoles = ['owner', 'admin', 'collaborator']) {
56
- const result = await executeQuery(`
57
- SELECT
58
- p.project_id,
59
- p.project_name,
60
- p.company_id,
61
- pc.role,
62
- COALESCE(ue.admin, false) as company_admin
63
- FROM rapport.projects p
64
- LEFT JOIN rapport.project_collaborators pc
65
- ON p.project_id = pc.project_id
66
- AND pc.email_address = $2
67
- LEFT JOIN rapport.user_entitlements ue
68
- ON p.company_id = ue.company_id
69
- AND ue.email_address = $2
70
- WHERE p.project_id = $1
71
- AND (pc.email_address IS NOT NULL OR ue.email_address IS NOT NULL)
72
- LIMIT 1
73
- `, [projectId, email]);
74
-
75
- if (result.rows.length === 0) return null;
76
-
77
- const row = result.rows[0];
78
- const hasRole = row.role && allowedRoles.includes(row.role);
79
- const isCompanyAdmin = row.company_admin === true;
80
-
81
- if (hasRole || isCompanyAdmin) {
82
- return row;
83
- }
84
-
85
- return null;
86
- }
87
-
88
- module.exports = { verifyProjectAccess, verifyProjectRole };
@@ -1,55 +0,0 @@
1
- /**
2
- * Response Utility Helper
3
- * Standard response formatting for all Rapport handlers
4
- */
5
-
6
- /**
7
- * Create success response
8
- * @param {object} data - Response data (should include Records array)
9
- * @param {string} message - Success message
10
- * @param {object} meta - Metadata (Total_Records, Request_ID, etc.)
11
- * @returns {object} Lambda response
12
- */
13
- function createSuccessResponse(data, message, meta = {}) {
14
- return {
15
- statusCode: 200,
16
- headers: {
17
- 'Content-Type': 'application/json',
18
- 'Access-Control-Allow-Origin': '*',
19
- 'Access-Control-Allow-Methods': 'GET,POST,PUT,DELETE,OPTIONS',
20
- 'Access-Control-Allow-Headers': 'Content-Type,Authorization'
21
- },
22
- body: JSON.stringify({
23
- success: true,
24
- message,
25
- data,
26
- meta
27
- })
28
- };
29
- }
30
-
31
- /**
32
- * Create error response
33
- * @param {number} statusCode - HTTP status code
34
- * @param {string} message - Error message
35
- * @param {object} details - Additional error details
36
- * @returns {object} Lambda response
37
- */
38
- function createErrorResponse(statusCode, message, details = {}) {
39
- return {
40
- statusCode,
41
- headers: {
42
- 'Content-Type': 'application/json',
43
- 'Access-Control-Allow-Origin': '*',
44
- 'Access-Control-Allow-Methods': 'GET,POST,PUT,DELETE,OPTIONS',
45
- 'Access-Control-Allow-Headers': 'Content-Type,Authorization'
46
- },
47
- body: JSON.stringify({
48
- success: false,
49
- message,
50
- details
51
- })
52
- };
53
- }
54
-
55
- module.exports = { createSuccessResponse, createErrorResponse };