@eduardbar/drift 1.3.0 → 1.4.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 (168) hide show
  1. package/.gga +50 -0
  2. package/.github/actions/drift-review/README.md +60 -0
  3. package/.github/actions/drift-review/action.yml +131 -0
  4. package/.github/actions/drift-scan/README.md +28 -32
  5. package/.github/actions/drift-scan/action.yml +78 -14
  6. package/.github/workflows/review-pr.yml +34 -41
  7. package/AGENTS.md +75 -251
  8. package/CHANGELOG.md +28 -0
  9. package/README.md +148 -41
  10. package/dist/benchmark.d.ts +1 -1
  11. package/dist/benchmark.js +71 -52
  12. package/dist/cli.js +243 -8
  13. package/dist/config.js +16 -2
  14. package/dist/diff.js +42 -50
  15. package/dist/doctor.d.ts +5 -0
  16. package/dist/doctor.js +133 -0
  17. package/dist/format.d.ts +17 -0
  18. package/dist/format.js +45 -0
  19. package/dist/guard-types.d.ts +57 -0
  20. package/dist/guard-types.js +2 -0
  21. package/dist/guard.d.ts +14 -0
  22. package/dist/guard.js +239 -0
  23. package/dist/index.d.ts +10 -3
  24. package/dist/index.js +4 -1
  25. package/dist/init.d.ts +15 -0
  26. package/dist/init.js +273 -0
  27. package/dist/map-cycles.d.ts +2 -0
  28. package/dist/map-cycles.js +34 -0
  29. package/dist/map-svg.d.ts +19 -0
  30. package/dist/map-svg.js +97 -0
  31. package/dist/map.js +78 -138
  32. package/dist/metrics.js +70 -55
  33. package/dist/output-metadata.d.ts +13 -0
  34. package/dist/output-metadata.js +17 -0
  35. package/dist/plugins-capabilities.d.ts +4 -0
  36. package/dist/plugins-capabilities.js +21 -0
  37. package/dist/plugins-messages.d.ts +10 -0
  38. package/dist/plugins-messages.js +16 -0
  39. package/dist/plugins-rules.d.ts +9 -0
  40. package/dist/plugins-rules.js +137 -0
  41. package/dist/plugins.d.ts +1 -1
  42. package/dist/plugins.js +45 -142
  43. package/dist/reporter-constants.d.ts +16 -0
  44. package/dist/reporter-constants.js +39 -0
  45. package/dist/reporter.d.ts +3 -3
  46. package/dist/reporter.js +35 -55
  47. package/dist/review.d.ts +2 -1
  48. package/dist/review.js +2 -1
  49. package/dist/rules/phase3-configurable.js +23 -15
  50. package/dist/saas/constants.d.ts +15 -0
  51. package/dist/saas/constants.js +48 -0
  52. package/dist/saas/dashboard.d.ts +8 -0
  53. package/dist/saas/dashboard.js +132 -0
  54. package/dist/saas/errors.d.ts +19 -0
  55. package/dist/saas/errors.js +37 -0
  56. package/dist/saas/helpers.d.ts +21 -0
  57. package/dist/saas/helpers.js +110 -0
  58. package/dist/saas/ingest.d.ts +3 -0
  59. package/dist/saas/ingest.js +249 -0
  60. package/dist/saas/organization.d.ts +5 -0
  61. package/dist/saas/organization.js +82 -0
  62. package/dist/saas/plan-change.d.ts +10 -0
  63. package/dist/saas/plan-change.js +15 -0
  64. package/dist/saas/store.d.ts +21 -0
  65. package/dist/saas/store.js +159 -0
  66. package/dist/saas/types.d.ts +191 -0
  67. package/dist/saas/types.js +2 -0
  68. package/dist/saas.d.ts +8 -218
  69. package/dist/saas.js +7 -761
  70. package/dist/sarif.d.ts +74 -0
  71. package/dist/sarif.js +122 -0
  72. package/dist/trust-advanced.d.ts +14 -0
  73. package/dist/trust-advanced.js +65 -0
  74. package/dist/trust-kpi-fs.d.ts +3 -0
  75. package/dist/trust-kpi-fs.js +141 -0
  76. package/dist/trust-kpi-parse.d.ts +7 -0
  77. package/dist/trust-kpi-parse.js +186 -0
  78. package/dist/trust-kpi-types.d.ts +16 -0
  79. package/dist/trust-kpi-types.js +2 -0
  80. package/dist/trust-kpi.d.ts +1 -3
  81. package/dist/trust-kpi.js +6 -266
  82. package/dist/trust-policy.d.ts +32 -0
  83. package/dist/trust-policy.js +160 -0
  84. package/dist/trust-render.d.ts +9 -0
  85. package/dist/trust-render.js +54 -0
  86. package/dist/trust-scoring.d.ts +9 -0
  87. package/dist/trust-scoring.js +208 -0
  88. package/dist/trust.d.ts +4 -32
  89. package/dist/trust.js +29 -432
  90. package/dist/types/app.d.ts +30 -0
  91. package/dist/types/app.js +2 -0
  92. package/dist/types/config.d.ts +25 -0
  93. package/dist/types/config.js +2 -0
  94. package/dist/types/core.d.ts +100 -0
  95. package/dist/types/core.js +2 -0
  96. package/dist/types/diff.d.ts +55 -0
  97. package/dist/types/diff.js +2 -0
  98. package/dist/types/plugin.d.ts +41 -0
  99. package/dist/types/plugin.js +2 -0
  100. package/dist/types/trust.d.ts +120 -0
  101. package/dist/types/trust.js +2 -0
  102. package/dist/types.d.ts +8 -365
  103. package/docs/release-notes-draft.md +40 -0
  104. package/docs/rules-catalog.md +49 -0
  105. package/docs/trust-core-release-checklist.md +37 -5
  106. package/package.json +3 -2
  107. package/packages/vscode-drift/src/code-actions.ts +1 -1
  108. package/schemas/drift-ai-output.v1.json +162 -0
  109. package/schemas/drift-report.v1.json +151 -0
  110. package/schemas/drift-trust.v1.json +131 -0
  111. package/scripts/smoke-repo.mjs +394 -0
  112. package/src/benchmark.ts +75 -53
  113. package/src/cli.ts +285 -13
  114. package/src/config.ts +19 -2
  115. package/src/diff.ts +57 -48
  116. package/src/doctor.ts +173 -0
  117. package/src/format.ts +81 -0
  118. package/src/guard-types.ts +64 -0
  119. package/src/guard.ts +324 -0
  120. package/src/index.ts +35 -0
  121. package/src/init.ts +298 -0
  122. package/src/map-cycles.ts +38 -0
  123. package/src/map-svg.ts +124 -0
  124. package/src/map.ts +111 -142
  125. package/src/metrics.ts +78 -59
  126. package/src/output-metadata.ts +30 -0
  127. package/src/plugins-capabilities.ts +36 -0
  128. package/src/plugins-messages.ts +35 -0
  129. package/src/plugins-rules.ts +296 -0
  130. package/src/plugins.ts +76 -283
  131. package/src/reporter-constants.ts +46 -0
  132. package/src/reporter.ts +64 -65
  133. package/src/review.ts +4 -2
  134. package/src/rules/phase3-configurable.ts +39 -26
  135. package/src/saas/constants.ts +56 -0
  136. package/src/saas/dashboard.ts +172 -0
  137. package/src/saas/errors.ts +45 -0
  138. package/src/saas/helpers.ts +140 -0
  139. package/src/saas/ingest.ts +278 -0
  140. package/src/saas/organization.ts +99 -0
  141. package/src/saas/plan-change.ts +19 -0
  142. package/src/saas/store.ts +172 -0
  143. package/src/saas/types.ts +216 -0
  144. package/src/saas.ts +49 -1031
  145. package/src/sarif.ts +232 -0
  146. package/src/trust-advanced.ts +99 -0
  147. package/src/trust-kpi-fs.ts +169 -0
  148. package/src/trust-kpi-parse.ts +219 -0
  149. package/src/trust-kpi-types.ts +19 -0
  150. package/src/trust-kpi.ts +8 -316
  151. package/src/trust-policy.ts +246 -0
  152. package/src/trust-render.ts +61 -0
  153. package/src/trust-scoring.ts +231 -0
  154. package/src/trust.ts +62 -576
  155. package/src/types/app.ts +30 -0
  156. package/src/types/config.ts +27 -0
  157. package/src/types/core.ts +105 -0
  158. package/src/types/diff.ts +61 -0
  159. package/src/types/plugin.ts +46 -0
  160. package/src/types/trust.ts +134 -0
  161. package/src/types.ts +78 -409
  162. package/tests/cli-sarif.test.ts +92 -0
  163. package/tests/format.test.ts +157 -0
  164. package/tests/new-features.test.ts +10 -2
  165. package/tests/phase1-init-doctor-guard.test.ts +199 -0
  166. package/tests/sarif.test.ts +160 -0
  167. package/tests/trust-kpi.test.ts +31 -4
  168. package/tests/trust.test.ts +18 -0
@@ -0,0 +1,191 @@
1
+ import type { DriftConfig, DriftReport } from '../types.js';
2
+ export interface SaasPolicy {
3
+ freeUserThreshold: number;
4
+ maxRunsPerWorkspacePerMonth: number;
5
+ maxReposPerWorkspace: number;
6
+ retentionDays: number;
7
+ strictActorEnforcement: boolean;
8
+ maxWorkspacesPerOrganizationByPlan: Record<SaasPlan, number>;
9
+ }
10
+ export type SaasRole = 'owner' | 'member' | 'viewer';
11
+ export type SaasPlan = 'free' | 'sponsor' | 'team' | 'business';
12
+ export interface SaasUser {
13
+ id: string;
14
+ createdAt: string;
15
+ lastSeenAt: string;
16
+ }
17
+ export interface SaasOrganization {
18
+ id: string;
19
+ plan: SaasPlan;
20
+ createdAt: string;
21
+ lastSeenAt: string;
22
+ workspaceIds: string[];
23
+ }
24
+ export interface SaasWorkspace {
25
+ id: string;
26
+ organizationId: string;
27
+ createdAt: string;
28
+ lastSeenAt: string;
29
+ userIds: string[];
30
+ repoIds: string[];
31
+ }
32
+ export interface SaasRepo {
33
+ id: string;
34
+ organizationId: string;
35
+ workspaceId: string;
36
+ name: string;
37
+ createdAt: string;
38
+ lastSeenAt: string;
39
+ }
40
+ export interface SaasMembership {
41
+ id: string;
42
+ organizationId: string;
43
+ workspaceId: string;
44
+ userId: string;
45
+ role: SaasRole;
46
+ createdAt: string;
47
+ lastSeenAt: string;
48
+ }
49
+ export interface SaasPlanChange {
50
+ id: string;
51
+ organizationId: string;
52
+ fromPlan: SaasPlan;
53
+ toPlan: SaasPlan;
54
+ changedAt: string;
55
+ changedByUserId: string;
56
+ reason?: string;
57
+ }
58
+ export interface SaasSnapshot {
59
+ id: string;
60
+ createdAt: string;
61
+ scannedAt: string;
62
+ organizationId: string;
63
+ workspaceId: string;
64
+ userId: string;
65
+ role: SaasRole;
66
+ plan: SaasPlan;
67
+ repoId: string;
68
+ repoName: string;
69
+ targetPath: string;
70
+ totalScore: number;
71
+ totalIssues: number;
72
+ totalFiles: number;
73
+ summary: {
74
+ errors: number;
75
+ warnings: number;
76
+ infos: number;
77
+ };
78
+ }
79
+ export interface SaasStore {
80
+ version: number;
81
+ policy: SaasPolicy;
82
+ users: Record<string, SaasUser>;
83
+ organizations: Record<string, SaasOrganization>;
84
+ workspaces: Record<string, SaasWorkspace>;
85
+ memberships: Record<string, SaasMembership>;
86
+ repos: Record<string, SaasRepo>;
87
+ snapshots: SaasSnapshot[];
88
+ planChanges: SaasPlanChange[];
89
+ }
90
+ export type SaasOperation = 'snapshot:write' | 'snapshot:read' | 'summary:read' | 'billing:write' | 'billing:read';
91
+ export interface SaasPermissionContext {
92
+ operation: SaasOperation;
93
+ organizationId: string;
94
+ workspaceId?: string;
95
+ actorUserId?: string;
96
+ }
97
+ export interface SaasPermissionResult {
98
+ actorRole?: SaasRole;
99
+ requiredRole: SaasRole;
100
+ }
101
+ export interface SaasEffectiveLimits {
102
+ plan: SaasPlan;
103
+ maxWorkspaces: number;
104
+ maxReposPerWorkspace: number;
105
+ maxRunsPerWorkspacePerMonth: number;
106
+ retentionDays: number;
107
+ }
108
+ export interface SaasOrganizationUsageSnapshot {
109
+ organizationId: string;
110
+ plan: SaasPlan;
111
+ capturedAt: string;
112
+ workspaceCount: number;
113
+ repoCount: number;
114
+ runCount: number;
115
+ runCountThisMonth: number;
116
+ }
117
+ export interface ChangeOrganizationPlanOptions {
118
+ organizationId: string;
119
+ actorUserId: string;
120
+ newPlan: SaasPlan;
121
+ reason?: string;
122
+ storeFile?: string;
123
+ policy?: SaasPolicyOverrides;
124
+ }
125
+ export interface SaasUsageQueryOptions {
126
+ organizationId: string;
127
+ month?: string;
128
+ storeFile?: string;
129
+ policy?: SaasPolicyOverrides;
130
+ actorUserId?: string;
131
+ }
132
+ export interface SaasPlanChangeQueryOptions {
133
+ organizationId: string;
134
+ storeFile?: string;
135
+ policy?: SaasPolicyOverrides;
136
+ actorUserId?: string;
137
+ }
138
+ export interface SaasSummary {
139
+ policy: SaasPolicy;
140
+ usersRegistered: number;
141
+ workspacesActive: number;
142
+ reposActive: number;
143
+ runsPerMonth: Record<string, number>;
144
+ totalSnapshots: number;
145
+ phase: 'free' | 'paid';
146
+ thresholdReached: boolean;
147
+ freeUsersRemaining: number;
148
+ }
149
+ export interface SaasPolicyOverrides {
150
+ freeUserThreshold?: number;
151
+ maxRunsPerWorkspacePerMonth?: number;
152
+ maxReposPerWorkspace?: number;
153
+ retentionDays?: number;
154
+ strictActorEnforcement?: boolean;
155
+ maxWorkspacesPerOrganizationByPlan?: Partial<Record<SaasPlan, number>>;
156
+ }
157
+ export interface SaasQueryOptions {
158
+ storeFile?: string;
159
+ policy?: SaasPolicyOverrides;
160
+ organizationId?: string;
161
+ workspaceId?: string;
162
+ actorUserId?: string;
163
+ }
164
+ export interface IngestOptions {
165
+ organizationId?: string;
166
+ workspaceId: string;
167
+ userId: string;
168
+ role?: SaasRole;
169
+ plan?: SaasPlan;
170
+ repoName?: string;
171
+ actorUserId?: string;
172
+ storeFile?: string;
173
+ policy?: SaasPolicyOverrides;
174
+ }
175
+ export interface ScopedIdentity {
176
+ organizationId: string;
177
+ workspaceId: string;
178
+ workspaceKey: string;
179
+ repoName: string;
180
+ repoId: string;
181
+ }
182
+ export interface IngestMutationContext {
183
+ store: SaasStore;
184
+ scoped: ScopedIdentity;
185
+ options: IngestOptions;
186
+ nowIso: string;
187
+ requestedPlan: SaasPlan;
188
+ }
189
+ export type SaasPolicyInput = SaasPolicyOverrides | DriftConfig['saas'] | undefined;
190
+ export type DriftReportInput = DriftReport;
191
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
package/dist/saas.d.ts CHANGED
@@ -1,219 +1,9 @@
1
- import type { DriftReport, DriftConfig } from './types.js';
2
- export interface SaasPolicy {
3
- freeUserThreshold: number;
4
- maxRunsPerWorkspacePerMonth: number;
5
- maxReposPerWorkspace: number;
6
- retentionDays: number;
7
- strictActorEnforcement: boolean;
8
- maxWorkspacesPerOrganizationByPlan: Record<SaasPlan, number>;
9
- }
10
- export type SaasRole = 'owner' | 'member' | 'viewer';
11
- export type SaasPlan = 'free' | 'sponsor' | 'team' | 'business';
12
- export interface SaasUser {
13
- id: string;
14
- createdAt: string;
15
- lastSeenAt: string;
16
- }
17
- export interface SaasOrganization {
18
- id: string;
19
- plan: SaasPlan;
20
- createdAt: string;
21
- lastSeenAt: string;
22
- workspaceIds: string[];
23
- }
24
- export interface SaasWorkspace {
25
- id: string;
26
- organizationId: string;
27
- createdAt: string;
28
- lastSeenAt: string;
29
- userIds: string[];
30
- repoIds: string[];
31
- }
32
- export interface SaasRepo {
33
- id: string;
34
- organizationId: string;
35
- workspaceId: string;
36
- name: string;
37
- createdAt: string;
38
- lastSeenAt: string;
39
- }
40
- export interface SaasMembership {
41
- id: string;
42
- organizationId: string;
43
- workspaceId: string;
44
- userId: string;
45
- role: SaasRole;
46
- createdAt: string;
47
- lastSeenAt: string;
48
- }
49
- export interface SaasPlanChange {
50
- id: string;
51
- organizationId: string;
52
- fromPlan: SaasPlan;
53
- toPlan: SaasPlan;
54
- changedAt: string;
55
- changedByUserId: string;
56
- reason?: string;
57
- }
58
- export interface SaasSnapshot {
59
- id: string;
60
- createdAt: string;
61
- scannedAt: string;
62
- organizationId: string;
63
- workspaceId: string;
64
- userId: string;
65
- role: SaasRole;
66
- plan: SaasPlan;
67
- repoId: string;
68
- repoName: string;
69
- targetPath: string;
70
- totalScore: number;
71
- totalIssues: number;
72
- totalFiles: number;
73
- summary: {
74
- errors: number;
75
- warnings: number;
76
- infos: number;
77
- };
78
- }
79
- export interface SaasStore {
80
- version: number;
81
- policy: SaasPolicy;
82
- users: Record<string, SaasUser>;
83
- organizations: Record<string, SaasOrganization>;
84
- workspaces: Record<string, SaasWorkspace>;
85
- memberships: Record<string, SaasMembership>;
86
- repos: Record<string, SaasRepo>;
87
- snapshots: SaasSnapshot[];
88
- planChanges: SaasPlanChange[];
89
- }
90
- export type SaasOperation = 'snapshot:write' | 'snapshot:read' | 'summary:read' | 'billing:write' | 'billing:read';
91
- export interface SaasPermissionContext {
92
- operation: SaasOperation;
93
- organizationId: string;
94
- workspaceId?: string;
95
- actorUserId?: string;
96
- }
97
- export interface SaasPermissionResult {
98
- actorRole?: SaasRole;
99
- requiredRole: SaasRole;
100
- }
101
- export interface SaasEffectiveLimits {
102
- plan: SaasPlan;
103
- maxWorkspaces: number;
104
- maxReposPerWorkspace: number;
105
- maxRunsPerWorkspacePerMonth: number;
106
- retentionDays: number;
107
- }
108
- export interface SaasOrganizationUsageSnapshot {
109
- organizationId: string;
110
- plan: SaasPlan;
111
- capturedAt: string;
112
- workspaceCount: number;
113
- repoCount: number;
114
- runCount: number;
115
- runCountThisMonth: number;
116
- }
117
- export interface ChangeOrganizationPlanOptions {
118
- organizationId: string;
119
- actorUserId: string;
120
- newPlan: SaasPlan;
121
- reason?: string;
122
- storeFile?: string;
123
- policy?: SaasPolicyOverrides;
124
- }
125
- export interface SaasUsageQueryOptions {
126
- organizationId: string;
127
- month?: string;
128
- storeFile?: string;
129
- policy?: SaasPolicyOverrides;
130
- actorUserId?: string;
131
- }
132
- export interface SaasPlanChangeQueryOptions {
133
- organizationId: string;
134
- storeFile?: string;
135
- policy?: SaasPolicyOverrides;
136
- actorUserId?: string;
137
- }
138
- export interface SaasSummary {
139
- policy: SaasPolicy;
140
- usersRegistered: number;
141
- workspacesActive: number;
142
- reposActive: number;
143
- runsPerMonth: Record<string, number>;
144
- totalSnapshots: number;
145
- phase: 'free' | 'paid';
146
- thresholdReached: boolean;
147
- freeUsersRemaining: number;
148
- }
149
- export interface SaasPolicyOverrides {
150
- freeUserThreshold?: number;
151
- maxRunsPerWorkspacePerMonth?: number;
152
- maxReposPerWorkspace?: number;
153
- retentionDays?: number;
154
- strictActorEnforcement?: boolean;
155
- maxWorkspacesPerOrganizationByPlan?: Partial<Record<SaasPlan, number>>;
156
- }
157
- export interface SaasQueryOptions {
158
- storeFile?: string;
159
- policy?: SaasPolicyOverrides;
160
- organizationId?: string;
161
- workspaceId?: string;
162
- actorUserId?: string;
163
- }
164
- export interface IngestOptions {
165
- organizationId?: string;
166
- workspaceId: string;
167
- userId: string;
168
- role?: SaasRole;
169
- plan?: SaasPlan;
170
- repoName?: string;
171
- actorUserId?: string;
172
- storeFile?: string;
173
- policy?: SaasPolicyOverrides;
174
- }
175
- export declare class SaasPermissionError extends Error {
176
- readonly code = "SAAS_PERMISSION_DENIED";
177
- readonly operation: SaasOperation;
178
- readonly organizationId: string;
179
- readonly workspaceId?: string;
180
- readonly actorUserId?: string;
181
- readonly requiredRole: SaasRole;
182
- readonly actorRole?: SaasRole;
183
- constructor(context: SaasPermissionContext, requiredRole: SaasRole, actorRole?: SaasRole);
184
- }
185
- export declare class SaasActorRequiredError extends Error {
186
- readonly code = "SAAS_ACTOR_REQUIRED";
187
- readonly operation: SaasOperation;
188
- readonly organizationId: string;
189
- readonly workspaceId?: string;
190
- constructor(context: SaasPermissionContext);
191
- }
192
- export declare const DEFAULT_SAAS_POLICY: SaasPolicy;
193
- export declare function resolveSaasPolicy(policy?: SaasPolicyOverrides | DriftConfig['saas']): SaasPolicy;
194
- export declare function defaultSaasStorePath(root?: string): string;
195
- export declare function getRequiredRoleForOperation(operation: SaasOperation): SaasRole;
196
- export declare function assertSaasPermission(context: SaasPermissionContext & {
197
- storeFile?: string;
198
- policy?: SaasPolicyOverrides;
199
- }): SaasPermissionResult;
200
- export declare function getSaasEffectiveLimits(input: {
201
- plan: SaasPlan;
202
- policy?: SaasPolicyOverrides;
203
- }): SaasEffectiveLimits;
204
- export declare function getOrganizationEffectiveLimits(options: {
205
- organizationId: string;
206
- storeFile?: string;
207
- policy?: SaasPolicyOverrides;
208
- }): SaasEffectiveLimits;
209
- export declare function changeOrganizationPlan(options: ChangeOrganizationPlanOptions): SaasPlanChange;
210
- export declare function listOrganizationPlanChanges(options: SaasPlanChangeQueryOptions): SaasPlanChange[];
211
- export declare function getOrganizationUsageSnapshot(options: SaasUsageQueryOptions): SaasOrganizationUsageSnapshot;
212
- export declare function ingestSnapshotFromReport(report: DriftReport, options: IngestOptions): SaasSnapshot;
213
- export declare function listSaasSnapshots(options?: SaasQueryOptions): SaasSnapshot[];
214
- export declare function getSaasSummary(options?: SaasQueryOptions): SaasSummary;
215
- export declare function generateSaasDashboardHtml(options?: {
216
- storeFile?: string;
217
- policy?: SaasPolicyOverrides;
218
- }): string;
1
+ export { DEFAULT_SAAS_POLICY } from './saas/constants.js';
2
+ export { SaasActorRequiredError, SaasPermissionError } from './saas/errors.js';
3
+ export { resolveSaasPolicy, } from './saas/helpers.js';
4
+ export { defaultSaasStorePath, getRequiredRoleForOperation, assertSaasPermission, getSaasEffectiveLimits, getOrganizationEffectiveLimits, } from './saas/store.js';
5
+ export { ingestSnapshotFromReport } from './saas/ingest.js';
6
+ export { changeOrganizationPlan, listOrganizationPlanChanges, getOrganizationUsageSnapshot, } from './saas/organization.js';
7
+ export { listSaasSnapshots, getSaasSummary, generateSaasDashboardHtml, } from './saas/dashboard.js';
8
+ export type { SaasUser, SaasOrganization, SaasWorkspace, SaasRepo, SaasMembership, SaasRole, SaasPlan, SaasPolicy, SaasPolicyOverrides, SaasStore, SaasSummary, SaasSnapshot, SaasQueryOptions, IngestOptions, SaasPlanChange, SaasOperation, SaasPermissionContext, SaasPermissionResult, SaasEffectiveLimits, SaasOrganizationUsageSnapshot, ChangeOrganizationPlanOptions, SaasUsageQueryOptions, SaasPlanChangeQueryOptions, } from './saas/types.js';
219
9
  //# sourceMappingURL=saas.d.ts.map