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