vaspera 2.9.0 → 2.10.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.
- package/CHANGELOG.md +122 -7
- package/README.md +58 -1
- package/dist/__tests__/autofix/branch-manager.test.d.ts +2 -0
- package/dist/__tests__/autofix/branch-manager.test.d.ts.map +1 -0
- package/dist/__tests__/autofix/branch-manager.test.js +60 -0
- package/dist/__tests__/autofix/branch-manager.test.js.map +1 -0
- package/dist/__tests__/autofix/commit-generator.test.d.ts +2 -0
- package/dist/__tests__/autofix/commit-generator.test.d.ts.map +1 -0
- package/dist/__tests__/autofix/commit-generator.test.js +147 -0
- package/dist/__tests__/autofix/commit-generator.test.js.map +1 -0
- package/dist/__tests__/autofix/constitution.test.d.ts +9 -0
- package/dist/__tests__/autofix/constitution.test.d.ts.map +1 -0
- package/dist/__tests__/autofix/constitution.test.js +421 -0
- package/dist/__tests__/autofix/constitution.test.js.map +1 -0
- package/dist/__tests__/autofix/pr-generator.test.d.ts +2 -0
- package/dist/__tests__/autofix/pr-generator.test.d.ts.map +1 -0
- package/dist/__tests__/autofix/pr-generator.test.js +152 -0
- package/dist/__tests__/autofix/pr-generator.test.js.map +1 -0
- package/dist/__tests__/property-test-helpers.d.ts +87 -0
- package/dist/__tests__/property-test-helpers.d.ts.map +1 -0
- package/dist/__tests__/property-test-helpers.js +136 -0
- package/dist/__tests__/property-test-helpers.js.map +1 -0
- package/dist/__tests__/scanners/dast/index.test.d.ts +2 -0
- package/dist/__tests__/scanners/dast/index.test.d.ts.map +1 -0
- package/dist/__tests__/scanners/dast/index.test.js +183 -0
- package/dist/__tests__/scanners/dast/index.test.js.map +1 -0
- package/dist/__tests__/scanners/dast/nuclei.test.d.ts +2 -0
- package/dist/__tests__/scanners/dast/nuclei.test.d.ts.map +1 -0
- package/dist/__tests__/scanners/dast/nuclei.test.js +166 -0
- package/dist/__tests__/scanners/dast/nuclei.test.js.map +1 -0
- package/dist/__tests__/scanners/dast/zap.test.d.ts +2 -0
- package/dist/__tests__/scanners/dast/zap.test.d.ts.map +1 -0
- package/dist/__tests__/scanners/dast/zap.test.js +158 -0
- package/dist/__tests__/scanners/dast/zap.test.js.map +1 -0
- package/dist/__tests__/scanners/fp-feedback.test.d.ts +2 -0
- package/dist/__tests__/scanners/fp-feedback.test.d.ts.map +1 -0
- package/dist/__tests__/scanners/fp-feedback.test.js +202 -0
- package/dist/__tests__/scanners/fp-feedback.test.js.map +1 -0
- package/dist/__tests__/scanners/fp-filter.property.test.d.ts +9 -0
- package/dist/__tests__/scanners/fp-filter.property.test.d.ts.map +1 -0
- package/dist/__tests__/scanners/fp-filter.property.test.js +253 -0
- package/dist/__tests__/scanners/fp-filter.property.test.js.map +1 -0
- package/dist/__tests__/scanners/fp-filter.test.d.ts +2 -0
- package/dist/__tests__/scanners/fp-filter.test.d.ts.map +1 -0
- package/dist/__tests__/scanners/fp-filter.test.js +234 -0
- package/dist/__tests__/scanners/fp-filter.test.js.map +1 -0
- package/dist/__tests__/scanners/fp-tracker.test.d.ts +2 -0
- package/dist/__tests__/scanners/fp-tracker.test.d.ts.map +1 -0
- package/dist/__tests__/scanners/fp-tracker.test.js +262 -0
- package/dist/__tests__/scanners/fp-tracker.test.js.map +1 -0
- package/dist/__tests__/scanners/logic/endpoint-analyzer.property.test.d.ts +10 -0
- package/dist/__tests__/scanners/logic/endpoint-analyzer.property.test.d.ts.map +1 -0
- package/dist/__tests__/scanners/logic/endpoint-analyzer.property.test.js +238 -0
- package/dist/__tests__/scanners/logic/endpoint-analyzer.property.test.js.map +1 -0
- package/dist/__tests__/scanners/logic/endpoint-analyzer.test.d.ts +2 -0
- package/dist/__tests__/scanners/logic/endpoint-analyzer.test.d.ts.map +1 -0
- package/dist/__tests__/scanners/logic/endpoint-analyzer.test.js +55 -0
- package/dist/__tests__/scanners/logic/endpoint-analyzer.test.js.map +1 -0
- package/dist/__tests__/scanners/logic/index.test.d.ts +2 -0
- package/dist/__tests__/scanners/logic/index.test.d.ts.map +1 -0
- package/dist/__tests__/scanners/logic/index.test.js +165 -0
- package/dist/__tests__/scanners/logic/index.test.js.map +1 -0
- package/dist/__tests__/scanners/logic/types.test.d.ts +2 -0
- package/dist/__tests__/scanners/logic/types.test.d.ts.map +1 -0
- package/dist/__tests__/scanners/logic/types.test.js +85 -0
- package/dist/__tests__/scanners/logic/types.test.js.map +1 -0
- package/dist/action/pr-comment.test.js +4 -0
- package/dist/action/pr-comment.test.js.map +1 -1
- package/dist/action/sarif-upload.test.js +4 -0
- package/dist/action/sarif-upload.test.js.map +1 -1
- package/dist/autofix/branch-manager.d.ts +115 -0
- package/dist/autofix/branch-manager.d.ts.map +1 -0
- package/dist/autofix/branch-manager.js +308 -0
- package/dist/autofix/branch-manager.js.map +1 -0
- package/dist/autofix/commit-generator.d.ts +55 -0
- package/dist/autofix/commit-generator.d.ts.map +1 -0
- package/dist/autofix/commit-generator.js +277 -0
- package/dist/autofix/commit-generator.js.map +1 -0
- package/dist/autofix/constitution.d.ts +77 -0
- package/dist/autofix/constitution.d.ts.map +1 -0
- package/dist/autofix/constitution.js +261 -0
- package/dist/autofix/constitution.js.map +1 -0
- package/dist/autofix/constitution.schema.d.ts +441 -0
- package/dist/autofix/constitution.schema.d.ts.map +1 -0
- package/dist/autofix/constitution.schema.js +144 -0
- package/dist/autofix/constitution.schema.js.map +1 -0
- package/dist/autofix/index.d.ts +13 -0
- package/dist/autofix/index.d.ts.map +1 -0
- package/dist/autofix/index.js +15 -0
- package/dist/autofix/index.js.map +1 -0
- package/dist/autofix/pr-generator.d.ts +57 -0
- package/dist/autofix/pr-generator.d.ts.map +1 -0
- package/dist/autofix/pr-generator.js +597 -0
- package/dist/autofix/pr-generator.js.map +1 -0
- package/dist/autofix/types.d.ts +151 -0
- package/dist/autofix/types.d.ts.map +1 -0
- package/dist/autofix/types.js +22 -0
- package/dist/autofix/types.js.map +1 -0
- package/dist/eval/fixtures.d.ts +20 -0
- package/dist/eval/fixtures.d.ts.map +1 -1
- package/dist/eval/fixtures.js +430 -0
- package/dist/eval/fixtures.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +84 -1
- package/dist/index.js.map +1 -1
- package/dist/scanners/cache.d.ts.map +1 -1
- package/dist/scanners/cache.js +4 -0
- package/dist/scanners/cache.js.map +1 -1
- package/dist/scanners/dast/index.d.ts +39 -0
- package/dist/scanners/dast/index.d.ts.map +1 -0
- package/dist/scanners/dast/index.js +259 -0
- package/dist/scanners/dast/index.js.map +1 -0
- package/dist/scanners/dast/nuclei.d.ts +26 -0
- package/dist/scanners/dast/nuclei.d.ts.map +1 -0
- package/dist/scanners/dast/nuclei.js +354 -0
- package/dist/scanners/dast/nuclei.js.map +1 -0
- package/dist/scanners/dast/types.d.ts +306 -0
- package/dist/scanners/dast/types.d.ts.map +1 -0
- package/dist/scanners/dast/types.js +52 -0
- package/dist/scanners/dast/types.js.map +1 -0
- package/dist/scanners/dast/zap.d.ts +26 -0
- package/dist/scanners/dast/zap.d.ts.map +1 -0
- package/dist/scanners/dast/zap.js +453 -0
- package/dist/scanners/dast/zap.js.map +1 -0
- package/dist/scanners/fp-feedback.d.ts +140 -0
- package/dist/scanners/fp-feedback.d.ts.map +1 -0
- package/dist/scanners/fp-feedback.js +292 -0
- package/dist/scanners/fp-feedback.js.map +1 -0
- package/dist/scanners/fp-filter.d.ts +94 -0
- package/dist/scanners/fp-filter.d.ts.map +1 -0
- package/dist/scanners/fp-filter.js +397 -0
- package/dist/scanners/fp-filter.js.map +1 -0
- package/dist/scanners/fp-tracker.d.ts +125 -0
- package/dist/scanners/fp-tracker.d.ts.map +1 -0
- package/dist/scanners/fp-tracker.js +330 -0
- package/dist/scanners/fp-tracker.js.map +1 -0
- package/dist/scanners/index.d.ts.map +1 -1
- package/dist/scanners/index.js +56 -0
- package/dist/scanners/index.js.map +1 -1
- package/dist/scanners/index.test.js +6 -6
- package/dist/scanners/index.test.js.map +1 -1
- package/dist/scanners/logic/auth-flow-analyzer.d.ts +18 -0
- package/dist/scanners/logic/auth-flow-analyzer.d.ts.map +1 -0
- package/dist/scanners/logic/auth-flow-analyzer.js +384 -0
- package/dist/scanners/logic/auth-flow-analyzer.js.map +1 -0
- package/dist/scanners/logic/endpoint-analyzer.d.ts +29 -0
- package/dist/scanners/logic/endpoint-analyzer.d.ts.map +1 -0
- package/dist/scanners/logic/endpoint-analyzer.js +528 -0
- package/dist/scanners/logic/endpoint-analyzer.js.map +1 -0
- package/dist/scanners/logic/index.d.ts +41 -0
- package/dist/scanners/logic/index.d.ts.map +1 -0
- package/dist/scanners/logic/index.js +268 -0
- package/dist/scanners/logic/index.js.map +1 -0
- package/dist/scanners/logic/types.d.ts +254 -0
- package/dist/scanners/logic/types.d.ts.map +1 -0
- package/dist/scanners/logic/types.js +142 -0
- package/dist/scanners/logic/types.js.map +1 -0
- package/dist/scanners/types.d.ts +1 -1
- package/dist/scanners/types.d.ts.map +1 -1
- package/dist/scanners/types.js +4 -0
- package/dist/scanners/types.js.map +1 -1
- package/dist/telemetry/usage.d.ts +1 -1
- package/dist/telemetry/usage.d.ts.map +1 -1
- package/dist/telemetry/usage.js +14 -6
- package/dist/telemetry/usage.js.map +1 -1
- package/package.json +6 -8
|
@@ -0,0 +1,441 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Constitution Schema
|
|
3
|
+
*
|
|
4
|
+
* Zod schema for autofix constitution files that govern
|
|
5
|
+
* which patterns can be auto-applied and under what conditions.
|
|
6
|
+
*
|
|
7
|
+
* @module autofix/constitution.schema
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
/**
|
|
11
|
+
* Risk tolerance levels for autofix operations
|
|
12
|
+
*/
|
|
13
|
+
export declare const RiskToleranceSchema: z.ZodEnum<["conservative", "moderate", "aggressive"]>;
|
|
14
|
+
/**
|
|
15
|
+
* Severity levels
|
|
16
|
+
*/
|
|
17
|
+
export declare const SeveritySchema: z.ZodEnum<["info", "low", "medium", "high", "critical"]>;
|
|
18
|
+
/**
|
|
19
|
+
* Conditions for pattern approval
|
|
20
|
+
*/
|
|
21
|
+
export declare const PatternConditionsSchema: z.ZodOptional<z.ZodObject<{
|
|
22
|
+
/** Only allow in specific directories */
|
|
23
|
+
allowedPaths: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
24
|
+
/** Exclude from specific directories */
|
|
25
|
+
excludedPaths: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
26
|
+
/** Maximum lines changed per fix */
|
|
27
|
+
maxLinesChanged: z.ZodOptional<z.ZodNumber>;
|
|
28
|
+
/** Only if severity at or above this level */
|
|
29
|
+
minSeverity: z.ZodOptional<z.ZodEnum<["info", "low", "medium", "high", "critical"]>>;
|
|
30
|
+
}, "strip", z.ZodTypeAny, {
|
|
31
|
+
minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
|
|
32
|
+
allowedPaths?: string[] | undefined;
|
|
33
|
+
excludedPaths?: string[] | undefined;
|
|
34
|
+
maxLinesChanged?: number | undefined;
|
|
35
|
+
}, {
|
|
36
|
+
minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
|
|
37
|
+
allowedPaths?: string[] | undefined;
|
|
38
|
+
excludedPaths?: string[] | undefined;
|
|
39
|
+
maxLinesChanged?: number | undefined;
|
|
40
|
+
}>>;
|
|
41
|
+
/**
|
|
42
|
+
* Pattern approval configuration
|
|
43
|
+
*/
|
|
44
|
+
export declare const PatternApprovalSchema: z.ZodObject<{
|
|
45
|
+
/** Pattern ID from FIX_PATTERNS */
|
|
46
|
+
patternId: z.ZodString;
|
|
47
|
+
/** Whether this pattern can be auto-applied */
|
|
48
|
+
autoApprove: z.ZodBoolean;
|
|
49
|
+
/** Required reviewer if not auto-approved */
|
|
50
|
+
requiredReviewer: z.ZodOptional<z.ZodString>;
|
|
51
|
+
/** Additional conditions for auto-approval */
|
|
52
|
+
conditions: z.ZodOptional<z.ZodObject<{
|
|
53
|
+
/** Only allow in specific directories */
|
|
54
|
+
allowedPaths: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
55
|
+
/** Exclude from specific directories */
|
|
56
|
+
excludedPaths: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
57
|
+
/** Maximum lines changed per fix */
|
|
58
|
+
maxLinesChanged: z.ZodOptional<z.ZodNumber>;
|
|
59
|
+
/** Only if severity at or above this level */
|
|
60
|
+
minSeverity: z.ZodOptional<z.ZodEnum<["info", "low", "medium", "high", "critical"]>>;
|
|
61
|
+
}, "strip", z.ZodTypeAny, {
|
|
62
|
+
minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
|
|
63
|
+
allowedPaths?: string[] | undefined;
|
|
64
|
+
excludedPaths?: string[] | undefined;
|
|
65
|
+
maxLinesChanged?: number | undefined;
|
|
66
|
+
}, {
|
|
67
|
+
minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
|
|
68
|
+
allowedPaths?: string[] | undefined;
|
|
69
|
+
excludedPaths?: string[] | undefined;
|
|
70
|
+
maxLinesChanged?: number | undefined;
|
|
71
|
+
}>>;
|
|
72
|
+
}, "strip", z.ZodTypeAny, {
|
|
73
|
+
patternId: string;
|
|
74
|
+
autoApprove: boolean;
|
|
75
|
+
requiredReviewer?: string | undefined;
|
|
76
|
+
conditions?: {
|
|
77
|
+
minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
|
|
78
|
+
allowedPaths?: string[] | undefined;
|
|
79
|
+
excludedPaths?: string[] | undefined;
|
|
80
|
+
maxLinesChanged?: number | undefined;
|
|
81
|
+
} | undefined;
|
|
82
|
+
}, {
|
|
83
|
+
patternId: string;
|
|
84
|
+
autoApprove: boolean;
|
|
85
|
+
requiredReviewer?: string | undefined;
|
|
86
|
+
conditions?: {
|
|
87
|
+
minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
|
|
88
|
+
allowedPaths?: string[] | undefined;
|
|
89
|
+
excludedPaths?: string[] | undefined;
|
|
90
|
+
maxLinesChanged?: number | undefined;
|
|
91
|
+
} | undefined;
|
|
92
|
+
}>;
|
|
93
|
+
/**
|
|
94
|
+
* PR creation rules
|
|
95
|
+
*/
|
|
96
|
+
export declare const PRRulesSchema: z.ZodObject<{
|
|
97
|
+
/** Require human approval before merge */
|
|
98
|
+
requireApproval: z.ZodDefault<z.ZodBoolean>;
|
|
99
|
+
/** Minimum number of approvers */
|
|
100
|
+
minApprovers: z.ZodDefault<z.ZodNumber>;
|
|
101
|
+
/** Required labels on all autofix PRs */
|
|
102
|
+
requiredLabels: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
103
|
+
/** Assignees for autofix PRs */
|
|
104
|
+
defaultAssignees: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
105
|
+
/** Reviewers for autofix PRs */
|
|
106
|
+
defaultReviewers: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
107
|
+
/** Title prefix for autofix commits */
|
|
108
|
+
commitPrefix: z.ZodDefault<z.ZodString>;
|
|
109
|
+
/** Include Co-Authored-By in commits */
|
|
110
|
+
includeCoAuthor: z.ZodDefault<z.ZodBoolean>;
|
|
111
|
+
/** Maximum PRs to create in a single run */
|
|
112
|
+
maxPRsPerRun: z.ZodDefault<z.ZodNumber>;
|
|
113
|
+
/** Group fixes by this strategy */
|
|
114
|
+
groupBy: z.ZodDefault<z.ZodEnum<["severity", "file", "pattern", "single"]>>;
|
|
115
|
+
}, "strip", z.ZodTypeAny, {
|
|
116
|
+
groupBy: "file" | "severity" | "pattern" | "single";
|
|
117
|
+
requireApproval: boolean;
|
|
118
|
+
minApprovers: number;
|
|
119
|
+
requiredLabels: string[];
|
|
120
|
+
defaultAssignees: string[];
|
|
121
|
+
defaultReviewers: string[];
|
|
122
|
+
commitPrefix: string;
|
|
123
|
+
includeCoAuthor: boolean;
|
|
124
|
+
maxPRsPerRun: number;
|
|
125
|
+
}, {
|
|
126
|
+
groupBy?: "file" | "severity" | "pattern" | "single" | undefined;
|
|
127
|
+
requireApproval?: boolean | undefined;
|
|
128
|
+
minApprovers?: number | undefined;
|
|
129
|
+
requiredLabels?: string[] | undefined;
|
|
130
|
+
defaultAssignees?: string[] | undefined;
|
|
131
|
+
defaultReviewers?: string[] | undefined;
|
|
132
|
+
commitPrefix?: string | undefined;
|
|
133
|
+
includeCoAuthor?: boolean | undefined;
|
|
134
|
+
maxPRsPerRun?: number | undefined;
|
|
135
|
+
}>;
|
|
136
|
+
/**
|
|
137
|
+
* Directory-level restrictions
|
|
138
|
+
*/
|
|
139
|
+
export declare const DirectoryRulesSchema: z.ZodObject<{
|
|
140
|
+
/** Never auto-fix in these directories */
|
|
141
|
+
neverAutofix: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
142
|
+
/** Always require review in these directories */
|
|
143
|
+
requireReview: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
144
|
+
/** Skip scanning these directories entirely */
|
|
145
|
+
ignore: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
146
|
+
}, "strip", z.ZodTypeAny, {
|
|
147
|
+
ignore: string[];
|
|
148
|
+
neverAutofix: string[];
|
|
149
|
+
requireReview: string[];
|
|
150
|
+
}, {
|
|
151
|
+
ignore?: string[] | undefined;
|
|
152
|
+
neverAutofix?: string[] | undefined;
|
|
153
|
+
requireReview?: string[] | undefined;
|
|
154
|
+
}>;
|
|
155
|
+
/**
|
|
156
|
+
* Safety constraints
|
|
157
|
+
*/
|
|
158
|
+
export declare const SafetyConstraintsSchema: z.ZodObject<{
|
|
159
|
+
/** Require clean git working tree before applying fixes */
|
|
160
|
+
requireCleanWorkingTree: z.ZodDefault<z.ZodBoolean>;
|
|
161
|
+
/** Create backup branch before applying fixes */
|
|
162
|
+
createBackupBranch: z.ZodDefault<z.ZodBoolean>;
|
|
163
|
+
/** Run tests after applying fixes */
|
|
164
|
+
runTestsAfterFix: z.ZodDefault<z.ZodBoolean>;
|
|
165
|
+
/** Test command to run */
|
|
166
|
+
testCommand: z.ZodDefault<z.ZodString>;
|
|
167
|
+
/** Revert fix if tests fail */
|
|
168
|
+
revertOnTestFailure: z.ZodDefault<z.ZodBoolean>;
|
|
169
|
+
/** Maximum total files to modify in one run */
|
|
170
|
+
maxFilesPerRun: z.ZodDefault<z.ZodNumber>;
|
|
171
|
+
/** Dry run by default (require explicit --apply) */
|
|
172
|
+
dryRunDefault: z.ZodDefault<z.ZodBoolean>;
|
|
173
|
+
}, "strip", z.ZodTypeAny, {
|
|
174
|
+
requireCleanWorkingTree: boolean;
|
|
175
|
+
createBackupBranch: boolean;
|
|
176
|
+
runTestsAfterFix: boolean;
|
|
177
|
+
testCommand: string;
|
|
178
|
+
revertOnTestFailure: boolean;
|
|
179
|
+
maxFilesPerRun: number;
|
|
180
|
+
dryRunDefault: boolean;
|
|
181
|
+
}, {
|
|
182
|
+
requireCleanWorkingTree?: boolean | undefined;
|
|
183
|
+
createBackupBranch?: boolean | undefined;
|
|
184
|
+
runTestsAfterFix?: boolean | undefined;
|
|
185
|
+
testCommand?: string | undefined;
|
|
186
|
+
revertOnTestFailure?: boolean | undefined;
|
|
187
|
+
maxFilesPerRun?: number | undefined;
|
|
188
|
+
dryRunDefault?: boolean | undefined;
|
|
189
|
+
}>;
|
|
190
|
+
/**
|
|
191
|
+
* Full constitution configuration
|
|
192
|
+
*/
|
|
193
|
+
export declare const ConstitutionSchema: z.ZodObject<{
|
|
194
|
+
/** Version of the constitution schema */
|
|
195
|
+
version: z.ZodLiteral<"1.0">;
|
|
196
|
+
/** Organization name */
|
|
197
|
+
organization: z.ZodOptional<z.ZodString>;
|
|
198
|
+
/** Overall risk tolerance */
|
|
199
|
+
riskTolerance: z.ZodDefault<z.ZodEnum<["conservative", "moderate", "aggressive"]>>;
|
|
200
|
+
/** Pattern-specific approvals */
|
|
201
|
+
patterns: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
202
|
+
/** Pattern ID from FIX_PATTERNS */
|
|
203
|
+
patternId: z.ZodString;
|
|
204
|
+
/** Whether this pattern can be auto-applied */
|
|
205
|
+
autoApprove: z.ZodBoolean;
|
|
206
|
+
/** Required reviewer if not auto-approved */
|
|
207
|
+
requiredReviewer: z.ZodOptional<z.ZodString>;
|
|
208
|
+
/** Additional conditions for auto-approval */
|
|
209
|
+
conditions: z.ZodOptional<z.ZodObject<{
|
|
210
|
+
/** Only allow in specific directories */
|
|
211
|
+
allowedPaths: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
212
|
+
/** Exclude from specific directories */
|
|
213
|
+
excludedPaths: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
214
|
+
/** Maximum lines changed per fix */
|
|
215
|
+
maxLinesChanged: z.ZodOptional<z.ZodNumber>;
|
|
216
|
+
/** Only if severity at or above this level */
|
|
217
|
+
minSeverity: z.ZodOptional<z.ZodEnum<["info", "low", "medium", "high", "critical"]>>;
|
|
218
|
+
}, "strip", z.ZodTypeAny, {
|
|
219
|
+
minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
|
|
220
|
+
allowedPaths?: string[] | undefined;
|
|
221
|
+
excludedPaths?: string[] | undefined;
|
|
222
|
+
maxLinesChanged?: number | undefined;
|
|
223
|
+
}, {
|
|
224
|
+
minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
|
|
225
|
+
allowedPaths?: string[] | undefined;
|
|
226
|
+
excludedPaths?: string[] | undefined;
|
|
227
|
+
maxLinesChanged?: number | undefined;
|
|
228
|
+
}>>;
|
|
229
|
+
}, "strip", z.ZodTypeAny, {
|
|
230
|
+
patternId: string;
|
|
231
|
+
autoApprove: boolean;
|
|
232
|
+
requiredReviewer?: string | undefined;
|
|
233
|
+
conditions?: {
|
|
234
|
+
minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
|
|
235
|
+
allowedPaths?: string[] | undefined;
|
|
236
|
+
excludedPaths?: string[] | undefined;
|
|
237
|
+
maxLinesChanged?: number | undefined;
|
|
238
|
+
} | undefined;
|
|
239
|
+
}, {
|
|
240
|
+
patternId: string;
|
|
241
|
+
autoApprove: boolean;
|
|
242
|
+
requiredReviewer?: string | undefined;
|
|
243
|
+
conditions?: {
|
|
244
|
+
minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
|
|
245
|
+
allowedPaths?: string[] | undefined;
|
|
246
|
+
excludedPaths?: string[] | undefined;
|
|
247
|
+
maxLinesChanged?: number | undefined;
|
|
248
|
+
} | undefined;
|
|
249
|
+
}>, "many">>;
|
|
250
|
+
/** PR creation rules */
|
|
251
|
+
prRules: z.ZodDefault<z.ZodObject<{
|
|
252
|
+
/** Require human approval before merge */
|
|
253
|
+
requireApproval: z.ZodDefault<z.ZodBoolean>;
|
|
254
|
+
/** Minimum number of approvers */
|
|
255
|
+
minApprovers: z.ZodDefault<z.ZodNumber>;
|
|
256
|
+
/** Required labels on all autofix PRs */
|
|
257
|
+
requiredLabels: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
258
|
+
/** Assignees for autofix PRs */
|
|
259
|
+
defaultAssignees: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
260
|
+
/** Reviewers for autofix PRs */
|
|
261
|
+
defaultReviewers: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
262
|
+
/** Title prefix for autofix commits */
|
|
263
|
+
commitPrefix: z.ZodDefault<z.ZodString>;
|
|
264
|
+
/** Include Co-Authored-By in commits */
|
|
265
|
+
includeCoAuthor: z.ZodDefault<z.ZodBoolean>;
|
|
266
|
+
/** Maximum PRs to create in a single run */
|
|
267
|
+
maxPRsPerRun: z.ZodDefault<z.ZodNumber>;
|
|
268
|
+
/** Group fixes by this strategy */
|
|
269
|
+
groupBy: z.ZodDefault<z.ZodEnum<["severity", "file", "pattern", "single"]>>;
|
|
270
|
+
}, "strip", z.ZodTypeAny, {
|
|
271
|
+
groupBy: "file" | "severity" | "pattern" | "single";
|
|
272
|
+
requireApproval: boolean;
|
|
273
|
+
minApprovers: number;
|
|
274
|
+
requiredLabels: string[];
|
|
275
|
+
defaultAssignees: string[];
|
|
276
|
+
defaultReviewers: string[];
|
|
277
|
+
commitPrefix: string;
|
|
278
|
+
includeCoAuthor: boolean;
|
|
279
|
+
maxPRsPerRun: number;
|
|
280
|
+
}, {
|
|
281
|
+
groupBy?: "file" | "severity" | "pattern" | "single" | undefined;
|
|
282
|
+
requireApproval?: boolean | undefined;
|
|
283
|
+
minApprovers?: number | undefined;
|
|
284
|
+
requiredLabels?: string[] | undefined;
|
|
285
|
+
defaultAssignees?: string[] | undefined;
|
|
286
|
+
defaultReviewers?: string[] | undefined;
|
|
287
|
+
commitPrefix?: string | undefined;
|
|
288
|
+
includeCoAuthor?: boolean | undefined;
|
|
289
|
+
maxPRsPerRun?: number | undefined;
|
|
290
|
+
}>>;
|
|
291
|
+
/** Directory restrictions */
|
|
292
|
+
directories: z.ZodDefault<z.ZodObject<{
|
|
293
|
+
/** Never auto-fix in these directories */
|
|
294
|
+
neverAutofix: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
295
|
+
/** Always require review in these directories */
|
|
296
|
+
requireReview: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
297
|
+
/** Skip scanning these directories entirely */
|
|
298
|
+
ignore: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
299
|
+
}, "strip", z.ZodTypeAny, {
|
|
300
|
+
ignore: string[];
|
|
301
|
+
neverAutofix: string[];
|
|
302
|
+
requireReview: string[];
|
|
303
|
+
}, {
|
|
304
|
+
ignore?: string[] | undefined;
|
|
305
|
+
neverAutofix?: string[] | undefined;
|
|
306
|
+
requireReview?: string[] | undefined;
|
|
307
|
+
}>>;
|
|
308
|
+
/** Safety constraints */
|
|
309
|
+
safety: z.ZodDefault<z.ZodObject<{
|
|
310
|
+
/** Require clean git working tree before applying fixes */
|
|
311
|
+
requireCleanWorkingTree: z.ZodDefault<z.ZodBoolean>;
|
|
312
|
+
/** Create backup branch before applying fixes */
|
|
313
|
+
createBackupBranch: z.ZodDefault<z.ZodBoolean>;
|
|
314
|
+
/** Run tests after applying fixes */
|
|
315
|
+
runTestsAfterFix: z.ZodDefault<z.ZodBoolean>;
|
|
316
|
+
/** Test command to run */
|
|
317
|
+
testCommand: z.ZodDefault<z.ZodString>;
|
|
318
|
+
/** Revert fix if tests fail */
|
|
319
|
+
revertOnTestFailure: z.ZodDefault<z.ZodBoolean>;
|
|
320
|
+
/** Maximum total files to modify in one run */
|
|
321
|
+
maxFilesPerRun: z.ZodDefault<z.ZodNumber>;
|
|
322
|
+
/** Dry run by default (require explicit --apply) */
|
|
323
|
+
dryRunDefault: z.ZodDefault<z.ZodBoolean>;
|
|
324
|
+
}, "strip", z.ZodTypeAny, {
|
|
325
|
+
requireCleanWorkingTree: boolean;
|
|
326
|
+
createBackupBranch: boolean;
|
|
327
|
+
runTestsAfterFix: boolean;
|
|
328
|
+
testCommand: string;
|
|
329
|
+
revertOnTestFailure: boolean;
|
|
330
|
+
maxFilesPerRun: number;
|
|
331
|
+
dryRunDefault: boolean;
|
|
332
|
+
}, {
|
|
333
|
+
requireCleanWorkingTree?: boolean | undefined;
|
|
334
|
+
createBackupBranch?: boolean | undefined;
|
|
335
|
+
runTestsAfterFix?: boolean | undefined;
|
|
336
|
+
testCommand?: string | undefined;
|
|
337
|
+
revertOnTestFailure?: boolean | undefined;
|
|
338
|
+
maxFilesPerRun?: number | undefined;
|
|
339
|
+
dryRunDefault?: boolean | undefined;
|
|
340
|
+
}>>;
|
|
341
|
+
/** Custom metadata to include in PRs */
|
|
342
|
+
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
343
|
+
}, "strip", z.ZodTypeAny, {
|
|
344
|
+
version: "1.0";
|
|
345
|
+
patterns: {
|
|
346
|
+
patternId: string;
|
|
347
|
+
autoApprove: boolean;
|
|
348
|
+
requiredReviewer?: string | undefined;
|
|
349
|
+
conditions?: {
|
|
350
|
+
minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
|
|
351
|
+
allowedPaths?: string[] | undefined;
|
|
352
|
+
excludedPaths?: string[] | undefined;
|
|
353
|
+
maxLinesChanged?: number | undefined;
|
|
354
|
+
} | undefined;
|
|
355
|
+
}[];
|
|
356
|
+
riskTolerance: "moderate" | "aggressive" | "conservative";
|
|
357
|
+
prRules: {
|
|
358
|
+
groupBy: "file" | "severity" | "pattern" | "single";
|
|
359
|
+
requireApproval: boolean;
|
|
360
|
+
minApprovers: number;
|
|
361
|
+
requiredLabels: string[];
|
|
362
|
+
defaultAssignees: string[];
|
|
363
|
+
defaultReviewers: string[];
|
|
364
|
+
commitPrefix: string;
|
|
365
|
+
includeCoAuthor: boolean;
|
|
366
|
+
maxPRsPerRun: number;
|
|
367
|
+
};
|
|
368
|
+
directories: {
|
|
369
|
+
ignore: string[];
|
|
370
|
+
neverAutofix: string[];
|
|
371
|
+
requireReview: string[];
|
|
372
|
+
};
|
|
373
|
+
safety: {
|
|
374
|
+
requireCleanWorkingTree: boolean;
|
|
375
|
+
createBackupBranch: boolean;
|
|
376
|
+
runTestsAfterFix: boolean;
|
|
377
|
+
testCommand: string;
|
|
378
|
+
revertOnTestFailure: boolean;
|
|
379
|
+
maxFilesPerRun: number;
|
|
380
|
+
dryRunDefault: boolean;
|
|
381
|
+
};
|
|
382
|
+
metadata?: Record<string, string> | undefined;
|
|
383
|
+
organization?: string | undefined;
|
|
384
|
+
}, {
|
|
385
|
+
version: "1.0";
|
|
386
|
+
metadata?: Record<string, string> | undefined;
|
|
387
|
+
patterns?: {
|
|
388
|
+
patternId: string;
|
|
389
|
+
autoApprove: boolean;
|
|
390
|
+
requiredReviewer?: string | undefined;
|
|
391
|
+
conditions?: {
|
|
392
|
+
minSeverity?: "info" | "critical" | "high" | "medium" | "low" | undefined;
|
|
393
|
+
allowedPaths?: string[] | undefined;
|
|
394
|
+
excludedPaths?: string[] | undefined;
|
|
395
|
+
maxLinesChanged?: number | undefined;
|
|
396
|
+
} | undefined;
|
|
397
|
+
}[] | undefined;
|
|
398
|
+
organization?: string | undefined;
|
|
399
|
+
riskTolerance?: "moderate" | "aggressive" | "conservative" | undefined;
|
|
400
|
+
prRules?: {
|
|
401
|
+
groupBy?: "file" | "severity" | "pattern" | "single" | undefined;
|
|
402
|
+
requireApproval?: boolean | undefined;
|
|
403
|
+
minApprovers?: number | undefined;
|
|
404
|
+
requiredLabels?: string[] | undefined;
|
|
405
|
+
defaultAssignees?: string[] | undefined;
|
|
406
|
+
defaultReviewers?: string[] | undefined;
|
|
407
|
+
commitPrefix?: string | undefined;
|
|
408
|
+
includeCoAuthor?: boolean | undefined;
|
|
409
|
+
maxPRsPerRun?: number | undefined;
|
|
410
|
+
} | undefined;
|
|
411
|
+
directories?: {
|
|
412
|
+
ignore?: string[] | undefined;
|
|
413
|
+
neverAutofix?: string[] | undefined;
|
|
414
|
+
requireReview?: string[] | undefined;
|
|
415
|
+
} | undefined;
|
|
416
|
+
safety?: {
|
|
417
|
+
requireCleanWorkingTree?: boolean | undefined;
|
|
418
|
+
createBackupBranch?: boolean | undefined;
|
|
419
|
+
runTestsAfterFix?: boolean | undefined;
|
|
420
|
+
testCommand?: string | undefined;
|
|
421
|
+
revertOnTestFailure?: boolean | undefined;
|
|
422
|
+
maxFilesPerRun?: number | undefined;
|
|
423
|
+
dryRunDefault?: boolean | undefined;
|
|
424
|
+
} | undefined;
|
|
425
|
+
}>;
|
|
426
|
+
/**
|
|
427
|
+
* Inferred types from schemas
|
|
428
|
+
*/
|
|
429
|
+
export type RiskTolerance = z.infer<typeof RiskToleranceSchema>;
|
|
430
|
+
export type Severity = z.infer<typeof SeveritySchema>;
|
|
431
|
+
export type PatternConditions = z.infer<typeof PatternConditionsSchema>;
|
|
432
|
+
export type PatternApproval = z.infer<typeof PatternApprovalSchema>;
|
|
433
|
+
export type PRRules = z.infer<typeof PRRulesSchema>;
|
|
434
|
+
export type DirectoryRules = z.infer<typeof DirectoryRulesSchema>;
|
|
435
|
+
export type SafetyConstraints = z.infer<typeof SafetyConstraintsSchema>;
|
|
436
|
+
export type Constitution = z.infer<typeof ConstitutionSchema>;
|
|
437
|
+
/**
|
|
438
|
+
* Default constitution with conservative settings
|
|
439
|
+
*/
|
|
440
|
+
export declare const DEFAULT_CONSTITUTION: Constitution;
|
|
441
|
+
//# sourceMappingURL=constitution.schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constitution.schema.d.ts","sourceRoot":"","sources":["../../src/autofix/constitution.schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Constitution Schema
|
|
3
|
+
*
|
|
4
|
+
* Zod schema for autofix constitution files that govern
|
|
5
|
+
* which patterns can be auto-applied and under what conditions.
|
|
6
|
+
*
|
|
7
|
+
* @module autofix/constitution.schema
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
/**
|
|
11
|
+
* Risk tolerance levels for autofix operations
|
|
12
|
+
*/
|
|
13
|
+
export const RiskToleranceSchema = z.enum([
|
|
14
|
+
"conservative", // Only auto-apply patterns marked safeToAutoApply with low risk
|
|
15
|
+
"moderate", // Auto-apply safe patterns and low/medium risk
|
|
16
|
+
"aggressive", // Auto-apply all patterns
|
|
17
|
+
]);
|
|
18
|
+
/**
|
|
19
|
+
* Severity levels
|
|
20
|
+
*/
|
|
21
|
+
export const SeveritySchema = z.enum([
|
|
22
|
+
"info",
|
|
23
|
+
"low",
|
|
24
|
+
"medium",
|
|
25
|
+
"high",
|
|
26
|
+
"critical",
|
|
27
|
+
]);
|
|
28
|
+
/**
|
|
29
|
+
* Conditions for pattern approval
|
|
30
|
+
*/
|
|
31
|
+
export const PatternConditionsSchema = z.object({
|
|
32
|
+
/** Only allow in specific directories */
|
|
33
|
+
allowedPaths: z.array(z.string()).optional(),
|
|
34
|
+
/** Exclude from specific directories */
|
|
35
|
+
excludedPaths: z.array(z.string()).optional(),
|
|
36
|
+
/** Maximum lines changed per fix */
|
|
37
|
+
maxLinesChanged: z.number().positive().optional(),
|
|
38
|
+
/** Only if severity at or above this level */
|
|
39
|
+
minSeverity: SeveritySchema.optional(),
|
|
40
|
+
}).optional();
|
|
41
|
+
/**
|
|
42
|
+
* Pattern approval configuration
|
|
43
|
+
*/
|
|
44
|
+
export const PatternApprovalSchema = z.object({
|
|
45
|
+
/** Pattern ID from FIX_PATTERNS */
|
|
46
|
+
patternId: z.string().min(1),
|
|
47
|
+
/** Whether this pattern can be auto-applied */
|
|
48
|
+
autoApprove: z.boolean(),
|
|
49
|
+
/** Required reviewer if not auto-approved */
|
|
50
|
+
requiredReviewer: z.string().optional(),
|
|
51
|
+
/** Additional conditions for auto-approval */
|
|
52
|
+
conditions: PatternConditionsSchema,
|
|
53
|
+
});
|
|
54
|
+
/**
|
|
55
|
+
* PR creation rules
|
|
56
|
+
*/
|
|
57
|
+
export const PRRulesSchema = z.object({
|
|
58
|
+
/** Require human approval before merge */
|
|
59
|
+
requireApproval: z.boolean().default(true),
|
|
60
|
+
/** Minimum number of approvers */
|
|
61
|
+
minApprovers: z.number().min(0).default(1),
|
|
62
|
+
/** Required labels on all autofix PRs */
|
|
63
|
+
requiredLabels: z.array(z.string()).default(["autofix", "security"]),
|
|
64
|
+
/** Assignees for autofix PRs */
|
|
65
|
+
defaultAssignees: z.array(z.string()).default([]),
|
|
66
|
+
/** Reviewers for autofix PRs */
|
|
67
|
+
defaultReviewers: z.array(z.string()).default([]),
|
|
68
|
+
/** Title prefix for autofix commits */
|
|
69
|
+
commitPrefix: z.string().default("fix(security):"),
|
|
70
|
+
/** Include Co-Authored-By in commits */
|
|
71
|
+
includeCoAuthor: z.boolean().default(true),
|
|
72
|
+
/** Maximum PRs to create in a single run */
|
|
73
|
+
maxPRsPerRun: z.number().min(1).default(10),
|
|
74
|
+
/** Group fixes by this strategy */
|
|
75
|
+
groupBy: z.enum(["severity", "file", "pattern", "single"]).default("severity"),
|
|
76
|
+
});
|
|
77
|
+
/**
|
|
78
|
+
* Directory-level restrictions
|
|
79
|
+
*/
|
|
80
|
+
export const DirectoryRulesSchema = z.object({
|
|
81
|
+
/** Never auto-fix in these directories */
|
|
82
|
+
neverAutofix: z.array(z.string()).default([
|
|
83
|
+
"node_modules",
|
|
84
|
+
"vendor",
|
|
85
|
+
".git",
|
|
86
|
+
"dist",
|
|
87
|
+
"build",
|
|
88
|
+
]),
|
|
89
|
+
/** Always require review in these directories */
|
|
90
|
+
requireReview: z.array(z.string()).default([
|
|
91
|
+
"src/auth",
|
|
92
|
+
"src/security",
|
|
93
|
+
"src/crypto",
|
|
94
|
+
]),
|
|
95
|
+
/** Skip scanning these directories entirely */
|
|
96
|
+
ignore: z.array(z.string()).default([]),
|
|
97
|
+
});
|
|
98
|
+
/**
|
|
99
|
+
* Safety constraints
|
|
100
|
+
*/
|
|
101
|
+
export const SafetyConstraintsSchema = z.object({
|
|
102
|
+
/** Require clean git working tree before applying fixes */
|
|
103
|
+
requireCleanWorkingTree: z.boolean().default(true),
|
|
104
|
+
/** Create backup branch before applying fixes */
|
|
105
|
+
createBackupBranch: z.boolean().default(true),
|
|
106
|
+
/** Run tests after applying fixes */
|
|
107
|
+
runTestsAfterFix: z.boolean().default(true),
|
|
108
|
+
/** Test command to run */
|
|
109
|
+
testCommand: z.string().default("npm test"),
|
|
110
|
+
/** Revert fix if tests fail */
|
|
111
|
+
revertOnTestFailure: z.boolean().default(true),
|
|
112
|
+
/** Maximum total files to modify in one run */
|
|
113
|
+
maxFilesPerRun: z.number().min(1).default(20),
|
|
114
|
+
/** Dry run by default (require explicit --apply) */
|
|
115
|
+
dryRunDefault: z.boolean().default(true),
|
|
116
|
+
});
|
|
117
|
+
/**
|
|
118
|
+
* Full constitution configuration
|
|
119
|
+
*/
|
|
120
|
+
export const ConstitutionSchema = z.object({
|
|
121
|
+
/** Version of the constitution schema */
|
|
122
|
+
version: z.literal("1.0"),
|
|
123
|
+
/** Organization name */
|
|
124
|
+
organization: z.string().optional(),
|
|
125
|
+
/** Overall risk tolerance */
|
|
126
|
+
riskTolerance: RiskToleranceSchema.default("conservative"),
|
|
127
|
+
/** Pattern-specific approvals */
|
|
128
|
+
patterns: z.array(PatternApprovalSchema).default([]),
|
|
129
|
+
/** PR creation rules */
|
|
130
|
+
prRules: PRRulesSchema.default({}),
|
|
131
|
+
/** Directory restrictions */
|
|
132
|
+
directories: DirectoryRulesSchema.default({}),
|
|
133
|
+
/** Safety constraints */
|
|
134
|
+
safety: SafetyConstraintsSchema.default({}),
|
|
135
|
+
/** Custom metadata to include in PRs */
|
|
136
|
+
metadata: z.record(z.string(), z.string()).optional(),
|
|
137
|
+
});
|
|
138
|
+
/**
|
|
139
|
+
* Default constitution with conservative settings
|
|
140
|
+
*/
|
|
141
|
+
export const DEFAULT_CONSTITUTION = ConstitutionSchema.parse({
|
|
142
|
+
version: "1.0",
|
|
143
|
+
});
|
|
144
|
+
//# sourceMappingURL=constitution.schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constitution.schema.js","sourceRoot":"","sources":["../../src/autofix/constitution.schema.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC;IACxC,cAAc,EAAE,gEAAgE;IAChF,UAAU,EAAM,+CAA+C;IAC/D,YAAY,EAAI,0BAA0B;CAC3C,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC;IACnC,MAAM;IACN,KAAK;IACL,QAAQ;IACR,MAAM;IACN,UAAU;CACX,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,yCAAyC;IACzC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAE5C,wCAAwC;IACxC,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAE7C,oCAAoC;IACpC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAEjD,8CAA8C;IAC9C,WAAW,EAAE,cAAc,CAAC,QAAQ,EAAE;CACvC,CAAC,CAAC,QAAQ,EAAE,CAAC;AAEd;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,mCAAmC;IACnC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAE5B,+CAA+C;IAC/C,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE;IAExB,6CAA6C;IAC7C,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEvC,8CAA8C;IAC9C,UAAU,EAAE,uBAAuB;CACpC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,0CAA0C;IAC1C,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAE1C,kCAAkC;IAClC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAE1C,yCAAyC;IACzC,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAEpE,gCAAgC;IAChC,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAEjD,gCAAgC;IAChC,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAEjD,uCAAuC;IACvC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC;IAElD,wCAAwC;IACxC,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAE1C,4CAA4C;IAC5C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAE3C,mCAAmC;IACnC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;CAC/E,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,0CAA0C;IAC1C,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC;QACxC,cAAc;QACd,QAAQ;QACR,MAAM;QACN,MAAM;QACN,OAAO;KACR,CAAC;IAEF,iDAAiD;IACjD,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC;QACzC,UAAU;QACV,cAAc;QACd,YAAY;KACb,CAAC;IAEF,+CAA+C;IAC/C,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACxC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,2DAA2D;IAC3D,uBAAuB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAElD,iDAAiD;IACjD,kBAAkB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAE7C,qCAAqC;IACrC,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAE3C,0BAA0B;IAC1B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC;IAE3C,+BAA+B;IAC/B,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAE9C,+CAA+C;IAC/C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAE7C,oDAAoD;IACpD,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CACzC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,yCAAyC;IACzC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAEzB,wBAAwB;IACxB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAEnC,6BAA6B;IAC7B,aAAa,EAAE,mBAAmB,CAAC,OAAO,CAAC,cAAc,CAAC;IAE1D,iCAAiC;IACjC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAEpD,wBAAwB;IACxB,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;IAElC,6BAA6B;IAC7B,WAAW,EAAE,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;IAE7C,yBAAyB;IACzB,MAAM,EAAE,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC;IAE3C,wCAAwC;IACxC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACtD,CAAC,CAAC;AAcH;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAiB,kBAAkB,CAAC,KAAK,CAAC;IACzE,OAAO,EAAE,KAAK;CACf,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Autofix PR Integration
|
|
3
|
+
*
|
|
4
|
+
* Automated PR creation with AI-powered security fixes.
|
|
5
|
+
*
|
|
6
|
+
* @module autofix
|
|
7
|
+
*/
|
|
8
|
+
export type { AutofixGroupBy, AutofixPRConfig, AutofixPRResult, AutofixGroup, BatchPRResult, GitResult, BranchInfo, AutofixCommit, PRMetadata, } from "./types.js";
|
|
9
|
+
export { DEFAULT_AUTOFIX_PR_CONFIG } from "./types.js";
|
|
10
|
+
export { git, isGitAvailable, isGitRepo, getCurrentBranch, getDefaultBranch, branchExists, remoteBranchExists, createBranch, checkoutBranch, deleteBranch, stageFiles, getModifiedFiles, getStagedFiles, isWorkingTreeClean, pushBranch, stash, stashPop, getBranchInfo, resetToCommit, getRemoteUrl, parseGitHubRemote, generateBranchName, ensureCleanWorkingTree, restoreOriginalState, } from "./branch-manager.js";
|
|
11
|
+
export { generateCommitMessage, generateCommitBody, createCommit, generatePRTitle, generatePRBody, groupFixesBySeverity, groupFixesByFile, groupFixesByPattern, } from "./commit-generator.js";
|
|
12
|
+
export { isGhCliAvailable, isGhAuthenticated, groupFindings, createAutofixPR, createAutofixPRs, previewAutofixPRs, } from "./pr-generator.js";
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/autofix/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,YAAY,EACV,cAAc,EACd,eAAe,EACf,eAAe,EACf,YAAY,EACZ,aAAa,EACb,SAAS,EACT,UAAU,EACV,aAAa,EACb,UAAU,GACX,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAGvD,OAAO,EACL,GAAG,EACH,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,KAAK,EACL,QAAQ,EACR,aAAa,EACb,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Autofix PR Integration
|
|
3
|
+
*
|
|
4
|
+
* Automated PR creation with AI-powered security fixes.
|
|
5
|
+
*
|
|
6
|
+
* @module autofix
|
|
7
|
+
*/
|
|
8
|
+
export { DEFAULT_AUTOFIX_PR_CONFIG } from "./types.js";
|
|
9
|
+
// Branch Manager
|
|
10
|
+
export { git, isGitAvailable, isGitRepo, getCurrentBranch, getDefaultBranch, branchExists, remoteBranchExists, createBranch, checkoutBranch, deleteBranch, stageFiles, getModifiedFiles, getStagedFiles, isWorkingTreeClean, pushBranch, stash, stashPop, getBranchInfo, resetToCommit, getRemoteUrl, parseGitHubRemote, generateBranchName, ensureCleanWorkingTree, restoreOriginalState, } from "./branch-manager.js";
|
|
11
|
+
// Commit Generator
|
|
12
|
+
export { generateCommitMessage, generateCommitBody, createCommit, generatePRTitle, generatePRBody, groupFixesBySeverity, groupFixesByFile, groupFixesByPattern, } from "./commit-generator.js";
|
|
13
|
+
// PR Generator
|
|
14
|
+
export { isGhCliAvailable, isGhAuthenticated, groupFindings, createAutofixPR, createAutofixPRs, previewAutofixPRs, } from "./pr-generator.js";
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/autofix/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAeH,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAEvD,iBAAiB;AACjB,OAAO,EACL,GAAG,EACH,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,UAAU,EACV,KAAK,EACL,QAAQ,EACR,aAAa,EACb,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAE7B,mBAAmB;AACnB,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAE/B,eAAe;AACf,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC"}
|