pentesting 0.7.12 → 0.7.13

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 (2) hide show
  1. package/dist/index.js +28 -28
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -6512,6 +6512,7 @@ var App = ({ autoApprove = false, target }) => {
6512
6512
  const [checkpointCount, setCheckpointCount] = useState(0);
6513
6513
  const [preInputBuffer, setPreInputBuffer] = useState("");
6514
6514
  const [wasInterrupted, setWasInterrupted] = useState(false);
6515
+ const [spinnerHue, setSpinnerHue] = useState(0);
6515
6516
  const [, forceUpdate] = useState(0);
6516
6517
  const [agent] = useState(() => new AutonomousHackingAgent(void 0, { autoApprove }));
6517
6518
  const sessionManager2 = getSessionManager();
@@ -6564,6 +6565,7 @@ var App = ({ autoApprove = false, target }) => {
6564
6565
  startTimeRef.current = Date.now();
6565
6566
  timerRef.current = setInterval(() => {
6566
6567
  setElapsedTime(Math.floor((Date.now() - startTimeRef.current) / 100) / 10);
6568
+ setSpinnerHue((h) => (h + 5) % 360);
6567
6569
  }, 100);
6568
6570
  }, []);
6569
6571
  const stopTimer = useCallback(() => {
@@ -6630,19 +6632,17 @@ var App = ({ autoApprove = false, target }) => {
6630
6632
  };
6631
6633
  }, []);
6632
6634
  useEffect(() => {
6633
- addMessage(MESSAGE_TYPE.SYSTEM, `
6634
- \u{1F680} /target <ip> \u2192 /start [goal] | /help for commands
6635
- \u26A0\uFE0F For authorized penetration testing only. Unauthorized use is illegal.`);
6635
+ addMessage(MESSAGE_TYPE.SYSTEM, `/target <ip> \u2192 /start [goal] | /help for commands`);
6636
6636
  if (autoApprove) {
6637
- addMessage(MESSAGE_TYPE.SYSTEM, "\u26A0\uFE0F YOLO Mode: Auto-approving all tool executions");
6637
+ addMessage(MESSAGE_TYPE.SYSTEM, "YOLO Mode: Auto-approving all tool executions");
6638
6638
  }
6639
6639
  if (target) {
6640
6640
  agent.setTarget(target);
6641
- addMessage(MESSAGE_TYPE.SYSTEM, `\u{1F3AF} Target: ${target}`);
6641
+ addMessage(MESSAGE_TYPE.SYSTEM, `Target: ${target}`);
6642
6642
  }
6643
6643
  onTargetChange((newTarget) => {
6644
6644
  agent.setTarget(newTarget);
6645
- addMessage(MESSAGE_TYPE.SYSTEM, `\u{1F3AF} Target \u2192 ${newTarget}`);
6645
+ addMessage(MESSAGE_TYPE.SYSTEM, `Target \u2192 ${newTarget}`);
6646
6646
  forceUpdate((n) => n + 1);
6647
6647
  });
6648
6648
  agent.on(AGENT_EVENT.TARGET_SET, () => {
@@ -6650,6 +6650,9 @@ var App = ({ autoApprove = false, target }) => {
6650
6650
  });
6651
6651
  agent.on(AGENT_EVENT.THOUGHT, (thought) => {
6652
6652
  setCurrentStatus(thought.content.slice(0, 60));
6653
+ if (thought.type === "thinking" || thought.type === "reasoning") {
6654
+ addMessage(MESSAGE_TYPE.SYSTEM, `[${thought.type}] ${thought.content.slice(0, 200)}`);
6655
+ }
6653
6656
  wireLoggerRef.current?.contentPart(thought.content, thought.type === "thinking");
6654
6657
  });
6655
6658
  agent.on(AGENT_EVENT.TOOL_CALL, (data) => {
@@ -6670,12 +6673,12 @@ var App = ({ autoApprove = false, target }) => {
6670
6673
  wireLoggerRef.current?.stepBegin(data.current);
6671
6674
  });
6672
6675
  agent.on(AGENT_EVENT.FINDING, (finding) => {
6673
- addMessage(MESSAGE_TYPE.SYSTEM, `\u{1F3AF} [${finding.severity.toUpperCase()}] ${finding.title}`);
6676
+ addMessage(MESSAGE_TYPE.SYSTEM, `[${finding.severity.toUpperCase()}] ${finding.title}`);
6674
6677
  wireLoggerRef.current?.statusUpdate({ event: "finding", ...finding });
6675
6678
  forceUpdate((n) => n + 1);
6676
6679
  });
6677
6680
  agent.on(AGENT_EVENT.PHASE_CHANGE, (data) => {
6678
- addMessage(MESSAGE_TYPE.SYSTEM, `\u{1F4CD} Phase: ${data.phaseId}`);
6681
+ addMessage(MESSAGE_TYPE.SYSTEM, `Phase: ${data.phaseId}`);
6679
6682
  wireLoggerRef.current?.statusUpdate({ event: "phase_change", phase: data.phaseId });
6680
6683
  forceUpdate((n) => n + 1);
6681
6684
  });
@@ -6697,7 +6700,7 @@ var App = ({ autoApprove = false, target }) => {
6697
6700
  toolInput: data.toolInput,
6698
6701
  riskLevel: data.riskLevel
6699
6702
  });
6700
- addMessage(MESSAGE_TYPE.SYSTEM, `\u26A0\uFE0F APPROVAL NEEDED: ${data.toolName} (${data.riskLevel} risk)`);
6703
+ addMessage(MESSAGE_TYPE.SYSTEM, `APPROVAL NEEDED: ${data.toolName} (${data.riskLevel} risk)`);
6701
6704
  const inputPreview = Object.entries(data.toolInput).slice(0, 2).map(([k, v]) => `${k}=${typeof v === "string" ? v.slice(0, 40) : JSON.stringify(v).slice(0, 40)}`).join(", ");
6702
6705
  if (inputPreview) {
6703
6706
  addMessage(MESSAGE_TYPE.SYSTEM, ` Args: ${inputPreview}`);
@@ -6722,7 +6725,7 @@ var App = ({ autoApprove = false, target }) => {
6722
6725
  toolInput: req.toolInput,
6723
6726
  riskLevel: req.riskLevel
6724
6727
  });
6725
- addMessage(MESSAGE_TYPE.SYSTEM, `\u26A0\uFE0F APPROVAL NEEDED: ${req.toolName} (${req.riskLevel} risk)`);
6728
+ addMessage(MESSAGE_TYPE.SYSTEM, `APPROVAL NEEDED: ${req.toolName} (${req.riskLevel} risk)`);
6726
6729
  addMessage(MESSAGE_TYPE.SYSTEM, ` ${req.reason}`);
6727
6730
  addMessage(MESSAGE_TYPE.SYSTEM, " /y = approve, /n = deny, /ya = always approve");
6728
6731
  });
@@ -6814,7 +6817,7 @@ pentesting v${APP_VERSION}`
6814
6817
  const allTargets = agent.getAllTargets();
6815
6818
  if (allTargets.length === 0) {
6816
6819
  addMessage(MESSAGE_TYPE.SYSTEM, `
6817
- \u{1F3AF} No targets set
6820
+ No targets set
6818
6821
 
6819
6822
  Usage:
6820
6823
  /target <domain|ip> Set primary target
@@ -6827,7 +6830,7 @@ Usage:
6827
6830
  const targetList = allTargets.map(
6828
6831
  (t) => t === primary ? ` \u2605 ${t} (primary)` : ` ${t}`
6829
6832
  ).join("\n");
6830
- addMessage(MESSAGE_TYPE.SYSTEM, `\u{1F3AF} Targets:
6833
+ addMessage(MESSAGE_TYPE.SYSTEM, `Targets:
6831
6834
  ${targetList}`);
6832
6835
  }
6833
6836
  return;
@@ -6852,7 +6855,7 @@ ${targetList}`);
6852
6855
  const list = targets.map(
6853
6856
  (t, i) => t === primary ? ` ${i + 1}. \u2605 ${t}` : ` ${i + 1}. ${t}`
6854
6857
  ).join("\n");
6855
- addMessage(MESSAGE_TYPE.SYSTEM, `\u{1F3AF} Targets (${targets.length}):
6858
+ addMessage(MESSAGE_TYPE.SYSTEM, `Targets (${targets.length}):
6856
6859
  ${list}`);
6857
6860
  }
6858
6861
  break;
@@ -6884,7 +6887,7 @@ ${list}`);
6884
6887
  break;
6885
6888
  default:
6886
6889
  agent.setTarget(subCmd);
6887
- addMessage(MESSAGE_TYPE.SYSTEM, `\u{1F3AF} Target \u2192 ${subCmd}`);
6890
+ addMessage(MESSAGE_TYPE.SYSTEM, `Target \u2192 ${subCmd}`);
6888
6891
  }
6889
6892
  return;
6890
6893
  case CLI_COMMAND.START:
@@ -6898,7 +6901,7 @@ ${list}`);
6898
6901
  setIsProcessing(true);
6899
6902
  startTimer();
6900
6903
  const allObjective = args.slice(1).join(" ") || "Perform comprehensive penetration testing";
6901
- addMessage(MESSAGE_TYPE.SYSTEM, `\u{1F680} Starting multi-target attack on ${allTargets.length} targets`);
6904
+ addMessage(MESSAGE_TYPE.SYSTEM, `Starting multi-target attack on ${allTargets.length} targets`);
6902
6905
  for (let i = 0; i < allTargets.length; i++) {
6903
6906
  const currentTarget = allTargets[i];
6904
6907
  if (agent.shouldStop()) {
@@ -6911,7 +6914,7 @@ ${list}`);
6911
6914
  forceUpdate((n) => n + 1);
6912
6915
  try {
6913
6916
  const session = await sessionManager2.createSession(allObjective, currentTarget);
6914
- addMessage(MESSAGE_TYPE.SYSTEM, `\u{1F4C1} Session: ${session.id}`);
6917
+ addMessage(MESSAGE_TYPE.SYSTEM, `Session: ${session.id}`);
6915
6918
  agent.resume();
6916
6919
  await agent.runAutonomous(allObjective);
6917
6920
  } catch (e) {
@@ -6939,10 +6942,10 @@ ${list}`);
6939
6942
  startTimer();
6940
6943
  const objective = startObjective || "Perform comprehensive penetration testing";
6941
6944
  setCurrentStatus("Initializing...");
6942
- addMessage(MESSAGE_TYPE.SYSTEM, `\u{1F680} Starting: ${objective}`);
6945
+ addMessage(MESSAGE_TYPE.SYSTEM, `Starting: ${objective}`);
6943
6946
  try {
6944
6947
  const session = await sessionManager2.createSession(objective, agent.getState().target.primary);
6945
- addMessage(MESSAGE_TYPE.SYSTEM, `\u{1F4C1} Session: ${session.id}`);
6948
+ addMessage(MESSAGE_TYPE.SYSTEM, `Session: ${session.id}`);
6946
6949
  await agent.runAutonomous(objective);
6947
6950
  } catch (e) {
6948
6951
  addMessage(MESSAGE_TYPE.ERROR, e instanceof Error ? e.message : String(e));
@@ -7000,7 +7003,7 @@ ${list}`);
7000
7003
  case "yolo":
7001
7004
  const newYoloState = !approvalManager2.getAutoApprovedTools().length;
7002
7005
  approvalManager2.setYoloMode(newYoloState);
7003
- addMessage(MESSAGE_TYPE.SYSTEM, newYoloState ? "\u26A0\uFE0F YOLO mode ON - Auto-approving all tools" : "\u{1F512} YOLO mode OFF - Manual approval required");
7006
+ addMessage(MESSAGE_TYPE.SYSTEM, newYoloState ? "YOLO mode ON - Auto-approving all tools" : "\u{1F512} YOLO mode OFF - Manual approval required");
7004
7007
  return;
7005
7008
  case CLI_COMMAND.CLEAR:
7006
7009
  case "c":
@@ -7054,7 +7057,7 @@ ${list}`);
7054
7057
  const cp = await contextManagerRef.current.checkpoint(description);
7055
7058
  setCheckpointCount((prev) => prev + 1);
7056
7059
  wireLoggerRef.current?.statusUpdate({ action: "checkpoint", id: cp.id });
7057
- addMessage(MESSAGE_TYPE.SYSTEM, `\u{1F4CD} Checkpoint #${cp.id} created${description ? `: ${description}` : ""}`);
7060
+ addMessage(MESSAGE_TYPE.SYSTEM, `Checkpoint #${cp.id} created${description ? `: ${description}` : ""}`);
7058
7061
  } else {
7059
7062
  addMessage(MESSAGE_TYPE.ERROR, "Context manager not initialized");
7060
7063
  }
@@ -7130,7 +7133,7 @@ ${list}`);
7130
7133
  if (cps.length === 0) {
7131
7134
  addMessage(MESSAGE_TYPE.SYSTEM, "No checkpoints");
7132
7135
  } else {
7133
- addMessage(MESSAGE_TYPE.SYSTEM, `\u{1F4CD} ${cps.length} Checkpoints:`);
7136
+ addMessage(MESSAGE_TYPE.SYSTEM, `${cps.length} Checkpoints:`);
7134
7137
  cps.forEach((cp) => {
7135
7138
  const time = new Date(cp.timestamp).toLocaleTimeString();
7136
7139
  addMessage(MESSAGE_TYPE.SYSTEM, ` #${cp.id} @ ${time} (${cp.messageCount} msgs)${cp.description ? ` - ${cp.description}` : ""}`);
@@ -7338,7 +7341,7 @@ ${list}`);
7338
7341
  } }) }),
7339
7342
  pendingApproval && /* @__PURE__ */ jsxs2(Box2, { flexDirection: "column", borderStyle: "round", borderColor: "yellow", paddingX: 1, marginBottom: 1, children: [
7340
7343
  /* @__PURE__ */ jsxs2(Text2, { color: "yellow", bold: true, children: [
7341
- "\u26A0\uFE0F APPROVAL NEEDED: ",
7344
+ "APPROVAL NEEDED: ",
7342
7345
  pendingApproval.toolName,
7343
7346
  " (",
7344
7347
  pendingApproval.riskLevel,
@@ -7353,7 +7356,7 @@ ${list}`);
7353
7356
  ] }),
7354
7357
  isProcessing ? /* @__PURE__ */ jsxs2(Box2, { flexDirection: "column", children: [
7355
7358
  /* @__PURE__ */ jsxs2(Box2, { children: [
7356
- /* @__PURE__ */ jsx2(Text2, { color: THEME.status.running, children: /* @__PURE__ */ jsx2(Spinner, { type: "dots" }) }),
7359
+ /* @__PURE__ */ jsx2(Text2, { color: `hsl(${spinnerHue}, 70%, 60%)`, children: /* @__PURE__ */ jsx2(Spinner, { type: "dots" }) }),
7357
7360
  /* @__PURE__ */ jsxs2(Text2, { color: THEME.text.muted, children: [
7358
7361
  " ",
7359
7362
  currentStatus,
@@ -7365,10 +7368,7 @@ ${list}`);
7365
7368
  ] })
7366
7369
  ] }),
7367
7370
  preInputBuffer && /* @__PURE__ */ jsxs2(Box2, { marginTop: 1, children: [
7368
- /* @__PURE__ */ jsxs2(Text2, { color: THEME.text.accent, children: [
7369
- "\u2728 ",
7370
- preInputBuffer
7371
- ] }),
7371
+ /* @__PURE__ */ jsx2(Text2, { color: THEME.text.accent, children: preInputBuffer }),
7372
7372
  /* @__PURE__ */ jsx2(Text2, { color: THEME.text.muted, children: "\u258C" })
7373
7373
  ] }),
7374
7374
  /* @__PURE__ */ jsx2(Box2, { marginTop: 1, children: /* @__PURE__ */ jsx2(Text2, { dimColor: true, children: "ESC to interrupt \u2502 Type ahead to queue input" }) })
@@ -7385,7 +7385,7 @@ ${list}`);
7385
7385
  pendingApproval ? "/y /n /ya" : ""
7386
7386
  ].filter((cmd) => cmd && cmd.toLowerCase().includes(input.toLowerCase().slice(1))).slice(0, 5).join(" \u2502 ") }) }),
7387
7387
  /* @__PURE__ */ jsxs2(Box2, { children: [
7388
- /* @__PURE__ */ jsx2(Text2, { color: mode === "agent" ? THEME.status.success : "yellow", children: mode === "agent" ? "\u2728 " : "$ " }),
7388
+ /* @__PURE__ */ jsx2(Text2, { color: mode === "agent" ? THEME.status.success : "yellow", children: mode === "agent" ? "" : "$ " }),
7389
7389
  /* @__PURE__ */ jsx2(
7390
7390
  TextInput,
7391
7391
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pentesting",
3
- "version": "0.7.12",
3
+ "version": "0.7.13",
4
4
  "description": "Autonomous Penetration Testing AI Agent",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",