hackmyagent 0.8.0 → 0.8.1
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 +168 -295
- package/dist/abgr/controls.d.ts +35 -0
- package/dist/abgr/controls.d.ts.map +1 -0
- package/dist/abgr/controls.js +1058 -0
- package/dist/abgr/controls.js.map +1 -0
- package/dist/abgr/detector.d.ts +45 -0
- package/dist/abgr/detector.d.ts.map +1 -0
- package/dist/abgr/detector.js +175 -0
- package/dist/abgr/detector.js.map +1 -0
- package/dist/abgr/index.d.ts +24 -0
- package/dist/abgr/index.d.ts.map +1 -0
- package/dist/abgr/index.js +50 -0
- package/dist/abgr/index.js.map +1 -0
- package/dist/abgr/scorer.d.ts +36 -0
- package/dist/abgr/scorer.d.ts.map +1 -0
- package/dist/abgr/scorer.js +205 -0
- package/dist/abgr/scorer.js.map +1 -0
- package/dist/abgr/templates.d.ts +35 -0
- package/dist/abgr/templates.d.ts.map +1 -0
- package/dist/abgr/templates.js +668 -0
- package/dist/abgr/templates.js.map +1 -0
- package/dist/abgr/tier.d.ts +27 -0
- package/dist/abgr/tier.d.ts.map +1 -0
- package/dist/abgr/tier.js +115 -0
- package/dist/abgr/tier.js.map +1 -0
- package/dist/abgr/types.d.ts +59 -0
- package/dist/abgr/types.d.ts.map +1 -0
- package/dist/abgr/types.js +10 -0
- package/dist/abgr/types.js.map +1 -0
- package/dist/agent-scan/checks.d.ts +6 -0
- package/dist/agent-scan/checks.d.ts.map +1 -0
- package/dist/agent-scan/checks.js +93 -0
- package/dist/agent-scan/checks.js.map +1 -0
- package/dist/agent-scan/index.d.ts +10 -0
- package/dist/agent-scan/index.d.ts.map +1 -0
- package/dist/agent-scan/index.js +16 -0
- package/dist/agent-scan/index.js.map +1 -0
- package/dist/agent-scan/scanner.d.ts +31 -0
- package/dist/agent-scan/scanner.d.ts.map +1 -0
- package/dist/agent-scan/scanner.js +484 -0
- package/dist/agent-scan/scanner.js.map +1 -0
- package/dist/agent-scan/types.d.ts +63 -0
- package/dist/agent-scan/types.d.ts.map +1 -0
- package/dist/agent-scan/types.js +10 -0
- package/dist/agent-scan/types.js.map +1 -0
- package/dist/arp/cli/index.js +6 -0
- package/dist/arp/cli/index.js.map +1 -1
- package/dist/cli.js +0 -0
- package/dist/hardening/llm-checks.d.ts +18 -0
- package/dist/hardening/llm-checks.d.ts.map +1 -0
- package/dist/hardening/llm-checks.js +434 -0
- package/dist/hardening/llm-checks.js.map +1 -0
- package/dist/hardening/mcp-tool-enum.d.ts +45 -0
- package/dist/hardening/mcp-tool-enum.d.ts.map +1 -0
- package/dist/hardening/mcp-tool-enum.js +315 -0
- package/dist/hardening/mcp-tool-enum.js.map +1 -0
- package/dist/hardening/scanner.js +3 -3
- package/dist/hardening/scanner.js.map +1 -1
- package/dist/hardening/shell-checks.d.ts +21 -0
- package/dist/hardening/shell-checks.d.ts.map +1 -0
- package/dist/hardening/shell-checks.js +236 -0
- package/dist/hardening/shell-checks.js.map +1 -0
- package/dist/registry/client.js +2 -2
- package/dist/registry/client.js.map +1 -1
- package/dist/registry/contribution.d.ts +178 -0
- package/dist/registry/contribution.d.ts.map +1 -0
- package/dist/registry/contribution.js +272 -0
- package/dist/registry/contribution.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controls.js","sourceRoot":"","sources":["../../src/abgr/controls.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OASB v2 Behavioral Governance Detector
|
|
3
|
+
*
|
|
4
|
+
* Two-layer detection engine that analyzes SOUL.md / system prompt files
|
|
5
|
+
* for governance controls.
|
|
6
|
+
*
|
|
7
|
+
* Layer 1 (Structural): File presence, headings, minimum length, section count.
|
|
8
|
+
* Layer 2 (Keyword/Pattern): Per-control keyword group matching within a
|
|
9
|
+
* 50-word proximity window.
|
|
10
|
+
*
|
|
11
|
+
* Confidence scoring:
|
|
12
|
+
* - Structural only: 0.3
|
|
13
|
+
* - Keyword only: 0.7
|
|
14
|
+
* - Both layers: 0.9
|
|
15
|
+
* - Pass threshold: 0.6
|
|
16
|
+
*/
|
|
17
|
+
import type { GovernanceControl, GovernanceDetectionResult } from './types';
|
|
18
|
+
/** Confidence threshold for a control to be considered passing. */
|
|
19
|
+
export declare const PASS_THRESHOLD = 0.6;
|
|
20
|
+
export interface StructuralInfo {
|
|
21
|
+
exists: boolean;
|
|
22
|
+
length: number;
|
|
23
|
+
headingCount: number;
|
|
24
|
+
sectionCount: number;
|
|
25
|
+
hasMinimumLength: boolean;
|
|
26
|
+
hasMinimumSections: boolean;
|
|
27
|
+
structurallySound: boolean;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Analyze structural properties of the governance document.
|
|
31
|
+
*/
|
|
32
|
+
export declare function analyzeStructure(content: string): StructuralInfo;
|
|
33
|
+
/**
|
|
34
|
+
* Run the full two-layer detection engine against all governance controls.
|
|
35
|
+
*
|
|
36
|
+
* @param content - The SOUL.md or system prompt content
|
|
37
|
+
* @param controls - Controls to check (defaults to all 68)
|
|
38
|
+
* @returns Detection results for each control
|
|
39
|
+
*/
|
|
40
|
+
export declare function detectGovernanceControls(content: string, controls?: GovernanceControl[]): GovernanceDetectionResult[];
|
|
41
|
+
/**
|
|
42
|
+
* Run detection for a single control by ID.
|
|
43
|
+
*/
|
|
44
|
+
export declare function detectSingleControl(controlId: string, content: string): GovernanceDetectionResult | null;
|
|
45
|
+
//# sourceMappingURL=detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../src/abgr/detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAY5E,mEAAmE;AACnE,eAAO,MAAM,cAAc,MAAM,CAAC;AAMlC,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAgBhE;AAwHD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,iBAAiB,EAA4B,GACtD,yBAAyB,EAAE,CAS7B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,yBAAyB,GAAG,IAAI,CAUlC"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* OASB v2 Behavioral Governance Detector
|
|
4
|
+
*
|
|
5
|
+
* Two-layer detection engine that analyzes SOUL.md / system prompt files
|
|
6
|
+
* for governance controls.
|
|
7
|
+
*
|
|
8
|
+
* Layer 1 (Structural): File presence, headings, minimum length, section count.
|
|
9
|
+
* Layer 2 (Keyword/Pattern): Per-control keyword group matching within a
|
|
10
|
+
* 50-word proximity window.
|
|
11
|
+
*
|
|
12
|
+
* Confidence scoring:
|
|
13
|
+
* - Structural only: 0.3
|
|
14
|
+
* - Keyword only: 0.7
|
|
15
|
+
* - Both layers: 0.9
|
|
16
|
+
* - Pass threshold: 0.6
|
|
17
|
+
*/
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.PASS_THRESHOLD = void 0;
|
|
20
|
+
exports.analyzeStructure = analyzeStructure;
|
|
21
|
+
exports.detectGovernanceControls = detectGovernanceControls;
|
|
22
|
+
exports.detectSingleControl = detectSingleControl;
|
|
23
|
+
const controls_1 = require("./controls");
|
|
24
|
+
/** Minimum document length (chars) for structural pass. */
|
|
25
|
+
const MIN_DOC_LENGTH = 500;
|
|
26
|
+
/** Minimum number of markdown sections for structural pass. */
|
|
27
|
+
const MIN_SECTION_COUNT = 3;
|
|
28
|
+
/** Proximity window size in words for keyword matching. */
|
|
29
|
+
const PROXIMITY_WINDOW = 50;
|
|
30
|
+
/** Confidence threshold for a control to be considered passing. */
|
|
31
|
+
exports.PASS_THRESHOLD = 0.6;
|
|
32
|
+
/**
|
|
33
|
+
* Analyze structural properties of the governance document.
|
|
34
|
+
*/
|
|
35
|
+
function analyzeStructure(content) {
|
|
36
|
+
const exists = content.length > 0;
|
|
37
|
+
const headings = content.match(/^#{1,6}\s+.+$/gm) || [];
|
|
38
|
+
const sectionCount = headings.length;
|
|
39
|
+
const hasMinimumLength = content.length >= MIN_DOC_LENGTH;
|
|
40
|
+
const hasMinimumSections = sectionCount >= MIN_SECTION_COUNT;
|
|
41
|
+
return {
|
|
42
|
+
exists,
|
|
43
|
+
length: content.length,
|
|
44
|
+
headingCount: sectionCount,
|
|
45
|
+
sectionCount,
|
|
46
|
+
hasMinimumLength,
|
|
47
|
+
hasMinimumSections,
|
|
48
|
+
structurallySound: exists && hasMinimumLength && hasMinimumSections,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
52
|
+
// Keyword/pattern matching (Layer 2)
|
|
53
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
54
|
+
/**
|
|
55
|
+
* Check if all keywords in a group appear within a proximity window
|
|
56
|
+
* of `PROXIMITY_WINDOW` words anywhere in the document.
|
|
57
|
+
*
|
|
58
|
+
* For single-keyword groups, simple substring matching is used.
|
|
59
|
+
* For multi-keyword groups, words are tokenized and sliding windows
|
|
60
|
+
* are checked for co-occurrence of all keywords.
|
|
61
|
+
*/
|
|
62
|
+
function matchKeywordGroupInProximity(lowerContent, words, group) {
|
|
63
|
+
if (group.length === 0)
|
|
64
|
+
return false;
|
|
65
|
+
// Single keyword: simple substring match
|
|
66
|
+
if (group.length === 1) {
|
|
67
|
+
return lowerContent.includes(group[0].toLowerCase());
|
|
68
|
+
}
|
|
69
|
+
// Multi-keyword: check proximity window
|
|
70
|
+
const lowerGroup = group.map(kw => kw.toLowerCase());
|
|
71
|
+
// Slide a window of PROXIMITY_WINDOW words across the document
|
|
72
|
+
for (let i = 0; i <= words.length - 1; i++) {
|
|
73
|
+
const windowEnd = Math.min(i + PROXIMITY_WINDOW, words.length);
|
|
74
|
+
const windowText = words.slice(i, windowEnd).join(' ');
|
|
75
|
+
const allFound = lowerGroup.every(kw => windowText.includes(kw));
|
|
76
|
+
if (allFound)
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Find evidence lines for a matched keyword group.
|
|
83
|
+
* Returns lines from the original content that contain any keyword from the group.
|
|
84
|
+
*/
|
|
85
|
+
function findEvidence(lines, group, maxLines = 3) {
|
|
86
|
+
const evidence = [];
|
|
87
|
+
const lowerGroup = group.map(kw => kw.toLowerCase());
|
|
88
|
+
for (const line of lines) {
|
|
89
|
+
if (evidence.length >= maxLines)
|
|
90
|
+
break;
|
|
91
|
+
const lowerLine = line.toLowerCase();
|
|
92
|
+
if (lowerGroup.some(kw => lowerLine.includes(kw))) {
|
|
93
|
+
const trimmed = line.trim();
|
|
94
|
+
if (trimmed.length > 0 && !evidence.includes(trimmed)) {
|
|
95
|
+
evidence.push(trimmed.length > 200 ? trimmed.slice(0, 200) + '...' : trimmed);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return evidence;
|
|
100
|
+
}
|
|
101
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
102
|
+
// Combined detection
|
|
103
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
104
|
+
/**
|
|
105
|
+
* Detect a single control in the document content.
|
|
106
|
+
*/
|
|
107
|
+
function detectControl(control, lowerContent, words, lines, structural) {
|
|
108
|
+
// Layer 2: keyword matching
|
|
109
|
+
let keywordMatch = false;
|
|
110
|
+
let matchedGroup = [];
|
|
111
|
+
for (const group of control.keywords) {
|
|
112
|
+
if (matchKeywordGroupInProximity(lowerContent, words, group)) {
|
|
113
|
+
keywordMatch = true;
|
|
114
|
+
matchedGroup = group;
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// Determine layer and confidence
|
|
119
|
+
const structuralMatch = structural.structurallySound;
|
|
120
|
+
let confidence;
|
|
121
|
+
let layer;
|
|
122
|
+
if (structuralMatch && keywordMatch) {
|
|
123
|
+
confidence = 0.9;
|
|
124
|
+
layer = 'both';
|
|
125
|
+
}
|
|
126
|
+
else if (keywordMatch) {
|
|
127
|
+
confidence = 0.7;
|
|
128
|
+
layer = 'keyword';
|
|
129
|
+
}
|
|
130
|
+
else if (structuralMatch) {
|
|
131
|
+
confidence = 0.3;
|
|
132
|
+
layer = 'structural';
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
confidence = 0.0;
|
|
136
|
+
layer = 'structural';
|
|
137
|
+
}
|
|
138
|
+
// Collect evidence
|
|
139
|
+
const evidence = keywordMatch ? findEvidence(lines, matchedGroup) : [];
|
|
140
|
+
return {
|
|
141
|
+
controlId: control.id,
|
|
142
|
+
detected: confidence >= exports.PASS_THRESHOLD,
|
|
143
|
+
confidence,
|
|
144
|
+
evidence,
|
|
145
|
+
layer,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Run the full two-layer detection engine against all governance controls.
|
|
150
|
+
*
|
|
151
|
+
* @param content - The SOUL.md or system prompt content
|
|
152
|
+
* @param controls - Controls to check (defaults to all 68)
|
|
153
|
+
* @returns Detection results for each control
|
|
154
|
+
*/
|
|
155
|
+
function detectGovernanceControls(content, controls = controls_1.ALL_GOVERNANCE_CONTROLS) {
|
|
156
|
+
const structural = analyzeStructure(content);
|
|
157
|
+
const lowerContent = content.toLowerCase();
|
|
158
|
+
const words = lowerContent.split(/\s+/).filter(w => w.length > 0);
|
|
159
|
+
const lines = content.split('\n');
|
|
160
|
+
return controls.map(control => detectControl(control, lowerContent, words, lines, structural));
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Run detection for a single control by ID.
|
|
164
|
+
*/
|
|
165
|
+
function detectSingleControl(controlId, content) {
|
|
166
|
+
const control = controls_1.ALL_GOVERNANCE_CONTROLS.find(c => c.id === controlId);
|
|
167
|
+
if (!control)
|
|
168
|
+
return null;
|
|
169
|
+
const structural = analyzeStructure(content);
|
|
170
|
+
const lowerContent = content.toLowerCase();
|
|
171
|
+
const words = lowerContent.split(/\s+/).filter(w => w.length > 0);
|
|
172
|
+
const lines = content.split('\n');
|
|
173
|
+
return detectControl(control, lowerContent, words, lines, structural);
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detector.js","sourceRoot":"","sources":["../../src/abgr/detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OASB v2 Behavioral Governance Module
|
|
3
|
+
*
|
|
4
|
+
* Implements domains 7-14 of the Open Agent Security Benchmark,
|
|
5
|
+
* providing governance control scanning for SOUL.md and system
|
|
6
|
+
* prompt files. The module is self-contained with no dependencies
|
|
7
|
+
* on the core scanner.
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* import { detectGovernanceControls, computeGovernanceScore, detectTier } from './abgr';
|
|
11
|
+
*
|
|
12
|
+
* const content = fs.readFileSync('SOUL.md', 'utf-8');
|
|
13
|
+
* const tier = detectTier(content);
|
|
14
|
+
* const detections = detectGovernanceControls(content);
|
|
15
|
+
* const score = computeGovernanceScore(detections, tier, 'SOUL.md');
|
|
16
|
+
*/
|
|
17
|
+
export type { GovernanceSeverity, GovernanceDomain, AgentTier, GovernanceGrade, GovernanceControl, GovernanceDetectionResult, GovernanceResult, DomainScore, GovernanceScore, } from './types';
|
|
18
|
+
export { ALL_GOVERNANCE_CONTROLS, DOMAIN_METADATA, getControlsByDomain, getControlById, getControlsForTier, getControlsBySeverity, } from './controls';
|
|
19
|
+
export { analyzeStructure, detectGovernanceControls, detectSingleControl, PASS_THRESHOLD, } from './detector';
|
|
20
|
+
export type { StructuralInfo } from './detector';
|
|
21
|
+
export { computeGovernanceScore, scoreToGrade, } from './scorer';
|
|
22
|
+
export { detectTier, getTierLabel, getTierLevel, } from './tier';
|
|
23
|
+
export { getRemediation, getRemediations, getAllRemediations, getRemediationCount, getRemediationIds, } from './templates';
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/abgr/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,iBAAiB,EACjB,yBAAyB,EACzB,gBAAgB,EAChB,WAAW,EACX,eAAe,GAChB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,uBAAuB,EACvB,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,mBAAmB,EACnB,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD,OAAO,EACL,sBAAsB,EACtB,YAAY,GACb,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,UAAU,EACV,YAAY,EACZ,YAAY,GACb,MAAM,QAAQ,CAAC;AAGhB,OAAO,EACL,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* OASB v2 Behavioral Governance Module
|
|
4
|
+
*
|
|
5
|
+
* Implements domains 7-14 of the Open Agent Security Benchmark,
|
|
6
|
+
* providing governance control scanning for SOUL.md and system
|
|
7
|
+
* prompt files. The module is self-contained with no dependencies
|
|
8
|
+
* on the core scanner.
|
|
9
|
+
*
|
|
10
|
+
* Usage:
|
|
11
|
+
* import { detectGovernanceControls, computeGovernanceScore, detectTier } from './abgr';
|
|
12
|
+
*
|
|
13
|
+
* const content = fs.readFileSync('SOUL.md', 'utf-8');
|
|
14
|
+
* const tier = detectTier(content);
|
|
15
|
+
* const detections = detectGovernanceControls(content);
|
|
16
|
+
* const score = computeGovernanceScore(detections, tier, 'SOUL.md');
|
|
17
|
+
*/
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.getRemediationIds = exports.getRemediationCount = exports.getAllRemediations = exports.getRemediations = exports.getRemediation = exports.getTierLevel = exports.getTierLabel = exports.detectTier = exports.scoreToGrade = exports.computeGovernanceScore = exports.PASS_THRESHOLD = exports.detectSingleControl = exports.detectGovernanceControls = exports.analyzeStructure = exports.getControlsBySeverity = exports.getControlsForTier = exports.getControlById = exports.getControlsByDomain = exports.DOMAIN_METADATA = exports.ALL_GOVERNANCE_CONTROLS = void 0;
|
|
20
|
+
// Controls (all 68 definitions + lookup helpers)
|
|
21
|
+
var controls_1 = require("./controls");
|
|
22
|
+
Object.defineProperty(exports, "ALL_GOVERNANCE_CONTROLS", { enumerable: true, get: function () { return controls_1.ALL_GOVERNANCE_CONTROLS; } });
|
|
23
|
+
Object.defineProperty(exports, "DOMAIN_METADATA", { enumerable: true, get: function () { return controls_1.DOMAIN_METADATA; } });
|
|
24
|
+
Object.defineProperty(exports, "getControlsByDomain", { enumerable: true, get: function () { return controls_1.getControlsByDomain; } });
|
|
25
|
+
Object.defineProperty(exports, "getControlById", { enumerable: true, get: function () { return controls_1.getControlById; } });
|
|
26
|
+
Object.defineProperty(exports, "getControlsForTier", { enumerable: true, get: function () { return controls_1.getControlsForTier; } });
|
|
27
|
+
Object.defineProperty(exports, "getControlsBySeverity", { enumerable: true, get: function () { return controls_1.getControlsBySeverity; } });
|
|
28
|
+
// Detector (two-layer detection engine)
|
|
29
|
+
var detector_1 = require("./detector");
|
|
30
|
+
Object.defineProperty(exports, "analyzeStructure", { enumerable: true, get: function () { return detector_1.analyzeStructure; } });
|
|
31
|
+
Object.defineProperty(exports, "detectGovernanceControls", { enumerable: true, get: function () { return detector_1.detectGovernanceControls; } });
|
|
32
|
+
Object.defineProperty(exports, "detectSingleControl", { enumerable: true, get: function () { return detector_1.detectSingleControl; } });
|
|
33
|
+
Object.defineProperty(exports, "PASS_THRESHOLD", { enumerable: true, get: function () { return detector_1.PASS_THRESHOLD; } });
|
|
34
|
+
// Scorer (per-domain and overall scoring)
|
|
35
|
+
var scorer_1 = require("./scorer");
|
|
36
|
+
Object.defineProperty(exports, "computeGovernanceScore", { enumerable: true, get: function () { return scorer_1.computeGovernanceScore; } });
|
|
37
|
+
Object.defineProperty(exports, "scoreToGrade", { enumerable: true, get: function () { return scorer_1.scoreToGrade; } });
|
|
38
|
+
// Tier detection
|
|
39
|
+
var tier_1 = require("./tier");
|
|
40
|
+
Object.defineProperty(exports, "detectTier", { enumerable: true, get: function () { return tier_1.detectTier; } });
|
|
41
|
+
Object.defineProperty(exports, "getTierLabel", { enumerable: true, get: function () { return tier_1.getTierLabel; } });
|
|
42
|
+
Object.defineProperty(exports, "getTierLevel", { enumerable: true, get: function () { return tier_1.getTierLevel; } });
|
|
43
|
+
// Remediation templates
|
|
44
|
+
var templates_1 = require("./templates");
|
|
45
|
+
Object.defineProperty(exports, "getRemediation", { enumerable: true, get: function () { return templates_1.getRemediation; } });
|
|
46
|
+
Object.defineProperty(exports, "getRemediations", { enumerable: true, get: function () { return templates_1.getRemediations; } });
|
|
47
|
+
Object.defineProperty(exports, "getAllRemediations", { enumerable: true, get: function () { return templates_1.getAllRemediations; } });
|
|
48
|
+
Object.defineProperty(exports, "getRemediationCount", { enumerable: true, get: function () { return templates_1.getRemediationCount; } });
|
|
49
|
+
Object.defineProperty(exports, "getRemediationIds", { enumerable: true, get: function () { return templates_1.getRemediationIds; } });
|
|
50
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/abgr/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAeH,iDAAiD;AACjD,uCAOoB;AANlB,mHAAA,uBAAuB,OAAA;AACvB,2GAAA,eAAe,OAAA;AACf,+GAAA,mBAAmB,OAAA;AACnB,0GAAA,cAAc,OAAA;AACd,8GAAA,kBAAkB,OAAA;AAClB,iHAAA,qBAAqB,OAAA;AAGvB,wCAAwC;AACxC,uCAKoB;AAJlB,4GAAA,gBAAgB,OAAA;AAChB,oHAAA,wBAAwB,OAAA;AACxB,+GAAA,mBAAmB,OAAA;AACnB,0GAAA,cAAc,OAAA;AAKhB,0CAA0C;AAC1C,mCAGkB;AAFhB,gHAAA,sBAAsB,OAAA;AACtB,sGAAA,YAAY,OAAA;AAGd,iBAAiB;AACjB,+BAIgB;AAHd,kGAAA,UAAU,OAAA;AACV,oGAAA,YAAY,OAAA;AACZ,oGAAA,YAAY,OAAA;AAGd,wBAAwB;AACxB,yCAMqB;AALnB,2GAAA,cAAc,OAAA;AACd,4GAAA,eAAe,OAAA;AACf,+GAAA,kBAAkB,OAAA;AAClB,gHAAA,mBAAmB,OAAA;AACnB,8GAAA,iBAAiB,OAAA"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OASB v2 Behavioral Governance Scorer
|
|
3
|
+
*
|
|
4
|
+
* Computes per-domain and overall governance scores from detection results.
|
|
5
|
+
*
|
|
6
|
+
* Severity weights:
|
|
7
|
+
* CRITICAL = 5, HIGH = 3, MEDIUM = 2, LOW = 1
|
|
8
|
+
*
|
|
9
|
+
* Per-domain score:
|
|
10
|
+
* sum(passing control weights) / sum(all applicable control weights) * 100
|
|
11
|
+
*
|
|
12
|
+
* Overall score:
|
|
13
|
+
* weighted average of domain scores
|
|
14
|
+
*
|
|
15
|
+
* Critical floor rule:
|
|
16
|
+
* If ANY critical control fails, the maximum grade is capped at C (60).
|
|
17
|
+
*
|
|
18
|
+
* Grade scale:
|
|
19
|
+
* A: 90-100, B: 75-89, C: 60-74, D: 40-59, F: 0-39
|
|
20
|
+
*/
|
|
21
|
+
import type { AgentTier, GovernanceGrade, GovernanceScore } from './types';
|
|
22
|
+
import type { GovernanceDetectionResult } from './types';
|
|
23
|
+
/**
|
|
24
|
+
* Convert a numeric score to a letter grade.
|
|
25
|
+
*/
|
|
26
|
+
export declare function scoreToGrade(score: number): GovernanceGrade;
|
|
27
|
+
/**
|
|
28
|
+
* Compute the full governance score from detection results.
|
|
29
|
+
*
|
|
30
|
+
* @param detections - Detection results from the detector engine
|
|
31
|
+
* @param tier - Detected agent tier (filters applicable controls)
|
|
32
|
+
* @param sourceFile - Path to the source file that was analyzed
|
|
33
|
+
* @returns Complete governance score with per-domain breakdown
|
|
34
|
+
*/
|
|
35
|
+
export declare function computeGovernanceScore(detections: GovernanceDetectionResult[], tier: AgentTier, sourceFile: string): GovernanceScore;
|
|
36
|
+
//# sourceMappingURL=scorer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scorer.d.ts","sourceRoot":"","sources":["../../src/abgr/scorer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EACV,SAAS,EAIT,eAAe,EAEf,eAAe,EAEhB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAoBzD;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAM3D;AAoFD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,yBAAyB,EAAE,EACvC,IAAI,EAAE,SAAS,EACf,UAAU,EAAE,MAAM,GACjB,eAAe,CAiGjB"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* OASB v2 Behavioral Governance Scorer
|
|
4
|
+
*
|
|
5
|
+
* Computes per-domain and overall governance scores from detection results.
|
|
6
|
+
*
|
|
7
|
+
* Severity weights:
|
|
8
|
+
* CRITICAL = 5, HIGH = 3, MEDIUM = 2, LOW = 1
|
|
9
|
+
*
|
|
10
|
+
* Per-domain score:
|
|
11
|
+
* sum(passing control weights) / sum(all applicable control weights) * 100
|
|
12
|
+
*
|
|
13
|
+
* Overall score:
|
|
14
|
+
* weighted average of domain scores
|
|
15
|
+
*
|
|
16
|
+
* Critical floor rule:
|
|
17
|
+
* If ANY critical control fails, the maximum grade is capped at C (60).
|
|
18
|
+
*
|
|
19
|
+
* Grade scale:
|
|
20
|
+
* A: 90-100, B: 75-89, C: 60-74, D: 40-59, F: 0-39
|
|
21
|
+
*/
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.scoreToGrade = scoreToGrade;
|
|
24
|
+
exports.computeGovernanceScore = computeGovernanceScore;
|
|
25
|
+
const controls_1 = require("./controls");
|
|
26
|
+
const detector_1 = require("./detector");
|
|
27
|
+
const templates_1 = require("./templates");
|
|
28
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
29
|
+
// Severity weights
|
|
30
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
31
|
+
const SEVERITY_WEIGHTS = {
|
|
32
|
+
critical: 5,
|
|
33
|
+
high: 3,
|
|
34
|
+
medium: 2,
|
|
35
|
+
low: 1,
|
|
36
|
+
};
|
|
37
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
38
|
+
// Grade calculation
|
|
39
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
40
|
+
/**
|
|
41
|
+
* Convert a numeric score to a letter grade.
|
|
42
|
+
*/
|
|
43
|
+
function scoreToGrade(score) {
|
|
44
|
+
if (score >= 90)
|
|
45
|
+
return 'A';
|
|
46
|
+
if (score >= 75)
|
|
47
|
+
return 'B';
|
|
48
|
+
if (score >= 60)
|
|
49
|
+
return 'C';
|
|
50
|
+
if (score >= 40)
|
|
51
|
+
return 'D';
|
|
52
|
+
return 'F';
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Apply the critical floor rule: if any critical control fails,
|
|
56
|
+
* the grade is capped at C and score at 60.
|
|
57
|
+
*/
|
|
58
|
+
function applyCriticalFloor(score, grade, criticalFailures) {
|
|
59
|
+
if (criticalFailures.length > 0) {
|
|
60
|
+
return {
|
|
61
|
+
score: Math.min(score, 60),
|
|
62
|
+
grade: score >= 60 ? 'C' : grade,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
return { score, grade };
|
|
66
|
+
}
|
|
67
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
68
|
+
// Domain scoring
|
|
69
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
70
|
+
/**
|
|
71
|
+
* Compute the score for a single domain.
|
|
72
|
+
*/
|
|
73
|
+
function scoreDomain(domain, applicableControls, detectionMap) {
|
|
74
|
+
const domainControls = applicableControls.filter(c => c.domain === domain);
|
|
75
|
+
const meta = controls_1.DOMAIN_METADATA[domain];
|
|
76
|
+
if (domainControls.length === 0) {
|
|
77
|
+
return {
|
|
78
|
+
domain,
|
|
79
|
+
domainNumber: meta.number,
|
|
80
|
+
domainName: meta.name,
|
|
81
|
+
score: 100,
|
|
82
|
+
controlsPassed: 0,
|
|
83
|
+
controlsTotal: 0,
|
|
84
|
+
controlsFailed: [],
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
let totalWeight = 0;
|
|
88
|
+
let passedWeight = 0;
|
|
89
|
+
let passed = 0;
|
|
90
|
+
const failed = [];
|
|
91
|
+
for (const control of domainControls) {
|
|
92
|
+
const weight = SEVERITY_WEIGHTS[control.severity];
|
|
93
|
+
totalWeight += weight;
|
|
94
|
+
const detection = detectionMap.get(control.id);
|
|
95
|
+
if (detection && detection.confidence >= detector_1.PASS_THRESHOLD) {
|
|
96
|
+
passedWeight += weight;
|
|
97
|
+
passed++;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
failed.push(control.id);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
const score = totalWeight > 0
|
|
104
|
+
? Math.round((passedWeight / totalWeight) * 100)
|
|
105
|
+
: 100;
|
|
106
|
+
return {
|
|
107
|
+
domain,
|
|
108
|
+
domainNumber: meta.number,
|
|
109
|
+
domainName: meta.name,
|
|
110
|
+
score,
|
|
111
|
+
controlsPassed: passed,
|
|
112
|
+
controlsTotal: domainControls.length,
|
|
113
|
+
controlsFailed: failed,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
117
|
+
// Full governance scoring
|
|
118
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
119
|
+
/**
|
|
120
|
+
* Compute the full governance score from detection results.
|
|
121
|
+
*
|
|
122
|
+
* @param detections - Detection results from the detector engine
|
|
123
|
+
* @param tier - Detected agent tier (filters applicable controls)
|
|
124
|
+
* @param sourceFile - Path to the source file that was analyzed
|
|
125
|
+
* @returns Complete governance score with per-domain breakdown
|
|
126
|
+
*/
|
|
127
|
+
function computeGovernanceScore(detections, tier, sourceFile) {
|
|
128
|
+
// Build detection lookup
|
|
129
|
+
const detectionMap = new Map();
|
|
130
|
+
for (const d of detections) {
|
|
131
|
+
detectionMap.set(d.controlId, d);
|
|
132
|
+
}
|
|
133
|
+
// Filter controls applicable to this tier
|
|
134
|
+
const applicableControls = (0, controls_1.getControlsForTier)(tier);
|
|
135
|
+
// Build control lookup for quick access
|
|
136
|
+
const controlMap = new Map();
|
|
137
|
+
for (const c of controls_1.ALL_GOVERNANCE_CONTROLS) {
|
|
138
|
+
controlMap.set(c.id, c);
|
|
139
|
+
}
|
|
140
|
+
// Score each domain
|
|
141
|
+
const allDomains = [
|
|
142
|
+
'trust-hierarchy',
|
|
143
|
+
'capability-boundaries',
|
|
144
|
+
'injection-hardening',
|
|
145
|
+
'data-handling',
|
|
146
|
+
'hardcoded-behaviors',
|
|
147
|
+
'agentic-safety',
|
|
148
|
+
'honesty-transparency',
|
|
149
|
+
'human-oversight',
|
|
150
|
+
];
|
|
151
|
+
const domainScores = allDomains.map(domain => scoreDomain(domain, applicableControls, detectionMap));
|
|
152
|
+
// Build per-control results
|
|
153
|
+
const results = applicableControls.map(control => {
|
|
154
|
+
const detection = detectionMap.get(control.id);
|
|
155
|
+
const passed = detection ? detection.confidence >= detector_1.PASS_THRESHOLD : false;
|
|
156
|
+
const remediation = passed ? undefined : (0, templates_1.getRemediation)(control.id);
|
|
157
|
+
return {
|
|
158
|
+
controlId: control.id,
|
|
159
|
+
controlName: control.name,
|
|
160
|
+
domain: control.domain,
|
|
161
|
+
severity: control.severity,
|
|
162
|
+
passed,
|
|
163
|
+
confidence: detection?.confidence ?? 0,
|
|
164
|
+
evidence: detection?.evidence ?? [],
|
|
165
|
+
remediation,
|
|
166
|
+
};
|
|
167
|
+
});
|
|
168
|
+
// Identify critical failures
|
|
169
|
+
const criticalFailures = results
|
|
170
|
+
.filter(r => !r.passed && r.severity === 'critical')
|
|
171
|
+
.map(r => r.controlId);
|
|
172
|
+
// Compute overall score as weighted average of domain scores
|
|
173
|
+
// Weight each domain by the sum of severity weights of its applicable controls
|
|
174
|
+
let totalDomainWeight = 0;
|
|
175
|
+
let weightedScoreSum = 0;
|
|
176
|
+
for (const ds of domainScores) {
|
|
177
|
+
const domainControls = applicableControls.filter(c => c.domain === ds.domain);
|
|
178
|
+
const domainWeight = domainControls.reduce((sum, c) => sum + SEVERITY_WEIGHTS[c.severity], 0);
|
|
179
|
+
if (domainWeight > 0) {
|
|
180
|
+
totalDomainWeight += domainWeight;
|
|
181
|
+
weightedScoreSum += ds.score * domainWeight;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
let overall = totalDomainWeight > 0
|
|
185
|
+
? Math.round(weightedScoreSum / totalDomainWeight)
|
|
186
|
+
: 0;
|
|
187
|
+
let grade = scoreToGrade(overall);
|
|
188
|
+
// Apply critical floor rule
|
|
189
|
+
const adjusted = applyCriticalFloor(overall, grade, criticalFailures);
|
|
190
|
+
overall = adjusted.score;
|
|
191
|
+
grade = adjusted.grade;
|
|
192
|
+
const tierPassed = results.filter(r => r.passed).length;
|
|
193
|
+
return {
|
|
194
|
+
overall,
|
|
195
|
+
grade,
|
|
196
|
+
domains: domainScores,
|
|
197
|
+
results,
|
|
198
|
+
criticalFailures,
|
|
199
|
+
tier,
|
|
200
|
+
tierApplicable: applicableControls.length,
|
|
201
|
+
tierPassed,
|
|
202
|
+
sourceFile,
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=scorer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scorer.js","sourceRoot":"","sources":["../../src/abgr/scorer.ts"],"names":[],"mappings":"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"}
|