erosolar-cli 2.1.195 → 2.1.196

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/README.md +14 -0
  2. package/dist/contracts/agent-schemas.json +0 -21
  3. package/dist/contracts/tools.schema.json +0 -16
  4. package/dist/core/agentOrchestrator.d.ts +14 -18
  5. package/dist/core/agentOrchestrator.d.ts.map +1 -1
  6. package/dist/core/agentOrchestrator.js +120 -175
  7. package/dist/core/agentOrchestrator.js.map +1 -1
  8. package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -1
  9. package/dist/plugins/tools/nodeDefaults.js +0 -4
  10. package/dist/plugins/tools/nodeDefaults.js.map +1 -1
  11. package/dist/shell/interactiveShell.d.ts +0 -8
  12. package/dist/shell/interactiveShell.d.ts.map +1 -1
  13. package/dist/shell/interactiveShell.js +53 -285
  14. package/dist/shell/interactiveShell.js.map +1 -1
  15. package/package.json +1 -1
  16. package/agents/erosolar-security.rules.json +0 -147
  17. package/dist/capabilities/offsecOpsCapability.d.ts +0 -6
  18. package/dist/capabilities/offsecOpsCapability.d.ts.map +0 -1
  19. package/dist/capabilities/offsecOpsCapability.js +0 -19
  20. package/dist/capabilities/offsecOpsCapability.js.map +0 -1
  21. package/dist/capabilities/offsecSearchCapability.d.ts +0 -12
  22. package/dist/capabilities/offsecSearchCapability.d.ts.map +0 -1
  23. package/dist/capabilities/offsecSearchCapability.js +0 -27
  24. package/dist/capabilities/offsecSearchCapability.js.map +0 -1
  25. package/dist/core/offsecAlphaZero.d.ts +0 -59
  26. package/dist/core/offsecAlphaZero.d.ts.map +0 -1
  27. package/dist/core/offsecAlphaZero.js +0 -556
  28. package/dist/core/offsecAlphaZero.js.map +0 -1
  29. package/dist/plugins/tools/offsec/offsecOpsPlugin.d.ts +0 -3
  30. package/dist/plugins/tools/offsec/offsecOpsPlugin.d.ts.map +0 -1
  31. package/dist/plugins/tools/offsec/offsecOpsPlugin.js +0 -10
  32. package/dist/plugins/tools/offsec/offsecOpsPlugin.js.map +0 -1
  33. package/dist/plugins/tools/offsec/offsecSearchPlugin.d.ts +0 -3
  34. package/dist/plugins/tools/offsec/offsecSearchPlugin.d.ts.map +0 -1
  35. package/dist/plugins/tools/offsec/offsecSearchPlugin.js +0 -12
  36. package/dist/plugins/tools/offsec/offsecSearchPlugin.js.map +0 -1
  37. package/dist/tools/offsec/offsecOperationsTools.d.ts +0 -3
  38. package/dist/tools/offsec/offsecOperationsTools.d.ts.map +0 -1
  39. package/dist/tools/offsec/offsecOperationsTools.js +0 -333
  40. package/dist/tools/offsec/offsecOperationsTools.js.map +0 -1
  41. package/dist/tools/offsecSearchTools.d.ts +0 -3
  42. package/dist/tools/offsecSearchTools.d.ts.map +0 -1
  43. package/dist/tools/offsecSearchTools.js +0 -330
  44. package/dist/tools/offsecSearchTools.js.map +0 -1
@@ -1,556 +0,0 @@
1
- /**
2
- * AlphaZero-style offensive security coordinator.
3
- *
4
- * Provides a lightweight Monte Carlo style scorer over an action tree so
5
- * runs can be started, resumed, and updated with outcomes (success/fail/detected).
6
- * The goal is to keep a "sensible" frontier of next actions, reward progress,
7
- * and persist state so a long red-team style engagement can be paused/resumed.
8
- */
9
- import { existsSync, mkdirSync, readFileSync, writeFileSync, readdirSync } from 'node:fs';
10
- import { join } from 'node:path';
11
- import { homedir } from 'node:os';
12
- const OFFSEC_DIR = join(homedir(), '.erosolar', 'offsec');
13
- const RUN_DIR = join(OFFSEC_DIR, 'runs');
14
- const LATEST_FILE = join(OFFSEC_DIR, 'latest.json');
15
- const BASE_ACTIONS = [
16
- {
17
- label: 'Recon: top port scan',
18
- category: 'recon',
19
- command: 'nmap -sV -Pn --top-ports 100 {target}',
20
- rationale: 'Map exposed services and versions to build the attack surface.',
21
- prior: 0.38,
22
- detectionRisk: 0.22,
23
- cost: 0.18,
24
- },
25
- {
26
- label: 'Recon: full TCP sweep (fast)',
27
- category: 'recon',
28
- command: 'nmap -sS -Pn -T4 -p- {target}',
29
- rationale: 'Catch non-standard ports that hide bespoke services.',
30
- prior: 0.24,
31
- detectionRisk: 0.32,
32
- cost: 0.32,
33
- },
34
- {
35
- label: 'Web: enumerate directories',
36
- category: 'web',
37
- command: 'dirsearch -u {url} -x 403,404,500 --plain-text-report=dirs.txt',
38
- rationale: 'Find hidden panels, backups, and dev endpoints to pivot.',
39
- prior: 0.32,
40
- detectionRisk: 0.16,
41
- cost: 0.22,
42
- },
43
- {
44
- label: 'Web: parameter fuzz (quick)',
45
- category: 'web',
46
- command: 'ffuf -u "{url}?FUZZ=1" -w params.txt -mc 200,302,500',
47
- rationale: 'Surface injectable parameters for SQLi/RCE chains.',
48
- prior: 0.28,
49
- detectionRisk: 0.28,
50
- cost: 0.3,
51
- },
52
- {
53
- label: 'Creds: check common leaks',
54
- category: 'creds',
55
- command: 'Probe /.git, /.env, /backup.zip, /.DS_Store, /swagger.json',
56
- rationale: 'Low-noise checks for credential or API leaks.',
57
- prior: 0.18,
58
- detectionRisk: 0.08,
59
- cost: 0.08,
60
- },
61
- {
62
- label: 'Payload: generic command injection',
63
- category: 'payload',
64
- command: 'Test ;|&& payloads on parameters that reflect output (use harmless `id`)',
65
- rationale: 'Quickly validate command execution without burning stealth budget.',
66
- prior: 0.22,
67
- detectionRisk: 0.34,
68
- cost: 0.18,
69
- },
70
- {
71
- label: 'Cloud: metadata reachability',
72
- category: 'cloud',
73
- command: 'curl -i http://169.254.169.254/latest/meta-data/ --max-time 2',
74
- rationale: 'Detect cloud metadata exposure for token/role theft.',
75
- prior: 0.12,
76
- detectionRisk: 0.12,
77
- cost: 0.08,
78
- },
79
- {
80
- label: 'Creds: password spray (low/slow)',
81
- category: 'creds',
82
- command: 'hydra -L users.txt -p Winter2024! ssh://{target} -t 2 -W 3',
83
- rationale: 'Gentle password spray to harvest weak creds without noisy lockouts.',
84
- prior: 0.16,
85
- detectionRisk: 0.28,
86
- cost: 0.26,
87
- },
88
- ];
89
- const FOLLOW_ON = {
90
- recon: [
91
- {
92
- label: 'Service exploit match',
93
- category: 'payload',
94
- command: 'Match versions to public exploits/CVEs and craft safe POC',
95
- rationale: 'Convert recon data into targeted exploit attempts.',
96
- prior: 0.34,
97
- detectionRisk: 0.28,
98
- cost: 0.26,
99
- },
100
- {
101
- label: 'Web tech fingerprint',
102
- category: 'web',
103
- command: 'whatweb -v {url} && nuclei -u {url} -severity medium,high,critical',
104
- rationale: 'Template-based probes for known web vulns on detected stack.',
105
- prior: 0.28,
106
- detectionRisk: 0.24,
107
- cost: 0.22,
108
- },
109
- {
110
- label: 'SMB/WinRM/LDAP enumeration',
111
- category: 'lateral',
112
- command: 'enum4linux-ng -A {target} || crackmapexec smb {target}',
113
- rationale: 'Find lateral movement primitives and domain data.',
114
- prior: 0.22,
115
- detectionRisk: 0.3,
116
- cost: 0.28,
117
- },
118
- ],
119
- web: [
120
- {
121
- label: 'SQLi exploration',
122
- category: 'payload',
123
- command: 'sqlmap -u "{url}?vuln=1" --batch --risk=1 --level=2 --identify-waf',
124
- rationale: 'Automate injectable params with WAF-aware SQLi tests.',
125
- prior: 0.26,
126
- detectionRisk: 0.32,
127
- cost: 0.34,
128
- },
129
- {
130
- label: 'Auth and session abuse',
131
- category: 'creds',
132
- command: 'Check cookies for JWT flaws, weak signing keys, or predictable session IDs',
133
- rationale: 'Leverage weak session/auth to escalate without loud payloads.',
134
- prior: 0.18,
135
- detectionRisk: 0.12,
136
- cost: 0.16,
137
- },
138
- {
139
- label: 'File upload probing',
140
- category: 'payload',
141
- command: 'Test file upload endpoints with polyglot/webshell payloads (non-exec first)',
142
- rationale: 'Find RCE via upload paths while measuring filtering.',
143
- prior: 0.2,
144
- detectionRisk: 0.3,
145
- cost: 0.26,
146
- },
147
- ],
148
- creds: [
149
- {
150
- label: 'Reuse creds for lateral move',
151
- category: 'lateral',
152
- command: 'Attempt SSH/SMB/WinRM reuse on discovered hosts with leak creds',
153
- rationale: 'Turn leaked secrets into pivots across the environment.',
154
- prior: 0.24,
155
- detectionRisk: 0.26,
156
- cost: 0.22,
157
- },
158
- {
159
- label: 'Credential stuffing to web login',
160
- category: 'web',
161
- command: 'Use leaked credentials against web login with lockout-aware pacing',
162
- rationale: 'Leverage stolen creds for authenticated surface.',
163
- prior: 0.21,
164
- detectionRisk: 0.22,
165
- cost: 0.18,
166
- },
167
- ],
168
- payload: [
169
- {
170
- label: 'Establish stable shell',
171
- category: 'privilege',
172
- command: 'Upgrade to a PTY and drop simple egress-safe beacon',
173
- rationale: 'Stabilize execution channel for post-exploitation steps.',
174
- prior: 0.2,
175
- detectionRisk: 0.34,
176
- cost: 0.28,
177
- },
178
- ],
179
- lateral: [
180
- {
181
- label: 'Privilege escalation checklist',
182
- category: 'privilege',
183
- command: 'Enumerate sudo, kernel, containers, and scheduled tasks for privesc',
184
- rationale: 'Turn lateral footholds into higher-privilege execution.',
185
- prior: 0.22,
186
- detectionRisk: 0.28,
187
- cost: 0.24,
188
- },
189
- ],
190
- privilege: [
191
- {
192
- label: 'Objective validation',
193
- category: 'payload',
194
- command: 'Access target data/flag and exfiltrate proof with minimal footprint',
195
- rationale: 'Complete the mission objective once privileges are high enough.',
196
- prior: 0.3,
197
- detectionRisk: 0.18,
198
- cost: 0.2,
199
- },
200
- ],
201
- cloud: [
202
- {
203
- label: 'Assume role / token exchange',
204
- category: 'lateral',
205
- command: 'Use harvested metadata tokens to list IAM roles and attempt sts:AssumeRole',
206
- rationale: 'Move from instance to control plane with compromised identities.',
207
- prior: 0.2,
208
- detectionRisk: 0.18,
209
- cost: 0.2,
210
- },
211
- ],
212
- };
213
- function ensureDirs() {
214
- if (!existsSync(OFFSEC_DIR))
215
- mkdirSync(OFFSEC_DIR, { recursive: true });
216
- if (!existsSync(RUN_DIR))
217
- mkdirSync(RUN_DIR, { recursive: true });
218
- }
219
- function runFile(runId) {
220
- return join(RUN_DIR, `${runId}.json`);
221
- }
222
- function persistRun(run) {
223
- ensureDirs();
224
- run.updatedAt = new Date().toISOString();
225
- writeFileSync(runFile(run.id), JSON.stringify(run, null, 2));
226
- writeFileSync(LATEST_FILE, JSON.stringify({ lastRunId: run.id }, null, 2));
227
- }
228
- function loadRun(runId) {
229
- try {
230
- const file = runFile(runId);
231
- if (!existsSync(file))
232
- return null;
233
- const raw = readFileSync(file, 'utf-8');
234
- return JSON.parse(raw);
235
- }
236
- catch {
237
- return null;
238
- }
239
- }
240
- function loadLatestRunId() {
241
- try {
242
- if (!existsSync(LATEST_FILE))
243
- return null;
244
- const { lastRunId } = JSON.parse(readFileSync(LATEST_FILE, 'utf-8'));
245
- return lastRunId ?? null;
246
- }
247
- catch {
248
- return null;
249
- }
250
- }
251
- function primaryTarget(scope) {
252
- const target = scope[0]?.trim() || '<target>';
253
- const urlLike = scope.find((s) => s.startsWith('http://') || s.startsWith('https://'));
254
- return { target, url: urlLike ?? `http://${target}` };
255
- }
256
- function clamp01(value) {
257
- if (!Number.isFinite(value))
258
- return 0;
259
- return Math.min(1, Math.max(0, value));
260
- }
261
- function createNode(template, run, parentId) {
262
- const { target, url } = primaryTarget(run.scope);
263
- const id = `a${run.nextCounter++}`;
264
- const command = template.command
265
- .replace(/\{target\}/g, target)
266
- .replace(/\{url\}/g, url);
267
- const node = {
268
- id,
269
- label: template.label,
270
- category: template.category,
271
- command,
272
- rationale: template.rationale,
273
- prior: template.prior,
274
- successPrior: template.prior,
275
- detectionRisk: clamp01(template.detectionRisk),
276
- cost: clamp01(template.cost),
277
- parentId,
278
- children: [],
279
- visits: 0,
280
- valueSum: 0,
281
- status: 'pending',
282
- };
283
- run.nodes[id] = node;
284
- if (parentId) {
285
- const parent = run.nodes[parentId];
286
- if (parent) {
287
- parent.children.push(id);
288
- }
289
- }
290
- return node;
291
- }
292
- function ensureNodeDefaults(node) {
293
- if (!Number.isFinite(node.successPrior)) {
294
- node.successPrior = node.prior;
295
- }
296
- if (!Number.isFinite(node.detectionRisk)) {
297
- node.detectionRisk = 0.2;
298
- }
299
- else {
300
- node.detectionRisk = clamp01(node.detectionRisk);
301
- }
302
- if (!Number.isFinite(node.cost)) {
303
- node.cost = 0.2;
304
- }
305
- else {
306
- node.cost = clamp01(node.cost);
307
- }
308
- return node;
309
- }
310
- function normalizeRun(run) {
311
- Object.values(run.nodes).forEach((node) => ensureNodeDefaults(node));
312
- }
313
- function seedBaseActions(run) {
314
- for (const template of BASE_ACTIONS) {
315
- createNode(template, run, run.rootId);
316
- }
317
- }
318
- function expandFollowOn(run, parent) {
319
- const templates = FOLLOW_ON[parent.category] ?? [];
320
- for (const template of templates) {
321
- // Avoid duplicate labels under the same parent
322
- const hasDuplicate = parent.children
323
- .map((id) => run.nodes[id])
324
- .some((child) => child?.label === template.label);
325
- if (!hasDuplicate) {
326
- createNode(template, run, parent.id);
327
- }
328
- }
329
- }
330
- function expectedValue(node) {
331
- // Reward more likely wins, penalize noisy/high-cost actions
332
- return node.successPrior - node.detectionRisk * 0.7 - node.cost * 0.3;
333
- }
334
- function ucbScore(node, totalVisits) {
335
- const mean = node.visits > 0 ? node.valueSum / node.visits : expectedValue(node);
336
- const explore = Math.sqrt(Math.log(totalVisits + 1) / (node.visits + 1));
337
- const priorBoost = node.prior * 0.6;
338
- const stealthPenalty = node.detectionRisk * 0.3 + node.cost * 0.1;
339
- return mean + priorBoost + 0.6 * explore - stealthPenalty;
340
- }
341
- function buildPath(run, node) {
342
- const path = [];
343
- let current = node;
344
- while (current) {
345
- path.unshift(current.label);
346
- current = current.parentId ? run.nodes[current.parentId] : undefined;
347
- }
348
- return path;
349
- }
350
- function runOffsecPlanner(run, simulations = 60, maxDepth = 4) {
351
- const root = run.nodes[run.rootId];
352
- if (!root)
353
- return;
354
- for (let i = 0; i < simulations; i++) {
355
- const path = [root];
356
- let current = root;
357
- let depth = 0;
358
- while (current && depth < maxDepth) {
359
- const children = current.children
360
- .map((id) => run.nodes[id])
361
- .filter((n) => Boolean(n))
362
- .filter((n) => n.status === 'pending');
363
- if (!children.length) {
364
- expandFollowOn(run, current);
365
- }
366
- const nextCandidates = current.children
367
- .map((id) => run.nodes[id])
368
- .filter((n) => Boolean(n))
369
- .filter((n) => n.status === 'pending');
370
- if (!nextCandidates.length) {
371
- break;
372
- }
373
- const totalVisits = nextCandidates.reduce((sum, n) => sum + (n.visits || 0), 0) + 1;
374
- nextCandidates.sort((a, b) => ucbScore(b, totalVisits) - ucbScore(a, totalVisits));
375
- current = nextCandidates[0];
376
- if (!current) {
377
- break;
378
- }
379
- path.push(current);
380
- depth += 1;
381
- }
382
- const leaf = path[path.length - 1];
383
- if (!leaf) {
384
- continue;
385
- }
386
- const reward = expectedValue(leaf) + 0.05; // small optimism to keep exploring
387
- for (const node of path) {
388
- node.visits += 1;
389
- node.valueSum += reward;
390
- }
391
- }
392
- }
393
- function getNextActionsFromRun(run, count) {
394
- normalizeRun(run);
395
- runOffsecPlanner(run);
396
- const candidates = Object.values(run.nodes).filter((n) => n.status === 'pending');
397
- const totalVisits = candidates.reduce((sum, n) => sum + (n.visits || 0), 0) + 1;
398
- const scored = candidates.map((node) => ({
399
- node,
400
- score: ucbScore(node, totalVisits),
401
- }));
402
- scored.sort((a, b) => b.score - a.score);
403
- const suggestions = scored.slice(0, count).map(({ node, score }) => ({
404
- id: node.id,
405
- label: node.label,
406
- category: node.category,
407
- command: node.command,
408
- rationale: node.rationale,
409
- score: Math.round(score * 100) / 100,
410
- path: buildPath(run, node),
411
- status: node.status,
412
- }));
413
- persistRun(run);
414
- return suggestions;
415
- }
416
- export function startOffsecRun(objective, scope = []) {
417
- const now = new Date().toISOString();
418
- const run = {
419
- id: `offsec-${Date.now()}`,
420
- objective: objective.trim(),
421
- scope: scope.map((s) => s.trim()).filter(Boolean),
422
- rootId: 'root',
423
- nodes: {},
424
- createdAt: now,
425
- updatedAt: now,
426
- nextCounter: 1,
427
- };
428
- run.nodes[run.rootId] = {
429
- id: run.rootId,
430
- label: 'start',
431
- category: 'recon',
432
- command: '',
433
- rationale: 'Root of the search tree.',
434
- prior: 1,
435
- successPrior: 1,
436
- detectionRisk: 0,
437
- cost: 0,
438
- parentId: null,
439
- children: [],
440
- visits: 1,
441
- valueSum: 0,
442
- status: 'pending',
443
- };
444
- seedBaseActions(run);
445
- normalizeRun(run);
446
- persistRun(run);
447
- return run;
448
- }
449
- export function resumeOffsecRun(runId) {
450
- const targetId = runId ?? loadLatestRunId();
451
- if (!targetId)
452
- return null;
453
- const run = loadRun(targetId);
454
- if (!run)
455
- return null;
456
- normalizeRun(run);
457
- persistRun(run);
458
- return run;
459
- }
460
- export function listOffsecRuns() {
461
- ensureDirs();
462
- const entries = [];
463
- if (existsSync(RUN_DIR)) {
464
- for (const file of readdirSync(RUN_DIR)) {
465
- if (!file.endsWith('.json'))
466
- continue;
467
- const id = file.replace(/\.json$/, '');
468
- const run = loadRun(id);
469
- if (run) {
470
- entries.push({ id, objective: run.objective, updatedAt: run.updatedAt });
471
- }
472
- }
473
- }
474
- return entries.sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));
475
- }
476
- export function recordOffsecOutcome(runId, actionId, outcome, note) {
477
- const run = loadRun(runId);
478
- if (!run)
479
- return null;
480
- normalizeRun(run);
481
- const node = run.nodes[actionId];
482
- if (!node)
483
- return null;
484
- const reward = outcome === 'success' ? 1 : outcome === 'detected' ? -0.6 : -0.2;
485
- node.status = outcome === 'success' ? 'succeeded' : outcome === 'detected' ? 'detected' : 'failed';
486
- node.visits += 1;
487
- node.valueSum += reward;
488
- node.note = note?.trim() || node.note;
489
- // Propagate reward up the tree (decays each level)
490
- let currentId = node.parentId;
491
- let decay = 0.6;
492
- while (currentId) {
493
- const parent = run.nodes[currentId];
494
- if (!parent)
495
- break;
496
- parent.visits += 1;
497
- parent.valueSum += reward * decay;
498
- currentId = parent.parentId;
499
- decay *= 0.5;
500
- }
501
- if (outcome === 'success') {
502
- expandFollowOn(run, node);
503
- }
504
- persistRun(run);
505
- return run;
506
- }
507
- export function getOffsecNextActions(runId, count = 3) {
508
- const run = loadRun(runId);
509
- if (!run)
510
- return [];
511
- normalizeRun(run);
512
- return getNextActionsFromRun(run, count);
513
- }
514
- export function simulateOffsecRollout(runId, steps = 5) {
515
- const run = loadRun(runId);
516
- if (!run)
517
- return [];
518
- normalizeRun(run);
519
- const plan = [];
520
- for (let i = 0; i < steps; i++) {
521
- const next = getNextActionsFromRun(run, 1)[0];
522
- if (!next)
523
- break;
524
- plan.push(next);
525
- // Virtual visit to bias tree without marking success/failure
526
- const node = run.nodes[next.id];
527
- if (node) {
528
- node.visits += 1;
529
- node.valueSum += 0.05;
530
- }
531
- }
532
- persistRun(run);
533
- return plan;
534
- }
535
- export function formatOffsecStatus(run, next = []) {
536
- const successes = Object.values(run.nodes).filter((n) => n.status === 'succeeded').length;
537
- const failures = Object.values(run.nodes).filter((n) => n.status === 'failed').length;
538
- const detected = Object.values(run.nodes).filter((n) => n.status === 'detected').length;
539
- const pending = Object.values(run.nodes).filter((n) => n.status === 'pending').length;
540
- const lines = [];
541
- lines.push(`Offsec AlphaZero run: ${run.id}`);
542
- lines.push(`Objective: ${run.objective}`);
543
- lines.push(`Scope: ${run.scope.length > 0 ? run.scope.join(', ') : '<unset>'}`);
544
- lines.push(`Progress: ${successes} success | ${failures} fail | ${detected} detected | ${pending} pending`);
545
- lines.push(`Updated: ${run.updatedAt}`);
546
- if (next.length > 0) {
547
- lines.push('');
548
- lines.push('Next actions:');
549
- for (const action of next) {
550
- lines.push(` [${action.id}] ${action.label} (${action.category}) score=${action.score}`);
551
- lines.push(` cmd: ${action.command}`);
552
- }
553
- }
554
- return lines.join('\n');
555
- }
556
- //# sourceMappingURL=offsecAlphaZero.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"offsecAlphaZero.js","sourceRoot":"","sources":["../../src/core/offsecAlphaZero.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { ToolPlugin } from '../registry.js';
2
- export declare function createOffsecOperationsToolPlugin(): ToolPlugin;
3
- //# sourceMappingURL=offsecOpsPlugin.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"offsecOpsPlugin.d.ts","sourceRoot":"","sources":["../../../../src/plugins/tools/offsec/offsecOpsPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAqB,MAAM,gBAAgB,CAAC;AAGpE,wBAAgB,gCAAgC,IAAI,UAAU,CAO7D"}
@@ -1,10 +0,0 @@
1
- import { OffsecOperationsCapabilityModule } from '../../../capabilities/offsecOpsCapability.js';
2
- export function createOffsecOperationsToolPlugin() {
3
- return {
4
- id: 'tool.offsec.operations',
5
- description: 'Offensive security operations (nmap, dirbust, sqlmap, cracking, payload generation).',
6
- targets: ['node'],
7
- create: async (_context) => new OffsecOperationsCapabilityModule(),
8
- };
9
- }
10
- //# sourceMappingURL=offsecOpsPlugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"offsecOpsPlugin.js","sourceRoot":"","sources":["../../../../src/plugins/tools/offsec/offsecOpsPlugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gCAAgC,EAAE,MAAM,8CAA8C,CAAC;AAEhG,MAAM,UAAU,gCAAgC;IAC9C,OAAO;QACL,EAAE,EAAE,wBAAwB;QAC5B,WAAW,EAAE,sFAAsF;QACnG,OAAO,EAAE,CAAC,MAAM,CAAC;QACjB,MAAM,EAAE,KAAK,EAAE,QAA2B,EAAE,EAAE,CAAC,IAAI,gCAAgC,EAAE;KACtF,CAAC;AACJ,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { ToolPlugin } from '../registry.js';
2
- export declare function createOffsecSearchToolPlugin(): ToolPlugin;
3
- //# sourceMappingURL=offsecSearchPlugin.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"offsecSearchPlugin.d.ts","sourceRoot":"","sources":["../../../../src/plugins/tools/offsec/offsecSearchPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjD,wBAAgB,4BAA4B,IAAI,UAAU,CASzD"}
@@ -1,12 +0,0 @@
1
- import { OffsecSearchCapabilityModule } from '../../../capabilities/offsecSearchCapability.js';
2
- export function createOffsecSearchToolPlugin() {
3
- return {
4
- id: 'tool.offsec.exploit-search',
5
- description: 'Attack-graph search and payload scheduling helpers (offline, planning-only).',
6
- targets: ['node', 'cloud'],
7
- create: (context) => {
8
- return new OffsecSearchCapabilityModule();
9
- },
10
- };
11
- }
12
- //# sourceMappingURL=offsecSearchPlugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"offsecSearchPlugin.js","sourceRoot":"","sources":["../../../../src/plugins/tools/offsec/offsecSearchPlugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,iDAAiD,CAAC;AAE/F,MAAM,UAAU,4BAA4B;IAC1C,OAAO;QACL,EAAE,EAAE,4BAA4B;QAChC,WAAW,EAAE,8EAA8E;QAC3F,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;QAC1B,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE;YAClB,OAAO,IAAI,4BAA4B,EAAE,CAAC;QAC5C,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { ToolDefinition } from '../../core/toolRuntime.js';
2
- export declare function createOffsecOperationsTools(): ToolDefinition[];
3
- //# sourceMappingURL=offsecOperationsTools.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"offsecOperationsTools.d.ts","sourceRoot":"","sources":["../../../src/tools/offsec/offsecOperationsTools.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAOhE,wBAAgB,2BAA2B,IAAI,cAAc,EAAE,CA4N9D"}