agentlint 0.1.0 → 0.2.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 CHANGED
@@ -7,6 +7,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.2.0] - 2026-01-11
11
+
12
+ ### Added
13
+
14
+ - **Auto-fix**: Automatically fix simple issues with `--fix` and `--dry-run` flags
15
+ - OBS-002: Adds permission manifest comment
16
+ - **Baseline support**: Suppress known findings with baseline files
17
+ - `--update-baseline`: Create/update baseline from current findings
18
+ - `--ignore-baseline`: Report all findings regardless of baseline
19
+ - `--prune-baseline`: Remove fixed findings from baseline
20
+ - `--baseline <path>`: Custom baseline file path
21
+ - **Integrations**:
22
+ - [agentlint-action](https://github.com/akz4ol/agentlint-action): Native GitHub Action
23
+ - [agentlint-vscode](https://github.com/akz4ol/agentlint-vscode): VS Code extension
24
+ - Pre-commit hook support
25
+
26
+ ### Changed
27
+
28
+ - CLI now respects `.agentlint-baseline.json` automatically when present
29
+
10
30
  ## [0.1.0] - 2025-01-11
11
31
 
12
32
  ### Added
@@ -28,5 +48,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
28
48
  - **Diff analysis**: Behavioral change detection between versions
29
49
  - **Permission manifest**: Recommended permissions generation
30
50
 
31
- [Unreleased]: https://github.com/akz4ol/agentlint/compare/v0.1.0...HEAD
51
+ [Unreleased]: https://github.com/akz4ol/agentlint/compare/v0.2.0...HEAD
52
+ [0.2.0]: https://github.com/akz4ol/agentlint/compare/v0.1.0...v0.2.0
32
53
  [0.1.0]: https://github.com/akz4ol/agentlint/releases/tag/v0.1.0
package/README.md CHANGED
@@ -173,6 +173,43 @@ agentlint init
173
173
  agentlint init --ci github # Include GitHub Actions workflow
174
174
  ```
175
175
 
176
+ ## Auto-Fix
177
+
178
+ Automatically fix simple issues:
179
+
180
+ ```bash
181
+ # Preview fixes without applying
182
+ agentlint scan --dry-run --fix
183
+
184
+ # Apply fixes
185
+ agentlint scan --fix
186
+ ```
187
+
188
+ Currently fixable rules:
189
+ - `OBS-002`: Adds permission manifest comment
190
+
191
+ ## Baseline
192
+
193
+ Suppress known findings to focus on new issues:
194
+
195
+ ```bash
196
+ # Create/update baseline with current findings
197
+ agentlint scan --update-baseline
198
+
199
+ # Scan respects baseline automatically
200
+ agentlint scan
201
+ # Output: "Baseline: 15 known finding(s) suppressed"
202
+
203
+ # Ignore baseline to see all findings
204
+ agentlint scan --ignore-baseline
205
+
206
+ # Remove fixed findings from baseline
207
+ agentlint scan --prune-baseline
208
+
209
+ # Use custom baseline path
210
+ agentlint scan --baseline path/to/baseline.json
211
+ ```
212
+
176
213
  ## Diff Mode
177
214
 
178
215
  Detect behavioral changes between versions:
@@ -205,6 +242,14 @@ Status: FAIL (capability expansion detected)
205
242
 
206
243
  AgentLint is purpose-built for AI agent configs. General linters miss agent-specific risks.
207
244
 
245
+ ## Integrations
246
+
247
+ | Tool | Link |
248
+ |------|------|
249
+ | **VS Code** | [agentlint-vscode](https://github.com/akz4ol/agentlint-vscode) |
250
+ | **GitHub Action** | [agentlint-action](https://github.com/akz4ol/agentlint-action) |
251
+ | **Pre-commit** | [docs/pre-commit.md](docs/pre-commit.md) |
252
+
208
253
  ## Roadmap
209
254
 
210
255
  - [x] Claude Code support (`.claude/`, `CLAUDE.md`)
@@ -212,8 +257,11 @@ AgentLint is purpose-built for AI agent configs. General linters miss agent-spec
212
257
  - [x] 20 security rules
213
258
  - [x] SARIF output for GitHub
214
259
  - [x] Diff mode
215
- - [ ] VS Code extension
216
- - [ ] GitHub Action (native)
260
+ - [x] VS Code extension
261
+ - [x] GitHub Action (native)
262
+ - [x] Pre-commit hook
263
+ - [x] Auto-fix for common issues
264
+ - [x] Baseline support for suppressing known findings
217
265
  - [ ] Policy-as-code engine
218
266
  - [ ] Signed skill packs
219
267
  - [ ] Agent config registry
@@ -223,6 +271,7 @@ AgentLint is purpose-built for AI agent configs. General linters miss agent-spec
223
271
  - [CLI Reference](docs/cli.md)
224
272
  - [FAQ](docs/faq.md)
225
273
  - [Architecture](docs/design.md)
274
+ - [Pre-commit Hook](docs/pre-commit.md)
226
275
  - [Contributing](CONTRIBUTING.md)
227
276
  - [Security Policy](SECURITY.md)
228
277
 
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Baseline manager for tracking and suppressing known findings
3
+ */
4
+ import { Finding } from '../ir/types';
5
+ import { Baseline, BaselineFilterResult } from './types';
6
+ export * from './types';
7
+ /**
8
+ * Baseline manager class
9
+ */
10
+ export declare class BaselineManager {
11
+ private baselinePath;
12
+ private baseline;
13
+ constructor(rootDir: string, customPath?: string);
14
+ /**
15
+ * Load baseline from file
16
+ */
17
+ load(): boolean;
18
+ /**
19
+ * Check if a baseline exists
20
+ */
21
+ exists(): boolean;
22
+ /**
23
+ * Get the baseline path
24
+ */
25
+ getPath(): string;
26
+ /**
27
+ * Create a new baseline from findings
28
+ */
29
+ create(findings: Finding[], reason?: string): Baseline;
30
+ /**
31
+ * Update baseline with new findings (add to existing)
32
+ */
33
+ update(findings: Finding[], reason?: string): Baseline;
34
+ /**
35
+ * Save baseline to file
36
+ */
37
+ save(): void;
38
+ /**
39
+ * Filter findings against baseline, returning only new findings
40
+ */
41
+ filterFindings(findings: Finding[]): {
42
+ filtered: Finding[];
43
+ result: BaselineFilterResult;
44
+ };
45
+ /**
46
+ * Remove fixed findings from baseline
47
+ */
48
+ prune(currentFindings: Finding[]): number;
49
+ /**
50
+ * Get baseline stats
51
+ */
52
+ getStats(): {
53
+ total: number;
54
+ byRule: Record<string, number>;
55
+ };
56
+ /**
57
+ * Convert a Finding to a BaselinedFinding
58
+ */
59
+ private findingToBaseline;
60
+ }
61
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/baseline/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAoB,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE3E,cAAc,SAAS,CAAC;AAIxB;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAyB;gBAE7B,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;IAIhD;;OAEG;IACH,IAAI,IAAI,OAAO;IAef;;OAEG;IACH,MAAM,IAAI,OAAO;IAIjB;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ;IAatD;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ;IAoBtD;;OAEG;IACH,IAAI,IAAI,IAAI;IAYZ;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG;QACnC,QAAQ,EAAE,OAAO,EAAE,CAAC;QACpB,MAAM,EAAE,oBAAoB,CAAC;KAC9B;IAuCD;;OAEG;IACH,KAAK,CAAC,eAAe,EAAE,OAAO,EAAE,GAAG,MAAM;IAsBzC;;OAEG;IACH,QAAQ,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;IAgB7D;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAS1B"}
@@ -0,0 +1,207 @@
1
+ "use strict";
2
+ /**
3
+ * Baseline manager for tracking and suppressing known findings
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
39
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.BaselineManager = void 0;
43
+ const fs = __importStar(require("fs"));
44
+ const path = __importStar(require("path"));
45
+ __exportStar(require("./types"), exports);
46
+ const BASELINE_FILENAME = '.agentlint-baseline.json';
47
+ /**
48
+ * Baseline manager class
49
+ */
50
+ class BaselineManager {
51
+ baselinePath;
52
+ baseline = null;
53
+ constructor(rootDir, customPath) {
54
+ this.baselinePath = customPath || path.join(rootDir, BASELINE_FILENAME);
55
+ }
56
+ /**
57
+ * Load baseline from file
58
+ */
59
+ load() {
60
+ if (!fs.existsSync(this.baselinePath)) {
61
+ return false;
62
+ }
63
+ try {
64
+ const content = fs.readFileSync(this.baselinePath, 'utf-8');
65
+ this.baseline = JSON.parse(content);
66
+ return true;
67
+ }
68
+ catch (err) {
69
+ console.error(`Failed to load baseline: ${err}`);
70
+ return false;
71
+ }
72
+ }
73
+ /**
74
+ * Check if a baseline exists
75
+ */
76
+ exists() {
77
+ return fs.existsSync(this.baselinePath);
78
+ }
79
+ /**
80
+ * Get the baseline path
81
+ */
82
+ getPath() {
83
+ return this.baselinePath;
84
+ }
85
+ /**
86
+ * Create a new baseline from findings
87
+ */
88
+ create(findings, reason) {
89
+ const now = new Date().toISOString();
90
+ this.baseline = {
91
+ version: 1,
92
+ created_at: now,
93
+ updated_at: now,
94
+ findings: findings.map(f => this.findingToBaseline(f, reason)),
95
+ };
96
+ return this.baseline;
97
+ }
98
+ /**
99
+ * Update baseline with new findings (add to existing)
100
+ */
101
+ update(findings, reason) {
102
+ if (!this.baseline) {
103
+ return this.create(findings, reason);
104
+ }
105
+ const now = new Date().toISOString();
106
+ const existingFingerprints = new Set(this.baseline.findings.map(f => f.fingerprint));
107
+ // Add new findings that aren't already baselined
108
+ for (const finding of findings) {
109
+ const fingerprint = finding.fingerprints.stable;
110
+ if (!existingFingerprints.has(fingerprint)) {
111
+ this.baseline.findings.push(this.findingToBaseline(finding, reason));
112
+ }
113
+ }
114
+ this.baseline.updated_at = now;
115
+ return this.baseline;
116
+ }
117
+ /**
118
+ * Save baseline to file
119
+ */
120
+ save() {
121
+ if (!this.baseline) {
122
+ throw new Error('No baseline to save');
123
+ }
124
+ fs.writeFileSync(this.baselinePath, JSON.stringify(this.baseline, null, 2), 'utf-8');
125
+ }
126
+ /**
127
+ * Filter findings against baseline, returning only new findings
128
+ */
129
+ filterFindings(findings) {
130
+ if (!this.baseline) {
131
+ return {
132
+ filtered: findings,
133
+ result: {
134
+ newFindings: findings.length,
135
+ suppressedFindings: 0,
136
+ fixedFindings: 0,
137
+ },
138
+ };
139
+ }
140
+ const baselineFingerprints = new Set(this.baseline.findings.map(f => f.fingerprint));
141
+ const matchedFingerprints = new Set();
142
+ const filtered = findings.filter(finding => {
143
+ const fingerprint = finding.fingerprints.stable;
144
+ if (baselineFingerprints.has(fingerprint)) {
145
+ matchedFingerprints.add(fingerprint);
146
+ return false; // Suppress
147
+ }
148
+ return true; // New finding
149
+ });
150
+ // Count fixed findings (in baseline but not in current findings)
151
+ const fixedFindings = this.baseline.findings.filter(bf => !matchedFingerprints.has(bf.fingerprint)).length;
152
+ return {
153
+ filtered,
154
+ result: {
155
+ newFindings: filtered.length,
156
+ suppressedFindings: findings.length - filtered.length,
157
+ fixedFindings,
158
+ },
159
+ };
160
+ }
161
+ /**
162
+ * Remove fixed findings from baseline
163
+ */
164
+ prune(currentFindings) {
165
+ if (!this.baseline) {
166
+ return 0;
167
+ }
168
+ const currentFingerprints = new Set(currentFindings.map(f => f.fingerprints.stable));
169
+ const before = this.baseline.findings.length;
170
+ this.baseline.findings = this.baseline.findings.filter(bf => currentFingerprints.has(bf.fingerprint));
171
+ const removed = before - this.baseline.findings.length;
172
+ if (removed > 0) {
173
+ this.baseline.updated_at = new Date().toISOString();
174
+ }
175
+ return removed;
176
+ }
177
+ /**
178
+ * Get baseline stats
179
+ */
180
+ getStats() {
181
+ if (!this.baseline) {
182
+ return { total: 0, byRule: {} };
183
+ }
184
+ const byRule = {};
185
+ for (const f of this.baseline.findings) {
186
+ byRule[f.rule_id] = (byRule[f.rule_id] || 0) + 1;
187
+ }
188
+ return {
189
+ total: this.baseline.findings.length,
190
+ byRule,
191
+ };
192
+ }
193
+ /**
194
+ * Convert a Finding to a BaselinedFinding
195
+ */
196
+ findingToBaseline(finding, reason) {
197
+ return {
198
+ rule_id: finding.rule_id,
199
+ path: finding.location.path,
200
+ fingerprint: finding.fingerprints.stable,
201
+ baselined_at: new Date().toISOString(),
202
+ reason,
203
+ };
204
+ }
205
+ }
206
+ exports.BaselineManager = BaselineManager;
207
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/baseline/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Baseline types for tracking known findings
3
+ */
4
+ /**
5
+ * A baselined finding that should be suppressed
6
+ */
7
+ export interface BaselinedFinding {
8
+ /** Rule ID */
9
+ rule_id: string;
10
+ /** File path */
11
+ path: string;
12
+ /** Stable fingerprint for matching */
13
+ fingerprint: string;
14
+ /** When the finding was baselined */
15
+ baselined_at: string;
16
+ /** Optional reason for baselining */
17
+ reason?: string;
18
+ }
19
+ /**
20
+ * Baseline file format
21
+ */
22
+ export interface Baseline {
23
+ /** Baseline schema version */
24
+ version: 1;
25
+ /** When the baseline was created */
26
+ created_at: string;
27
+ /** When the baseline was last updated */
28
+ updated_at: string;
29
+ /** Baselined findings */
30
+ findings: BaselinedFinding[];
31
+ }
32
+ /**
33
+ * Result of filtering findings against baseline
34
+ */
35
+ export interface BaselineFilterResult {
36
+ /** New findings not in baseline */
37
+ newFindings: number;
38
+ /** Findings that match baseline */
39
+ suppressedFindings: number;
40
+ /** Baseline entries that no longer match any finding (fixed) */
41
+ fixedFindings: number;
42
+ }
43
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/baseline/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,cAAc;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,8BAA8B;IAC9B,OAAO,EAAE,CAAC,CAAC;IACX,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gEAAgE;IAChE,aAAa,EAAE,MAAM,CAAC;CACvB"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * Baseline types for tracking known findings
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/baseline/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
package/dist/cli/index.js CHANGED
@@ -46,7 +46,9 @@ const loader_1 = require("../policy/loader");
46
46
  const engine_1 = require("../rules/engine");
47
47
  const reports_1 = require("../reports");
48
48
  const diff_1 = require("../diff");
49
- const VERSION = '0.1.0';
49
+ const fixer_1 = require("../fixer");
50
+ const baseline_1 = require("../baseline");
51
+ const VERSION = '0.2.0';
50
52
  const program = new commander_1.Command();
51
53
  program
52
54
  .name('agentlint')
@@ -73,6 +75,12 @@ program
73
75
  .option('--tool <tool>', 'Tool mode: claude|cursor|auto', 'auto')
74
76
  .option('--emit-ir', 'Include IR in JSON output')
75
77
  .option('--permissions-only', 'Output only recommended permission manifest')
78
+ .option('--fix', 'Auto-fix fixable issues')
79
+ .option('--dry-run', 'Show what would be fixed without making changes')
80
+ .option('--baseline <path>', 'Path to baseline file for suppressing known findings')
81
+ .option('--update-baseline', 'Update baseline with current findings')
82
+ .option('--ignore-baseline', 'Ignore baseline and report all findings')
83
+ .option('--prune-baseline', 'Remove fixed findings from baseline')
76
84
  .action(async (scanPath, options) => {
77
85
  const globalOpts = program.opts();
78
86
  const targetPath = scanPath || process.cwd();
@@ -120,6 +128,98 @@ program
120
128
  });
121
129
  try {
122
130
  const result = await scanner.scan();
131
+ // Handle fix mode
132
+ if (options.fix || options.dryRun) {
133
+ const fixer = new fixer_1.Fixer({
134
+ rootDir: path.resolve(targetPath),
135
+ dryRun: options.dryRun || false,
136
+ });
137
+ const fixResult = await fixer.fixAll(result.findings, result.capabilitySummary);
138
+ if (options.dryRun) {
139
+ console.log('Dry run - no changes made\n');
140
+ }
141
+ if (fixResult.applied > 0) {
142
+ console.log(`Fixed ${fixResult.applied} issue(s) in ${fixResult.modifiedFiles.length} file(s):`);
143
+ for (const fix of fixResult.fixes.filter(f => f.success)) {
144
+ console.log(` [${fix.ruleId}] ${fix.path}: ${fix.description}`);
145
+ }
146
+ console.log();
147
+ }
148
+ if (fixResult.skipped > 0) {
149
+ console.log(`Skipped ${fixResult.skipped} issue(s) (not auto-fixable)`);
150
+ console.log();
151
+ }
152
+ if (fixResult.errors.length > 0) {
153
+ console.error('Errors:');
154
+ fixResult.errors.forEach(e => console.error(` ${e}`));
155
+ }
156
+ // Re-scan after fixes if not dry run
157
+ if (!options.dryRun && fixResult.applied > 0) {
158
+ const newResult = await scanner.scan();
159
+ result.findings = newResult.findings;
160
+ result.exitCode = newResult.exitCode;
161
+ result.status = newResult.status;
162
+ }
163
+ }
164
+ // Handle baseline
165
+ const baselineManager = new baseline_1.BaselineManager(path.resolve(targetPath), options.baseline);
166
+ if (options.updateBaseline) {
167
+ // Update baseline with current findings
168
+ const existed = baselineManager.exists();
169
+ if (existed) {
170
+ baselineManager.load();
171
+ }
172
+ baselineManager.update(result.findings, 'Baselined via --update-baseline');
173
+ baselineManager.save();
174
+ const stats = baselineManager.getStats();
175
+ console.log(`Baseline ${existed ? 'updated' : 'created'}: ${baselineManager.getPath()}`);
176
+ console.log(` Total baselined findings: ${stats.total}`);
177
+ for (const [rule, count] of Object.entries(stats.byRule)) {
178
+ console.log(` ${rule}: ${count}`);
179
+ }
180
+ console.log();
181
+ }
182
+ else if (options.pruneBaseline) {
183
+ // Remove fixed findings from baseline
184
+ if (!baselineManager.exists()) {
185
+ console.error('No baseline file found to prune');
186
+ process.exit(2);
187
+ }
188
+ baselineManager.load();
189
+ const removed = baselineManager.prune(result.findings);
190
+ baselineManager.save();
191
+ console.log(`Pruned ${removed} fixed finding(s) from baseline`);
192
+ console.log();
193
+ }
194
+ else if (!options.ignoreBaseline && baselineManager.exists()) {
195
+ // Filter findings against baseline
196
+ baselineManager.load();
197
+ const { filtered, result: baselineResult } = baselineManager.filterFindings(result.findings);
198
+ if (baselineResult.suppressedFindings > 0) {
199
+ console.log(`Baseline: ${baselineResult.suppressedFindings} known finding(s) suppressed`);
200
+ if (baselineResult.fixedFindings > 0) {
201
+ console.log(` ${baselineResult.fixedFindings} baselined finding(s) appear to be fixed`);
202
+ }
203
+ console.log();
204
+ }
205
+ // Update result with filtered findings
206
+ result.findings = filtered;
207
+ // Recalculate exit code based on filtered findings
208
+ const highCount = filtered.filter(f => f.severity === 'high').length;
209
+ const mediumCount = filtered.filter(f => f.severity === 'medium').length;
210
+ if (highCount > 0 && ['high'].includes(policy.policy.fail_on)) {
211
+ result.exitCode = 1;
212
+ result.status = 'fail';
213
+ }
214
+ else if (mediumCount > 0 && ['medium', 'high'].includes(policy.policy.fail_on)) {
215
+ result.exitCode = 1;
216
+ result.status = 'fail';
217
+ }
218
+ else if (filtered.length === 0) {
219
+ result.exitCode = 0;
220
+ result.status = 'pass';
221
+ }
222
+ }
123
223
  // Handle permissions-only mode
124
224
  if (options.permissionsOnly) {
125
225
  const output = JSON.stringify(result.recommendedPermissions, null, 2);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;AACA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,yCAAoC;AACpC,uCAAyB;AACzB,2CAA6B;AAC7B,wCAAqC;AACrC,6CAAqF;AACrF,4CAA6C;AAC7C,wCAAgE;AAEhE,kCAA6C;AAC7C,oCAAiC;AACjC,0CAA8C;AAE9C,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,uEAAuE,CAAC;KACpF,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,iBAAiB;AACjB,OAAO;KACJ,MAAM,CAAC,iBAAiB,EAAE,+BAA+B,CAAC;KAC1D,MAAM,CAAC,gBAAgB,EAAE,gCAAgC,EAAE,MAAM,CAAC;KAClE,MAAM,CAAC,iBAAiB,EAAE,wCAAwC,CAAC;KACnE,MAAM,CAAC,YAAY,EAAE,qBAAqB,CAAC;KAC3C,MAAM,CAAC,SAAS,EAAE,mBAAmB,CAAC;KACtC,MAAM,CAAC,WAAW,EAAE,gCAAgC,CAAC;KACrD,MAAM,CAAC,mBAAmB,EAAE,sDAAsD,EAAE,MAAM,CAAC;KAC3F,MAAM,CAAC,mBAAmB,EAAE,sDAAsD,EAAE,QAAQ,CAAC;KAC7F,MAAM,CAAC,sBAAsB,EAAE,iCAAiC,EAAE,KAAK,CAAC,CAAC;AAE5E,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,MAAM,EAAE,oDAAoD,CAAC;KACpE,MAAM,CAAC,kBAAkB,EAAE,kCAAkC,EAAE,OAAO,EAAE,EAAE,CAAC;KAC3E,MAAM,CAAC,kBAAkB,EAAE,kCAAkC,EAAE,OAAO,EAAE,EAAE,CAAC;KAC3E,MAAM,CAAC,eAAe,EAAE,+BAA+B,EAAE,MAAM,CAAC;KAChE,MAAM,CAAC,WAAW,EAAE,2BAA2B,CAAC;KAChD,MAAM,CAAC,oBAAoB,EAAE,6CAA6C,CAAC;KAC3E,MAAM,CAAC,OAAO,EAAE,yBAAyB,CAAC;KAC1C,MAAM,CAAC,WAAW,EAAE,iDAAiD,CAAC;KACtE,MAAM,CAAC,mBAAmB,EAAE,sDAAsD,CAAC;KACnF,MAAM,CAAC,mBAAmB,EAAE,uCAAuC,CAAC;KACpE,MAAM,CAAC,mBAAmB,EAAE,yCAAyC,CAAC;KACtE,MAAM,CAAC,kBAAkB,EAAE,qCAAqC,CAAC;KACjE,MAAM,CAAC,KAAK,EAAE,QAA4B,EAAE,OAAO,EAAE,EAAE;IACtD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAClC,MAAM,UAAU,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAE7C,cAAc;IACd,MAAM,YAAY,GAAG,IAAA,mBAAU,EAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC/D,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACvC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;IAEnC,sBAAsB;IACtB,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QACtB,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC;IAC5C,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QACtB,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC;IAC5C,CAAC;IACD,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;IAC/B,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IACvC,CAAC;IAED,kBAAkB;IAClB,MAAM,gBAAgB,GAAG,IAAA,uBAAc,EAAC,MAAM,CAAC,CAAC;IAChD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC3C,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,cAAc;IACd,MAAM,OAAO,GAAG,IAAI,iBAAO,CAAC;QAC1B,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;QAC9B,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO;QAC5B,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO;QAC5B,MAAM;QACN,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,KAAK;KAC5B,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QAEpC,kBAAkB;QAClB,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,IAAI,aAAK,CAAC;gBACtB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;gBACjC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;aAChC,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAEhF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAC7C,CAAC;YAED,IAAI,SAAS,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,SAAS,SAAS,CAAC,OAAO,gBAAgB,SAAS,CAAC,aAAa,CAAC,MAAM,WAAW,CAAC,CAAC;gBACjG,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;oBACzD,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;gBACnE,CAAC;gBACD,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,CAAC;YAED,IAAI,SAAS,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,WAAW,SAAS,CAAC,OAAO,8BAA8B,CAAC,CAAC;gBACxE,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,CAAC;YAED,IAAI,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBACzB,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;YACzD,CAAC;YAED,qCAAqC;YACrC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;gBAC7C,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;gBACvC,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;gBACrC,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;gBACrC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;YACnC,CAAC;QACH,CAAC;QAED,kBAAkB;QAClB,MAAM,eAAe,GAAG,IAAI,0BAAe,CACzC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EACxB,OAAO,CAAC,QAAQ,CACjB,CAAC;QAEF,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC3B,wCAAwC;YACxC,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC;YACzC,IAAI,OAAO,EAAE,CAAC;gBACZ,eAAe,CAAC,IAAI,EAAE,CAAC;YACzB,CAAC;YACD,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,iCAAiC,CAAC,CAAC;YAC3E,eAAe,CAAC,IAAI,EAAE,CAAC;YAEvB,MAAM,KAAK,GAAG,eAAe,CAAC,QAAQ,EAAE,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,KAAK,eAAe,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACzF,OAAO,CAAC,GAAG,CAAC,+BAA+B,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAC1D,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzD,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;YACvC,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;aAAM,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YACjC,sCAAsC;YACtC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC9B,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;gBACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,eAAe,CAAC,IAAI,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACvD,eAAe,CAAC,IAAI,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,iCAAiC,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;aAAM,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC;YAC/D,mCAAmC;YACnC,eAAe,CAAC,IAAI,EAAE,CAAC;YACvB,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,eAAe,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAE7F,IAAI,cAAc,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,aAAa,cAAc,CAAC,kBAAkB,8BAA8B,CAAC,CAAC;gBAC1F,IAAI,cAAc,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;oBACrC,OAAO,CAAC,GAAG,CAAC,KAAK,cAAc,CAAC,aAAa,0CAA0C,CAAC,CAAC;gBAC3F,CAAC;gBACD,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,CAAC;YAED,uCAAuC;YACvC,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAE3B,mDAAmD;YACnD,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;YACrE,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;YAEzE,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC9D,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;gBACpB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;YACzB,CAAC;iBAAM,IAAI,WAAW,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjF,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;gBACpB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;YACzB,CAAC;iBAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;gBACpB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;YACzB,CAAC;QACH,CAAC;QAED,+BAA+B;QAC/B,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,sBAAsB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACtE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;QAED,kBAAkB;QAClB,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACpD,MAAM,aAAa,GAAkB;YACnC,MAAM,EAAE,UAAU,CAAC,MAAsB;YACzC,KAAK,EAAE,UAAU,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,EAAE;YAChD,sBAAsB,EAAE,MAAM,CAAC,MAAM,CAAC,uBAAuB;YAC7D,yBAAyB,EAAE,MAAM,CAAC,MAAM,CAAC,2BAA2B;YACpE,SAAS,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;YAClC,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,KAAK;SACrC,CAAC;QAEF,MAAM,MAAM,GAAG,IAAA,wBAAc,EAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAEzD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACtB,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,sBAAsB,CAAC;KAC/B,WAAW,CAAC,oDAAoD,CAAC;KACjE,MAAM,CAAC,yBAAyB,EAAE,gDAAgD,EAAE,OAAO,EAAE,EAAE,CAAC;KAChG,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,SAAiB,EAAE,OAAO,EAAE,EAAE;IAC5D,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAElC,cAAc;IACd,MAAM,YAAY,GAAG,IAAA,mBAAU,EAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACnD,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACvC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;IAEnC,gDAAgD;IAChD,0DAA0D;IAC1D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACzD,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC1E,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,wBAAwB;QACxB,MAAM,WAAW,GAAG,IAAI,iBAAO,CAAC;YAC9B,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YAC3B,MAAM;YACN,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;QACH,MAAM,aAAa,GAAG,IAAI,iBAAO,CAAC;YAChC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;YAC7B,MAAM;YACN,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;QAC5C,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC;QAEhD,kBAAkB;QAClB,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;YAC5C,CAAC,CAAC,OAAO,CAAC,YAAY;YACtB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QAExB,MAAM,UAAU,GAAG,IAAA,yBAAkB,EACnC,UAAU,EACV,YAAY,EACZ,OAAO,EACP,SAAS,EACT;YACE,MAAM;YACN,MAAM;YACN,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO;SAC5B,CACF,CAAC;QAEF,kBAAkB;QAClB,MAAM,UAAU,GAAG,aAAa,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAChE,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC;QAC7B,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;QAC9C,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC;QAEnD,MAAM,aAAa,GAAkB;YACnC,MAAM,EAAE,UAAU,CAAC,MAAsB;YACzC,KAAK,EAAE,UAAU,CAAC,KAAK,KAAK,KAAK;YACjC,sBAAsB,EAAE,IAAI;YAC5B,yBAAyB,EAAE,KAAK;YAChC,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,KAAK;SACrC,CAAC;QAEF,MAAM,MAAM,GAAG,IAAA,4BAAkB,EAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAE7D,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACtB,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,iCAAiC;AACjC,MAAM,YAAY,GAAG,OAAO;KACzB,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,kCAAkC,CAAC,CAAC;AAEnD,YAAY;KACT,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;KACjD,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,mBAAU,EAAE,CAAC;IAChC,IAAI,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IAEjC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;IAChD,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,YAAY;KACT,OAAO,CAAC,kBAAkB,CAAC;KAC3B,WAAW,CAAC,wCAAwC,CAAC;KACrD,MAAM,CAAC,CAAC,MAAc,EAAE,EAAE;IACzB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,mBAAU,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAE5D,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,iBAAiB,EAAE,mCAAmC,EAAE,EAAE,CAAC;KAClE,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;IAClB,MAAM,UAAU,GAAG,gBAAgB,CAAC;IAEpC,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,sCAAsC,UAAU,EAAE,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,8BAAqB,GAAE,CAAC;IACvC,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,+BAA+B,UAAU,EAAE,CAAC,CAAC;IAEzD,IAAI,OAAO,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,WAAW,GAAG,mBAAmB,CAAC;QACxC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;QAE9D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BtB,CAAC;QAEI,EAAE,CAAC,aAAa,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,oCAAoC,YAAY,EAAE,CAAC,CAAC;IAClE,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,6BAA6B;AAC7B,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,GAAG,EAAE;IACX,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,EAAE,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,WAAW,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/D,CAAC,CAAC,CAAC;AAEL,mBAAmB;AACnB,SAAS,OAAO,CAAC,KAAa,EAAE,QAAkB;IAChD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,WAAW,CAAC,OAAe,EAAE,UAAmB;IACvD,IAAI,UAAU,EAAE,CAAC;QACf,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,oBAAoB;AACpB,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Auto-fixer for AgentLint findings
3
+ */
4
+ import { Finding, CapabilitySummary } from '../ir/types';
5
+ import { FixResult } from './types';
6
+ export * from './types';
7
+ /**
8
+ * Fixer class for auto-fixing findings
9
+ */
10
+ export declare class Fixer {
11
+ private rootDir;
12
+ private dryRun;
13
+ constructor(options: {
14
+ rootDir: string;
15
+ dryRun?: boolean;
16
+ });
17
+ /**
18
+ * Check if a finding is auto-fixable
19
+ */
20
+ isFixable(finding: Finding): boolean;
21
+ /**
22
+ * Get list of fixable rule IDs
23
+ */
24
+ getFixableRules(): string[];
25
+ /**
26
+ * Fix all fixable findings
27
+ */
28
+ fixAll(findings: Finding[], capabilitySummary: CapabilitySummary): Promise<FixResult>;
29
+ /**
30
+ * Generate fixes for findings in a file
31
+ */
32
+ private generateFixes;
33
+ /**
34
+ * Generate fix for adding permission manifest (OBS-002)
35
+ */
36
+ private generateManifestFix;
37
+ /**
38
+ * Generate permission manifest comment
39
+ */
40
+ private generatePermissionManifest;
41
+ /**
42
+ * Apply fixes to a file
43
+ */
44
+ private applyFixes;
45
+ }
46
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fixer/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAO,SAAS,EAA6B,MAAM,SAAS,CAAC;AAEpE,cAAc,SAAS,CAAC;AAExB;;GAEG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAU;gBAEZ,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE;IAK1D;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAIpC;;OAEG;IACH,eAAe,IAAI,MAAM,EAAE;IAI3B;;OAEG;IACG,MAAM,CACV,QAAQ,EAAE,OAAO,EAAE,EACnB,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,SAAS,CAAC;IA2CrB;;OAEG;IACH,OAAO,CAAC,aAAa;IAuBrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgB3B;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAmClC;;OAEG;YACW,UAAU;CA4FzB"}
@@ -0,0 +1,257 @@
1
+ "use strict";
2
+ /**
3
+ * Auto-fixer for AgentLint findings
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
39
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.Fixer = void 0;
43
+ const fs = __importStar(require("fs"));
44
+ const path = __importStar(require("path"));
45
+ const types_1 = require("./types");
46
+ __exportStar(require("./types"), exports);
47
+ /**
48
+ * Fixer class for auto-fixing findings
49
+ */
50
+ class Fixer {
51
+ rootDir;
52
+ dryRun;
53
+ constructor(options) {
54
+ this.rootDir = options.rootDir;
55
+ this.dryRun = options.dryRun ?? false;
56
+ }
57
+ /**
58
+ * Check if a finding is auto-fixable
59
+ */
60
+ isFixable(finding) {
61
+ return finding.rule_id in types_1.FIXABLE_RULES && types_1.FIXABLE_RULES[finding.rule_id].canFix;
62
+ }
63
+ /**
64
+ * Get list of fixable rule IDs
65
+ */
66
+ getFixableRules() {
67
+ return Object.keys(types_1.FIXABLE_RULES);
68
+ }
69
+ /**
70
+ * Fix all fixable findings
71
+ */
72
+ async fixAll(findings, capabilitySummary) {
73
+ const result = {
74
+ applied: 0,
75
+ skipped: 0,
76
+ modifiedFiles: [],
77
+ fixes: [],
78
+ errors: [],
79
+ };
80
+ // Group findings by file
81
+ const findingsByFile = new Map();
82
+ for (const finding of findings) {
83
+ const filePath = finding.location.path;
84
+ if (!findingsByFile.has(filePath)) {
85
+ findingsByFile.set(filePath, []);
86
+ }
87
+ findingsByFile.get(filePath).push(finding);
88
+ }
89
+ // Process each file
90
+ for (const [filePath, fileFindings] of findingsByFile) {
91
+ const fixes = this.generateFixes(fileFindings, capabilitySummary);
92
+ if (fixes.length === 0) {
93
+ result.skipped += fileFindings.length;
94
+ continue;
95
+ }
96
+ const applyResult = await this.applyFixes(filePath, fixes);
97
+ result.fixes.push(...applyResult.fixes);
98
+ result.applied += applyResult.applied;
99
+ result.skipped += fileFindings.length - applyResult.applied;
100
+ result.errors.push(...applyResult.errors);
101
+ if (applyResult.applied > 0) {
102
+ result.modifiedFiles.push(filePath);
103
+ }
104
+ }
105
+ return result;
106
+ }
107
+ /**
108
+ * Generate fixes for findings in a file
109
+ */
110
+ generateFixes(findings, capabilitySummary) {
111
+ const fixes = [];
112
+ for (const finding of findings) {
113
+ if (!this.isFixable(finding)) {
114
+ continue;
115
+ }
116
+ const strategy = types_1.FIXABLE_RULES[finding.rule_id];
117
+ switch (strategy.strategy) {
118
+ case 'add-manifest':
119
+ fixes.push(this.generateManifestFix(finding, capabilitySummary));
120
+ break;
121
+ }
122
+ }
123
+ return fixes.filter((f) => f !== null);
124
+ }
125
+ /**
126
+ * Generate fix for adding permission manifest (OBS-002)
127
+ */
128
+ generateManifestFix(finding, capabilitySummary) {
129
+ const manifest = this.generatePermissionManifest(capabilitySummary);
130
+ return {
131
+ path: finding.location.path,
132
+ description: 'Add permission manifest comment',
133
+ ruleId: finding.rule_id,
134
+ type: 'insert',
135
+ line: 1,
136
+ replacement: manifest + '\n\n',
137
+ };
138
+ }
139
+ /**
140
+ * Generate permission manifest comment
141
+ */
142
+ generatePermissionManifest(capabilitySummary) {
143
+ const lines = [
144
+ '<!-- agentlint:permissions',
145
+ ' filesystem:',
146
+ ];
147
+ if (capabilitySummary.filesystem.read.length > 0) {
148
+ lines.push(` read: ${JSON.stringify(capabilitySummary.filesystem.read)}`);
149
+ }
150
+ else {
151
+ lines.push(' read: ["**/*"]');
152
+ }
153
+ if (capabilitySummary.filesystem.write.length > 0) {
154
+ lines.push(` write: ${JSON.stringify(capabilitySummary.filesystem.write)}`);
155
+ }
156
+ lines.push(' shell_exec:');
157
+ lines.push(` enabled: ${capabilitySummary.shell_exec.enabled}`);
158
+ if (capabilitySummary.shell_exec.examples.length > 0) {
159
+ lines.push(` allowed_commands: ${JSON.stringify(capabilitySummary.shell_exec.examples.slice(0, 5))}`);
160
+ }
161
+ lines.push(' network:');
162
+ lines.push(` outbound: ${capabilitySummary.network.outbound}`);
163
+ if (capabilitySummary.network.allowed_domains.length > 0) {
164
+ lines.push(` allowed_domains: ${JSON.stringify(capabilitySummary.network.allowed_domains)}`);
165
+ }
166
+ lines.push('-->');
167
+ return lines.join('\n');
168
+ }
169
+ /**
170
+ * Apply fixes to a file
171
+ */
172
+ async applyFixes(filePath, fixes) {
173
+ const result = {
174
+ fixes: [],
175
+ applied: 0,
176
+ errors: [],
177
+ };
178
+ const fullPath = path.join(this.rootDir, filePath);
179
+ let content;
180
+ try {
181
+ content = fs.readFileSync(fullPath, 'utf-8');
182
+ }
183
+ catch (err) {
184
+ result.errors.push(`Failed to read ${filePath}: ${err}`);
185
+ return result;
186
+ }
187
+ // Sort fixes by line number descending so we can apply from bottom up
188
+ const sortedFixes = [...fixes].sort((a, b) => b.line - a.line);
189
+ let modified = content;
190
+ const lines = modified.split('\n');
191
+ for (const fix of sortedFixes) {
192
+ try {
193
+ switch (fix.type) {
194
+ case 'insert':
195
+ // Insert at beginning of specified line
196
+ lines.splice(fix.line - 1, 0, ...(fix.replacement || '').split('\n'));
197
+ result.fixes.push({
198
+ path: filePath,
199
+ ruleId: fix.ruleId,
200
+ description: fix.description,
201
+ success: true,
202
+ });
203
+ result.applied++;
204
+ break;
205
+ case 'replace':
206
+ if (fix.original && fix.replacement) {
207
+ const lineContent = lines[fix.line - 1];
208
+ if (lineContent.includes(fix.original)) {
209
+ lines[fix.line - 1] = lineContent.replace(fix.original, fix.replacement);
210
+ result.fixes.push({
211
+ path: filePath,
212
+ ruleId: fix.ruleId,
213
+ description: fix.description,
214
+ success: true,
215
+ });
216
+ result.applied++;
217
+ }
218
+ }
219
+ break;
220
+ case 'delete':
221
+ lines.splice(fix.line - 1, 1);
222
+ result.fixes.push({
223
+ path: filePath,
224
+ ruleId: fix.ruleId,
225
+ description: fix.description,
226
+ success: true,
227
+ });
228
+ result.applied++;
229
+ break;
230
+ }
231
+ }
232
+ catch (err) {
233
+ result.fixes.push({
234
+ path: filePath,
235
+ ruleId: fix.ruleId,
236
+ description: fix.description,
237
+ success: false,
238
+ error: String(err),
239
+ });
240
+ result.errors.push(`Failed to apply fix ${fix.ruleId} to ${filePath}: ${err}`);
241
+ }
242
+ }
243
+ // Write back if not dry run and we made changes
244
+ if (!this.dryRun && result.applied > 0) {
245
+ try {
246
+ modified = lines.join('\n');
247
+ fs.writeFileSync(fullPath, modified, 'utf-8');
248
+ }
249
+ catch (err) {
250
+ result.errors.push(`Failed to write ${filePath}: ${err}`);
251
+ }
252
+ }
253
+ return result;
254
+ }
255
+ }
256
+ exports.Fixer = Fixer;
257
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fixer/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Fixer types and interfaces
3
+ */
4
+ /**
5
+ * A fix that can be applied to a file
6
+ */
7
+ export interface Fix {
8
+ /** The file path to modify */
9
+ path: string;
10
+ /** Description of the fix */
11
+ description: string;
12
+ /** The rule ID this fix addresses */
13
+ ruleId: string;
14
+ /** Type of fix operation */
15
+ type: 'insert' | 'replace' | 'delete';
16
+ /** Line number to apply fix (1-indexed) */
17
+ line: number;
18
+ /** Column number (for replace/delete) */
19
+ column?: number;
20
+ /** Original text (for replace/delete) */
21
+ original?: string;
22
+ /** New text (for insert/replace) */
23
+ replacement?: string;
24
+ }
25
+ /**
26
+ * Result of attempting to fix findings
27
+ */
28
+ export interface FixResult {
29
+ /** Number of fixes applied */
30
+ applied: number;
31
+ /** Number of fixes skipped (not auto-fixable) */
32
+ skipped: number;
33
+ /** Files that were modified */
34
+ modifiedFiles: string[];
35
+ /** Details of each fix */
36
+ fixes: AppliedFix[];
37
+ /** Errors encountered */
38
+ errors: string[];
39
+ }
40
+ /**
41
+ * A fix that was applied
42
+ */
43
+ export interface AppliedFix {
44
+ path: string;
45
+ ruleId: string;
46
+ description: string;
47
+ success: boolean;
48
+ error?: string;
49
+ }
50
+ /**
51
+ * Rules that support auto-fix
52
+ */
53
+ export declare const FIXABLE_RULES: Record<string, FixStrategy>;
54
+ export interface FixStrategy {
55
+ description: string;
56
+ canFix: boolean;
57
+ strategy: string;
58
+ }
59
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/fixer/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IACtC,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,0BAA0B;IAC1B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,yBAAyB;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAMrD,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ /**
3
+ * Fixer types and interfaces
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FIXABLE_RULES = void 0;
7
+ /**
8
+ * Rules that support auto-fix
9
+ */
10
+ exports.FIXABLE_RULES = {
11
+ 'OBS-002': {
12
+ description: 'Add permission manifest comment',
13
+ canFix: true,
14
+ strategy: 'add-manifest',
15
+ },
16
+ };
17
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/fixer/types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAqDH;;GAEG;AACU,QAAA,aAAa,GAAgC;IACxD,SAAS,EAAE;QACT,WAAW,EAAE,iCAAiC;QAC9C,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,cAAc;KACzB;CACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentlint",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Static analysis and security scanner for AI agent configuration files",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -54,23 +54,23 @@
54
54
  "CHANGELOG.md"
55
55
  ],
56
56
  "dependencies": {
57
- "commander": "^12.0.0",
58
57
  "chalk": "^4.1.2",
58
+ "commander": "^12.0.0",
59
+ "crypto-js": "^4.2.0",
59
60
  "glob": "^10.3.10",
60
- "yaml": "^2.3.4",
61
- "crypto-js": "^4.2.0"
61
+ "yaml": "^2.3.4"
62
62
  },
63
63
  "devDependencies": {
64
- "@types/node": "^20.10.0",
65
64
  "@types/crypto-js": "^4.2.0",
66
- "typescript": "^5.3.0",
67
- "ts-node": "^10.9.2",
68
- "jest": "^29.7.0",
69
65
  "@types/jest": "^29.5.0",
70
- "ts-jest": "^29.1.0",
66
+ "@types/node": "^20.10.0",
71
67
  "@typescript-eslint/eslint-plugin": "^6.0.0",
72
68
  "@typescript-eslint/parser": "^6.0.0",
73
69
  "eslint": "^8.56.0",
74
- "prettier": "^3.2.0"
70
+ "jest": "^29.7.0",
71
+ "prettier": "^3.2.0",
72
+ "ts-jest": "^29.1.0",
73
+ "ts-node": "^10.9.2",
74
+ "typescript": "^5.3.0"
75
75
  }
76
76
  }