@pensar/apex 2.1.3-canary.fff17bfd → 2.2.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.
Files changed (58) hide show
  1. package/build/agent-3cdfwxcd.js +19 -0
  2. package/build/agent-q5hwjdtb.js +27 -0
  3. package/build/{agent-c06jb5zv.js → agent-yayy5x2a.js} +10 -8
  4. package/build/{apps-mxhfapvz.js → apps-0es69e2s.js} +17 -16
  5. package/build/{auth-9ysskv2q.js → auth-q73k9bh9.js} +17 -16
  6. package/build/authentication-tqx2brcv.js +19 -0
  7. package/build/blackboxAgent-d0smgqt7.js +19 -0
  8. package/build/{blackboxPentest-pfs3d1nx.js → blackboxPentest-h28nykk5.js} +15 -14
  9. package/build/{cli-90dw3gm4.js → cli-1cf5vy5m.js} +9 -6
  10. package/build/{cli-f8tgnegf.js → cli-1f636vzd.js} +2 -2
  11. package/build/{cli-tg7mcs43.js → cli-1re2kv5v.js} +5 -3
  12. package/build/cli-2jn8104w.js +195 -0
  13. package/build/{cli-29yqhrjq.js → cli-3k1x5rn3.js} +1 -1
  14. package/build/{cli-k941a7ft.js → cli-4tc6888c.js} +1 -1
  15. package/build/{cli-qb3eddc7.js → cli-51dkmt5p.js} +1 -1
  16. package/build/{cli-v34r5t8t.js → cli-6kx46ck0.js} +6186 -513
  17. package/build/{cli-a1acedxf.js → cli-7e5ad5js.js} +15 -6
  18. package/build/{cli-8qb62k90.js → cli-7n43wz82.js} +1 -1
  19. package/build/{cli-fj04wady.js → cli-knqx15w6.js} +5 -2
  20. package/build/{cli-9wd7jy2s.js → cli-n114n8mk.js} +102 -21
  21. package/build/{cli-9h847y2w.js → cli-ptzy9ak5.js} +2 -2
  22. package/build/{cli-g6cjpbr9.js → cli-s43t5ay0.js} +1 -1
  23. package/build/{cli-nth9zebw.js → cli-tz9yg4ew.js} +1147 -336
  24. package/build/{cli-2cvp6x4p.js → cli-vgg6h2ax.js} +1 -1
  25. package/build/{cli-akhax3yn.js → cli-xbdn034b.js} +671 -105
  26. package/build/{cli-wkpsqyjc.js → cli-xpn9tsw0.js} +27 -5
  27. package/build/cli.js +48 -39
  28. package/build/{config-ky5za80x.js → config-xcf7rc6x.js} +3 -3
  29. package/build/{doctor-t94dqmcs.js → doctor-98zperf9.js} +7 -7
  30. package/build/fastStrike-9tm6bedh.js +156 -0
  31. package/build/{fixes-fv2zmk0m.js → fixes-1dry8j61.js} +17 -16
  32. package/build/{index-s2jr2ve2.js → index-0j880wqc.js} +70 -44
  33. package/build/{index-8mgv8hke.js → index-31rwrakh.js} +2 -2
  34. package/build/{index-b7zrdy9b.js → index-34h2nb6x.js} +3 -3
  35. package/build/{index-pmsx73c3.js → index-4hqbyzf5.js} +11 -9
  36. package/build/{index-qshyncep.js → index-6dbym5jy.js} +8 -7
  37. package/build/{index-pycryjc3.js → index-f6ttv7np.js} +4 -4
  38. package/build/{index-n1yh9e86.js → index-gq9h8j5j.js} +1 -1
  39. package/build/{index-rxskwf3k.js → index-pxwwcefn.js} +10 -10
  40. package/build/{issues-bwdnb233.js → issues-wjakj8yy.js} +28 -16
  41. package/build/{logs-2g3rsh9f.js → logs-ewyzcspy.js} +17 -16
  42. package/build/{offesecAgent-4ykghkvs.js → offesecAgent-7m9smy0t.js} +9 -9
  43. package/build/pentest-1cb5t0dt.js +29 -0
  44. package/build/{pentests-d9dt495f.js → pentests-1hcqjyk2.js} +17 -16
  45. package/build/targetedPentest-3x13kqvc.js +56 -0
  46. package/build/{targets-3n7wsm3g.js → targets-nqz8w37e.js} +17 -16
  47. package/build/threatModel-7f02av7y.js +27 -0
  48. package/build/{uninstall-jvjv6d2n.js → uninstall-p1q5pkx2.js} +1 -1
  49. package/build/{upload-x2b8s1xb.js → upload-x7etpfp4.js} +7 -7
  50. package/build/{utils-kx8jqmv0.js → utils-kw6yh5yn.js} +7 -7
  51. package/package.json +2 -2
  52. package/build/agent-7ab546zf.js +0 -19
  53. package/build/agent-dsqssedb.js +0 -25
  54. package/build/authentication-h1zxd74t.js +0 -19
  55. package/build/blackboxAgent-32zwxt6w.js +0 -19
  56. package/build/pentest-91bygv3h.js +0 -28
  57. package/build/targetedPentest-eavq5h7v.js +0 -43
  58. package/build/threatModel-2re9tykx.js +0 -26
@@ -0,0 +1,19 @@
1
+ import {
2
+ CodeAgent
3
+ } from "./cli-knqx15w6.js";
4
+ import"./cli-9fsre5pt.js";
5
+ import"./cli-ptzy9ak5.js";
6
+ import"./cli-xbdn034b.js";
7
+ import"./cli-s43t5ay0.js";
8
+ import"./cli-c8131c4q.js";
9
+ import"./cli-6kx46ck0.js";
10
+ import"./cli-4tc6888c.js";
11
+ import"./cli-3k1x5rn3.js";
12
+ import"./cli-gpnb45ck.js";
13
+ import"./cli-51dkmt5p.js";
14
+ import"./cli-7n43wz82.js";
15
+ import"./cli-1f636vzd.js";
16
+ import"./cli-8rxa073f.js";
17
+ export {
18
+ CodeAgent
19
+ };
@@ -0,0 +1,27 @@
1
+ import {
2
+ PentestResponseSchema,
3
+ TargetedPentestAgent,
4
+ buildPentestActiveTools,
5
+ buildPentestPrompt,
6
+ buildPentestSystemPrompt
7
+ } from "./cli-n114n8mk.js";
8
+ import"./cli-9fsre5pt.js";
9
+ import"./cli-ptzy9ak5.js";
10
+ import"./cli-xbdn034b.js";
11
+ import"./cli-s43t5ay0.js";
12
+ import"./cli-c8131c4q.js";
13
+ import"./cli-6kx46ck0.js";
14
+ import"./cli-4tc6888c.js";
15
+ import"./cli-3k1x5rn3.js";
16
+ import"./cli-gpnb45ck.js";
17
+ import"./cli-51dkmt5p.js";
18
+ import"./cli-7n43wz82.js";
19
+ import"./cli-1f636vzd.js";
20
+ import"./cli-8rxa073f.js";
21
+ export {
22
+ buildPentestSystemPrompt,
23
+ buildPentestPrompt,
24
+ buildPentestActiveTools,
25
+ TargetedPentestAgent,
26
+ PentestResponseSchema
27
+ };
@@ -1,23 +1,23 @@
1
1
  import {
2
2
  OffensiveSecurityAgent
3
- } from "./cli-akhax3yn.js";
3
+ } from "./cli-xbdn034b.js";
4
4
  import {
5
5
  detectOSAndEnhancePrompt
6
- } from "./cli-g6cjpbr9.js";
6
+ } from "./cli-s43t5ay0.js";
7
7
  import"./cli-c8131c4q.js";
8
8
  import {
9
9
  init_dist,
10
10
  stepCountIs
11
- } from "./cli-v34r5t8t.js";
12
- import"./cli-k941a7ft.js";
11
+ } from "./cli-6kx46ck0.js";
12
+ import"./cli-4tc6888c.js";
13
13
  import {
14
14
  exports_external,
15
15
  init_zod
16
- } from "./cli-29yqhrjq.js";
16
+ } from "./cli-3k1x5rn3.js";
17
17
  import"./cli-gpnb45ck.js";
18
- import"./cli-qb3eddc7.js";
19
- import"./cli-8qb62k90.js";
20
- import"./cli-f8tgnegf.js";
18
+ import"./cli-51dkmt5p.js";
19
+ import"./cli-7n43wz82.js";
20
+ import"./cli-1f636vzd.js";
21
21
  import"./cli-8rxa073f.js";
22
22
 
23
23
  // src/core/agents/specialized/findingJudge/agent.ts
@@ -207,8 +207,10 @@ class FindingJudgeAgent extends OffensiveSecurityAgent {
207
207
  eventBus: opts.eventBus,
208
208
  sandbox: opts.sandbox,
209
209
  enableThinking: opts.enableThinking,
210
+ thinkingEffort: opts.thinkingEffort,
210
211
  openAIReasoningEffort: opts.openAIReasoningEffort,
211
212
  subagentId: opts.subagentId ?? "finding-judge",
213
+ subagentName: opts.subagentName ?? "Finding Judge",
212
214
  activeTools: [...FINDING_JUDGE_ACTIVE_TOOLS],
213
215
  responseSchema: FindingJudgeOutputSchema,
214
216
  stopWhen: stepCountIs(60)
@@ -12,26 +12,27 @@ import {
12
12
  searchEndpoints,
13
13
  updateApp,
14
14
  updateEndpoint
15
- } from "./cli-90dw3gm4.js";
16
- import"./cli-nth9zebw.js";
17
- import"./cli-tg7mcs43.js";
18
- import"./cli-9wd7jy2s.js";
19
- import"./cli-wkpsqyjc.js";
20
- import"./cli-fj04wady.js";
21
- import"./cli-a1acedxf.js";
15
+ } from "./cli-1cf5vy5m.js";
16
+ import"./cli-tz9yg4ew.js";
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";
22
23
  import"./cli-9fsre5pt.js";
23
- import"./cli-9h847y2w.js";
24
- import"./cli-akhax3yn.js";
25
- import"./cli-g6cjpbr9.js";
24
+ import"./cli-ptzy9ak5.js";
25
+ import"./cli-xbdn034b.js";
26
+ import"./cli-s43t5ay0.js";
26
27
  import"./cli-fw5r7pfj.js";
27
28
  import"./cli-c8131c4q.js";
28
- import"./cli-v34r5t8t.js";
29
- import"./cli-k941a7ft.js";
30
- import"./cli-29yqhrjq.js";
29
+ import"./cli-6kx46ck0.js";
30
+ import"./cli-4tc6888c.js";
31
+ import"./cli-3k1x5rn3.js";
31
32
  import"./cli-gpnb45ck.js";
32
- import"./cli-qb3eddc7.js";
33
- import"./cli-8qb62k90.js";
34
- import"./cli-f8tgnegf.js";
33
+ import"./cli-51dkmt5p.js";
34
+ import"./cli-7n43wz82.js";
35
+ import"./cli-1f636vzd.js";
35
36
  import"./cli-8rxa073f.js";
36
37
 
37
38
  // src/cli/apps.ts
@@ -1,18 +1,19 @@
1
1
  #!/usr/bin/env bun
2
- import"./cli-90dw3gm4.js";
3
- import"./cli-nth9zebw.js";
4
- import"./cli-tg7mcs43.js";
5
- import"./cli-9wd7jy2s.js";
6
- import"./cli-wkpsqyjc.js";
7
- import"./cli-fj04wady.js";
8
- import"./cli-a1acedxf.js";
2
+ import"./cli-1cf5vy5m.js";
3
+ import"./cli-tz9yg4ew.js";
4
+ import"./cli-1re2kv5v.js";
5
+ import"./cli-2jn8104w.js";
6
+ import"./cli-n114n8mk.js";
7
+ import"./cli-xpn9tsw0.js";
8
+ import"./cli-knqx15w6.js";
9
+ import"./cli-7e5ad5js.js";
9
10
  import"./cli-9fsre5pt.js";
10
- import"./cli-9h847y2w.js";
11
- import"./cli-akhax3yn.js";
12
- import"./cli-g6cjpbr9.js";
11
+ import"./cli-ptzy9ak5.js";
12
+ import"./cli-xbdn034b.js";
13
+ import"./cli-s43t5ay0.js";
13
14
  import"./cli-fw5r7pfj.js";
14
15
  import"./cli-c8131c4q.js";
15
- import"./cli-v34r5t8t.js";
16
+ import"./cli-6kx46ck0.js";
16
17
  import {
17
18
  disconnect,
18
19
  fetchWorkspaces,
@@ -25,15 +26,15 @@ import {
25
26
  pollWorkOSToken,
26
27
  selectWorkspace,
27
28
  startDeviceFlow
28
- } from "./cli-k941a7ft.js";
29
- import"./cli-29yqhrjq.js";
29
+ } from "./cli-4tc6888c.js";
30
+ import"./cli-3k1x5rn3.js";
30
31
  import"./cli-gpnb45ck.js";
31
32
  import {
32
33
  config,
33
34
  init_config
34
- } from "./cli-qb3eddc7.js";
35
- import"./cli-8qb62k90.js";
36
- import"./cli-f8tgnegf.js";
35
+ } from "./cli-51dkmt5p.js";
36
+ import"./cli-7n43wz82.js";
37
+ import"./cli-1f636vzd.js";
37
38
  import {
38
39
  __require
39
40
  } from "./cli-8rxa073f.js";
@@ -0,0 +1,19 @@
1
+ import {
2
+ runAuthenticationAgent
3
+ } from "./cli-xpn9tsw0.js";
4
+ import"./cli-9fsre5pt.js";
5
+ import"./cli-ptzy9ak5.js";
6
+ import"./cli-xbdn034b.js";
7
+ import"./cli-s43t5ay0.js";
8
+ import"./cli-c8131c4q.js";
9
+ import"./cli-6kx46ck0.js";
10
+ import"./cli-4tc6888c.js";
11
+ import"./cli-3k1x5rn3.js";
12
+ import"./cli-gpnb45ck.js";
13
+ import"./cli-51dkmt5p.js";
14
+ import"./cli-7n43wz82.js";
15
+ import"./cli-1f636vzd.js";
16
+ import"./cli-8rxa073f.js";
17
+ export {
18
+ runAuthenticationAgent
19
+ };
@@ -0,0 +1,19 @@
1
+ import {
2
+ BlackboxAttackSurfaceAgent
3
+ } from "./cli-1re2kv5v.js";
4
+ import"./cli-9fsre5pt.js";
5
+ import"./cli-ptzy9ak5.js";
6
+ import"./cli-xbdn034b.js";
7
+ import"./cli-s43t5ay0.js";
8
+ import"./cli-c8131c4q.js";
9
+ import"./cli-6kx46ck0.js";
10
+ import"./cli-4tc6888c.js";
11
+ import"./cli-3k1x5rn3.js";
12
+ import"./cli-gpnb45ck.js";
13
+ import"./cli-51dkmt5p.js";
14
+ import"./cli-7n43wz82.js";
15
+ import"./cli-1f636vzd.js";
16
+ import"./cli-8rxa073f.js";
17
+ export {
18
+ BlackboxAttackSurfaceAgent
19
+ };
@@ -1,23 +1,24 @@
1
1
  import {
2
2
  runPentestWorkflow
3
- } from "./cli-nth9zebw.js";
4
- import"./cli-tg7mcs43.js";
5
- import"./cli-9wd7jy2s.js";
6
- import"./cli-fj04wady.js";
7
- import"./cli-a1acedxf.js";
3
+ } from "./cli-tz9yg4ew.js";
4
+ import"./cli-1re2kv5v.js";
5
+ import"./cli-2jn8104w.js";
6
+ import"./cli-n114n8mk.js";
7
+ import"./cli-knqx15w6.js";
8
+ import"./cli-7e5ad5js.js";
8
9
  import"./cli-9fsre5pt.js";
9
- import"./cli-9h847y2w.js";
10
- import"./cli-akhax3yn.js";
11
- import"./cli-g6cjpbr9.js";
10
+ import"./cli-ptzy9ak5.js";
11
+ import"./cli-xbdn034b.js";
12
+ import"./cli-s43t5ay0.js";
12
13
  import"./cli-fw5r7pfj.js";
13
14
  import"./cli-c8131c4q.js";
14
- import"./cli-v34r5t8t.js";
15
- import"./cli-k941a7ft.js";
16
- import"./cli-29yqhrjq.js";
15
+ import"./cli-6kx46ck0.js";
16
+ import"./cli-4tc6888c.js";
17
+ import"./cli-3k1x5rn3.js";
17
18
  import"./cli-gpnb45ck.js";
18
- import"./cli-qb3eddc7.js";
19
- import"./cli-8qb62k90.js";
20
- import"./cli-f8tgnegf.js";
19
+ import"./cli-51dkmt5p.js";
20
+ import"./cli-7n43wz82.js";
21
+ import"./cli-1f636vzd.js";
21
22
  import"./cli-8rxa073f.js";
22
23
 
23
24
  // src/core/api/blackboxPentest.ts
@@ -4,27 +4,27 @@ import {
4
4
  OffensiveSecurityAgent,
5
5
  SKILL_TOOL_NAMES,
6
6
  buildBaseSystemPrompt
7
- } from "./cli-akhax3yn.js";
7
+ } from "./cli-xbdn034b.js";
8
8
  import {
9
9
  init_dist,
10
10
  init_session,
11
11
  sessions,
12
12
  stepCountIs
13
- } from "./cli-v34r5t8t.js";
13
+ } from "./cli-6kx46ck0.js";
14
14
  import {
15
15
  ensureValidToken,
16
16
  getPensarApiUrl,
17
17
  init_auth,
18
18
  init_constants
19
- } from "./cli-k941a7ft.js";
19
+ } from "./cli-4tc6888c.js";
20
20
  import {
21
21
  exports_external,
22
22
  init_zod
23
- } from "./cli-29yqhrjq.js";
23
+ } from "./cli-3k1x5rn3.js";
24
24
  import {
25
25
  config,
26
26
  init_config
27
- } from "./cli-qb3eddc7.js";
27
+ } from "./cli-51dkmt5p.js";
28
28
  import {
29
29
  __commonJS,
30
30
  __require
@@ -7132,6 +7132,9 @@ async function getIssue(issueId) {
7132
7132
  async function updateIssue(issueId, data) {
7133
7133
  return apiRequest("PATCH", `/issues/${issueId}`, data);
7134
7134
  }
7135
+ async function retestIssue(issueId) {
7136
+ return apiRequest("POST", `/issues/${issueId}/retest`);
7137
+ }
7135
7138
  async function listFixes(issueId) {
7136
7139
  return apiRequest("GET", `/issues/${issueId}/fixes`);
7137
7140
  }
@@ -8304,4 +8307,4 @@ Working directory: ${input.codebasePath}`;
8304
8307
  });
8305
8308
  return { session, outputPath: input.outputPath };
8306
8309
  }
8307
- export { listApps, getApp, createApp, updateApp, deleteApp, listEndpoints, getEndpoint, createEndpoint, updateEndpoint, deleteEndpoint, searchApps, searchEndpoints, listScans, getScan, listPentestTargets, dispatchPentest, listIssues, getIssue, updateIssue, listFixes, getFix, listAgentLogs, searchAgentLogs, listTargetLogs, searchTargetLogs, runOffensiveSecurityAgent, buildPentestPrompt, buildThreatModelPrompt, createSkillsRegistry, runThreatModelWorkflow };
8310
+ export { listApps, getApp, createApp, updateApp, deleteApp, listEndpoints, getEndpoint, createEndpoint, updateEndpoint, deleteEndpoint, searchApps, searchEndpoints, listScans, getScan, listPentestTargets, dispatchPentest, listIssues, getIssue, updateIssue, retestIssue, listFixes, getFix, listAgentLogs, searchAgentLogs, listTargetLogs, searchTargetLogs, runOffensiveSecurityAgent, buildPentestPrompt, buildThreatModelPrompt, createSkillsRegistry, runThreatModelWorkflow };
@@ -25,7 +25,7 @@ var init_package = __esm(() => {
25
25
  "@opentelemetry/api": "^1.9.1",
26
26
  "@opentui/core": "^0.1.107",
27
27
  "@opentui/react": "^0.1.107",
28
- "@pensar/surface": "0.2.2",
28
+ "@pensar/surface": "0.3.0",
29
29
  "@playwright/mcp": "^0.0.54",
30
30
  ai: "^6.0.208",
31
31
  "camoufox-js": "^0.11.1",
@@ -120,7 +120,7 @@ var init_package = __esm(() => {
120
120
  tsc: "tsc --noEmit"
121
121
  },
122
122
  type: "module",
123
- version: "2.1.3-canary.fff17bfd"
123
+ version: "2.2.0"
124
124
  };
125
125
  });
126
126
 
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  OffensiveSecurityAgent
3
- } from "./cli-akhax3yn.js";
3
+ } from "./cli-xbdn034b.js";
4
4
  import {
5
5
  detectOSAndEnhancePrompt
6
- } from "./cli-g6cjpbr9.js";
6
+ } from "./cli-s43t5ay0.js";
7
7
  import {
8
8
  hasToolCall,
9
9
  init_dist,
10
10
  stepCountIs
11
- } from "./cli-v34r5t8t.js";
11
+ } from "./cli-6kx46ck0.js";
12
12
 
13
13
  // src/core/agents/specialized/attackSurface/blackboxAgent.ts
14
14
  init_dist();
@@ -387,6 +387,7 @@ class BlackboxAttackSurfaceAgent extends OffensiveSecurityAgent {
387
387
  eventBus,
388
388
  subagentId,
389
389
  enableThinking,
390
+ thinkingEffort,
390
391
  openAIReasoningEffort
391
392
  } = opts;
392
393
  const target = opts.target ?? opts.cwd;
@@ -416,6 +417,7 @@ class BlackboxAttackSurfaceAgent extends OffensiveSecurityAgent {
416
417
  eventBus,
417
418
  subagentId,
418
419
  enableThinking,
420
+ thinkingEffort,
419
421
  openAIReasoningEffort,
420
422
  messages: opts.messages,
421
423
  activeTools: [
@@ -0,0 +1,195 @@
1
+ import {
2
+ EvidenceFileEntrySchema
3
+ } from "./cli-ptzy9ak5.js";
4
+ import {
5
+ CweEntrySchema,
6
+ ValidatedCweEntrySchema,
7
+ hasCanonicalName
8
+ } from "./cli-xbdn034b.js";
9
+ import {
10
+ exports_external,
11
+ init_zod
12
+ } from "./cli-3k1x5rn3.js";
13
+
14
+ // src/core/report/schemas.ts
15
+ init_zod();
16
+ var PentestReportFindingSchema = exports_external.object({
17
+ title: exports_external.string(),
18
+ severity: exports_external.enum(["CRITICAL", "HIGH", "MEDIUM", "LOW"]),
19
+ description: exports_external.string(),
20
+ impact: exports_external.string(),
21
+ evidence: exports_external.string(),
22
+ endpoint: exports_external.string(),
23
+ pocPath: exports_external.string(),
24
+ remediation: exports_external.string(),
25
+ references: exports_external.string().optional(),
26
+ cwes: exports_external.array(ValidatedCweEntrySchema.or(CweEntrySchema)).optional(),
27
+ rootCauseGroup: exports_external.string().optional(),
28
+ relatedFindings: exports_external.array(exports_external.string()).optional(),
29
+ rootCauseLead: exports_external.boolean().optional(),
30
+ evidenceFiles: exports_external.array(EvidenceFileEntrySchema).optional()
31
+ });
32
+ var PentestReportSchema = exports_external.object({
33
+ version: exports_external.string().regex(/^1\.\d+$/),
34
+ metadata: exports_external.object({
35
+ target: exports_external.string(),
36
+ model: exports_external.string(),
37
+ timestamp: exports_external.string(),
38
+ sessionId: exports_external.string(),
39
+ mode: exports_external.enum(["blackbox", "whitebox", "targeted"])
40
+ }),
41
+ summary: exports_external.object({
42
+ totalFindings: exports_external.number(),
43
+ bySeverity: exports_external.object({
44
+ CRITICAL: exports_external.number(),
45
+ HIGH: exports_external.number(),
46
+ MEDIUM: exports_external.number(),
47
+ LOW: exports_external.number()
48
+ })
49
+ }),
50
+ findings: exports_external.array(PentestReportFindingSchema)
51
+ });
52
+ var REPORT_VERSION = "1.0";
53
+
54
+ // src/core/report/builder.ts
55
+ var SEVERITY_ORDER = ["CRITICAL", "HIGH", "MEDIUM", "LOW"];
56
+ function buildPentestReport(findings, context) {
57
+ const sorted = [...findings].sort((a, b) => SEVERITY_ORDER.indexOf(a.severity) - SEVERITY_ORDER.indexOf(b.severity));
58
+ const bySeverity = { CRITICAL: 0, HIGH: 0, MEDIUM: 0, LOW: 0 };
59
+ for (const f of findings) {
60
+ bySeverity[f.severity]++;
61
+ }
62
+ return {
63
+ version: REPORT_VERSION,
64
+ metadata: {
65
+ target: context.target,
66
+ model: context.model,
67
+ timestamp: new Date().toISOString(),
68
+ sessionId: context.sessionId,
69
+ mode: context.mode
70
+ },
71
+ summary: {
72
+ totalFindings: findings.length,
73
+ bySeverity
74
+ },
75
+ findings: sorted.map((f) => ({
76
+ title: f.title,
77
+ severity: f.severity,
78
+ description: f.description,
79
+ impact: f.impact,
80
+ evidence: f.evidence,
81
+ endpoint: f.endpoint,
82
+ pocPath: f.pocPath,
83
+ remediation: f.remediation,
84
+ references: f.references,
85
+ cwes: f.cwes,
86
+ rootCauseGroup: f.rootCauseGroup,
87
+ relatedFindings: f.relatedFindings,
88
+ rootCauseLead: f.rootCauseLead,
89
+ evidenceFiles: f.evidenceFiles
90
+ }))
91
+ };
92
+ }
93
+
94
+ // src/core/report/renderers/json.ts
95
+ function renderJson(report) {
96
+ return JSON.stringify(report, null, 2);
97
+ }
98
+
99
+ // src/core/report/renderers/markdown.ts
100
+ function renderMarkdown(report) {
101
+ const { metadata, findings, summary } = report;
102
+ const header = [
103
+ `# Pentest Report — ${metadata.target}`,
104
+ "",
105
+ `**Date:** ${metadata.timestamp} `,
106
+ `**Session:** ${metadata.sessionId} `,
107
+ `**Model:** ${metadata.model} `,
108
+ `**Mode:** ${metadata.mode}`,
109
+ "",
110
+ `**Findings:** ${summary.totalFindings}`,
111
+ ""
112
+ ];
113
+ if (findings.length === 0) {
114
+ return [
115
+ ...header,
116
+ "No findings were identified during this assessment.",
117
+ ""
118
+ ].join(`
119
+ `);
120
+ }
121
+ const body = findings.map((finding) => renderFinding(finding, metadata)).join(`
122
+ `);
123
+ return [...header, body].join(`
124
+ `);
125
+ }
126
+ function renderFinding(finding, metadata) {
127
+ const lines = [
128
+ `# ${finding.title}`,
129
+ "",
130
+ `**Severity:** ${finding.severity} `,
131
+ `**Target:** ${metadata.target} `,
132
+ `**Endpoint:** ${finding.endpoint} `,
133
+ `**Date:** ${metadata.timestamp} `,
134
+ `**Session:** ${metadata.sessionId}`,
135
+ "",
136
+ "## Description",
137
+ "",
138
+ finding.description,
139
+ "",
140
+ "## Impact",
141
+ "",
142
+ finding.impact,
143
+ "",
144
+ "## Evidence",
145
+ "",
146
+ "```",
147
+ finding.evidence,
148
+ "```",
149
+ "",
150
+ ...finding.evidenceFiles?.length ? [
151
+ "## Evidence Files",
152
+ "",
153
+ ...finding.evidenceFiles.map((ef) => `- **[${ef.type}]** \`${ef.path}\` — ${ef.description}`),
154
+ ""
155
+ ] : [],
156
+ ...finding.cwes?.length ? [
157
+ "## CWE Classification",
158
+ "",
159
+ ...finding.cwes.map((cwe) => `- **${cwe.id}**${hasCanonicalName(cwe) ? `: ${cwe.name}` : ""} — ${cwe.reasoning}`),
160
+ ""
161
+ ] : [],
162
+ ...finding.rootCauseGroup ? [
163
+ "## Root Cause Group",
164
+ "",
165
+ `**Group:** \`${finding.rootCauseGroup}\``,
166
+ ...finding.relatedFindings?.length ? [
167
+ "",
168
+ "**Related Findings:**",
169
+ ...finding.relatedFindings.map((rf) => `- ${rf}`)
170
+ ] : [],
171
+ ""
172
+ ] : [],
173
+ "## POC",
174
+ "",
175
+ `Path: \`${finding.pocPath}\``,
176
+ "",
177
+ "## Remediation",
178
+ "",
179
+ finding.remediation,
180
+ ...finding.references ? ["", `## References`, "", finding.references] : [],
181
+ "",
182
+ "---",
183
+ "",
184
+ "*This finding was automatically documented by the Pensar penetration testing agent.*",
185
+ ""
186
+ ];
187
+ return lines.join(`
188
+ `);
189
+ }
190
+
191
+ // src/core/report/index.ts
192
+ var REPORT_FILENAME_MD = "pentest-report.md";
193
+ var REPORT_FILENAME_JSON = "pentest-report.json";
194
+
195
+ export { buildPentestReport, renderJson, renderMarkdown, REPORT_FILENAME_MD, REPORT_FILENAME_JSON };
@@ -24438,4 +24438,4 @@ var require_src = __commonJS((exports) => {
24438
24438
  };
24439
24439
  });
24440
24440
 
24441
- export { AISDKError, APICallError, EmptyResponseBodyError, getErrorMessage, InvalidArgumentError, InvalidPromptError, InvalidResponseDataError, JSONParseError, LoadAPIKeyError, LoadSettingError, NoContentGeneratedError, NoSuchModelError, TooManyEmbeddingValuesForCallError, TypeValidationError, UnsupportedFunctionalityError, isJSONArray, isJSONObject, init_dist, safeParse, toJSONSchema, init_core2 as init_core, exports_iso, safeParseAsync2 as safeParseAsync, string2 as string, number2 as number, boolean2 as boolean, _null3 as _null, unknown, array, object, looseObject, union, discriminatedUnion, intersection, record, _enum2 as _enum, literal, optional, custom, preprocess, exports_external, init_v4, ZodFirstPartyTypeKind2 as ZodFirstPartyTypeKind, init_v3, EventSourceParserStream, init_stream, combineHeaders, createToolNameMapping, delay, DelayedPromise, extractResponseHeaders, convertBase64ToUint8Array, convertUint8ArrayToBase64, convertToBase64, convertToFormData, cancelResponseBody, DownloadError, fetchWithValidatedRedirects, DEFAULT_MAX_DOWNLOAD_SIZE, readResponseWithSizeLimit, downloadBlob, createIdGenerator, generateId, getErrorMessage2 as getErrorMessage1, isAbortError, getRuntimeEnvironmentUserAgent, normalizeHeaders, withUserAgentSuffix, getFromApi, isNonNullable, isSameOrigin, isUrlSupported, loadApiKey, loadOptionalSetting, loadSetting, lazySchema, jsonSchema, asSchema, zodSchema, validateTypes, safeValidateTypes, safeParseJSON, isParsableJson, parseJsonEventStream, parseProviderOptions, postJsonToApi, postFormDataToApi, tool, dynamicTool, createProviderToolFactory, createProviderToolFactoryWithOutputSchema, resolve, createJsonErrorResponseHandler, createEventSourceResponseHandler, createJsonResponseHandler, stripFileExtension, withoutTrailingSlash, executeTool, init_dist3 as init_dist1, zod_default, init_zod, GatewayError, GatewayAuthenticationError, createGatewayProvider, gateway, init_dist4 as init_dist2, require_src };
24441
+ export { AISDKError, APICallError, EmptyResponseBodyError, getErrorMessage, InvalidArgumentError, InvalidPromptError, InvalidResponseDataError, JSONParseError, LoadAPIKeyError, LoadSettingError, NoContentGeneratedError, NoSuchModelError, TooManyEmbeddingValuesForCallError, TypeValidationError, UnsupportedFunctionalityError, isJSONArray, isJSONObject, init_dist, safeParse, toJSONSchema, init_core2 as init_core, exports_iso, safeParseAsync2 as safeParseAsync, string2 as string, number2 as number, boolean2 as boolean, _null3 as _null, unknown, array, object, looseObject, union, discriminatedUnion, intersection, record, _enum2 as _enum, literal, optional, custom, preprocess, exports_external, init_v4, ZodFirstPartyTypeKind2 as ZodFirstPartyTypeKind, init_v3, EventSourceParserStream, init_stream, combineHeaders, createToolNameMapping, delay, DelayedPromise, extractResponseHeaders, convertBase64ToUint8Array, convertUint8ArrayToBase64, convertToBase64, convertToFormData, cancelResponseBody, DownloadError, fetchWithValidatedRedirects, DEFAULT_MAX_DOWNLOAD_SIZE, readResponseWithSizeLimit, downloadBlob, createIdGenerator, generateId, getErrorMessage2 as getErrorMessage1, isAbortError, getRuntimeEnvironmentUserAgent, normalizeHeaders, withUserAgentSuffix, getFromApi, isNonNullable, isSameOrigin, isUrlSupported, loadApiKey, loadOptionalSetting, loadSetting, lazySchema, jsonSchema, asSchema, zodSchema, validateTypes, safeValidateTypes, parseJSON, safeParseJSON, isParsableJson, parseJsonEventStream, parseProviderOptions, postJsonToApi, postFormDataToApi, tool, dynamicTool, createProviderToolFactory, createProviderToolFactoryWithOutputSchema, resolve, createJsonErrorResponseHandler, createEventSourceResponseHandler, createJsonResponseHandler, stripFileExtension, withoutTrailingSlash, executeTool, init_dist3 as init_dist1, zod_default, init_zod, GatewayError, GatewayAuthenticationError, createGatewayProvider, gateway, init_dist4 as init_dist2, require_src };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  config,
3
3
  init_config
4
- } from "./cli-qb3eddc7.js";
4
+ } from "./cli-51dkmt5p.js";
5
5
  import {
6
6
  __esm
7
7
  } from "./cli-8rxa073f.js";
@@ -3,7 +3,7 @@ import {
3
3
  init,
4
4
  init_config,
5
5
  update
6
- } from "./cli-8qb62k90.js";
6
+ } from "./cli-7n43wz82.js";
7
7
  import {
8
8
  __esm
9
9
  } from "./cli-8rxa073f.js";