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 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/reports/json.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * SARIF Report Generator
3
+ * SARIF v2.1.0 output for GitHub code scanning
4
+ */
5
+ import { ReportData, ReportOptions } from './types';
6
+ export declare class SarifReportGenerator {
7
+ private options;
8
+ private ruleEngine;
9
+ constructor(options: ReportOptions);
10
+ generate(data: ReportData): string;
11
+ private buildReport;
12
+ private buildRule;
13
+ private buildResult;
14
+ private severityToLevel;
15
+ }
16
+ /**
17
+ * Generate SARIF diff report
18
+ */
19
+ export declare function generateDiffSarifReport(data: ReportData): string;
20
+ //# sourceMappingURL=sarif.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sarif.d.ts","sourceRoot":"","sources":["../../src/reports/sarif.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,aAAa,EAAsD,MAAM,SAAS,CAAC;AASxG,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,UAAU,CAAa;gBAEnB,OAAO,EAAE,aAAa;IAKlC,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;IAKlC,OAAO,CAAC,WAAW;IAwEnB,OAAO,CAAC,SAAS;IA6BjB,OAAO,CAAC,WAAW;IA6BnB,OAAO,CAAC,eAAe;CAUxB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAmBhE"}
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ /**
3
+ * SARIF Report Generator
4
+ * SARIF v2.1.0 output for GitHub code scanning
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.SarifReportGenerator = void 0;
8
+ exports.generateDiffSarifReport = generateDiffSarifReport;
9
+ const engine_1 = require("../rules/engine");
10
+ // Package version
11
+ const TOOL_VERSION = '0.1.0';
12
+ const INFORMATION_URI = 'https://github.com/agentlint/agentlint';
13
+ const SARIF_SCHEMA = 'https://json.schemastore.org/sarif-2.1.0.json';
14
+ class SarifReportGenerator {
15
+ options;
16
+ ruleEngine;
17
+ constructor(options) {
18
+ this.options = options;
19
+ this.ruleEngine = new engine_1.RuleEngine();
20
+ }
21
+ generate(data) {
22
+ const report = this.buildReport(data);
23
+ return JSON.stringify(report, null, 2);
24
+ }
25
+ buildReport(data) {
26
+ // Get unique rule IDs from findings
27
+ const ruleIds = new Set(data.findings.map(f => f.rule_id));
28
+ // Build rules array
29
+ const rules = [];
30
+ for (const ruleId of ruleIds) {
31
+ const definition = this.ruleEngine.getRuleDefinition(ruleId);
32
+ if (definition) {
33
+ rules.push(this.buildRule(definition));
34
+ }
35
+ }
36
+ // Sort rules by ID for stability
37
+ rules.sort((a, b) => a.id.localeCompare(b.id));
38
+ // Build artifacts array
39
+ const artifactPaths = new Set(data.findings.map(f => f.location.path));
40
+ const artifacts = Array.from(artifactPaths)
41
+ .sort()
42
+ .map(path => ({
43
+ location: { uri: path },
44
+ }));
45
+ // Build results array
46
+ const results = data.findings.map(f => this.buildResult(f));
47
+ // Sort results for stability
48
+ results.sort((a, b) => {
49
+ // Sort by level (error > warning > note)
50
+ const levelOrder = { error: 0, warning: 1, note: 2, none: 3 };
51
+ const levelDiff = levelOrder[a.level] - levelOrder[b.level];
52
+ if (levelDiff !== 0)
53
+ return levelDiff;
54
+ // Then by location
55
+ const aPath = a.locations[0]?.physicalLocation?.artifactLocation?.uri || '';
56
+ const bPath = b.locations[0]?.physicalLocation?.artifactLocation?.uri || '';
57
+ const pathDiff = aPath.localeCompare(bPath);
58
+ if (pathDiff !== 0)
59
+ return pathDiff;
60
+ // Then by line
61
+ const aLine = a.locations[0]?.physicalLocation?.region?.startLine || 0;
62
+ const bLine = b.locations[0]?.physicalLocation?.region?.startLine || 0;
63
+ const lineDiff = aLine - bLine;
64
+ if (lineDiff !== 0)
65
+ return lineDiff;
66
+ // Then by rule ID
67
+ return a.ruleId.localeCompare(b.ruleId);
68
+ });
69
+ const report = {
70
+ version: '2.1.0',
71
+ $schema: SARIF_SCHEMA,
72
+ runs: [
73
+ {
74
+ tool: {
75
+ driver: {
76
+ name: 'AgentLint',
77
+ version: TOOL_VERSION,
78
+ informationUri: INFORMATION_URI,
79
+ rules,
80
+ },
81
+ },
82
+ artifacts,
83
+ results,
84
+ },
85
+ ],
86
+ };
87
+ return report;
88
+ }
89
+ buildRule(definition) {
90
+ return {
91
+ id: definition.id,
92
+ name: definition.title,
93
+ shortDescription: {
94
+ text: definition.title,
95
+ },
96
+ fullDescription: {
97
+ text: definition.description,
98
+ },
99
+ help: {
100
+ text: definition.recommendation,
101
+ },
102
+ properties: {
103
+ category: definition.group,
104
+ severity: definition.severity,
105
+ tags: ['agent-config', ...definition.tags],
106
+ },
107
+ };
108
+ }
109
+ buildResult(finding) {
110
+ return {
111
+ ruleId: finding.rule_id,
112
+ level: this.severityToLevel(finding.severity),
113
+ message: {
114
+ text: finding.message,
115
+ },
116
+ locations: [
117
+ {
118
+ physicalLocation: {
119
+ artifactLocation: {
120
+ uri: finding.location.path,
121
+ },
122
+ region: {
123
+ startLine: finding.location.start_line,
124
+ endLine: finding.location.end_line,
125
+ },
126
+ },
127
+ },
128
+ ],
129
+ properties: {
130
+ severity: finding.severity,
131
+ confidence: finding.confidence,
132
+ evidence: finding.evidence[0]?.value || '',
133
+ tags: finding.tags,
134
+ },
135
+ };
136
+ }
137
+ severityToLevel(severity) {
138
+ switch (severity) {
139
+ case 'high':
140
+ return 'error';
141
+ case 'medium':
142
+ return 'warning';
143
+ case 'low':
144
+ return 'note';
145
+ }
146
+ }
147
+ }
148
+ exports.SarifReportGenerator = SarifReportGenerator;
149
+ /**
150
+ * Generate SARIF diff report
151
+ */
152
+ function generateDiffSarifReport(data) {
153
+ // For diff, we only include new findings in SARIF
154
+ const diffFindings = data.diff?.new_findings || [];
155
+ const diffData = {
156
+ ...data,
157
+ findings: diffFindings,
158
+ };
159
+ const generator = new SarifReportGenerator({
160
+ format: 'sarif',
161
+ color: false,
162
+ includeRecommendations: true,
163
+ includePermissionManifest: false,
164
+ includeIR: false,
165
+ verbose: false,
166
+ });
167
+ return generator.generate(diffData);
168
+ }
169
+ //# sourceMappingURL=sarif.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sarif.js","sourceRoot":"","sources":["../../src/reports/sarif.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Text Report Generator
3
+ * Human-readable console output
4
+ */
5
+ import { ReportData, ReportOptions } from './types';
6
+ export declare class TextReportGenerator {
7
+ private options;
8
+ private colorEnabled;
9
+ constructor(options: ReportOptions);
10
+ generate(data: ReportData): string;
11
+ private header;
12
+ private summary;
13
+ private findingsSection;
14
+ private formatFinding;
15
+ private formatSeverity;
16
+ private capabilitySummary;
17
+ private recommendedPermissions;
18
+ private statusLine;
19
+ private color;
20
+ }
21
+ /**
22
+ * Generate text diff report
23
+ */
24
+ export declare function generateDiffTextReport(data: ReportData, options: ReportOptions): string;
25
+ //# sourceMappingURL=text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/reports/text.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAgBpD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,YAAY,CAAU;gBAElB,OAAO,EAAE,aAAa;IAKlC,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;IAsClC,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,OAAO;IAgDf,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,aAAa;IA8BrB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,iBAAiB;IAiDzB,OAAO,CAAC,sBAAsB;IAwB9B,OAAO,CAAC,UAAU;IA4BlB,OAAO,CAAC,KAAK;CAMd;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAgEvF"}
@@ -0,0 +1,283 @@
1
+ "use strict";
2
+ /**
3
+ * Text Report Generator
4
+ * Human-readable console output
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.TextReportGenerator = void 0;
8
+ exports.generateDiffTextReport = generateDiffTextReport;
9
+ // ANSI color codes (when color is enabled)
10
+ const colors = {
11
+ reset: '\x1b[0m',
12
+ bold: '\x1b[1m',
13
+ dim: '\x1b[2m',
14
+ red: '\x1b[31m',
15
+ yellow: '\x1b[33m',
16
+ green: '\x1b[32m',
17
+ blue: '\x1b[34m',
18
+ cyan: '\x1b[36m',
19
+ gray: '\x1b[90m',
20
+ };
21
+ class TextReportGenerator {
22
+ options;
23
+ colorEnabled;
24
+ constructor(options) {
25
+ this.options = options;
26
+ this.colorEnabled = options.color;
27
+ }
28
+ generate(data) {
29
+ const lines = [];
30
+ // Header
31
+ lines.push(this.header(data));
32
+ lines.push('');
33
+ // Summary
34
+ lines.push(this.summary(data));
35
+ lines.push('');
36
+ // Findings
37
+ if (data.findings.length > 0) {
38
+ lines.push(this.findingsSection(data.findings));
39
+ lines.push('');
40
+ }
41
+ else {
42
+ lines.push(this.color('No findings detected.', 'green'));
43
+ lines.push('');
44
+ }
45
+ // Capability Summary (if verbose)
46
+ if (this.options.verbose) {
47
+ lines.push(this.capabilitySummary(data));
48
+ lines.push('');
49
+ }
50
+ // Recommended Permissions
51
+ if (this.options.includePermissionManifest && data.findings.length > 0) {
52
+ lines.push(this.recommendedPermissions(data));
53
+ lines.push('');
54
+ }
55
+ // Status line
56
+ lines.push(this.statusLine(data));
57
+ return lines.join('\n');
58
+ }
59
+ header(data) {
60
+ const scanRoot = data.report.inputs.scan_root;
61
+ return this.color(`AgentLint scan: ${scanRoot}`, 'bold');
62
+ }
63
+ summary(data) {
64
+ const lines = [];
65
+ const { summary } = data.report;
66
+ // Documents scanned
67
+ const docBreakdown = [];
68
+ const toolCounts = {};
69
+ for (const doc of data.documents) {
70
+ toolCounts[doc.tool_family] = (toolCounts[doc.tool_family] || 0) + 1;
71
+ }
72
+ for (const [tool, count] of Object.entries(toolCounts)) {
73
+ if (count > 0) {
74
+ docBreakdown.push(`${tool}=${count}`);
75
+ }
76
+ }
77
+ lines.push(`Parsed: ${summary.documents_scanned} documents (${docBreakdown.join(', ')})`);
78
+ // Context info
79
+ const contextParts = [];
80
+ if (summary.contexts.has_hooks) {
81
+ contextParts.push('hooks detected');
82
+ }
83
+ if (summary.contexts.has_ci_context) {
84
+ contextParts.push('ci-risk paths touched');
85
+ }
86
+ if (contextParts.length > 0) {
87
+ lines.push(`Context: ${contextParts.join(', ')}`);
88
+ }
89
+ // Parse status
90
+ if (summary.parse.partial > 0 || summary.parse.failed > 0) {
91
+ lines.push(this.color(`Parse status: ${summary.parse.ok} ok, ${summary.parse.partial} partial, ${summary.parse.failed} failed`, summary.parse.failed > 0 ? 'yellow' : 'dim'));
92
+ }
93
+ return lines.join('\n');
94
+ }
95
+ findingsSection(findings) {
96
+ const lines = [];
97
+ lines.push(this.color('Findings:', 'bold'));
98
+ for (const finding of findings) {
99
+ lines.push(this.formatFinding(finding));
100
+ }
101
+ return lines.join('\n');
102
+ }
103
+ formatFinding(finding) {
104
+ const lines = [];
105
+ // Severity and rule
106
+ const severityLabel = this.formatSeverity(finding.severity);
107
+ lines.push(` ${severityLabel} ${finding.rule_id} ${finding.title}`);
108
+ // Location
109
+ const location = `${finding.location.path}:${finding.location.start_line}-${finding.location.end_line}`;
110
+ lines.push(` ${this.color(location, 'cyan')}`);
111
+ // Message
112
+ lines.push(` ${finding.message}`);
113
+ // Evidence (first one)
114
+ if (finding.evidence.length > 0) {
115
+ const evidence = finding.evidence[0].value;
116
+ const truncated = evidence.length > 80 ? evidence.substring(0, 77) + '...' : evidence;
117
+ lines.push(` ${this.color(`Evidence: "${truncated}"`, 'dim')}`);
118
+ }
119
+ // Recommendation (if enabled)
120
+ if (this.options.includeRecommendations) {
121
+ lines.push(` ${this.color(`Recommendation: ${finding.recommendation}`, 'dim')}`);
122
+ }
123
+ return lines.join('\n');
124
+ }
125
+ formatSeverity(severity) {
126
+ switch (severity) {
127
+ case 'high':
128
+ return this.color('HIGH ', 'red');
129
+ case 'medium':
130
+ return this.color('MED ', 'yellow');
131
+ case 'low':
132
+ return this.color('LOW ', 'dim');
133
+ }
134
+ }
135
+ capabilitySummary(data) {
136
+ const lines = [];
137
+ const caps = data.capabilitySummary;
138
+ lines.push(this.color('Capabilities detected:', 'bold'));
139
+ if (caps.shell_exec.enabled) {
140
+ lines.push(` - Shell execution: ${caps.shell_exec.dynamic_detected ? this.color('DYNAMIC', 'red') : 'enabled'}`);
141
+ if (caps.shell_exec.examples.length > 0) {
142
+ lines.push(` Examples: ${caps.shell_exec.examples.slice(0, 3).join(', ')}`);
143
+ }
144
+ }
145
+ if (caps.network.outbound || caps.network.inbound) {
146
+ const netParts = [];
147
+ if (caps.network.outbound)
148
+ netParts.push('outbound');
149
+ if (caps.network.inbound)
150
+ netParts.push('inbound');
151
+ lines.push(` - Network: ${netParts.join(', ')}`);
152
+ if (caps.network.allowed_domains.length > 0) {
153
+ lines.push(` Domains: ${caps.network.allowed_domains.join(', ')}`);
154
+ }
155
+ if (caps.network.fetches_executable) {
156
+ lines.push(` ${this.color('Fetches executable content', 'red')}`);
157
+ }
158
+ }
159
+ if (caps.filesystem.write.length > 0) {
160
+ lines.push(` - Filesystem write: ${caps.filesystem.write.join(', ')}`);
161
+ }
162
+ if (caps.filesystem.touches_sensitive_paths.length > 0) {
163
+ lines.push(` - ${this.color('Sensitive paths:', 'yellow')} ${caps.filesystem.touches_sensitive_paths.join(', ')}`);
164
+ }
165
+ if (caps.secrets.env_vars_referenced.length > 0) {
166
+ lines.push(` - Secrets referenced: ${caps.secrets.env_vars_referenced.join(', ')}`);
167
+ }
168
+ if (caps.git.ops.length > 0) {
169
+ lines.push(` - Git operations: ${caps.git.ops.join(', ')}`);
170
+ }
171
+ return lines.join('\n');
172
+ }
173
+ recommendedPermissions(data) {
174
+ const lines = [];
175
+ const perms = data.recommendedPermissions.permissions;
176
+ lines.push(this.color('Recommended permissions:', 'bold'));
177
+ if (perms.filesystem.read.length > 0) {
178
+ lines.push(` filesystem.read: ${JSON.stringify(perms.filesystem.read)}`);
179
+ }
180
+ if (perms.filesystem.write.length > 0) {
181
+ lines.push(` filesystem.write: ${JSON.stringify(perms.filesystem.write)}`);
182
+ }
183
+ lines.push(` shell_exec.enabled: ${perms.shell_exec.enabled}`);
184
+ if (perms.shell_exec.allowed_commands.length > 0) {
185
+ lines.push(` shell_exec.allowed_commands: ${JSON.stringify(perms.shell_exec.allowed_commands)}`);
186
+ }
187
+ lines.push(` network.outbound: ${perms.network.outbound}`);
188
+ if (perms.network.allowed_domains.length > 0) {
189
+ lines.push(` network.allowed_domains: ${JSON.stringify(perms.network.allowed_domains)}`);
190
+ }
191
+ return lines.join('\n');
192
+ }
193
+ statusLine(data) {
194
+ const counts = data.report.summary.counts_by_severity;
195
+ const countParts = [];
196
+ if (counts.high > 0) {
197
+ countParts.push(this.color(`${counts.high} high`, 'red'));
198
+ }
199
+ if (counts.medium > 0) {
200
+ countParts.push(this.color(`${counts.medium} medium`, 'yellow'));
201
+ }
202
+ if (counts.low > 0) {
203
+ countParts.push(`${counts.low} low`);
204
+ }
205
+ const statusText = data.status === 'pass'
206
+ ? this.color('PASS', 'green')
207
+ : data.status === 'warn'
208
+ ? this.color('WARN', 'yellow')
209
+ : this.color('FAIL', 'red');
210
+ if (countParts.length > 0) {
211
+ return `Status: ${statusText} (${countParts.join(', ')})`;
212
+ }
213
+ else {
214
+ return `Status: ${statusText}`;
215
+ }
216
+ }
217
+ color(text, color) {
218
+ if (!this.colorEnabled) {
219
+ return text;
220
+ }
221
+ return `${colors[color]}${text}${colors.reset}`;
222
+ }
223
+ }
224
+ exports.TextReportGenerator = TextReportGenerator;
225
+ /**
226
+ * Generate text diff report
227
+ */
228
+ function generateDiffTextReport(data, options) {
229
+ const lines = [];
230
+ const diff = data.diff;
231
+ if (!diff) {
232
+ return 'No diff data available.';
233
+ }
234
+ const colorEnabled = options.color;
235
+ const c = (text, color) => {
236
+ return colorEnabled ? `${colors[color]}${text}${colors.reset}` : text;
237
+ };
238
+ // Header
239
+ lines.push(c(`AgentLint diff: ${diff.base.ref} → ${diff.target.ref}`, 'bold'));
240
+ lines.push('');
241
+ // Changes
242
+ if (diff.changes.length > 0) {
243
+ lines.push(c('Behavioral changes:', 'bold'));
244
+ for (const change of diff.changes) {
245
+ const severity = change.severity === 'high' ? c('HIGH', 'red') :
246
+ change.severity === 'medium' ? c('MED ', 'yellow') :
247
+ 'LOW ';
248
+ lines.push(` ${severity} ${change.type}`);
249
+ lines.push(` ${change.message}`);
250
+ }
251
+ lines.push('');
252
+ }
253
+ // New findings
254
+ if (diff.new_findings.length > 0) {
255
+ lines.push(c('New findings introduced:', 'bold'));
256
+ for (const finding of diff.new_findings) {
257
+ const severity = finding.severity === 'high' ? c('HIGH', 'red') :
258
+ finding.severity === 'medium' ? c('MED ', 'yellow') :
259
+ 'LOW ';
260
+ lines.push(` ${severity} ${finding.rule_id} ${finding.title}`);
261
+ lines.push(` ${finding.location.path}:${finding.location.start_line}-${finding.location.end_line}`);
262
+ }
263
+ lines.push('');
264
+ }
265
+ // Resolved findings
266
+ if (diff.resolved_findings.length > 0) {
267
+ lines.push(c('Findings resolved:', 'green'));
268
+ for (const finding of diff.resolved_findings) {
269
+ lines.push(` ${finding.rule_id} ${finding.title}`);
270
+ }
271
+ lines.push('');
272
+ }
273
+ // Status
274
+ const statusText = diff.summary.status === 'pass' ? c('PASS', 'green') :
275
+ diff.summary.status === 'warn' ? c('WARN', 'yellow') :
276
+ c('FAIL', 'red');
277
+ const reason = diff.summary.capability_expansion ? 'capability expansion detected' :
278
+ diff.summary.new_high_findings > 0 ? `${diff.summary.new_high_findings} new high findings` :
279
+ '';
280
+ lines.push(`Status: ${statusText}${reason ? ` (${reason})` : ''}`);
281
+ return lines.join('\n');
282
+ }
283
+ //# sourceMappingURL=text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/reports/text.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Report generation types
3
+ */
4
+ import { AgentLintReport, Finding, CapabilitySummary, PermissionManifest, DocumentSummary, DiffResult, ScanStatus } from '../ir/types';
5
+ export type ReportFormat = 'text' | 'json' | 'sarif';
6
+ export interface ReportOptions {
7
+ format: ReportFormat;
8
+ color: boolean;
9
+ includeRecommendations: boolean;
10
+ includePermissionManifest: boolean;
11
+ includeIR: boolean;
12
+ verbose: boolean;
13
+ }
14
+ export interface ReportData {
15
+ report: AgentLintReport;
16
+ findings: Finding[];
17
+ capabilitySummary: CapabilitySummary;
18
+ recommendedPermissions: PermissionManifest;
19
+ documents: DocumentSummary[];
20
+ diff?: DiffResult;
21
+ status: ScanStatus;
22
+ exitCode: number;
23
+ }
24
+ /**
25
+ * SARIF types for GitHub code scanning
26
+ */
27
+ export interface SarifReport {
28
+ version: '2.1.0';
29
+ $schema: string;
30
+ runs: SarifRun[];
31
+ }
32
+ export interface SarifRun {
33
+ tool: {
34
+ driver: SarifDriver;
35
+ };
36
+ artifacts: SarifArtifact[];
37
+ results: SarifResult[];
38
+ }
39
+ export interface SarifDriver {
40
+ name: string;
41
+ version: string;
42
+ informationUri: string;
43
+ rules: SarifRule[];
44
+ }
45
+ export interface SarifRule {
46
+ id: string;
47
+ name: string;
48
+ shortDescription: {
49
+ text: string;
50
+ };
51
+ fullDescription: {
52
+ text: string;
53
+ };
54
+ help: {
55
+ text: string;
56
+ };
57
+ properties: {
58
+ category: string;
59
+ severity: string;
60
+ tags: string[];
61
+ };
62
+ }
63
+ export interface SarifArtifact {
64
+ location: {
65
+ uri: string;
66
+ };
67
+ }
68
+ export interface SarifResult {
69
+ ruleId: string;
70
+ level: 'error' | 'warning' | 'note' | 'none';
71
+ message: {
72
+ text: string;
73
+ };
74
+ locations: SarifLocation[];
75
+ properties?: Record<string, unknown>;
76
+ }
77
+ export interface SarifLocation {
78
+ physicalLocation: {
79
+ artifactLocation: {
80
+ uri: string;
81
+ };
82
+ region: {
83
+ startLine: number;
84
+ endLine: number;
85
+ };
86
+ };
87
+ }
88
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/reports/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,eAAe,EACf,OAAO,EACP,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,UAAU,EACV,UAAU,EAEX,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,sBAAsB,EAAE,OAAO,CAAC;IAChC,yBAAyB,EAAE,OAAO,CAAC;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,eAAe,CAAC;IACxB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,sBAAsB,EAAE,kBAAkB,CAAC;IAC3C,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,QAAQ,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE;QACJ,MAAM,EAAE,WAAW,CAAC;KACrB,CAAC;IACF,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,eAAe,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACvB,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,EAAE,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE;QACR,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IAC7C,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1B,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,aAAa;IAC5B,gBAAgB,EAAE;QAChB,gBAAgB,EAAE;YAChB,GAAG,EAAE,MAAM,CAAC;SACb,CAAC;QACF,MAAM,EAAE;YACN,SAAS,EAAE,MAAM,CAAC;YAClB,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;KACH,CAAC;CACH"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * Report generation types
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/reports/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}