@pensar/apex 2.1.2 → 2.1.3-canary.15e34bf1

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 (55) hide show
  1. package/build/agent-3ktj43z9.js +19 -0
  2. package/build/{agent-vdrtakz4.js → agent-3s7c1qrd.js} +10 -10
  3. package/build/{agent-737mxp3v.js → agent-v3d0ssgy.js} +8 -8
  4. package/build/{apps-j0bwey0w.js → apps-rk071a9p.js} +16 -16
  5. package/build/{auth-5stxpmga.js → auth-cnc8b1tj.js} +16 -16
  6. package/build/authentication-hrwp9bw8.js +19 -0
  7. package/build/blackboxAgent-fzp5cyvr.js +19 -0
  8. package/build/{blackboxPentest-2edr9rj3.js → blackboxPentest-b6cpqtkh.js} +14 -14
  9. package/build/{cli-9vzc18m5.js → cli-1kgqgq0a.js} +30 -17
  10. package/build/{cli-f7d23ded.js → cli-29yqhrjq.js} +936 -1775
  11. package/build/{cli-0gk2x2sc.js → cli-2zbvtnrx.js} +16 -18
  12. package/build/{cli-gbkj2has.js → cli-49kwknjj.js} +3 -3
  13. package/build/{cli-35czfv00.js → cli-4xz6rqg5.js} +70821 -79369
  14. package/build/{cli-ks60cc3h.js → cli-7y6dwmn8.js} +30 -30
  15. package/build/{cli-whtdyc0e.js → cli-84pr5q33.js} +4 -4
  16. package/build/{cli-dqkdnd3c.js → cli-8vaa0frx.js} +88 -49
  17. package/build/{cli-jd0c0b91.js → cli-9m9d9vtm.js} +1 -1
  18. package/build/{cli-hj3t87r2.js → cli-dh7tfkre.js} +1 -1
  19. package/build/{cli-6vs0mtsb.js → cli-eh6nrt6s.js} +2 -2
  20. package/build/{cli-9z6vwf30.js → cli-h7w8nj1x.js} +1 -1
  21. package/build/{cli-v1aqbv58.js → cli-nm2jskqg.js} +25040 -26995
  22. package/build/{cli-6wwpk9d9.js → cli-r5n86ej6.js} +1 -1
  23. package/build/{cli-xnnkeg5p.js → cli-td2vwxvv.js} +1 -1
  24. package/build/{cli-yjbkaqvy.js → cli-xe08y0nv.js} +43 -13
  25. package/build/{cli-tw3fe8bj.js → cli-yqtxtvg8.js} +2 -2
  26. package/build/cli.js +109 -88
  27. package/build/{config-s5ryv5ez.js → config-nvgzsffk.js} +3 -3
  28. package/build/{doctor-f08gegwc.js → doctor-785qvedj.js} +7 -7
  29. package/build/{fixes-qf4s92z2.js → fixes-xhr8ghx7.js} +16 -16
  30. package/build/{index-s8gw83d6.js → index-2edcw64j.js} +17 -11
  31. package/build/{index-sqjve2bm.js → index-e9rxwzqv.js} +2 -2
  32. package/build/{index-gakk2t5q.js → index-kx3w10s2.js} +18 -18
  33. package/build/{index-mgng15va.js → index-n1yh9e86.js} +909 -456
  34. package/build/{index-exvkbve0.js → index-ng1a7q8g.js} +4 -4
  35. package/build/{index-x4xefngs.js → index-qcf9f2n7.js} +3 -3
  36. package/build/{index-5h1hjhzw.js → index-y5bdx5j1.js} +10 -10
  37. package/build/{index-c6qz0gve.js → index-z35ctxx8.js} +7 -7
  38. package/build/{issues-5anqrh2j.js → issues-jwfdctks.js} +16 -16
  39. package/build/{logs-q6ankt6m.js → logs-8h7pwx7s.js} +16 -16
  40. package/build/{main-3zneyg7p.js → main-3d7dfdvs.js} +17 -93
  41. package/build/{offesecAgent-hsej0pfc.js → offesecAgent-yxaxnxwk.js} +9 -9
  42. package/build/pentest-a87kxj2v.js +28 -0
  43. package/build/{pentests-hyx3c3qa.js → pentests-6nhr9rdv.js} +16 -16
  44. package/build/{targetedPentest-ws0a7frk.js → targetedPentest-jyzcm9cx.js} +18 -11
  45. package/build/{targets-9cqrshet.js → targets-wbxhcpb8.js} +16 -16
  46. package/build/threatModel-0qpzh1jb.js +26 -0
  47. package/build/{uninstall-1j469qj7.js → uninstall-57tdyecc.js} +1 -1
  48. package/build/{upload-ymvhkyq5.js → upload-tvad5wre.js} +7 -7
  49. package/build/{utils-d1ed6jzf.js → utils-e14mz7h9.js} +6 -6
  50. package/package.json +30 -30
  51. package/build/agent-8w9h3tnw.js +0 -19
  52. package/build/authentication-qswvctj4.js +0 -19
  53. package/build/blackboxAgent-vwm9t3h4.js +0 -19
  54. package/build/pentest-1e30q7rs.js +0 -28
  55. package/build/threatModel-z9b213x8.js +0 -26
@@ -0,0 +1,19 @@
1
+ import {
2
+ CodeAgent
3
+ } from "./cli-eh6nrt6s.js";
4
+ import"./cli-9fsre5pt.js";
5
+ import"./cli-yqtxtvg8.js";
6
+ import"./cli-4xz6rqg5.js";
7
+ import"./cli-r5n86ej6.js";
8
+ import"./cli-c8131c4q.js";
9
+ import"./cli-nm2jskqg.js";
10
+ import"./cli-dh7tfkre.js";
11
+ import"./cli-29yqhrjq.js";
12
+ import"./cli-gpnb45ck.js";
13
+ import"./cli-h7w8nj1x.js";
14
+ import"./cli-td2vwxvv.js";
15
+ import"./cli-7y6dwmn8.js";
16
+ import"./cli-8rxa073f.js";
17
+ export {
18
+ CodeAgent
19
+ };
@@ -3,19 +3,19 @@ import {
3
3
  buildPentestActiveTools,
4
4
  buildPentestPrompt,
5
5
  buildPentestSystemPrompt
6
- } from "./cli-yjbkaqvy.js";
6
+ } from "./cli-xe08y0nv.js";
7
7
  import"./cli-9fsre5pt.js";
8
- import"./cli-tw3fe8bj.js";
9
- import"./cli-35czfv00.js";
10
- import"./cli-6wwpk9d9.js";
8
+ import"./cli-yqtxtvg8.js";
9
+ import"./cli-4xz6rqg5.js";
10
+ import"./cli-r5n86ej6.js";
11
11
  import"./cli-c8131c4q.js";
12
- import"./cli-v1aqbv58.js";
13
- import"./cli-hj3t87r2.js";
14
- import"./cli-f7d23ded.js";
12
+ import"./cli-nm2jskqg.js";
13
+ import"./cli-dh7tfkre.js";
14
+ import"./cli-29yqhrjq.js";
15
15
  import"./cli-gpnb45ck.js";
16
- import"./cli-9z6vwf30.js";
17
- import"./cli-xnnkeg5p.js";
18
- import"./cli-ks60cc3h.js";
16
+ import"./cli-h7w8nj1x.js";
17
+ import"./cli-td2vwxvv.js";
18
+ import"./cli-7y6dwmn8.js";
19
19
  import"./cli-8rxa073f.js";
20
20
  export {
21
21
  buildPentestSystemPrompt,
@@ -1,23 +1,23 @@
1
1
  import {
2
2
  OffensiveSecurityAgent
3
- } from "./cli-35czfv00.js";
3
+ } from "./cli-4xz6rqg5.js";
4
4
  import {
5
5
  detectOSAndEnhancePrompt
6
- } from "./cli-6wwpk9d9.js";
6
+ } from "./cli-r5n86ej6.js";
7
7
  import"./cli-c8131c4q.js";
8
8
  import {
9
9
  init_dist,
10
10
  stepCountIs
11
- } from "./cli-v1aqbv58.js";
12
- import"./cli-hj3t87r2.js";
11
+ } from "./cli-nm2jskqg.js";
12
+ import"./cli-dh7tfkre.js";
13
13
  import {
14
14
  exports_external,
15
15
  init_zod
16
- } from "./cli-f7d23ded.js";
16
+ } from "./cli-29yqhrjq.js";
17
17
  import"./cli-gpnb45ck.js";
18
- import"./cli-9z6vwf30.js";
19
- import"./cli-xnnkeg5p.js";
20
- import"./cli-ks60cc3h.js";
18
+ import"./cli-h7w8nj1x.js";
19
+ import"./cli-td2vwxvv.js";
20
+ import"./cli-7y6dwmn8.js";
21
21
  import"./cli-8rxa073f.js";
22
22
 
23
23
  // src/core/agents/specialized/findingJudge/agent.ts
@@ -12,26 +12,26 @@ import {
12
12
  searchEndpoints,
13
13
  updateApp,
14
14
  updateEndpoint
15
- } from "./cli-dqkdnd3c.js";
16
- import"./cli-9vzc18m5.js";
17
- import"./cli-whtdyc0e.js";
18
- import"./cli-yjbkaqvy.js";
19
- import"./cli-0gk2x2sc.js";
20
- import"./cli-6vs0mtsb.js";
21
- import"./cli-gbkj2has.js";
15
+ } from "./cli-8vaa0frx.js";
16
+ import"./cli-1kgqgq0a.js";
17
+ import"./cli-84pr5q33.js";
18
+ import"./cli-xe08y0nv.js";
19
+ import"./cli-2zbvtnrx.js";
20
+ import"./cli-eh6nrt6s.js";
21
+ import"./cli-49kwknjj.js";
22
22
  import"./cli-9fsre5pt.js";
23
- import"./cli-tw3fe8bj.js";
24
- import"./cli-35czfv00.js";
25
- import"./cli-6wwpk9d9.js";
23
+ import"./cli-yqtxtvg8.js";
24
+ import"./cli-4xz6rqg5.js";
25
+ import"./cli-r5n86ej6.js";
26
26
  import"./cli-fw5r7pfj.js";
27
27
  import"./cli-c8131c4q.js";
28
- import"./cli-v1aqbv58.js";
29
- import"./cli-hj3t87r2.js";
30
- import"./cli-f7d23ded.js";
28
+ import"./cli-nm2jskqg.js";
29
+ import"./cli-dh7tfkre.js";
30
+ import"./cli-29yqhrjq.js";
31
31
  import"./cli-gpnb45ck.js";
32
- import"./cli-9z6vwf30.js";
33
- import"./cli-xnnkeg5p.js";
34
- import"./cli-ks60cc3h.js";
32
+ import"./cli-h7w8nj1x.js";
33
+ import"./cli-td2vwxvv.js";
34
+ import"./cli-7y6dwmn8.js";
35
35
  import"./cli-8rxa073f.js";
36
36
 
37
37
  // src/cli/apps.ts
@@ -1,18 +1,18 @@
1
1
  #!/usr/bin/env bun
2
- import"./cli-dqkdnd3c.js";
3
- import"./cli-9vzc18m5.js";
4
- import"./cli-whtdyc0e.js";
5
- import"./cli-yjbkaqvy.js";
6
- import"./cli-0gk2x2sc.js";
7
- import"./cli-6vs0mtsb.js";
8
- import"./cli-gbkj2has.js";
2
+ import"./cli-8vaa0frx.js";
3
+ import"./cli-1kgqgq0a.js";
4
+ import"./cli-84pr5q33.js";
5
+ import"./cli-xe08y0nv.js";
6
+ import"./cli-2zbvtnrx.js";
7
+ import"./cli-eh6nrt6s.js";
8
+ import"./cli-49kwknjj.js";
9
9
  import"./cli-9fsre5pt.js";
10
- import"./cli-tw3fe8bj.js";
11
- import"./cli-35czfv00.js";
12
- import"./cli-6wwpk9d9.js";
10
+ import"./cli-yqtxtvg8.js";
11
+ import"./cli-4xz6rqg5.js";
12
+ import"./cli-r5n86ej6.js";
13
13
  import"./cli-fw5r7pfj.js";
14
14
  import"./cli-c8131c4q.js";
15
- import"./cli-v1aqbv58.js";
15
+ import"./cli-nm2jskqg.js";
16
16
  import {
17
17
  disconnect,
18
18
  fetchWorkspaces,
@@ -25,15 +25,15 @@ import {
25
25
  pollWorkOSToken,
26
26
  selectWorkspace,
27
27
  startDeviceFlow
28
- } from "./cli-hj3t87r2.js";
29
- import"./cli-f7d23ded.js";
28
+ } from "./cli-dh7tfkre.js";
29
+ import"./cli-29yqhrjq.js";
30
30
  import"./cli-gpnb45ck.js";
31
31
  import {
32
32
  config,
33
33
  init_config
34
- } from "./cli-9z6vwf30.js";
35
- import"./cli-xnnkeg5p.js";
36
- import"./cli-ks60cc3h.js";
34
+ } from "./cli-h7w8nj1x.js";
35
+ import"./cli-td2vwxvv.js";
36
+ import"./cli-7y6dwmn8.js";
37
37
  import {
38
38
  __require
39
39
  } from "./cli-8rxa073f.js";
@@ -0,0 +1,19 @@
1
+ import {
2
+ runAuthenticationAgent
3
+ } from "./cli-2zbvtnrx.js";
4
+ import"./cli-9fsre5pt.js";
5
+ import"./cli-yqtxtvg8.js";
6
+ import"./cli-4xz6rqg5.js";
7
+ import"./cli-r5n86ej6.js";
8
+ import"./cli-c8131c4q.js";
9
+ import"./cli-nm2jskqg.js";
10
+ import"./cli-dh7tfkre.js";
11
+ import"./cli-29yqhrjq.js";
12
+ import"./cli-gpnb45ck.js";
13
+ import"./cli-h7w8nj1x.js";
14
+ import"./cli-td2vwxvv.js";
15
+ import"./cli-7y6dwmn8.js";
16
+ import"./cli-8rxa073f.js";
17
+ export {
18
+ runAuthenticationAgent
19
+ };
@@ -0,0 +1,19 @@
1
+ import {
2
+ BlackboxAttackSurfaceAgent
3
+ } from "./cli-84pr5q33.js";
4
+ import"./cli-9fsre5pt.js";
5
+ import"./cli-yqtxtvg8.js";
6
+ import"./cli-4xz6rqg5.js";
7
+ import"./cli-r5n86ej6.js";
8
+ import"./cli-c8131c4q.js";
9
+ import"./cli-nm2jskqg.js";
10
+ import"./cli-dh7tfkre.js";
11
+ import"./cli-29yqhrjq.js";
12
+ import"./cli-gpnb45ck.js";
13
+ import"./cli-h7w8nj1x.js";
14
+ import"./cli-td2vwxvv.js";
15
+ import"./cli-7y6dwmn8.js";
16
+ import"./cli-8rxa073f.js";
17
+ export {
18
+ BlackboxAttackSurfaceAgent
19
+ };
@@ -1,23 +1,23 @@
1
1
  import {
2
2
  runPentestWorkflow
3
- } from "./cli-9vzc18m5.js";
4
- import"./cli-whtdyc0e.js";
5
- import"./cli-yjbkaqvy.js";
6
- import"./cli-6vs0mtsb.js";
7
- import"./cli-gbkj2has.js";
3
+ } from "./cli-1kgqgq0a.js";
4
+ import"./cli-84pr5q33.js";
5
+ import"./cli-xe08y0nv.js";
6
+ import"./cli-eh6nrt6s.js";
7
+ import"./cli-49kwknjj.js";
8
8
  import"./cli-9fsre5pt.js";
9
- import"./cli-tw3fe8bj.js";
10
- import"./cli-35czfv00.js";
11
- import"./cli-6wwpk9d9.js";
9
+ import"./cli-yqtxtvg8.js";
10
+ import"./cli-4xz6rqg5.js";
11
+ import"./cli-r5n86ej6.js";
12
12
  import"./cli-fw5r7pfj.js";
13
13
  import"./cli-c8131c4q.js";
14
- import"./cli-v1aqbv58.js";
15
- import"./cli-hj3t87r2.js";
16
- import"./cli-f7d23ded.js";
14
+ import"./cli-nm2jskqg.js";
15
+ import"./cli-dh7tfkre.js";
16
+ import"./cli-29yqhrjq.js";
17
17
  import"./cli-gpnb45ck.js";
18
- import"./cli-9z6vwf30.js";
19
- import"./cli-xnnkeg5p.js";
20
- import"./cli-ks60cc3h.js";
18
+ import"./cli-h7w8nj1x.js";
19
+ import"./cli-td2vwxvv.js";
20
+ import"./cli-7y6dwmn8.js";
21
21
  import"./cli-8rxa073f.js";
22
22
 
23
23
  // src/core/api/blackboxPentest.ts
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  BlackboxAttackSurfaceAgent
3
- } from "./cli-whtdyc0e.js";
3
+ } from "./cli-84pr5q33.js";
4
4
  import {
5
5
  TargetedPentestAgent,
6
6
  buildPentestSystemPrompt
7
- } from "./cli-yjbkaqvy.js";
7
+ } from "./cli-xe08y0nv.js";
8
8
  import {
9
9
  CodeAgent
10
- } from "./cli-6vs0mtsb.js";
10
+ } from "./cli-eh6nrt6s.js";
11
11
  import {
12
12
  AppsDiscoveryResultSchema,
13
13
  DiscoverySummarySchema,
@@ -15,10 +15,10 @@ import {
15
15
  WHITEBOX_APPS_DISCOVERY_SYSTEM_PROMPT,
16
16
  WHITEBOX_DISCOVERY_SYSTEM_PROMPT,
17
17
  WHITEBOX_ENDPOINT_DOCUMENTATION_SYSTEM_PROMPT
18
- } from "./cli-gbkj2has.js";
18
+ } from "./cli-49kwknjj.js";
19
19
  import {
20
20
  EvidenceFileEntrySchema
21
- } from "./cli-tw3fe8bj.js";
21
+ } from "./cli-yqtxtvg8.js";
22
22
  import {
23
23
  CweEntrySchema,
24
24
  FindingsRegistry,
@@ -26,8 +26,9 @@ import {
26
26
  PLAN_MODE_TOOL_NAMES,
27
27
  ValidatedCweEntrySchema,
28
28
  hasCanonicalName,
29
+ pLimit,
29
30
  runWithBoundedConcurrency
30
- } from "./cli-35czfv00.js";
31
+ } from "./cli-4xz6rqg5.js";
31
32
  import {
32
33
  createThreatModelPrompt
33
34
  } from "./cli-fw5r7pfj.js";
@@ -36,13 +37,14 @@ import {
36
37
  hasToolCall,
37
38
  init_dist,
38
39
  init_lazyLogger,
40
+ init_session,
39
41
  init_structured,
40
42
  scopedLogger
41
- } from "./cli-v1aqbv58.js";
43
+ } from "./cli-nm2jskqg.js";
42
44
  import {
43
45
  exports_external,
44
46
  init_zod
45
- } from "./cli-f7d23ded.js";
47
+ } from "./cli-29yqhrjq.js";
46
48
 
47
49
  // src/core/workflows/pentest.ts
48
50
  init_dist();
@@ -360,11 +362,13 @@ init_lazyLogger();
360
362
  // src/core/session/persistence.ts
361
363
  init_structured();
362
364
  init_lazyLogger();
365
+ init_session();
363
366
  import {
364
367
  existsSync as existsSync2,
365
368
  mkdirSync,
366
369
  readdirSync,
367
370
  readFileSync as readFileSync2,
371
+ renameSync,
368
372
  statSync,
369
373
  writeFileSync as writeFileSync2
370
374
  } from "node:fs";
@@ -372,14 +376,14 @@ import { join as join2 } from "node:path";
372
376
  var log = scopedLogger(() => createLogger("session:persistence"));
373
377
  var SUBAGENTS_DIR = "subagents";
374
378
  var MANIFEST_FILE = "agent-manifest.json";
375
- function loadSubagentMessages(session, agentName) {
376
- const stepPath = join2(session.rootPath, SUBAGENTS_DIR, agentName, "messages.json");
379
+ function loadSubagentMessages(session, key) {
380
+ const stepPath = join2(session.rootPath, SUBAGENTS_DIR, key, "messages.json");
377
381
  if (existsSync2(stepPath)) {
378
382
  try {
379
383
  return JSON.parse(readFileSync2(stepPath, "utf-8"));
380
384
  } catch {}
381
385
  }
382
- const snapshotPath = join2(session.rootPath, SUBAGENTS_DIR, `${agentName}.json`);
386
+ const snapshotPath = join2(session.rootPath, SUBAGENTS_DIR, `${key}.json`);
383
387
  if (!existsSync2(snapshotPath))
384
388
  return [];
385
389
  try {
@@ -523,6 +527,9 @@ function parseSubagentFilename(filename) {
523
527
  if (filename.startsWith("orchestrator-")) {
524
528
  return { agentType: "pentest", name: "Orchestrator Summary" };
525
529
  }
530
+ if (filename.startsWith("ses_")) {
531
+ return { agentType: "pentest", name: "Pentest Worker" };
532
+ }
526
533
  return { agentType: "pentest", name: filename.split("-")[0] || "Unknown" };
527
534
  }
528
535
  function unwrapAiSdkToolOutput(output) {
@@ -834,7 +841,8 @@ async function runEndpointDocumentationAgent(opts) {
834
841
  openAIReasoningEffort,
835
842
  enableThinking,
836
843
  projectThreatModel,
837
- parentSubagentId
844
+ parentSubagentId,
845
+ agentLimiter
838
846
  } = opts;
839
847
  const subagentId = `endpoint-doc-${slug(app.name)}-${slug(endpoint.path)}`;
840
848
  const displayMethod = getDocumentMethod(endpoint);
@@ -876,7 +884,7 @@ async function runEndpointDocumentationAgent(opts) {
876
884
  projectThreatModel
877
885
  });
878
886
  try {
879
- await agent.consume();
887
+ await (agentLimiter ? agentLimiter(() => agent.consume()) : agent.consume());
880
888
  eventBus?.emit("subagent-complete", {
881
889
  subagentId,
882
890
  status: "completed",
@@ -6195,6 +6203,7 @@ init_structured();
6195
6203
  init_lazyLogger();
6196
6204
  var log4 = scopedLogger(() => createLogger("whitebox-workflow"));
6197
6205
  var DEFAULT_CONCURRENCY = 5;
6206
+ var MAX_CONCURRENT_AGENTS = 12;
6198
6207
  var TASK_TYPE_LABELS = {
6199
6208
  pages: "Pages",
6200
6209
  apiEndpoints: "API Endpoints",
@@ -6228,8 +6237,11 @@ async function runWhiteboxAttackSurfaceWorkflow(input) {
6228
6237
  domains,
6229
6238
  projectThreatModel,
6230
6239
  environments,
6231
- surfaceIntegrationEnabled = true
6240
+ surfaceIntegrationEnabled = true,
6241
+ maxConcurrentAgents = MAX_CONCURRENT_AGENTS
6232
6242
  } = input;
6243
+ const agentSlots = pLimit(Math.max(1, maxConcurrentAgents));
6244
+ const agentLimiter = (fn) => agentSlots(fn);
6233
6245
  const appsAgent = new CodeAgent({
6234
6246
  codebasePath,
6235
6247
  objective: buildAppsDiscoveryObjective(codebasePath, domains, environments),
@@ -6256,7 +6268,7 @@ async function runWhiteboxAttackSurfaceWorkflow(input) {
6256
6268
  name: "Whitebox Apps Discovery",
6257
6269
  input: { codebasePath }
6258
6270
  });
6259
- const appsResult = await appsAgent.consume();
6271
+ const appsResult = await agentLimiter(() => appsAgent.consume());
6260
6272
  log4.info(`Phase 1 complete: ${appsResult?.apps.length ?? 0} apps discovered` + (appsResult ? ` (repoType=${appsResult.repoType}, packageManager=${appsResult.packageManager})` : " (no result returned)"));
6261
6273
  if (appsResult?.apps.length) {
6262
6274
  for (const app of appsResult.apps) {
@@ -6340,7 +6352,7 @@ async function runWhiteboxAttackSurfaceWorkflow(input) {
6340
6352
  projectThreatModel
6341
6353
  });
6342
6354
  try {
6343
- await agent.consume();
6355
+ await agentLimiter(() => agent.consume());
6344
6356
  log4.debug(`Phase 2: agent "${subagentId}" completed`);
6345
6357
  eventBus?.emit("subagent-complete", {
6346
6358
  subagentId,
@@ -6391,7 +6403,8 @@ async function runWhiteboxAttackSurfaceWorkflow(input) {
6391
6403
  openAIReasoningEffort,
6392
6404
  enableThinking,
6393
6405
  projectThreatModel,
6394
- parentSubagentId: appNodeId
6406
+ parentSubagentId: appNodeId,
6407
+ agentLimiter
6395
6408
  });
6396
6409
  } else {
6397
6410
  log4.debug(`${app.name}: fallback (${surfaceResult.reason})`);