guardrail-core 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 (189) hide show
  1. package/dist/__tests__/autopilot.test.d.ts +7 -0
  2. package/dist/__tests__/autopilot.test.d.ts.map +1 -0
  3. package/dist/__tests__/autopilot.test.js +156 -0
  4. package/dist/__tests__/tier-config.test.d.ts +9 -0
  5. package/dist/__tests__/tier-config.test.d.ts.map +1 -0
  6. package/dist/__tests__/tier-config.test.js +230 -0
  7. package/dist/__tests__/utils/hash-inline.test.d.ts +2 -0
  8. package/dist/__tests__/utils/hash-inline.test.d.ts.map +1 -0
  9. package/dist/__tests__/utils/hash-inline.test.js +62 -0
  10. package/dist/__tests__/utils/hash.test.d.ts +3 -0
  11. package/dist/__tests__/utils/hash.test.d.ts.map +1 -0
  12. package/dist/__tests__/utils/hash.test.js +95 -0
  13. package/dist/__tests__/utils/simple.test.d.ts +1 -0
  14. package/dist/__tests__/utils/simple.test.d.ts.map +1 -0
  15. package/dist/__tests__/utils/simple.test.js +10 -0
  16. package/dist/__tests__/utils/utils-simple.test.d.ts +1 -0
  17. package/dist/__tests__/utils/utils-simple.test.d.ts.map +1 -0
  18. package/dist/__tests__/utils/utils-simple.test.js +6 -0
  19. package/dist/__tests__/utils/utils.test.d.ts +15 -0
  20. package/dist/__tests__/utils/utils.test.d.ts.map +1 -0
  21. package/dist/__tests__/utils/utils.test.js +172 -0
  22. package/dist/autopilot/autopilot-runner.d.ts +33 -0
  23. package/dist/autopilot/autopilot-runner.d.ts.map +1 -0
  24. package/dist/autopilot/autopilot-runner.js +479 -0
  25. package/dist/autopilot/index.d.ts +6 -0
  26. package/dist/autopilot/index.d.ts.map +1 -0
  27. package/dist/autopilot/index.js +25 -0
  28. package/dist/autopilot/types.d.ts +102 -0
  29. package/dist/autopilot/types.d.ts.map +1 -0
  30. package/dist/autopilot/types.js +18 -0
  31. package/dist/cache/index.d.ts +7 -0
  32. package/dist/cache/index.d.ts.map +1 -0
  33. package/dist/cache/index.js +22 -0
  34. package/dist/cache/redis-cache.d.ts +145 -0
  35. package/dist/cache/redis-cache.d.ts.map +1 -0
  36. package/dist/cache/redis-cache.js +459 -0
  37. package/dist/ci/github-actions.d.ts +77 -0
  38. package/dist/ci/github-actions.d.ts.map +1 -0
  39. package/dist/ci/github-actions.js +277 -0
  40. package/dist/ci/index.d.ts +12 -0
  41. package/dist/ci/index.d.ts.map +1 -0
  42. package/dist/ci/index.js +27 -0
  43. package/dist/ci/pre-commit.d.ts +65 -0
  44. package/dist/ci/pre-commit.d.ts.map +1 -0
  45. package/dist/ci/pre-commit.js +286 -0
  46. package/dist/entitlements.d.ts +149 -0
  47. package/dist/entitlements.d.ts.map +1 -0
  48. package/dist/entitlements.js +464 -0
  49. package/dist/env.d.ts +113 -0
  50. package/dist/env.d.ts.map +1 -0
  51. package/dist/env.js +204 -0
  52. package/dist/fix-packs/__tests__/generate-fix-packs.test.d.ts +7 -0
  53. package/dist/fix-packs/__tests__/generate-fix-packs.test.d.ts.map +1 -0
  54. package/dist/fix-packs/__tests__/generate-fix-packs.test.js +250 -0
  55. package/dist/fix-packs/generate-fix-packs.d.ts +15 -0
  56. package/dist/fix-packs/generate-fix-packs.d.ts.map +1 -0
  57. package/dist/fix-packs/generate-fix-packs.js +505 -0
  58. package/dist/fix-packs/index.d.ts +8 -0
  59. package/dist/fix-packs/index.d.ts.map +1 -0
  60. package/dist/fix-packs/index.js +23 -0
  61. package/dist/fix-packs/types.d.ts +113 -0
  62. package/dist/fix-packs/types.d.ts.map +1 -0
  63. package/dist/fix-packs/types.js +71 -0
  64. package/dist/index.d.ts +13 -0
  65. package/dist/index.d.ts.map +1 -0
  66. package/dist/index.js +28 -0
  67. package/dist/metrics/prometheus.d.ts +99 -0
  68. package/dist/metrics/prometheus.d.ts.map +1 -0
  69. package/dist/metrics/prometheus.js +306 -0
  70. package/dist/quota-ledger.d.ts +119 -0
  71. package/dist/quota-ledger.d.ts.map +1 -0
  72. package/dist/quota-ledger.js +462 -0
  73. package/dist/rbac/__tests__/permissions.test.d.ts +8 -0
  74. package/dist/rbac/__tests__/permissions.test.d.ts.map +1 -0
  75. package/dist/rbac/__tests__/permissions.test.js +350 -0
  76. package/dist/rbac/index.d.ts +9 -0
  77. package/dist/rbac/index.d.ts.map +1 -0
  78. package/dist/rbac/index.js +32 -0
  79. package/dist/rbac/permissions.d.ts +71 -0
  80. package/dist/rbac/permissions.d.ts.map +1 -0
  81. package/dist/rbac/permissions.js +247 -0
  82. package/dist/rbac/types.d.ts +69 -0
  83. package/dist/rbac/types.d.ts.map +1 -0
  84. package/dist/rbac/types.js +213 -0
  85. package/dist/tier-config.d.ts +203 -0
  86. package/dist/tier-config.d.ts.map +1 -0
  87. package/dist/tier-config.js +675 -0
  88. package/dist/types.d.ts +365 -0
  89. package/dist/types.d.ts.map +1 -0
  90. package/dist/types.js +5 -0
  91. package/dist/utils.d.ts +36 -0
  92. package/dist/utils.d.ts.map +1 -0
  93. package/dist/utils.js +127 -0
  94. package/dist/verified-autofix/__tests__/format-validator.test.d.ts +11 -0
  95. package/dist/verified-autofix/__tests__/format-validator.test.d.ts.map +1 -0
  96. package/dist/verified-autofix/__tests__/format-validator.test.js +285 -0
  97. package/dist/verified-autofix/__tests__/pipeline.test.d.ts +11 -0
  98. package/dist/verified-autofix/__tests__/pipeline.test.d.ts.map +1 -0
  99. package/dist/verified-autofix/__tests__/pipeline.test.js +389 -0
  100. package/dist/verified-autofix/__tests__/repo-fingerprint.test.d.ts +11 -0
  101. package/dist/verified-autofix/__tests__/repo-fingerprint.test.d.ts.map +1 -0
  102. package/dist/verified-autofix/__tests__/repo-fingerprint.test.js +236 -0
  103. package/dist/verified-autofix/__tests__/workspace.test.d.ts +11 -0
  104. package/dist/verified-autofix/__tests__/workspace.test.d.ts.map +1 -0
  105. package/dist/verified-autofix/__tests__/workspace.test.js +314 -0
  106. package/dist/verified-autofix/format-validator.d.ts +101 -0
  107. package/dist/verified-autofix/format-validator.d.ts.map +1 -0
  108. package/dist/verified-autofix/format-validator.js +446 -0
  109. package/dist/verified-autofix/index.d.ts +14 -0
  110. package/dist/verified-autofix/index.d.ts.map +1 -0
  111. package/dist/verified-autofix/index.js +39 -0
  112. package/dist/verified-autofix/pipeline.d.ts +68 -0
  113. package/dist/verified-autofix/pipeline.d.ts.map +1 -0
  114. package/dist/verified-autofix/pipeline.js +330 -0
  115. package/dist/verified-autofix/repo-fingerprint.d.ts +56 -0
  116. package/dist/verified-autofix/repo-fingerprint.d.ts.map +1 -0
  117. package/dist/verified-autofix/repo-fingerprint.js +396 -0
  118. package/dist/verified-autofix/workspace.d.ts +83 -0
  119. package/dist/verified-autofix/workspace.d.ts.map +1 -0
  120. package/dist/verified-autofix/workspace.js +454 -0
  121. package/dist/verified-autofix.d.ts +182 -0
  122. package/dist/verified-autofix.d.ts.map +1 -0
  123. package/dist/verified-autofix.js +1021 -0
  124. package/dist/visualization/dependency-graph.d.ts +79 -0
  125. package/dist/visualization/dependency-graph.d.ts.map +1 -0
  126. package/dist/visualization/dependency-graph.js +399 -0
  127. package/dist/visualization/index.d.ts +5 -0
  128. package/dist/visualization/index.d.ts.map +1 -0
  129. package/dist/visualization/index.js +20 -0
  130. package/package.json +29 -0
  131. package/src/__tests__/autopilot.test.ts +196 -0
  132. package/src/__tests__/tier-config.test.ts +289 -0
  133. package/src/__tests__/utils/hash-inline.test.ts +76 -0
  134. package/src/__tests__/utils/hash.test.ts +119 -0
  135. package/src/__tests__/utils/simple.test.ts +10 -0
  136. package/src/__tests__/utils/utils-simple.test.ts +5 -0
  137. package/src/__tests__/utils/utils.test.ts +203 -0
  138. package/src/autopilot/autopilot-runner.ts +503 -0
  139. package/src/autopilot/index.ts +6 -0
  140. package/src/autopilot/types.ts +119 -0
  141. package/src/cache/index.ts +7 -0
  142. package/src/cache/redis-cache.d.ts +155 -0
  143. package/src/cache/redis-cache.d.ts.map +1 -0
  144. package/src/cache/redis-cache.ts +517 -0
  145. package/src/ci/github-actions.ts +335 -0
  146. package/src/ci/index.ts +12 -0
  147. package/src/ci/pre-commit.ts +338 -0
  148. package/src/db/usage-schema.prisma +114 -0
  149. package/src/entitlements.ts +570 -0
  150. package/src/env.d.ts +68 -0
  151. package/src/env.d.ts.map +1 -0
  152. package/src/env.ts +247 -0
  153. package/src/fix-packs/__tests__/generate-fix-packs.test.ts +317 -0
  154. package/src/fix-packs/generate-fix-packs.ts +577 -0
  155. package/src/fix-packs/index.ts +8 -0
  156. package/src/fix-packs/types.ts +206 -0
  157. package/src/index.d.ts +7 -0
  158. package/src/index.d.ts.map +1 -0
  159. package/src/index.ts +12 -0
  160. package/src/metrics/prometheus.d.ts +104 -0
  161. package/src/metrics/prometheus.d.ts.map +1 -0
  162. package/src/metrics/prometheus.ts +446 -0
  163. package/src/quota-ledger.ts +548 -0
  164. package/src/rbac/__tests__/permissions.test.ts +446 -0
  165. package/src/rbac/index.ts +46 -0
  166. package/src/rbac/permissions.ts +301 -0
  167. package/src/rbac/types.ts +298 -0
  168. package/src/tier-config.json +157 -0
  169. package/src/tier-config.ts +815 -0
  170. package/src/types.d.ts +365 -0
  171. package/src/types.d.ts.map +1 -0
  172. package/src/types.ts +441 -0
  173. package/src/utils.d.ts +36 -0
  174. package/src/utils.d.ts.map +1 -0
  175. package/src/utils.ts +140 -0
  176. package/src/verified-autofix/__tests__/format-validator.test.ts +335 -0
  177. package/src/verified-autofix/__tests__/pipeline.test.ts +419 -0
  178. package/src/verified-autofix/__tests__/repo-fingerprint.test.ts +241 -0
  179. package/src/verified-autofix/__tests__/workspace.test.ts +373 -0
  180. package/src/verified-autofix/format-validator.ts +517 -0
  181. package/src/verified-autofix/index.ts +63 -0
  182. package/src/verified-autofix/pipeline.ts +403 -0
  183. package/src/verified-autofix/repo-fingerprint.ts +459 -0
  184. package/src/verified-autofix/workspace.ts +531 -0
  185. package/src/verified-autofix.ts +1187 -0
  186. package/src/visualization/dependency-graph.d.ts +85 -0
  187. package/src/visualization/dependency-graph.d.ts.map +1 -0
  188. package/src/visualization/dependency-graph.ts +495 -0
  189. package/src/visualization/index.ts +5 -0
@@ -0,0 +1,247 @@
1
+ "use strict";
2
+ /**
3
+ * RBAC Permission Checker
4
+ *
5
+ * Core permission checking logic for role-based access control.
6
+ * Provides functions to verify user permissions against required permissions.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.roleHasPermission = roleHasPermission;
10
+ exports.hasPermission = hasPermission;
11
+ exports.hasAllPermissions = hasAllPermissions;
12
+ exports.hasAnyPermission = hasAnyPermission;
13
+ exports.compareRoles = compareRoles;
14
+ exports.isRoleAtLeast = isRoleAtLeast;
15
+ exports.getMinimumRoleForPermission = getMinimumRoleForPermission;
16
+ exports.getEffectivePermissions = getEffectivePermissions;
17
+ exports.checkTierAndPermission = checkTierAndPermission;
18
+ exports.generatePermissionMatrix = generatePermissionMatrix;
19
+ exports.canAssignRole = canAssignRole;
20
+ exports.canRemoveMember = canRemoveMember;
21
+ exports.isValidRole = isValidRole;
22
+ exports.isValidPermission = isValidPermission;
23
+ exports.parseRole = parseRole;
24
+ const tier_config_1 = require("../tier-config");
25
+ const types_1 = require("./types");
26
+ // ============================================================================
27
+ // PERMISSION CHECKING
28
+ // ============================================================================
29
+ /**
30
+ * Check if a role has a specific permission
31
+ */
32
+ function roleHasPermission(role, permission) {
33
+ const permissions = types_1.ROLE_PERMISSIONS[role];
34
+ return permissions.includes(permission);
35
+ }
36
+ /**
37
+ * Check if a user has a specific permission based on their role
38
+ */
39
+ function hasPermission(context, permission) {
40
+ if (!context.role || !types_1.ROLES.includes(context.role)) {
41
+ return {
42
+ allowed: false,
43
+ reason: 'Invalid or missing role',
44
+ };
45
+ }
46
+ const hasAccess = roleHasPermission(context.role, permission);
47
+ if (!hasAccess) {
48
+ const requiredRole = getMinimumRoleForPermission(permission);
49
+ return {
50
+ allowed: false,
51
+ reason: `Permission '${permission}' requires at least '${requiredRole}' role`,
52
+ requiredRole,
53
+ requiredPermissions: [permission],
54
+ };
55
+ }
56
+ return { allowed: true };
57
+ }
58
+ /**
59
+ * Check if a user has ALL of the specified permissions
60
+ */
61
+ function hasAllPermissions(context, permissions) {
62
+ const missingPermissions = [];
63
+ for (const permission of permissions) {
64
+ if (!roleHasPermission(context.role, permission)) {
65
+ missingPermissions.push(permission);
66
+ }
67
+ }
68
+ if (missingPermissions.length > 0) {
69
+ return {
70
+ allowed: false,
71
+ reason: `Missing required permissions: ${missingPermissions.join(', ')}`,
72
+ requiredPermissions: missingPermissions,
73
+ };
74
+ }
75
+ return { allowed: true };
76
+ }
77
+ /**
78
+ * Check if a user has ANY of the specified permissions
79
+ */
80
+ function hasAnyPermission(context, permissions) {
81
+ for (const permission of permissions) {
82
+ if (roleHasPermission(context.role, permission)) {
83
+ return { allowed: true };
84
+ }
85
+ }
86
+ return {
87
+ allowed: false,
88
+ reason: `Requires at least one of: ${permissions.join(', ')}`,
89
+ requiredPermissions: permissions,
90
+ };
91
+ }
92
+ // ============================================================================
93
+ // ROLE COMPARISON
94
+ // ============================================================================
95
+ /**
96
+ * Compare two roles and return their relative hierarchy
97
+ * Returns positive if role1 > role2, negative if role1 < role2, 0 if equal
98
+ */
99
+ function compareRoles(role1, role2) {
100
+ return types_1.ROLE_HIERARCHY[role1] - types_1.ROLE_HIERARCHY[role2];
101
+ }
102
+ /**
103
+ * Check if role1 is higher than or equal to role2 in the hierarchy
104
+ */
105
+ function isRoleAtLeast(role, minimumRole) {
106
+ return types_1.ROLE_HIERARCHY[role] >= types_1.ROLE_HIERARCHY[minimumRole];
107
+ }
108
+ /**
109
+ * Get the minimum role required for a specific permission
110
+ */
111
+ function getMinimumRoleForPermission(permission) {
112
+ // Check roles from lowest to highest
113
+ const orderedRoles = ['viewer', 'compliance-auditor', 'dev', 'admin', 'owner'];
114
+ for (const role of orderedRoles) {
115
+ if (roleHasPermission(role, permission)) {
116
+ return role;
117
+ }
118
+ }
119
+ // Default to owner if permission not found
120
+ return 'owner';
121
+ }
122
+ /**
123
+ * Get all permissions for a role (including inherited)
124
+ */
125
+ function getEffectivePermissions(role) {
126
+ return [...types_1.ROLE_PERMISSIONS[role]];
127
+ }
128
+ // ============================================================================
129
+ // TIER-BASED RESTRICTIONS
130
+ // ============================================================================
131
+ /**
132
+ * Check if a tier allows a specific operation with RBAC
133
+ */
134
+ function checkTierAndPermission(context, permission, requiredTier) {
135
+ // First check permission
136
+ const permissionCheck = hasPermission(context, permission);
137
+ if (!permissionCheck.allowed) {
138
+ return permissionCheck;
139
+ }
140
+ // Then check tier if provided
141
+ if (context.tier) {
142
+ const userTierIndex = tier_config_1.TIER_ORDER.indexOf(context.tier);
143
+ const requiredTierIndex = tier_config_1.TIER_ORDER.indexOf(requiredTier);
144
+ if (userTierIndex < requiredTierIndex) {
145
+ return {
146
+ allowed: false,
147
+ reason: `This feature requires ${requiredTier} tier or higher`,
148
+ };
149
+ }
150
+ }
151
+ return { allowed: true };
152
+ }
153
+ // ============================================================================
154
+ // PERMISSION MATRIX
155
+ // ============================================================================
156
+ /**
157
+ * Generate a permission matrix for UI display
158
+ */
159
+ function generatePermissionMatrix() {
160
+ const matrix = {};
161
+ for (const role of types_1.ROLES) {
162
+ matrix[role] = {};
163
+ for (const permission of types_1.PERMISSIONS) {
164
+ matrix[role][permission] = roleHasPermission(role, permission);
165
+ }
166
+ }
167
+ return {
168
+ roles: [...types_1.ROLES],
169
+ permissions: [...types_1.PERMISSIONS],
170
+ matrix,
171
+ };
172
+ }
173
+ // ============================================================================
174
+ // ROLE ASSIGNMENT VALIDATION
175
+ // ============================================================================
176
+ /**
177
+ * Check if a user can assign a specific role to another user
178
+ * Users can only assign roles lower than their own
179
+ */
180
+ function canAssignRole(assignerRole, targetRole) {
181
+ // Must have assign_roles permission
182
+ if (!roleHasPermission(assignerRole, 'assign_roles')) {
183
+ return {
184
+ allowed: false,
185
+ reason: 'You do not have permission to assign roles',
186
+ };
187
+ }
188
+ // Cannot assign a role equal to or higher than your own (except owner can assign admin)
189
+ if (assignerRole === 'owner') {
190
+ return { allowed: true };
191
+ }
192
+ if (types_1.ROLE_HIERARCHY[targetRole] >= types_1.ROLE_HIERARCHY[assignerRole]) {
193
+ return {
194
+ allowed: false,
195
+ reason: `Cannot assign role '${targetRole}' - must be lower than your role '${assignerRole}'`,
196
+ };
197
+ }
198
+ return { allowed: true };
199
+ }
200
+ /**
201
+ * Check if a user can remove another user from the team
202
+ */
203
+ function canRemoveMember(removerRole, targetRole) {
204
+ // Must have remove_members permission
205
+ if (!roleHasPermission(removerRole, 'remove_members')) {
206
+ return {
207
+ allowed: false,
208
+ reason: 'You do not have permission to remove members',
209
+ };
210
+ }
211
+ // Cannot remove owner
212
+ if (targetRole === 'owner') {
213
+ return {
214
+ allowed: false,
215
+ reason: 'Cannot remove the team owner',
216
+ };
217
+ }
218
+ // Cannot remove someone with equal or higher role (unless owner)
219
+ if (removerRole !== 'owner' && types_1.ROLE_HIERARCHY[targetRole] >= types_1.ROLE_HIERARCHY[removerRole]) {
220
+ return {
221
+ allowed: false,
222
+ reason: `Cannot remove a member with role '${targetRole}' - must have a lower role than yours`,
223
+ };
224
+ }
225
+ return { allowed: true };
226
+ }
227
+ // ============================================================================
228
+ // VALIDATION UTILITIES
229
+ // ============================================================================
230
+ /**
231
+ * Validate if a string is a valid role
232
+ */
233
+ function isValidRole(role) {
234
+ return types_1.ROLES.includes(role);
235
+ }
236
+ /**
237
+ * Validate if a string is a valid permission
238
+ */
239
+ function isValidPermission(permission) {
240
+ return types_1.PERMISSIONS.includes(permission);
241
+ }
242
+ /**
243
+ * Get role from string with validation
244
+ */
245
+ function parseRole(role) {
246
+ return isValidRole(role) ? role : null;
247
+ }
@@ -0,0 +1,69 @@
1
+ /**
2
+ * RBAC Type Definitions
3
+ *
4
+ * Core types for Role-Based Access Control system.
5
+ * Defines roles, permissions, and related interfaces.
6
+ */
7
+ export declare const ROLES: readonly ["owner", "admin", "dev", "viewer", "compliance-auditor"];
8
+ export type Role = typeof ROLES[number];
9
+ /** Role hierarchy for permission inheritance (higher index = more permissions) */
10
+ export declare const ROLE_HIERARCHY: Record<Role, number>;
11
+ export declare const PERMISSIONS: readonly ["manage_team", "invite_members", "remove_members", "assign_roles", "view_audit", "export_audit", "manage_compliance", "view_compliance", "view_reports", "export_reports", "create_reports", "run_scan", "run_reality", "run_autopilot", "run_fix", "run_gate", "view_policies", "manage_policies", "create_policies", "view_projects", "create_projects", "delete_projects", "manage_project_settings", "manage_api_keys", "view_api_keys", "manage_webhooks", "manage_integrations", "view_billing", "manage_billing", "view_dashboard", "admin_settings"];
12
+ export type Permission = typeof PERMISSIONS[number];
13
+ /**
14
+ * Default permissions for each role.
15
+ * Roles inherit permissions from lower roles in the hierarchy.
16
+ */
17
+ export declare const ROLE_PERMISSIONS: Record<Role, Permission[]>;
18
+ export interface RoleAssignment {
19
+ userId: string;
20
+ teamId: string;
21
+ role: Role;
22
+ assignedBy: string;
23
+ assignedAt: Date;
24
+ }
25
+ export interface PermissionCheck {
26
+ allowed: boolean;
27
+ reason?: string;
28
+ requiredRole?: Role;
29
+ requiredPermissions?: Permission[];
30
+ }
31
+ export interface TeamMemberWithRole {
32
+ id: string;
33
+ userId: string;
34
+ email: string;
35
+ name: string;
36
+ role: Role;
37
+ joinedAt: Date;
38
+ lastActive?: Date;
39
+ }
40
+ export interface TeamInvitation {
41
+ id: string;
42
+ teamId: string;
43
+ email: string;
44
+ role: Role;
45
+ invitedBy: string;
46
+ expiresAt: Date;
47
+ status: 'pending' | 'accepted' | 'expired' | 'revoked';
48
+ }
49
+ export interface RBACContext {
50
+ userId: string;
51
+ teamId: string;
52
+ role: Role;
53
+ permissions: Permission[];
54
+ tier?: string;
55
+ }
56
+ export interface PermissionMatrix {
57
+ roles: Role[];
58
+ permissions: Permission[];
59
+ matrix: Record<Role, Record<Permission, boolean>>;
60
+ }
61
+ export interface RoleMetadata {
62
+ name: Role;
63
+ displayName: string;
64
+ description: string;
65
+ color: string;
66
+ icon: string;
67
+ }
68
+ export declare const ROLE_METADATA: Record<Role, RoleMetadata>;
69
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/rbac/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,eAAO,MAAM,KAAK,oEAAqE,CAAC;AACxF,MAAM,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC;AAExC,kFAAkF;AAClF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAM/C,CAAC;AAMF,eAAO,MAAM,WAAW,wiBAiDd,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;AAMpD;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,CA0GvD,CAAC;AAMF,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,IAAI,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,mBAAmB,CAAC,EAAE,UAAU,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,IAAI,CAAC;IACf,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;CACxD;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,IAAI,CAAC;IACX,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;CACnD;AAMD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,IAAI,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,IAAI,EAAE,YAAY,CAoCpD,CAAC"}
@@ -0,0 +1,213 @@
1
+ "use strict";
2
+ /**
3
+ * RBAC Type Definitions
4
+ *
5
+ * Core types for Role-Based Access Control system.
6
+ * Defines roles, permissions, and related interfaces.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.ROLE_METADATA = exports.ROLE_PERMISSIONS = exports.PERMISSIONS = exports.ROLE_HIERARCHY = exports.ROLES = void 0;
10
+ // ============================================================================
11
+ // ROLES
12
+ // ============================================================================
13
+ exports.ROLES = ['owner', 'admin', 'dev', 'viewer', 'compliance-auditor'];
14
+ /** Role hierarchy for permission inheritance (higher index = more permissions) */
15
+ exports.ROLE_HIERARCHY = {
16
+ 'viewer': 0,
17
+ 'compliance-auditor': 1,
18
+ 'dev': 2,
19
+ 'admin': 3,
20
+ 'owner': 4,
21
+ };
22
+ // ============================================================================
23
+ // PERMISSIONS
24
+ // ============================================================================
25
+ exports.PERMISSIONS = [
26
+ // Team Management
27
+ 'manage_team',
28
+ 'invite_members',
29
+ 'remove_members',
30
+ 'assign_roles',
31
+ // Audit & Compliance
32
+ 'view_audit',
33
+ 'export_audit',
34
+ 'manage_compliance',
35
+ 'view_compliance',
36
+ // Reports
37
+ 'view_reports',
38
+ 'export_reports',
39
+ 'create_reports',
40
+ // Operations
41
+ 'run_scan',
42
+ 'run_reality',
43
+ 'run_autopilot',
44
+ 'run_fix',
45
+ 'run_gate',
46
+ // Policies
47
+ 'view_policies',
48
+ 'manage_policies',
49
+ 'create_policies',
50
+ // Projects
51
+ 'view_projects',
52
+ 'create_projects',
53
+ 'delete_projects',
54
+ 'manage_project_settings',
55
+ // API & Integrations
56
+ 'manage_api_keys',
57
+ 'view_api_keys',
58
+ 'manage_webhooks',
59
+ 'manage_integrations',
60
+ // Billing
61
+ 'view_billing',
62
+ 'manage_billing',
63
+ // Admin
64
+ 'view_dashboard',
65
+ 'admin_settings',
66
+ ];
67
+ // ============================================================================
68
+ // ROLE-PERMISSION MAPPING
69
+ // ============================================================================
70
+ /**
71
+ * Default permissions for each role.
72
+ * Roles inherit permissions from lower roles in the hierarchy.
73
+ */
74
+ exports.ROLE_PERMISSIONS = {
75
+ 'viewer': [
76
+ 'view_dashboard',
77
+ 'view_projects',
78
+ 'view_reports',
79
+ 'view_compliance',
80
+ 'view_policies',
81
+ ],
82
+ 'compliance-auditor': [
83
+ // Inherits viewer permissions
84
+ 'view_dashboard',
85
+ 'view_projects',
86
+ 'view_reports',
87
+ 'view_compliance',
88
+ 'view_policies',
89
+ // Additional audit permissions
90
+ 'view_audit',
91
+ 'export_audit',
92
+ 'export_reports',
93
+ ],
94
+ 'dev': [
95
+ // Inherits viewer permissions
96
+ 'view_dashboard',
97
+ 'view_projects',
98
+ 'view_reports',
99
+ 'view_compliance',
100
+ 'view_policies',
101
+ // Dev operations
102
+ 'run_scan',
103
+ 'run_reality',
104
+ 'run_fix',
105
+ 'run_gate',
106
+ 'create_projects',
107
+ 'view_api_keys',
108
+ ],
109
+ 'admin': [
110
+ // Inherits dev permissions
111
+ 'view_dashboard',
112
+ 'view_projects',
113
+ 'view_reports',
114
+ 'view_compliance',
115
+ 'view_policies',
116
+ 'run_scan',
117
+ 'run_reality',
118
+ 'run_fix',
119
+ 'run_gate',
120
+ 'create_projects',
121
+ 'view_api_keys',
122
+ // Admin permissions
123
+ 'manage_team',
124
+ 'invite_members',
125
+ 'remove_members',
126
+ 'assign_roles',
127
+ 'run_autopilot',
128
+ 'manage_policies',
129
+ 'create_policies',
130
+ 'delete_projects',
131
+ 'manage_project_settings',
132
+ 'manage_api_keys',
133
+ 'manage_webhooks',
134
+ 'manage_integrations',
135
+ 'view_audit',
136
+ 'export_audit',
137
+ 'export_reports',
138
+ 'create_reports',
139
+ 'manage_compliance',
140
+ 'view_billing',
141
+ ],
142
+ 'owner': [
143
+ // All permissions
144
+ 'manage_team',
145
+ 'invite_members',
146
+ 'remove_members',
147
+ 'assign_roles',
148
+ 'view_audit',
149
+ 'export_audit',
150
+ 'manage_compliance',
151
+ 'view_compliance',
152
+ 'view_reports',
153
+ 'export_reports',
154
+ 'create_reports',
155
+ 'run_scan',
156
+ 'run_reality',
157
+ 'run_autopilot',
158
+ 'run_fix',
159
+ 'run_gate',
160
+ 'view_policies',
161
+ 'manage_policies',
162
+ 'create_policies',
163
+ 'view_projects',
164
+ 'create_projects',
165
+ 'delete_projects',
166
+ 'manage_project_settings',
167
+ 'manage_api_keys',
168
+ 'view_api_keys',
169
+ 'manage_webhooks',
170
+ 'manage_integrations',
171
+ 'view_billing',
172
+ 'manage_billing',
173
+ 'view_dashboard',
174
+ 'admin_settings',
175
+ ],
176
+ };
177
+ exports.ROLE_METADATA = {
178
+ 'owner': {
179
+ name: 'owner',
180
+ displayName: 'Owner',
181
+ description: 'Full access to all features including billing and team deletion',
182
+ color: '#8B5CF6', // purple
183
+ icon: 'crown',
184
+ },
185
+ 'admin': {
186
+ name: 'admin',
187
+ displayName: 'Admin',
188
+ description: 'Manage team members, settings, and run all operations',
189
+ color: '#3B82F6', // blue
190
+ icon: 'shield',
191
+ },
192
+ 'dev': {
193
+ name: 'dev',
194
+ displayName: 'Developer',
195
+ description: 'Run scans, fixes, and manage projects',
196
+ color: '#10B981', // green
197
+ icon: 'code',
198
+ },
199
+ 'viewer': {
200
+ name: 'viewer',
201
+ displayName: 'Viewer',
202
+ description: 'View-only access to dashboards and reports',
203
+ color: '#6B7280', // gray
204
+ icon: 'eye',
205
+ },
206
+ 'compliance-auditor': {
207
+ name: 'compliance-auditor',
208
+ displayName: 'Compliance Auditor',
209
+ description: 'View and export audit logs and compliance reports',
210
+ color: '#F59E0B', // amber
211
+ icon: 'clipboard-check',
212
+ },
213
+ };