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,206 @@
1
+ /**
2
+ * Fix Packs Types
3
+ *
4
+ * First-class objects that group findings into actionable batches.
5
+ * Used by CLI, Autopilot, and Verified AutoFix.
6
+ */
7
+
8
+ import { Tier } from '../tier-config';
9
+
10
+ // ============================================================================
11
+ // FINDING CATEGORY ENUM
12
+ // ============================================================================
13
+
14
+ export const FINDING_CATEGORIES = [
15
+ 'secrets',
16
+ 'routes',
17
+ 'mocks',
18
+ 'auth',
19
+ 'placeholders',
20
+ 'deps',
21
+ 'types',
22
+ 'tests',
23
+ 'security',
24
+ 'performance',
25
+ ] as const;
26
+
27
+ export type FindingCategory = typeof FINDING_CATEGORIES[number];
28
+
29
+ // ============================================================================
30
+ // SEVERITY LEVELS
31
+ // ============================================================================
32
+
33
+ export const SEVERITY_LEVELS = ['critical', 'high', 'medium', 'low', 'info'] as const;
34
+ export type SeverityLevel = typeof SEVERITY_LEVELS[number];
35
+
36
+ export const SEVERITY_ORDER: Record<SeverityLevel, number> = {
37
+ critical: 0,
38
+ high: 1,
39
+ medium: 2,
40
+ low: 3,
41
+ info: 4,
42
+ };
43
+
44
+ // ============================================================================
45
+ // FIX STRATEGY
46
+ // ============================================================================
47
+
48
+ export const FIX_STRATEGIES = [
49
+ 'auto', // Fully automated fix
50
+ 'guided', // AI-guided with human review
51
+ 'manual', // Requires manual intervention
52
+ 'ai-assisted', // AI generates suggestions
53
+ ] as const;
54
+
55
+ export type FixStrategy = typeof FIX_STRATEGIES[number];
56
+
57
+ // ============================================================================
58
+ // FINDING INTERFACE
59
+ // ============================================================================
60
+
61
+ export interface Finding {
62
+ id: string;
63
+ category: FindingCategory;
64
+ severity: SeverityLevel;
65
+ title: string;
66
+ description: string;
67
+ file: string;
68
+ line?: number;
69
+ column?: number;
70
+ endLine?: number;
71
+ endColumn?: number;
72
+ code?: string;
73
+ suggestion?: string;
74
+ rule?: string;
75
+ metadata?: Record<string, unknown>;
76
+ }
77
+
78
+ // ============================================================================
79
+ // FIX PACK INTERFACE
80
+ // ============================================================================
81
+
82
+ export interface FixPack {
83
+ id: string;
84
+ title: string;
85
+ severity: SeverityLevel;
86
+ findings: Finding[];
87
+ files: string[];
88
+ strategy: FixStrategy;
89
+ estimatedImpact: EstimatedImpact;
90
+ requiresHumanReview: boolean;
91
+ category: FindingCategory;
92
+ createdAt: string;
93
+ metadata?: FixPackMetadata;
94
+ }
95
+
96
+ export interface EstimatedImpact {
97
+ filesAffected: number;
98
+ linesChanged: number;
99
+ riskLevel: 'low' | 'medium' | 'high';
100
+ confidence: number;
101
+ timeEstimateMinutes: number;
102
+ }
103
+
104
+ export interface FixPackMetadata {
105
+ repoFingerprint?: string;
106
+ generatedBy?: string;
107
+ version?: string;
108
+ tags?: string[];
109
+ }
110
+
111
+ // ============================================================================
112
+ // REPO FINGERPRINT
113
+ // ============================================================================
114
+
115
+ export interface RepoFingerprint {
116
+ id: string;
117
+ name: string;
118
+ framework?: string;
119
+ language?: string;
120
+ hasTypeScript: boolean;
121
+ hasTests: boolean;
122
+ packageManager?: 'npm' | 'yarn' | 'pnpm';
123
+ gitRemote?: string;
124
+ hash: string;
125
+ }
126
+
127
+ // ============================================================================
128
+ // GENERATOR OPTIONS
129
+ // ============================================================================
130
+
131
+ export interface GenerateFixPacksOptions {
132
+ findings: Finding[];
133
+ repoFingerprint: RepoFingerprint;
134
+ groupByCategory?: boolean;
135
+ groupByFileProximity?: boolean;
136
+ maxPackSize?: number;
137
+ minPackSize?: number;
138
+ requiredTier?: Tier;
139
+ }
140
+
141
+ export interface GenerateFixPacksResult {
142
+ packs: FixPack[];
143
+ ungrouped: Finding[];
144
+ stats: {
145
+ totalFindings: number;
146
+ totalPacks: number;
147
+ byCategory: Record<FindingCategory, number>;
148
+ bySeverity: Record<SeverityLevel, number>;
149
+ };
150
+ }
151
+
152
+ // ============================================================================
153
+ // FIX PACK EXECUTION
154
+ // ============================================================================
155
+
156
+ export interface FixPackExecutionOptions {
157
+ pack: FixPack;
158
+ projectPath: string;
159
+ dryRun?: boolean;
160
+ autoApply?: boolean;
161
+ maxAttempts?: number;
162
+ onProgress?: (stage: string, message: string) => void;
163
+ }
164
+
165
+ export interface FixPackExecutionResult {
166
+ success: boolean;
167
+ packId: string;
168
+ appliedFixes: number;
169
+ skippedFixes: number;
170
+ errors: string[];
171
+ duration: number;
172
+ filesModified: string[];
173
+ diffs: Array<{
174
+ file: string;
175
+ content: string;
176
+ }>;
177
+ }
178
+
179
+ // ============================================================================
180
+ // HELPER FUNCTIONS
181
+ // ============================================================================
182
+
183
+ export function compareSeverity(a: SeverityLevel, b: SeverityLevel): number {
184
+ return SEVERITY_ORDER[a] - SEVERITY_ORDER[b];
185
+ }
186
+
187
+ export function isHigherSeverity(a: SeverityLevel, b: SeverityLevel): boolean {
188
+ return compareSeverity(a, b) < 0;
189
+ }
190
+
191
+ export function getHighestSeverity(severities: SeverityLevel[]): SeverityLevel {
192
+ if (severities.length === 0) return 'info';
193
+ return severities.reduce((highest, current) =>
194
+ isHigherSeverity(current, highest) ? current : highest
195
+ );
196
+ }
197
+
198
+ export function generatePackId(category: FindingCategory, index: number, hash: string): string {
199
+ const categoryPrefix = category.slice(0, 3).toUpperCase();
200
+ const hashSuffix = hash.slice(0, 6);
201
+ return `FP-${categoryPrefix}-${String(index).padStart(3, '0')}-${hashSuffix}`;
202
+ }
203
+
204
+ export function sortPacksBySeverity(packs: FixPack[]): FixPack[] {
205
+ return [...packs].sort((a, b) => compareSeverity(a.severity, b.severity));
206
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ export * from "./types";
2
+ export * from "./utils";
3
+ export * from "./env";
4
+ export * from "./cache/redis-cache";
5
+ export * from "./metrics/prometheus";
6
+ export * from "./visualization/dependency-graph";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC"}
package/src/index.ts ADDED
@@ -0,0 +1,12 @@
1
+ export * from "./cache/redis-cache";
2
+ export * from "./entitlements";
3
+ export * from "./env";
4
+ export * from "./fix-packs";
5
+ export * from "./metrics/prometheus";
6
+ export * from "./rbac";
7
+ export * from "./tier-config";
8
+ export * from "./types";
9
+ export * from "./utils";
10
+ export * from "./visualization/dependency-graph";
11
+ export * from "./autopilot";
12
+ export * from "./verified-autofix";
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Prometheus Metrics
3
+ *
4
+ * Production-ready metrics collection for Guardrail AI
5
+ * Exposes metrics in Prometheus format for monitoring and alerting
6
+ */
7
+ export interface MetricLabels {
8
+ [key: string]: string;
9
+ }
10
+ export interface MetricValue {
11
+ value: number;
12
+ labels: MetricLabels;
13
+ timestamp?: number;
14
+ }
15
+ export interface Metric {
16
+ name: string;
17
+ help: string;
18
+ type: "counter" | "gauge" | "histogram" | "summary";
19
+ values: MetricValue[];
20
+ }
21
+ declare class Counter {
22
+ readonly name: string;
23
+ readonly help: string;
24
+ readonly labelNames: string[];
25
+ private values;
26
+ constructor(name: string, help: string, labelNames?: string[]);
27
+ inc(labels?: MetricLabels, value?: number): void;
28
+ get(labels?: MetricLabels): number;
29
+ reset(): void;
30
+ collect(): MetricValue[];
31
+ private labelsToKey;
32
+ private keyToLabels;
33
+ }
34
+ declare class Gauge {
35
+ readonly name: string;
36
+ readonly help: string;
37
+ readonly labelNames: string[];
38
+ private values;
39
+ constructor(name: string, help: string, labelNames?: string[]);
40
+ set(labels: MetricLabels, value: number): void;
41
+ set(value: number): void;
42
+ inc(labels?: MetricLabels, value?: number): void;
43
+ dec(labels?: MetricLabels, value?: number): void;
44
+ get(labels?: MetricLabels): number;
45
+ collect(): MetricValue[];
46
+ private labelsToKey;
47
+ private keyToLabels;
48
+ }
49
+ declare class Histogram {
50
+ readonly name: string;
51
+ readonly help: string;
52
+ readonly labelNames: string[];
53
+ private buckets;
54
+ private values;
55
+ constructor(
56
+ name: string,
57
+ help: string,
58
+ labelNames?: string[],
59
+ buckets?: number[],
60
+ );
61
+ observe(labels: MetricLabels, value: number): void;
62
+ observe(value: number): void;
63
+ startTimer(labels?: MetricLabels): () => number;
64
+ collect(): MetricValue[];
65
+ private labelsToKey;
66
+ private keyToLabels;
67
+ }
68
+ /**
69
+ * Guardrail Metrics Registry
70
+ */
71
+ declare class MetricsRegistry {
72
+ readonly scansTotal: Counter;
73
+ readonly scanDuration: Histogram;
74
+ readonly injectionsDetected: Counter;
75
+ readonly injectionScanDuration: Histogram;
76
+ readonly vulnerabilitiesFound: Counter;
77
+ readonly vulnerablePackages: Gauge;
78
+ readonly secretsDetected: Counter;
79
+ readonly complianceScore: Gauge;
80
+ readonly complianceViolations: Counter;
81
+ readonly apiRequestsTotal: Counter;
82
+ readonly apiRequestDuration: Histogram;
83
+ readonly agentActionsTotal: Counter;
84
+ readonly agentActionsBlocked: Counter;
85
+ readonly cacheHits: Counter;
86
+ readonly cacheMisses: Counter;
87
+ readonly activeConnections: Gauge;
88
+ readonly memoryUsageBytes: Gauge;
89
+ /**
90
+ * Generate Prometheus-formatted output
91
+ */
92
+ generatePrometheusOutput(): string;
93
+ /**
94
+ * Update system metrics
95
+ */
96
+ updateSystemMetrics(): void;
97
+ /**
98
+ * Reset all metrics (for testing)
99
+ */
100
+ resetAll(): void;
101
+ }
102
+ export declare const metrics: MetricsRegistry;
103
+ export { Counter, Gauge, Histogram };
104
+ //# sourceMappingURL=prometheus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prometheus.d.ts","sourceRoot":"","sources":["prometheus.ts"],"names":[],"mappings":"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"}