hackmyagent 0.2.2 → 0.3.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 +181 -6
- package/dist/index.js +833 -14
- package/dist/index.js.map +1 -1
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -1,17 +1,23 @@
|
|
|
1
|
-
# HackMyAgent
|
|
2
|
-
|
|
3
|
-
> **AI Agent Security Scanner** — Detect exposed MCP servers, leaked API keys, and vulnerable Claude Code configurations. Free, no signup required.
|
|
1
|
+
# HackMyAgent CLI
|
|
4
2
|
|
|
5
3
|
[](https://www.npmjs.com/package/hackmyagent)
|
|
6
4
|
[](https://opensource.org/licenses/Apache-2.0)
|
|
7
5
|
|
|
6
|
+
**Part of [OpenA2A](https://opena2a.org)** — open-source security for AI agents
|
|
7
|
+
|
|
8
8
|
**Website:** [hackmyagent.com](https://hackmyagent.com) — Scan external infrastructure for exposed MCP endpoints, configs, and credentials
|
|
9
9
|
|
|
10
|
+
## Disclaimer
|
|
11
|
+
|
|
12
|
+
HackMyAgent performs passive reconnaissance only (port checks and HTTP requests) — it does not exploit vulnerabilities. However, please only scan systems you own or have permission to test. The authors assume no liability for misuse of this tool.
|
|
13
|
+
|
|
10
14
|
```bash
|
|
11
15
|
npx hackmyagent check @publisher/skill # verify a skill before installing
|
|
12
16
|
npx hackmyagent secure # harden your agent setup (100 checks)
|
|
13
17
|
npx hackmyagent secure --fix # auto-fix security issues
|
|
14
18
|
npx hackmyagent scan example.com # scan for exposed infrastructure
|
|
19
|
+
npx hackmyagent attack --local # red team with 55 attack payloads
|
|
20
|
+
npx hackmyagent benchmark --benchmark oasb-1 # run OASB-1 security benchmark
|
|
15
21
|
```
|
|
16
22
|
|
|
17
23
|
## Two Ways to Scan
|
|
@@ -26,7 +32,7 @@ npx hackmyagent scan example.com # scan for exposed infrastructure
|
|
|
26
32
|
AI agents are powerful but introduce new attack surfaces. Skills can be malicious. Configs can leak secrets. MCP servers can be exposed. HackMyAgent helps you:
|
|
27
33
|
|
|
28
34
|
- **Check** skills before installing (publisher verification, permission analysis)
|
|
29
|
-
- **Secure** your agent setup (100-point CIS
|
|
35
|
+
- **Secure** your agent setup (100-point CIS security scan, auto-remediation)
|
|
30
36
|
- **Scan** external infrastructure (exposed MCP endpoints, leaked configs)
|
|
31
37
|
|
|
32
38
|
## Installation
|
|
@@ -108,6 +114,8 @@ hackmyagent check @publisher/skill --offline # skip DNS verification
|
|
|
108
114
|
- Permissions requested (filesystem, network, shell access)
|
|
109
115
|
- Revocation status against global blocklist
|
|
110
116
|
|
|
117
|
+
**Note:** Only scan systems you own or have permission to test.
|
|
118
|
+
|
|
111
119
|
**Risk Levels:** `low`, `medium`, `high`, `critical`
|
|
112
120
|
|
|
113
121
|
### `hackmyagent scan`
|
|
@@ -129,6 +137,128 @@ hackmyagent scan example.com --json
|
|
|
129
137
|
|
|
130
138
|
**Scoring:** A (90-100), B (80-89), C (70-79), D (60-69), F (<60)
|
|
131
139
|
|
|
140
|
+
### `hackmyagent attack`
|
|
141
|
+
|
|
142
|
+
Red team your AI agent with adversarial security testing. 55 attack payloads across 5 categories.
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
# Local simulation (no API calls - test payloads locally)
|
|
146
|
+
hackmyagent attack --local
|
|
147
|
+
hackmyagent attack --local --system-prompt "You are a helpful assistant"
|
|
148
|
+
|
|
149
|
+
# Test an API endpoint
|
|
150
|
+
hackmyagent attack https://api.example.com/v1/chat
|
|
151
|
+
hackmyagent attack https://api.example.com --api-format anthropic
|
|
152
|
+
|
|
153
|
+
# Filter by category or intensity
|
|
154
|
+
hackmyagent attack --local --category prompt-injection
|
|
155
|
+
hackmyagent attack --local --intensity aggressive
|
|
156
|
+
|
|
157
|
+
# Output formats
|
|
158
|
+
hackmyagent attack --local -f json
|
|
159
|
+
hackmyagent attack --local -f sarif -o results.sarif
|
|
160
|
+
|
|
161
|
+
# Verbose mode (show each payload result)
|
|
162
|
+
hackmyagent attack --local --verbose
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**Attack Categories:**
|
|
166
|
+
|
|
167
|
+
| Category | Payloads | Description |
|
|
168
|
+
|----------|----------|-------------|
|
|
169
|
+
| `prompt-injection` | 12 | Manipulate agent behavior via malicious input |
|
|
170
|
+
| `jailbreak` | 12 | Bypass safety guardrails and restrictions |
|
|
171
|
+
| `data-exfiltration` | 11 | Extract sensitive information from the agent |
|
|
172
|
+
| `capability-abuse` | 10 | Misuse agent tools and capabilities |
|
|
173
|
+
| `context-manipulation` | 10 | Poison agent context or memory |
|
|
174
|
+
|
|
175
|
+
**Intensity Levels:**
|
|
176
|
+
|
|
177
|
+
| Level | Description |
|
|
178
|
+
|-------|-------------|
|
|
179
|
+
| `passive` | Observation only, minimal risk |
|
|
180
|
+
| `active` | Standard attack payloads (default) |
|
|
181
|
+
| `aggressive` | Creative/risky payloads, full suite |
|
|
182
|
+
|
|
183
|
+
**Output Formats:**
|
|
184
|
+
- `text` - Human-readable report (default)
|
|
185
|
+
- `json` - Machine-readable JSON
|
|
186
|
+
- `sarif` - SARIF 2.1.0 for GitHub Security tab integration
|
|
187
|
+
|
|
188
|
+
**Risk Scoring:**
|
|
189
|
+
- 0-24: LOW - Minor issues, agent is reasonably secure
|
|
190
|
+
- 25-49: MEDIUM - Some vulnerabilities, review recommended
|
|
191
|
+
- 50-69: HIGH - Significant vulnerabilities, action required
|
|
192
|
+
- 70-100: CRITICAL - Severe vulnerabilities, immediate action needed
|
|
193
|
+
|
|
194
|
+
### `hackmyagent benchmark`
|
|
195
|
+
|
|
196
|
+
Run the OASB-1 (OpenA2A Security Benchmark) against your agent configuration.
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
# Run benchmark
|
|
200
|
+
hackmyagent benchmark --benchmark oasb-1
|
|
201
|
+
|
|
202
|
+
# Target specific directory
|
|
203
|
+
hackmyagent benchmark --benchmark oasb-1 ./my-project
|
|
204
|
+
|
|
205
|
+
# Output formats
|
|
206
|
+
hackmyagent benchmark --benchmark oasb-1 -f json
|
|
207
|
+
hackmyagent benchmark --benchmark oasb-1 -f sarif -o results.sarif
|
|
208
|
+
hackmyagent benchmark --benchmark oasb-1 -f html -o report.html
|
|
209
|
+
hackmyagent benchmark --benchmark oasb-1 -f asp -o profile.asp.json
|
|
210
|
+
|
|
211
|
+
# CI/CD with fail threshold
|
|
212
|
+
hackmyagent benchmark --benchmark oasb-1 --fail-below 70
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
**Output Formats:**
|
|
216
|
+
- `text` - Human-readable report (default)
|
|
217
|
+
- `json` - Machine-readable JSON
|
|
218
|
+
- `sarif` - SARIF 2.1.0 for GitHub/IDE integration
|
|
219
|
+
- `html` - Standalone HTML report
|
|
220
|
+
- `asp` - Agent Security Profile (HackMyAgent format)
|
|
221
|
+
|
|
222
|
+
### `hackmyagent secure-openclaw`
|
|
223
|
+
|
|
224
|
+
Scan OpenClaw/Moltbot installations with 34 specialized security checks and auto-remediation.
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
hackmyagent secure-openclaw # scan default location
|
|
228
|
+
hackmyagent secure-openclaw ~/.moltbot # scan specific directory
|
|
229
|
+
hackmyagent secure-openclaw --fix # auto-fix gateway misconfigurations
|
|
230
|
+
hackmyagent secure-openclaw --fix --dry-run # preview fixes
|
|
231
|
+
hackmyagent secure-openclaw --json # JSON output for CI/CD
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
**Detects:**
|
|
235
|
+
- Unsigned/malicious skills (ClawHavoc campaign patterns)
|
|
236
|
+
- ClickFix social engineering attacks
|
|
237
|
+
- Reverse shell backdoors
|
|
238
|
+
- Credential exfiltration (wallets, SSH keys, API keys)
|
|
239
|
+
- Heartbeat/cron abuse
|
|
240
|
+
- Gateway misconfigurations (GHSA-g8p2 vulnerability)
|
|
241
|
+
- Disabled sandbox/approval confirmations
|
|
242
|
+
|
|
243
|
+
**Auto-Fix (with `--fix`):**
|
|
244
|
+
| Check | Before | After |
|
|
245
|
+
|-------|--------|-------|
|
|
246
|
+
| GATEWAY-001 | `0.0.0.0` | `127.0.0.1` (local-only) |
|
|
247
|
+
| GATEWAY-003 | Plaintext token | `${OPENCLAW_AUTH_TOKEN}` env var |
|
|
248
|
+
| GATEWAY-004 | Approvals disabled | Approvals enabled |
|
|
249
|
+
| GATEWAY-005 | Sandbox disabled | Sandbox enabled |
|
|
250
|
+
|
|
251
|
+
**Check Categories:**
|
|
252
|
+
| Category | Checks | Description |
|
|
253
|
+
|----------|--------|-------------|
|
|
254
|
+
| SKILL | 12 | Malicious skill detection |
|
|
255
|
+
| HEARTBEAT | 6 | Heartbeat/cron abuse |
|
|
256
|
+
| GATEWAY | 6 | Gateway misconfigurations (4 auto-fixable) |
|
|
257
|
+
| CONFIG | 6 | Insecure settings |
|
|
258
|
+
| SUPPLY | 4 | Supply chain attacks |
|
|
259
|
+
|
|
260
|
+
See [SECURITY_CHECKS.md](docs/SECURITY_CHECKS.md#openclaw-security-checks) for full documentation.
|
|
261
|
+
|
|
132
262
|
### `hackmyagent rollback`
|
|
133
263
|
|
|
134
264
|
Undo auto-fix changes.
|
|
@@ -163,6 +293,38 @@ jobs:
|
|
|
163
293
|
path: security-report.json
|
|
164
294
|
```
|
|
165
295
|
|
|
296
|
+
### GitHub Actions with Attack Mode (SARIF)
|
|
297
|
+
|
|
298
|
+
```yaml
|
|
299
|
+
name: AI Agent Security
|
|
300
|
+
on: [push, pull_request]
|
|
301
|
+
|
|
302
|
+
jobs:
|
|
303
|
+
attack-scan:
|
|
304
|
+
runs-on: ubuntu-latest
|
|
305
|
+
steps:
|
|
306
|
+
- uses: actions/checkout@v4
|
|
307
|
+
- uses: actions/setup-node@v4
|
|
308
|
+
with:
|
|
309
|
+
node-version: '20'
|
|
310
|
+
- name: Run attack simulation
|
|
311
|
+
run: npx hackmyagent attack --local -f sarif -o attack-results.sarif
|
|
312
|
+
- name: Upload SARIF to GitHub Security
|
|
313
|
+
uses: github/codeql-action/upload-sarif@v3
|
|
314
|
+
with:
|
|
315
|
+
sarif_file: attack-results.sarif
|
|
316
|
+
|
|
317
|
+
benchmark:
|
|
318
|
+
runs-on: ubuntu-latest
|
|
319
|
+
steps:
|
|
320
|
+
- uses: actions/checkout@v4
|
|
321
|
+
- uses: actions/setup-node@v4
|
|
322
|
+
with:
|
|
323
|
+
node-version: '20'
|
|
324
|
+
- name: Run OASB-1 benchmark
|
|
325
|
+
run: npx hackmyagent benchmark --benchmark oasb-1 --fail-below 70
|
|
326
|
+
```
|
|
327
|
+
|
|
166
328
|
### Pre-commit Hook
|
|
167
329
|
|
|
168
330
|
```bash
|
|
@@ -194,6 +356,7 @@ For the complete list of 100 security checks with descriptions and remediation g
|
|
|
194
356
|
|
|
195
357
|
The following issues can be automatically fixed with `--fix`:
|
|
196
358
|
|
|
359
|
+
**General (`hackmyagent secure --fix`):**
|
|
197
360
|
| Check ID | Issue | Auto-Fix Action |
|
|
198
361
|
|----------|-------|-----------------|
|
|
199
362
|
| CRED-001 | Exposed API keys | Replace with env var reference |
|
|
@@ -203,7 +366,15 @@ The following issues can be automatically fixed with `--fix`:
|
|
|
203
366
|
| MCP-001 | Root filesystem access | Scope to project directory |
|
|
204
367
|
| NET-001 | Bound to 0.0.0.0 | Bind to 127.0.0.1 |
|
|
205
368
|
|
|
206
|
-
|
|
369
|
+
**OpenClaw (`hackmyagent secure-openclaw --fix`):**
|
|
370
|
+
| Check ID | Issue | Auto-Fix Action |
|
|
371
|
+
|----------|-------|-----------------|
|
|
372
|
+
| GATEWAY-001 | Bound to 0.0.0.0 | Bind to 127.0.0.1 |
|
|
373
|
+
| GATEWAY-003 | Plaintext token in config | Replace with `${OPENCLAW_AUTH_TOKEN}` |
|
|
374
|
+
| GATEWAY-004 | Approvals disabled | Enable approval confirmations |
|
|
375
|
+
| GATEWAY-005 | Sandbox disabled | Enable sandbox mode |
|
|
376
|
+
|
|
377
|
+
Always use `--dry-run` first to preview changes. Backups are created automatically.
|
|
207
378
|
|
|
208
379
|
## Environment Variables
|
|
209
380
|
|
|
@@ -248,4 +419,8 @@ Apache-2.0
|
|
|
248
419
|
|
|
249
420
|
---
|
|
250
421
|
|
|
251
|
-
|
|
422
|
+
## Secure What You Find
|
|
423
|
+
|
|
424
|
+
HackMyAgent finds vulnerabilities. **[AIM](https://github.com/opena2a-org/agent-identity-management)** fixes them — the open-source NHI platform for AI agents with cryptographic identity, governance, and access control.
|
|
425
|
+
|
|
426
|
+
→ [Get started with AIM](https://opena2a.org/docs/quick-start) | [Learn about NHI governance](https://opena2a.org/nhi)
|
package/dist/index.js
CHANGED
|
@@ -173,11 +173,495 @@ function groupFindingsBySeverity(findings) {
|
|
|
173
173
|
}
|
|
174
174
|
return grouped;
|
|
175
175
|
}
|
|
176
|
+
function generateBenchmarkReport(findings, level, categoryFilter) {
|
|
177
|
+
// Get controls for the specified level
|
|
178
|
+
let controls = (0, hackmyagent_core_1.getControlsForLevel)(level);
|
|
179
|
+
// Filter by category if specified
|
|
180
|
+
if (categoryFilter) {
|
|
181
|
+
const categoryControls = (0, hackmyagent_core_1.getControlsForCategory)(categoryFilter);
|
|
182
|
+
if (categoryControls.length === 0) {
|
|
183
|
+
console.error(`Error: Unknown category '${categoryFilter}'.`);
|
|
184
|
+
console.error(`Available categories: ${hackmyagent_core_1.OASB_1_CATEGORIES.map((c) => c.name).join(', ')}`);
|
|
185
|
+
process.exit(1);
|
|
186
|
+
}
|
|
187
|
+
controls = controls.filter((c) => c.category.toLowerCase() === categoryFilter.toLowerCase());
|
|
188
|
+
}
|
|
189
|
+
// Build a map of checkId -> finding for quick lookup
|
|
190
|
+
const findingsByCheckId = new Map();
|
|
191
|
+
for (const finding of findings) {
|
|
192
|
+
findingsByCheckId.set(finding.checkId, finding);
|
|
193
|
+
}
|
|
194
|
+
// Evaluate each control
|
|
195
|
+
const controlResults = [];
|
|
196
|
+
let l1Passed = 0, l1Total = 0;
|
|
197
|
+
let l2Passed = 0, l2Total = 0;
|
|
198
|
+
let l3Passed = 0, l3Total = 0;
|
|
199
|
+
let passedCount = 0, failedCount = 0, unverifiedCount = 0;
|
|
200
|
+
for (const control of controls) {
|
|
201
|
+
let status;
|
|
202
|
+
const relatedFindings = [];
|
|
203
|
+
let remediation;
|
|
204
|
+
if (control.verification === 'manual' || control.verification === 'forward') {
|
|
205
|
+
// Manual/forward controls are unverified (human must check)
|
|
206
|
+
status = 'unverified';
|
|
207
|
+
unverifiedCount++;
|
|
208
|
+
// Use control's remediation for manual/forward controls
|
|
209
|
+
remediation = control.remediation;
|
|
210
|
+
}
|
|
211
|
+
else if (control.checkIds.length === 0) {
|
|
212
|
+
// No automated checks defined
|
|
213
|
+
status = 'unverified';
|
|
214
|
+
unverifiedCount++;
|
|
215
|
+
remediation = control.remediation;
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
// Check all mapped check IDs
|
|
219
|
+
let allPassed = true;
|
|
220
|
+
for (const checkId of control.checkIds) {
|
|
221
|
+
const finding = findingsByCheckId.get(checkId);
|
|
222
|
+
if (finding && !finding.passed) {
|
|
223
|
+
allPassed = false;
|
|
224
|
+
relatedFindings.push(`${checkId}: ${finding.description}`);
|
|
225
|
+
if (finding.fix) {
|
|
226
|
+
remediation = remediation || finding.fix;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
if (allPassed) {
|
|
231
|
+
status = 'passed';
|
|
232
|
+
passedCount++;
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
status = 'failed';
|
|
236
|
+
failedCount++;
|
|
237
|
+
// Fallback to control's remediation if no finding-specific fix
|
|
238
|
+
remediation = remediation || control.remediation;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
// Count by level for compliance calculation
|
|
242
|
+
if (control.scored && status !== 'unverified') {
|
|
243
|
+
if (control.level === 'L1') {
|
|
244
|
+
l1Total++;
|
|
245
|
+
if (status === 'passed')
|
|
246
|
+
l1Passed++;
|
|
247
|
+
}
|
|
248
|
+
else if (control.level === 'L2') {
|
|
249
|
+
l2Total++;
|
|
250
|
+
if (status === 'passed')
|
|
251
|
+
l2Passed++;
|
|
252
|
+
}
|
|
253
|
+
else if (control.level === 'L3') {
|
|
254
|
+
l3Total++;
|
|
255
|
+
if (status === 'passed')
|
|
256
|
+
l3Passed++;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
controlResults.push({ control, status, findings: relatedFindings, remediation });
|
|
260
|
+
}
|
|
261
|
+
// Calculate compliance percentages
|
|
262
|
+
const l1Compliance = l1Total > 0 ? Math.round((l1Passed / l1Total) * 100) : 100;
|
|
263
|
+
const l2Compliance = l2Total > 0 ? Math.round((l2Passed / l2Total) * 100) : 100;
|
|
264
|
+
const l3Compliance = l3Total > 0 ? Math.round((l3Passed / l3Total) * 100) : 100;
|
|
265
|
+
const totalScored = l1Total + l2Total + l3Total;
|
|
266
|
+
const totalPassed = l1Passed + l2Passed + l3Passed;
|
|
267
|
+
const overallCompliance = totalScored > 0 ? Math.round((totalPassed / totalScored) * 100) : 100;
|
|
268
|
+
// Group results by category
|
|
269
|
+
const categoryResults = [];
|
|
270
|
+
for (const category of hackmyagent_core_1.OASB_1_CATEGORIES) {
|
|
271
|
+
if (categoryFilter && category.name.toLowerCase() !== categoryFilter.toLowerCase())
|
|
272
|
+
continue;
|
|
273
|
+
const catControls = controlResults.filter((r) => r.control.category === category.name);
|
|
274
|
+
if (catControls.length === 0)
|
|
275
|
+
continue;
|
|
276
|
+
const passed = catControls.filter((r) => r.status === 'passed').length;
|
|
277
|
+
const failed = catControls.filter((r) => r.status === 'failed').length;
|
|
278
|
+
const unverified = catControls.filter((r) => r.status === 'unverified').length;
|
|
279
|
+
const compliance = (passed + failed) > 0 ? Math.round((passed / (passed + failed)) * 100) : 100;
|
|
280
|
+
categoryResults.push({
|
|
281
|
+
category: category.name,
|
|
282
|
+
compliance,
|
|
283
|
+
passed,
|
|
284
|
+
failed,
|
|
285
|
+
unverified,
|
|
286
|
+
controls: catControls.map((r) => ({
|
|
287
|
+
controlId: r.control.id,
|
|
288
|
+
name: r.control.name,
|
|
289
|
+
level: r.control.level,
|
|
290
|
+
status: r.status,
|
|
291
|
+
findings: r.findings,
|
|
292
|
+
remediation: r.remediation,
|
|
293
|
+
})),
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
const rating = (0, hackmyagent_core_1.calculateRating)(l1Compliance, l2Compliance, l3Compliance, level);
|
|
297
|
+
return {
|
|
298
|
+
benchmark: hackmyagent_core_1.OASB_1_NAME,
|
|
299
|
+
version: hackmyagent_core_1.OASB_1_VERSION,
|
|
300
|
+
level,
|
|
301
|
+
timestamp: new Date(),
|
|
302
|
+
compliance: overallCompliance,
|
|
303
|
+
l1Compliance,
|
|
304
|
+
l2Compliance,
|
|
305
|
+
l3Compliance,
|
|
306
|
+
rating,
|
|
307
|
+
categories: categoryResults,
|
|
308
|
+
totalControls: controls.length,
|
|
309
|
+
passedControls: passedCount,
|
|
310
|
+
failedControls: failedCount,
|
|
311
|
+
unverifiedControls: unverifiedCount,
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
// SARIF 2.1.0 output for GitHub Security tab and IDE integration
|
|
315
|
+
function generateSarifOutput(benchmarkResult, findings, targetDir) {
|
|
316
|
+
const rules = [];
|
|
317
|
+
const results = [];
|
|
318
|
+
// Build rules and results from benchmark controls
|
|
319
|
+
for (const cat of benchmarkResult.categories) {
|
|
320
|
+
for (const ctrl of cat.controls) {
|
|
321
|
+
if (ctrl.status === 'failed') {
|
|
322
|
+
const ruleId = `OASB-1/${ctrl.controlId}`;
|
|
323
|
+
const severityScore = ctrl.level === 'L1' ? '8.0' : ctrl.level === 'L2' ? '6.0' : '4.0';
|
|
324
|
+
const sarifLevel = ctrl.level === 'L1' ? 'error' : ctrl.level === 'L2' ? 'warning' : 'note';
|
|
325
|
+
rules.push({
|
|
326
|
+
id: ruleId,
|
|
327
|
+
name: ctrl.name.replace(/\s+/g, ''),
|
|
328
|
+
shortDescription: { text: ctrl.name },
|
|
329
|
+
fullDescription: { text: `OASB-1 ${ctrl.level} Control: ${ctrl.name}` },
|
|
330
|
+
help: {
|
|
331
|
+
text: ctrl.remediation || `Fix the ${ctrl.name} control to achieve compliance.`,
|
|
332
|
+
markdown: ctrl.remediation ? `**Remediation:** ${ctrl.remediation}` : undefined,
|
|
333
|
+
},
|
|
334
|
+
helpUri: `https://oasb.ai/controls/${ctrl.controlId}`,
|
|
335
|
+
defaultConfiguration: { level: sarifLevel },
|
|
336
|
+
properties: {
|
|
337
|
+
'security-severity': severityScore,
|
|
338
|
+
tags: ['security', 'oasb-1', ctrl.level.toLowerCase()],
|
|
339
|
+
},
|
|
340
|
+
});
|
|
341
|
+
// Find related findings for locations
|
|
342
|
+
const relatedFindings = findings.filter(f => ctrl.findings.some(cf => cf.includes(f.checkId)));
|
|
343
|
+
if (relatedFindings.length > 0) {
|
|
344
|
+
for (const finding of relatedFindings) {
|
|
345
|
+
results.push({
|
|
346
|
+
ruleId,
|
|
347
|
+
level: sarifLevel,
|
|
348
|
+
message: { text: finding.description },
|
|
349
|
+
locations: finding.file ? [{
|
|
350
|
+
physicalLocation: {
|
|
351
|
+
artifactLocation: { uri: finding.file.replace(targetDir + '/', '') },
|
|
352
|
+
region: finding.line ? { startLine: finding.line } : undefined,
|
|
353
|
+
},
|
|
354
|
+
}] : undefined,
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
else {
|
|
359
|
+
// No specific location, just report the control failure
|
|
360
|
+
results.push({
|
|
361
|
+
ruleId,
|
|
362
|
+
level: sarifLevel,
|
|
363
|
+
message: { text: ctrl.findings.join('; ') || `Control ${ctrl.controlId} failed` },
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
const sarif = {
|
|
370
|
+
$schema: 'https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json',
|
|
371
|
+
version: '2.1.0',
|
|
372
|
+
runs: [{
|
|
373
|
+
tool: {
|
|
374
|
+
driver: {
|
|
375
|
+
name: 'HackMyAgent',
|
|
376
|
+
version: hackmyagent_core_1.VERSION,
|
|
377
|
+
informationUri: 'https://hackmyagent.com',
|
|
378
|
+
rules,
|
|
379
|
+
},
|
|
380
|
+
},
|
|
381
|
+
results,
|
|
382
|
+
}],
|
|
383
|
+
};
|
|
384
|
+
return JSON.stringify(sarif, null, 2);
|
|
385
|
+
}
|
|
386
|
+
// HTML report for shareable compliance documentation
|
|
387
|
+
function generateHtmlReport(result) {
|
|
388
|
+
const ratingColor = {
|
|
389
|
+
'Certified': '#22c55e',
|
|
390
|
+
'Compliant': '#22c55e',
|
|
391
|
+
'Passing': '#eab308',
|
|
392
|
+
'Needs Improvement': '#f97316',
|
|
393
|
+
'Failing': '#ef4444',
|
|
394
|
+
}[result.rating];
|
|
395
|
+
const categoryRows = result.categories.map(cat => {
|
|
396
|
+
const statusIcon = cat.failed === 0 ? '✅' : cat.passed > 0 ? '⚠️' : '❌';
|
|
397
|
+
const barWidth = cat.compliance;
|
|
398
|
+
const barColor = cat.compliance >= 90 ? '#22c55e' : cat.compliance >= 70 ? '#eab308' : '#ef4444';
|
|
399
|
+
const controlRows = cat.controls.map(ctrl => {
|
|
400
|
+
const statusEmoji = ctrl.status === 'passed' ? '✅' : ctrl.status === 'failed' ? '❌' : '⚪';
|
|
401
|
+
const findingsList = ctrl.findings.length > 0
|
|
402
|
+
? `<ul class="findings">${ctrl.findings.map(f => `<li>${escapeHtml(f)}</li>`).join('')}</ul>`
|
|
403
|
+
: '';
|
|
404
|
+
const remediation = ctrl.remediation
|
|
405
|
+
? `<div class="remediation"><strong>Fix:</strong> ${escapeHtml(ctrl.remediation)}</div>`
|
|
406
|
+
: '';
|
|
407
|
+
return `
|
|
408
|
+
<tr class="control-row ${ctrl.status}">
|
|
409
|
+
<td>${statusEmoji}</td>
|
|
410
|
+
<td>${ctrl.controlId}</td>
|
|
411
|
+
<td>${escapeHtml(ctrl.name)}</td>
|
|
412
|
+
<td><span class="level-badge level-${ctrl.level.toLowerCase()}">${ctrl.level}</span></td>
|
|
413
|
+
<td>${findingsList}${remediation}</td>
|
|
414
|
+
</tr>`;
|
|
415
|
+
}).join('');
|
|
416
|
+
return `
|
|
417
|
+
<div class="category">
|
|
418
|
+
<div class="category-header">
|
|
419
|
+
<span class="category-icon">${statusIcon}</span>
|
|
420
|
+
<span class="category-name">${escapeHtml(cat.category)}</span>
|
|
421
|
+
<span class="category-score">${cat.passed}/${cat.passed + cat.failed} (${cat.compliance}%)</span>
|
|
422
|
+
</div>
|
|
423
|
+
<div class="progress-bar">
|
|
424
|
+
<div class="progress-fill" style="width: ${barWidth}%; background: ${barColor};"></div>
|
|
425
|
+
</div>
|
|
426
|
+
<table class="controls-table">
|
|
427
|
+
<thead><tr><th></th><th>ID</th><th>Control</th><th>Level</th><th>Details</th></tr></thead>
|
|
428
|
+
<tbody>${controlRows}</tbody>
|
|
429
|
+
</table>
|
|
430
|
+
</div>`;
|
|
431
|
+
}).join('');
|
|
432
|
+
return `<!DOCTYPE html>
|
|
433
|
+
<html lang="en">
|
|
434
|
+
<head>
|
|
435
|
+
<meta charset="UTF-8">
|
|
436
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
437
|
+
<title>OASB-1 Compliance Report</title>
|
|
438
|
+
<style>
|
|
439
|
+
* { box-sizing: border-box; margin: 0; padding: 0; }
|
|
440
|
+
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background: #0f172a; color: #e2e8f0; line-height: 1.6; padding: 2rem; }
|
|
441
|
+
.container { max-width: 1200px; margin: 0 auto; }
|
|
442
|
+
.header { text-align: center; margin-bottom: 2rem; padding: 2rem; background: #1e293b; border-radius: 12px; }
|
|
443
|
+
.header h1 { font-size: 1.5rem; margin-bottom: 0.5rem; }
|
|
444
|
+
.header .version { color: #94a3b8; font-size: 0.875rem; }
|
|
445
|
+
.summary { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1rem; margin-bottom: 2rem; }
|
|
446
|
+
.summary-card { background: #1e293b; padding: 1.5rem; border-radius: 8px; text-align: center; }
|
|
447
|
+
.summary-card .value { font-size: 2rem; font-weight: bold; }
|
|
448
|
+
.summary-card .label { color: #94a3b8; font-size: 0.875rem; }
|
|
449
|
+
.rating { color: ${ratingColor}; }
|
|
450
|
+
.category { background: #1e293b; border-radius: 8px; margin-bottom: 1rem; overflow: hidden; }
|
|
451
|
+
.category-header { display: flex; align-items: center; gap: 0.75rem; padding: 1rem; font-weight: 600; }
|
|
452
|
+
.category-icon { font-size: 1.25rem; }
|
|
453
|
+
.category-name { flex: 1; }
|
|
454
|
+
.category-score { color: #94a3b8; }
|
|
455
|
+
.progress-bar { height: 4px; background: #334155; }
|
|
456
|
+
.progress-fill { height: 100%; transition: width 0.3s; }
|
|
457
|
+
.controls-table { width: 100%; border-collapse: collapse; font-size: 0.875rem; }
|
|
458
|
+
.controls-table th, .controls-table td { padding: 0.75rem 1rem; text-align: left; border-top: 1px solid #334155; }
|
|
459
|
+
.controls-table th { background: #0f172a; color: #94a3b8; font-weight: 500; }
|
|
460
|
+
.control-row.failed { background: rgba(239, 68, 68, 0.1); }
|
|
461
|
+
.control-row.unverified { opacity: 0.6; }
|
|
462
|
+
.level-badge { padding: 0.125rem 0.5rem; border-radius: 4px; font-size: 0.75rem; font-weight: 600; }
|
|
463
|
+
.level-l1 { background: #7c3aed; color: white; }
|
|
464
|
+
.level-l2 { background: #2563eb; color: white; }
|
|
465
|
+
.level-l3 { background: #059669; color: white; }
|
|
466
|
+
.findings { margin: 0.5rem 0; padding-left: 1.25rem; color: #f87171; }
|
|
467
|
+
.remediation { margin-top: 0.5rem; padding: 0.5rem; background: #334155; border-radius: 4px; font-size: 0.8rem; }
|
|
468
|
+
.footer { text-align: center; margin-top: 2rem; color: #64748b; font-size: 0.875rem; }
|
|
469
|
+
</style>
|
|
470
|
+
</head>
|
|
471
|
+
<body>
|
|
472
|
+
<div class="container">
|
|
473
|
+
<div class="header">
|
|
474
|
+
<h1>📋 ${escapeHtml(result.benchmark)}</h1>
|
|
475
|
+
<div class="version">Version ${result.version} • Generated ${new Date(result.timestamp).toISOString()}</div>
|
|
476
|
+
</div>
|
|
477
|
+
|
|
478
|
+
<div class="summary">
|
|
479
|
+
<div class="summary-card">
|
|
480
|
+
<div class="value rating">${result.rating}</div>
|
|
481
|
+
<div class="label">Rating</div>
|
|
482
|
+
</div>
|
|
483
|
+
<div class="summary-card">
|
|
484
|
+
<div class="value">${result.compliance}%</div>
|
|
485
|
+
<div class="label">Compliance</div>
|
|
486
|
+
</div>
|
|
487
|
+
<div class="summary-card">
|
|
488
|
+
<div class="value">${result.passedControls}/${result.passedControls + result.failedControls}</div>
|
|
489
|
+
<div class="label">Controls Passed</div>
|
|
490
|
+
</div>
|
|
491
|
+
<div class="summary-card">
|
|
492
|
+
<div class="value">Level ${result.level.replace('L', '')}</div>
|
|
493
|
+
<div class="label">${result.level === 'L1' ? 'Essential' : result.level === 'L2' ? 'Standard' : 'Hardened'}</div>
|
|
494
|
+
</div>
|
|
495
|
+
</div>
|
|
496
|
+
|
|
497
|
+
${categoryRows}
|
|
498
|
+
|
|
499
|
+
<div class="footer">
|
|
500
|
+
Generated by <a href="https://hackmyagent.com" style="color: #60a5fa;">HackMyAgent</a> •
|
|
501
|
+
<a href="https://oasb.ai" style="color: #60a5fa;">OASB-1 Specification</a>
|
|
502
|
+
</div>
|
|
503
|
+
</div>
|
|
504
|
+
</body>
|
|
505
|
+
</html>`;
|
|
506
|
+
}
|
|
507
|
+
function escapeHtml(str) {
|
|
508
|
+
return str.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
|
|
509
|
+
}
|
|
510
|
+
// Agent Security Profile (ASP) - our differentiator format
|
|
511
|
+
function generateAspOutput(benchmarkResult, scanResult, targetDir) {
|
|
512
|
+
const fs = require('fs');
|
|
513
|
+
const path = require('path');
|
|
514
|
+
// Try to get agent name from package.json or directory name
|
|
515
|
+
let agentName = path.basename(targetDir);
|
|
516
|
+
let agentVersion = '0.0.0';
|
|
517
|
+
try {
|
|
518
|
+
const pkgPath = path.join(targetDir, 'package.json');
|
|
519
|
+
if (fs.existsSync(pkgPath)) {
|
|
520
|
+
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
|
|
521
|
+
agentName = pkg.name || agentName;
|
|
522
|
+
agentVersion = pkg.version || agentVersion;
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
catch { /* ignore */ }
|
|
526
|
+
// Analyze capabilities from findings
|
|
527
|
+
const capabilities = {};
|
|
528
|
+
const hasFilesystemAccess = scanResult.findings.some(f => f.checkId.includes('FS-') || f.description.toLowerCase().includes('filesystem'));
|
|
529
|
+
const hasNetworkAccess = scanResult.findings.some(f => f.checkId.includes('NET-') || f.description.toLowerCase().includes('network'));
|
|
530
|
+
const hasShellAccess = scanResult.findings.some(f => f.checkId.includes('SHELL-') || f.description.toLowerCase().includes('shell') || f.description.toLowerCase().includes('exec'));
|
|
531
|
+
capabilities['filesystem'] = hasFilesystemAccess ? 'detected' : 'none';
|
|
532
|
+
capabilities['network'] = hasNetworkAccess ? 'detected' : 'none';
|
|
533
|
+
capabilities['shell'] = hasShellAccess ? 'detected' : 'none';
|
|
534
|
+
// Credential hygiene
|
|
535
|
+
const credentialFindings = scanResult.findings.filter(f => f.checkId.startsWith('CRED-'));
|
|
536
|
+
const hardcodedCreds = credentialFindings.filter(f => !f.passed).length;
|
|
537
|
+
// Supply chain status
|
|
538
|
+
const supplyChainFindings = scanResult.findings.filter(f => f.checkId.startsWith('SKILL-') || f.checkId.startsWith('HEARTBEAT-') || f.checkId.startsWith('DEP-'));
|
|
539
|
+
const signedSkills = !supplyChainFindings.some(f => f.checkId === 'SKILL-001' && !f.passed);
|
|
540
|
+
const pinnedDeps = !supplyChainFindings.some(f => f.checkId === 'DEP-001' && !f.passed);
|
|
541
|
+
const asp = {
|
|
542
|
+
specVersion: '1.0.0',
|
|
543
|
+
generatedAt: new Date().toISOString(),
|
|
544
|
+
generator: {
|
|
545
|
+
name: 'HackMyAgent',
|
|
546
|
+
version: hackmyagent_core_1.VERSION,
|
|
547
|
+
url: 'https://hackmyagent.com',
|
|
548
|
+
},
|
|
549
|
+
agent: {
|
|
550
|
+
name: agentName,
|
|
551
|
+
version: agentVersion,
|
|
552
|
+
type: scanResult.projectType,
|
|
553
|
+
path: targetDir,
|
|
554
|
+
},
|
|
555
|
+
securityPosture: {
|
|
556
|
+
benchmark: 'OASB-1',
|
|
557
|
+
benchmarkVersion: benchmarkResult.version,
|
|
558
|
+
level: benchmarkResult.level,
|
|
559
|
+
compliance: benchmarkResult.compliance,
|
|
560
|
+
rating: benchmarkResult.rating,
|
|
561
|
+
l1Compliance: benchmarkResult.l1Compliance,
|
|
562
|
+
l2Compliance: benchmarkResult.l2Compliance,
|
|
563
|
+
l3Compliance: benchmarkResult.l3Compliance,
|
|
564
|
+
},
|
|
565
|
+
capabilities,
|
|
566
|
+
credentials: {
|
|
567
|
+
hardcodedSecrets: hardcodedCreds,
|
|
568
|
+
recommendation: hardcodedCreds > 0 ? 'Move secrets to environment variables or secrets manager' : 'No hardcoded credentials detected',
|
|
569
|
+
},
|
|
570
|
+
supplyChain: {
|
|
571
|
+
signedComponents: signedSkills,
|
|
572
|
+
pinnedDependencies: pinnedDeps,
|
|
573
|
+
issues: supplyChainFindings.filter(f => !f.passed).map(f => ({
|
|
574
|
+
id: f.checkId,
|
|
575
|
+
description: f.description,
|
|
576
|
+
remediation: f.fix,
|
|
577
|
+
})),
|
|
578
|
+
},
|
|
579
|
+
categories: benchmarkResult.categories.map(cat => ({
|
|
580
|
+
name: cat.category,
|
|
581
|
+
compliance: cat.compliance,
|
|
582
|
+
passed: cat.passed,
|
|
583
|
+
failed: cat.failed,
|
|
584
|
+
unverified: cat.unverified,
|
|
585
|
+
})),
|
|
586
|
+
failedControls: benchmarkResult.categories.flatMap(cat => cat.controls.filter(c => c.status === 'failed').map(c => ({
|
|
587
|
+
id: c.controlId,
|
|
588
|
+
name: c.name,
|
|
589
|
+
level: c.level,
|
|
590
|
+
findings: c.findings,
|
|
591
|
+
remediation: c.remediation,
|
|
592
|
+
}))),
|
|
593
|
+
// Attestation placeholder - could be signed in future
|
|
594
|
+
attestation: {
|
|
595
|
+
timestamp: new Date().toISOString(),
|
|
596
|
+
// signature: null, // Future: GPG or Sigstore signature
|
|
597
|
+
},
|
|
598
|
+
};
|
|
599
|
+
return JSON.stringify(asp, null, 2);
|
|
600
|
+
}
|
|
601
|
+
function printBenchmarkReport(result, verbose) {
|
|
602
|
+
const ratingColors = {
|
|
603
|
+
'Certified': colors.green,
|
|
604
|
+
'Compliant': colors.green,
|
|
605
|
+
'Passing': colors.yellow,
|
|
606
|
+
'Needs Improvement': colors.yellow,
|
|
607
|
+
'Failing': colors.red,
|
|
608
|
+
};
|
|
609
|
+
// Header
|
|
610
|
+
console.log(`\n📋 ${result.benchmark} v${result.version}`);
|
|
611
|
+
console.log(`━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n`);
|
|
612
|
+
// Level and rating
|
|
613
|
+
const levelNames = {
|
|
614
|
+
'L1': 'Level 1 - Essential',
|
|
615
|
+
'L2': 'Level 2 - Standard',
|
|
616
|
+
'L3': 'Level 3 - Hardened',
|
|
617
|
+
};
|
|
618
|
+
console.log(`Level: ${levelNames[result.level]}`);
|
|
619
|
+
console.log(`Rating: ${ratingColors[result.rating]}${result.rating}${RESET()}`);
|
|
620
|
+
console.log(`Compliance: ${result.compliance}% (${result.passedControls}/${result.passedControls + result.failedControls} verified controls)`);
|
|
621
|
+
if (result.unverifiedControls > 0) {
|
|
622
|
+
console.log(`Unverified: ${result.unverifiedControls} controls require manual/forward verification`);
|
|
623
|
+
}
|
|
624
|
+
console.log();
|
|
625
|
+
// Category breakdown
|
|
626
|
+
console.log(`Categories:`);
|
|
627
|
+
for (const catResult of result.categories) {
|
|
628
|
+
const statusIcon = catResult.failed === 0 ? '✅' : (catResult.passed > 0 ? '🟡' : '❌');
|
|
629
|
+
console.log(` ${statusIcon} ${catResult.category}: ${catResult.passed}/${catResult.passed + catResult.failed} (${catResult.compliance}%)`);
|
|
630
|
+
// Show failed controls
|
|
631
|
+
if (verbose || catResult.failed > 0) {
|
|
632
|
+
for (const ctrl of catResult.controls) {
|
|
633
|
+
if (ctrl.status === 'failed') {
|
|
634
|
+
console.log(` ❌ ${ctrl.controlId}: ${ctrl.name}`);
|
|
635
|
+
if (verbose) {
|
|
636
|
+
for (const finding of ctrl.findings) {
|
|
637
|
+
console.log(` └─ ${finding}`);
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
}
|
|
641
|
+
else if (verbose && ctrl.status === 'passed') {
|
|
642
|
+
console.log(` ✅ ${ctrl.controlId}: ${ctrl.name}`);
|
|
643
|
+
}
|
|
644
|
+
else if (verbose && ctrl.status === 'unverified') {
|
|
645
|
+
console.log(` ⚪ ${ctrl.controlId}: ${ctrl.name} (manual/forward)`);
|
|
646
|
+
}
|
|
647
|
+
}
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
console.log();
|
|
651
|
+
console.log(`━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━`);
|
|
652
|
+
// Compliance breakdown by level
|
|
653
|
+
if (verbose) {
|
|
654
|
+
console.log(`\nCompliance by level: L1=${result.l1Compliance}% L2=${result.l2Compliance}% L3=${result.l3Compliance}%`);
|
|
655
|
+
console.log(`Legend: ⚪ = Manual/Forward verification required`);
|
|
656
|
+
}
|
|
657
|
+
console.log(`\nRun 'hackmyagent secure --benchmark oasb-1 --level L2' for stricter checks.`);
|
|
658
|
+
console.log(`Spec: https://oasb.ai/oasb-1\n`);
|
|
659
|
+
}
|
|
176
660
|
program
|
|
177
661
|
.command('secure')
|
|
178
662
|
.description(`Scan and harden your agent setup
|
|
179
663
|
|
|
180
|
-
Performs 100 security checks across 24 categories:
|
|
664
|
+
Performs 100+ security checks across 24 categories:
|
|
181
665
|
• Credentials: API key exposure, secrets in configs
|
|
182
666
|
• MCP: Server configs, tool permissions, secrets
|
|
183
667
|
• Network: TLS, interface bindings, CORS
|
|
@@ -185,22 +669,41 @@ Performs 100 security checks across 24 categories:
|
|
|
185
669
|
• Encryption: At-rest encryption, secure hashing
|
|
186
670
|
• And 19 more categories...
|
|
187
671
|
|
|
672
|
+
Benchmark mode (--benchmark oasb-1):
|
|
673
|
+
Run OASB-1 compliance checks with L1/L2/L3 levels.
|
|
674
|
+
L1 = Essential (baseline), L2 = Standard, L3 = Hardened
|
|
675
|
+
|
|
676
|
+
Output formats (--format):
|
|
677
|
+
text Human-readable terminal output (default)
|
|
678
|
+
json Machine-readable JSON
|
|
679
|
+
sarif GitHub Security tab / IDE integration
|
|
680
|
+
html Shareable compliance report
|
|
681
|
+
asp Agent Security Profile (our format)
|
|
682
|
+
|
|
188
683
|
Severities: critical, high, medium, low
|
|
189
|
-
Exit code 1 if critical/high issues found.
|
|
684
|
+
Exit code 1 if critical/high issues found (or non-compliant in benchmark mode).
|
|
190
685
|
|
|
191
686
|
Examples:
|
|
192
|
-
$ hackmyagent secure
|
|
193
|
-
$ hackmyagent secure ./my-project
|
|
194
|
-
$ hackmyagent secure --fix
|
|
195
|
-
$ hackmyagent secure
|
|
196
|
-
$ hackmyagent secure
|
|
197
|
-
$ hackmyagent secure
|
|
687
|
+
$ hackmyagent secure Scan current directory
|
|
688
|
+
$ hackmyagent secure ./my-project Scan specific directory
|
|
689
|
+
$ hackmyagent secure --fix Auto-fix issues
|
|
690
|
+
$ hackmyagent secure -b oasb-1 OASB-1 L1 compliance
|
|
691
|
+
$ hackmyagent secure -b oasb-1 -l L2 OASB-1 L2 compliance
|
|
692
|
+
$ hackmyagent secure -b oasb-1 -f sarif SARIF for GitHub
|
|
693
|
+
$ hackmyagent secure -b oasb-1 -f html -o report.html
|
|
694
|
+
$ hackmyagent secure -b oasb-1 --fail-below 80 CI threshold`)
|
|
198
695
|
.argument('[directory]', 'Directory to scan (defaults to current directory)', '.')
|
|
199
696
|
.option('--fix', 'Automatically fix issues where possible')
|
|
200
697
|
.option('--dry-run', 'Preview fixes without applying them (use with --fix)')
|
|
201
698
|
.option('--ignore <checks>', 'Comma-separated check IDs to skip (e.g., CRED-001,GIT-002)')
|
|
202
|
-
.option('--json', 'Output as JSON (
|
|
699
|
+
.option('--json', 'Output as JSON (deprecated: use --format json)')
|
|
700
|
+
.option('-f, --format <format>', 'Output format: text, json, sarif, html, asp (default: text)', 'text')
|
|
701
|
+
.option('-o, --output <file>', 'Write output to file instead of stdout')
|
|
702
|
+
.option('--fail-below <percent>', 'Exit 1 if compliance below threshold (0-100)')
|
|
203
703
|
.option('-v, --verbose', 'Show all checks including passed ones')
|
|
704
|
+
.option('-b, --benchmark <name>', 'Run benchmark compliance check (e.g., oasb-1)')
|
|
705
|
+
.option('-l, --level <level>', 'Benchmark level: L1 (Essential), L2 (Standard), L3 (Hardened)', 'L1')
|
|
706
|
+
.option('-c, --category <name>', 'Filter to specific benchmark category')
|
|
204
707
|
.action(async (directory, options) => {
|
|
205
708
|
try {
|
|
206
709
|
const targetDir = directory.startsWith('/') ? directory : process.cwd() + '/' + directory;
|
|
@@ -208,11 +711,39 @@ Examples:
|
|
|
208
711
|
const ignoreList = options.ignore
|
|
209
712
|
? options.ignore.split(',').map((s) => s.trim()).filter(Boolean)
|
|
210
713
|
: [];
|
|
211
|
-
if
|
|
212
|
-
|
|
714
|
+
// Validate benchmark flag if provided
|
|
715
|
+
if (options.benchmark && !(0, hackmyagent_core_1.isValidBenchmark)(options.benchmark)) {
|
|
716
|
+
console.error(`Error: Unknown benchmark '${options.benchmark}'. Available: ${hackmyagent_core_1.AVAILABLE_BENCHMARKS.join(', ')}`);
|
|
717
|
+
process.exit(1);
|
|
213
718
|
}
|
|
214
|
-
|
|
215
|
-
|
|
719
|
+
// Validate level if benchmark mode
|
|
720
|
+
const validLevels = ['L1', 'L2', 'L3'];
|
|
721
|
+
const level = (options.level?.toUpperCase() || 'L1');
|
|
722
|
+
if (options.benchmark && !validLevels.includes(level)) {
|
|
723
|
+
console.error(`Error: Invalid level '${options.level}'. Use: L1, L2, or L3`);
|
|
724
|
+
process.exit(1);
|
|
725
|
+
}
|
|
726
|
+
// Determine output format (--json is deprecated alias for --format json)
|
|
727
|
+
const validFormats = ['text', 'json', 'sarif', 'html', 'asp'];
|
|
728
|
+
const format = options.json ? 'json' : (options.format || 'text');
|
|
729
|
+
if (!validFormats.includes(format)) {
|
|
730
|
+
console.error(`Error: Invalid format '${format}'. Use: ${validFormats.join(', ')}`);
|
|
731
|
+
process.exit(1);
|
|
732
|
+
}
|
|
733
|
+
// Parse fail threshold
|
|
734
|
+
const failBelow = options.failBelow ? parseInt(options.failBelow, 10) : undefined;
|
|
735
|
+
if (failBelow !== undefined && (isNaN(failBelow) || failBelow < 0 || failBelow > 100)) {
|
|
736
|
+
console.error(`Error: --fail-below must be a number between 0 and 100`);
|
|
737
|
+
process.exit(1);
|
|
738
|
+
}
|
|
739
|
+
// Only show progress for text output
|
|
740
|
+
if (format === 'text') {
|
|
741
|
+
if (options.dryRun) {
|
|
742
|
+
console.log(`\n🔍 Scanning ${targetDir} (dry-run)...\n`);
|
|
743
|
+
}
|
|
744
|
+
else {
|
|
745
|
+
console.log(`\n🔍 Scanning ${targetDir}...\n`);
|
|
746
|
+
}
|
|
216
747
|
}
|
|
217
748
|
const scanner = new hackmyagent_core_1.HardeningScanner();
|
|
218
749
|
const result = await scanner.scan({
|
|
@@ -221,7 +752,50 @@ Examples:
|
|
|
221
752
|
dryRun: options.dryRun ?? false,
|
|
222
753
|
ignore: ignoreList,
|
|
223
754
|
});
|
|
224
|
-
|
|
755
|
+
// Benchmark mode - output compliance report
|
|
756
|
+
if (options.benchmark) {
|
|
757
|
+
const benchmarkResult = generateBenchmarkReport(result.findings, level, options.category);
|
|
758
|
+
// Output based on format
|
|
759
|
+
let output;
|
|
760
|
+
switch (format) {
|
|
761
|
+
case 'json':
|
|
762
|
+
output = JSON.stringify(benchmarkResult, null, 2);
|
|
763
|
+
break;
|
|
764
|
+
case 'sarif':
|
|
765
|
+
output = generateSarifOutput(benchmarkResult, result.findings, targetDir);
|
|
766
|
+
break;
|
|
767
|
+
case 'html':
|
|
768
|
+
output = generateHtmlReport(benchmarkResult);
|
|
769
|
+
break;
|
|
770
|
+
case 'asp':
|
|
771
|
+
output = generateAspOutput(benchmarkResult, result, targetDir);
|
|
772
|
+
break;
|
|
773
|
+
default: // text
|
|
774
|
+
printBenchmarkReport(benchmarkResult, options.verbose ?? false);
|
|
775
|
+
output = '';
|
|
776
|
+
}
|
|
777
|
+
// Write output
|
|
778
|
+
if (output) {
|
|
779
|
+
if (options.output) {
|
|
780
|
+
require('fs').writeFileSync(options.output, output);
|
|
781
|
+
console.error(`Report written to ${options.output}`);
|
|
782
|
+
}
|
|
783
|
+
else {
|
|
784
|
+
console.log(output);
|
|
785
|
+
}
|
|
786
|
+
}
|
|
787
|
+
// Check fail threshold
|
|
788
|
+
if (failBelow !== undefined && benchmarkResult.compliance < failBelow) {
|
|
789
|
+
console.error(`Compliance ${benchmarkResult.compliance}% is below threshold ${failBelow}%`);
|
|
790
|
+
process.exit(1);
|
|
791
|
+
}
|
|
792
|
+
// Exit with non-zero if failing or needs improvement (default behavior)
|
|
793
|
+
if (failBelow === undefined && (benchmarkResult.rating === 'Failing' || benchmarkResult.rating === 'Needs Improvement')) {
|
|
794
|
+
process.exit(1);
|
|
795
|
+
}
|
|
796
|
+
return;
|
|
797
|
+
}
|
|
798
|
+
if (format === 'json') {
|
|
225
799
|
console.log(JSON.stringify(result, null, 2));
|
|
226
800
|
return;
|
|
227
801
|
}
|
|
@@ -622,5 +1196,250 @@ Examples:
|
|
|
622
1196
|
process.exit(1);
|
|
623
1197
|
}
|
|
624
1198
|
});
|
|
1199
|
+
// Attack command - adversarial security testing
|
|
1200
|
+
const ATTACK_CATEGORY_NAMES = Object.keys(hackmyagent_core_1.ATTACK_CATEGORIES);
|
|
1201
|
+
program
|
|
1202
|
+
.command('attack')
|
|
1203
|
+
.description(`Adversarial security testing for AI agents
|
|
1204
|
+
|
|
1205
|
+
Red team your AI agent with ${hackmyagent_core_1.PAYLOAD_STATS.total} attack payloads across 5 categories:
|
|
1206
|
+
• Prompt Injection: ${hackmyagent_core_1.PAYLOAD_STATS.byCategory['prompt-injection']} payloads
|
|
1207
|
+
• Jailbreaking: ${hackmyagent_core_1.PAYLOAD_STATS.byCategory['jailbreak']} payloads
|
|
1208
|
+
• Data Exfiltration: ${hackmyagent_core_1.PAYLOAD_STATS.byCategory['data-exfiltration']} payloads
|
|
1209
|
+
• Capability Abuse: ${hackmyagent_core_1.PAYLOAD_STATS.byCategory['capability-abuse']} payloads
|
|
1210
|
+
• Context Manipulation: ${hackmyagent_core_1.PAYLOAD_STATS.byCategory['context-manipulation']} payloads
|
|
1211
|
+
|
|
1212
|
+
Intensity levels:
|
|
1213
|
+
passive Observation only, minimal risk
|
|
1214
|
+
active Standard attack payloads (default)
|
|
1215
|
+
aggressive Creative/risky payloads
|
|
1216
|
+
|
|
1217
|
+
Examples:
|
|
1218
|
+
$ hackmyagent attack https://api.example.com/v1/chat
|
|
1219
|
+
$ hackmyagent attack https://api.example.com --intensity aggressive
|
|
1220
|
+
$ hackmyagent attack https://api.example.com --category prompt-injection
|
|
1221
|
+
$ hackmyagent attack --local --system-prompt "You are a helpful assistant"
|
|
1222
|
+
$ hackmyagent attack https://api.example.com -f sarif -o results.sarif`)
|
|
1223
|
+
.argument('[target]', 'API endpoint to test (or use --local for simulation)')
|
|
1224
|
+
.option('-i, --intensity <level>', 'Attack intensity: passive, active, aggressive', 'active')
|
|
1225
|
+
.option('-c, --category <categories>', 'Comma-separated categories to test')
|
|
1226
|
+
.option('--local', 'Run in local simulation mode (no actual API calls)')
|
|
1227
|
+
.option('--api-format <format>', 'API format: openai, anthropic, custom', 'openai')
|
|
1228
|
+
.option('--model <model>', 'Model to test (for API targets)')
|
|
1229
|
+
.option('--system-prompt <prompt>', 'System prompt (for local testing)')
|
|
1230
|
+
.option('-H, --header <headers>', 'Headers in format "Key: Value" (can be used multiple times)')
|
|
1231
|
+
.option('--timeout <ms>', 'Request timeout in milliseconds', '30000')
|
|
1232
|
+
.option('--delay <ms>', 'Delay between requests in milliseconds', '1000')
|
|
1233
|
+
.option('--stop-on-success', 'Stop after first successful attack')
|
|
1234
|
+
.option('-f, --format <format>', 'Output format: text, json, sarif', 'text')
|
|
1235
|
+
.option('-o, --output <file>', 'Write output to file')
|
|
1236
|
+
.option('-v, --verbose', 'Show detailed output for each payload')
|
|
1237
|
+
.action(async (targetUrl, options) => {
|
|
1238
|
+
try {
|
|
1239
|
+
// Validate target
|
|
1240
|
+
if (!targetUrl && !options.local) {
|
|
1241
|
+
console.error('Error: Target URL required (or use --local for simulation)');
|
|
1242
|
+
process.exit(1);
|
|
1243
|
+
}
|
|
1244
|
+
// Validate intensity
|
|
1245
|
+
const validIntensities = ['passive', 'active', 'aggressive'];
|
|
1246
|
+
const intensity = (options.intensity || 'active');
|
|
1247
|
+
if (!validIntensities.includes(intensity)) {
|
|
1248
|
+
console.error(`Error: Invalid intensity '${options.intensity}'. Use: ${validIntensities.join(', ')}`);
|
|
1249
|
+
process.exit(1);
|
|
1250
|
+
}
|
|
1251
|
+
// Parse categories
|
|
1252
|
+
let categories;
|
|
1253
|
+
if (options.category) {
|
|
1254
|
+
categories = options.category.split(',').map(c => c.trim());
|
|
1255
|
+
for (const cat of categories) {
|
|
1256
|
+
if (!ATTACK_CATEGORY_NAMES.includes(cat)) {
|
|
1257
|
+
console.error(`Error: Invalid category '${cat}'. Use: ${ATTACK_CATEGORY_NAMES.join(', ')}`);
|
|
1258
|
+
process.exit(1);
|
|
1259
|
+
}
|
|
1260
|
+
}
|
|
1261
|
+
}
|
|
1262
|
+
// Parse headers
|
|
1263
|
+
const headers = {};
|
|
1264
|
+
if (options.header) {
|
|
1265
|
+
const headerList = Array.isArray(options.header) ? options.header : [options.header];
|
|
1266
|
+
for (const h of headerList) {
|
|
1267
|
+
const [key, ...valueParts] = h.split(':');
|
|
1268
|
+
if (key && valueParts.length > 0) {
|
|
1269
|
+
headers[key.trim()] = valueParts.join(':').trim();
|
|
1270
|
+
}
|
|
1271
|
+
}
|
|
1272
|
+
}
|
|
1273
|
+
// Build target
|
|
1274
|
+
const target = {
|
|
1275
|
+
url: targetUrl || '',
|
|
1276
|
+
type: options.local ? 'local' : 'api',
|
|
1277
|
+
headers: Object.keys(headers).length > 0 ? headers : undefined,
|
|
1278
|
+
apiFormat: (options.apiFormat || 'openai'),
|
|
1279
|
+
model: options.model,
|
|
1280
|
+
systemPrompt: options.systemPrompt,
|
|
1281
|
+
};
|
|
1282
|
+
// Validate format
|
|
1283
|
+
const validFormats = ['text', 'json', 'sarif'];
|
|
1284
|
+
const format = options.format || 'text';
|
|
1285
|
+
if (!validFormats.includes(format)) {
|
|
1286
|
+
console.error(`Error: Invalid format '${format}'. Use: ${validFormats.join(', ')}`);
|
|
1287
|
+
process.exit(1);
|
|
1288
|
+
}
|
|
1289
|
+
// Show header for text output
|
|
1290
|
+
if (format === 'text') {
|
|
1291
|
+
console.log(`\n⚔️ HackMyAgent Attack Mode`);
|
|
1292
|
+
console.log(`━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n`);
|
|
1293
|
+
console.log(`Target: ${target.type === 'local' ? 'Local Simulation' : targetUrl}`);
|
|
1294
|
+
console.log(`Intensity: ${intensity}`);
|
|
1295
|
+
console.log(`Categories: ${categories ? categories.join(', ') : 'all'}`);
|
|
1296
|
+
console.log();
|
|
1297
|
+
}
|
|
1298
|
+
// Run attack
|
|
1299
|
+
const scanner = new hackmyagent_core_1.AttackScanner();
|
|
1300
|
+
const report = await scanner.scan(target, {
|
|
1301
|
+
intensity,
|
|
1302
|
+
categories,
|
|
1303
|
+
timeout: parseInt(options.timeout || '30000', 10),
|
|
1304
|
+
delay: parseInt(options.delay || '1000', 10),
|
|
1305
|
+
stopOnSuccess: options.stopOnSuccess,
|
|
1306
|
+
verbose: options.verbose,
|
|
1307
|
+
});
|
|
1308
|
+
// Output results
|
|
1309
|
+
let output;
|
|
1310
|
+
switch (format) {
|
|
1311
|
+
case 'json':
|
|
1312
|
+
output = JSON.stringify(report, null, 2);
|
|
1313
|
+
break;
|
|
1314
|
+
case 'sarif':
|
|
1315
|
+
output = generateAttackSarif(report);
|
|
1316
|
+
break;
|
|
1317
|
+
default: // text
|
|
1318
|
+
printAttackReport(report, options.verbose ?? false);
|
|
1319
|
+
output = '';
|
|
1320
|
+
}
|
|
1321
|
+
// Write output
|
|
1322
|
+
if (output) {
|
|
1323
|
+
if (options.output) {
|
|
1324
|
+
require('fs').writeFileSync(options.output, output);
|
|
1325
|
+
console.error(`Report written to ${options.output}`);
|
|
1326
|
+
}
|
|
1327
|
+
else {
|
|
1328
|
+
console.log(output);
|
|
1329
|
+
}
|
|
1330
|
+
}
|
|
1331
|
+
// Exit with non-zero if critical/high vulnerabilities found
|
|
1332
|
+
if (report.riskRating === 'critical' || report.riskRating === 'high') {
|
|
1333
|
+
process.exit(1);
|
|
1334
|
+
}
|
|
1335
|
+
}
|
|
1336
|
+
catch (error) {
|
|
1337
|
+
console.error(`Error: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
1338
|
+
process.exit(1);
|
|
1339
|
+
}
|
|
1340
|
+
});
|
|
1341
|
+
// Attack report formatting
|
|
1342
|
+
function printAttackReport(report, verbose) {
|
|
1343
|
+
const riskColors = {
|
|
1344
|
+
'critical': colors.brightRed,
|
|
1345
|
+
'high': colors.red,
|
|
1346
|
+
'medium': colors.yellow,
|
|
1347
|
+
'low': colors.green,
|
|
1348
|
+
'secure': colors.green,
|
|
1349
|
+
};
|
|
1350
|
+
// Summary
|
|
1351
|
+
console.log(`Risk Score: ${riskColors[report.riskRating]}${report.riskScore}/100 (${report.riskRating.toUpperCase()})${RESET()}`);
|
|
1352
|
+
console.log(`Duration: ${report.duration}ms`);
|
|
1353
|
+
console.log();
|
|
1354
|
+
// Attack summary
|
|
1355
|
+
console.log(`Attacks: ${report.summary.total} total | ${colors.red}${report.summary.successful} successful${RESET()} | ${colors.green}${report.summary.blocked} blocked${RESET()} | ${report.summary.inconclusive} inconclusive`);
|
|
1356
|
+
console.log();
|
|
1357
|
+
// Category breakdown
|
|
1358
|
+
console.log(`Categories:`);
|
|
1359
|
+
for (const [cat, stats] of Object.entries(report.summary.byCategory)) {
|
|
1360
|
+
if (stats.total === 0)
|
|
1361
|
+
continue;
|
|
1362
|
+
const catInfo = hackmyagent_core_1.ATTACK_CATEGORIES[cat];
|
|
1363
|
+
const icon = stats.successful > 0 ? '❌' : '✅';
|
|
1364
|
+
console.log(` ${icon} ${catInfo.name}: ${stats.successful}/${stats.total} successful`);
|
|
1365
|
+
}
|
|
1366
|
+
console.log();
|
|
1367
|
+
// Successful attacks
|
|
1368
|
+
const successful = report.results.filter(r => r.success);
|
|
1369
|
+
if (successful.length > 0) {
|
|
1370
|
+
console.log(`${colors.red}Successful Attacks:${RESET()}`);
|
|
1371
|
+
for (const r of successful) {
|
|
1372
|
+
const sevColor = r.payload.severity === 'critical' ? colors.brightRed :
|
|
1373
|
+
r.payload.severity === 'high' ? colors.red :
|
|
1374
|
+
r.payload.severity === 'medium' ? colors.yellow : colors.green;
|
|
1375
|
+
console.log(` ${sevColor}[${r.payload.severity.toUpperCase()}]${RESET()} ${r.payload.id}: ${r.payload.name}`);
|
|
1376
|
+
if (verbose) {
|
|
1377
|
+
console.log(` Evidence: ${r.evidence}`);
|
|
1378
|
+
console.log(` Remediation: ${r.payload.remediation}`);
|
|
1379
|
+
}
|
|
1380
|
+
}
|
|
1381
|
+
console.log();
|
|
1382
|
+
}
|
|
1383
|
+
// Blocked attacks (only in verbose)
|
|
1384
|
+
if (verbose) {
|
|
1385
|
+
const blocked = report.results.filter(r => r.blocked);
|
|
1386
|
+
if (blocked.length > 0) {
|
|
1387
|
+
console.log(`${colors.green}Blocked Attacks (${blocked.length}):${RESET()}`);
|
|
1388
|
+
for (const r of blocked) {
|
|
1389
|
+
console.log(` ✅ ${r.payload.id}: ${r.payload.name}`);
|
|
1390
|
+
}
|
|
1391
|
+
console.log();
|
|
1392
|
+
}
|
|
1393
|
+
}
|
|
1394
|
+
console.log(`━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━`);
|
|
1395
|
+
console.log(`\nUse --verbose for detailed attack results.`);
|
|
1396
|
+
console.log(`Use --intensity aggressive for advanced attacks.\n`);
|
|
1397
|
+
}
|
|
1398
|
+
// Generate SARIF output for attack results
|
|
1399
|
+
function generateAttackSarif(report) {
|
|
1400
|
+
const rules = report.results
|
|
1401
|
+
.filter(r => r.success)
|
|
1402
|
+
.map(r => ({
|
|
1403
|
+
id: r.payload.id,
|
|
1404
|
+
name: r.payload.name.replace(/\s+/g, ''),
|
|
1405
|
+
shortDescription: { text: r.payload.name },
|
|
1406
|
+
fullDescription: { text: r.payload.description },
|
|
1407
|
+
help: { text: r.payload.remediation },
|
|
1408
|
+
helpUri: `https://oasb.ai/attacks/${r.payload.id}`,
|
|
1409
|
+
defaultConfiguration: {
|
|
1410
|
+
level: r.payload.severity === 'critical' || r.payload.severity === 'high' ? 'error' :
|
|
1411
|
+
r.payload.severity === 'medium' ? 'warning' : 'note',
|
|
1412
|
+
},
|
|
1413
|
+
properties: {
|
|
1414
|
+
'security-severity': r.payload.severity === 'critical' ? '9.0' :
|
|
1415
|
+
r.payload.severity === 'high' ? '7.0' :
|
|
1416
|
+
r.payload.severity === 'medium' ? '5.0' : '3.0',
|
|
1417
|
+
tags: ['security', 'ai-agent', r.payload.category],
|
|
1418
|
+
},
|
|
1419
|
+
}));
|
|
1420
|
+
const results = report.results
|
|
1421
|
+
.filter(r => r.success)
|
|
1422
|
+
.map(r => ({
|
|
1423
|
+
ruleId: r.payload.id,
|
|
1424
|
+
level: r.payload.severity === 'critical' || r.payload.severity === 'high' ? 'error' :
|
|
1425
|
+
r.payload.severity === 'medium' ? 'warning' : 'note',
|
|
1426
|
+
message: { text: `${r.payload.name}: ${r.evidence}` },
|
|
1427
|
+
}));
|
|
1428
|
+
return JSON.stringify({
|
|
1429
|
+
$schema: 'https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json',
|
|
1430
|
+
version: '2.1.0',
|
|
1431
|
+
runs: [{
|
|
1432
|
+
tool: {
|
|
1433
|
+
driver: {
|
|
1434
|
+
name: 'HackMyAgent',
|
|
1435
|
+
version: hackmyagent_core_1.VERSION,
|
|
1436
|
+
informationUri: 'https://hackmyagent.com',
|
|
1437
|
+
rules,
|
|
1438
|
+
},
|
|
1439
|
+
},
|
|
1440
|
+
results,
|
|
1441
|
+
}],
|
|
1442
|
+
}, null, 2);
|
|
1443
|
+
}
|
|
625
1444
|
program.parse();
|
|
626
1445
|
//# 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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hackmyagent",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Security toolkit for AI agents - verify skills, harden setups, scan for exposures",
|
|
5
5
|
"bin": {
|
|
6
6
|
"hackmyagent": "dist/index.js"
|
|
@@ -13,11 +13,12 @@
|
|
|
13
13
|
"scripts": {
|
|
14
14
|
"build": "tsc",
|
|
15
15
|
"test": "echo 'No CLI tests yet'",
|
|
16
|
-
"lint": "eslint src --ext .ts"
|
|
16
|
+
"lint": "eslint src --ext .ts",
|
|
17
|
+
"prepublishOnly": "cp ../../README.md ./README.md"
|
|
17
18
|
},
|
|
18
19
|
"dependencies": {
|
|
19
20
|
"commander": "^12.0.0",
|
|
20
|
-
"hackmyagent-core": "^0.
|
|
21
|
+
"hackmyagent-core": "^0.3.0"
|
|
21
22
|
},
|
|
22
23
|
"devDependencies": {
|
|
23
24
|
"typescript": "^5.3.3"
|