@pensar/apex 1.7.0 → 1.8.0-canary.2f3da4a2

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 (38) hide show
  1. package/build/{agent-beywhvf3.js → agent-5mbtsdes.js} +7 -7
  2. package/build/agent-scb9w0fv.js +19 -0
  3. package/build/{auth-wvh553ea.js → auth-0afhfypr.js} +4 -4
  4. package/build/{authentication-ec7trwb4.js → authentication-4eqmx3z4.js} +7 -7
  5. package/build/{blackboxAgent-ng2t2p2x.js → blackboxAgent-nb0v0ptg.js} +8 -8
  6. package/build/{blackboxPentest-rwyjy4kq.js → blackboxPentest-n9m7hbn8.js} +12 -12
  7. package/build/{cli-5m0347h3.js → cli-114rvgvj.js} +1 -1
  8. package/build/{cli-x3k26g1t.js → cli-230tpm4a.js} +146 -123
  9. package/build/{cli-06zt0g1a.js → cli-26tcc4x1.js} +2 -2
  10. package/build/{cli-nqx9y9ds.js → cli-629hvmba.js} +1 -1
  11. package/build/{cli-xtqm11qt.js → cli-91tyknkx.js} +1 -1
  12. package/build/{cli-r879p2yz.js → cli-etxprvkj.js} +1 -1
  13. package/build/{cli-vvyq7ace.js → cli-g90c7ajw.js} +1 -1
  14. package/build/{cli-zr7sg2m2.js → cli-jswt85hp.js} +2 -2
  15. package/build/{cli-40ef01tb.js → cli-kc8akm2b.js} +1 -1
  16. package/build/{cli-09prdch1.js → cli-ndp0xr8m.js} +6 -6
  17. package/build/{cli-836bfgxg.js → cli-nhb9w2dk.js} +1 -1
  18. package/build/{cli-gr3zncst.js → cli-nqynaq47.js} +1 -1
  19. package/build/{cli-rc7hyq7e.js → cli-rzrxttza.js} +55 -6
  20. package/build/{cli-q2dty8g4.js → cli-xf5qehnx.js} +1 -1
  21. package/build/cli.js +31 -27
  22. package/build/{fixes-1z283wdz.js → fixes-c8fa4er8.js} +4 -4
  23. package/build/{index-a4ydz3dd.js → index-5035hx9j.js} +7 -7
  24. package/build/{index-py7gtxez.js → index-6bsbwhyw.js} +2 -2
  25. package/build/{index-5a173a2k.js → index-eata65cj.js} +6 -6
  26. package/build/{index-1p5bg26t.js → index-k41ryzgs.js} +4 -4
  27. package/build/{index-j3hw6d4w.js → index-vhcxarqs.js} +58 -48
  28. package/build/{issues-trbzy8n0.js → issues-hgvycr7p.js} +4 -4
  29. package/build/{logs-c88md0h3.js → logs-0560s383.js} +4 -4
  30. package/build/{offesecAgent-ahcz5hcx.js → offesecAgent-vvrhkr8r.js} +7 -7
  31. package/build/{pentest-4932ke3a.js → pentest-kpn26j7f.js} +12 -12
  32. package/build/{pentests-re8dzxt9.js → pentests-s5x17s2j.js} +4 -4
  33. package/build/{projects-dqp4m0ws.js → projects-0qkjmzbw.js} +4 -4
  34. package/build/{targetedPentest-de8a67va.js → targetedPentest-4bj9654f.js} +8 -8
  35. package/build/{threatModel-waz866yk.js → threatModel-pe3svbnc.js} +8 -8
  36. package/build/{uninstall-0bwz7jdn.js → uninstall-tv9t0pgc.js} +1 -1
  37. package/package.json +1 -1
  38. package/build/agent-63cc9rpx.js +0 -19
@@ -3,14 +3,14 @@ import {
3
3
  buildThreatModelPrompt,
4
4
  createSkillsRegistry,
5
5
  runOffensiveSecurityAgent
6
- } from "./cli-836bfgxg.js";
6
+ } from "./cli-nhb9w2dk.js";
7
7
  import {
8
8
  REPORT_FILENAME_MD,
9
9
  convertModelMessagesToUI,
10
10
  loadSubagents,
11
11
  readExecutionMetrics,
12
12
  writeExecutionMetrics
13
- } from "./cli-gr3zncst.js";
13
+ } from "./cli-nqynaq47.js";
14
14
  import {
15
15
  createThreatModelPrompt
16
16
  } from "./cli-fw5r7pfj.js";
@@ -38,14 +38,14 @@ import {
38
38
  planFilePath,
39
39
  readPlan,
40
40
  sessions
41
- } from "./cli-x3k26g1t.js";
41
+ } from "./cli-230tpm4a.js";
42
42
  import {
43
43
  detectOSAndEnhancePrompt
44
44
  } from "./cli-tp1tqn3k.js";
45
45
  import {
46
46
  read,
47
47
  write
48
- } from "./cli-nqx9y9ds.js";
48
+ } from "./cli-629hvmba.js";
49
49
  import {
50
50
  getAutoPopulatedHosts,
51
51
  getAutoPopulatedPorts,
@@ -57,7 +57,7 @@ import {
57
57
  init_toolset,
58
58
  modelSupportsThinking,
59
59
  stepCountIs
60
- } from "./cli-rc7hyq7e.js";
60
+ } from "./cli-rzrxttza.js";
61
61
  import"./cli-0ghkg3w6.js";
62
62
  import {
63
63
  disconnect,
@@ -69,19 +69,19 @@ import {
69
69
  selectWorkspace,
70
70
  startDeviceFlow,
71
71
  validateGateway
72
- } from "./cli-xtqm11qt.js";
72
+ } from "./cli-91tyknkx.js";
73
73
  import {
74
74
  config,
75
75
  getPensarApiUrl,
76
76
  getPensarConsoleUrl
77
- } from "./cli-q2dty8g4.js";
77
+ } from "./cli-xf5qehnx.js";
78
78
  import"./cli-gpnb45ck.js";
79
79
  import {
80
80
  update
81
- } from "./cli-40ef01tb.js";
81
+ } from "./cli-kc8akm2b.js";
82
82
  import {
83
83
  checkForUpdate
84
- } from "./cli-r879p2yz.js";
84
+ } from "./cli-etxprvkj.js";
85
85
  import {
86
86
  AVAILABLE_MODELS,
87
87
  init_models
@@ -49343,7 +49343,7 @@ var require_lib = __commonJS((exports, module) => {
49343
49343
 
49344
49344
  // src/tui/index.tsx
49345
49345
  import { createRoot } from "@opentui/react";
49346
- import { useState as useState40, useEffect as useEffect27 } from "react";
49346
+ import { useState as useState40, useEffect as useEffect28 } from "react";
49347
49347
 
49348
49348
  // src/tui/components/footer.tsx
49349
49349
  import os2 from "os";
@@ -53534,7 +53534,12 @@ function ApprovalInputArea({
53534
53534
  lastDeclineNote
53535
53535
  }) {
53536
53536
  const { colors: colors2 } = useTheme();
53537
+ const { setExternalDialogOpen } = useDialog();
53537
53538
  const [focusedElement, setFocusedElement] = useState15(0);
53539
+ useEffect7(() => {
53540
+ setExternalDialogOpen(focusedElement === 2);
53541
+ return () => setExternalDialogOpen(false);
53542
+ }, [focusedElement, setExternalDialogOpen]);
53538
53543
  useKeyboard5((key) => {
53539
53544
  if (key.name === "up") {
53540
53545
  setFocusedElement((prev) => Math.max(0, prev - 1));
@@ -53558,6 +53563,11 @@ function ApprovalInputArea({
53558
53563
  }
53559
53564
  return;
53560
53565
  }
53566
+ if (focusedElement === 2) {
53567
+ if (key.name === "y" || key.raw === "Y" || key.name === "a" || key.raw === "A") {
53568
+ return;
53569
+ }
53570
+ }
53561
53571
  });
53562
53572
  return /* @__PURE__ */ jsxDEV21("box", {
53563
53573
  flexDirection: "column",
@@ -58716,7 +58726,7 @@ function KeybindingProvider({
58716
58726
  // src/tui/components/operator-dashboard/index.tsx
58717
58727
  import {
58718
58728
  useState as useState37,
58719
- useEffect as useEffect23,
58729
+ useEffect as useEffect24,
58720
58730
  useRef as useRef18,
58721
58731
  useCallback as useCallback18,
58722
58732
  useMemo as useMemo23,
@@ -61960,7 +61970,7 @@ var MessageRenderer = memo3(function MessageRenderer2({
61960
61970
  }, undefined, false, undefined, this);
61961
61971
  });
61962
61972
  // src/tui/components/shared/approval-prompt.tsx
61963
- import { useState as useState32 } from "react";
61973
+ import { useState as useState32, useEffect as useEffect20 } from "react";
61964
61974
  import { useKeyboard as useKeyboard21 } from "@opentui/react";
61965
61975
  import { jsxDEV as jsxDEV49 } from "@opentui/react/jsx-dev-runtime";
61966
61976
  // src/tui/components/shared/message-reducer.ts
@@ -62039,7 +62049,7 @@ function InlineApprovalPrompt2({ approval }) {
62039
62049
  }
62040
62050
 
62041
62051
  // src/tui/components/chat/loading-indicator.tsx
62042
- import { useState as useState33, useEffect as useEffect20 } from "react";
62052
+ import { useState as useState33, useEffect as useEffect21 } from "react";
62043
62053
  import { jsxDEV as jsxDEV51 } from "@opentui/react/jsx-dev-runtime";
62044
62054
  var SPINNER_FRAMES2 = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
62045
62055
  var SPINNER_INTERVAL2 = 80;
@@ -62053,13 +62063,13 @@ function LoadingIndicator({
62053
62063
  const { colors: colors2 } = useTheme();
62054
62064
  const [spinnerFrame, setSpinnerFrame] = useState33(0);
62055
62065
  const [dotsFrame, setDotsFrame] = useState33(0);
62056
- useEffect20(() => {
62066
+ useEffect21(() => {
62057
62067
  const interval2 = setInterval(() => {
62058
62068
  setSpinnerFrame((f) => (f + 1) % SPINNER_FRAMES2.length);
62059
62069
  }, SPINNER_INTERVAL2);
62060
62070
  return () => clearInterval(interval2);
62061
62071
  }, []);
62062
- useEffect20(() => {
62072
+ useEffect21(() => {
62063
62073
  const interval2 = setInterval(() => {
62064
62074
  setDotsFrame((f) => (f + 1) % DOTS_FRAMES.length);
62065
62075
  }, DOTS_INTERVAL);
@@ -63593,7 +63603,7 @@ var SubagentStatusBar = memo4(function SubagentStatusBar2({
63593
63603
  // src/tui/components/operator-dashboard/subagent-dialog.tsx
63594
63604
  import {
63595
63605
  useState as useState36,
63596
- useEffect as useEffect22,
63606
+ useEffect as useEffect23,
63597
63607
  useMemo as useMemo22,
63598
63608
  useRef as useRef17,
63599
63609
  useSyncExternalStore
@@ -63601,7 +63611,7 @@ import {
63601
63611
  import { useKeyboard as useKeyboard25 } from "@opentui/react";
63602
63612
 
63603
63613
  // src/tui/components/operator-dashboard/subagent-hub.tsx
63604
- import { useState as useState35, useEffect as useEffect21, useRef as useRef16, memo as memo5 } from "react";
63614
+ import { useState as useState35, useEffect as useEffect22, useRef as useRef16, memo as memo5 } from "react";
63605
63615
  import { useKeyboard as useKeyboard23 } from "@opentui/react";
63606
63616
  import { jsxDEV as jsxDEV56 } from "@opentui/react/jsx-dev-runtime";
63607
63617
  function sortSessions(sessions2) {
@@ -63740,14 +63750,14 @@ var SubagentHub = memo5(function SubagentHub2({
63740
63750
  const scrollboxRef = useRef16(null);
63741
63751
  const sortedRef = useRef16(sorted);
63742
63752
  sortedRef.current = sorted;
63743
- useEffect21(() => {
63753
+ useEffect22(() => {
63744
63754
  if (sorted.length === 0) {
63745
63755
  setFocusedIndex(0);
63746
63756
  } else if (focusedIndex >= sorted.length) {
63747
63757
  setFocusedIndex(sorted.length - 1);
63748
63758
  }
63749
63759
  }, [sorted.length, focusedIndex]);
63750
- useEffect21(() => {
63760
+ useEffect22(() => {
63751
63761
  scrollToIndex(scrollboxRef.current, focusedIndex, sortedRef.current, (s) => s.id);
63752
63762
  }, [focusedIndex]);
63753
63763
  useKeyboard23((key) => {
@@ -63876,7 +63886,7 @@ function SubagentDialog({ store }) {
63876
63886
  const viewRef = useRef17(view);
63877
63887
  viewRef.current = view;
63878
63888
  const sessions2 = useSyncExternalStore(store.subscribe, store.getSnapshot);
63879
- useEffect22(() => {
63889
+ useEffect23(() => {
63880
63890
  setSize(view.type === "detail" ? "xlarge" : "large");
63881
63891
  }, [view.type, setSize]);
63882
63892
  const sorted = useMemo22(() => sortSessions(Array.from(sessions2.values())), [sessions2]);
@@ -64049,7 +64059,7 @@ function OperatorDashboard({
64049
64059
  const subagentHelpers = useMemo23(() => createSubagentSessionHelpers(subagentStore.setState), [subagentStore]);
64050
64060
  const messageCountAtSubagentDoneRef = useRef18(null);
64051
64061
  const hasRunningSubagent = useMemo23(() => Array.from(subagentSessions.values()).some((s) => s.status === "running"), [subagentSessions]);
64052
- useEffect23(() => {
64062
+ useEffect24(() => {
64053
64063
  if (subagentSessions.size > 0 && !hasRunningSubagent) {
64054
64064
  if (messageCountAtSubagentDoneRef.current === null) {
64055
64065
  messageCountAtSubagentDoneRef.current = displayMessagesRef.current.length;
@@ -64075,7 +64085,7 @@ function OperatorDashboard({
64075
64085
  const [queuedMessages, setQueuedMessages] = useState37([]);
64076
64086
  const [selectedQueueIndex, setSelectedQueueIndex] = useState37(-1);
64077
64087
  const queuedMessagesRef = useRef18([]);
64078
- useEffect23(() => {
64088
+ useEffect24(() => {
64079
64089
  queuedMessagesRef.current = queuedMessages;
64080
64090
  if (queuedMessages.length === 0) {
64081
64091
  setSelectedQueueIndex(-1);
@@ -64102,18 +64112,18 @@ function OperatorDashboard({
64102
64112
  const [pendingQuestions, setPendingQuestions] = useState37(null);
64103
64113
  const pendingToolCallIdRef = useRef18(null);
64104
64114
  const operatorModeRef = useRef18(operatorMode);
64105
- useEffect23(() => {
64115
+ useEffect24(() => {
64106
64116
  operatorModeRef.current = operatorMode;
64107
64117
  }, [operatorMode]);
64108
64118
  const approvedPlanRef = useRef18(approvedPlanContent);
64109
- useEffect23(() => {
64119
+ useEffect24(() => {
64110
64120
  approvedPlanRef.current = approvedPlanContent;
64111
64121
  }, [approvedPlanContent]);
64112
64122
  const tokenUsageRef = useRef18(tokenUsage);
64113
- useEffect23(() => {
64123
+ useEffect24(() => {
64114
64124
  tokenUsageRef.current = tokenUsage;
64115
64125
  }, [tokenUsage]);
64116
- useEffect23(() => {
64126
+ useEffect24(() => {
64117
64127
  const gate = approvalGateRef.current;
64118
64128
  const onApprovalNeeded = () => {
64119
64129
  setPendingApprovals(gate.getPendingApprovals());
@@ -64135,7 +64145,7 @@ function OperatorDashboard({
64135
64145
  gate.off("approval-resolved", onApprovalResolved);
64136
64146
  };
64137
64147
  }, []);
64138
- useEffect23(() => {
64148
+ useEffect24(() => {
64139
64149
  async function loadSession() {
64140
64150
  try {
64141
64151
  if (sessionId) {
@@ -64210,15 +64220,15 @@ function OperatorDashboard({
64210
64220
  }
64211
64221
  loadSession();
64212
64222
  }, [sessionId]);
64213
- useEffect23(() => {
64223
+ useEffect24(() => {
64214
64224
  return () => setSessionCwd(null);
64215
64225
  }, [setSessionCwd]);
64216
- useEffect23(() => {
64226
+ useEffect24(() => {
64217
64227
  if (!loading) {
64218
64228
  refocusPrompt();
64219
64229
  }
64220
64230
  }, [loading, refocusPrompt]);
64221
- useEffect23(() => {
64231
+ useEffect24(() => {
64222
64232
  if (!session || !sessionId)
64223
64233
  return;
64224
64234
  resetTokenUsage();
@@ -64385,7 +64395,7 @@ function OperatorDashboard({
64385
64395
  }, 150);
64386
64396
  }
64387
64397
  }, [flushCommandOutput]);
64388
- useEffect23(() => {
64398
+ useEffect24(() => {
64389
64399
  return () => {
64390
64400
  if (cmdFlushTimerRef.current) {
64391
64401
  clearInterval(cmdFlushTimerRef.current);
@@ -64914,14 +64924,14 @@ Error: ${errMsg}
64914
64924
  const initialMessageSentRef = useRef18(false);
64915
64925
  const runAgentRef = useRef18(runAgent);
64916
64926
  runAgentRef.current = runAgent;
64917
- useEffect23(() => {
64927
+ useEffect24(() => {
64918
64928
  if (!loading && initialMessage && !initialMessageSentRef.current) {
64919
64929
  initialMessageSentRef.current = true;
64920
64930
  runAgentRef.current(initialMessage);
64921
64931
  }
64922
64932
  }, [loading, initialMessage]);
64923
64933
  const initialSkillSentRef = useRef18(false);
64924
- useEffect23(() => {
64934
+ useEffect24(() => {
64925
64935
  if (loading || initialSkillSentRef.current)
64926
64936
  return;
64927
64937
  const routeData = route.data;
@@ -65009,7 +65019,7 @@ ${content}
65009
65019
  }
65010
65020
  })();
65011
65021
  }, [loading, route.data, skillsRegistry]);
65012
- useEffect23(() => {
65022
+ useEffect24(() => {
65013
65023
  if (status !== "idle")
65014
65024
  return;
65015
65025
  const queue = queuedMessagesRef.current;
@@ -65020,7 +65030,7 @@ ${content}
65020
65030
  setSelectedQueueIndex(-1);
65021
65031
  runAgentRef.current(next);
65022
65032
  }, [status]);
65023
- useEffect23(() => {
65033
+ useEffect24(() => {
65024
65034
  if (!planApprovedPendingRunRef.current)
65025
65035
  return;
65026
65036
  if (operatorMode === "plan")
@@ -65436,7 +65446,7 @@ ${planContent}` : "No plan exists yet. Switch to plan mode (Shift+Tab) to create
65436
65446
  }
65437
65447
  });
65438
65448
  const planReviewInjectedRef = useRef18(false);
65439
- useEffect23(() => {
65449
+ useEffect24(() => {
65440
65450
  if (!showPlanReview) {
65441
65451
  planReviewInjectedRef.current = false;
65442
65452
  return;
@@ -65744,7 +65754,7 @@ function ThemePicker({ onClose }) {
65744
65754
  }
65745
65755
 
65746
65756
  // src/tui/components/commands/skills-dialog.tsx
65747
- import { useState as useState39, useMemo as useMemo24, useEffect as useEffect24, useRef as useRef20 } from "react";
65757
+ import { useState as useState39, useMemo as useMemo24, useEffect as useEffect25, useRef as useRef20 } from "react";
65748
65758
  import { useKeyboard as useKeyboard28 } from "@opentui/react";
65749
65759
  import { jsxDEV as jsxDEV61 } from "@opentui/react/jsx-dev-runtime";
65750
65760
  function estimateTokens(text) {
@@ -65773,7 +65783,7 @@ function SkillsDialog({
65773
65783
  return null;
65774
65784
  });
65775
65785
  const [detailInstructions, setDetailInstructions] = useState39(null);
65776
- useEffect24(() => {
65786
+ useEffect25(() => {
65777
65787
  if (!detailSkill) {
65778
65788
  setDetailInstructions(null);
65779
65789
  return;
@@ -65844,7 +65854,7 @@ function SkillsDialog({
65844
65854
  }
65845
65855
  });
65846
65856
  const safeIndex = Math.max(0, Math.min(selectedIndex, flatList.length - 1));
65847
- useEffect24(() => {
65857
+ useEffect25(() => {
65848
65858
  scrollToIndex(scrollboxRef.current, safeIndex, flatList, (skill) => skill.slug);
65849
65859
  }, [safeIndex, flatList]);
65850
65860
  const syntaxStyle = useMarkdownSyntaxStyle();
@@ -69083,7 +69093,7 @@ async function detectTerminalMode(timeoutMs = 1000) {
69083
69093
  }
69084
69094
 
69085
69095
  // src/tui/console-theme.ts
69086
- import { useEffect as useEffect25 } from "react";
69096
+ import { useEffect as useEffect26 } from "react";
69087
69097
  import { useRenderer as useRenderer4 } from "@opentui/react";
69088
69098
  import { RGBA as RGBA25 } from "@opentui/core";
69089
69099
  var withAlpha2 = (rgba, a) => RGBA25.fromValues(rgba.r, rgba.g, rgba.b, a);
@@ -69108,7 +69118,7 @@ function buildConsoleOptions(themeColors) {
69108
69118
  function ConsoleThemeSync() {
69109
69119
  const { colors: colors2 } = useTheme();
69110
69120
  const renderer = useRenderer4();
69111
- useEffect25(() => {
69121
+ useEffect26(() => {
69112
69122
  overlayThemeRef.current = colors2;
69113
69123
  const c = renderer.console;
69114
69124
  c.backgroundColor = withAlpha2(colors2.backgroundPanel, 0.85);
@@ -69195,12 +69205,12 @@ function setupAutoCopy(renderer, copyToClipboard) {
69195
69205
  }
69196
69206
 
69197
69207
  // src/tui/components/terminal-focus-handler.tsx
69198
- import { useEffect as useEffect26 } from "react";
69208
+ import { useEffect as useEffect27 } from "react";
69199
69209
  import { useRenderer as useRenderer5 } from "@opentui/react";
69200
69210
  function TerminalFocusHandler() {
69201
69211
  const { refocusPrompt } = useFocus();
69202
69212
  const renderer = useRenderer5();
69203
- useEffect26(() => {
69213
+ useEffect27(() => {
69204
69214
  const cleanup = setupTerminalFocusHandling(renderer, {
69205
69215
  onTerminalFocus: refocusPrompt,
69206
69216
  debug: false
@@ -69353,21 +69363,21 @@ function AppContent({
69353
69363
  const { refocusPrompt } = useFocus();
69354
69364
  const { setExternalDialogOpen } = useDialog();
69355
69365
  const [returnToCredits, setReturnToCredits] = useState40(false);
69356
- useEffect27(() => {
69366
+ useEffect28(() => {
69357
69367
  checkForUpdate().then(({ updateAvailable, currentVersion, latestVersion }) => {
69358
69368
  if (!updateAvailable)
69359
69369
  return;
69360
69370
  toast(`Update available: v${currentVersion} → v${latestVersion}. Run: pensar upgrade`, "warn", 8000);
69361
69371
  });
69362
69372
  const checkAuthToken = async () => {
69363
- const { isTokenExpired, isConnected: isConnected2 } = await import("./index-1p5bg26t.js");
69373
+ const { isTokenExpired, isConnected: isConnected2 } = await import("./index-k41ryzgs.js");
69364
69374
  if (isConnected2(config2.data) && config2.data.accessToken && isTokenExpired(config2.data.accessToken, 60) && !config2.data.refreshToken && !config2.data.pensarAPIKey) {
69365
69375
  toast("Your Pensar Console session has expired. Run /login to refresh.", "warn", 8000);
69366
69376
  }
69367
69377
  };
69368
69378
  checkAuthToken();
69369
69379
  }, []);
69370
- useEffect27(() => {
69380
+ useEffect28(() => {
69371
69381
  if (route.data.type !== "base")
69372
69382
  return;
69373
69383
  if (!config2.data.responsibleUseAccepted && route.data.path !== "disclosure") {
@@ -69377,7 +69387,7 @@ function AppContent({
69377
69387
  }
69378
69388
  }, [config2.data.responsibleUseAccepted, route.data]);
69379
69389
  const anyExternalDialog = showThemeDialog || showModelDialog || showProvidersDialog || showCreditsDialog || showHelpDialog || showAuthDialog || showPentestDialog || showSkillsDialog;
69380
- useEffect27(() => {
69390
+ useEffect28(() => {
69381
69391
  if (anyExternalDialog) {
69382
69392
  setExternalDialogOpen(true);
69383
69393
  } else {
@@ -69385,7 +69395,7 @@ function AppContent({
69385
69395
  return () => clearTimeout(timer);
69386
69396
  }
69387
69397
  }, [anyExternalDialog]);
69388
- useEffect27(() => {
69398
+ useEffect28(() => {
69389
69399
  if (showExitWarning) {
69390
69400
  const timer = setTimeout(() => {
69391
69401
  setShowExitWarning(false);
@@ -3,10 +3,10 @@ import {
3
3
  getIssue,
4
4
  listIssues,
5
5
  updateIssue
6
- } from "./cli-vvyq7ace.js";
7
- import"./cli-q2dty8g4.js";
8
- import"./cli-40ef01tb.js";
9
- import"./cli-r879p2yz.js";
6
+ } from "./cli-g90c7ajw.js";
7
+ import"./cli-xf5qehnx.js";
8
+ import"./cli-kc8akm2b.js";
9
+ import"./cli-etxprvkj.js";
10
10
  import"./cli-8rxa073f.js";
11
11
 
12
12
  // src/cli/issues.ts
@@ -2,10 +2,10 @@
2
2
  import {
3
3
  listAgentLogs,
4
4
  searchAgentLogs
5
- } from "./cli-vvyq7ace.js";
6
- import"./cli-q2dty8g4.js";
7
- import"./cli-40ef01tb.js";
8
- import"./cli-r879p2yz.js";
5
+ } from "./cli-g90c7ajw.js";
6
+ import"./cli-xf5qehnx.js";
7
+ import"./cli-kc8akm2b.js";
8
+ import"./cli-etxprvkj.js";
9
9
  import"./cli-8rxa073f.js";
10
10
 
11
11
  // src/cli/logs.ts
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  OffensiveSecurityAgent
3
- } from "./cli-x3k26g1t.js";
3
+ } from "./cli-230tpm4a.js";
4
4
  import"./cli-tp1tqn3k.js";
5
- import"./cli-nqx9y9ds.js";
5
+ import"./cli-629hvmba.js";
6
6
  import"./cli-3y0dgy56.js";
7
- import"./cli-rc7hyq7e.js";
7
+ import"./cli-rzrxttza.js";
8
8
  import"./cli-0ghkg3w6.js";
9
- import"./cli-xtqm11qt.js";
10
- import"./cli-q2dty8g4.js";
9
+ import"./cli-91tyknkx.js";
10
+ import"./cli-xf5qehnx.js";
11
11
  import"./cli-gpnb45ck.js";
12
- import"./cli-40ef01tb.js";
13
- import"./cli-r879p2yz.js";
12
+ import"./cli-kc8akm2b.js";
13
+ import"./cli-etxprvkj.js";
14
14
  import"./cli-03z6pswp.js";
15
15
  import"./cli-8rxa073f.js";
16
16
 
@@ -2,24 +2,24 @@ import {
2
2
  DEFAULT_CONCURRENCY,
3
3
  runPentestSwarm,
4
4
  runPentestWorkflow
5
- } from "./cli-09prdch1.js";
6
- import"./cli-gr3zncst.js";
7
- import"./cli-5m0347h3.js";
5
+ } from "./cli-ndp0xr8m.js";
6
+ import"./cli-nqynaq47.js";
7
+ import"./cli-114rvgvj.js";
8
8
  import"./cli-0fy9j5dw.js";
9
- import"./cli-06zt0g1a.js";
9
+ import"./cli-26tcc4x1.js";
10
10
  import"./cli-fw5r7pfj.js";
11
- import"./cli-zr7sg2m2.js";
12
- import"./cli-x3k26g1t.js";
11
+ import"./cli-jswt85hp.js";
12
+ import"./cli-230tpm4a.js";
13
13
  import"./cli-tp1tqn3k.js";
14
- import"./cli-nqx9y9ds.js";
14
+ import"./cli-629hvmba.js";
15
15
  import"./cli-3y0dgy56.js";
16
- import"./cli-rc7hyq7e.js";
16
+ import"./cli-rzrxttza.js";
17
17
  import"./cli-0ghkg3w6.js";
18
- import"./cli-xtqm11qt.js";
19
- import"./cli-q2dty8g4.js";
18
+ import"./cli-91tyknkx.js";
19
+ import"./cli-xf5qehnx.js";
20
20
  import"./cli-gpnb45ck.js";
21
- import"./cli-40ef01tb.js";
22
- import"./cli-r879p2yz.js";
21
+ import"./cli-kc8akm2b.js";
22
+ import"./cli-etxprvkj.js";
23
23
  import"./cli-03z6pswp.js";
24
24
  import"./cli-8rxa073f.js";
25
25
  export {
@@ -3,10 +3,10 @@ import {
3
3
  dispatchPentest,
4
4
  getScan,
5
5
  listScans
6
- } from "./cli-vvyq7ace.js";
7
- import"./cli-q2dty8g4.js";
8
- import"./cli-40ef01tb.js";
9
- import"./cli-r879p2yz.js";
6
+ } from "./cli-g90c7ajw.js";
7
+ import"./cli-xf5qehnx.js";
8
+ import"./cli-kc8akm2b.js";
9
+ import"./cli-etxprvkj.js";
10
10
  import"./cli-8rxa073f.js";
11
11
 
12
12
  // src/cli/pentests.ts
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env bun
2
2
  import {
3
3
  listProjects
4
- } from "./cli-vvyq7ace.js";
5
- import"./cli-q2dty8g4.js";
6
- import"./cli-40ef01tb.js";
7
- import"./cli-r879p2yz.js";
4
+ } from "./cli-g90c7ajw.js";
5
+ import"./cli-xf5qehnx.js";
6
+ import"./cli-kc8akm2b.js";
7
+ import"./cli-etxprvkj.js";
8
8
  import"./cli-8rxa073f.js";
9
9
 
10
10
  // src/cli/projects.ts
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  TargetedPentestAgent
3
- } from "./cli-5m0347h3.js";
4
- import"./cli-x3k26g1t.js";
3
+ } from "./cli-114rvgvj.js";
4
+ import"./cli-230tpm4a.js";
5
5
  import"./cli-tp1tqn3k.js";
6
- import"./cli-nqx9y9ds.js";
6
+ import"./cli-629hvmba.js";
7
7
  import"./cli-3y0dgy56.js";
8
- import"./cli-rc7hyq7e.js";
8
+ import"./cli-rzrxttza.js";
9
9
  import"./cli-0ghkg3w6.js";
10
- import"./cli-xtqm11qt.js";
11
- import"./cli-q2dty8g4.js";
10
+ import"./cli-91tyknkx.js";
11
+ import"./cli-xf5qehnx.js";
12
12
  import"./cli-gpnb45ck.js";
13
- import"./cli-40ef01tb.js";
14
- import"./cli-r879p2yz.js";
13
+ import"./cli-kc8akm2b.js";
14
+ import"./cli-etxprvkj.js";
15
15
  import"./cli-03z6pswp.js";
16
16
  import"./cli-8rxa073f.js";
17
17
 
@@ -2,26 +2,26 @@ import {
2
2
  buildThreatModelPrompt,
3
3
  createSkillsRegistry,
4
4
  runOffensiveSecurityAgent
5
- } from "./cli-836bfgxg.js";
5
+ } from "./cli-nhb9w2dk.js";
6
6
  import {
7
7
  ALL_TOOL_NAMES,
8
8
  ASK_USER_QUESTIONS_TOOL_NAME,
9
9
  SKILL_TOOL_NAMES,
10
10
  buildBaseSystemPrompt,
11
11
  sessions
12
- } from "./cli-x3k26g1t.js";
12
+ } from "./cli-230tpm4a.js";
13
13
  import"./cli-tp1tqn3k.js";
14
- import"./cli-nqx9y9ds.js";
14
+ import"./cli-629hvmba.js";
15
15
  import"./cli-3y0dgy56.js";
16
16
  import {
17
17
  stepCountIs
18
- } from "./cli-rc7hyq7e.js";
18
+ } from "./cli-rzrxttza.js";
19
19
  import"./cli-0ghkg3w6.js";
20
- import"./cli-xtqm11qt.js";
21
- import"./cli-q2dty8g4.js";
20
+ import"./cli-91tyknkx.js";
21
+ import"./cli-xf5qehnx.js";
22
22
  import"./cli-gpnb45ck.js";
23
- import"./cli-40ef01tb.js";
24
- import"./cli-r879p2yz.js";
23
+ import"./cli-kc8akm2b.js";
24
+ import"./cli-etxprvkj.js";
25
25
  import"./cli-03z6pswp.js";
26
26
  import"./cli-8rxa073f.js";
27
27
 
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env bun
2
2
  import {
3
3
  detectInstallMethod
4
- } from "./cli-r879p2yz.js";
4
+ } from "./cli-etxprvkj.js";
5
5
  import {
6
6
  __require
7
7
  } from "./cli-8rxa073f.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pensar/apex",
3
- "version": "1.7.0",
3
+ "version": "1.8.0-canary.2f3da4a2",
4
4
  "description": "AI-powered penetration testing CLI tool with terminal UI",
5
5
  "module": "src/tui/index.tsx",
6
6
  "main": "build/cli.js",
@@ -1,19 +0,0 @@
1
- import {
2
- CodeAgent
3
- } from "./cli-zr7sg2m2.js";
4
- import"./cli-x3k26g1t.js";
5
- import"./cli-tp1tqn3k.js";
6
- import"./cli-nqx9y9ds.js";
7
- import"./cli-3y0dgy56.js";
8
- import"./cli-rc7hyq7e.js";
9
- import"./cli-0ghkg3w6.js";
10
- import"./cli-xtqm11qt.js";
11
- import"./cli-q2dty8g4.js";
12
- import"./cli-gpnb45ck.js";
13
- import"./cli-40ef01tb.js";
14
- import"./cli-r879p2yz.js";
15
- import"./cli-03z6pswp.js";
16
- import"./cli-8rxa073f.js";
17
- export {
18
- CodeAgent
19
- };