@equilateral_ai/mindmeld 3.5.3 → 4.0.2

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 (138) hide show
  1. package/hooks/session-start.js +312 -85
  2. package/package.json +21 -13
  3. package/scripts/init-project.js +9 -23
  4. package/scripts/repo-analyzer.js +118 -2
  5. package/src/client/dbShim.js +16 -0
  6. package/src/core/AuthManager.js +3 -2
  7. package/src/handlers/helpers/dbOperations.js +9 -46
  8. package/src/index.js +2 -217
  9. package/src/utils/piiMask.js +16 -0
  10. package/scripts/inject.js +0 -409
  11. package/scripts/mcp-bridge.js +0 -220
  12. package/scripts/standards.js +0 -285
  13. package/src/collaboration/CollaborationPrompt.js +0 -460
  14. package/src/core/AlertEngine.js +0 -813
  15. package/src/core/AlertNotifier.js +0 -363
  16. package/src/core/CorrelationAnalyzer.js +0 -931
  17. package/src/core/CrossReferenceEngine.js +0 -624
  18. package/src/core/CurationEngine.js +0 -688
  19. package/src/core/DeprecationScheduler.js +0 -183
  20. package/src/core/LoadBearingDetector.js +0 -242
  21. package/src/core/NotificationService.js +0 -1032
  22. package/src/core/RapportOrchestrator.js +0 -632
  23. package/src/core/RelevanceDetector.js +0 -694
  24. package/src/core/StandardLifecycle.js +0 -244
  25. package/src/core/StandardsIngestion.js +0 -991
  26. package/src/core/TeamLoadBearingDetector.js +0 -431
  27. package/src/core/parsers/adrParser.js +0 -479
  28. package/src/core/parsers/cursorRulesParser.js +0 -564
  29. package/src/core/parsers/eslintParser.js +0 -439
  30. package/src/database/dbOperations.js +0 -105
  31. package/src/handlers/activity/activityGetMe.js +0 -98
  32. package/src/handlers/activity/activityGetTeam.js +0 -175
  33. package/src/handlers/admin/adminSetup.js +0 -216
  34. package/src/handlers/alerts/alertsAcknowledge.js +0 -92
  35. package/src/handlers/alerts/alertsGet.js +0 -250
  36. package/src/handlers/analytics/activitySummaryGet.js +0 -234
  37. package/src/handlers/analytics/coachingGet.js +0 -361
  38. package/src/handlers/analytics/convergenceGet.js +0 -236
  39. package/src/handlers/analytics/developerScoreGet.js +0 -137
  40. package/src/handlers/collaborators/collaboratorAdd.js +0 -200
  41. package/src/handlers/collaborators/collaboratorInvite.js +0 -219
  42. package/src/handlers/collaborators/collaboratorList.js +0 -82
  43. package/src/handlers/collaborators/collaboratorRemove.js +0 -128
  44. package/src/handlers/collaborators/inviteAccept.js +0 -122
  45. package/src/handlers/company/companyUsersDelete.js +0 -141
  46. package/src/handlers/company/companyUsersGet.js +0 -90
  47. package/src/handlers/company/companyUsersPost.js +0 -267
  48. package/src/handlers/company/companyUsersPut.js +0 -76
  49. package/src/handlers/context/contextGet.js +0 -57
  50. package/src/handlers/context/invariantsGet.js +0 -74
  51. package/src/handlers/context/loopsGet.js +0 -82
  52. package/src/handlers/context/notesCreate.js +0 -74
  53. package/src/handlers/context/purposeGet.js +0 -78
  54. package/src/handlers/correlations/correlationsDeveloperGet.js +0 -227
  55. package/src/handlers/correlations/correlationsGet.js +0 -93
  56. package/src/handlers/correlations/correlationsProjectGet.js +0 -153
  57. package/src/handlers/enterprise/controlTowerGet.js +0 -224
  58. package/src/handlers/enterprise/enterpriseAuditGet.js +0 -108
  59. package/src/handlers/enterprise/enterpriseContributorsGet.js +0 -85
  60. package/src/handlers/enterprise/enterpriseKnowledgeCategoriesGet.js +0 -53
  61. package/src/handlers/enterprise/enterpriseKnowledgeCreate.js +0 -77
  62. package/src/handlers/enterprise/enterpriseKnowledgeDelete.js +0 -71
  63. package/src/handlers/enterprise/enterpriseKnowledgeGet.js +0 -87
  64. package/src/handlers/enterprise/enterpriseKnowledgeUpdate.js +0 -122
  65. package/src/handlers/enterprise/enterpriseOnboardingComplete.js +0 -77
  66. package/src/handlers/enterprise/enterpriseOnboardingInvite.js +0 -138
  67. package/src/handlers/enterprise/enterpriseOnboardingSetup.js +0 -128
  68. package/src/handlers/enterprise/enterpriseOnboardingStatus.js +0 -88
  69. package/src/handlers/github/githubConnectionStatus.js +0 -49
  70. package/src/handlers/github/githubDiscoverPatterns.js +0 -621
  71. package/src/handlers/github/githubOAuthCallback.js +0 -178
  72. package/src/handlers/github/githubOAuthStart.js +0 -59
  73. package/src/handlers/github/githubPatternsReview.js +0 -76
  74. package/src/handlers/github/githubReposList.js +0 -105
  75. package/src/handlers/health/healthGet.js +0 -55
  76. package/src/handlers/helpers/auditLogger.js +0 -201
  77. package/src/handlers/helpers/checkSuperAdmin.js +0 -84
  78. package/src/handlers/helpers/decisionFrames.js +0 -29
  79. package/src/handlers/helpers/errorHandler.js +0 -49
  80. package/src/handlers/helpers/index.js +0 -138
  81. package/src/handlers/helpers/lambdaWrapper.js +0 -60
  82. package/src/handlers/helpers/mindmeldMcpCore.js +0 -1103
  83. package/src/handlers/helpers/predictiveCache.js +0 -51
  84. package/src/handlers/helpers/projectAccess.js +0 -88
  85. package/src/handlers/helpers/responseUtil.js +0 -55
  86. package/src/handlers/helpers/subscriptionTiers.js +0 -1168
  87. package/src/handlers/mcp/mcpHandler.js +0 -569
  88. package/src/handlers/mcp/mindmeldMcpHandler.js +0 -124
  89. package/src/handlers/mcp/mindmeldMcpStreamHandler.js +0 -342
  90. package/src/handlers/notifications/getPreferences.js +0 -84
  91. package/src/handlers/notifications/sendNotification.js +0 -170
  92. package/src/handlers/notifications/updatePreferences.js +0 -316
  93. package/src/handlers/patterns/patternEvaluatePromotionPost.js +0 -173
  94. package/src/handlers/patterns/patternUsagePost.js +0 -182
  95. package/src/handlers/patterns/patternViolationPost.js +0 -185
  96. package/src/handlers/projects/projectCreate.js +0 -248
  97. package/src/handlers/projects/projectDelete.js +0 -82
  98. package/src/handlers/projects/projectGet.js +0 -95
  99. package/src/handlers/projects/projectUpdate.js +0 -117
  100. package/src/handlers/reports/aiLeverage.js +0 -210
  101. package/src/handlers/reports/engineeringInvestment.js +0 -132
  102. package/src/handlers/reports/riskForecast.js +0 -206
  103. package/src/handlers/reports/standardsRoi.js +0 -254
  104. package/src/handlers/scheduled/analyzeCorrelations.js +0 -178
  105. package/src/handlers/scheduled/analyzeGitHistory.js +0 -510
  106. package/src/handlers/scheduled/generateAlerts.js +0 -135
  107. package/src/handlers/scheduled/maturityUpdateJob.js +0 -166
  108. package/src/handlers/scheduled/refreshActivity.js +0 -21
  109. package/src/handlers/scheduled/scanCompliance.js +0 -334
  110. package/src/handlers/sessions/sessionEndPost.js +0 -180
  111. package/src/handlers/sessions/sessionStandardsPost.js +0 -171
  112. package/src/handlers/standards/catalogGet.js +0 -185
  113. package/src/handlers/standards/catalogSync.js +0 -120
  114. package/src/handlers/standards/discoveriesGet.js +0 -89
  115. package/src/handlers/standards/projectStandardsGet.js +0 -129
  116. package/src/handlers/standards/projectStandardsPut.js +0 -151
  117. package/src/handlers/standards/standardsAuditGet.js +0 -65
  118. package/src/handlers/standards/standardsParseUpload.js +0 -149
  119. package/src/handlers/standards/standardsRelevantPost.js +0 -405
  120. package/src/handlers/standards/standardsTransition.js +0 -161
  121. package/src/handlers/stripe/addonManagePost.js +0 -240
  122. package/src/handlers/stripe/billingPortalPost.js +0 -93
  123. package/src/handlers/stripe/enterpriseCheckoutPost.js +0 -272
  124. package/src/handlers/stripe/seatsUpdatePost.js +0 -185
  125. package/src/handlers/stripe/subscriptionCancelDelete.js +0 -169
  126. package/src/handlers/stripe/subscriptionCreatePost.js +0 -221
  127. package/src/handlers/stripe/subscriptionUpdatePut.js +0 -163
  128. package/src/handlers/stripe/webhookPost.js +0 -482
  129. package/src/handlers/user/apiTokenCreate.js +0 -71
  130. package/src/handlers/user/apiTokenList.js +0 -64
  131. package/src/handlers/user/userSplashAck.js +0 -91
  132. package/src/handlers/user/userSplashGet.js +0 -211
  133. package/src/handlers/users/cognitoPostConfirmation.js +0 -186
  134. package/src/handlers/users/cognitoPreSignUp.js +0 -114
  135. package/src/handlers/users/userEntitlementsGet.js +0 -89
  136. package/src/handlers/users/userGet.js +0 -118
  137. package/src/handlers/users/userProfilePut.js +0 -77
  138. 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 };