agentlint 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/LICENSE +190 -0
  3. package/README.md +246 -0
  4. package/dist/cli/index.d.ts +7 -0
  5. package/dist/cli/index.d.ts.map +1 -0
  6. package/dist/cli/index.js +351 -0
  7. package/dist/cli/index.js.map +1 -0
  8. package/dist/diff/index.d.ts +16 -0
  9. package/dist/diff/index.d.ts.map +1 -0
  10. package/dist/diff/index.js +204 -0
  11. package/dist/diff/index.js.map +1 -0
  12. package/dist/index.d.ts +21 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +55 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/ir/index.d.ts +2 -0
  17. package/dist/ir/index.d.ts.map +1 -0
  18. package/dist/ir/index.js +18 -0
  19. package/dist/ir/index.js.map +1 -0
  20. package/dist/ir/types.d.ts +369 -0
  21. package/dist/ir/types.d.ts.map +1 -0
  22. package/dist/ir/types.js +12 -0
  23. package/dist/ir/types.js.map +1 -0
  24. package/dist/parsers/base.d.ts +104 -0
  25. package/dist/parsers/base.d.ts.map +1 -0
  26. package/dist/parsers/base.js +373 -0
  27. package/dist/parsers/base.js.map +1 -0
  28. package/dist/parsers/claude.d.ts +30 -0
  29. package/dist/parsers/claude.d.ts.map +1 -0
  30. package/dist/parsers/claude.js +453 -0
  31. package/dist/parsers/claude.js.map +1 -0
  32. package/dist/parsers/cursor.d.ts +24 -0
  33. package/dist/parsers/cursor.d.ts.map +1 -0
  34. package/dist/parsers/cursor.js +305 -0
  35. package/dist/parsers/cursor.js.map +1 -0
  36. package/dist/parsers/factory.d.ts +30 -0
  37. package/dist/parsers/factory.d.ts.map +1 -0
  38. package/dist/parsers/factory.js +78 -0
  39. package/dist/parsers/factory.js.map +1 -0
  40. package/dist/parsers/index.d.ts +5 -0
  41. package/dist/parsers/index.d.ts.map +1 -0
  42. package/dist/parsers/index.js +21 -0
  43. package/dist/parsers/index.js.map +1 -0
  44. package/dist/policy/index.d.ts +3 -0
  45. package/dist/policy/index.d.ts.map +1 -0
  46. package/dist/policy/index.js +19 -0
  47. package/dist/policy/index.js.map +1 -0
  48. package/dist/policy/loader.d.ts +23 -0
  49. package/dist/policy/loader.d.ts.map +1 -0
  50. package/dist/policy/loader.js +252 -0
  51. package/dist/policy/loader.js.map +1 -0
  52. package/dist/policy/types.d.ts +79 -0
  53. package/dist/policy/types.d.ts.map +1 -0
  54. package/dist/policy/types.js +99 -0
  55. package/dist/policy/types.js.map +1 -0
  56. package/dist/reports/index.d.ts +14 -0
  57. package/dist/reports/index.d.ts.map +1 -0
  58. package/dist/reports/index.js +54 -0
  59. package/dist/reports/index.js.map +1 -0
  60. package/dist/reports/json.d.ts +16 -0
  61. package/dist/reports/json.d.ts.map +1 -0
  62. package/dist/reports/json.js +126 -0
  63. package/dist/reports/json.js.map +1 -0
  64. package/dist/reports/sarif.d.ts +20 -0
  65. package/dist/reports/sarif.d.ts.map +1 -0
  66. package/dist/reports/sarif.js +169 -0
  67. package/dist/reports/sarif.js.map +1 -0
  68. package/dist/reports/text.d.ts +25 -0
  69. package/dist/reports/text.d.ts.map +1 -0
  70. package/dist/reports/text.js +283 -0
  71. package/dist/reports/text.js.map +1 -0
  72. package/dist/reports/types.d.ts +88 -0
  73. package/dist/reports/types.d.ts.map +1 -0
  74. package/dist/reports/types.js +6 -0
  75. package/dist/reports/types.js.map +1 -0
  76. package/dist/rules/base.d.ts +16 -0
  77. package/dist/rules/base.d.ts.map +1 -0
  78. package/dist/rules/base.js +48 -0
  79. package/dist/rules/base.js.map +1 -0
  80. package/dist/rules/engine.d.ts +61 -0
  81. package/dist/rules/engine.d.ts.map +1 -0
  82. package/dist/rules/engine.js +195 -0
  83. package/dist/rules/engine.js.map +1 -0
  84. package/dist/rules/execution.d.ts +33 -0
  85. package/dist/rules/execution.d.ts.map +1 -0
  86. package/dist/rules/execution.js +154 -0
  87. package/dist/rules/execution.js.map +1 -0
  88. package/dist/rules/filesystem.d.ts +36 -0
  89. package/dist/rules/filesystem.d.ts.map +1 -0
  90. package/dist/rules/filesystem.js +227 -0
  91. package/dist/rules/filesystem.js.map +1 -0
  92. package/dist/rules/hook.d.ts +25 -0
  93. package/dist/rules/hook.d.ts.map +1 -0
  94. package/dist/rules/hook.js +112 -0
  95. package/dist/rules/hook.js.map +1 -0
  96. package/dist/rules/index.d.ts +12 -0
  97. package/dist/rules/index.d.ts.map +1 -0
  98. package/dist/rules/index.js +28 -0
  99. package/dist/rules/index.js.map +1 -0
  100. package/dist/rules/instruction.d.ts +25 -0
  101. package/dist/rules/instruction.d.ts.map +1 -0
  102. package/dist/rules/instruction.js +162 -0
  103. package/dist/rules/instruction.js.map +1 -0
  104. package/dist/rules/network.d.ts +33 -0
  105. package/dist/rules/network.d.ts.map +1 -0
  106. package/dist/rules/network.js +145 -0
  107. package/dist/rules/network.js.map +1 -0
  108. package/dist/rules/observability.d.ts +25 -0
  109. package/dist/rules/observability.d.ts.map +1 -0
  110. package/dist/rules/observability.js +105 -0
  111. package/dist/rules/observability.js.map +1 -0
  112. package/dist/rules/scope.d.ts +37 -0
  113. package/dist/rules/scope.d.ts.map +1 -0
  114. package/dist/rules/scope.js +173 -0
  115. package/dist/rules/scope.js.map +1 -0
  116. package/dist/rules/secrets.d.ts +35 -0
  117. package/dist/rules/secrets.d.ts.map +1 -0
  118. package/dist/rules/secrets.js +273 -0
  119. package/dist/rules/secrets.js.map +1 -0
  120. package/dist/rules/types.d.ts +58 -0
  121. package/dist/rules/types.d.ts.map +1 -0
  122. package/dist/rules/types.js +6 -0
  123. package/dist/rules/types.js.map +1 -0
  124. package/dist/scanner.d.ts +61 -0
  125. package/dist/scanner.d.ts.map +1 -0
  126. package/dist/scanner.js +441 -0
  127. package/dist/scanner.js.map +1 -0
  128. package/dist/utils/hash.d.ts +28 -0
  129. package/dist/utils/hash.d.ts.map +1 -0
  130. package/dist/utils/hash.js +94 -0
  131. package/dist/utils/hash.js.map +1 -0
  132. package/dist/utils/index.d.ts +2 -0
  133. package/dist/utils/index.d.ts.map +1 -0
  134. package/dist/utils/index.js +18 -0
  135. package/dist/utils/index.js.map +1 -0
  136. package/package.json +76 -0
@@ -0,0 +1,351 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * AgentLint CLI
5
+ * Static analysis and security scanner for AI agent configuration files
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ const commander_1 = require("commander");
42
+ const fs = __importStar(require("fs"));
43
+ const path = __importStar(require("path"));
44
+ const scanner_1 = require("../scanner");
45
+ const loader_1 = require("../policy/loader");
46
+ const engine_1 = require("../rules/engine");
47
+ const reports_1 = require("../reports");
48
+ const diff_1 = require("../diff");
49
+ const VERSION = '0.1.0';
50
+ const program = new commander_1.Command();
51
+ program
52
+ .name('agentlint')
53
+ .description('Static analysis and security scanner for AI agent configuration files')
54
+ .version(VERSION);
55
+ // Global options
56
+ program
57
+ .option('--config <path>', 'Path to agentlint config file')
58
+ .option('--format <fmt>', 'Output format: text|json|sarif', 'text')
59
+ .option('--output <path>', 'Write output to file instead of stdout')
60
+ .option('--no-color', 'Disable ANSI colors')
61
+ .option('--quiet', 'Only print errors')
62
+ .option('--verbose', 'Extra parsing/evidence details')
63
+ .option('--fail-on <level>', 'Severity threshold for failure: none|low|medium|high', 'high')
64
+ .option('--warn-on <level>', 'Severity threshold for warning: none|low|medium|high', 'medium')
65
+ .option('--timeout <duration>', 'Timeout duration (e.g., 2s, 5s)', '10s');
66
+ // Scan command
67
+ program
68
+ .command('scan [path]')
69
+ .description('Scan a directory for agent configuration files')
70
+ .option('--ci', 'CI mode: no prompts, stable output, enforce gating')
71
+ .option('--include <glob>', 'Include extra files (repeatable)', collect, [])
72
+ .option('--exclude <glob>', 'Exclude files/paths (repeatable)', collect, [])
73
+ .option('--tool <tool>', 'Tool mode: claude|cursor|auto', 'auto')
74
+ .option('--emit-ir', 'Include IR in JSON output')
75
+ .option('--permissions-only', 'Output only recommended permission manifest')
76
+ .action(async (scanPath, options) => {
77
+ const globalOpts = program.opts();
78
+ const targetPath = scanPath || process.cwd();
79
+ // Load policy
80
+ const policyResult = (0, loader_1.loadPolicy)(globalOpts.config, targetPath);
81
+ if (policyResult.errors.length > 0) {
82
+ console.error('Configuration errors:');
83
+ policyResult.errors.forEach(e => console.error(` ${e}`));
84
+ process.exit(3);
85
+ }
86
+ const policy = policyResult.config;
87
+ // Apply CLI overrides
88
+ if (globalOpts.failOn) {
89
+ policy.policy.fail_on = globalOpts.failOn;
90
+ }
91
+ if (globalOpts.warnOn) {
92
+ policy.policy.warn_on = globalOpts.warnOn;
93
+ }
94
+ if (options.ci) {
95
+ policy.policy.ci_mode = true;
96
+ }
97
+ if (options.include.length > 0) {
98
+ policy.scan.include.push(...options.include);
99
+ }
100
+ if (options.exclude.length > 0) {
101
+ policy.scan.exclude.push(...options.exclude);
102
+ }
103
+ if (options.tool !== 'auto') {
104
+ policy.scan.tool_mode = options.tool;
105
+ }
106
+ // Validate policy
107
+ const validationErrors = (0, loader_1.validatePolicy)(policy);
108
+ if (validationErrors.length > 0) {
109
+ console.error('Policy validation errors:');
110
+ validationErrors.forEach(e => console.error(` ${e}`));
111
+ process.exit(3);
112
+ }
113
+ // Run scanner
114
+ const scanner = new scanner_1.Scanner({
115
+ root: path.resolve(targetPath),
116
+ include: policy.scan.include,
117
+ exclude: policy.scan.exclude,
118
+ policy,
119
+ ciMode: options.ci || false,
120
+ });
121
+ try {
122
+ const result = await scanner.scan();
123
+ // Handle permissions-only mode
124
+ if (options.permissionsOnly) {
125
+ const output = JSON.stringify(result.recommendedPermissions, null, 2);
126
+ writeOutput(output, globalOpts.output);
127
+ process.exit(result.exitCode);
128
+ }
129
+ // Generate report
130
+ const reportData = scanner.createReportData(result);
131
+ const reportOptions = {
132
+ format: globalOpts.format,
133
+ color: globalOpts.color !== false && !options.ci,
134
+ includeRecommendations: policy.output.include_recommendations,
135
+ includePermissionManifest: policy.output.include_permission_manifest,
136
+ includeIR: options.emitIr || false,
137
+ verbose: globalOpts.verbose || false,
138
+ };
139
+ const output = (0, reports_1.generateReport)(reportData, reportOptions);
140
+ if (!globalOpts.quiet) {
141
+ writeOutput(output, globalOpts.output);
142
+ }
143
+ process.exit(result.exitCode);
144
+ }
145
+ catch (error) {
146
+ console.error('Scan failed:', error instanceof Error ? error.message : String(error));
147
+ process.exit(5);
148
+ }
149
+ });
150
+ // Diff command
151
+ program
152
+ .command('diff <base> <target>')
153
+ .description('Compare two versions and report behavioral changes')
154
+ .option('--fail-on-change <type>', 'Change types that trigger failure (repeatable)', collect, [])
155
+ .action(async (baseRef, targetRef, options) => {
156
+ const globalOpts = program.opts();
157
+ // Load policy
158
+ const policyResult = (0, loader_1.loadPolicy)(globalOpts.config);
159
+ if (policyResult.errors.length > 0) {
160
+ console.error('Configuration errors:');
161
+ policyResult.errors.forEach(e => console.error(` ${e}`));
162
+ process.exit(3);
163
+ }
164
+ const policy = policyResult.config;
165
+ // For now, we only support directory-based diff
166
+ // Git ref support would require additional implementation
167
+ if (!fs.existsSync(baseRef) || !fs.existsSync(targetRef)) {
168
+ console.error('Error: Both base and target must be existing directories');
169
+ console.error('Git ref support is planned for a future version.');
170
+ process.exit(2);
171
+ }
172
+ try {
173
+ // Scan both directories
174
+ const baseScanner = new scanner_1.Scanner({
175
+ root: path.resolve(baseRef),
176
+ policy,
177
+ ciMode: true,
178
+ });
179
+ const targetScanner = new scanner_1.Scanner({
180
+ root: path.resolve(targetRef),
181
+ policy,
182
+ ciMode: true,
183
+ });
184
+ const baseResult = await baseScanner.scan();
185
+ const targetResult = await targetScanner.scan();
186
+ // Compare results
187
+ const failOn = options.failOnChange.length > 0
188
+ ? options.failOnChange
189
+ : policy.diff.fail_on;
190
+ const diffResult = (0, diff_1.compareScanResults)(baseResult, targetResult, baseRef, targetRef, {
191
+ policy,
192
+ failOn,
193
+ warnOn: policy.diff.warn_on,
194
+ });
195
+ // Generate report
196
+ const reportData = targetScanner.createReportData(targetResult);
197
+ reportData.diff = diffResult;
198
+ reportData.status = diffResult.summary.status;
199
+ reportData.exitCode = diffResult.summary.exit_code;
200
+ const reportOptions = {
201
+ format: globalOpts.format,
202
+ color: globalOpts.color !== false,
203
+ includeRecommendations: true,
204
+ includePermissionManifest: false,
205
+ includeIR: false,
206
+ verbose: globalOpts.verbose || false,
207
+ };
208
+ const output = (0, reports_1.generateDiffReport)(reportData, reportOptions);
209
+ if (!globalOpts.quiet) {
210
+ writeOutput(output, globalOpts.output);
211
+ }
212
+ process.exit(diffResult.summary.exit_code);
213
+ }
214
+ catch (error) {
215
+ console.error('Diff failed:', error instanceof Error ? error.message : String(error));
216
+ process.exit(5);
217
+ }
218
+ });
219
+ // Rules command with subcommands
220
+ const rulesCommand = program
221
+ .command('rules')
222
+ .description('List and explain available rules');
223
+ rulesCommand
224
+ .command('list')
225
+ .description('List all available rules')
226
+ .option('--group <group>', 'Filter by rule group')
227
+ .action((options) => {
228
+ const globalOpts = program.opts();
229
+ const engine = new engine_1.RuleEngine();
230
+ let rules = engine.getAllRules();
231
+ if (options.group) {
232
+ rules = rules.filter(r => r.group === options.group);
233
+ }
234
+ if (globalOpts.format === 'json') {
235
+ console.log(JSON.stringify(rules, null, 2));
236
+ }
237
+ else {
238
+ console.log('Available rules:\n');
239
+ for (const rule of rules) {
240
+ const severity = rule.severity.toUpperCase().padEnd(6);
241
+ console.log(` ${severity} ${rule.id.padEnd(10)} ${rule.title}`);
242
+ }
243
+ console.log(`\nTotal: ${rules.length} rules`);
244
+ }
245
+ });
246
+ rulesCommand
247
+ .command('explain <ruleId>')
248
+ .description('Show detailed information about a rule')
249
+ .action((ruleId) => {
250
+ const globalOpts = program.opts();
251
+ const engine = new engine_1.RuleEngine();
252
+ const rule = engine.getRuleDefinition(ruleId.toUpperCase());
253
+ if (!rule) {
254
+ console.error(`Rule not found: ${ruleId}`);
255
+ process.exit(2);
256
+ }
257
+ if (globalOpts.format === 'json') {
258
+ console.log(JSON.stringify(rule, null, 2));
259
+ }
260
+ else {
261
+ console.log(`Rule: ${rule.id}`);
262
+ console.log(`Title: ${rule.title}`);
263
+ console.log(`Group: ${rule.group}`);
264
+ console.log(`Severity: ${rule.severity.toUpperCase()}`);
265
+ console.log(`\nDescription:`);
266
+ console.log(` ${rule.description}`);
267
+ console.log(`\nRecommendation:`);
268
+ console.log(` ${rule.recommendation}`);
269
+ console.log(`\nTags: ${rule.tags.join(', ')}`);
270
+ }
271
+ });
272
+ // Init command
273
+ program
274
+ .command('init')
275
+ .description('Create a default configuration file')
276
+ .option('--ci <platform>', 'Include CI configuration (github)', '')
277
+ .action((options) => {
278
+ const configPath = 'agentlint.yaml';
279
+ if (fs.existsSync(configPath)) {
280
+ console.error(`Configuration file already exists: ${configPath}`);
281
+ process.exit(2);
282
+ }
283
+ const config = (0, loader_1.generateDefaultConfig)();
284
+ fs.writeFileSync(configPath, config);
285
+ console.log(`Created configuration file: ${configPath}`);
286
+ if (options.ci === 'github') {
287
+ const workflowDir = '.github/workflows';
288
+ const workflowPath = path.join(workflowDir, 'agentlint.yaml');
289
+ if (!fs.existsSync(workflowDir)) {
290
+ fs.mkdirSync(workflowDir, { recursive: true });
291
+ }
292
+ const workflow = `name: AgentLint
293
+
294
+ on:
295
+ pull_request:
296
+ paths:
297
+ - ".claude/**"
298
+ - ".cursorrules"
299
+ - "CLAUDE.md"
300
+ - "AGENTS.md"
301
+
302
+ jobs:
303
+ agentlint:
304
+ runs-on: ubuntu-latest
305
+ steps:
306
+ - uses: actions/checkout@v4
307
+
308
+ - name: Setup Node.js
309
+ uses: actions/setup-node@v4
310
+ with:
311
+ node-version: '20'
312
+
313
+ - name: Install agentlint
314
+ run: npm install -g agentlint
315
+
316
+ - name: Scan
317
+ run: agentlint scan --ci --format sarif --output agentlint.sarif
318
+
319
+ - name: Upload SARIF
320
+ uses: github/codeql-action/upload-sarif@v3
321
+ with:
322
+ sarif_file: agentlint.sarif
323
+ `;
324
+ fs.writeFileSync(workflowPath, workflow);
325
+ console.log(`Created GitHub Actions workflow: ${workflowPath}`);
326
+ }
327
+ });
328
+ // Version command (explicit)
329
+ program
330
+ .command('version')
331
+ .description('Show version information')
332
+ .action(() => {
333
+ console.log(`agentlint ${VERSION}`);
334
+ console.log(`Node.js ${process.version}`);
335
+ console.log(`Platform: ${process.platform} ${process.arch}`);
336
+ });
337
+ // Helper functions
338
+ function collect(value, previous) {
339
+ return previous.concat([value]);
340
+ }
341
+ function writeOutput(content, outputPath) {
342
+ if (outputPath) {
343
+ fs.writeFileSync(outputPath, content);
344
+ }
345
+ else {
346
+ console.log(content);
347
+ }
348
+ }
349
+ // Parse and execute
350
+ program.parse();
351
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Diff functionality for comparing agent configuration versions
3
+ */
4
+ import { DiffResult } from '../ir/types';
5
+ import { ScanResult } from '../scanner';
6
+ import { PolicyConfig } from '../policy/types';
7
+ export interface DiffOptions {
8
+ policy: PolicyConfig;
9
+ failOn: string[];
10
+ warnOn: string[];
11
+ }
12
+ /**
13
+ * Compare two scan results and generate a diff
14
+ */
15
+ export declare function compareScanResults(base: ScanResult, target: ScanResult, baseRef: string, targetRef: string, options: DiffOptions): DiffResult;
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/diff/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAiC,UAAU,EAAiC,MAAM,aAAa,CAAC;AACvG,OAAO,EAAE,UAAU,EAAwB,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,WAAW,GACnB,UAAU,CAkDZ"}
@@ -0,0 +1,204 @@
1
+ "use strict";
2
+ /**
3
+ * Diff functionality for comparing agent configuration versions
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.compareScanResults = compareScanResults;
7
+ const hash_1 = require("../utils/hash");
8
+ /**
9
+ * Compare two scan results and generate a diff
10
+ */
11
+ function compareScanResults(base, target, baseRef, targetRef, options) {
12
+ const changes = [];
13
+ // Detect capability expansions
14
+ const capabilityChanges = detectCapabilityChanges(base.capabilitySummary, target.capabilitySummary);
15
+ changes.push(...capabilityChanges);
16
+ // Detect new findings
17
+ const newFindings = findNewFindings(base.findings, target.findings);
18
+ const resolvedFindings = findNewFindings(target.findings, base.findings);
19
+ // Count new high findings
20
+ const newHighFindings = newFindings.filter(f => f.severity === 'high').length;
21
+ // Determine if capability expansion occurred
22
+ const capabilityExpansion = capabilityChanges.some(c => c.type === 'capability_expansion' ||
23
+ c.type === 'network_new_outbound' ||
24
+ c.type === 'shell_dynamic_introduced');
25
+ // Determine status based on changes
26
+ const { status, exitCode } = determineDiffStatus(changes, newFindings, options);
27
+ return {
28
+ base: {
29
+ ref: baseRef,
30
+ tree_hash: (0, hash_1.generateId)('hash'),
31
+ },
32
+ target: {
33
+ ref: targetRef,
34
+ tree_hash: (0, hash_1.generateId)('hash'),
35
+ },
36
+ summary: {
37
+ capability_expansion: capabilityExpansion,
38
+ new_high_findings: newHighFindings,
39
+ status,
40
+ exit_code: exitCode,
41
+ },
42
+ changes,
43
+ new_findings: newFindings,
44
+ resolved_findings: resolvedFindings,
45
+ };
46
+ }
47
+ /**
48
+ * Detect capability changes between two summaries
49
+ */
50
+ function detectCapabilityChanges(base, target) {
51
+ const changes = [];
52
+ // Shell execution changes
53
+ if (!base.shell_exec.enabled && target.shell_exec.enabled) {
54
+ changes.push({
55
+ change_id: (0, hash_1.generateId)('change'),
56
+ type: 'capability_expansion',
57
+ severity: 'high',
58
+ message: 'shell_exec.enabled: false → true',
59
+ details: { field: 'shell_exec.enabled', from: false, to: true },
60
+ });
61
+ }
62
+ if (!base.shell_exec.dynamic_detected && target.shell_exec.dynamic_detected) {
63
+ changes.push({
64
+ change_id: (0, hash_1.generateId)('change'),
65
+ type: 'shell_dynamic_introduced',
66
+ severity: 'high',
67
+ message: 'shell_exec.dynamic: false → true',
68
+ details: { field: 'shell_exec.dynamic_detected', from: false, to: true },
69
+ });
70
+ }
71
+ // Network changes
72
+ if (!base.network.outbound && target.network.outbound) {
73
+ changes.push({
74
+ change_id: (0, hash_1.generateId)('change'),
75
+ type: 'network_new_outbound',
76
+ severity: 'high',
77
+ message: 'network.outbound: false → true',
78
+ details: { field: 'network.outbound', from: false, to: true },
79
+ });
80
+ }
81
+ if (!base.network.inbound && target.network.inbound) {
82
+ changes.push({
83
+ change_id: (0, hash_1.generateId)('change'),
84
+ type: 'network_expansion',
85
+ severity: 'medium',
86
+ message: 'network.inbound: false → true',
87
+ details: { field: 'network.inbound', from: false, to: true },
88
+ });
89
+ }
90
+ if (!base.network.fetches_executable && target.network.fetches_executable) {
91
+ changes.push({
92
+ change_id: (0, hash_1.generateId)('change'),
93
+ type: 'capability_expansion',
94
+ severity: 'high',
95
+ message: 'network.fetches_executable: false → true',
96
+ details: { field: 'network.fetches_executable', from: false, to: true },
97
+ });
98
+ }
99
+ // Context changes
100
+ if (!base.contexts.has_hooks && target.contexts.has_hooks) {
101
+ changes.push({
102
+ change_id: (0, hash_1.generateId)('change'),
103
+ type: 'context_change_to_hook',
104
+ severity: 'high',
105
+ message: 'Hooks added to configuration',
106
+ details: { field: 'contexts.has_hooks', from: false, to: true },
107
+ });
108
+ }
109
+ if (!base.contexts.has_ci_context && target.contexts.has_ci_context) {
110
+ changes.push({
111
+ change_id: (0, hash_1.generateId)('change'),
112
+ type: 'context_change_to_ci',
113
+ severity: 'medium',
114
+ message: 'CI context added to configuration',
115
+ details: { field: 'contexts.has_ci_context', from: false, to: true },
116
+ });
117
+ }
118
+ // Filesystem changes
119
+ const newSensitivePaths = target.filesystem.touches_sensitive_paths.filter(p => !base.filesystem.touches_sensitive_paths.includes(p));
120
+ if (newSensitivePaths.length > 0) {
121
+ changes.push({
122
+ change_id: (0, hash_1.generateId)('change'),
123
+ type: 'sensitive_path_newly_touched',
124
+ severity: 'high',
125
+ message: `New sensitive paths touched: ${newSensitivePaths.join(', ')}`,
126
+ details: { new_paths: newSensitivePaths },
127
+ });
128
+ }
129
+ // Write scope widening
130
+ const broadPatterns = ['**/*', '**', '*'];
131
+ const targetHasBroad = target.filesystem.write.some(w => broadPatterns.includes(w));
132
+ const baseHadBroad = base.filesystem.write.some(w => broadPatterns.includes(w));
133
+ if (targetHasBroad && !baseHadBroad) {
134
+ changes.push({
135
+ change_id: (0, hash_1.generateId)('change'),
136
+ type: 'write_scope_widening_to_all',
137
+ severity: 'high',
138
+ message: 'Write scope widened to include all files',
139
+ details: {
140
+ base_writes: base.filesystem.write,
141
+ target_writes: target.filesystem.write,
142
+ },
143
+ });
144
+ }
145
+ // Secrets changes
146
+ const newSecretVars = target.secrets.env_vars_referenced.filter(v => !base.secrets.env_vars_referenced.includes(v));
147
+ if (newSecretVars.length > 0) {
148
+ changes.push({
149
+ change_id: (0, hash_1.generateId)('change'),
150
+ type: 'capability_expansion',
151
+ severity: 'high',
152
+ message: `New secret variables referenced: ${newSecretVars.join(', ')}`,
153
+ details: { new_secret_vars: newSecretVars },
154
+ });
155
+ }
156
+ if (!base.secrets.propagation_detected && target.secrets.propagation_detected) {
157
+ changes.push({
158
+ change_id: (0, hash_1.generateId)('change'),
159
+ type: 'capability_expansion',
160
+ severity: 'high',
161
+ message: 'Secret propagation detected',
162
+ details: { field: 'secrets.propagation_detected', from: false, to: true },
163
+ });
164
+ }
165
+ return changes;
166
+ }
167
+ /**
168
+ * Find findings that exist in target but not in base
169
+ */
170
+ function findNewFindings(base, target) {
171
+ const baseFingerprints = new Set(base.map(f => f.fingerprints.stable));
172
+ return target.filter(f => !baseFingerprints.has(f.fingerprints.stable));
173
+ }
174
+ /**
175
+ * Determine diff status based on changes and new findings
176
+ */
177
+ function determineDiffStatus(changes, newFindings, options) {
178
+ // Check fail conditions
179
+ for (const changeType of options.failOn) {
180
+ if (changes.some(c => c.type === changeType)) {
181
+ return { status: 'fail', exitCode: 1 };
182
+ }
183
+ }
184
+ // Check if new high findings
185
+ if (options.failOn.includes('new_high_findings')) {
186
+ if (newFindings.some(f => f.severity === 'high')) {
187
+ return { status: 'fail', exitCode: 1 };
188
+ }
189
+ }
190
+ // Check warn conditions
191
+ for (const changeType of options.warnOn) {
192
+ if (changes.some(c => c.type === changeType)) {
193
+ return { status: 'warn', exitCode: 0 };
194
+ }
195
+ }
196
+ // Check if new medium findings
197
+ if (options.warnOn.includes('new_medium_findings')) {
198
+ if (newFindings.some(f => f.severity === 'medium')) {
199
+ return { status: 'warn', exitCode: 0 };
200
+ }
201
+ }
202
+ return { status: 'pass', exitCode: 0 };
203
+ }
204
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/diff/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAgBH,gDAwDC;AAnED,wCAA2C;AAQ3C;;GAEG;AACH,SAAgB,kBAAkB,CAChC,IAAgB,EAChB,MAAkB,EAClB,OAAe,EACf,SAAiB,EACjB,OAAoB;IAEpB,MAAM,OAAO,GAAiB,EAAE,CAAC;IAEjC,+BAA+B;IAC/B,MAAM,iBAAiB,GAAG,uBAAuB,CAC/C,IAAI,CAAC,iBAAiB,EACtB,MAAM,CAAC,iBAAiB,CACzB,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,CAAC;IAEnC,sBAAsB;IACtB,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpE,MAAM,gBAAgB,GAAG,eAAe,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEzE,0BAA0B;IAC1B,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAE9E,6CAA6C;IAC7C,MAAM,mBAAmB,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CACrD,CAAC,CAAC,IAAI,KAAK,sBAAsB;QACjC,CAAC,CAAC,IAAI,KAAK,sBAAsB;QACjC,CAAC,CAAC,IAAI,KAAK,0BAA0B,CACtC,CAAC;IAEF,oCAAoC;IACpC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,mBAAmB,CAC9C,OAAO,EACP,WAAW,EACX,OAAO,CACR,CAAC;IAEF,OAAO;QACL,IAAI,EAAE;YACJ,GAAG,EAAE,OAAO;YACZ,SAAS,EAAE,IAAA,iBAAU,EAAC,MAAM,CAAC;SAC9B;QACD,MAAM,EAAE;YACN,GAAG,EAAE,SAAS;YACd,SAAS,EAAE,IAAA,iBAAU,EAAC,MAAM,CAAC;SAC9B;QACD,OAAO,EAAE;YACP,oBAAoB,EAAE,mBAAmB;YACzC,iBAAiB,EAAE,eAAe;YAClC,MAAM;YACN,SAAS,EAAE,QAAQ;SACpB;QACD,OAAO;QACP,YAAY,EAAE,WAAW;QACzB,iBAAiB,EAAE,gBAAgB;KACpC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAC9B,IAAuB,EACvB,MAAyB;IAEzB,MAAM,OAAO,GAAiB,EAAE,CAAC;IAEjC,0BAA0B;IAC1B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC;YACX,SAAS,EAAE,IAAA,iBAAU,EAAC,QAAQ,CAAC;YAC/B,IAAI,EAAE,sBAAsB;YAC5B,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,kCAAkC;YAC3C,OAAO,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE;SAChE,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,IAAI,MAAM,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;QAC5E,OAAO,CAAC,IAAI,CAAC;YACX,SAAS,EAAE,IAAA,iBAAU,EAAC,QAAQ,CAAC;YAC/B,IAAI,EAAE,0BAA0B;YAChC,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,kCAAkC;YAC3C,OAAO,EAAE,EAAE,KAAK,EAAE,6BAA6B,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE;SACzE,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB;IAClB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC;YACX,SAAS,EAAE,IAAA,iBAAU,EAAC,QAAQ,CAAC;YAC/B,IAAI,EAAE,sBAAsB;YAC5B,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,gCAAgC;YACzC,OAAO,EAAE,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE;SAC9D,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC;YACX,SAAS,EAAE,IAAA,iBAAU,EAAC,QAAQ,CAAC;YAC/B,IAAI,EAAE,mBAAmB;YACzB,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,+BAA+B;YACxC,OAAO,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE;SAC7D,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,IAAI,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC;YACX,SAAS,EAAE,IAAA,iBAAU,EAAC,QAAQ,CAAC;YAC/B,IAAI,EAAE,sBAAsB;YAC5B,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,0CAA0C;YACnD,OAAO,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE;SACxE,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB;IAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC;YACX,SAAS,EAAE,IAAA,iBAAU,EAAC,QAAQ,CAAC;YAC/B,IAAI,EAAE,wBAAwB;YAC9B,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,8BAA8B;YACvC,OAAO,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE;SAChE,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,IAAI,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC;YACX,SAAS,EAAE,IAAA,iBAAU,EAAC,QAAQ,CAAC;YAC/B,IAAI,EAAE,sBAAsB;YAC5B,QAAQ,EAAE,QAAQ;YAClB,OAAO,EAAE,mCAAmC;YAC5C,OAAO,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE;SACrE,CAAC,CAAC;IACL,CAAC;IAED,qBAAqB;IACrB,MAAM,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC,uBAAuB,CAAC,MAAM,CACxE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC1D,CAAC;IACF,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC;YACX,SAAS,EAAE,IAAA,iBAAU,EAAC,QAAQ,CAAC;YAC/B,IAAI,EAAE,8BAA8B;YACpC,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,gCAAgC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACvE,OAAO,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE;SAC1C,CAAC,CAAC;IACL,CAAC;IAED,uBAAuB;IACvB,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IAC1C,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhF,IAAI,cAAc,IAAI,CAAC,YAAY,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC;YACX,SAAS,EAAE,IAAA,iBAAU,EAAC,QAAQ,CAAC;YAC/B,IAAI,EAAE,6BAA6B;YACnC,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,0CAA0C;YACnD,OAAO,EAAE;gBACP,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;gBAClC,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK;aACvC;SACF,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB;IAClB,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAC7D,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CACnD,CAAC;IACF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC;YACX,SAAS,EAAE,IAAA,iBAAU,EAAC,QAAQ,CAAC;YAC/B,IAAI,EAAE,sBAAsB;YAC5B,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,oCAAoC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACvE,OAAO,EAAE,EAAE,eAAe,EAAE,aAAa,EAAE;SAC5C,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,IAAI,MAAM,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC;QAC9E,OAAO,CAAC,IAAI,CAAC;YACX,SAAS,EAAE,IAAA,iBAAU,EAAC,QAAQ,CAAC;YAC/B,IAAI,EAAE,sBAAsB;YAC5B,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,6BAA6B;YACtC,OAAO,EAAE,EAAE,KAAK,EAAE,8BAA8B,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE;SAC1E,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,IAAe,EAAE,MAAiB;IACzD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IACvE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAC1B,OAAqB,EACrB,WAAsB,EACtB,OAAoB;IAEpB,wBAAwB;IACxB,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACxC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;YAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACjD,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,EAAE,CAAC;YACjD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACxC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;YAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACnD,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE,CAAC;YACnD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QACzC,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;AACzC,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * AgentLint - Static analysis and security scanner for AI agent configuration files
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ export * from './ir/types';
7
+ export * from './parsers';
8
+ export * from './rules';
9
+ export { generateReport, generateDiffReport } from './reports';
10
+ export { TextReportGenerator, generateDiffTextReport } from './reports/text';
11
+ export { JsonReportGenerator, generateDiffJsonReport } from './reports/json';
12
+ export { SarifReportGenerator, generateDiffSarifReport } from './reports/sarif';
13
+ export type { ReportOptions, ReportData, ReportFormat } from './reports/types';
14
+ export { loadPolicy, validatePolicy, generateDefaultConfig } from './policy/loader';
15
+ export { DEFAULT_POLICY } from './policy/types';
16
+ export type { PolicyConfig as AgentLintPolicyConfig } from './policy/types';
17
+ export { Scanner } from './scanner';
18
+ export type { ScanOptions, ScanResult } from './scanner';
19
+ export { compareScanResults } from './diff';
20
+ export type { DiffOptions } from './diff';
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,YAAY,CAAC;AAG3B,cAAc,WAAW,CAAC;AAG1B,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAChF,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/E,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,YAAY,EAAE,YAAY,IAAI,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAG5E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAC5C,YAAY,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC"}