@runhalo/engine 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/README.md +58 -0
- package/dist/fixer.d.ts +99 -0
- package/dist/fixer.js +274 -0
- package/dist/fixer.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.js +87 -3
- package/dist/index.js.map +1 -1
- package/dist/scoring.d.ts +52 -0
- package/dist/scoring.js +104 -0
- package/dist/scoring.js.map +1 -0
- package/package.json +3 -2
package/README.md
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# @runhalo/engine
|
|
2
|
+
|
|
3
|
+
**Halo rule engine** — COPPA 2.0 risk detection via tree-sitter AST analysis.
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/@runhalo/engine)
|
|
6
|
+
[](https://www.apache.org/licenses/LICENSE-2.0)
|
|
7
|
+
|
|
8
|
+
## What it does
|
|
9
|
+
|
|
10
|
+
The engine scans source files for code patterns that may indicate COPPA 2.0 privacy risks in children's apps. It ships with **20 COPPA rules** and **5 ethical design rules**, powered by tree-sitter AST analysis and regex pattern matching.
|
|
11
|
+
|
|
12
|
+
## Install
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npm install @runhalo/engine
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Usage
|
|
19
|
+
|
|
20
|
+
```typescript
|
|
21
|
+
import { HaloEngine } from '@runhalo/engine';
|
|
22
|
+
|
|
23
|
+
const engine = new HaloEngine();
|
|
24
|
+
|
|
25
|
+
// Scan a single file
|
|
26
|
+
const results = engine.scanFile('src/auth/login.ts', sourceCode);
|
|
27
|
+
|
|
28
|
+
// Each result includes:
|
|
29
|
+
// - ruleId: 'coppa-auth-001'
|
|
30
|
+
// - severity: 'critical' | 'high' | 'medium' | 'low'
|
|
31
|
+
// - message: human-readable description
|
|
32
|
+
// - line / column / codeSnippet
|
|
33
|
+
// - fixSuggestion: recommended remediation
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Rules
|
|
37
|
+
|
|
38
|
+
20 COPPA rules covering authentication, data collection, tracking, encryption, and consent — plus 5 ethical design rules for dark patterns like infinite scroll, streak pressure, and loot boxes.
|
|
39
|
+
|
|
40
|
+
Full rule reference: [github.com/runhalo/halo#rules](https://github.com/runhalo/halo#rules)
|
|
41
|
+
|
|
42
|
+
## Supported Languages
|
|
43
|
+
|
|
44
|
+
TypeScript, JavaScript, TSX, JSX, Python, Swift, Java, Kotlin, HTML, Vue, Svelte, PHP, C++, C#, SQL
|
|
45
|
+
|
|
46
|
+
## CLI
|
|
47
|
+
|
|
48
|
+
Most users should install the CLI instead:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
npx @runhalo/cli scan .
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
See [@runhalo/cli](https://www.npmjs.com/package/@runhalo/cli) for the command-line scanner.
|
|
55
|
+
|
|
56
|
+
## License
|
|
57
|
+
|
|
58
|
+
Apache 2.0 — [Mindful Media](https://mindfulmedia.org)
|
package/dist/fixer.d.ts
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Halo Fix Engine
|
|
3
|
+
* Tier 1 auto-fix transforms for COPPA violations
|
|
4
|
+
*
|
|
5
|
+
* Sprint 5: 4 auto-fixable rules (line-targeted string transforms, no ts-morph)
|
|
6
|
+
* coppa-sec-006: HTTP → HTTPS (url-upgrade)
|
|
7
|
+
* coppa-sec-010: Remove weak passwords (remove-default)
|
|
8
|
+
* coppa-sec-015: innerHTML → textContent (sanitize-input) ⚠️ behavior change
|
|
9
|
+
* coppa-default-020: Public → private (set-default)
|
|
10
|
+
*/
|
|
11
|
+
import type { Violation } from './index';
|
|
12
|
+
/** Result of attempting to fix a single violation */
|
|
13
|
+
export interface FixResult {
|
|
14
|
+
ruleId: string;
|
|
15
|
+
filePath: string;
|
|
16
|
+
line: number;
|
|
17
|
+
status: 'applied' | 'skipped' | 'failed' | 'reverted';
|
|
18
|
+
original: string;
|
|
19
|
+
fixed: string;
|
|
20
|
+
reason?: string;
|
|
21
|
+
/** True if this fix changes rendering behavior (e.g. innerHTML → textContent) */
|
|
22
|
+
warning?: string;
|
|
23
|
+
}
|
|
24
|
+
/** Result of fixing an entire file */
|
|
25
|
+
export interface FileFixResult {
|
|
26
|
+
filePath: string;
|
|
27
|
+
originalContent: string;
|
|
28
|
+
fixedContent: string;
|
|
29
|
+
fixes: FixResult[];
|
|
30
|
+
/** False until caller re-scans to verify violations are gone */
|
|
31
|
+
verified: boolean;
|
|
32
|
+
}
|
|
33
|
+
/** Options for the fix operation */
|
|
34
|
+
export interface FixOptions {
|
|
35
|
+
dryRun?: boolean;
|
|
36
|
+
rules?: string[];
|
|
37
|
+
verbose?: boolean;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Transform: url-upgrade (coppa-sec-006)
|
|
41
|
+
* Replaces http:// with https:// on the violation line.
|
|
42
|
+
*/
|
|
43
|
+
export declare function transformUrlUpgrade(line: string, _violation: Violation): string;
|
|
44
|
+
/**
|
|
45
|
+
* Transform: remove-default (coppa-sec-010)
|
|
46
|
+
* Replaces weak hardcoded password string literals with a secure alternative.
|
|
47
|
+
*
|
|
48
|
+
* Guards against false positives:
|
|
49
|
+
* - Enum definitions: PASSWORD = 'password' (discriminant, not a real password)
|
|
50
|
+
* - Input type declarations: type: 'password' (HTML type attribute)
|
|
51
|
+
* - Switch case labels: case 'password': (discriminant)
|
|
52
|
+
*/
|
|
53
|
+
export declare function transformRemoveDefault(line: string, _violation: Violation): string;
|
|
54
|
+
/**
|
|
55
|
+
* Transform: sanitize-input (coppa-sec-015)
|
|
56
|
+
* Replaces .innerHTML assignments with .textContent.
|
|
57
|
+
* ⚠️ WARNING: This changes rendering behavior. If the developer needs HTML rendering,
|
|
58
|
+
* this fix will break their UI. Flagged with a warning in dry-run output.
|
|
59
|
+
*
|
|
60
|
+
* Guards against false positives:
|
|
61
|
+
* - Already-sanitized dangerouslySetInnerHTML (content already wrapped in DOMPurify.sanitize)
|
|
62
|
+
*/
|
|
63
|
+
export declare function transformSanitizeInput(line: string, _violation: Violation): string;
|
|
64
|
+
/**
|
|
65
|
+
* Transform: set-default (coppa-default-020)
|
|
66
|
+
* Changes public profile defaults to private.
|
|
67
|
+
*
|
|
68
|
+
* Guards against false positives:
|
|
69
|
+
* - TypeScript type unions: visibility: 'public' | 'private' (type definition, not runtime value)
|
|
70
|
+
*/
|
|
71
|
+
export declare function transformSetDefault(line: string, _violation: Violation): string;
|
|
72
|
+
export declare class FixEngine {
|
|
73
|
+
/**
|
|
74
|
+
* Check if a violation is auto-fixable (Tier 1).
|
|
75
|
+
* Uses the fixability field already populated on the violation.
|
|
76
|
+
*/
|
|
77
|
+
isAutoFixable(violation: Violation): boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Check if a rule ID is auto-fixable by looking at a violation's remediation metadata.
|
|
80
|
+
* For use when you have a ruleId but no violation object — checks against known auto-fix transforms.
|
|
81
|
+
*/
|
|
82
|
+
isRuleAutoFixable(ruleId: string): boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Get all auto-fixable rule IDs.
|
|
85
|
+
*/
|
|
86
|
+
getAutoFixableRules(): string[];
|
|
87
|
+
/**
|
|
88
|
+
* Apply fixes to file content for a set of violations.
|
|
89
|
+
* Violations must all belong to the same file.
|
|
90
|
+
* Processes bottom-to-top to preserve line numbers.
|
|
91
|
+
* Returns the fixed content (does NOT write to disk).
|
|
92
|
+
*/
|
|
93
|
+
applyFixes(content: string, violations: Violation[], options?: FixOptions): FileFixResult;
|
|
94
|
+
/**
|
|
95
|
+
* Generate a simple unified diff between original and fixed content.
|
|
96
|
+
* Used for --dry-run output.
|
|
97
|
+
*/
|
|
98
|
+
generateDiff(filePath: string, original: string, fixed: string): string;
|
|
99
|
+
}
|
package/dist/fixer.js
ADDED
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Halo Fix Engine
|
|
4
|
+
* Tier 1 auto-fix transforms for COPPA violations
|
|
5
|
+
*
|
|
6
|
+
* Sprint 5: 4 auto-fixable rules (line-targeted string transforms, no ts-morph)
|
|
7
|
+
* coppa-sec-006: HTTP → HTTPS (url-upgrade)
|
|
8
|
+
* coppa-sec-010: Remove weak passwords (remove-default)
|
|
9
|
+
* coppa-sec-015: innerHTML → textContent (sanitize-input) ⚠️ behavior change
|
|
10
|
+
* coppa-default-020: Public → private (set-default)
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.FixEngine = void 0;
|
|
14
|
+
exports.transformUrlUpgrade = transformUrlUpgrade;
|
|
15
|
+
exports.transformRemoveDefault = transformRemoveDefault;
|
|
16
|
+
exports.transformSanitizeInput = transformSanitizeInput;
|
|
17
|
+
exports.transformSetDefault = transformSetDefault;
|
|
18
|
+
// ==================== Transform Functions ====================
|
|
19
|
+
/**
|
|
20
|
+
* Transform: url-upgrade (coppa-sec-006)
|
|
21
|
+
* Replaces http:// with https:// on the violation line.
|
|
22
|
+
*/
|
|
23
|
+
function transformUrlUpgrade(line, _violation) {
|
|
24
|
+
return line.replace(/http:\/\//g, 'https://');
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Transform: remove-default (coppa-sec-010)
|
|
28
|
+
* Replaces weak hardcoded password string literals with a secure alternative.
|
|
29
|
+
*
|
|
30
|
+
* Guards against false positives:
|
|
31
|
+
* - Enum definitions: PASSWORD = 'password' (discriminant, not a real password)
|
|
32
|
+
* - Input type declarations: type: 'password' (HTML type attribute)
|
|
33
|
+
* - Switch case labels: case 'password': (discriminant)
|
|
34
|
+
*/
|
|
35
|
+
function transformRemoveDefault(line, _violation) {
|
|
36
|
+
// Skip enum/const member definitions (SCREAMING_CASE = 'value') — case-sensitive for identifier
|
|
37
|
+
if (/^\s*[A-Z][A-Z0-9_]+\s*=\s*(['"])(123456|password|changeme|student|welcome|student123|child123|default|admin)\1/.test(line)) {
|
|
38
|
+
return line;
|
|
39
|
+
}
|
|
40
|
+
// Skip HTML input type declarations (type: 'password', type="password", type = "password")
|
|
41
|
+
if (/\btype\s*[:=]\s*(['"])password\1/i.test(line)) {
|
|
42
|
+
return line;
|
|
43
|
+
}
|
|
44
|
+
// Skip switch/case discriminants (case 'password':)
|
|
45
|
+
if (/\bcase\s+(['"])(password|admin|default)\1\s*:/i.test(line)) {
|
|
46
|
+
return line;
|
|
47
|
+
}
|
|
48
|
+
return line.replace(/(['"])(123456|password|changeme|student|welcome|student123|child123|default|admin)\1/gi, 'require("crypto").randomBytes(16).toString("hex")');
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Transform: sanitize-input (coppa-sec-015)
|
|
52
|
+
* Replaces .innerHTML assignments with .textContent.
|
|
53
|
+
* ⚠️ WARNING: This changes rendering behavior. If the developer needs HTML rendering,
|
|
54
|
+
* this fix will break their UI. Flagged with a warning in dry-run output.
|
|
55
|
+
*
|
|
56
|
+
* Guards against false positives:
|
|
57
|
+
* - Already-sanitized dangerouslySetInnerHTML (content already wrapped in DOMPurify.sanitize)
|
|
58
|
+
*/
|
|
59
|
+
function transformSanitizeInput(line, _violation) {
|
|
60
|
+
// Handle .innerHTML = ... → .textContent = ...
|
|
61
|
+
if (/\.innerHTML\s*=/.test(line)) {
|
|
62
|
+
return line.replace(/\.innerHTML\s*=/, '.textContent =');
|
|
63
|
+
}
|
|
64
|
+
// Handle dangerouslySetInnerHTML → wrap in DOMPurify.sanitize()
|
|
65
|
+
if (/dangerouslySetInnerHTML\s*=\s*\{\s*\{\s*__html\s*:\s*([^}]+)\}\s*\}/.test(line)) {
|
|
66
|
+
// Skip if the __html value is already wrapped in DOMPurify.sanitize()
|
|
67
|
+
const match = line.match(/dangerouslySetInnerHTML\s*=\s*\{\s*\{\s*__html\s*:\s*([^}]+)\}\s*\}/);
|
|
68
|
+
if (match && /DOMPurify\.sanitize\s*\(/.test(match[1])) {
|
|
69
|
+
return line; // Already sanitized — don't double-wrap
|
|
70
|
+
}
|
|
71
|
+
return line.replace(/dangerouslySetInnerHTML\s*=\s*\{\s*\{\s*__html\s*:\s*([^}]+)\}\s*\}/, 'dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize($1) }}');
|
|
72
|
+
}
|
|
73
|
+
return line;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Transform: set-default (coppa-default-020)
|
|
77
|
+
* Changes public profile defaults to private.
|
|
78
|
+
*
|
|
79
|
+
* Guards against false positives:
|
|
80
|
+
* - TypeScript type unions: visibility: 'public' | 'private' (type definition, not runtime value)
|
|
81
|
+
*/
|
|
82
|
+
function transformSetDefault(line, _violation) {
|
|
83
|
+
let result = line;
|
|
84
|
+
// Detect TypeScript type union patterns involving 'public' (e.g., 'public' | 'private')
|
|
85
|
+
const isTypeUnion = /['"]public['"]\s*\|/.test(line) || /\|\s*['"]public['"]/.test(line);
|
|
86
|
+
result = result.replace(/isProfileVisible:\s*true/gi, 'isProfileVisible: false');
|
|
87
|
+
// Only replace string literal 'public' values if NOT in a type union context
|
|
88
|
+
if (!isTypeUnion) {
|
|
89
|
+
result = result.replace(/visibility:\s*['"]public['"]/gi, "visibility: 'private'");
|
|
90
|
+
result = result.replace(/defaultPrivacy:\s*['"]public['"]/gi, "defaultPrivacy: 'private'");
|
|
91
|
+
}
|
|
92
|
+
result = result.replace(/isPublic:\s*true/gi, 'isPublic: false');
|
|
93
|
+
result = result.replace(/profileVisibility\s*=\s*['"]?public['"]?/gi, "profileVisibility = 'private'");
|
|
94
|
+
return result;
|
|
95
|
+
}
|
|
96
|
+
/** Maps transformType → transform function */
|
|
97
|
+
const TRANSFORM_REGISTRY = {
|
|
98
|
+
'url-upgrade': transformUrlUpgrade,
|
|
99
|
+
'remove-default': transformRemoveDefault,
|
|
100
|
+
'sanitize-input': transformSanitizeInput,
|
|
101
|
+
'set-default': transformSetDefault,
|
|
102
|
+
};
|
|
103
|
+
/** Rules where the fix changes rendering behavior and needs explicit warning */
|
|
104
|
+
const BEHAVIOR_CHANGING_RULES = new Set(['coppa-sec-015']);
|
|
105
|
+
// ==================== FixEngine Class ====================
|
|
106
|
+
class FixEngine {
|
|
107
|
+
/**
|
|
108
|
+
* Check if a violation is auto-fixable (Tier 1).
|
|
109
|
+
* Uses the fixability field already populated on the violation.
|
|
110
|
+
*/
|
|
111
|
+
isAutoFixable(violation) {
|
|
112
|
+
return violation.fixability === 'auto' && violation.remediation?.transformType !== undefined;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Check if a rule ID is auto-fixable by looking at a violation's remediation metadata.
|
|
116
|
+
* For use when you have a ruleId but no violation object — checks against known auto-fix transforms.
|
|
117
|
+
*/
|
|
118
|
+
isRuleAutoFixable(ruleId) {
|
|
119
|
+
// The 4 Tier 1 auto-fix rules with known transforms
|
|
120
|
+
return ['coppa-sec-006', 'coppa-sec-010', 'coppa-sec-015', 'coppa-default-020'].includes(ruleId);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Get all auto-fixable rule IDs.
|
|
124
|
+
*/
|
|
125
|
+
getAutoFixableRules() {
|
|
126
|
+
return ['coppa-sec-006', 'coppa-sec-010', 'coppa-sec-015', 'coppa-default-020'];
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Apply fixes to file content for a set of violations.
|
|
130
|
+
* Violations must all belong to the same file.
|
|
131
|
+
* Processes bottom-to-top to preserve line numbers.
|
|
132
|
+
* Returns the fixed content (does NOT write to disk).
|
|
133
|
+
*/
|
|
134
|
+
applyFixes(content, violations, options) {
|
|
135
|
+
const fixes = [];
|
|
136
|
+
const lines = content.split('\n');
|
|
137
|
+
const filePath = violations[0]?.filePath || '';
|
|
138
|
+
// Filter to auto-fixable violations with known transforms
|
|
139
|
+
let fixable = violations.filter(v => this.isAutoFixable(v));
|
|
140
|
+
// Further filter by --rules if specified
|
|
141
|
+
if (options?.rules?.length) {
|
|
142
|
+
fixable = fixable.filter(v => options.rules.includes(v.ruleId));
|
|
143
|
+
}
|
|
144
|
+
// Sort by line number descending so edits don't shift subsequent lines
|
|
145
|
+
const sorted = [...fixable].sort((a, b) => b.line - a.line);
|
|
146
|
+
for (const violation of sorted) {
|
|
147
|
+
const transformType = violation.remediation?.transformType;
|
|
148
|
+
if (!transformType) {
|
|
149
|
+
fixes.push({
|
|
150
|
+
ruleId: violation.ruleId,
|
|
151
|
+
filePath,
|
|
152
|
+
line: violation.line,
|
|
153
|
+
status: 'skipped',
|
|
154
|
+
original: '',
|
|
155
|
+
fixed: '',
|
|
156
|
+
reason: 'No transform type defined',
|
|
157
|
+
});
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
const transform = TRANSFORM_REGISTRY[transformType];
|
|
161
|
+
if (!transform) {
|
|
162
|
+
fixes.push({
|
|
163
|
+
ruleId: violation.ruleId,
|
|
164
|
+
filePath,
|
|
165
|
+
line: violation.line,
|
|
166
|
+
status: 'skipped',
|
|
167
|
+
original: '',
|
|
168
|
+
fixed: '',
|
|
169
|
+
reason: `Unknown transform type: ${transformType}`,
|
|
170
|
+
});
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
const lineIdx = violation.line - 1;
|
|
174
|
+
if (lineIdx < 0 || lineIdx >= lines.length) {
|
|
175
|
+
fixes.push({
|
|
176
|
+
ruleId: violation.ruleId,
|
|
177
|
+
filePath,
|
|
178
|
+
line: violation.line,
|
|
179
|
+
status: 'failed',
|
|
180
|
+
original: '',
|
|
181
|
+
fixed: '',
|
|
182
|
+
reason: `Line ${violation.line} out of range`,
|
|
183
|
+
});
|
|
184
|
+
continue;
|
|
185
|
+
}
|
|
186
|
+
const originalLine = lines[lineIdx];
|
|
187
|
+
const fixedLine = transform(originalLine, violation);
|
|
188
|
+
if (fixedLine === originalLine) {
|
|
189
|
+
fixes.push({
|
|
190
|
+
ruleId: violation.ruleId,
|
|
191
|
+
filePath,
|
|
192
|
+
line: violation.line,
|
|
193
|
+
status: 'skipped',
|
|
194
|
+
original: originalLine,
|
|
195
|
+
fixed: fixedLine,
|
|
196
|
+
reason: 'Transform produced no change',
|
|
197
|
+
});
|
|
198
|
+
continue;
|
|
199
|
+
}
|
|
200
|
+
// Apply the transform
|
|
201
|
+
const fixedLines = fixedLine.split('\n');
|
|
202
|
+
lines.splice(lineIdx, 1, ...fixedLines);
|
|
203
|
+
const fix = {
|
|
204
|
+
ruleId: violation.ruleId,
|
|
205
|
+
filePath,
|
|
206
|
+
line: violation.line,
|
|
207
|
+
status: 'applied',
|
|
208
|
+
original: originalLine,
|
|
209
|
+
fixed: fixedLine,
|
|
210
|
+
};
|
|
211
|
+
// Add warning for behavior-changing transforms
|
|
212
|
+
if (BEHAVIOR_CHANGING_RULES.has(violation.ruleId)) {
|
|
213
|
+
fix.warning = 'This fix changes rendering behavior. Review before accepting.';
|
|
214
|
+
}
|
|
215
|
+
fixes.push(fix);
|
|
216
|
+
}
|
|
217
|
+
return {
|
|
218
|
+
filePath,
|
|
219
|
+
originalContent: content,
|
|
220
|
+
fixedContent: lines.join('\n'),
|
|
221
|
+
fixes,
|
|
222
|
+
verified: false,
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Generate a simple unified diff between original and fixed content.
|
|
227
|
+
* Used for --dry-run output.
|
|
228
|
+
*/
|
|
229
|
+
generateDiff(filePath, original, fixed) {
|
|
230
|
+
const origLines = original.split('\n');
|
|
231
|
+
const fixedLines = fixed.split('\n');
|
|
232
|
+
const output = [];
|
|
233
|
+
output.push(`--- a/${filePath}`);
|
|
234
|
+
output.push(`+++ b/${filePath}`);
|
|
235
|
+
let i = 0;
|
|
236
|
+
let j = 0;
|
|
237
|
+
while (i < origLines.length || j < fixedLines.length) {
|
|
238
|
+
if (i < origLines.length && j < fixedLines.length && origLines[i] === fixedLines[j]) {
|
|
239
|
+
i++;
|
|
240
|
+
j++;
|
|
241
|
+
continue;
|
|
242
|
+
}
|
|
243
|
+
// Found a difference — emit a hunk
|
|
244
|
+
const contextStart = Math.max(0, i - 1);
|
|
245
|
+
// Collect removed lines
|
|
246
|
+
const removed = [];
|
|
247
|
+
const added = [];
|
|
248
|
+
while (i < origLines.length && (j >= fixedLines.length || origLines[i] !== fixedLines[j])) {
|
|
249
|
+
removed.push(origLines[i]);
|
|
250
|
+
i++;
|
|
251
|
+
// Check if we've found alignment again
|
|
252
|
+
if (j < fixedLines.length && i < origLines.length && origLines[i] === fixedLines[j + added.length + 1]) {
|
|
253
|
+
break;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
while (j < fixedLines.length && (i >= origLines.length || origLines[i] !== fixedLines[j])) {
|
|
257
|
+
added.push(fixedLines[j]);
|
|
258
|
+
j++;
|
|
259
|
+
}
|
|
260
|
+
if (removed.length > 0 || added.length > 0) {
|
|
261
|
+
output.push(`@@ -${contextStart + 1} +${contextStart + 1} @@`);
|
|
262
|
+
for (const line of removed) {
|
|
263
|
+
output.push(`-${line}`);
|
|
264
|
+
}
|
|
265
|
+
for (const line of added) {
|
|
266
|
+
output.push(`+${line}`);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
return output.join('\n');
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
exports.FixEngine = FixEngine;
|
|
274
|
+
//# sourceMappingURL=fixer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixer.js","sourceRoot":"","sources":["../src/fixer.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AA0CH,kDAEC;AAWD,wDAiBC;AAWD,wDAkBC;AASD,kDAeC;AAzFD,gEAAgE;AAEhE;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,IAAY,EAAE,UAAqB;IACrE,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AAChD,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,sBAAsB,CAAC,IAAY,EAAE,UAAqB;IACxE,gGAAgG;IAChG,IAAI,gHAAgH,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAChI,OAAO,IAAI,CAAC;IACd,CAAC;IACD,2FAA2F;IAC3F,IAAI,mCAAmC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,oDAAoD;IACpD,IAAI,gDAAgD,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,CACjB,wFAAwF,EACxF,mDAAmD,CACpD,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,sBAAsB,CAAC,IAAY,EAAE,UAAqB;IACxE,+CAA+C;IAC/C,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;IAC3D,CAAC;IACD,gEAAgE;IAChE,IAAI,qEAAqE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACrF,sEAAsE;QACtE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;QAChG,IAAI,KAAK,IAAI,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,OAAO,IAAI,CAAC,CAAC,wCAAwC;QACvD,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CACjB,qEAAqE,EACrE,8DAA8D,CAC/D,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,mBAAmB,CAAC,IAAY,EAAE,UAAqB;IACrE,IAAI,MAAM,GAAG,IAAI,CAAC;IAElB,wFAAwF;IACxF,MAAM,WAAW,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEzF,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,4BAA4B,EAAE,yBAAyB,CAAC,CAAC;IACjF,6EAA6E;IAC7E,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,gCAAgC,EAAE,uBAAuB,CAAC,CAAC;QACnF,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,oCAAoC,EAAE,2BAA2B,CAAC,CAAC;IAC7F,CAAC;IACD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,oBAAoB,EAAE,iBAAiB,CAAC,CAAC;IACjE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,4CAA4C,EAAE,+BAA+B,CAAC,CAAC;IACvG,OAAO,MAAM,CAAC;AAChB,CAAC;AAMD,8CAA8C;AAC9C,MAAM,kBAAkB,GAAgC;IACtD,aAAa,EAAE,mBAAmB;IAClC,gBAAgB,EAAE,sBAAsB;IACxC,gBAAgB,EAAE,sBAAsB;IACxC,aAAa,EAAE,mBAAmB;CACnC,CAAC;AAEF,gFAAgF;AAChF,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;AAE3D,4DAA4D;AAE5D,MAAa,SAAS;IACpB;;;OAGG;IACH,aAAa,CAAC,SAAoB;QAChC,OAAO,SAAS,CAAC,UAAU,KAAK,MAAM,IAAI,SAAS,CAAC,WAAW,EAAE,aAAa,KAAK,SAAS,CAAC;IAC/F,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,MAAc;QAC9B,oDAAoD;QACpD,OAAO,CAAC,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,mBAAmB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnG,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,OAAO,CAAC,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,mBAAmB,CAAC,CAAC;IAClF,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,OAAe,EAAE,UAAuB,EAAE,OAAoB;QACvE,MAAM,KAAK,GAAgB,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAC;QAE/C,0DAA0D;QAC1D,IAAI,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5D,yCAAyC;QACzC,IAAI,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;YAC3B,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACnE,CAAC;QAED,uEAAuE;QACvE,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QAE5D,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;YAC/B,MAAM,aAAa,GAAG,SAAS,CAAC,WAAW,EAAE,aAAa,CAAC;YAC3D,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,KAAK,CAAC,IAAI,CAAC;oBACT,MAAM,EAAE,SAAS,CAAC,MAAM;oBACxB,QAAQ;oBACR,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,MAAM,EAAE,SAAS;oBACjB,QAAQ,EAAE,EAAE;oBACZ,KAAK,EAAE,EAAE;oBACT,MAAM,EAAE,2BAA2B;iBACpC,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,MAAM,SAAS,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;YACpD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,KAAK,CAAC,IAAI,CAAC;oBACT,MAAM,EAAE,SAAS,CAAC,MAAM;oBACxB,QAAQ;oBACR,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,MAAM,EAAE,SAAS;oBACjB,QAAQ,EAAE,EAAE;oBACZ,KAAK,EAAE,EAAE;oBACT,MAAM,EAAE,2BAA2B,aAAa,EAAE;iBACnD,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC;YACnC,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC3C,KAAK,CAAC,IAAI,CAAC;oBACT,MAAM,EAAE,SAAS,CAAC,MAAM;oBACxB,QAAQ;oBACR,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,EAAE;oBACZ,KAAK,EAAE,EAAE;oBACT,MAAM,EAAE,QAAQ,SAAS,CAAC,IAAI,eAAe;iBAC9C,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;YACpC,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;YAErD,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;gBAC/B,KAAK,CAAC,IAAI,CAAC;oBACT,MAAM,EAAE,SAAS,CAAC,MAAM;oBACxB,QAAQ;oBACR,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,MAAM,EAAE,SAAS;oBACjB,QAAQ,EAAE,YAAY;oBACtB,KAAK,EAAE,SAAS;oBAChB,MAAM,EAAE,8BAA8B;iBACvC,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,sBAAsB;YACtB,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC;YAExC,MAAM,GAAG,GAAc;gBACrB,MAAM,EAAE,SAAS,CAAC,MAAM;gBACxB,QAAQ;gBACR,IAAI,EAAE,SAAS,CAAC,IAAI;gBACpB,MAAM,EAAE,SAAS;gBACjB,QAAQ,EAAE,YAAY;gBACtB,KAAK,EAAE,SAAS;aACjB,CAAC;YAEF,+CAA+C;YAC/C,IAAI,uBAAuB,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClD,GAAG,CAAC,OAAO,GAAG,+DAA+D,CAAC;YAChF,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QAED,OAAO;YACL,QAAQ;YACR,eAAe,EAAE,OAAO;YACxB,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,KAAK;YACL,QAAQ,EAAE,KAAK;SAChB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,QAAgB,EAAE,QAAgB,EAAE,KAAa;QAC5D,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,MAAM,CAAC,IAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,CAAC;QAEjC,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,CAAC,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;YACrD,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpF,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,CAAC;gBACJ,SAAS;YACX,CAAC;YAED,mCAAmC;YACnC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAExC,wBAAwB;YACxB,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAa,EAAE,CAAC;YAE3B,OAAO,CAAC,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1F,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3B,CAAC,EAAE,CAAC;gBACJ,uCAAuC;gBACvC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;oBACvG,MAAM;gBACR,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,UAAU,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1F,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1B,CAAC,EAAE,CAAC;YACN,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3C,MAAM,CAAC,IAAI,CAAC,OAAO,YAAY,GAAG,CAAC,KAAK,YAAY,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC/D,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;oBAC3B,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;gBAC1B,CAAC;gBACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;CACF;AA/LD,8BA+LC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,6 +8,14 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import Parser from 'tree-sitter';
|
|
10
10
|
export type Severity = 'critical' | 'high' | 'medium' | 'low';
|
|
11
|
+
export type Fixability = 'auto' | 'guided' | 'flag-only';
|
|
12
|
+
export interface RemediationSpec {
|
|
13
|
+
fixability: Fixability;
|
|
14
|
+
transformType?: string;
|
|
15
|
+
scaffoldId?: string;
|
|
16
|
+
guidanceUrl?: string;
|
|
17
|
+
estimatedCost?: '$0' | '$0.01' | '$0.05';
|
|
18
|
+
}
|
|
11
19
|
export interface Violation {
|
|
12
20
|
ruleId: string;
|
|
13
21
|
ruleName: string;
|
|
@@ -21,6 +29,11 @@ export interface Violation {
|
|
|
21
29
|
penalty?: string;
|
|
22
30
|
suppressed?: boolean;
|
|
23
31
|
suppressionComment?: string;
|
|
32
|
+
category?: string;
|
|
33
|
+
language?: string;
|
|
34
|
+
matchType?: 'regex' | 'ast' | 'hybrid';
|
|
35
|
+
fixability?: Fixability;
|
|
36
|
+
remediation?: RemediationSpec;
|
|
24
37
|
}
|
|
25
38
|
export interface Rule {
|
|
26
39
|
id: string;
|
|
@@ -31,6 +44,7 @@ export interface Rule {
|
|
|
31
44
|
fixSuggestion: string;
|
|
32
45
|
penalty: string;
|
|
33
46
|
languages: string[];
|
|
47
|
+
remediation?: RemediationSpec;
|
|
34
48
|
}
|
|
35
49
|
export interface SuppressionConfig {
|
|
36
50
|
enabled: boolean;
|
|
@@ -61,6 +75,8 @@ export declare class TreeSitterParser {
|
|
|
61
75
|
extractIdentifiers(code: string): string[];
|
|
62
76
|
}
|
|
63
77
|
export declare const treeSitterParser: TreeSitterParser;
|
|
78
|
+
declare const REMEDIATION_MAP: Record<string, RemediationSpec>;
|
|
79
|
+
declare function getRemediation(ruleId: string): RemediationSpec;
|
|
64
80
|
export declare const COPPA_RULES: Rule[];
|
|
65
81
|
export declare const ETHICAL_RULES: Rule[];
|
|
66
82
|
export interface IgnoreConfig {
|
|
@@ -151,4 +167,10 @@ export declare class HaloEngine {
|
|
|
151
167
|
*/
|
|
152
168
|
getFixSuggestion(ruleId: string): string;
|
|
153
169
|
}
|
|
170
|
+
export { REMEDIATION_MAP, getRemediation };
|
|
171
|
+
export { FixEngine } from './fixer';
|
|
172
|
+
export type { FixResult, FileFixResult, FixOptions } from './fixer';
|
|
173
|
+
export { transformUrlUpgrade, transformRemoveDefault, transformSanitizeInput, transformSetDefault, } from './fixer';
|
|
174
|
+
export { ComplianceScoreEngine } from './scoring';
|
|
175
|
+
export type { ComplianceScoreResult, LetterGrade } from './scoring';
|
|
154
176
|
export default HaloEngine;
|
package/dist/index.js
CHANGED
|
@@ -44,16 +44,37 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
44
44
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
45
45
|
};
|
|
46
46
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
47
|
-
exports.HaloEngine = exports.ETHICAL_RULES = exports.COPPA_RULES = exports.treeSitterParser = exports.TreeSitterParser = void 0;
|
|
47
|
+
exports.ComplianceScoreEngine = exports.transformSetDefault = exports.transformSanitizeInput = exports.transformRemoveDefault = exports.transformUrlUpgrade = exports.FixEngine = exports.REMEDIATION_MAP = exports.HaloEngine = exports.ETHICAL_RULES = exports.COPPA_RULES = exports.treeSitterParser = exports.TreeSitterParser = void 0;
|
|
48
48
|
exports.loadRulesFromYAML = loadRulesFromYAML;
|
|
49
49
|
exports.parseHaloignore = parseHaloignore;
|
|
50
50
|
exports.shouldIgnoreFile = shouldIgnoreFile;
|
|
51
51
|
exports.shouldIgnoreViolation = shouldIgnoreViolation;
|
|
52
|
+
exports.getRemediation = getRemediation;
|
|
52
53
|
const fs = __importStar(require("fs"));
|
|
54
|
+
const path = __importStar(require("path"));
|
|
53
55
|
const tree_sitter_1 = __importDefault(require("tree-sitter"));
|
|
54
56
|
const tree_sitter_typescript_1 = __importDefault(require("tree-sitter-typescript"));
|
|
55
57
|
const tree_sitter_javascript_1 = __importDefault(require("tree-sitter-javascript"));
|
|
56
58
|
const yaml = __importStar(require("js-yaml"));
|
|
59
|
+
// Extract category from ruleId (e.g. "coppa-auth-001" → "auth", "ETHICAL-001" → "ethical")
|
|
60
|
+
function extractCategory(ruleId) {
|
|
61
|
+
if (ruleId.startsWith('ETHICAL'))
|
|
62
|
+
return 'ethical';
|
|
63
|
+
const match = ruleId.match(/^coppa-(\w+)-\d+$/);
|
|
64
|
+
return match ? match[1] : 'unknown';
|
|
65
|
+
}
|
|
66
|
+
// Detect language from file extension
|
|
67
|
+
function detectLanguage(filePath) {
|
|
68
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
69
|
+
const langMap = {
|
|
70
|
+
'.ts': 'typescript', '.tsx': 'typescript', '.js': 'javascript', '.jsx': 'javascript',
|
|
71
|
+
'.py': 'python', '.swift': 'swift', '.java': 'java', '.kt': 'kotlin',
|
|
72
|
+
'.html': 'html', '.vue': 'vue', '.svelte': 'svelte', '.php': 'php',
|
|
73
|
+
'.cpp': 'cpp', '.h': 'cpp', '.hpp': 'cpp', '.cs': 'csharp',
|
|
74
|
+
'.qml': 'qml', '.sql': 'sql',
|
|
75
|
+
};
|
|
76
|
+
return langMap[ext] || 'unknown';
|
|
77
|
+
}
|
|
57
78
|
// YAML Rule Loader - Load rules from coppa-tier-1.yaml
|
|
58
79
|
function loadRulesFromYAML(yamlPath) {
|
|
59
80
|
try {
|
|
@@ -192,6 +213,48 @@ function isViolationSuppressed(violation, suppressions, globalSuppressions) {
|
|
|
192
213
|
}
|
|
193
214
|
// COPPA Rule Definitions (Tier 1 - All 20 rules)
|
|
194
215
|
// Rules 1-5 from Sprint 1, Rules 6-20 added in Sprint 2
|
|
216
|
+
// Remediation mapping: rule ID → fixability tier + metadata
|
|
217
|
+
// Per Daisy's three-tier spec (~/openclaw-projects/docs/halo-ai-remediation-spec.md)
|
|
218
|
+
// Tier 1 (auto): deterministic AST transforms, no LLM
|
|
219
|
+
// Tier 2 (guided): LLM scaffold + developer customization
|
|
220
|
+
// Tier 3 (flag-only): detection + guidance docs, no code generation
|
|
221
|
+
const REMEDIATION_MAP = {
|
|
222
|
+
// Tier 1 — Auto-fix (4 deterministic patterns)
|
|
223
|
+
'coppa-sec-006': { fixability: 'auto', transformType: 'url-upgrade', estimatedCost: '$0' }, // HTTP → HTTPS
|
|
224
|
+
'coppa-sec-010': { fixability: 'auto', transformType: 'remove-default', estimatedCost: '$0' }, // Remove hardcoded passwords
|
|
225
|
+
'coppa-sec-015': { fixability: 'auto', transformType: 'sanitize-input', estimatedCost: '$0' }, // XSS innerHTML → textContent
|
|
226
|
+
'coppa-default-020': { fixability: 'auto', transformType: 'set-default', estimatedCost: '$0' }, // Default profile → private
|
|
227
|
+
// Tier 2 — Guided (consent flows need developer context)
|
|
228
|
+
'coppa-cookies-016': { fixability: 'guided', scaffoldId: 'consent-cookies', estimatedCost: '$0.01' }, // Cookie consent
|
|
229
|
+
// Tier 2 — Guided fix (LLM scaffold + developer customization)
|
|
230
|
+
'coppa-auth-001': { fixability: 'guided', scaffoldId: 'age-gate-auth', estimatedCost: '$0.01' }, // Age gate for social login
|
|
231
|
+
'coppa-data-002': { fixability: 'guided', scaffoldId: 'pii-sanitizer', estimatedCost: '$0.01' }, // PII removal from URLs
|
|
232
|
+
'coppa-retention-005': { fixability: 'guided', scaffoldId: 'retention-policy', estimatedCost: '$0.01' }, // Data retention policy
|
|
233
|
+
'coppa-audio-007': { fixability: 'guided', scaffoldId: 'consent-audio', estimatedCost: '$0.01' }, // Parental consent for audio
|
|
234
|
+
'coppa-ui-008': { fixability: 'guided', scaffoldId: 'privacy-link', estimatedCost: '$0.01' }, // Privacy policy on registration
|
|
235
|
+
'coppa-flow-009': { fixability: 'guided', scaffoldId: 'parent-email', estimatedCost: '$0.01' }, // Parent email flow
|
|
236
|
+
'coppa-bio-012': { fixability: 'guided', scaffoldId: 'consent-biometric', estimatedCost: '$0.01' }, // Biometric consent
|
|
237
|
+
'coppa-ugc-014': { fixability: 'guided', scaffoldId: 'pii-filter', estimatedCost: '$0.01' }, // UGC PII filtering
|
|
238
|
+
'coppa-analytics-018': { fixability: 'guided', scaffoldId: 'anonymize-analytics', estimatedCost: '$0.01' }, // Analytics anonymization
|
|
239
|
+
'coppa-edu-019': { fixability: 'guided', scaffoldId: 'school-verify', estimatedCost: '$0.01' }, // School official verification
|
|
240
|
+
// Tier 2 — Guided (simpler scaffolds)
|
|
241
|
+
'coppa-tracking-003': { fixability: 'guided', scaffoldId: 'remove-tracker', estimatedCost: '$0.01' }, // Ad tracker removal
|
|
242
|
+
'coppa-geo-004': { fixability: 'guided', scaffoldId: 'remove-geo', estimatedCost: '$0.01' }, // Geolocation removal
|
|
243
|
+
'coppa-notif-013': { fixability: 'guided', scaffoldId: 'consent-notif', estimatedCost: '$0.01' }, // Notification consent
|
|
244
|
+
'coppa-ext-017': { fixability: 'guided', scaffoldId: 'exit-modal', estimatedCost: '$0.01' }, // External link warning
|
|
245
|
+
'coppa-ext-011': { fixability: 'guided', scaffoldId: 'chat-moderation', estimatedCost: '$0.01' }, // Chat moderation
|
|
246
|
+
// Tier 3 — Flag only (ethical design, requires human judgment)
|
|
247
|
+
'ETHICAL-001': { fixability: 'flag-only', guidanceUrl: 'https://docs.runhalo.dev/ethical/infinite-scroll', estimatedCost: '$0' },
|
|
248
|
+
'ETHICAL-002': { fixability: 'flag-only', guidanceUrl: 'https://docs.runhalo.dev/ethical/streak-pressure', estimatedCost: '$0' },
|
|
249
|
+
'ETHICAL-003': { fixability: 'flag-only', guidanceUrl: 'https://docs.runhalo.dev/ethical/variable-rewards', estimatedCost: '$0' },
|
|
250
|
+
'ETHICAL-004': { fixability: 'flag-only', guidanceUrl: 'https://docs.runhalo.dev/ethical/manipulative-notifications', estimatedCost: '$0' },
|
|
251
|
+
'ETHICAL-005': { fixability: 'flag-only', guidanceUrl: 'https://docs.runhalo.dev/ethical/artificial-scarcity', estimatedCost: '$0' },
|
|
252
|
+
};
|
|
253
|
+
exports.REMEDIATION_MAP = REMEDIATION_MAP;
|
|
254
|
+
// Look up remediation spec for a rule ID
|
|
255
|
+
function getRemediation(ruleId) {
|
|
256
|
+
return REMEDIATION_MAP[ruleId] || { fixability: 'flag-only', estimatedCost: '$0' };
|
|
257
|
+
}
|
|
195
258
|
exports.COPPA_RULES = [
|
|
196
259
|
// ========== Rules 1-5 (Sprint 1) ==========
|
|
197
260
|
{
|
|
@@ -767,7 +830,12 @@ class HaloEngine {
|
|
|
767
830
|
message: `${authRule.name}: Detected via AST analysis`,
|
|
768
831
|
codeSnippet: content.split('\n')[call.line - 1]?.trim() || '',
|
|
769
832
|
fixSuggestion: authRule.fixSuggestion,
|
|
770
|
-
penalty: authRule.penalty
|
|
833
|
+
penalty: authRule.penalty,
|
|
834
|
+
category: extractCategory('coppa-auth-001'),
|
|
835
|
+
language: detectLanguage(filePath),
|
|
836
|
+
matchType: 'ast',
|
|
837
|
+
fixability: getRemediation('coppa-auth-001').fixability,
|
|
838
|
+
remediation: getRemediation('coppa-auth-001'),
|
|
771
839
|
});
|
|
772
840
|
}
|
|
773
841
|
}
|
|
@@ -885,7 +953,12 @@ class HaloEngine {
|
|
|
885
953
|
fixSuggestion: rule.fixSuggestion,
|
|
886
954
|
penalty: rule.penalty,
|
|
887
955
|
suppressed: suppressed || false,
|
|
888
|
-
suppressionComment
|
|
956
|
+
suppressionComment,
|
|
957
|
+
category: extractCategory(rule.id),
|
|
958
|
+
language: detectLanguage(filePath),
|
|
959
|
+
matchType: 'regex',
|
|
960
|
+
fixability: getRemediation(rule.id).fixability,
|
|
961
|
+
remediation: getRemediation(rule.id),
|
|
889
962
|
});
|
|
890
963
|
}
|
|
891
964
|
}
|
|
@@ -952,5 +1025,16 @@ Supported Languages: ${rule.languages.join(', ')}
|
|
|
952
1025
|
}
|
|
953
1026
|
}
|
|
954
1027
|
exports.HaloEngine = HaloEngine;
|
|
1028
|
+
// Re-export fix engine (Sprint 5)
|
|
1029
|
+
var fixer_1 = require("./fixer");
|
|
1030
|
+
Object.defineProperty(exports, "FixEngine", { enumerable: true, get: function () { return fixer_1.FixEngine; } });
|
|
1031
|
+
var fixer_2 = require("./fixer");
|
|
1032
|
+
Object.defineProperty(exports, "transformUrlUpgrade", { enumerable: true, get: function () { return fixer_2.transformUrlUpgrade; } });
|
|
1033
|
+
Object.defineProperty(exports, "transformRemoveDefault", { enumerable: true, get: function () { return fixer_2.transformRemoveDefault; } });
|
|
1034
|
+
Object.defineProperty(exports, "transformSanitizeInput", { enumerable: true, get: function () { return fixer_2.transformSanitizeInput; } });
|
|
1035
|
+
Object.defineProperty(exports, "transformSetDefault", { enumerable: true, get: function () { return fixer_2.transformSetDefault; } });
|
|
1036
|
+
// Re-export compliance score engine (Sprint 5 Track 3)
|
|
1037
|
+
var scoring_1 = require("./scoring");
|
|
1038
|
+
Object.defineProperty(exports, "ComplianceScoreEngine", { enumerable: true, get: function () { return scoring_1.ComplianceScoreEngine; } });
|
|
955
1039
|
exports.default = HaloEngine;
|
|
956
1040
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Halo Compliance Score Engine
|
|
3
|
+
* Weighted scoring model: severity × category weight → 0-100 score + letter grade
|
|
4
|
+
*
|
|
5
|
+
* Sprint 5 Track 3: The single metric that transforms Halo from lint tool to compliance platform.
|
|
6
|
+
*
|
|
7
|
+
* Scoring model:
|
|
8
|
+
* Start at 100, deduct points per violation based on severity:
|
|
9
|
+
* - Critical: -10 points (auth, data collection, age gates — highest penalty exposure)
|
|
10
|
+
* - High: -5 points (XSS, weak crypto, geolocation — significant risk)
|
|
11
|
+
* - Medium: -2 points (public defaults, cookies, notifications — moderate risk)
|
|
12
|
+
* - Low: -1 point (HTTP in comments, minor UI patterns — cosmetic)
|
|
13
|
+
* Floor at 0. Letter grade: A (90+), B (75+), C (60+), D (40+), F (<40).
|
|
14
|
+
*/
|
|
15
|
+
import type { Violation, Severity } from './index';
|
|
16
|
+
export type LetterGrade = 'A' | 'B' | 'C' | 'D' | 'F';
|
|
17
|
+
export interface ComplianceScoreResult {
|
|
18
|
+
/** Numeric score 0-100 */
|
|
19
|
+
score: number;
|
|
20
|
+
/** Letter grade A-F */
|
|
21
|
+
grade: LetterGrade;
|
|
22
|
+
/** Total violations counted */
|
|
23
|
+
totalViolations: number;
|
|
24
|
+
/** Violations broken down by severity */
|
|
25
|
+
bySeverity: Record<Severity, number>;
|
|
26
|
+
/** Total points deducted */
|
|
27
|
+
pointsDeducted: number;
|
|
28
|
+
/** How many files were scanned */
|
|
29
|
+
filesScanned: number;
|
|
30
|
+
/** Unique rules that triggered */
|
|
31
|
+
rulesTriggered: string[];
|
|
32
|
+
/** Summary line for CLI output */
|
|
33
|
+
summary: string;
|
|
34
|
+
}
|
|
35
|
+
export declare class ComplianceScoreEngine {
|
|
36
|
+
/**
|
|
37
|
+
* Calculate compliance score from a set of violations.
|
|
38
|
+
*
|
|
39
|
+
* @param violations - All violations from a scan (unsuppressed only)
|
|
40
|
+
* @param filesScanned - Number of files scanned (for context)
|
|
41
|
+
* @returns ComplianceScoreResult with score, grade, and breakdown
|
|
42
|
+
*/
|
|
43
|
+
calculate(violations: Violation[], filesScanned?: number): ComplianceScoreResult;
|
|
44
|
+
/**
|
|
45
|
+
* Get letter grade for a numeric score.
|
|
46
|
+
*/
|
|
47
|
+
getGrade(score: number): LetterGrade;
|
|
48
|
+
/**
|
|
49
|
+
* Format a human-readable summary line for CLI output.
|
|
50
|
+
*/
|
|
51
|
+
formatSummary(score: number, grade: LetterGrade, totalViolations: number, bySeverity: Record<Severity, number>): string;
|
|
52
|
+
}
|
package/dist/scoring.js
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Halo Compliance Score Engine
|
|
4
|
+
* Weighted scoring model: severity × category weight → 0-100 score + letter grade
|
|
5
|
+
*
|
|
6
|
+
* Sprint 5 Track 3: The single metric that transforms Halo from lint tool to compliance platform.
|
|
7
|
+
*
|
|
8
|
+
* Scoring model:
|
|
9
|
+
* Start at 100, deduct points per violation based on severity:
|
|
10
|
+
* - Critical: -10 points (auth, data collection, age gates — highest penalty exposure)
|
|
11
|
+
* - High: -5 points (XSS, weak crypto, geolocation — significant risk)
|
|
12
|
+
* - Medium: -2 points (public defaults, cookies, notifications — moderate risk)
|
|
13
|
+
* - Low: -1 point (HTTP in comments, minor UI patterns — cosmetic)
|
|
14
|
+
* Floor at 0. Letter grade: A (90+), B (75+), C (60+), D (40+), F (<40).
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.ComplianceScoreEngine = void 0;
|
|
18
|
+
// ==================== Constants ====================
|
|
19
|
+
/** Points deducted per violation by severity */
|
|
20
|
+
const SEVERITY_WEIGHTS = {
|
|
21
|
+
critical: 10,
|
|
22
|
+
high: 5,
|
|
23
|
+
medium: 2,
|
|
24
|
+
low: 1,
|
|
25
|
+
};
|
|
26
|
+
/** Score thresholds for letter grades */
|
|
27
|
+
const GRADE_THRESHOLDS = [
|
|
28
|
+
{ min: 90, grade: 'A' },
|
|
29
|
+
{ min: 75, grade: 'B' },
|
|
30
|
+
{ min: 60, grade: 'C' },
|
|
31
|
+
{ min: 40, grade: 'D' },
|
|
32
|
+
{ min: 0, grade: 'F' },
|
|
33
|
+
];
|
|
34
|
+
// ==================== Score Engine ====================
|
|
35
|
+
class ComplianceScoreEngine {
|
|
36
|
+
/**
|
|
37
|
+
* Calculate compliance score from a set of violations.
|
|
38
|
+
*
|
|
39
|
+
* @param violations - All violations from a scan (unsuppressed only)
|
|
40
|
+
* @param filesScanned - Number of files scanned (for context)
|
|
41
|
+
* @returns ComplianceScoreResult with score, grade, and breakdown
|
|
42
|
+
*/
|
|
43
|
+
calculate(violations, filesScanned = 0) {
|
|
44
|
+
const bySeverity = {
|
|
45
|
+
critical: 0,
|
|
46
|
+
high: 0,
|
|
47
|
+
medium: 0,
|
|
48
|
+
low: 0,
|
|
49
|
+
};
|
|
50
|
+
const rulesTriggered = new Set();
|
|
51
|
+
for (const v of violations) {
|
|
52
|
+
bySeverity[v.severity] = (bySeverity[v.severity] || 0) + 1;
|
|
53
|
+
rulesTriggered.add(v.ruleId);
|
|
54
|
+
}
|
|
55
|
+
const pointsDeducted = bySeverity.critical * SEVERITY_WEIGHTS.critical +
|
|
56
|
+
bySeverity.high * SEVERITY_WEIGHTS.high +
|
|
57
|
+
bySeverity.medium * SEVERITY_WEIGHTS.medium +
|
|
58
|
+
bySeverity.low * SEVERITY_WEIGHTS.low;
|
|
59
|
+
const score = Math.max(0, 100 - pointsDeducted);
|
|
60
|
+
const grade = this.getGrade(score);
|
|
61
|
+
const summary = this.formatSummary(score, grade, violations.length, bySeverity);
|
|
62
|
+
return {
|
|
63
|
+
score,
|
|
64
|
+
grade,
|
|
65
|
+
totalViolations: violations.length,
|
|
66
|
+
bySeverity,
|
|
67
|
+
pointsDeducted,
|
|
68
|
+
filesScanned,
|
|
69
|
+
rulesTriggered: Array.from(rulesTriggered).sort(),
|
|
70
|
+
summary,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Get letter grade for a numeric score.
|
|
75
|
+
*/
|
|
76
|
+
getGrade(score) {
|
|
77
|
+
for (const threshold of GRADE_THRESHOLDS) {
|
|
78
|
+
if (score >= threshold.min) {
|
|
79
|
+
return threshold.grade;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return 'F';
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Format a human-readable summary line for CLI output.
|
|
86
|
+
*/
|
|
87
|
+
formatSummary(score, grade, totalViolations, bySeverity) {
|
|
88
|
+
if (totalViolations === 0) {
|
|
89
|
+
return `COPPA Compliance Score: 100/100 (A) — No violations found`;
|
|
90
|
+
}
|
|
91
|
+
const parts = [];
|
|
92
|
+
if (bySeverity.critical > 0)
|
|
93
|
+
parts.push(`${bySeverity.critical} critical`);
|
|
94
|
+
if (bySeverity.high > 0)
|
|
95
|
+
parts.push(`${bySeverity.high} high`);
|
|
96
|
+
if (bySeverity.medium > 0)
|
|
97
|
+
parts.push(`${bySeverity.medium} medium`);
|
|
98
|
+
if (bySeverity.low > 0)
|
|
99
|
+
parts.push(`${bySeverity.low} low`);
|
|
100
|
+
return `COPPA Compliance Score: ${score}/100 (${grade}) — ${totalViolations} violation(s): ${parts.join(', ')}`;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
exports.ComplianceScoreEngine = ComplianceScoreEngine;
|
|
104
|
+
//# sourceMappingURL=scoring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scoring.js","sourceRoot":"","sources":["../src/scoring.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@runhalo/engine",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Halo rule engine — COPPA 2.0 risk detection via tree-sitter AST analysis",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"files": [
|
|
8
8
|
"dist/",
|
|
9
|
-
"rules/"
|
|
9
|
+
"rules/",
|
|
10
|
+
"README.md"
|
|
10
11
|
],
|
|
11
12
|
"scripts": {
|
|
12
13
|
"build": "tsc",
|