@pensar/apex 2.3.0 → 2.4.0-canary.19561fbe
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-7r8ae2n3.js +19 -0
- package/build/agent-8fwm9a5a.js +29 -0
- package/build/{agent-9xna7jhw.js → agent-9xkng6z0.js} +11 -11
- package/build/{apps-43pqbz7r.js → apps-zz0g7btr.js} +57 -21
- package/build/{auth-c1z670rx.js → auth-yg4f0h7t.js} +38 -20
- package/build/authentication-4pw5fgb0.js +19 -0
- package/build/blackboxAgent-86505pbv.js +19 -0
- package/build/{blackboxPentest-tgc2t3y6.js → blackboxPentest-wt2tgsv6.js} +17 -17
- package/build/{cli-zm8tfpv7.js → cli-15becs7s.js} +25 -9
- package/build/{cli-n2m2yy5b.js → cli-32sskghg.js} +1254 -614
- package/build/{cli-baqhqbe5.js → cli-3tjmnhmz.js} +3 -3
- package/build/{cli-bnkgdywr.js → cli-675xera2.js} +1 -1
- package/build/{cli-f7hanqbw.js → cli-701hy1tq.js} +2 -2
- package/build/{cli-zx8gk8xv.js → cli-72mp7fnw.js} +296 -54
- package/build/{cli-7tw4xfnw.js → cli-av6ny5j7.js} +1 -1
- package/build/{cli-8rxa073f.js → cli-bc05qbss.js} +8 -6
- package/build/{cli-50906d27.js → cli-bdnfzsg5.js} +91 -29
- package/build/{cli-q24twygk.js → cli-dm0fc0bm.js} +1 -1
- package/build/{cli-yz80qkzn.js → cli-ee3axgts.js} +7 -1
- package/build/{cli-zk1ch6qf.js → cli-f6b6kdc6.js} +34 -9
- package/build/{cli-eveg9djy.js → cli-fejghj51.js} +3 -2
- package/build/{cli-j0n189ee.js → cli-gt8cqkar.js} +2 -2
- package/build/{cli-gpnb45ck.js → cli-j54qa6tm.js} +7 -7
- package/build/{cli-wszshs5e.js → cli-k71t434r.js} +4 -4
- package/build/{cli-jyp2c6th.js → cli-kfc5yyre.js} +2 -2
- package/build/{cli-bv2807tj.js → cli-pn8yhmp4.js} +3 -3
- package/build/{cli-3k1x5rn3.js → cli-swpbx60z.js} +1045 -1045
- package/build/{cli-72b18z0n.js → cli-w8v5w7f3.js} +3 -3
- package/build/{cli-vckbhnyk.js → cli-wdn70vwe.js} +2 -2
- package/build/{cli-f71s6kcw.js → cli-xw30dapx.js} +81 -215
- package/build/{cli-barsn8br.js → cli-zp8z5vrt.js} +2 -2
- package/build/cli.js +52 -46
- package/build/{config-jzqjz606.js → config-zeh0xscc.js} +5 -5
- package/build/{doctor-q3qws68e.js → doctor-e0znbx7f.js} +10 -9
- package/build/{fastStrike-ebz1ph9a.js → fastStrike-yraw4ht6.js} +36 -16
- package/build/{fixes-86yebsj0.js → fixes-mengjdsn.js} +19 -19
- package/build/{index-32hn8rrw.js → index-05r9pb0d.js} +3 -3
- package/build/{index-e8c8zcrf.js → index-1kwk5sy2.js} +31 -26
- package/build/{index-mr2cseg4.js → index-7jcvhzqh.js} +19 -19
- package/build/{index-8db1d2q3.js → index-9v6zvn9e.js} +18 -18
- package/build/index-a68sqrkq.js +12 -0
- package/build/{index-h2hj2hj9.js → index-cbwn03kz.js} +16 -16
- package/build/{index-97vx1a24.js → index-hknbwp8k.js} +1148 -1086
- package/build/{index-gq9h8j5j.js → index-mtq7kmxz.js} +132 -132
- package/build/{index-tke6896d.js → index-psqjpw5m.js} +10 -10
- package/build/{index-468j74f3.js → index-v0ghws2y.js} +113 -97
- package/build/{issues-kh4wg8c5.js → issues-wwfg1k5d.js} +19 -19
- package/build/{logs-bj28xmbf.js → logs-c4matma8.js} +19 -19
- package/build/{main-3d7dfdvs.js → main-mmjp338j.js} +9 -9
- package/build/{multipart-parser-6zd16497.js → multipart-parser-g2xxkezz.js} +2 -2
- package/build/{offesecAgent-8ky7gccp.js → offesecAgent-60nqapwk.js} +11 -11
- package/build/{parse-7djk9jyf.js → parse-rtccymzn.js} +3 -3
- package/build/pentest-pn2ky72r.js +29 -0
- package/build/{pentests-62d6zw6p.js → pentests-7r7stp5g.js} +19 -19
- package/build/{targetedPentest-me4jnr3z.js → targetedPentest-y2t8cry0.js} +14 -14
- package/build/{targets-e5k1mrky.js → targets-pgw8ns01.js} +19 -19
- package/build/threatModel-hxy1d92e.js +27 -0
- package/build/{token-rdcbn380.js → token-3bbp59y6.js} +3 -3
- package/build/{token-util-sxb85ahn.js → token-util-6xjme11b.js} +2 -2
- package/build/{uninstall-jt1bca2p.js → uninstall-vvz3r8yc.js} +2 -2
- package/build/{upload-krd8bnex.js → upload-8efavx6h.js} +11 -11
- package/build/{utils-skmqhyfg.js → utils-3ymswfqm.js} +17 -13
- package/package.json +1 -1
- package/build/agent-71z4e7jg.js +0 -19
- package/build/agent-ga5fecfs.js +0 -27
- package/build/authentication-hgs7ym0m.js +0 -19
- package/build/blackboxAgent-gem3mxa9.js +0 -19
- package/build/index-ag14v3sg.js +0 -12
- package/build/pentest-rs0181nf.js +0 -29
- package/build/threatModel-k4f3zgqd.js +0 -27
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CodeAgent
|
|
3
|
+
} from "./cli-gt8cqkar.js";
|
|
4
|
+
import"./cli-9fsre5pt.js";
|
|
5
|
+
import"./cli-kfc5yyre.js";
|
|
6
|
+
import"./cli-32sskghg.js";
|
|
7
|
+
import"./cli-av6ny5j7.js";
|
|
8
|
+
import"./cli-c8131c4q.js";
|
|
9
|
+
import"./cli-72mp7fnw.js";
|
|
10
|
+
import"./cli-wdn70vwe.js";
|
|
11
|
+
import"./cli-swpbx60z.js";
|
|
12
|
+
import"./cli-j54qa6tm.js";
|
|
13
|
+
import"./cli-701hy1tq.js";
|
|
14
|
+
import"./cli-fejghj51.js";
|
|
15
|
+
import"./cli-zp8z5vrt.js";
|
|
16
|
+
import"./cli-bc05qbss.js";
|
|
17
|
+
export {
|
|
18
|
+
CodeAgent
|
|
19
|
+
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import {
|
|
2
|
+
PentestResponseSchema,
|
|
3
|
+
TargetedPentestAgent,
|
|
4
|
+
buildPentestActiveTools,
|
|
5
|
+
buildPentestPrompt,
|
|
6
|
+
buildPentestSystemPrompt,
|
|
7
|
+
resolvePentestAgentRole
|
|
8
|
+
} from "./cli-bdnfzsg5.js";
|
|
9
|
+
import"./cli-9fsre5pt.js";
|
|
10
|
+
import"./cli-kfc5yyre.js";
|
|
11
|
+
import"./cli-32sskghg.js";
|
|
12
|
+
import"./cli-av6ny5j7.js";
|
|
13
|
+
import"./cli-c8131c4q.js";
|
|
14
|
+
import"./cli-72mp7fnw.js";
|
|
15
|
+
import"./cli-wdn70vwe.js";
|
|
16
|
+
import"./cli-swpbx60z.js";
|
|
17
|
+
import"./cli-j54qa6tm.js";
|
|
18
|
+
import"./cli-701hy1tq.js";
|
|
19
|
+
import"./cli-fejghj51.js";
|
|
20
|
+
import"./cli-zp8z5vrt.js";
|
|
21
|
+
import"./cli-bc05qbss.js";
|
|
22
|
+
export {
|
|
23
|
+
PentestResponseSchema,
|
|
24
|
+
TargetedPentestAgent,
|
|
25
|
+
buildPentestActiveTools,
|
|
26
|
+
buildPentestPrompt,
|
|
27
|
+
buildPentestSystemPrompt,
|
|
28
|
+
resolvePentestAgentRole
|
|
29
|
+
};
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import {
|
|
2
2
|
OffensiveSecurityAgent
|
|
3
|
-
} from "./cli-
|
|
3
|
+
} from "./cli-32sskghg.js";
|
|
4
4
|
import {
|
|
5
5
|
detectOSAndEnhancePrompt
|
|
6
|
-
} from "./cli-
|
|
6
|
+
} from "./cli-av6ny5j7.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-72mp7fnw.js";
|
|
12
|
+
import"./cli-wdn70vwe.js";
|
|
13
13
|
import {
|
|
14
14
|
exports_external,
|
|
15
15
|
init_zod
|
|
16
|
-
} from "./cli-
|
|
17
|
-
import"./cli-
|
|
18
|
-
import"./cli-
|
|
19
|
-
import"./cli-
|
|
20
|
-
import"./cli-
|
|
21
|
-
import"./cli-
|
|
16
|
+
} from "./cli-swpbx60z.js";
|
|
17
|
+
import"./cli-j54qa6tm.js";
|
|
18
|
+
import"./cli-701hy1tq.js";
|
|
19
|
+
import"./cli-fejghj51.js";
|
|
20
|
+
import"./cli-zp8z5vrt.js";
|
|
21
|
+
import"./cli-bc05qbss.js";
|
|
22
22
|
|
|
23
23
|
// src/core/agents/specialized/findingJudge/agent.ts
|
|
24
24
|
init_dist();
|
|
@@ -68,7 +68,7 @@ You are the last line of defense against false positives, hallucinated findings,
|
|
|
68
68
|
- Authorization / access-control boundary bypass (RSC/prefetch/redirect-body leaks, missing per-route checks): the evidence must establish the access-model delta — which identity/role was used, and proof that the returned data is genuinely out of scope for that identity (cross-tenant, another user's, or admin-only data a member should not see). A 200 response, a leaked RSC payload, or a skipped redirect alone does NOT prove sensitive exposure. If the bypass is real but the returned data is non-sensitive or plausibly same-tenant/expected-visible, classify as a valid lower-impact finding and require the claim's impact/severity to match — do NOT accept it as high-confidence sensitive/cross-tenant exposure.
|
|
69
69
|
- Authentication bypass: output should show protected access without valid credentials.
|
|
70
70
|
- Email/HTML injection: ideally verify delivery and rendering. If only server acceptance is shown, confidence must stay below 0.7 and limitations must state rendering was not independently verified.
|
|
71
|
-
- Missing rate limiting / anti-automation:
|
|
71
|
+
- Missing rate limiting / anti-automation: a modest burst (~20 requests) with no observed throttling, delays, or 429s is sufficient to demonstrate the gap. For endpoints with real-world side effects (sending email/SMS/push, creating tickets/notifications, contact/support/feedback forms, payments), as few as 2–3 attempts plus the observed response is sufficient — do NOT require volume-testing that would spam real recipients. Evidence must state exact request count, timing/distribution, and observed statuses.
|
|
72
72
|
|
|
73
73
|
### Common Low-Signal Patterns
|
|
74
74
|
Reject these unless the submitted evidence demonstrates concrete harm:
|
|
@@ -1,39 +1,42 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
|
+
import"./cli-xw30dapx.js";
|
|
3
|
+
import"./cli-15becs7s.js";
|
|
4
|
+
import"./cli-pn8yhmp4.js";
|
|
5
|
+
import"./cli-w8v5w7f3.js";
|
|
6
|
+
import"./cli-bdnfzsg5.js";
|
|
7
|
+
import"./cli-f6b6kdc6.js";
|
|
8
|
+
import"./cli-gt8cqkar.js";
|
|
9
|
+
import"./cli-3tjmnhmz.js";
|
|
10
|
+
import"./cli-9fsre5pt.js";
|
|
11
|
+
import"./cli-kfc5yyre.js";
|
|
2
12
|
import {
|
|
13
|
+
ENDPOINT_TRANSPORTS,
|
|
3
14
|
createApp,
|
|
15
|
+
createDomain,
|
|
4
16
|
createEndpoint,
|
|
5
17
|
deleteApp,
|
|
6
18
|
deleteEndpoint,
|
|
7
19
|
getApp,
|
|
8
20
|
getEndpoint,
|
|
9
21
|
listApps,
|
|
22
|
+
listDomains,
|
|
10
23
|
listEndpoints,
|
|
11
24
|
searchApps,
|
|
12
25
|
searchEndpoints,
|
|
13
26
|
updateApp,
|
|
14
27
|
updateEndpoint
|
|
15
|
-
} from "./cli-
|
|
16
|
-
import"./cli-
|
|
17
|
-
import"./cli-bv2807tj.js";
|
|
18
|
-
import"./cli-72b18z0n.js";
|
|
19
|
-
import"./cli-50906d27.js";
|
|
20
|
-
import"./cli-zk1ch6qf.js";
|
|
21
|
-
import"./cli-j0n189ee.js";
|
|
22
|
-
import"./cli-baqhqbe5.js";
|
|
23
|
-
import"./cli-9fsre5pt.js";
|
|
24
|
-
import"./cli-jyp2c6th.js";
|
|
25
|
-
import"./cli-n2m2yy5b.js";
|
|
26
|
-
import"./cli-7tw4xfnw.js";
|
|
28
|
+
} from "./cli-32sskghg.js";
|
|
29
|
+
import"./cli-av6ny5j7.js";
|
|
27
30
|
import"./cli-fw5r7pfj.js";
|
|
28
31
|
import"./cli-c8131c4q.js";
|
|
29
|
-
import"./cli-
|
|
30
|
-
import"./cli-
|
|
31
|
-
import"./cli-
|
|
32
|
-
import"./cli-
|
|
33
|
-
import"./cli-
|
|
34
|
-
import"./cli-
|
|
35
|
-
import"./cli-
|
|
36
|
-
import"./cli-
|
|
32
|
+
import"./cli-72mp7fnw.js";
|
|
33
|
+
import"./cli-wdn70vwe.js";
|
|
34
|
+
import"./cli-swpbx60z.js";
|
|
35
|
+
import"./cli-j54qa6tm.js";
|
|
36
|
+
import"./cli-701hy1tq.js";
|
|
37
|
+
import"./cli-fejghj51.js";
|
|
38
|
+
import"./cli-zp8z5vrt.js";
|
|
39
|
+
import"./cli-bc05qbss.js";
|
|
37
40
|
|
|
38
41
|
// src/cli/apps.ts
|
|
39
42
|
var APPLICATION_TYPES = [
|
|
@@ -88,6 +91,14 @@ function parseEndpointType(value) {
|
|
|
88
91
|
}
|
|
89
92
|
return value;
|
|
90
93
|
}
|
|
94
|
+
function parseTransport(value) {
|
|
95
|
+
if (value === undefined)
|
|
96
|
+
return;
|
|
97
|
+
if (!ENDPOINT_TRANSPORTS.includes(value)) {
|
|
98
|
+
throw new Error(`Invalid --transport "${value}". Must be one of: ${ENDPOINT_TRANSPORTS.join(", ")}`);
|
|
99
|
+
}
|
|
100
|
+
return value;
|
|
101
|
+
}
|
|
91
102
|
function parseInteger(flag, value) {
|
|
92
103
|
if (value === undefined)
|
|
93
104
|
return;
|
|
@@ -117,6 +128,8 @@ Usage:
|
|
|
117
128
|
pensar apps create [options] Create an app
|
|
118
129
|
pensar apps update <appId> [options] Update an app
|
|
119
130
|
pensar apps delete <appId> Delete an app
|
|
131
|
+
pensar apps domains List workspace domains
|
|
132
|
+
pensar apps domain-create <domain> Create/resolve a domain
|
|
120
133
|
pensar apps endpoints <appId> [filters] List endpoints
|
|
121
134
|
pensar apps endpoint <endpointId> Show endpoint details
|
|
122
135
|
pensar apps endpoint-create <appId> [options] Create an endpoint
|
|
@@ -130,9 +143,13 @@ App fields (create requires --name and --description):
|
|
|
130
143
|
--description <text> Application description
|
|
131
144
|
--type <type> One of: ${APPLICATION_TYPES.join(", ")}
|
|
132
145
|
--framework <text> Framework / runtime hint
|
|
133
|
-
--domain <id> Linked domain UUID
|
|
146
|
+
--domain <id> Linked domain UUID (see "apps domains")
|
|
134
147
|
--disallowed-actions <text> Free-form disallowed actions notes
|
|
135
148
|
|
|
149
|
+
Domains:
|
|
150
|
+
API-created domains are canonicalized and created idempotently by Console.
|
|
151
|
+
They stay unverified and do not start reconnaissance.
|
|
152
|
+
|
|
136
153
|
List pagination (for "apps" and "endpoints <appId>"):
|
|
137
154
|
--limit <n> Page size (default 100, max 200)
|
|
138
155
|
--offset <n> Page offset (default 0)
|
|
@@ -158,6 +175,8 @@ Endpoint fields (create requires --endpoint and --description):
|
|
|
158
175
|
--endpoint <text> Endpoint path / URL / route
|
|
159
176
|
--description <text> Endpoint description
|
|
160
177
|
--type <type> One of: ${ENDPOINT_TYPES.join(", ")}
|
|
178
|
+
--transport <transport> One of: ${ENDPOINT_TRANSPORTS.join(", ")}
|
|
179
|
+
(defaults to http when omitted)
|
|
161
180
|
--location <text> Source file (whitebox)
|
|
162
181
|
--start-line <n> Start line number
|
|
163
182
|
--end-line <n> End line number
|
|
@@ -235,6 +254,7 @@ function parseEndpointCreateOptions(argv) {
|
|
|
235
254
|
if (description === undefined)
|
|
236
255
|
throw new Error("--description is required");
|
|
237
256
|
const type = parseEndpointType(getFlag("--type", argv));
|
|
257
|
+
const transport = parseTransport(getFlag("--transport", argv));
|
|
238
258
|
const location = getFlag("--location", argv);
|
|
239
259
|
const startLineNumber = parseInteger("--start-line", getFlag("--start-line", argv));
|
|
240
260
|
const endLineNumber = parseInteger("--end-line", getFlag("--end-line", argv));
|
|
@@ -246,6 +266,7 @@ function parseEndpointCreateOptions(argv) {
|
|
|
246
266
|
endpoint,
|
|
247
267
|
description,
|
|
248
268
|
...type !== undefined ? { type } : {},
|
|
269
|
+
...transport !== undefined ? { transport } : {},
|
|
249
270
|
...location !== undefined ? { location } : {},
|
|
250
271
|
...startLineNumber !== undefined ? { startLineNumber } : {},
|
|
251
272
|
...endLineNumber !== undefined ? { endLineNumber } : {},
|
|
@@ -269,6 +290,9 @@ function parseEndpointUpdateOptions(argv) {
|
|
|
269
290
|
const type = parseEndpointType(getFlag("--type", argv));
|
|
270
291
|
if (type !== undefined)
|
|
271
292
|
update.type = type;
|
|
293
|
+
const transport = parseTransport(getFlag("--transport", argv));
|
|
294
|
+
if (transport !== undefined)
|
|
295
|
+
update.transport = transport;
|
|
272
296
|
const location = getFlag("--location", argv);
|
|
273
297
|
if (location !== undefined)
|
|
274
298
|
update.location = location;
|
|
@@ -332,6 +356,18 @@ async function main() {
|
|
|
332
356
|
}
|
|
333
357
|
const result = await deleteApp(appId);
|
|
334
358
|
console.log(JSON.stringify(result, null, 2));
|
|
359
|
+
} else if (sub === "domains") {
|
|
360
|
+
const result = await listDomains();
|
|
361
|
+
console.log(JSON.stringify(result, null, 2));
|
|
362
|
+
} else if (sub === "domain-create") {
|
|
363
|
+
const url = args[1];
|
|
364
|
+
if (!url) {
|
|
365
|
+
console.error("Error: domain is required");
|
|
366
|
+
console.error("Usage: pensar apps domain-create <domain>");
|
|
367
|
+
process.exit(1);
|
|
368
|
+
}
|
|
369
|
+
const result = await createDomain({ url });
|
|
370
|
+
console.log(JSON.stringify(result, null, 2));
|
|
335
371
|
} else if (sub === "endpoints") {
|
|
336
372
|
const appId = args[1];
|
|
337
373
|
if (!appId) {
|
|
@@ -1,22 +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-xw30dapx.js";
|
|
3
|
+
import"./cli-15becs7s.js";
|
|
4
|
+
import"./cli-pn8yhmp4.js";
|
|
5
|
+
import"./cli-w8v5w7f3.js";
|
|
6
|
+
import"./cli-bdnfzsg5.js";
|
|
7
|
+
import"./cli-f6b6kdc6.js";
|
|
8
|
+
import"./cli-gt8cqkar.js";
|
|
9
|
+
import"./cli-3tjmnhmz.js";
|
|
10
10
|
import"./cli-9fsre5pt.js";
|
|
11
|
-
import"./cli-
|
|
12
|
-
import"./cli-
|
|
13
|
-
import"./cli-
|
|
11
|
+
import"./cli-kfc5yyre.js";
|
|
12
|
+
import"./cli-32sskghg.js";
|
|
13
|
+
import"./cli-av6ny5j7.js";
|
|
14
14
|
import"./cli-fw5r7pfj.js";
|
|
15
15
|
import"./cli-c8131c4q.js";
|
|
16
|
-
import"./cli-
|
|
16
|
+
import"./cli-72mp7fnw.js";
|
|
17
17
|
import {
|
|
18
18
|
createWorkspaceSelection,
|
|
19
19
|
disconnect,
|
|
20
|
+
ensureValidToken,
|
|
20
21
|
fetchWorkspaces,
|
|
21
22
|
getPensarApiUrl,
|
|
22
23
|
getPensarConsoleUrl,
|
|
@@ -28,18 +29,18 @@ import {
|
|
|
28
29
|
pollWorkspaceSelection,
|
|
29
30
|
selectWorkspace,
|
|
30
31
|
startDeviceFlow
|
|
31
|
-
} from "./cli-
|
|
32
|
-
import"./cli-
|
|
33
|
-
import"./cli-
|
|
32
|
+
} from "./cli-wdn70vwe.js";
|
|
33
|
+
import"./cli-swpbx60z.js";
|
|
34
|
+
import"./cli-j54qa6tm.js";
|
|
34
35
|
import {
|
|
35
36
|
config,
|
|
36
37
|
init_config
|
|
37
|
-
} from "./cli-
|
|
38
|
-
import"./cli-
|
|
39
|
-
import"./cli-
|
|
38
|
+
} from "./cli-701hy1tq.js";
|
|
39
|
+
import"./cli-fejghj51.js";
|
|
40
|
+
import"./cli-zp8z5vrt.js";
|
|
40
41
|
import {
|
|
41
42
|
__require
|
|
42
|
-
} from "./cli-
|
|
43
|
+
} from "./cli-bc05qbss.js";
|
|
43
44
|
|
|
44
45
|
// src/cli/auth.ts
|
|
45
46
|
import * as readline from "node:readline";
|
|
@@ -85,7 +86,13 @@ Waiting for workspace selection...`);
|
|
|
85
86
|
}
|
|
86
87
|
async function login() {
|
|
87
88
|
const appConfig = await config.get();
|
|
88
|
-
|
|
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) {
|
|
89
96
|
console.log("Already connected to Pensar Console.");
|
|
90
97
|
if (appConfig.workspaceSlug) {
|
|
91
98
|
console.log(` Workspace: ${appConfig.workspaceSlug}`);
|
|
@@ -95,6 +102,8 @@ Reconnect? (y/N): `);
|
|
|
95
102
|
if (answer.toLowerCase() !== "y") {
|
|
96
103
|
return;
|
|
97
104
|
}
|
|
105
|
+
} else if (hasStoredCredentials) {
|
|
106
|
+
console.log("Your saved Pensar Console session has expired. Reconnecting.");
|
|
98
107
|
}
|
|
99
108
|
console.log(`
|
|
100
109
|
Pensar Console — Managed Inference
|
|
@@ -228,6 +237,15 @@ async function status() {
|
|
|
228
237
|
console.log("Not connected to Pensar Console.\n\nRun `pensar login` to connect.");
|
|
229
238
|
return;
|
|
230
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
|
+
}
|
|
231
249
|
if (!appConfig.accessToken && appConfig.pensarAPIKey && !appConfig.workspaceSlug) {
|
|
232
250
|
try {
|
|
233
251
|
const apiUrl = getPensarApiUrl();
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import {
|
|
2
|
+
runAuthenticationAgent
|
|
3
|
+
} from "./cli-f6b6kdc6.js";
|
|
4
|
+
import"./cli-9fsre5pt.js";
|
|
5
|
+
import"./cli-kfc5yyre.js";
|
|
6
|
+
import"./cli-32sskghg.js";
|
|
7
|
+
import"./cli-av6ny5j7.js";
|
|
8
|
+
import"./cli-c8131c4q.js";
|
|
9
|
+
import"./cli-72mp7fnw.js";
|
|
10
|
+
import"./cli-wdn70vwe.js";
|
|
11
|
+
import"./cli-swpbx60z.js";
|
|
12
|
+
import"./cli-j54qa6tm.js";
|
|
13
|
+
import"./cli-701hy1tq.js";
|
|
14
|
+
import"./cli-fejghj51.js";
|
|
15
|
+
import"./cli-zp8z5vrt.js";
|
|
16
|
+
import"./cli-bc05qbss.js";
|
|
17
|
+
export {
|
|
18
|
+
runAuthenticationAgent
|
|
19
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import {
|
|
2
|
+
BlackboxAttackSurfaceAgent
|
|
3
|
+
} from "./cli-pn8yhmp4.js";
|
|
4
|
+
import"./cli-9fsre5pt.js";
|
|
5
|
+
import"./cli-kfc5yyre.js";
|
|
6
|
+
import"./cli-32sskghg.js";
|
|
7
|
+
import"./cli-av6ny5j7.js";
|
|
8
|
+
import"./cli-c8131c4q.js";
|
|
9
|
+
import"./cli-72mp7fnw.js";
|
|
10
|
+
import"./cli-wdn70vwe.js";
|
|
11
|
+
import"./cli-swpbx60z.js";
|
|
12
|
+
import"./cli-j54qa6tm.js";
|
|
13
|
+
import"./cli-701hy1tq.js";
|
|
14
|
+
import"./cli-fejghj51.js";
|
|
15
|
+
import"./cli-zp8z5vrt.js";
|
|
16
|
+
import"./cli-bc05qbss.js";
|
|
17
|
+
export {
|
|
18
|
+
BlackboxAttackSurfaceAgent
|
|
19
|
+
};
|
|
@@ -1,25 +1,25 @@
|
|
|
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-15becs7s.js";
|
|
4
|
+
import"./cli-pn8yhmp4.js";
|
|
5
|
+
import"./cli-w8v5w7f3.js";
|
|
6
|
+
import"./cli-bdnfzsg5.js";
|
|
7
|
+
import"./cli-gt8cqkar.js";
|
|
8
|
+
import"./cli-3tjmnhmz.js";
|
|
9
9
|
import"./cli-9fsre5pt.js";
|
|
10
|
-
import"./cli-
|
|
11
|
-
import"./cli-
|
|
12
|
-
import"./cli-
|
|
10
|
+
import"./cli-kfc5yyre.js";
|
|
11
|
+
import"./cli-32sskghg.js";
|
|
12
|
+
import"./cli-av6ny5j7.js";
|
|
13
13
|
import"./cli-fw5r7pfj.js";
|
|
14
14
|
import"./cli-c8131c4q.js";
|
|
15
|
-
import"./cli-
|
|
16
|
-
import"./cli-
|
|
17
|
-
import"./cli-
|
|
18
|
-
import"./cli-
|
|
19
|
-
import"./cli-
|
|
20
|
-
import"./cli-
|
|
21
|
-
import"./cli-
|
|
22
|
-
import"./cli-
|
|
15
|
+
import"./cli-72mp7fnw.js";
|
|
16
|
+
import"./cli-wdn70vwe.js";
|
|
17
|
+
import"./cli-swpbx60z.js";
|
|
18
|
+
import"./cli-j54qa6tm.js";
|
|
19
|
+
import"./cli-701hy1tq.js";
|
|
20
|
+
import"./cli-fejghj51.js";
|
|
21
|
+
import"./cli-zp8z5vrt.js";
|
|
22
|
+
import"./cli-bc05qbss.js";
|
|
23
23
|
|
|
24
24
|
// src/core/api/blackboxPentest.ts
|
|
25
25
|
async function runPentestAgent(input) {
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import {
|
|
2
2
|
BlackboxAttackSurfaceAgent
|
|
3
|
-
} from "./cli-
|
|
3
|
+
} from "./cli-pn8yhmp4.js";
|
|
4
4
|
import {
|
|
5
5
|
REPORT_FILENAME_JSON,
|
|
6
6
|
REPORT_FILENAME_MD,
|
|
7
7
|
buildPentestReport,
|
|
8
8
|
renderJson,
|
|
9
9
|
renderMarkdown
|
|
10
|
-
} from "./cli-
|
|
10
|
+
} from "./cli-w8v5w7f3.js";
|
|
11
11
|
import {
|
|
12
12
|
TargetedPentestAgent,
|
|
13
13
|
buildPentestSystemPrompt
|
|
14
|
-
} from "./cli-
|
|
14
|
+
} from "./cli-bdnfzsg5.js";
|
|
15
15
|
import {
|
|
16
16
|
CodeAgent
|
|
17
|
-
} from "./cli-
|
|
17
|
+
} from "./cli-gt8cqkar.js";
|
|
18
18
|
import {
|
|
19
19
|
AppsDiscoveryResultSchema,
|
|
20
20
|
DiscoverySummarySchema,
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
WHITEBOX_APPS_DISCOVERY_SYSTEM_PROMPT,
|
|
23
23
|
WHITEBOX_DISCOVERY_SYSTEM_PROMPT,
|
|
24
24
|
WHITEBOX_ENDPOINT_DOCUMENTATION_SYSTEM_PROMPT
|
|
25
|
-
} from "./cli-
|
|
25
|
+
} from "./cli-3tjmnhmz.js";
|
|
26
26
|
import {
|
|
27
27
|
FindingsRegistry,
|
|
28
28
|
OffensiveSecurityAgent,
|
|
@@ -31,7 +31,7 @@ import {
|
|
|
31
31
|
pLimit,
|
|
32
32
|
runWithBoundedConcurrency,
|
|
33
33
|
toGrpcPentestContext
|
|
34
|
-
} from "./cli-
|
|
34
|
+
} from "./cli-32sskghg.js";
|
|
35
35
|
import {
|
|
36
36
|
createThreatModelPrompt
|
|
37
37
|
} from "./cli-fw5r7pfj.js";
|
|
@@ -45,10 +45,10 @@ import {
|
|
|
45
45
|
init_structured,
|
|
46
46
|
newSessionId,
|
|
47
47
|
scopedLogger
|
|
48
|
-
} from "./cli-
|
|
48
|
+
} from "./cli-72mp7fnw.js";
|
|
49
49
|
import {
|
|
50
50
|
__require
|
|
51
|
-
} from "./cli-
|
|
51
|
+
} from "./cli-bc05qbss.js";
|
|
52
52
|
|
|
53
53
|
// src/core/workflows/pentest.ts
|
|
54
54
|
init_dist();
|
|
@@ -7692,6 +7692,12 @@ async function runPentestSwarm(input) {
|
|
|
7692
7692
|
});
|
|
7693
7693
|
if (session.config?.requirePlan && session.config?.taskDriven && previousMessages.length === 0) {
|
|
7694
7694
|
try {
|
|
7695
|
+
eventBus?.emit("subagent-spawn", {
|
|
7696
|
+
subagentId: `${subagentId}-plan`,
|
|
7697
|
+
name: `${subagentName} (plan)`,
|
|
7698
|
+
input: { target: target.target, objectives: target.objectives },
|
|
7699
|
+
parentSubagentId: subagentId
|
|
7700
|
+
});
|
|
7695
7701
|
const executionTasksDir = join18(session.rootPath, "subagents", `${subagentId}-tasks`);
|
|
7696
7702
|
const planAgent = new OffensiveSecurityAgent({
|
|
7697
7703
|
system: PLAN_PHASE_SYSTEM_PROMPT,
|
|
@@ -7717,7 +7723,17 @@ async function runPentestSwarm(input) {
|
|
|
7717
7723
|
display
|
|
7718
7724
|
});
|
|
7719
7725
|
await planAgent.consume();
|
|
7726
|
+
eventBus?.emit("subagent-complete", {
|
|
7727
|
+
subagentId: `${subagentId}-plan`,
|
|
7728
|
+
status: "completed",
|
|
7729
|
+
parentSubagentId: subagentId
|
|
7730
|
+
});
|
|
7720
7731
|
} catch (planErr) {
|
|
7732
|
+
eventBus?.emit("subagent-complete", {
|
|
7733
|
+
subagentId: `${subagentId}-plan`,
|
|
7734
|
+
status: "failed",
|
|
7735
|
+
parentSubagentId: subagentId
|
|
7736
|
+
});
|
|
7721
7737
|
log5.warn(`Plan phase failed for ${subagentId}: ${planErr}`);
|
|
7722
7738
|
}
|
|
7723
7739
|
}
|
|
@@ -7786,7 +7802,7 @@ async function runPentestSwarm(input) {
|
|
|
7786
7802
|
}
|
|
7787
7803
|
async function runPentestWorkflow(input) {
|
|
7788
7804
|
if (input.fastStrike) {
|
|
7789
|
-
const { runFastStrike } = await import("./fastStrike-
|
|
7805
|
+
const { runFastStrike } = await import("./fastStrike-yraw4ht6.js");
|
|
7790
7806
|
return runFastStrike(input);
|
|
7791
7807
|
}
|
|
7792
7808
|
const {
|