@pensar/apex 2.2.0 → 2.3.0-canary.3f6d2a2b
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/build/{agent-yayy5x2a.js → agent-2h0w8eta.js} +7 -7
- package/build/agent-95qsypnq.js +19 -0
- package/build/{agent-q5hwjdtb.js → agent-rktf0v3c.js} +9 -9
- package/build/{apps-0es69e2s.js → apps-rehs72t3.js} +17 -17
- package/build/{auth-q73k9bh9.js → auth-h5bjv1dp.js} +51 -40
- package/build/authentication-zqkagnvm.js +19 -0
- package/build/blackboxAgent-b799jbpa.js +19 -0
- package/build/{blackboxPentest-h28nykk5.js → blackboxPentest-gszetqnq.js} +14 -14
- package/build/{cli-s43t5ay0.js → cli-06fq5zym.js} +1 -1
- package/build/{cli-51dkmt5p.js → cli-0qybv29g.js} +1 -1
- package/build/{cli-1cf5vy5m.js → cli-2m8y1rkp.js} +60 -162
- package/build/{cli-6kx46ck0.js → cli-2q3kvbwv.js} +228 -39
- package/build/{cli-1f636vzd.js → cli-3e0jb8k6.js} +1 -1
- package/build/{cli-ptzy9ak5.js → cli-3r7xgtqj.js} +1 -1
- package/build/{cli-xpn9tsw0.js → cli-41h8gh1v.js} +34 -9
- package/build/{cli-1re2kv5v.js → cli-5asc7364.js} +3 -3
- package/build/{cli-knqx15w6.js → cli-7d3h16fw.js} +2 -2
- package/build/{cli-tz9yg4ew.js → cli-abm5bgap.js} +24 -8
- package/build/{cli-4tc6888c.js → cli-dth5et2y.js} +51 -2
- package/build/{cli-7n43wz82.js → cli-khyery65.js} +5 -2
- package/build/{cli-xbdn034b.js → cli-mb680jb3.js} +4517 -120
- package/build/{cli-vgg6h2ax.js → cli-pvf8tyr2.js} +1 -1
- package/build/{cli-7e5ad5js.js → cli-qs2mveb2.js} +2 -2
- package/build/{cli-n114n8mk.js → cli-s8z1mkv5.js} +2 -2
- package/build/{cli-2jn8104w.js → cli-xkv494x1.js} +2 -2
- package/build/{cli-yz80qkzn.js → cli-ycj65kyw.js} +6 -0
- package/build/cli.js +42 -36
- package/build/{config-xcf7rc6x.js → config-hawgse8e.js} +3 -3
- package/build/{doctor-98zperf9.js → doctor-t305mq12.js} +7 -6
- package/build/{fastStrike-9tm6bedh.js → fastStrike-mk0gxtkm.js} +34 -14
- package/build/{fixes-1dry8j61.js → fixes-gxn4cmte.js} +16 -16
- package/build/{index-4hqbyzf5.js → index-98bpwjq9.js} +16 -8
- package/build/{index-pxwwcefn.js → index-a2qb45hc.js} +9 -9
- package/build/{index-f6ttv7np.js → index-cpbhz85w.js} +9 -5
- package/build/{index-6dbym5jy.js → index-fa4xk0fq.js} +29 -12
- package/build/{index-31rwrakh.js → index-qqp08dtj.js} +2 -2
- package/build/{index-0j880wqc.js → index-ra8jmwb2.js} +1154 -909
- package/build/{index-34h2nb6x.js → index-yggyem63.js} +3 -3
- package/build/{issues-wjakj8yy.js → issues-mtbp80dr.js} +44 -16
- package/build/{logs-ewyzcspy.js → logs-0wpqqb3z.js} +16 -16
- package/build/{offesecAgent-7m9smy0t.js → offesecAgent-d5ceedmg.js} +8 -8
- package/build/pentest-2znknvqd.js +29 -0
- package/build/{pentests-1hcqjyk2.js → pentests-gnwwdmac.js} +16 -16
- package/build/{targetedPentest-3x13kqvc.js → targetedPentest-ap7p8j6q.js} +9 -9
- package/build/{targets-nqz8w37e.js → targets-be3c736k.js} +16 -16
- package/build/threatModel-bypv7mjx.js +27 -0
- package/build/{uninstall-p1q5pkx2.js → uninstall-71xttcr0.js} +1 -1
- package/build/{upload-x7etpfp4.js → upload-c7e0bdcn.js} +6 -6
- package/build/{utils-kw6yh5yn.js → utils-ef23ac3j.js} +11 -7
- package/package.json +1 -1
- package/build/agent-3cdfwxcd.js +0 -19
- package/build/authentication-tqx2brcv.js +0 -19
- package/build/blackboxAgent-d0smgqt7.js +0 -19
- package/build/pentest-1cb5t0dt.js +0 -29
- package/build/threatModel-7f02av7y.js +0 -27
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import {
|
|
2
2
|
OffensiveSecurityAgent
|
|
3
|
-
} from "./cli-
|
|
3
|
+
} from "./cli-mb680jb3.js";
|
|
4
4
|
import {
|
|
5
5
|
detectOSAndEnhancePrompt
|
|
6
|
-
} from "./cli-
|
|
6
|
+
} from "./cli-06fq5zym.js";
|
|
7
7
|
import"./cli-c8131c4q.js";
|
|
8
8
|
import {
|
|
9
9
|
init_dist,
|
|
10
10
|
stepCountIs
|
|
11
|
-
} from "./cli-
|
|
12
|
-
import"./cli-
|
|
11
|
+
} from "./cli-2q3kvbwv.js";
|
|
12
|
+
import"./cli-dth5et2y.js";
|
|
13
13
|
import {
|
|
14
14
|
exports_external,
|
|
15
15
|
init_zod
|
|
16
16
|
} from "./cli-3k1x5rn3.js";
|
|
17
17
|
import"./cli-gpnb45ck.js";
|
|
18
|
-
import"./cli-
|
|
19
|
-
import"./cli-
|
|
20
|
-
import"./cli-
|
|
18
|
+
import"./cli-0qybv29g.js";
|
|
19
|
+
import"./cli-khyery65.js";
|
|
20
|
+
import"./cli-3e0jb8k6.js";
|
|
21
21
|
import"./cli-8rxa073f.js";
|
|
22
22
|
|
|
23
23
|
// src/core/agents/specialized/findingJudge/agent.ts
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CodeAgent
|
|
3
|
+
} from "./cli-7d3h16fw.js";
|
|
4
|
+
import"./cli-9fsre5pt.js";
|
|
5
|
+
import"./cli-3r7xgtqj.js";
|
|
6
|
+
import"./cli-mb680jb3.js";
|
|
7
|
+
import"./cli-06fq5zym.js";
|
|
8
|
+
import"./cli-c8131c4q.js";
|
|
9
|
+
import"./cli-2q3kvbwv.js";
|
|
10
|
+
import"./cli-dth5et2y.js";
|
|
11
|
+
import"./cli-3k1x5rn3.js";
|
|
12
|
+
import"./cli-gpnb45ck.js";
|
|
13
|
+
import"./cli-0qybv29g.js";
|
|
14
|
+
import"./cli-khyery65.js";
|
|
15
|
+
import"./cli-3e0jb8k6.js";
|
|
16
|
+
import"./cli-8rxa073f.js";
|
|
17
|
+
export {
|
|
18
|
+
CodeAgent
|
|
19
|
+
};
|
|
@@ -4,19 +4,19 @@ import {
|
|
|
4
4
|
buildPentestActiveTools,
|
|
5
5
|
buildPentestPrompt,
|
|
6
6
|
buildPentestSystemPrompt
|
|
7
|
-
} from "./cli-
|
|
7
|
+
} from "./cli-s8z1mkv5.js";
|
|
8
8
|
import"./cli-9fsre5pt.js";
|
|
9
|
-
import"./cli-
|
|
10
|
-
import"./cli-
|
|
11
|
-
import"./cli-
|
|
9
|
+
import"./cli-3r7xgtqj.js";
|
|
10
|
+
import"./cli-mb680jb3.js";
|
|
11
|
+
import"./cli-06fq5zym.js";
|
|
12
12
|
import"./cli-c8131c4q.js";
|
|
13
|
-
import"./cli-
|
|
14
|
-
import"./cli-
|
|
13
|
+
import"./cli-2q3kvbwv.js";
|
|
14
|
+
import"./cli-dth5et2y.js";
|
|
15
15
|
import"./cli-3k1x5rn3.js";
|
|
16
16
|
import"./cli-gpnb45ck.js";
|
|
17
|
-
import"./cli-
|
|
18
|
-
import"./cli-
|
|
19
|
-
import"./cli-
|
|
17
|
+
import"./cli-0qybv29g.js";
|
|
18
|
+
import"./cli-khyery65.js";
|
|
19
|
+
import"./cli-3e0jb8k6.js";
|
|
20
20
|
import"./cli-8rxa073f.js";
|
|
21
21
|
export {
|
|
22
22
|
buildPentestSystemPrompt,
|
|
@@ -1,4 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
|
+
import"./cli-2m8y1rkp.js";
|
|
3
|
+
import"./cli-abm5bgap.js";
|
|
4
|
+
import"./cli-5asc7364.js";
|
|
5
|
+
import"./cli-xkv494x1.js";
|
|
6
|
+
import"./cli-s8z1mkv5.js";
|
|
7
|
+
import"./cli-41h8gh1v.js";
|
|
8
|
+
import"./cli-7d3h16fw.js";
|
|
9
|
+
import"./cli-qs2mveb2.js";
|
|
10
|
+
import"./cli-9fsre5pt.js";
|
|
11
|
+
import"./cli-3r7xgtqj.js";
|
|
2
12
|
import {
|
|
3
13
|
createApp,
|
|
4
14
|
createEndpoint,
|
|
@@ -12,27 +22,17 @@ import {
|
|
|
12
22
|
searchEndpoints,
|
|
13
23
|
updateApp,
|
|
14
24
|
updateEndpoint
|
|
15
|
-
} from "./cli-
|
|
16
|
-
import"./cli-
|
|
17
|
-
import"./cli-1re2kv5v.js";
|
|
18
|
-
import"./cli-2jn8104w.js";
|
|
19
|
-
import"./cli-n114n8mk.js";
|
|
20
|
-
import"./cli-xpn9tsw0.js";
|
|
21
|
-
import"./cli-knqx15w6.js";
|
|
22
|
-
import"./cli-7e5ad5js.js";
|
|
23
|
-
import"./cli-9fsre5pt.js";
|
|
24
|
-
import"./cli-ptzy9ak5.js";
|
|
25
|
-
import"./cli-xbdn034b.js";
|
|
26
|
-
import"./cli-s43t5ay0.js";
|
|
25
|
+
} from "./cli-mb680jb3.js";
|
|
26
|
+
import"./cli-06fq5zym.js";
|
|
27
27
|
import"./cli-fw5r7pfj.js";
|
|
28
28
|
import"./cli-c8131c4q.js";
|
|
29
|
-
import"./cli-
|
|
30
|
-
import"./cli-
|
|
29
|
+
import"./cli-2q3kvbwv.js";
|
|
30
|
+
import"./cli-dth5et2y.js";
|
|
31
31
|
import"./cli-3k1x5rn3.js";
|
|
32
32
|
import"./cli-gpnb45ck.js";
|
|
33
|
-
import"./cli-
|
|
34
|
-
import"./cli-
|
|
35
|
-
import"./cli-
|
|
33
|
+
import"./cli-0qybv29g.js";
|
|
34
|
+
import"./cli-khyery65.js";
|
|
35
|
+
import"./cli-3e0jb8k6.js";
|
|
36
36
|
import"./cli-8rxa073f.js";
|
|
37
37
|
|
|
38
38
|
// src/cli/apps.ts
|
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
|
-
import"./cli-
|
|
3
|
-
import"./cli-
|
|
4
|
-
import"./cli-
|
|
5
|
-
import"./cli-
|
|
6
|
-
import"./cli-
|
|
7
|
-
import"./cli-
|
|
8
|
-
import"./cli-
|
|
9
|
-
import"./cli-
|
|
2
|
+
import"./cli-2m8y1rkp.js";
|
|
3
|
+
import"./cli-abm5bgap.js";
|
|
4
|
+
import"./cli-5asc7364.js";
|
|
5
|
+
import"./cli-xkv494x1.js";
|
|
6
|
+
import"./cli-s8z1mkv5.js";
|
|
7
|
+
import"./cli-41h8gh1v.js";
|
|
8
|
+
import"./cli-7d3h16fw.js";
|
|
9
|
+
import"./cli-qs2mveb2.js";
|
|
10
10
|
import"./cli-9fsre5pt.js";
|
|
11
|
-
import"./cli-
|
|
12
|
-
import"./cli-
|
|
13
|
-
import"./cli-
|
|
11
|
+
import"./cli-3r7xgtqj.js";
|
|
12
|
+
import"./cli-mb680jb3.js";
|
|
13
|
+
import"./cli-06fq5zym.js";
|
|
14
14
|
import"./cli-fw5r7pfj.js";
|
|
15
15
|
import"./cli-c8131c4q.js";
|
|
16
|
-
import"./cli-
|
|
16
|
+
import"./cli-2q3kvbwv.js";
|
|
17
17
|
import {
|
|
18
|
+
createWorkspaceSelection,
|
|
18
19
|
disconnect,
|
|
20
|
+
ensureValidToken,
|
|
19
21
|
fetchWorkspaces,
|
|
20
22
|
getPensarApiUrl,
|
|
21
23
|
getPensarConsoleUrl,
|
|
@@ -24,17 +26,18 @@ import {
|
|
|
24
26
|
pollForWorkspaceCreation,
|
|
25
27
|
pollLegacyToken,
|
|
26
28
|
pollWorkOSToken,
|
|
29
|
+
pollWorkspaceSelection,
|
|
27
30
|
selectWorkspace,
|
|
28
31
|
startDeviceFlow
|
|
29
|
-
} from "./cli-
|
|
32
|
+
} from "./cli-dth5et2y.js";
|
|
30
33
|
import"./cli-3k1x5rn3.js";
|
|
31
34
|
import"./cli-gpnb45ck.js";
|
|
32
35
|
import {
|
|
33
36
|
config,
|
|
34
37
|
init_config
|
|
35
|
-
} from "./cli-
|
|
36
|
-
import"./cli-
|
|
37
|
-
import"./cli-
|
|
38
|
+
} from "./cli-0qybv29g.js";
|
|
39
|
+
import"./cli-khyery65.js";
|
|
40
|
+
import"./cli-3e0jb8k6.js";
|
|
38
41
|
import {
|
|
39
42
|
__require
|
|
40
43
|
} from "./cli-8rxa073f.js";
|
|
@@ -70,30 +73,26 @@ function prompt(question) {
|
|
|
70
73
|
});
|
|
71
74
|
});
|
|
72
75
|
}
|
|
73
|
-
async function
|
|
76
|
+
async function selectWorkspaceInBrowser(apiUrl, accessToken) {
|
|
77
|
+
const selection = await createWorkspaceSelection(apiUrl, accessToken);
|
|
78
|
+
openUrl(selection.selectionUrl);
|
|
74
79
|
console.log(`
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
Enter number (1-${workspaces.length}): `);
|
|
82
|
-
const index = parseInt(answer, 10) - 1;
|
|
83
|
-
if (Number.isNaN(index) || index < 0 || index >= workspaces.length) {
|
|
84
|
-
console.error("Invalid selection.");
|
|
85
|
-
process.exit(1);
|
|
86
|
-
}
|
|
87
|
-
const workspace = workspaces[index];
|
|
88
|
-
if (!workspace) {
|
|
89
|
-
console.error("Invalid selection.");
|
|
90
|
-
process.exit(1);
|
|
91
|
-
}
|
|
92
|
-
return workspace;
|
|
80
|
+
You have multiple workspaces. Choose one in your browser to continue.
|
|
81
|
+
If the browser didn't open, visit:
|
|
82
|
+
${selection.selectionUrl}
|
|
83
|
+
|
|
84
|
+
Waiting for workspace selection...`);
|
|
85
|
+
return pollWorkspaceSelection(apiUrl, accessToken, selection.selectionId);
|
|
93
86
|
}
|
|
94
87
|
async function login() {
|
|
95
88
|
const appConfig = await config.get();
|
|
96
|
-
|
|
89
|
+
const hasStoredCredentials = isConnected(appConfig);
|
|
90
|
+
const validToken = hasStoredCredentials ? await ensureValidToken({
|
|
91
|
+
accessToken: appConfig.accessToken,
|
|
92
|
+
refreshToken: appConfig.refreshToken,
|
|
93
|
+
pensarAPIKey: appConfig.pensarAPIKey
|
|
94
|
+
}) : null;
|
|
95
|
+
if (validToken) {
|
|
97
96
|
console.log("Already connected to Pensar Console.");
|
|
98
97
|
if (appConfig.workspaceSlug) {
|
|
99
98
|
console.log(` Workspace: ${appConfig.workspaceSlug}`);
|
|
@@ -103,6 +102,8 @@ Reconnect? (y/N): `);
|
|
|
103
102
|
if (answer.toLowerCase() !== "y") {
|
|
104
103
|
return;
|
|
105
104
|
}
|
|
105
|
+
} else if (hasStoredCredentials) {
|
|
106
|
+
console.log("Your saved Pensar Console session has expired. Reconnecting.");
|
|
106
107
|
}
|
|
107
108
|
console.log(`
|
|
108
109
|
Pensar Console — Managed Inference
|
|
@@ -187,17 +188,18 @@ If the browser didn't open, visit: ${consoleUrl}/create-workspace?redirect=/cred
|
|
|
187
188
|
console.log("Waiting for workspace creation...");
|
|
188
189
|
workspaces = await pollForWorkspaceCreation(apiUrl, accessToken);
|
|
189
190
|
}
|
|
190
|
-
let
|
|
191
|
+
let workspaceId;
|
|
191
192
|
if (workspaces.length === 1) {
|
|
192
193
|
const onlyWorkspace = workspaces[0];
|
|
193
194
|
if (!onlyWorkspace) {
|
|
194
195
|
throw new Error("No workspace available after workspace lookup");
|
|
195
196
|
}
|
|
196
|
-
|
|
197
|
+
workspaceId = onlyWorkspace.id;
|
|
197
198
|
} else {
|
|
198
|
-
|
|
199
|
+
workspaceId = await selectWorkspaceInBrowser(apiUrl, accessToken);
|
|
199
200
|
}
|
|
200
|
-
const result = await selectWorkspace(apiUrl, accessToken,
|
|
201
|
+
const result = await selectWorkspace(apiUrl, accessToken, workspaceId);
|
|
202
|
+
const workspace = result.workspace;
|
|
201
203
|
await config.update({
|
|
202
204
|
workspaceId: workspace.id,
|
|
203
205
|
workspaceSlug: workspace.slug,
|
|
@@ -235,6 +237,15 @@ async function status() {
|
|
|
235
237
|
console.log("Not connected to Pensar Console.\n\nRun `pensar login` to connect.");
|
|
236
238
|
return;
|
|
237
239
|
}
|
|
240
|
+
const validToken = await ensureValidToken({
|
|
241
|
+
accessToken: appConfig.accessToken,
|
|
242
|
+
refreshToken: appConfig.refreshToken,
|
|
243
|
+
pensarAPIKey: appConfig.pensarAPIKey
|
|
244
|
+
});
|
|
245
|
+
if (!validToken) {
|
|
246
|
+
console.log("Your Pensar Console session has expired.\n\nRun `pensar login` to reconnect.");
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
238
249
|
if (!appConfig.accessToken && appConfig.pensarAPIKey && !appConfig.workspaceSlug) {
|
|
239
250
|
try {
|
|
240
251
|
const apiUrl = getPensarApiUrl();
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import {
|
|
2
|
+
runAuthenticationAgent
|
|
3
|
+
} from "./cli-41h8gh1v.js";
|
|
4
|
+
import"./cli-9fsre5pt.js";
|
|
5
|
+
import"./cli-3r7xgtqj.js";
|
|
6
|
+
import"./cli-mb680jb3.js";
|
|
7
|
+
import"./cli-06fq5zym.js";
|
|
8
|
+
import"./cli-c8131c4q.js";
|
|
9
|
+
import"./cli-2q3kvbwv.js";
|
|
10
|
+
import"./cli-dth5et2y.js";
|
|
11
|
+
import"./cli-3k1x5rn3.js";
|
|
12
|
+
import"./cli-gpnb45ck.js";
|
|
13
|
+
import"./cli-0qybv29g.js";
|
|
14
|
+
import"./cli-khyery65.js";
|
|
15
|
+
import"./cli-3e0jb8k6.js";
|
|
16
|
+
import"./cli-8rxa073f.js";
|
|
17
|
+
export {
|
|
18
|
+
runAuthenticationAgent
|
|
19
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import {
|
|
2
|
+
BlackboxAttackSurfaceAgent
|
|
3
|
+
} from "./cli-5asc7364.js";
|
|
4
|
+
import"./cli-9fsre5pt.js";
|
|
5
|
+
import"./cli-3r7xgtqj.js";
|
|
6
|
+
import"./cli-mb680jb3.js";
|
|
7
|
+
import"./cli-06fq5zym.js";
|
|
8
|
+
import"./cli-c8131c4q.js";
|
|
9
|
+
import"./cli-2q3kvbwv.js";
|
|
10
|
+
import"./cli-dth5et2y.js";
|
|
11
|
+
import"./cli-3k1x5rn3.js";
|
|
12
|
+
import"./cli-gpnb45ck.js";
|
|
13
|
+
import"./cli-0qybv29g.js";
|
|
14
|
+
import"./cli-khyery65.js";
|
|
15
|
+
import"./cli-3e0jb8k6.js";
|
|
16
|
+
import"./cli-8rxa073f.js";
|
|
17
|
+
export {
|
|
18
|
+
BlackboxAttackSurfaceAgent
|
|
19
|
+
};
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import {
|
|
2
2
|
runPentestWorkflow
|
|
3
|
-
} from "./cli-
|
|
4
|
-
import"./cli-
|
|
5
|
-
import"./cli-
|
|
6
|
-
import"./cli-
|
|
7
|
-
import"./cli-
|
|
8
|
-
import"./cli-
|
|
3
|
+
} from "./cli-abm5bgap.js";
|
|
4
|
+
import"./cli-5asc7364.js";
|
|
5
|
+
import"./cli-xkv494x1.js";
|
|
6
|
+
import"./cli-s8z1mkv5.js";
|
|
7
|
+
import"./cli-7d3h16fw.js";
|
|
8
|
+
import"./cli-qs2mveb2.js";
|
|
9
9
|
import"./cli-9fsre5pt.js";
|
|
10
|
-
import"./cli-
|
|
11
|
-
import"./cli-
|
|
12
|
-
import"./cli-
|
|
10
|
+
import"./cli-3r7xgtqj.js";
|
|
11
|
+
import"./cli-mb680jb3.js";
|
|
12
|
+
import"./cli-06fq5zym.js";
|
|
13
13
|
import"./cli-fw5r7pfj.js";
|
|
14
14
|
import"./cli-c8131c4q.js";
|
|
15
|
-
import"./cli-
|
|
16
|
-
import"./cli-
|
|
15
|
+
import"./cli-2q3kvbwv.js";
|
|
16
|
+
import"./cli-dth5et2y.js";
|
|
17
17
|
import"./cli-3k1x5rn3.js";
|
|
18
18
|
import"./cli-gpnb45ck.js";
|
|
19
|
-
import"./cli-
|
|
20
|
-
import"./cli-
|
|
21
|
-
import"./cli-
|
|
19
|
+
import"./cli-0qybv29g.js";
|
|
20
|
+
import"./cli-khyery65.js";
|
|
21
|
+
import"./cli-3e0jb8k6.js";
|
|
22
22
|
import"./cli-8rxa073f.js";
|
|
23
23
|
|
|
24
24
|
// src/core/api/blackboxPentest.ts
|